)]}'
{"sysinv/sysinv/sysinv/sysinv/common/utils.py":[{"author":{"_account_id":15435,"name":"Al Bailey","email":"albailey1974@gmail.com","username":"albailey"},"change_message_id":"21b7b0e62483452b24e0f32aadb5c457f2069873","unresolved":false,"context_lines":[{"line_number":1980,"context_line":"    for iface in interfaces:"},{"line_number":1981,"context_line":"        if ifname \u003d\u003d iface:"},{"line_number":1982,"context_line":"            ifaceid \u003d interfaces[iface][\u0027id\u0027]"},{"line_number":1983,"context_line":"            return ports[ifaceid][\u0027name\u0027]"},{"line_number":1984,"context_line":"    return \u0027\u0027"}],"source_content_type":"text/x-python","patch_set":7,"id":"dfbec78f_f4e1ee2b","line":1983,"updated":"2019-05-07 13:49:37.000000000","message":"I assume there is no risk of ports[ifaceid] not being present, and causing an array exception?","commit_id":"912c782c80ee8017e3c21352ab4952018ab38b8d"},{"author":{"_account_id":28402,"name":"Mingyuan Qi","email":"mingyuan.qi@intel.com","username":"myqi"},"change_message_id":"e9bc9ffb918138105b6a740f0097e5a6b1021272","unresolved":false,"context_lines":[{"line_number":1980,"context_line":"    for iface in interfaces:"},{"line_number":1981,"context_line":"        if ifname \u003d\u003d iface:"},{"line_number":1982,"context_line":"            ifaceid \u003d interfaces[iface][\u0027id\u0027]"},{"line_number":1983,"context_line":"            return ports[ifaceid][\u0027name\u0027]"},{"line_number":1984,"context_line":"    return \u0027\u0027"}],"source_content_type":"text/x-python","patch_set":7,"id":"dfbec78f_7f5cea7d","line":1983,"in_reply_to":"dfbec78f_f4e1ee2b","updated":"2019-05-08 07:16:16.000000000","message":"good point","commit_id":"912c782c80ee8017e3c21352ab4952018ab38b8d"},{"author":{"_account_id":28439,"name":"Matt Peters","email":"matt.peters@windriver.com","username":"mpeters-wrs"},"change_message_id":"cc3ced718cddc9717a29a2279ed546f833152c94","unresolved":false,"context_lines":[{"line_number":2045,"context_line":"            LOG.error(\"Failed to update helm repo data for user wrsroot.\")"},{"line_number":2046,"context_line":""},{"line_number":2047,"context_line":""},{"line_number":2048,"context_line":"def is_labeled(dbapi, k, v):"},{"line_number":2049,"context_line":"    if dbapi is None:"},{"line_number":2050,"context_line":"        return False"},{"line_number":2051,"context_line":"    label_list \u003d dbapi.label_get_all()"},{"line_number":2052,"context_line":"    for label in label_list:"},{"line_number":2053,"context_line":"        if label.label_key \u003d\u003d k:"},{"line_number":2054,"context_line":"            if label.label_value \u003d\u003d v:"},{"line_number":2055,"context_line":"                return True"},{"line_number":2056,"context_line":"    return False"}],"source_content_type":"text/x-python","patch_set":16,"id":"9fb8cfa7_d5ace48d","line":2056,"range":{"start_line":2048,"start_character":0,"end_line":2056,"end_character":16},"updated":"2019-06-05 10:44:46.000000000","message":"I think this should reside in the helm BaseHelm class.  The dbapi instance would then be obtained by the base instance.","commit_id":"f45023c203c32743ab3716a289833788e5b5274f"},{"author":{"_account_id":28402,"name":"Mingyuan Qi","email":"mingyuan.qi@intel.com","username":"myqi"},"change_message_id":"dd64ba5204a9d3d718d29d6556c04fe545db59e7","unresolved":false,"context_lines":[{"line_number":2045,"context_line":"            LOG.error(\"Failed to update helm repo data for user wrsroot.\")"},{"line_number":2046,"context_line":""},{"line_number":2047,"context_line":""},{"line_number":2048,"context_line":"def is_labeled(dbapi, k, v):"},{"line_number":2049,"context_line":"    if dbapi is None:"},{"line_number":2050,"context_line":"        return False"},{"line_number":2051,"context_line":"    label_list \u003d dbapi.label_get_all()"},{"line_number":2052,"context_line":"    for label in label_list:"},{"line_number":2053,"context_line":"        if label.label_key \u003d\u003d k:"},{"line_number":2054,"context_line":"            if label.label_value \u003d\u003d v:"},{"line_number":2055,"context_line":"                return True"},{"line_number":2056,"context_line":"    return False"}],"source_content_type":"text/x-python","patch_set":16,"id":"9fb8cfa7_1bd139ce","line":2056,"range":{"start_line":2048,"start_character":0,"end_line":2056,"end_character":16},"in_reply_to":"9fb8cfa7_d5ace48d","updated":"2019-06-06 06:52:25.000000000","message":"Done","commit_id":"f45023c203c32743ab3716a289833788e5b5274f"}],"sysinv/sysinv/sysinv/sysinv/helm/ironic.py":[{"author":{"_account_id":28431,"name":"Don Penney","email":"dpenney@redhat.com","username":"dpenney"},"change_message_id":"edd7651424d56bdab99ddfdd19e6b8b74e01b1cd","unresolved":false,"context_lines":[{"line_number":176,"context_line":"    # ironic ethernet port name from interfaces,"},{"line_number":177,"context_line":"    # and ironic provider network from data networks."},{"line_number":178,"context_line":"    #"},{"line_number":179,"context_line":"    # TODO: Support different ethernet port name for ironic conductor."},{"line_number":180,"context_line":"    # Currently the name of ironic port should be the same on each"},{"line_number":181,"context_line":"    # controllers to support HA, otherwise the initialization"},{"line_number":182,"context_line":"    # of ironic-conductor-pxe would be failed. It\u0027s a limitation"}],"source_content_type":"text/x-python","patch_set":4,"id":"ffb9cba7_3d63f91c","line":179,"updated":"2019-04-23 15:08:39.000000000","message":"Are there tasks in storyboard corresponding to the todo items?","commit_id":"8abbacd3f50cb6ac3b752dbadea78aca969b71ac"},{"author":{"_account_id":28402,"name":"Mingyuan Qi","email":"mingyuan.qi@intel.com","username":"myqi"},"change_message_id":"ae7ae251ecedc4e03bb110077c72c18d2dba76d6","unresolved":false,"context_lines":[{"line_number":176,"context_line":"    # ironic ethernet port name from interfaces,"},{"line_number":177,"context_line":"    # and ironic provider network from data networks."},{"line_number":178,"context_line":"    #"},{"line_number":179,"context_line":"    # TODO: Support different ethernet port name for ironic conductor."},{"line_number":180,"context_line":"    # Currently the name of ironic port should be the same on each"},{"line_number":181,"context_line":"    # controllers to support HA, otherwise the initialization"},{"line_number":182,"context_line":"    # of ironic-conductor-pxe would be failed. It\u0027s a limitation"}],"source_content_type":"text/x-python","patch_set":4,"id":"ffb9cba7_2c6ad7b2","line":179,"in_reply_to":"ffb9cba7_3d63f91c","updated":"2019-04-24 09:56:38.000000000","message":"Not yet, I don\u0027t think this TODO should be added in this story. It could be a feature request for openstack-helm, I\u0027ll try that afterwards, to avoid another patch for openstack-helm holding in stx-upstream.","commit_id":"8abbacd3f50cb6ac3b752dbadea78aca969b71ac"},{"author":{"_account_id":15435,"name":"Al Bailey","email":"albailey1974@gmail.com","username":"albailey"},"change_message_id":"21b7b0e62483452b24e0f32aadb5c457f2069873","unresolved":false,"context_lines":[{"line_number":184,"context_line":"    # configuration file for init."},{"line_number":185,"context_line":"    def _get_network_overrides(self):"},{"line_number":186,"context_line":"        ironic_addrpool \u003d self._get_ironic_addrpool()"},{"line_number":187,"context_line":"        if \u0027gateway\u0027 in ironic_addrpool:"},{"line_number":188,"context_line":"            gateway \u003d ironic_addrpool[\u0027gateway\u0027]"},{"line_number":189,"context_line":"        else:"},{"line_number":190,"context_line":"            gateway \u003d \u0027\u0027"}],"source_content_type":"text/x-python","patch_set":7,"id":"dfbec78f_943752b1","line":187,"updated":"2019-05-07 13:49:37.000000000","message":"nit:  all these if/else sections could be rewritten using a single line dictionary \u0027get\u0027 with \u0027\u0027 when the key does not exist. \n ie:  foo \u003d ironic_addrpool.get(\u0027foo\u0027,\u0027\u0027)","commit_id":"912c782c80ee8017e3c21352ab4952018ab38b8d"},{"author":{"_account_id":28402,"name":"Mingyuan Qi","email":"mingyuan.qi@intel.com","username":"myqi"},"change_message_id":"e9bc9ffb918138105b6a740f0097e5a6b1021272","unresolved":false,"context_lines":[{"line_number":184,"context_line":"    # configuration file for init."},{"line_number":185,"context_line":"    def _get_network_overrides(self):"},{"line_number":186,"context_line":"        ironic_addrpool \u003d self._get_ironic_addrpool()"},{"line_number":187,"context_line":"        if \u0027gateway\u0027 in ironic_addrpool:"},{"line_number":188,"context_line":"            gateway \u003d ironic_addrpool[\u0027gateway\u0027]"},{"line_number":189,"context_line":"        else:"},{"line_number":190,"context_line":"            gateway \u003d \u0027\u0027"}],"source_content_type":"text/x-python","patch_set":7,"id":"dfbec78f_bf62623d","line":187,"in_reply_to":"dfbec78f_943752b1","updated":"2019-05-08 07:16:16.000000000","message":"Done","commit_id":"912c782c80ee8017e3c21352ab4952018ab38b8d"},{"author":{"_account_id":14174,"name":"Bart Wensley","email":"bartwensley@hotmail.com","username":"bartwensley"},"change_message_id":"feb6c21fa17d33fb0df976735a91f0ba4fc1a8f4","unresolved":false,"context_lines":[{"line_number":24,"context_line":"    AUTH_USERS \u003d [\u0027ironic\u0027]"},{"line_number":25,"context_line":"    # TODO: customize IRONIC_KEYWORD by service parameter"},{"line_number":26,"context_line":"    IRONIC_KEYWORD \u003d \u0027ironic\u0027"},{"line_number":27,"context_line":"    IRONIC_LABEL \u003d \u0027openstack-ironic\u0027"},{"line_number":28,"context_line":""},{"line_number":29,"context_line":"    def get_overrides(self, namespace\u003dNone):"},{"line_number":30,"context_line":"        overrides \u003d {"}],"source_content_type":"text/x-python","patch_set":9,"id":"dfbec78f_8cccfe6a","line":27,"range":{"start_line":27,"start_character":0,"end_line":27,"end_character":37},"updated":"2019-05-09 15:51:15.000000000","message":"Rename to LABEL_IRONIC and define in helm/common.py with the other labels.","commit_id":"956701e22034ad432dd69b4bf7e4137121305bcb"},{"author":{"_account_id":28402,"name":"Mingyuan Qi","email":"mingyuan.qi@intel.com","username":"myqi"},"change_message_id":"13ebde61a926b49f96a363f28ec101e7edb7e632","unresolved":false,"context_lines":[{"line_number":24,"context_line":"    AUTH_USERS \u003d [\u0027ironic\u0027]"},{"line_number":25,"context_line":"    # TODO: customize IRONIC_KEYWORD by service parameter"},{"line_number":26,"context_line":"    IRONIC_KEYWORD \u003d \u0027ironic\u0027"},{"line_number":27,"context_line":"    IRONIC_LABEL \u003d \u0027openstack-ironic\u0027"},{"line_number":28,"context_line":""},{"line_number":29,"context_line":"    def get_overrides(self, namespace\u003dNone):"},{"line_number":30,"context_line":"        overrides \u003d {"}],"source_content_type":"text/x-python","patch_set":9,"id":"dfbec78f_3b535c19","line":27,"range":{"start_line":27,"start_character":0,"end_line":27,"end_character":37},"in_reply_to":"dfbec78f_8cccfe6a","updated":"2019-05-16 09:49:55.000000000","message":"Done","commit_id":"956701e22034ad432dd69b4bf7e4137121305bcb"},{"author":{"_account_id":14174,"name":"Bart Wensley","email":"bartwensley@hotmail.com","username":"bartwensley"},"change_message_id":"feb6c21fa17d33fb0df976735a91f0ba4fc1a8f4","unresolved":false,"context_lines":[{"line_number":80,"context_line":"                    if label.label_value \u003d\u003d \u0027enabled\u0027:"},{"line_number":81,"context_line":"                        ironic_label \u003d \u0027true\u0027"},{"line_number":82,"context_line":"                        break"},{"line_number":83,"context_line":"        except NoResultFound:"},{"line_number":84,"context_line":"            pass"},{"line_number":85,"context_line":"        return self._ironic_manifests(ironic_label)"},{"line_number":86,"context_line":""}],"source_content_type":"text/x-python","patch_set":9,"id":"dfbec78f_0c2c8e00","line":83,"range":{"start_line":83,"start_character":8,"end_line":83,"end_character":28},"updated":"2019-05-09 15:51:15.000000000","message":"General comment for this file - I don\u0027t think the try/except blocks are necessary.","commit_id":"956701e22034ad432dd69b4bf7e4137121305bcb"},{"author":{"_account_id":28402,"name":"Mingyuan Qi","email":"mingyuan.qi@intel.com","username":"myqi"},"change_message_id":"13ebde61a926b49f96a363f28ec101e7edb7e632","unresolved":false,"context_lines":[{"line_number":80,"context_line":"                    if label.label_value \u003d\u003d \u0027enabled\u0027:"},{"line_number":81,"context_line":"                        ironic_label \u003d \u0027true\u0027"},{"line_number":82,"context_line":"                        break"},{"line_number":83,"context_line":"        except NoResultFound:"},{"line_number":84,"context_line":"            pass"},{"line_number":85,"context_line":"        return self._ironic_manifests(ironic_label)"},{"line_number":86,"context_line":""}],"source_content_type":"text/x-python","patch_set":9,"id":"dfbec78f_db5560fb","line":83,"range":{"start_line":83,"start_character":8,"end_line":83,"end_character":28},"in_reply_to":"dfbec78f_0c2c8e00","updated":"2019-05-16 09:49:55.000000000","message":"Done","commit_id":"956701e22034ad432dd69b4bf7e4137121305bcb"},{"author":{"_account_id":14174,"name":"Bart Wensley","email":"bartwensley@hotmail.com","username":"bartwensley"},"change_message_id":"feb6c21fa17d33fb0df976735a91f0ba4fc1a8f4","unresolved":false,"context_lines":[{"line_number":129,"context_line":"            ports \u003d dict((p[\u0027interface_id\u0027], p) for p in port_list)"},{"line_number":130,"context_line":"            # find the first interface with IRONIC_KEYWORD in its name"},{"line_number":131,"context_line":"            for interface in interface_list:"},{"line_number":132,"context_line":"                if self.IRONIC_KEYWORD in interface.ifname:"},{"line_number":133,"context_line":"                    ifname \u003d interface.ifname"},{"line_number":134,"context_line":"                    ironic_port \u003d str(cutils.get_port_name_by_interface_name("},{"line_number":135,"context_line":"                        ifname, ifaces, ports))"}],"source_content_type":"text/x-python","patch_set":9,"id":"dfbec78f_0c648e21","line":132,"range":{"start_line":132,"start_character":16,"end_line":132,"end_character":59},"updated":"2019-05-09 15:51:15.000000000","message":"This doesn\u0027t seem safe - a user could name an interface with \u0027ironic\u0027 in the name. Shouldn\u0027t we have a different ifclass or network type? Matt or Teresa should comment.","commit_id":"956701e22034ad432dd69b4bf7e4137121305bcb"},{"author":{"_account_id":28402,"name":"Mingyuan Qi","email":"mingyuan.qi@intel.com","username":"myqi"},"change_message_id":"13ebde61a926b49f96a363f28ec101e7edb7e632","unresolved":false,"context_lines":[{"line_number":129,"context_line":"            ports \u003d dict((p[\u0027interface_id\u0027], p) for p in port_list)"},{"line_number":130,"context_line":"            # find the first interface with IRONIC_KEYWORD in its name"},{"line_number":131,"context_line":"            for interface in interface_list:"},{"line_number":132,"context_line":"                if self.IRONIC_KEYWORD in interface.ifname:"},{"line_number":133,"context_line":"                    ifname \u003d interface.ifname"},{"line_number":134,"context_line":"                    ironic_port \u003d str(cutils.get_port_name_by_interface_name("},{"line_number":135,"context_line":"                        ifname, ifaces, ports))"}],"source_content_type":"text/x-python","patch_set":9,"id":"dfbec78f_fb586431","line":132,"range":{"start_line":132,"start_character":16,"end_line":132,"end_character":59},"in_reply_to":"dfbec78f_0c648e21","updated":"2019-05-16 09:49:55.000000000","message":"Done","commit_id":"956701e22034ad432dd69b4bf7e4137121305bcb"},{"author":{"_account_id":28439,"name":"Matt Peters","email":"matt.peters@windriver.com","username":"mpeters-wrs"},"change_message_id":"53a5e434342508225bbac1475837d501b87c6012","unresolved":false,"context_lines":[{"line_number":129,"context_line":"            ports \u003d dict((p[\u0027interface_id\u0027], p) for p in port_list)"},{"line_number":130,"context_line":"            # find the first interface with IRONIC_KEYWORD in its name"},{"line_number":131,"context_line":"            for interface in interface_list:"},{"line_number":132,"context_line":"                if self.IRONIC_KEYWORD in interface.ifname:"},{"line_number":133,"context_line":"                    ifname \u003d interface.ifname"},{"line_number":134,"context_line":"                    ironic_port \u003d str(cutils.get_port_name_by_interface_name("},{"line_number":135,"context_line":"                        ifname, ifaces, ports))"}],"source_content_type":"text/x-python","patch_set":9,"id":"dfbec78f_93ade4ea","line":132,"range":{"start_line":132,"start_character":16,"end_line":132,"end_character":59},"in_reply_to":"dfbec78f_0c648e21","updated":"2019-05-10 18:54:59.000000000","message":"See other comment regarding the use of an ironic network.","commit_id":"956701e22034ad432dd69b4bf7e4137121305bcb"},{"author":{"_account_id":14174,"name":"Bart Wensley","email":"bartwensley@hotmail.com","username":"bartwensley"},"change_message_id":"feb6c21fa17d33fb0df976735a91f0ba4fc1a8f4","unresolved":false,"context_lines":[{"line_number":145,"context_line":"        try:"},{"line_number":146,"context_line":"            addrpools \u003d self.dbapi.address_pools_get_all()"},{"line_number":147,"context_line":"            for addrpool in addrpools:"},{"line_number":148,"context_line":"                if self.IRONIC_KEYWORD in addrpool.name:"},{"line_number":149,"context_line":"                    ironic_addrpool[\u0027cidr\u0027] \u003d str(addrpool.network) + \\"},{"line_number":150,"context_line":"                            \u0027/\u0027 + str(addrpool.prefix)"},{"line_number":151,"context_line":"                    ironic_addrpool[\u0027gateway\u0027] \u003d str(addrpool.gateway_address)"}],"source_content_type":"text/x-python","patch_set":9,"id":"dfbec78f_6c03ca10","line":148,"range":{"start_line":148,"start_character":16,"end_line":148,"end_character":55},"updated":"2019-05-09 15:51:15.000000000","message":"This also doesn\u0027t seem like a safe way to find the address pool.","commit_id":"956701e22034ad432dd69b4bf7e4137121305bcb"},{"author":{"_account_id":28402,"name":"Mingyuan Qi","email":"mingyuan.qi@intel.com","username":"myqi"},"change_message_id":"13ebde61a926b49f96a363f28ec101e7edb7e632","unresolved":false,"context_lines":[{"line_number":145,"context_line":"        try:"},{"line_number":146,"context_line":"            addrpools \u003d self.dbapi.address_pools_get_all()"},{"line_number":147,"context_line":"            for addrpool in addrpools:"},{"line_number":148,"context_line":"                if self.IRONIC_KEYWORD in addrpool.name:"},{"line_number":149,"context_line":"                    ironic_addrpool[\u0027cidr\u0027] \u003d str(addrpool.network) + \\"},{"line_number":150,"context_line":"                            \u0027/\u0027 + str(addrpool.prefix)"},{"line_number":151,"context_line":"                    ironic_addrpool[\u0027gateway\u0027] \u003d str(addrpool.gateway_address)"}],"source_content_type":"text/x-python","patch_set":9,"id":"dfbec78f_9b436842","line":148,"range":{"start_line":148,"start_character":16,"end_line":148,"end_character":55},"in_reply_to":"dfbec78f_6c03ca10","updated":"2019-05-16 09:49:55.000000000","message":"Done","commit_id":"956701e22034ad432dd69b4bf7e4137121305bcb"},{"author":{"_account_id":28439,"name":"Matt Peters","email":"matt.peters@windriver.com","username":"mpeters-wrs"},"change_message_id":"53a5e434342508225bbac1475837d501b87c6012","unresolved":false,"context_lines":[{"line_number":145,"context_line":"        try:"},{"line_number":146,"context_line":"            addrpools \u003d self.dbapi.address_pools_get_all()"},{"line_number":147,"context_line":"            for addrpool in addrpools:"},{"line_number":148,"context_line":"                if self.IRONIC_KEYWORD in addrpool.name:"},{"line_number":149,"context_line":"                    ironic_addrpool[\u0027cidr\u0027] \u003d str(addrpool.network) + \\"},{"line_number":150,"context_line":"                            \u0027/\u0027 + str(addrpool.prefix)"},{"line_number":151,"context_line":"                    ironic_addrpool[\u0027gateway\u0027] \u003d str(addrpool.gateway_address)"}],"source_content_type":"text/x-python","patch_set":9,"id":"dfbec78f_13a254fe","line":148,"range":{"start_line":148,"start_character":16,"end_line":148,"end_character":55},"in_reply_to":"dfbec78f_6c03ca10","updated":"2019-05-10 18:54:59.000000000","message":"I agree that this should not be derived from the name of the pool.  I recommend adding a new network with a network type of \"ironic\".  The address pool and interfaces can then be determine through the association to this network.","commit_id":"956701e22034ad432dd69b4bf7e4137121305bcb"},{"author":{"_account_id":28459,"name":"Bob Church","email":"robert.church@windriver.com","username":"rchurch"},"change_message_id":"84293c61a09648a738fe41a0f81cf3ac29a42a91","unresolved":false,"context_lines":[{"line_number":15,"context_line":"    \"\"\"Class to encapsulate helm operations for the ironic chart\"\"\""},{"line_number":16,"context_line":""},{"line_number":17,"context_line":"    CHART \u003d constants.HELM_CHART_IRONIC"},{"line_number":18,"context_line":""},{"line_number":19,"context_line":"    SERVICE_NAME \u003d \u0027ironic\u0027"},{"line_number":20,"context_line":"    SERVICE_USERS \u003d [\u0027glance\u0027]"},{"line_number":21,"context_line":"    AUTH_USERS \u003d [\u0027ironic\u0027]"}],"source_content_type":"text/x-python","patch_set":13,"id":"bfb3d3c7_032f0188","line":18,"updated":"2019-05-30 22:43:09.000000000","message":"See my question here on if this is relevant to run on the AIO-SX: https://review.opendev.org/#/c/657746/1/kubernetes/applications/stx-openstack/stx-openstack-helm/stx-openstack-helm/manifests/manifest.yaml@3093\n\nIf you need to make this conditional, you could follow the implementation done in the garbd plugin to add here the following:   \n\n   def get_meta_overrides(self, namespace, app_name\u003dNone, mode\u003dNone):\n\nWith that said, there is some angst among the cores of duplicating this implementation, but it will work.","commit_id":"f17583be4042af7e1ff7b0dbabd1c122840cbfcd"},{"author":{"_account_id":28439,"name":"Matt Peters","email":"matt.peters@windriver.com","username":"mpeters-wrs"},"change_message_id":"154422ac38e0d6804da9966cf216eb383694ecd5","unresolved":false,"context_lines":[{"line_number":199,"context_line":"                break"},{"line_number":200,"context_line":"        return ironic_addrpool"},{"line_number":201,"context_line":""},{"line_number":202,"context_line":"    def _get_ironic_providernet(self):"},{"line_number":203,"context_line":"        providernet \u003d \u0027\u0027"},{"line_number":204,"context_line":"        if self.dbapi is None:"},{"line_number":205,"context_line":"            return providernet"},{"line_number":206,"context_line":"        filters \u003d {\u0027network_type\u0027: \u0027flat\u0027}"},{"line_number":207,"context_line":"        flat_networks \u003d self.dbapi.datanetworks_get_all("},{"line_number":208,"context_line":"            filters\u003dfilters)"},{"line_number":209,"context_line":"        # find the first flat datanetwork with \u0027ironic\u0027 in its name"},{"line_number":210,"context_line":"        # generally, any flat network name could be used as ironic"},{"line_number":211,"context_line":"        # datanetwork, this could be achieved via \u0027system helm-override-"},{"line_number":212,"context_line":"        # update\u0027 by user to override neutron_provider_network"},{"line_number":213,"context_line":"        for network in flat_networks:"},{"line_number":214,"context_line":"            if \u0027ironic\u0027 in network[\u0027name\u0027]:"},{"line_number":215,"context_line":"                providernet \u003d network[\u0027name\u0027]"},{"line_number":216,"context_line":"                break"},{"line_number":217,"context_line":"        return providernet"},{"line_number":218,"context_line":""},{"line_number":219,"context_line":"    # retrieve ironic network settings from address pools,"},{"line_number":220,"context_line":"    # ironic ethernet port name from interfaces,"}],"source_content_type":"text/x-python","patch_set":15,"id":"9fb8cfa7_6521e1b4","line":217,"range":{"start_line":202,"start_character":0,"end_line":217,"end_character":26},"updated":"2019-06-04 11:12:40.000000000","message":"Why do we still need to lookup the data network by name?","commit_id":"77e11f28936437f2477d9af664a3f1cf65c88035"},{"author":{"_account_id":28402,"name":"Mingyuan Qi","email":"mingyuan.qi@intel.com","username":"myqi"},"change_message_id":"dd64ba5204a9d3d718d29d6556c04fe545db59e7","unresolved":false,"context_lines":[{"line_number":199,"context_line":"                break"},{"line_number":200,"context_line":"        return ironic_addrpool"},{"line_number":201,"context_line":""},{"line_number":202,"context_line":"    def _get_ironic_providernet(self):"},{"line_number":203,"context_line":"        providernet \u003d \u0027\u0027"},{"line_number":204,"context_line":"        if self.dbapi is None:"},{"line_number":205,"context_line":"            return providernet"},{"line_number":206,"context_line":"        filters \u003d {\u0027network_type\u0027: \u0027flat\u0027}"},{"line_number":207,"context_line":"        flat_networks \u003d self.dbapi.datanetworks_get_all("},{"line_number":208,"context_line":"            filters\u003dfilters)"},{"line_number":209,"context_line":"        # find the first flat datanetwork with \u0027ironic\u0027 in its name"},{"line_number":210,"context_line":"        # generally, any flat network name could be used as ironic"},{"line_number":211,"context_line":"        # datanetwork, this could be achieved via \u0027system helm-override-"},{"line_number":212,"context_line":"        # update\u0027 by user to override neutron_provider_network"},{"line_number":213,"context_line":"        for network in flat_networks:"},{"line_number":214,"context_line":"            if \u0027ironic\u0027 in network[\u0027name\u0027]:"},{"line_number":215,"context_line":"                providernet \u003d network[\u0027name\u0027]"},{"line_number":216,"context_line":"                break"},{"line_number":217,"context_line":"        return providernet"},{"line_number":218,"context_line":""},{"line_number":219,"context_line":"    # retrieve ironic network settings from address pools,"},{"line_number":220,"context_line":"    # ironic ethernet port name from interfaces,"}],"source_content_type":"text/x-python","patch_set":15,"id":"9fb8cfa7_6a066589","line":217,"range":{"start_line":202,"start_character":0,"end_line":217,"end_character":26},"in_reply_to":"9fb8cfa7_35ad4031","updated":"2019-06-06 06:52:25.000000000","message":"Thanks Matt. And yes, it\u0027s referencing the provider physical network name. I\u0027m going to use a default tenant network name \u0027ironic\u0027, instead of \u0027baremetal\u0027 to align with the naming in all ironic configurations. \nFor a user specific tenant network name, I assume \u0027system helm-override-update\u0027 would work and no codes needed.","commit_id":"77e11f28936437f2477d9af664a3f1cf65c88035"},{"author":{"_account_id":28439,"name":"Matt Peters","email":"matt.peters@windriver.com","username":"mpeters-wrs"},"change_message_id":"cc3ced718cddc9717a29a2279ed546f833152c94","unresolved":false,"context_lines":[{"line_number":199,"context_line":"                break"},{"line_number":200,"context_line":"        return ironic_addrpool"},{"line_number":201,"context_line":""},{"line_number":202,"context_line":"    def _get_ironic_providernet(self):"},{"line_number":203,"context_line":"        providernet \u003d \u0027\u0027"},{"line_number":204,"context_line":"        if self.dbapi is None:"},{"line_number":205,"context_line":"            return providernet"},{"line_number":206,"context_line":"        filters \u003d {\u0027network_type\u0027: \u0027flat\u0027}"},{"line_number":207,"context_line":"        flat_networks \u003d self.dbapi.datanetworks_get_all("},{"line_number":208,"context_line":"            filters\u003dfilters)"},{"line_number":209,"context_line":"        # find the first flat datanetwork with \u0027ironic\u0027 in its name"},{"line_number":210,"context_line":"        # generally, any flat network name could be used as ironic"},{"line_number":211,"context_line":"        # datanetwork, this could be achieved via \u0027system helm-override-"},{"line_number":212,"context_line":"        # update\u0027 by user to override neutron_provider_network"},{"line_number":213,"context_line":"        for network in flat_networks:"},{"line_number":214,"context_line":"            if \u0027ironic\u0027 in network[\u0027name\u0027]:"},{"line_number":215,"context_line":"                providernet \u003d network[\u0027name\u0027]"},{"line_number":216,"context_line":"                break"},{"line_number":217,"context_line":"        return providernet"},{"line_number":218,"context_line":""},{"line_number":219,"context_line":"    # retrieve ironic network settings from address pools,"},{"line_number":220,"context_line":"    # ironic ethernet port name from interfaces,"}],"source_content_type":"text/x-python","patch_set":15,"id":"9fb8cfa7_b52e10f8","line":217,"range":{"start_line":202,"start_character":0,"end_line":217,"end_character":26},"in_reply_to":"9fb8cfa7_579ec163","updated":"2019-06-05 10:44:46.000000000","message":"Since we don\u0027t have an explicit association, I think a better solution would be to have the system overrides provide a default tenant network name (e.g. ironic).  If the end user would like to use a different tenant network, then they could provision an alternate name using the Helm user overrides.  The main reason is that the datanetwork that you are referencing is not really the neutron tenant network, but rather a system inventory datanetwork that could be used in defining the neutron tenant network.","commit_id":"77e11f28936437f2477d9af664a3f1cf65c88035"},{"author":{"_account_id":28402,"name":"Mingyuan Qi","email":"mingyuan.qi@intel.com","username":"myqi"},"change_message_id":"293fe252b1e37319935f1efe4bf22515ff3c8667","unresolved":false,"context_lines":[{"line_number":199,"context_line":"                break"},{"line_number":200,"context_line":"        return ironic_addrpool"},{"line_number":201,"context_line":""},{"line_number":202,"context_line":"    def _get_ironic_providernet(self):"},{"line_number":203,"context_line":"        providernet \u003d \u0027\u0027"},{"line_number":204,"context_line":"        if self.dbapi is None:"},{"line_number":205,"context_line":"            return providernet"},{"line_number":206,"context_line":"        filters \u003d {\u0027network_type\u0027: \u0027flat\u0027}"},{"line_number":207,"context_line":"        flat_networks \u003d self.dbapi.datanetworks_get_all("},{"line_number":208,"context_line":"            filters\u003dfilters)"},{"line_number":209,"context_line":"        # find the first flat datanetwork with \u0027ironic\u0027 in its name"},{"line_number":210,"context_line":"        # generally, any flat network name could be used as ironic"},{"line_number":211,"context_line":"        # datanetwork, this could be achieved via \u0027system helm-override-"},{"line_number":212,"context_line":"        # update\u0027 by user to override neutron_provider_network"},{"line_number":213,"context_line":"        for network in flat_networks:"},{"line_number":214,"context_line":"            if \u0027ironic\u0027 in network[\u0027name\u0027]:"},{"line_number":215,"context_line":"                providernet \u003d network[\u0027name\u0027]"},{"line_number":216,"context_line":"                break"},{"line_number":217,"context_line":"        return providernet"},{"line_number":218,"context_line":""},{"line_number":219,"context_line":"    # retrieve ironic network settings from address pools,"},{"line_number":220,"context_line":"    # ironic ethernet port name from interfaces,"}],"source_content_type":"text/x-python","patch_set":15,"id":"9fb8cfa7_579ec163","line":217,"range":{"start_line":202,"start_character":0,"end_line":217,"end_character":26},"in_reply_to":"9fb8cfa7_6521e1b4","updated":"2019-06-05 02:56:29.000000000","message":"Unlike \"ironic\" platform network, datanetwork is used for ironic tenant network that ironic needs one for tenant instance provisioning, while the \"ironic\" platform network is used for ironic node (ironic hypervisor) provisioning.\n\nThis datanetwork is a user defined flat network, user can always change it\u0027s name, but it has to be a default name for ironic helm chart overrides. I don\u0027t think it makes sense to add a dedicated type for ironic in datanetwork.","commit_id":"77e11f28936437f2477d9af664a3f1cf65c88035"},{"author":{"_account_id":28439,"name":"Matt Peters","email":"matt.peters@windriver.com","username":"mpeters-wrs"},"change_message_id":"212d2ead208afe5ddebe14fa2984c0e9df687bf5","unresolved":false,"context_lines":[{"line_number":199,"context_line":"                break"},{"line_number":200,"context_line":"        return ironic_addrpool"},{"line_number":201,"context_line":""},{"line_number":202,"context_line":"    def _get_ironic_providernet(self):"},{"line_number":203,"context_line":"        providernet \u003d \u0027\u0027"},{"line_number":204,"context_line":"        if self.dbapi is None:"},{"line_number":205,"context_line":"            return providernet"},{"line_number":206,"context_line":"        filters \u003d {\u0027network_type\u0027: \u0027flat\u0027}"},{"line_number":207,"context_line":"        flat_networks \u003d self.dbapi.datanetworks_get_all("},{"line_number":208,"context_line":"            filters\u003dfilters)"},{"line_number":209,"context_line":"        # find the first flat datanetwork with \u0027ironic\u0027 in its name"},{"line_number":210,"context_line":"        # generally, any flat network name could be used as ironic"},{"line_number":211,"context_line":"        # datanetwork, this could be achieved via \u0027system helm-override-"},{"line_number":212,"context_line":"        # update\u0027 by user to override neutron_provider_network"},{"line_number":213,"context_line":"        for network in flat_networks:"},{"line_number":214,"context_line":"            if \u0027ironic\u0027 in network[\u0027name\u0027]:"},{"line_number":215,"context_line":"                providernet \u003d network[\u0027name\u0027]"},{"line_number":216,"context_line":"                break"},{"line_number":217,"context_line":"        return providernet"},{"line_number":218,"context_line":""},{"line_number":219,"context_line":"    # retrieve ironic network settings from address pools,"},{"line_number":220,"context_line":"    # ironic ethernet port name from interfaces,"}],"source_content_type":"text/x-python","patch_set":15,"id":"9fb8cfa7_35ad4031","line":217,"range":{"start_line":202,"start_character":0,"end_line":217,"end_character":26},"in_reply_to":"9fb8cfa7_b52e10f8","updated":"2019-06-05 10:49:37.000000000","message":"I guess the last sentence is not correct, it is referencing the provider physical network name that is used in creating the tenant network.  I see that the default tenant network name is \"baremetal\".\n\nHowever, I think the Helm user override approach seems like the right thing to do.  Maybe others have other opinions to help decide on the best approach.","commit_id":"77e11f28936437f2477d9af664a3f1cf65c88035"}],"sysinv/sysinv/sysinv/sysinv/helm/neutron.py":[{"author":{"_account_id":28431,"name":"Don Penney","email":"dpenney@redhat.com","username":"dpenney"},"change_message_id":"edd7651424d56bdab99ddfdd19e6b8b74e01b1cd","unresolved":false,"context_lines":[{"line_number":332,"context_line":"            if datanetwork.network_type \u003d\u003d \u0027flat\u0027:"},{"line_number":333,"context_line":"                flat_physical_networks.append(str(datanetwork.name))"},{"line_number":334,"context_line":"        if flat_physical_networks:"},{"line_number":335,"context_line":"            return \",\" + \",\".join(flat_physical_networks)"},{"line_number":336,"context_line":"        else:"},{"line_number":337,"context_line":"            return \"\""},{"line_number":338,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"ffb9cba7_7d597158","line":335,"updated":"2019-04-23 15:08:39.000000000","message":"This looks a bit ugly. I\u0027d suggest returning the flat_physical_networks list itself, and then the code below can be:\n\n            \u0027ml2_type_flat\u0027: {\n                \u0027flat_networks\u0027: \u0027,\u0027.join([\u0027public\u0027] + self._get_flat_physical_networks())\n            },","commit_id":"8abbacd3f50cb6ac3b752dbadea78aca969b71ac"},{"author":{"_account_id":28402,"name":"Mingyuan Qi","email":"mingyuan.qi@intel.com","username":"myqi"},"change_message_id":"ae7ae251ecedc4e03bb110077c72c18d2dba76d6","unresolved":false,"context_lines":[{"line_number":332,"context_line":"            if datanetwork.network_type \u003d\u003d \u0027flat\u0027:"},{"line_number":333,"context_line":"                flat_physical_networks.append(str(datanetwork.name))"},{"line_number":334,"context_line":"        if flat_physical_networks:"},{"line_number":335,"context_line":"            return \",\" + \",\".join(flat_physical_networks)"},{"line_number":336,"context_line":"        else:"},{"line_number":337,"context_line":"            return \"\""},{"line_number":338,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"ffb9cba7_4c65cbe0","line":335,"in_reply_to":"ffb9cba7_7d597158","updated":"2019-04-24 09:56:38.000000000","message":"Done","commit_id":"8abbacd3f50cb6ac3b752dbadea78aca969b71ac"}],"sysinv/sysinv/sysinv/sysinv/helm/nova.py":[{"author":{"_account_id":14174,"name":"Bart Wensley","email":"bartwensley@hotmail.com","username":"bartwensley"},"change_message_id":"feb6c21fa17d33fb0df976735a91f0ba4fc1a8f4","unresolved":false,"context_lines":[{"line_number":136,"context_line":"            label_list \u003d self.dbapi.label_get_all()"},{"line_number":137,"context_line":"            for label in label_list:"},{"line_number":138,"context_line":"                if label.label_key \u003d\u003d ironic.IronicHelm.IRONIC_LABEL:"},{"line_number":139,"context_line":"                    if label.label_value \u003d\u003d \u0027enabled\u0027:"},{"line_number":140,"context_line":"                        ironic_label \u003d \u0027true\u0027"},{"line_number":141,"context_line":"                        break"},{"line_number":142,"context_line":"        except NoResultFound:"}],"source_content_type":"text/x-python","patch_set":9,"id":"dfbec78f_2c03920f","line":139,"range":{"start_line":139,"start_character":44,"end_line":139,"end_character":53},"updated":"2019-05-09 15:51:15.000000000","message":"Use LABEL_VALUE_ENABLED from helm/common.py instead.","commit_id":"956701e22034ad432dd69b4bf7e4137121305bcb"},{"author":{"_account_id":14174,"name":"Bart Wensley","email":"bartwensley@hotmail.com","username":"bartwensley"},"change_message_id":"feb6c21fa17d33fb0df976735a91f0ba4fc1a8f4","unresolved":false,"context_lines":[{"line_number":139,"context_line":"                    if label.label_value \u003d\u003d \u0027enabled\u0027:"},{"line_number":140,"context_line":"                        ironic_label \u003d \u0027true\u0027"},{"line_number":141,"context_line":"                        break"},{"line_number":142,"context_line":"        except NoResultFound:"},{"line_number":143,"context_line":"            pass"},{"line_number":144,"context_line":"        return self._compute_ironic_manifests(ironic_label)"},{"line_number":145,"context_line":""}],"source_content_type":"text/x-python","patch_set":9,"id":"dfbec78f_b92026b2","line":142,"range":{"start_line":142,"start_character":8,"end_line":142,"end_character":29},"updated":"2019-05-09 15:51:15.000000000","message":"Is this necessary? Doesn\u0027t label_get_all return an empty list if there are no labels?","commit_id":"956701e22034ad432dd69b4bf7e4137121305bcb"},{"author":{"_account_id":28439,"name":"Matt Peters","email":"matt.peters@windriver.com","username":"mpeters-wrs"},"change_message_id":"154422ac38e0d6804da9966cf216eb383694ecd5","unresolved":false,"context_lines":[{"line_number":143,"context_line":"        ironic_label \u003d False"},{"line_number":144,"context_line":"        if self.dbapi is None:"},{"line_number":145,"context_line":"            return self._compute_ironic_manifests(ironic_label)"},{"line_number":146,"context_line":"        label_list \u003d self.dbapi.label_get_all()"},{"line_number":147,"context_line":"        for label in label_list:"},{"line_number":148,"context_line":"            if label.label_key \u003d\u003d common.LABEL_IRONIC:"},{"line_number":149,"context_line":"                if label.label_value \u003d\u003d \u0027enabled\u0027:"},{"line_number":150,"context_line":"                    ironic_label \u003d True"},{"line_number":151,"context_line":"                    break"},{"line_number":152,"context_line":"        return self._compute_ironic_manifests(ironic_label)"},{"line_number":153,"context_line":""},{"line_number":154,"context_line":"    def _get_endpoints_overrides(self):"}],"source_content_type":"text/x-python","patch_set":15,"id":"9fb8cfa7_a02107a2","line":151,"range":{"start_line":146,"start_character":0,"end_line":151,"end_character":25},"updated":"2019-06-04 11:12:40.000000000","message":"This pattern is used in several places.  Can we add a common procedure to the base class?","commit_id":"77e11f28936437f2477d9af664a3f1cf65c88035"},{"author":{"_account_id":28402,"name":"Mingyuan Qi","email":"mingyuan.qi@intel.com","username":"myqi"},"change_message_id":"293fe252b1e37319935f1efe4bf22515ff3c8667","unresolved":false,"context_lines":[{"line_number":143,"context_line":"        ironic_label \u003d False"},{"line_number":144,"context_line":"        if self.dbapi is None:"},{"line_number":145,"context_line":"            return self._compute_ironic_manifests(ironic_label)"},{"line_number":146,"context_line":"        label_list \u003d self.dbapi.label_get_all()"},{"line_number":147,"context_line":"        for label in label_list:"},{"line_number":148,"context_line":"            if label.label_key \u003d\u003d common.LABEL_IRONIC:"},{"line_number":149,"context_line":"                if label.label_value \u003d\u003d \u0027enabled\u0027:"},{"line_number":150,"context_line":"                    ironic_label \u003d True"},{"line_number":151,"context_line":"                    break"},{"line_number":152,"context_line":"        return self._compute_ironic_manifests(ironic_label)"},{"line_number":153,"context_line":""},{"line_number":154,"context_line":"    def _get_endpoints_overrides(self):"}],"source_content_type":"text/x-python","patch_set":15,"id":"9fb8cfa7_d282bfc8","line":151,"range":{"start_line":146,"start_character":0,"end_line":151,"end_character":25},"in_reply_to":"9fb8cfa7_a02107a2","updated":"2019-06-05 02:56:29.000000000","message":"Done","commit_id":"77e11f28936437f2477d9af664a3f1cf65c88035"}]}
