)]}'
{"doc/source/admin/config-qos-min-bw.rst":[{"author":{"_account_id":6773,"name":"Lucas Alvares Gomes","email":"lucasagomes@gmail.com","username":"lucasagomes"},"change_message_id":"2aef25caf5764bd6d7bcfaac5287eded31d5f2e3","unresolved":true,"context_lines":[{"line_number":259,"context_line":"~~~~~~~~~~~~~~~~~~"},{"line_number":260,"context_line":""},{"line_number":261,"context_line":"TBD: config values are set in each SB chassis register, in"},{"line_number":262,"context_line":"\"external_ids:ovn-cms-options\". \"resource_provider_bandwidths\" values"},{"line_number":263,"context_line":"should match bridges defined in \"ovn-bridge-mappings\" (similar to OVS)."},{"line_number":264,"context_line":""},{"line_number":265,"context_line":"  ovn-bridge-mappings\u003d\"public:br-ex\""}],"source_content_type":"text/x-rst","patch_set":17,"id":"618f1780_1b1d71fb","line":262,"updated":"2021-04-23 10:52:54.000000000","message":"Can we have an example of how the ovn-cms-options values are stored ? Because looking at the placement.py option it seems to be a JSON string ? But that breaks the current format that we use which is a string with options separated by commas, e.g:\n\n\"enable-chassis-as-gw,availability-zones\u003daz-0:az-1:az-2\"","commit_id":"575ad589dfb7167fe32e445560969e28409f06f0"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"e84bebaa104f5f9cd5807e5f4233e4f9def76820","unresolved":true,"context_lines":[{"line_number":259,"context_line":"~~~~~~~~~~~~~~~~~~"},{"line_number":260,"context_line":""},{"line_number":261,"context_line":"TBD: config values are set in each SB chassis register, in"},{"line_number":262,"context_line":"\"external_ids:ovn-cms-options\". \"resource_provider_bandwidths\" values"},{"line_number":263,"context_line":"should match bridges defined in \"ovn-bridge-mappings\" (similar to OVS)."},{"line_number":264,"context_line":""},{"line_number":265,"context_line":"  ovn-bridge-mappings\u003d\"public:br-ex\""}],"source_content_type":"text/x-rst","patch_set":17,"id":"6c4fae7d_f41c1cde","line":262,"in_reply_to":"618f1780_1b1d71fb","updated":"2021-05-17 15:57:51.000000000","message":"Actually now I re-read this section, I need to complete it.","commit_id":"575ad589dfb7167fe32e445560969e28409f06f0"},{"author":{"_account_id":11975,"name":"Slawek Kaplonski","email":"skaplons@redhat.com","username":"slaweq"},"change_message_id":"3e1a5fe7fdffe60fe750d296524dc620a4b47b6e","unresolved":true,"context_lines":[{"line_number":276,"context_line":"      external_ids        : {hostname\u003ddev20.fistro.com, \\"},{"line_number":277,"context_line":"                             ovn-cms-options\u003d\"resource_provider_bandwidths\u003dbr-ex:1001:2000;br-ex2:3000:4000, \\"},{"line_number":278,"context_line":"                                              resource_provider_inventory_defaults\u003dallocation_ratio:1.0;min_unit:10, \\"},{"line_number":279,"context_line":"                                              resource_provider_hypervisors\u003dbr-ex:dev20.fistro.com;br-ex2:dev20.fistro.com\", \\"},{"line_number":280,"context_line":"                             rundir\u003d\"/var/run/openvswitch\", \\"},{"line_number":281,"context_line":"                             system-id\u003d\"029e7d3d-d2ab-4f2c-bc92-ec58c94a8fc1\"}"},{"line_number":282,"context_line":"      ..."}],"source_content_type":"text/x-rst","patch_set":23,"id":"a7943a05_8f81ffef","line":279,"updated":"2021-07-05 09:38:48.000000000","message":"what about this new config option with default hostname https://review.opendev.org/c/openstack/neutron/+/763563 ? Do You plan to add it here too?","commit_id":"53e4043b3e0b0e61dba80b728ef0bc4f468970e0"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"92a8ef904f48692675d3d63f149c939ab2a100b2","unresolved":true,"context_lines":[{"line_number":276,"context_line":"      external_ids        : {hostname\u003ddev20.fistro.com, \\"},{"line_number":277,"context_line":"                             ovn-cms-options\u003d\"resource_provider_bandwidths\u003dbr-ex:1001:2000;br-ex2:3000:4000, \\"},{"line_number":278,"context_line":"                                              resource_provider_inventory_defaults\u003dallocation_ratio:1.0;min_unit:10, \\"},{"line_number":279,"context_line":"                                              resource_provider_hypervisors\u003dbr-ex:dev20.fistro.com;br-ex2:dev20.fistro.com\", \\"},{"line_number":280,"context_line":"                             rundir\u003d\"/var/run/openvswitch\", \\"},{"line_number":281,"context_line":"                             system-id\u003d\"029e7d3d-d2ab-4f2c-bc92-ec58c94a8fc1\"}"},{"line_number":282,"context_line":"      ..."}],"source_content_type":"text/x-rst","patch_set":23,"id":"846655aa_fd9d7402","line":279,"in_reply_to":"a7943a05_8f81ffef","updated":"2021-07-09 09:52:37.000000000","message":"Not now because this is a new option introduced some days ago. I\u0027ll do it in a future, that will be easy. But for now I want to implement this feature in OVN with the config options introduced 2 years ago.","commit_id":"53e4043b3e0b0e61dba80b728ef0bc4f468970e0"},{"author":{"_account_id":6773,"name":"Lucas Alvares Gomes","email":"lucasagomes@gmail.com","username":"lucasagomes"},"change_message_id":"9970ab64eb167a8d3cb9ffca7020d0091b0cb09a","unresolved":true,"context_lines":[{"line_number":265,"context_line":"OVN chassis config"},{"line_number":266,"context_line":"~~~~~~~~~~~~~~~~~~"},{"line_number":267,"context_line":""},{"line_number":268,"context_line":"Bandwidth config values are stored in each SB chassis register, in"},{"line_number":269,"context_line":"\"external_ids:ovn-cms-options\". The configuration options are the same as in"},{"line_number":270,"context_line":"SR-IOV and OVS agents. This is how the values are registered:"},{"line_number":271,"context_line":""}],"source_content_type":"text/x-rst","patch_set":25,"id":"d92f93f5_315b35ef","line":268,"range":{"start_line":268,"start_character":35,"end_line":268,"end_character":62},"updated":"2021-07-20 14:18:30.000000000","message":"nit: local OVSDB\n\nThe ovn-controller will copy it to the Chassis table but we shouldn\u0027t set it in the Chassis entry ourselves, instead we should set it to the Open_vSwitch table from the local OVSDB.","commit_id":"df5cb28737453e2dfee17e177160fa6d7a59b7e0"},{"author":{"_account_id":6773,"name":"Lucas Alvares Gomes","email":"lucasagomes@gmail.com","username":"lucasagomes"},"change_message_id":"9970ab64eb167a8d3cb9ffca7020d0091b0cb09a","unresolved":true,"context_lines":[{"line_number":282,"context_line":"      ..."},{"line_number":283,"context_line":""},{"line_number":284,"context_line":"Each configuration option defined in \"external_ids:ovn-cms-options\" is divided"},{"line_number":285,"context_line":"by commas."},{"line_number":286,"context_line":""},{"line_number":287,"context_line":"Propagation of resource information"},{"line_number":288,"context_line":"-----------------------------------"}],"source_content_type":"text/x-rst","patch_set":25,"id":"f03a7386_1b5cf45c","line":285,"updated":"2021-07-20 14:18:30.000000000","message":"Mostly a nit but I think would be good to document setting these options apart from just listing this options, for example:\n\n$ ovs-vsctl set Open_vSwitch . external-ids:ovn-cms-options\u003d\"resource_provider_bandwidths\u003dr-ex:1001:2000;br-ex2:3000:4000,resource_provider_inventory_defaults\u003dallocation_ratio:1.0;min_unit:10,resource_provider_hypervisors\u003dbr-ex:dev20.fistro.com;br-ex2:dev20.fistro.com\"","commit_id":"df5cb28737453e2dfee17e177160fa6d7a59b7e0"}],"neutron/common/ovn/constants.py":[{"author":{"_account_id":11975,"name":"Slawek Kaplonski","email":"skaplons@redhat.com","username":"slaweq"},"change_message_id":"3c5b9a83d48733b3b4e27af30fef36fc5706af79","unresolved":true,"context_lines":[{"line_number":281,"context_line":"HA_CHASSIS_GROUP_HIGHEST_PRIORITY \u003d 32767"},{"line_number":282,"context_line":""},{"line_number":283,"context_line":"# OVN"},{"line_number":284,"context_line":""},{"line_number":285,"context_line":"# OVN igmp options"},{"line_number":286,"context_line":"MCAST_SNOOP \u003d \u0027mcast_snoop\u0027"},{"line_number":287,"context_line":"MCAST_FLOOD_UNREGISTERED \u003d \u0027mcast_flood_unregistered\u0027"}],"source_content_type":"text/x-python","patch_set":16,"id":"83e0c211_304046fb","line":284,"updated":"2021-03-29 10:02:28.000000000","message":"what is this for?","commit_id":"c7d1febdab2f2f7e07380f30394e6e65b652d240"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"5613b55126b473534b0d215677e10513785627fd","unresolved":true,"context_lines":[{"line_number":281,"context_line":"HA_CHASSIS_GROUP_HIGHEST_PRIORITY \u003d 32767"},{"line_number":282,"context_line":""},{"line_number":283,"context_line":"# OVN"},{"line_number":284,"context_line":""},{"line_number":285,"context_line":"# OVN igmp options"},{"line_number":286,"context_line":"MCAST_SNOOP \u003d \u0027mcast_snoop\u0027"},{"line_number":287,"context_line":"MCAST_FLOOD_UNREGISTERED \u003d \u0027mcast_flood_unregistered\u0027"}],"source_content_type":"text/x-python","patch_set":16,"id":"776d6ca9_2621df70","line":284,"in_reply_to":"83e0c211_304046fb","updated":"2021-03-29 15:37:55.000000000","message":"Upsss for something that was here before.","commit_id":"c7d1febdab2f2f7e07380f30394e6e65b652d240"}],"neutron/plugins/ml2/drivers/ovn/mech_driver/ovsdb/extensions/placement.py":[{"author":{"_account_id":11975,"name":"Slawek Kaplonski","email":"skaplons@redhat.com","username":"slaweq"},"change_message_id":"3c5b9a83d48733b3b4e27af30fef36fc5706af79","unresolved":true,"context_lines":[{"line_number":184,"context_line":"        LOG.debug(\u0027OVN chassis Placement initial configuration:\\n%s\u0027, msg)"},{"line_number":185,"context_line":"        return chassis"},{"line_number":186,"context_line":""},{"line_number":187,"context_line":"    def name2uuid(self, name\u003dNone):"},{"line_number":188,"context_line":"        try:"},{"line_number":189,"context_line":"            rps \u003d self.placement_plugin._placement_client.\\"},{"line_number":190,"context_line":"                list_resource_providers(name\u003dname)[\u0027resource_providers\u0027]"}],"source_content_type":"text/x-python","patch_set":16,"id":"1dabeb31_1271e4a0","line":187,"range":{"start_line":187,"start_character":24,"end_line":187,"end_character":33},"updated":"2021-03-29 10:02:28.000000000","message":"Why that parameter is needed as You never use it?","commit_id":"c7d1febdab2f2f7e07380f30394e6e65b652d240"},{"author":{"_account_id":11975,"name":"Slawek Kaplonski","email":"skaplons@redhat.com","username":"slaweq"},"change_message_id":"89e12f3848652313e121e47e4137f7adbb9a4a1f","unresolved":false,"context_lines":[{"line_number":184,"context_line":"        LOG.debug(\u0027OVN chassis Placement initial configuration:\\n%s\u0027, msg)"},{"line_number":185,"context_line":"        return chassis"},{"line_number":186,"context_line":""},{"line_number":187,"context_line":"    def name2uuid(self, name\u003dNone):"},{"line_number":188,"context_line":"        try:"},{"line_number":189,"context_line":"            rps \u003d self.placement_plugin._placement_client.\\"},{"line_number":190,"context_line":"                list_resource_providers(name\u003dname)[\u0027resource_providers\u0027]"}],"source_content_type":"text/x-python","patch_set":16,"id":"27138c8a_f94bc865","line":187,"range":{"start_line":187,"start_character":24,"end_line":187,"end_character":33},"in_reply_to":"16671854_e7ba7cb2","updated":"2021-03-30 12:51:46.000000000","message":"ok, so I missed it somehow. Thx","commit_id":"c7d1febdab2f2f7e07380f30394e6e65b652d240"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"5613b55126b473534b0d215677e10513785627fd","unresolved":true,"context_lines":[{"line_number":184,"context_line":"        LOG.debug(\u0027OVN chassis Placement initial configuration:\\n%s\u0027, msg)"},{"line_number":185,"context_line":"        return chassis"},{"line_number":186,"context_line":""},{"line_number":187,"context_line":"    def name2uuid(self, name\u003dNone):"},{"line_number":188,"context_line":"        try:"},{"line_number":189,"context_line":"            rps \u003d self.placement_plugin._placement_client.\\"},{"line_number":190,"context_line":"                list_resource_providers(name\u003dname)[\u0027resource_providers\u0027]"}],"source_content_type":"text/x-python","patch_set":16,"id":"16671854_e7ba7cb2","line":187,"range":{"start_line":187,"start_character":24,"end_line":187,"end_character":33},"in_reply_to":"1dabeb31_1271e4a0","updated":"2021-03-29 15:37:55.000000000","message":"I do use it, in L190\n\n  list_resource_providers(name\u003dname)[\u0027resource_providers\u0027]\n\n(that\u0027s why I don\u0027t like those long lines, are harder to read)","commit_id":"c7d1febdab2f2f7e07380f30394e6e65b652d240"},{"author":{"_account_id":6773,"name":"Lucas Alvares Gomes","email":"lucasagomes@gmail.com","username":"lucasagomes"},"change_message_id":"2aef25caf5764bd6d7bcfaac5287eded31d5f2e3","unresolved":true,"context_lines":[{"line_number":36,"context_line":"        return {}"},{"line_number":37,"context_line":""},{"line_number":38,"context_line":"    try:"},{"line_number":39,"context_line":"        cms_options \u003d jsonutils.loads(cms_options)"},{"line_number":40,"context_line":"    except json.decoder.JSONDecodeError:"},{"line_number":41,"context_line":"        return {}"},{"line_number":42,"context_line":""}],"source_content_type":"text/x-python","patch_set":17,"id":"155aee57_ae3a0f75","line":39,"range":{"start_line":39,"start_character":0,"end_line":39,"end_character":50},"updated":"2021-04-23 10:52:54.000000000","message":"I am not sure we ever will load it like this ?\n\nThe ovn-cms-option value is a string with options separated by a comma, for example:\n\n\"enable-chassis-as-gw,availability-zones\u003daz-0:az-1:az-2\"\n\nI think the only time this line will not raise an JSONDecodeError is when the \"ovn-cms-option\" is empty.\n\nFor reference, this is how we currently parse the values for the \"ovn-cms-option\";  https://github.com/openstack/neutron/blob/c0e917505ee54b735dbccaf6a79293d0e5476c16/neutron/common/ovn/utils.py#L483-L486","commit_id":"575ad589dfb7167fe32e445560969e28409f06f0"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"e84bebaa104f5f9cd5807e5f4233e4f9def76820","unresolved":true,"context_lines":[{"line_number":36,"context_line":"        return {}"},{"line_number":37,"context_line":""},{"line_number":38,"context_line":"    try:"},{"line_number":39,"context_line":"        cms_options \u003d jsonutils.loads(cms_options)"},{"line_number":40,"context_line":"    except json.decoder.JSONDecodeError:"},{"line_number":41,"context_line":"        return {}"},{"line_number":42,"context_line":""}],"source_content_type":"text/x-python","patch_set":17,"id":"cee362bc_2e8183bd","line":39,"range":{"start_line":39,"start_character":0,"end_line":39,"end_character":50},"in_reply_to":"155aee57_ae3a0f75","updated":"2021-05-17 15:57:51.000000000","message":"Done, please check new PS example to see how config parameters are stored.","commit_id":"575ad589dfb7167fe32e445560969e28409f06f0"},{"author":{"_account_id":6773,"name":"Lucas Alvares Gomes","email":"lucasagomes@gmail.com","username":"lucasagomes"},"change_message_id":"2aef25caf5764bd6d7bcfaac5287eded31d5f2e3","unresolved":true,"context_lines":[{"line_number":199,"context_line":"        cms_options \u003d chassis.external_ids.get(ovn_const.OVN_CMS_OPTIONS)"},{"line_number":200,"context_line":"        LOG.debug(\u0027Parsing chassis %(chassis)s with ovn-cms-options \u0027"},{"line_number":201,"context_line":"                  \u0027%(cms_options)s\u0027, {\u0027chassis\u0027: chassis.name,"},{"line_number":202,"context_line":"                                      \u0027cms_options\u0027: cms_options})"},{"line_number":203,"context_line":"        cms_options \u003d _parse_ovn_cms_options(cms_options)"},{"line_number":204,"context_line":"        hypervisor_rps \u003d {}"},{"line_number":205,"context_line":"        try:"}],"source_content_type":"text/x-python","patch_set":17,"id":"afef0270_fb8fa468","line":202,"updated":"2021-04-23 10:52:54.000000000","message":"nit: Perhaps this debug message should say \"Building placement stat for chassis ...\" because \"Parsing ...\" feels out of place (unless it was logged inside the _parse_ovn_cms_options() method itself)","commit_id":"575ad589dfb7167fe32e445560969e28409f06f0"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"e84bebaa104f5f9cd5807e5f4233e4f9def76820","unresolved":true,"context_lines":[{"line_number":199,"context_line":"        cms_options \u003d chassis.external_ids.get(ovn_const.OVN_CMS_OPTIONS)"},{"line_number":200,"context_line":"        LOG.debug(\u0027Parsing chassis %(chassis)s with ovn-cms-options \u0027"},{"line_number":201,"context_line":"                  \u0027%(cms_options)s\u0027, {\u0027chassis\u0027: chassis.name,"},{"line_number":202,"context_line":"                                      \u0027cms_options\u0027: cms_options})"},{"line_number":203,"context_line":"        cms_options \u003d _parse_ovn_cms_options(cms_options)"},{"line_number":204,"context_line":"        hypervisor_rps \u003d {}"},{"line_number":205,"context_line":"        try:"}],"source_content_type":"text/x-python","patch_set":17,"id":"1eaf700b_0e9de44c","line":202,"in_reply_to":"afef0270_fb8fa468","updated":"2021-05-17 15:57:51.000000000","message":"Much better, I\u0027ll change it.","commit_id":"575ad589dfb7167fe32e445560969e28409f06f0"},{"author":{"_account_id":6773,"name":"Lucas Alvares Gomes","email":"lucasagomes@gmail.com","username":"lucasagomes"},"change_message_id":"2aef25caf5764bd6d7bcfaac5287eded31d5f2e3","unresolved":true,"context_lines":[{"line_number":218,"context_line":"            rp_inventory_defaults\u003dcms_options["},{"line_number":219,"context_line":"                ovn_const.RP_INVENTORY_DEFAULTS],"},{"line_number":220,"context_line":"            driver_uuid_namespace\u003dself.uuid_ns,"},{"line_number":221,"context_line":"            agent_type\u003d\u0027OVN chassis\u0027,"},{"line_number":222,"context_line":"            hypervisor_rps\u003dhypervisor_rps,"},{"line_number":223,"context_line":"            device_mappings\u003dbridge_mappings,"},{"line_number":224,"context_line":"            supported_vnic_types\u003dself.supported_vnic_types,"}],"source_content_type":"text/x-python","patch_set":17,"id":"e35e1711_3a734a66","line":221,"range":{"start_line":221,"start_character":12,"end_line":221,"end_character":37},"updated":"2021-04-23 10:52:54.000000000","message":"Would it be better to re-use the same type we use for the agent API here ?\n\nhttps://github.com/openstack/neutron/blob/c0e917505ee54b735dbccaf6a79293d0e5476c16/neutron/common/ovn/constants.py#L67","commit_id":"575ad589dfb7167fe32e445560969e28409f06f0"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"e84bebaa104f5f9cd5807e5f4233e4f9def76820","unresolved":true,"context_lines":[{"line_number":218,"context_line":"            rp_inventory_defaults\u003dcms_options["},{"line_number":219,"context_line":"                ovn_const.RP_INVENTORY_DEFAULTS],"},{"line_number":220,"context_line":"            driver_uuid_namespace\u003dself.uuid_ns,"},{"line_number":221,"context_line":"            agent_type\u003d\u0027OVN chassis\u0027,"},{"line_number":222,"context_line":"            hypervisor_rps\u003dhypervisor_rps,"},{"line_number":223,"context_line":"            device_mappings\u003dbridge_mappings,"},{"line_number":224,"context_line":"            supported_vnic_types\u003dself.supported_vnic_types,"}],"source_content_type":"text/x-python","patch_set":17,"id":"dd0118c5_7b11e03c","line":221,"range":{"start_line":221,"start_character":12,"end_line":221,"end_character":37},"in_reply_to":"e35e1711_3a734a66","updated":"2021-05-17 15:57:51.000000000","message":"Right, \"OVN controller\" is a host with a Chassis. OVN controller !\u003d Neutron controller","commit_id":"575ad589dfb7167fe32e445560969e28409f06f0"},{"author":{"_account_id":6773,"name":"Lucas Alvares Gomes","email":"lucasagomes@gmail.com","username":"lucasagomes"},"change_message_id":"9970ab64eb167a8d3cb9ffca7020d0091b0cb09a","unresolved":true,"context_lines":[{"line_number":38,"context_line":"            ovn_const.RP_HYPERVISORS: _parse_hypervisors(cms_options)}"},{"line_number":39,"context_line":""},{"line_number":40,"context_line":""},{"line_number":41,"context_line":"def _parse_bridge_mappings(chassis):"},{"line_number":42,"context_line":"    bridge_mappings \u003d chassis.external_ids.get(\u0027ovn-bridge-mappings\u0027, \u0027\u0027)"},{"line_number":43,"context_line":"    bridge_mappings \u003d helpers.parse_mappings(bridge_mappings.split(\u0027,\u0027),"},{"line_number":44,"context_line":"                                             unique_values\u003dFalse)"},{"line_number":45,"context_line":"    return {k: [v] for k, v in bridge_mappings.items()}"},{"line_number":46,"context_line":""},{"line_number":47,"context_line":""},{"line_number":48,"context_line":"def _parse_bandwidths(cms_options):"}],"source_content_type":"text/x-python","patch_set":25,"id":"12ba6060_c41f0cd2","line":45,"range":{"start_line":41,"start_character":0,"end_line":45,"end_character":55},"updated":"2021-07-20 14:18:30.000000000","message":"nit: I think we could add this to the ovn_utils.py module. I see similar code at:  https://github.com/openstack/neutron/blob/b08310df9f9061cfdcbc1d4428739db6de3e0e7f/neutron/plugins/ml2/drivers/ovn/mech_driver/ovsdb/impl_idl_ovn.py#L837-L841\n\nPerhaps this could be used in both places (perhaps in a follow up patch)","commit_id":"df5cb28737453e2dfee17e177160fa6d7a59b7e0"}],"neutron/tests/functional/plugins/ml2/drivers/ovn/mech_driver/ovsdb/extensions/test_placement.py":[{"author":{"_account_id":11975,"name":"Slawek Kaplonski","email":"skaplons@redhat.com","username":"slaweq"},"change_message_id":"3c5b9a83d48733b3b4e27af30fef36fc5706af79","unresolved":true,"context_lines":[{"line_number":102,"context_line":"        def check_chassis():"},{"line_number":103,"context_line":"            nonlocal current_chassis"},{"line_number":104,"context_line":"            current_chassis \u003d self.placement_ext.chassis"},{"line_number":105,"context_line":"            return True if current_chassis \u003d\u003d expected_chassis else False"},{"line_number":106,"context_line":""},{"line_number":107,"context_line":"        try:"},{"line_number":108,"context_line":"            common_utils.wait_until_true(check_chassis, timeout\u003d5)"}],"source_content_type":"text/x-python","patch_set":16,"id":"9a0290cf_f09e560e","line":105,"updated":"2021-03-29 10:02:28.000000000","message":"can be simply:\n\n    return current_chassis \u003d\u003d expected_chassis\n\n:)","commit_id":"c7d1febdab2f2f7e07380f30394e6e65b652d240"},{"author":{"_account_id":11975,"name":"Slawek Kaplonski","email":"skaplons@redhat.com","username":"slaweq"},"change_message_id":"89e12f3848652313e121e47e4137f7adbb9a4a1f","unresolved":false,"context_lines":[{"line_number":102,"context_line":"        def check_chassis():"},{"line_number":103,"context_line":"            nonlocal current_chassis"},{"line_number":104,"context_line":"            current_chassis \u003d self.placement_ext.chassis"},{"line_number":105,"context_line":"            return True if current_chassis \u003d\u003d expected_chassis else False"},{"line_number":106,"context_line":""},{"line_number":107,"context_line":"        try:"},{"line_number":108,"context_line":"            common_utils.wait_until_true(check_chassis, timeout\u003d5)"}],"source_content_type":"text/x-python","patch_set":16,"id":"c35ae02c_ada9640a","line":105,"in_reply_to":"19599eb6_ca4353b1","updated":"2021-03-30 12:51:46.000000000","message":":)","commit_id":"c7d1febdab2f2f7e07380f30394e6e65b652d240"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"5613b55126b473534b0d215677e10513785627fd","unresolved":true,"context_lines":[{"line_number":102,"context_line":"        def check_chassis():"},{"line_number":103,"context_line":"            nonlocal current_chassis"},{"line_number":104,"context_line":"            current_chassis \u003d self.placement_ext.chassis"},{"line_number":105,"context_line":"            return True if current_chassis \u003d\u003d expected_chassis else False"},{"line_number":106,"context_line":""},{"line_number":107,"context_line":"        try:"},{"line_number":108,"context_line":"            common_utils.wait_until_true(check_chassis, timeout\u003d5)"}],"source_content_type":"text/x-python","patch_set":16,"id":"19599eb6_ca4353b1","line":105,"in_reply_to":"9a0290cf_f09e560e","updated":"2021-03-29 15:37:55.000000000","message":"heheheh I always forget this","commit_id":"c7d1febdab2f2f7e07380f30394e6e65b652d240"}]}
