)]}'
{"magnum/conf/capi_driver.py":[{"author":{"_account_id":22629,"name":"Michal Nasiadka","email":"mnasiadka@gmail.com","username":"mnasiadka"},"change_message_id":"3493d3b147b2c4141094c43b3510bf144fdd9a71","unresolved":true,"context_lines":[{"line_number":40,"context_line":"            \"want to share a single CAPI management cluster.\""},{"line_number":41,"context_line":"        ),"},{"line_number":42,"context_line":"    ),"},{"line_number":43,"context_line":"    # TODO(johngarbutt): move this helm chart into magnum ownerhship"},{"line_number":44,"context_line":"    cfg.StrOpt("},{"line_number":45,"context_line":"        \"helm_chart_repo\","},{"line_number":46,"context_line":"        default\u003d\"https://stackhpc.github.io/capi-helm-charts\","}],"source_content_type":"text/x-python","patch_set":15,"id":"21a1210a_f7f52951","line":43,"range":{"start_line":43,"start_character":4,"end_line":43,"end_character":68},"updated":"2023-06-28 20:07:20.000000000","message":"are there patches raised for creating that repository under Magnum ownership?","commit_id":"6d930c8e6ebc9095afc5b88c783357f106e688dc"},{"author":{"_account_id":14394,"name":"Dale Smith","email":"dale@catalystcloud.nz","username":"dalees"},"change_message_id":"f49af75cd18f6a7dfce19b3b0524a28111910b5b","unresolved":true,"context_lines":[{"line_number":40,"context_line":"            \"want to share a single CAPI management cluster.\""},{"line_number":41,"context_line":"        ),"},{"line_number":42,"context_line":"    ),"},{"line_number":43,"context_line":"    # TODO(johngarbutt): move this helm chart into magnum ownerhship"},{"line_number":44,"context_line":"    cfg.StrOpt("},{"line_number":45,"context_line":"        \"helm_chart_repo\","},{"line_number":46,"context_line":"        default\u003d\"https://stackhpc.github.io/capi-helm-charts\","}],"source_content_type":"text/x-python","patch_set":15,"id":"343ecfc7_8753117d","line":43,"range":{"start_line":43,"start_character":4,"end_line":43,"end_character":68},"in_reply_to":"21a1210a_f7f52951","updated":"2023-06-28 21:33:52.000000000","message":"On this topic, Helm can support a repository URI that is hosted on an OCI registry [1].\n\nSo once we have a location for the codebase (perhaps opendev project), we can build Helm chart releases and write them to a public OCI registry alongside other container images Magnum requires.\n\nThis may be preferable, as it would avoid having a dependency on github or other webserver (and thus affect reliability). It also makes it easy to mirror locally, as most doing so will already have an OCI registry available.\n\n[1] https://helm.sh/docs/topics/registries/","commit_id":"6d930c8e6ebc9095afc5b88c783357f106e688dc"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"de4251ef3400d1c586b84dbc2b374f6bf2401d5f","unresolved":true,"context_lines":[{"line_number":40,"context_line":"            \"want to share a single CAPI management cluster.\""},{"line_number":41,"context_line":"        ),"},{"line_number":42,"context_line":"    ),"},{"line_number":43,"context_line":"    # TODO(johngarbutt): move this helm chart into magnum ownerhship"},{"line_number":44,"context_line":"    cfg.StrOpt("},{"line_number":45,"context_line":"        \"helm_chart_repo\","},{"line_number":46,"context_line":"        default\u003d\"https://stackhpc.github.io/capi-helm-charts\","}],"source_content_type":"text/x-python","patch_set":15,"id":"1d57c4a2_0ebb2f8b","line":43,"range":{"start_line":43,"start_character":4,"end_line":43,"end_character":68},"in_reply_to":"343ecfc7_8753117d","updated":"2023-09-13 09:17:50.000000000","message":"Michal, I believe we discussed this at the PTG, I forget what the spec ended up saying, but my hope is the helm chart is maintained jointly by the wider OpenStack community, be that inside Magnum or within a separate project. The helm has proven very useful outside of Magnum already. If Magnum will take it, that is my personal preference.\n\nDale, I like this idea, +1.\n\nTravis was mentioning a related thing around supporting OCI repo helm.","commit_id":"6d930c8e6ebc9095afc5b88c783357f106e688dc"}],"magnum/drivers/cluster_api/driver.py":[{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"26b3940f90414c71b0c756ad2b05d1737c71388c","unresolved":true,"context_lines":[{"line_number":82,"context_line":"        )"},{"line_number":83,"context_line":"        return image.id, self._get_kube_version(image)"},{"line_number":84,"context_line":""},{"line_number":85,"context_line":"    def _update_helm_release(self, context, cluster):"},{"line_number":86,"context_line":"        cluster_template \u003d cluster.cluster_template"},{"line_number":87,"context_line":"        image_id, kube_version \u003d self._get_image_details("},{"line_number":88,"context_line":"            context, cluster_template.image_id"}],"source_content_type":"text/x-python","patch_set":2,"id":"2862d861_29402d8a","line":85,"updated":"2023-04-25 11:44:13.000000000","message":"This feels like it needs to live in a separate module, its a different level of abstraction to the other things here.","commit_id":"75ff1031906e0ad381d18ffa2d1def6f9a0173e8"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"8f5bf7fd3dfafaa70bf864d0e58b502edb938355","unresolved":true,"context_lines":[{"line_number":82,"context_line":"        )"},{"line_number":83,"context_line":"        return image.id, self._get_kube_version(image)"},{"line_number":84,"context_line":""},{"line_number":85,"context_line":"    def _update_helm_release(self, context, cluster):"},{"line_number":86,"context_line":"        cluster_template \u003d cluster.cluster_template"},{"line_number":87,"context_line":"        image_id, kube_version \u003d self._get_image_details("},{"line_number":88,"context_line":"            context, cluster_template.image_id"}],"source_content_type":"text/x-python","patch_set":2,"id":"52f7bad4_85fe5af7","line":85,"in_reply_to":"2862d861_29402d8a","updated":"2023-05-19 10:12:31.000000000","message":"I think this is so core to the driver, we just move the other bits.","commit_id":"75ff1031906e0ad381d18ffa2d1def6f9a0173e8"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"0bba5258d2fb35022c12e833db086ba1b636ac50","unresolved":false,"context_lines":[{"line_number":82,"context_line":"        )"},{"line_number":83,"context_line":"        return image.id, self._get_kube_version(image)"},{"line_number":84,"context_line":""},{"line_number":85,"context_line":"    def _update_helm_release(self, context, cluster):"},{"line_number":86,"context_line":"        cluster_template \u003d cluster.cluster_template"},{"line_number":87,"context_line":"        image_id, kube_version \u003d self._get_image_details("},{"line_number":88,"context_line":"            context, cluster_template.image_id"}],"source_content_type":"text/x-python","patch_set":2,"id":"e32fa223_84a5407a","line":85,"in_reply_to":"52f7bad4_85fe5af7","updated":"2023-05-19 10:23:02.000000000","message":"Ack","commit_id":"75ff1031906e0ad381d18ffa2d1def6f9a0173e8"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"03c2a2a0a038ccc47815de3fc97b38e73d055592","unresolved":true,"context_lines":[{"line_number":97,"context_line":"    def _get_monitoring_enabled(self, cluster):"},{"line_number":98,"context_line":"        mon_label \u003d self._label(cluster, \"monitoring_enabled\", \"\")"},{"line_number":99,"context_line":"        if mon_label \u003d\u003d \"false\":"},{"line_number":100,"context_line":"            return False"},{"line_number":101,"context_line":"        else:"},{"line_number":102,"context_line":"            # NOTE(johngarbutt) different default to heat driver"},{"line_number":103,"context_line":"            return True"}],"source_content_type":"text/x-python","patch_set":13,"id":"59aff333_fed64ffd","line":100,"updated":"2023-05-23 10:22:28.000000000","message":"We can probably now just return a Boolean expression here?","commit_id":"7c1db5ab47695a5631c79c72ff544b0064ed6b38"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"628c6a9b10e0e7c1d52074678816c860bd06149b","unresolved":false,"context_lines":[{"line_number":97,"context_line":"    def _get_monitoring_enabled(self, cluster):"},{"line_number":98,"context_line":"        mon_label \u003d self._label(cluster, \"monitoring_enabled\", \"\")"},{"line_number":99,"context_line":"        if mon_label \u003d\u003d \"false\":"},{"line_number":100,"context_line":"            return False"},{"line_number":101,"context_line":"        else:"},{"line_number":102,"context_line":"            # NOTE(johngarbutt) different default to heat driver"},{"line_number":103,"context_line":"            return True"}],"source_content_type":"text/x-python","patch_set":13,"id":"3925b880_0d65acaf","line":100,"in_reply_to":"59aff333_fed64ffd","updated":"2023-05-23 10:38:34.000000000","message":"Done","commit_id":"7c1db5ab47695a5631c79c72ff544b0064ed6b38"},{"author":{"_account_id":14394,"name":"Dale Smith","email":"dale@catalystcloud.nz","username":"dalees"},"change_message_id":"dbce48882a62993692deef5726d6dbf0d02075e6","unresolved":true,"context_lines":[{"line_number":61,"context_line":"        # NOTE(johngarbutt): filtering untrusted user input"},{"line_number":62,"context_line":"        return re.sub(r\"[^a-z0-9\\.\\-\\/]+\", \"\", raw)"},{"line_number":63,"context_line":""},{"line_number":64,"context_line":"    def _get_chart_version(self, cluster):"},{"line_number":65,"context_line":"        version \u003d cluster.cluster_template.labels.get("},{"line_number":66,"context_line":"            \"capi_helm_chart_version\", CONF.capi_driver.helm_chart_version"},{"line_number":67,"context_line":"        )"}],"source_content_type":"text/x-python","patch_set":15,"id":"9d78edaf_0fbca8b7","line":64,"updated":"2023-06-14 01:16:31.000000000","message":"I think we need a bit of discussion around the longer term lifecycle of this helm chart version. Having this set in Magnum Templates (or just an override capability) should resolve most issues with it being globally set in the Magnum configuration file.\n\nIssues:\n\n1. If our Helm chart changes over time, we want existing clusters to upgrade to the new version at a pace under their control. In the current implementation any changes (including scaling workers) may result in the new Chart being applied to a running cluster.\n\n2. There may be times (few, as most will be abstracted by kubeadm) where a K8s version upgrade requires a different helm chart. K8s maintains at least 3 versions at any time, so we need a way to change Helm (significantly or not) for new k8s, and not affect older clusters, until they upgrade to a new template. Migrating clusters to Flatcar from Ubuntu might be an example of this.\n\nNote: Moving **both** the chart version and chart repo into the Template may be a security risk as normal users would be able to apply any Helm chart to the Management cluster. This is probably a bad idea.","commit_id":"6d930c8e6ebc9095afc5b88c783357f106e688dc"},{"author":{"_account_id":14394,"name":"Dale Smith","email":"dale@catalystcloud.nz","username":"dalees"},"change_message_id":"8c0a8a92141ffbd349bf2a173acfa845ee567b72","unresolved":false,"context_lines":[{"line_number":61,"context_line":"        # NOTE(johngarbutt): filtering untrusted user input"},{"line_number":62,"context_line":"        return re.sub(r\"[^a-z0-9\\.\\-\\/]+\", \"\", raw)"},{"line_number":63,"context_line":""},{"line_number":64,"context_line":"    def _get_chart_version(self, cluster):"},{"line_number":65,"context_line":"        version \u003d cluster.cluster_template.labels.get("},{"line_number":66,"context_line":"            \"capi_helm_chart_version\", CONF.capi_driver.helm_chart_version"},{"line_number":67,"context_line":"        )"}],"source_content_type":"text/x-python","patch_set":15,"id":"9ebf29ff_cec95ac4","line":64,"in_reply_to":"9d78edaf_0fbca8b7","updated":"2023-06-14 01:19:21.000000000","message":"Oh! I might be remembering an older codebase where this was set in magnum.conf.\n\nThis appears to be a template arg, as below. I will close this comment and review further...","commit_id":"6d930c8e6ebc9095afc5b88c783357f106e688dc"}],"magnum/tests/unit/drivers/cluster_api/test_driver.py":[{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"f04e0a451b1d08036deb30253af127d14a3a282f","unresolved":true,"context_lines":[{"line_number":155,"context_line":"                \"nodeGroups\": ["},{"line_number":156,"context_line":"                    {"},{"line_number":157,"context_line":"                        \"name\": \"test-worker\","},{"line_number":158,"context_line":"                        # TODO(johngarbutt): why not medium?"},{"line_number":159,"context_line":"                        \"machineFlavor\": None,"},{"line_number":160,"context_line":"                        \"machineCount\": 3,"},{"line_number":161,"context_line":"                    }"},{"line_number":162,"context_line":"                ],"}],"source_content_type":"text/x-python","patch_set":3,"id":"a1b6a075_9d3a9226","line":159,"range":{"start_line":158,"start_character":0,"end_line":159,"end_character":46},"updated":"2023-04-25 17:07:56.000000000","message":"This bit needs fixing, not sure why this is None. It might be because of the test objects are not setup correctly? Or do we need to get the flavor from the cluster template explicitly? I am not sure.","commit_id":"28905395fca71c8018e99b27e2d8ca65c92c2afb"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"d5db2ce15900f649af142be64eaf1d1fbc1692f2","unresolved":true,"context_lines":[{"line_number":155,"context_line":"                \"nodeGroups\": ["},{"line_number":156,"context_line":"                    {"},{"line_number":157,"context_line":"                        \"name\": \"test-worker\","},{"line_number":158,"context_line":"                        # TODO(johngarbutt): why not medium?"},{"line_number":159,"context_line":"                        \"machineFlavor\": None,"},{"line_number":160,"context_line":"                        \"machineCount\": 3,"},{"line_number":161,"context_line":"                    }"},{"line_number":162,"context_line":"                ],"}],"source_content_type":"text/x-python","patch_set":3,"id":"bd7c871e_b92910c4","line":159,"range":{"start_line":158,"start_character":0,"end_line":159,"end_character":46},"in_reply_to":"a1b6a075_9d3a9226","updated":"2023-04-25 17:12:28.000000000","message":"looks like its just a test setup problem, conductor utils fill these in correctly.","commit_id":"28905395fca71c8018e99b27e2d8ca65c92c2afb"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"0bba5258d2fb35022c12e833db086ba1b636ac50","unresolved":false,"context_lines":[{"line_number":155,"context_line":"                \"nodeGroups\": ["},{"line_number":156,"context_line":"                    {"},{"line_number":157,"context_line":"                        \"name\": \"test-worker\","},{"line_number":158,"context_line":"                        # TODO(johngarbutt): why not medium?"},{"line_number":159,"context_line":"                        \"machineFlavor\": None,"},{"line_number":160,"context_line":"                        \"machineCount\": 3,"},{"line_number":161,"context_line":"                    }"},{"line_number":162,"context_line":"                ],"}],"source_content_type":"text/x-python","patch_set":3,"id":"2ab6131f_377573d3","line":159,"range":{"start_line":158,"start_character":0,"end_line":159,"end_character":46},"in_reply_to":"bd7c871e_b92910c4","updated":"2023-05-19 10:23:02.000000000","message":"Done","commit_id":"28905395fca71c8018e99b27e2d8ca65c92c2afb"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"03c2a2a0a038ccc47815de3fc97b38e73d055592","unresolved":true,"context_lines":[{"line_number":169,"context_line":""},{"line_number":170,"context_line":"        result \u003d self.driver._get_monitoring_enabled(self.cluster_obj)"},{"line_number":171,"context_line":""},{"line_number":172,"context_line":"        self.assertEqual(False, result)"},{"line_number":173,"context_line":""},{"line_number":174,"context_line":"    def test_get_kube_dash_enabled_from_template(self):"},{"line_number":175,"context_line":"        self.cluster_obj.cluster_template.labels["}],"source_content_type":"text/x-python","patch_set":13,"id":"55c7f471_43362b08","line":172,"updated":"2023-05-23 10:22:28.000000000","message":"This should be assertFalse","commit_id":"7c1db5ab47695a5631c79c72ff544b0064ed6b38"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"628c6a9b10e0e7c1d52074678816c860bd06149b","unresolved":false,"context_lines":[{"line_number":169,"context_line":""},{"line_number":170,"context_line":"        result \u003d self.driver._get_monitoring_enabled(self.cluster_obj)"},{"line_number":171,"context_line":""},{"line_number":172,"context_line":"        self.assertEqual(False, result)"},{"line_number":173,"context_line":""},{"line_number":174,"context_line":"    def test_get_kube_dash_enabled_from_template(self):"},{"line_number":175,"context_line":"        self.cluster_obj.cluster_template.labels["}],"source_content_type":"text/x-python","patch_set":13,"id":"8d2cb8e6_0ae0b936","line":172,"in_reply_to":"55c7f471_43362b08","updated":"2023-05-23 10:38:34.000000000","message":"Done","commit_id":"7c1db5ab47695a5631c79c72ff544b0064ed6b38"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"03c2a2a0a038ccc47815de3fc97b38e73d055592","unresolved":true,"context_lines":[{"line_number":178,"context_line":""},{"line_number":179,"context_line":"        result \u003d self.driver._get_kube_dash_enabled(self.cluster_obj)"},{"line_number":180,"context_line":""},{"line_number":181,"context_line":"        self.assertEqual(False, result)"},{"line_number":182,"context_line":""},{"line_number":183,"context_line":"    def test_get_chart_version_from_config(self):"},{"line_number":184,"context_line":"        version \u003d self.driver._get_chart_version(self.cluster_obj)"}],"source_content_type":"text/x-python","patch_set":13,"id":"06c15a67_82df5aa9","line":181,"updated":"2023-05-23 10:22:28.000000000","message":"as above","commit_id":"7c1db5ab47695a5631c79c72ff544b0064ed6b38"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"628c6a9b10e0e7c1d52074678816c860bd06149b","unresolved":false,"context_lines":[{"line_number":178,"context_line":""},{"line_number":179,"context_line":"        result \u003d self.driver._get_kube_dash_enabled(self.cluster_obj)"},{"line_number":180,"context_line":""},{"line_number":181,"context_line":"        self.assertEqual(False, result)"},{"line_number":182,"context_line":""},{"line_number":183,"context_line":"    def test_get_chart_version_from_config(self):"},{"line_number":184,"context_line":"        version \u003d self.driver._get_chart_version(self.cluster_obj)"}],"source_content_type":"text/x-python","patch_set":13,"id":"e141866d_147ff300","line":181,"in_reply_to":"06c15a67_82df5aa9","updated":"2023-05-23 10:38:34.000000000","message":"Done","commit_id":"7c1db5ab47695a5631c79c72ff544b0064ed6b38"}]}
