)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":17270,"name":"Sergii Turivnyi","email":"sturivnyi@mirantis.com","username":"sturivnyi"},"change_message_id":"cb724d73b40b1284360c60270fecbccd13367b54","unresolved":false,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Functional tests for portgroups in ironicclient"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Add tests for the following commands:"},{"line_number":10,"context_line":"portgroup-create,"},{"line_number":11,"context_line":"portgroup-delete,"},{"line_number":12,"context_line":"portgroup-list,"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":10,"id":"7aa08908_da3dcfde","line":9,"range":{"start_line":9,"start_character":0,"end_line":9,"end_character":37},"updated":"2016-06-10 14:42:10.000000000","message":"I found only create, show, update, delete methods. Where is list?","commit_id":"b98107864e6bb81e74edb776732d4fcdf3707779"},{"author":{"_account_id":14614,"name":"Kyrylo Romanenko","display_name":"K.Romanenko","email":"romanenko-kv@hotmail.com","username":"kromanenko"},"change_message_id":"2bf2efae6c3eb7431c414087becf9e1ead076134","unresolved":false,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Functional tests for portgroups in ironicclient"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Add tests for the following commands:"},{"line_number":10,"context_line":"portgroup-create,"},{"line_number":11,"context_line":"portgroup-delete,"},{"line_number":12,"context_line":"portgroup-list,"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":10,"id":"7aa08908_d541e064","line":9,"range":{"start_line":9,"start_character":0,"end_line":9,"end_character":37},"in_reply_to":"7aa08908_da3dcfde","updated":"2016-06-13 11:19:35.000000000","message":"Done","commit_id":"b98107864e6bb81e74edb776732d4fcdf3707779"},{"author":{"_account_id":22724,"name":"Galyna Zholtkevych","email":"galynazholtkevych1991@gmail.com","username":"gzholtkevych"},"change_message_id":"1a0bbea6b57b699533237693ef13de25d272cc78","unresolved":false,"context_lines":[{"line_number":14,"context_line":"portgroup-update,"},{"line_number":15,"context_line":"portgroup-port-list."},{"line_number":16,"context_line":""},{"line_number":17,"context_line":"Portgroup CLI works from baremetal API microversion 1.25."},{"line_number":18,"context_line":""},{"line_number":19,"context_line":"Closes-Bug: #1562035"},{"line_number":20,"context_line":"Change-Id: If629ba39d07c1a999d60c70b343619179bb3447e"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":31,"id":"da4df55a_b47b3c27","line":17,"range":{"start_line":17,"start_character":20,"end_line":17,"end_character":24},"updated":"2016-12-28 09:29:26.000000000","message":"nit: s/from/since","commit_id":"9fe923108a572dc7938789d71d6d740cc5b586f9"},{"author":{"_account_id":12356,"name":"Vladyslav Drok","email":"vdrok@mirantis.com","username":"vdrok"},"change_message_id":"72746e1a220551f3c68212bae46e1ede1b6628db","unresolved":false,"context_lines":[{"line_number":14,"context_line":"portgroup-update,"},{"line_number":15,"context_line":"portgroup-port-list."},{"line_number":16,"context_line":""},{"line_number":17,"context_line":"Portgroup CLI works from baremetal API microversion 1.25."},{"line_number":18,"context_line":""},{"line_number":19,"context_line":"Closes-Bug: #1562035"},{"line_number":20,"context_line":"Change-Id: If629ba39d07c1a999d60c70b343619179bb3447e"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":31,"id":"da4df55a_71d486bc","line":17,"range":{"start_line":17,"start_character":10,"end_line":17,"end_character":13},"updated":"2016-12-28 09:13:09.000000000","message":"s/CLI/API","commit_id":"9fe923108a572dc7938789d71d6d740cc5b586f9"},{"author":{"_account_id":14614,"name":"Kyrylo Romanenko","display_name":"K.Romanenko","email":"romanenko-kv@hotmail.com","username":"kromanenko"},"change_message_id":"007363433f5991eebea9cb766c877a3d50e84085","unresolved":false,"context_lines":[{"line_number":14,"context_line":"portgroup-update,"},{"line_number":15,"context_line":"portgroup-port-list."},{"line_number":16,"context_line":""},{"line_number":17,"context_line":"Portgroup CLI works from baremetal API microversion 1.25."},{"line_number":18,"context_line":""},{"line_number":19,"context_line":"Closes-Bug: #1562035"},{"line_number":20,"context_line":"Change-Id: If629ba39d07c1a999d60c70b343619179bb3447e"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":31,"id":"7a3c09a3_3f880cc5","line":17,"range":{"start_line":17,"start_character":20,"end_line":17,"end_character":24},"in_reply_to":"7a3c09a3_3e1aee7d","updated":"2017-01-17 14:29:42.000000000","message":"Thanks for hint!","commit_id":"9fe923108a572dc7938789d71d6d740cc5b586f9"},{"author":{"_account_id":14614,"name":"Kyrylo Romanenko","display_name":"K.Romanenko","email":"romanenko-kv@hotmail.com","username":"kromanenko"},"change_message_id":"007363433f5991eebea9cb766c877a3d50e84085","unresolved":false,"context_lines":[{"line_number":14,"context_line":"portgroup-update,"},{"line_number":15,"context_line":"portgroup-port-list."},{"line_number":16,"context_line":""},{"line_number":17,"context_line":"Portgroup CLI works from baremetal API microversion 1.25."},{"line_number":18,"context_line":""},{"line_number":19,"context_line":"Closes-Bug: #1562035"},{"line_number":20,"context_line":"Change-Id: If629ba39d07c1a999d60c70b343619179bb3447e"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":31,"id":"7a3c09a3_1f043048","line":17,"range":{"start_line":17,"start_character":10,"end_line":17,"end_character":13},"in_reply_to":"da4df55a_71d486bc","updated":"2017-01-17 14:29:42.000000000","message":"Done","commit_id":"9fe923108a572dc7938789d71d6d740cc5b586f9"},{"author":{"_account_id":14614,"name":"Kyrylo Romanenko","display_name":"K.Romanenko","email":"romanenko-kv@hotmail.com","username":"kromanenko"},"change_message_id":"007363433f5991eebea9cb766c877a3d50e84085","unresolved":false,"context_lines":[{"line_number":14,"context_line":"portgroup-update,"},{"line_number":15,"context_line":"portgroup-port-list."},{"line_number":16,"context_line":""},{"line_number":17,"context_line":"Portgroup CLI works from baremetal API microversion 1.25."},{"line_number":18,"context_line":""},{"line_number":19,"context_line":"Closes-Bug: #1562035"},{"line_number":20,"context_line":"Change-Id: If629ba39d07c1a999d60c70b343619179bb3447e"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":31,"id":"7a3c09a3_9f9660ee","line":17,"range":{"start_line":17,"start_character":20,"end_line":17,"end_character":24},"in_reply_to":"da4df55a_b47b3c27","updated":"2017-01-17 14:29:42.000000000","message":"Thanks","commit_id":"9fe923108a572dc7938789d71d6d740cc5b586f9"},{"author":{"_account_id":23883,"name":"Joanna Taryma","email":"joanna.taryma@intel.com","username":"jtaryma"},"change_message_id":"7fa38ef6095324540471b5fe9ae41fe6d8e40618","unresolved":false,"context_lines":[{"line_number":14,"context_line":"portgroup-update,"},{"line_number":15,"context_line":"portgroup-port-list."},{"line_number":16,"context_line":""},{"line_number":17,"context_line":"Portgroup CLI works from baremetal API microversion 1.25."},{"line_number":18,"context_line":""},{"line_number":19,"context_line":"Closes-Bug: #1562035"},{"line_number":20,"context_line":"Change-Id: If629ba39d07c1a999d60c70b343619179bb3447e"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":31,"id":"7a3c09a3_3e1aee7d","line":17,"range":{"start_line":17,"start_character":20,"end_line":17,"end_character":24},"in_reply_to":"da4df55a_b47b3c27","updated":"2017-01-17 00:18:02.000000000","message":"or even: works with API microversion 1.25 and higher","commit_id":"9fe923108a572dc7938789d71d6d740cc5b586f9"}],"ironicclient/tests/functional/base.py":[{"author":{"_account_id":13636,"name":"aarefiev","display_name":"Anton","email":"arefyevanton@gmail.com","username":"aarefiev"},"change_message_id":"c02c75c7a9f8dbc84fb6d676139cfbc7abc52c00","unresolved":false,"context_lines":[{"line_number":315,"context_line":"        if not portgroup:"},{"line_number":316,"context_line":"            self.fail(\u0027Ironic portgroup failed to create!\u0027)"},{"line_number":317,"context_line":"        portgroup \u003d utils.get_dict_from_output(portgroup)"},{"line_number":318,"context_line":"        self.addCleanup(self.delete_node, portgroup[\u0027uuid\u0027])"},{"line_number":319,"context_line":"        return portgroup"},{"line_number":320,"context_line":""},{"line_number":321,"context_line":"    def delete_portgroup(self, portgroup_id, ignore_exceptions\u003dFalse):"}],"source_content_type":"text/x-python","patch_set":3,"id":"ba0121b8_d0864012","line":318,"range":{"start_line":318,"start_character":29,"end_line":318,"end_character":40},"updated":"2016-03-30 10:00:06.000000000","message":"you are creating port group, but will clean up node, it\u0027s seems wrong","commit_id":"1d5738b42e9c6e6a778eadc10b29b8a681101555"},{"author":{"_account_id":14614,"name":"Kyrylo Romanenko","display_name":"K.Romanenko","email":"romanenko-kv@hotmail.com","username":"kromanenko"},"change_message_id":"7a56fd848ef1848c839d9fcc9f9b5bb009209022","unresolved":false,"context_lines":[{"line_number":315,"context_line":"        if not portgroup:"},{"line_number":316,"context_line":"            self.fail(\u0027Ironic portgroup failed to create!\u0027)"},{"line_number":317,"context_line":"        portgroup \u003d utils.get_dict_from_output(portgroup)"},{"line_number":318,"context_line":"        self.addCleanup(self.delete_node, portgroup[\u0027uuid\u0027])"},{"line_number":319,"context_line":"        return portgroup"},{"line_number":320,"context_line":""},{"line_number":321,"context_line":"    def delete_portgroup(self, portgroup_id, ignore_exceptions\u003dFalse):"}],"source_content_type":"text/x-python","patch_set":3,"id":"ba0121b8_df4596b3","line":318,"range":{"start_line":318,"start_character":29,"end_line":318,"end_character":40},"in_reply_to":"ba0121b8_d0864012","updated":"2016-03-30 14:41:52.000000000","message":"Done","commit_id":"1d5738b42e9c6e6a778eadc10b29b8a681101555"},{"author":{"_account_id":5805,"name":"Chris Krelle","email":"nobodycam@gmail.com","username":"nobodycam"},"change_message_id":"6a4bf3e0327cda08b0800e4c85a3bc213091b58b","unresolved":false,"context_lines":[{"line_number":307,"context_line":"        return utils.get_dict_from_output(updated_chassis)"},{"line_number":308,"context_line":""},{"line_number":309,"context_line":"    def create_portgroup(self, node_id,"},{"line_number":310,"context_line":"                         address\u003dutils.generate_mac_address(), params\u003d\u0027\u0027):"},{"line_number":311,"context_line":"        \"\"\"Create a new portgroup.\"\"\""},{"line_number":312,"context_line":"        portgroup \u003d self.ironic(\u0027portgroup-create\u0027,"},{"line_number":313,"context_line":"                                params\u003d\u0027--address {0} --node {1} {2}\u0027"}],"source_content_type":"text/x-python","patch_set":5,"id":"dab17558_4da37a00","line":310,"range":{"start_line":310,"start_character":33,"end_line":310,"end_character":61},"updated":"2016-05-11 00:10:07.000000000","message":"this looks strange to me.","commit_id":"95ad9ec878316a6a8a5c1ac22d97553f76aea2a6"},{"author":{"_account_id":14614,"name":"Kyrylo Romanenko","display_name":"K.Romanenko","email":"romanenko-kv@hotmail.com","username":"kromanenko"},"change_message_id":"dfe4697db5a61492c94ba6cdea7853edc3ddd0f8","unresolved":false,"context_lines":[{"line_number":307,"context_line":"        return utils.get_dict_from_output(updated_chassis)"},{"line_number":308,"context_line":""},{"line_number":309,"context_line":"    def create_portgroup(self, node_id,"},{"line_number":310,"context_line":"                         address\u003dutils.generate_mac_address(), params\u003d\u0027\u0027):"},{"line_number":311,"context_line":"        \"\"\"Create a new portgroup.\"\"\""},{"line_number":312,"context_line":"        portgroup \u003d self.ironic(\u0027portgroup-create\u0027,"},{"line_number":313,"context_line":"                                params\u003d\u0027--address {0} --node {1} {2}\u0027"}],"source_content_type":"text/x-python","patch_set":5,"id":"dab17558_b8be81ab","line":310,"range":{"start_line":310,"start_character":33,"end_line":310,"end_character":61},"in_reply_to":"dab17558_4da37a00","updated":"2016-05-11 15:44:54.000000000","message":"Done","commit_id":"95ad9ec878316a6a8a5c1ac22d97553f76aea2a6"},{"author":{"_account_id":14760,"name":"John L. Villalovos","email":"openstack.org@sodarock.com","username":"jlvillal"},"change_message_id":"28b7fc46da16e88e85b65e1c04dc9d1fc2761048","unresolved":false,"context_lines":[{"line_number":307,"context_line":"        return utils.get_dict_from_output(updated_chassis)"},{"line_number":308,"context_line":""},{"line_number":309,"context_line":"    def create_portgroup(self, node_id,"},{"line_number":310,"context_line":"                         address\u003dutils.generate_mac_address(), params\u003d\u0027\u0027):"},{"line_number":311,"context_line":"        \"\"\"Create a new portgroup.\"\"\""},{"line_number":312,"context_line":"        portgroup \u003d self.ironic(\u0027portgroup-create\u0027,"},{"line_number":313,"context_line":"                                params\u003d\u0027--address {0} --node {1} {2}\u0027"}],"source_content_type":"text/x-python","patch_set":5,"id":"dab17558_8dcc426b","line":310,"range":{"start_line":310,"start_character":33,"end_line":310,"end_character":61},"in_reply_to":"dab17558_4da37a00","updated":"2016-05-11 00:13:02.000000000","message":"Good catch Chris! :)\n\nUsing a function as a default value is not a good idea:\n http://paste.openstack.org/show/496640/\n\nBasically everything gets done during instantiation. The value will not get changed for the default value during each call.\n\nUse the idiom:\n\n  foo(value\u003dNone):\n     if value is None:\n        value \u003d some_function()","commit_id":"95ad9ec878316a6a8a5c1ac22d97553f76aea2a6"},{"author":{"_account_id":14614,"name":"Kyrylo Romanenko","display_name":"K.Romanenko","email":"romanenko-kv@hotmail.com","username":"kromanenko"},"change_message_id":"dfe4697db5a61492c94ba6cdea7853edc3ddd0f8","unresolved":false,"context_lines":[{"line_number":307,"context_line":"        return utils.get_dict_from_output(updated_chassis)"},{"line_number":308,"context_line":""},{"line_number":309,"context_line":"    def create_portgroup(self, node_id,"},{"line_number":310,"context_line":"                         address\u003dutils.generate_mac_address(), params\u003d\u0027\u0027):"},{"line_number":311,"context_line":"        \"\"\"Create a new portgroup.\"\"\""},{"line_number":312,"context_line":"        portgroup \u003d self.ironic(\u0027portgroup-create\u0027,"},{"line_number":313,"context_line":"                                params\u003d\u0027--address {0} --node {1} {2}\u0027"}],"source_content_type":"text/x-python","patch_set":5,"id":"dab17558_18e06dcc","line":310,"range":{"start_line":310,"start_character":33,"end_line":310,"end_character":61},"in_reply_to":"dab17558_8dcc426b","updated":"2016-05-11 15:44:54.000000000","message":"Thank you for a useful example!","commit_id":"95ad9ec878316a6a8a5c1ac22d97553f76aea2a6"},{"author":{"_account_id":13636,"name":"aarefiev","display_name":"Anton","email":"arefyevanton@gmail.com","username":"aarefiev"},"change_message_id":"40efe424bd06671cecd5dd1e283304a3ced4588e","unresolved":false,"context_lines":[{"line_number":356,"context_line":"        if not portgroup:"},{"line_number":357,"context_line":"            self.fail(\u0027Ironic portgroup failed to create!\u0027)"},{"line_number":358,"context_line":"        portgroup \u003d utils.get_dict_from_output(portgroup)"},{"line_number":359,"context_line":"        self.addCleanup(self.delete_portgroup, portgroup[\u0027uuid\u0027])"},{"line_number":360,"context_line":"        return portgroup"},{"line_number":361,"context_line":""},{"line_number":362,"context_line":"    def delete_portgroup(self, portgroup_id, ignore_exceptions\u003dFalse):"}],"source_content_type":"text/x-python","patch_set":11,"id":"3aaa91ec_5d4d436b","line":359,"range":{"start_line":359,"start_character":47,"end_line":359,"end_character":64},"updated":"2016-06-23 08:32:58.000000000","message":"looks like  ignore_exceptions\u003dTrue should be here, otherwise it will fail on cleanup if you delete portgroup in test case","commit_id":"62d00a047b9befdad27d8beb6670183e365d0e1c"},{"author":{"_account_id":14614,"name":"Kyrylo Romanenko","display_name":"K.Romanenko","email":"romanenko-kv@hotmail.com","username":"kromanenko"},"change_message_id":"4a810f5348845f801129858a67387fbb3a30c42c","unresolved":false,"context_lines":[{"line_number":356,"context_line":"        if not portgroup:"},{"line_number":357,"context_line":"            self.fail(\u0027Ironic portgroup failed to create!\u0027)"},{"line_number":358,"context_line":"        portgroup \u003d utils.get_dict_from_output(portgroup)"},{"line_number":359,"context_line":"        self.addCleanup(self.delete_portgroup, portgroup[\u0027uuid\u0027])"},{"line_number":360,"context_line":"        return portgroup"},{"line_number":361,"context_line":""},{"line_number":362,"context_line":"    def delete_portgroup(self, portgroup_id, ignore_exceptions\u003dFalse):"}],"source_content_type":"text/x-python","patch_set":11,"id":"3aaa91ec_ba6ed82c","line":359,"range":{"start_line":359,"start_character":47,"end_line":359,"end_character":64},"in_reply_to":"3aaa91ec_5d4d436b","updated":"2016-06-23 13:35:08.000000000","message":"Done","commit_id":"62d00a047b9befdad27d8beb6670183e365d0e1c"},{"author":{"_account_id":13719,"name":"Naohiro Tamura","email":"naohirot.openstack@gmail.com","username":"nao"},"change_message_id":"53e6c343e9e16b01ebe600ae758c15233f0ad157","unresolved":false,"context_lines":[{"line_number":365,"context_line":"            self.ironic(\u0027portgroup-delete\u0027, params\u003dportgroup_id)"},{"line_number":366,"context_line":"        except exceptions.CommandFailed:"},{"line_number":367,"context_line":"            if not ignore_exceptions:"},{"line_number":368,"context_line":"                raise"},{"line_number":369,"context_line":""},{"line_number":370,"context_line":"    def list_portgroups(self, params\u003d\u0027\u0027):"},{"line_number":371,"context_line":"        \"\"\"List the portgroups.\"\"\""}],"source_content_type":"text/x-python","patch_set":11,"id":"7aa08908_a20746c8","line":368,"range":{"start_line":368,"start_character":16,"end_line":368,"end_character":21},"updated":"2016-06-15 08:37:20.000000000","message":"Wouldn\u0027t we need an abnormal test case?","commit_id":"62d00a047b9befdad27d8beb6670183e365d0e1c"},{"author":{"_account_id":13719,"name":"Naohiro Tamura","email":"naohirot.openstack@gmail.com","username":"nao"},"change_message_id":"1b22723de9cde823e3a763cf4ffa0106feecb8d9","unresolved":false,"context_lines":[{"line_number":365,"context_line":"            self.ironic(\u0027portgroup-delete\u0027, params\u003dportgroup_id)"},{"line_number":366,"context_line":"        except exceptions.CommandFailed:"},{"line_number":367,"context_line":"            if not ignore_exceptions:"},{"line_number":368,"context_line":"                raise"},{"line_number":369,"context_line":""},{"line_number":370,"context_line":"    def list_portgroups(self, params\u003d\u0027\u0027):"},{"line_number":371,"context_line":"        \"\"\"List the portgroups.\"\"\""}],"source_content_type":"text/x-python","patch_set":11,"id":"3aaa91ec_d7b112e3","line":368,"range":{"start_line":368,"start_character":16,"end_line":368,"end_character":21},"in_reply_to":"3aaa91ec_a8b6ddd9","updated":"2016-06-23 07:14:09.000000000","message":"Okay","commit_id":"62d00a047b9befdad27d8beb6670183e365d0e1c"},{"author":{"_account_id":14614,"name":"Kyrylo Romanenko","display_name":"K.Romanenko","email":"romanenko-kv@hotmail.com","username":"kromanenko"},"change_message_id":"c9942c650d30ab679817b49ffdb87526a33610b1","unresolved":false,"context_lines":[{"line_number":365,"context_line":"            self.ironic(\u0027portgroup-delete\u0027, params\u003dportgroup_id)"},{"line_number":366,"context_line":"        except exceptions.CommandFailed:"},{"line_number":367,"context_line":"            if not ignore_exceptions:"},{"line_number":368,"context_line":"                raise"},{"line_number":369,"context_line":""},{"line_number":370,"context_line":"    def list_portgroups(self, params\u003d\u0027\u0027):"},{"line_number":371,"context_line":"        \"\"\"List the portgroups.\"\"\""}],"source_content_type":"text/x-python","patch_set":11,"id":"3aaa91ec_a8b6ddd9","line":368,"range":{"start_line":368,"start_character":16,"end_line":368,"end_character":21},"in_reply_to":"7aa08908_a20746c8","updated":"2016-06-22 11:02:49.000000000","message":"Naohiro, i`m going to write negative tests in separate patch by the same way as for Ports and Chassis done.","commit_id":"62d00a047b9befdad27d8beb6670183e365d0e1c"},{"author":{"_account_id":18893,"name":"Miles Gould","email":"mgould@redhat.com","username":"pozorvlak"},"change_message_id":"e37da3cd8c22957d11f9aae5f07a779fc07e12c8","unresolved":false,"context_lines":[{"line_number":368,"context_line":"                                params\u003d\u0027--address {0} --node {1} {2}\u0027"},{"line_number":369,"context_line":"                                .format(address, node_id, params))"},{"line_number":370,"context_line":"        if not portgroup:"},{"line_number":371,"context_line":"            self.fail(\u0027Ironic portgroup failed to create!\u0027)"},{"line_number":372,"context_line":"        portgroup \u003d utils.get_dict_from_output(portgroup)"},{"line_number":373,"context_line":"        self.addCleanup(self.delete_portgroup, portgroup[\u0027uuid\u0027], True)"},{"line_number":374,"context_line":"        return portgroup"}],"source_content_type":"text/x-python","patch_set":18,"id":"5a8bc5a2_a325550b","line":371,"updated":"2016-09-28 17:13:27.000000000","message":"Nit: \"Failed to create ironic portgroup\"","commit_id":"64843abb6c5b8ce20894fcf118366a9634d3e14e"},{"author":{"_account_id":18893,"name":"Miles Gould","email":"mgould@redhat.com","username":"pozorvlak"},"change_message_id":"e37da3cd8c22957d11f9aae5f07a779fc07e12c8","unresolved":false,"context_lines":[{"line_number":380,"context_line":"                        flags\u003d\u0027 --ironic-api-version 1.24\u0027,"},{"line_number":381,"context_line":"                        params\u003dportgroup_id)"},{"line_number":382,"context_line":"        except exceptions.CommandFailed:"},{"line_number":383,"context_line":"            if not ignore_exceptions:"},{"line_number":384,"context_line":"                raise"},{"line_number":385,"context_line":""},{"line_number":386,"context_line":"    def list_portgroups(self, params\u003d\u0027\u0027):"}],"source_content_type":"text/x-python","patch_set":18,"id":"5a8bc5a2_23bb0577","line":383,"updated":"2016-09-28 17:13:27.000000000","message":"This parameter appears never to be used.","commit_id":"64843abb6c5b8ce20894fcf118366a9634d3e14e"},{"author":{"_account_id":13719,"name":"Naohiro Tamura","email":"naohirot.openstack@gmail.com","username":"nao"},"change_message_id":"5ceb64b24d3921df2591e1d2e3ab4acb913056b5","unresolved":false,"context_lines":[{"line_number":386,"context_line":"            address \u003d data_utils.rand_mac_address()"},{"line_number":387,"context_line":""},{"line_number":388,"context_line":"        portgroup \u003d self.ironic(\u0027portgroup-create\u0027,"},{"line_number":389,"context_line":"                                flags\u003d\u0027 --ironic-api-version 1.25\u0027,"},{"line_number":390,"context_line":"                                params\u003d\u0027--address {0} --node {1} {2}\u0027"},{"line_number":391,"context_line":"                                .format(address, node_id, params))"},{"line_number":392,"context_line":"        if not portgroup:"}],"source_content_type":"text/x-python","patch_set":29,"id":"da4df55a_62545654","line":389,"range":{"start_line":389,"start_character":38,"end_line":389,"end_character":66},"updated":"2016-12-22 05:41:41.000000000","message":"nit: It would be better to define a constant to save chore for rebase since \"1.25\" appears many places:-)\n\nex:\n\n_PORT_GROUP_API_VER\u003d\u0027 --ironic-api-version 1.25\u0027","commit_id":"ff850d1936e8fde1c0e0975a33af82545199d805"},{"author":{"_account_id":14614,"name":"Kyrylo Romanenko","display_name":"K.Romanenko","email":"romanenko-kv@hotmail.com","username":"kromanenko"},"change_message_id":"469cb018969fb6d562790425071321b0889a108b","unresolved":false,"context_lines":[{"line_number":386,"context_line":"            address \u003d data_utils.rand_mac_address()"},{"line_number":387,"context_line":""},{"line_number":388,"context_line":"        portgroup \u003d self.ironic(\u0027portgroup-create\u0027,"},{"line_number":389,"context_line":"                                flags\u003d\u0027 --ironic-api-version 1.25\u0027,"},{"line_number":390,"context_line":"                                params\u003d\u0027--address {0} --node {1} {2}\u0027"},{"line_number":391,"context_line":"                                .format(address, node_id, params))"},{"line_number":392,"context_line":"        if not portgroup:"}],"source_content_type":"text/x-python","patch_set":29,"id":"da4df55a_c0c79f43","line":389,"range":{"start_line":389,"start_character":38,"end_line":389,"end_character":66},"in_reply_to":"da4df55a_62545654","updated":"2016-12-22 16:30:51.000000000","message":"Done","commit_id":"ff850d1936e8fde1c0e0975a33af82545199d805"},{"author":{"_account_id":14525,"name":"Vasyl Saienko","email":"vsaienko@mirantis.com","username":"vsaienko"},"change_message_id":"f008ad72b176a46c18a37e89c837d8f82ff83d48","unresolved":false,"context_lines":[{"line_number":383,"context_line":"    def create_portgroup(self, node_id, address\u003dNone, flags\u003d\u0027\u0027, params\u003d\u0027\u0027):"},{"line_number":384,"context_line":"        \"\"\"Create a new portgroup.\"\"\""},{"line_number":385,"context_line":"        if address is None:"},{"line_number":386,"context_line":"            address \u003d data_utils.rand_mac_address()"},{"line_number":387,"context_line":""},{"line_number":388,"context_line":"        portgroup \u003d self.ironic(\u0027portgroup-create\u0027,"},{"line_number":389,"context_line":"                                flags\u003dflags,"}],"source_content_type":"text/x-python","patch_set":30,"id":"da4df55a_cab20294","line":386,"updated":"2016-12-26 15:37:33.000000000","message":"mac address is optional for portgroup no need to generate a random value.","commit_id":"1cd5d6df74c2f081d5da886ca058fce5cbae274a"},{"author":{"_account_id":14614,"name":"Kyrylo Romanenko","display_name":"K.Romanenko","email":"romanenko-kv@hotmail.com","username":"kromanenko"},"change_message_id":"97dc375b620631bd8226b35e78d9e19ac75b980f","unresolved":false,"context_lines":[{"line_number":383,"context_line":"    def create_portgroup(self, node_id, address\u003dNone, flags\u003d\u0027\u0027, params\u003d\u0027\u0027):"},{"line_number":384,"context_line":"        \"\"\"Create a new portgroup.\"\"\""},{"line_number":385,"context_line":"        if address is None:"},{"line_number":386,"context_line":"            address \u003d data_utils.rand_mac_address()"},{"line_number":387,"context_line":""},{"line_number":388,"context_line":"        portgroup \u003d self.ironic(\u0027portgroup-create\u0027,"},{"line_number":389,"context_line":"                                flags\u003dflags,"}],"source_content_type":"text/x-python","patch_set":30,"id":"da4df55a_227721d4","line":386,"in_reply_to":"da4df55a_c26c95d2","updated":"2016-12-27 13:59:32.000000000","message":"Ok, let\u0027s use less optional args in this basic tests set.","commit_id":"1cd5d6df74c2f081d5da886ca058fce5cbae274a"},{"author":{"_account_id":14614,"name":"Kyrylo Romanenko","display_name":"K.Romanenko","email":"romanenko-kv@hotmail.com","username":"kromanenko"},"change_message_id":"4270681005b12f0318e1bd88a61ca40712b57658","unresolved":false,"context_lines":[{"line_number":383,"context_line":"    def create_portgroup(self, node_id, address\u003dNone, flags\u003d\u0027\u0027, params\u003d\u0027\u0027):"},{"line_number":384,"context_line":"        \"\"\"Create a new portgroup.\"\"\""},{"line_number":385,"context_line":"        if address is None:"},{"line_number":386,"context_line":"            address \u003d data_utils.rand_mac_address()"},{"line_number":387,"context_line":""},{"line_number":388,"context_line":"        portgroup \u003d self.ironic(\u0027portgroup-create\u0027,"},{"line_number":389,"context_line":"                                flags\u003dflags,"}],"source_content_type":"text/x-python","patch_set":30,"id":"da4df55a_e747eb74","line":386,"in_reply_to":"da4df55a_cab20294","updated":"2016-12-27 13:17:41.000000000","message":"Should i use some hard-coded value or write basic tests without --address argument?","commit_id":"1cd5d6df74c2f081d5da886ca058fce5cbae274a"},{"author":{"_account_id":14525,"name":"Vasyl Saienko","email":"vsaienko@mirantis.com","username":"vsaienko"},"change_message_id":"385edb95c6d0668770c1fb0791c39b8bc722c344","unresolved":false,"context_lines":[{"line_number":383,"context_line":"    def create_portgroup(self, node_id, address\u003dNone, flags\u003d\u0027\u0027, params\u003d\u0027\u0027):"},{"line_number":384,"context_line":"        \"\"\"Create a new portgroup.\"\"\""},{"line_number":385,"context_line":"        if address is None:"},{"line_number":386,"context_line":"            address \u003d data_utils.rand_mac_address()"},{"line_number":387,"context_line":""},{"line_number":388,"context_line":"        portgroup \u003d self.ironic(\u0027portgroup-create\u0027,"},{"line_number":389,"context_line":"                                flags\u003dflags,"}],"source_content_type":"text/x-python","patch_set":30,"id":"da4df55a_c26c95d2","line":386,"in_reply_to":"da4df55a_e747eb74","updated":"2016-12-27 13:20:36.000000000","message":"I think we should have two tests, create portgroup with address and without address.","commit_id":"1cd5d6df74c2f081d5da886ca058fce5cbae274a"}],"ironicclient/tests/functional/test_portgroup.py":[{"author":{"_account_id":17270,"name":"Sergii Turivnyi","email":"sturivnyi@mirantis.com","username":"sturivnyi"},"change_message_id":"9406587d07bfdeaff110a59187036fb20404f0a2","unresolved":false,"context_lines":[{"line_number":41,"context_line":""},{"line_number":42,"context_line":"        1) Create node in setUp()."},{"line_number":43,"context_line":"        2) Create portgroup in setUp()."},{"line_number":44,"context_line":"        3) Check that portgroup has been successfully created."},{"line_number":45,"context_line":"        4) Delete portgroup."},{"line_number":46,"context_line":"        5) Check that portgroup has been successfully deleted."},{"line_number":47,"context_line":"        \"\"\""}],"source_content_type":"text/x-python","patch_set":10,"id":"7aa08908_9ac98728","line":44,"range":{"start_line":44,"start_character":11,"end_line":44,"end_character":62},"updated":"2016-06-10 14:40:30.000000000","message":"I\u0027m not sure that this step should be in test","commit_id":"b98107864e6bb81e74edb776732d4fcdf3707779"},{"author":{"_account_id":14614,"name":"Kyrylo Romanenko","display_name":"K.Romanenko","email":"romanenko-kv@hotmail.com","username":"kromanenko"},"change_message_id":"2bf2efae6c3eb7431c414087becf9e1ead076134","unresolved":false,"context_lines":[{"line_number":41,"context_line":""},{"line_number":42,"context_line":"        1) Create node in setUp()."},{"line_number":43,"context_line":"        2) Create portgroup in setUp()."},{"line_number":44,"context_line":"        3) Check that portgroup has been successfully created."},{"line_number":45,"context_line":"        4) Delete portgroup."},{"line_number":46,"context_line":"        5) Check that portgroup has been successfully deleted."},{"line_number":47,"context_line":"        \"\"\""}],"source_content_type":"text/x-python","patch_set":10,"id":"7aa08908_7550ec32","line":44,"range":{"start_line":44,"start_character":11,"end_line":44,"end_character":62},"in_reply_to":"7aa08908_9ac98728","updated":"2016-06-13 11:19:35.000000000","message":"Done","commit_id":"b98107864e6bb81e74edb776732d4fcdf3707779"},{"author":{"_account_id":13719,"name":"Naohiro Tamura","email":"naohirot.openstack@gmail.com","username":"nao"},"change_message_id":"53e6c343e9e16b01ebe600ae758c15233f0ad157","unresolved":false,"context_lines":[{"line_number":35,"context_line":"        portgroup_list_uuid \u003d self.get_portgroup_uuids_from_portgroup_list()"},{"line_number":36,"context_line":"        self.assertIn(self.portgroup[\u0027uuid\u0027], portgroup_list_uuid)"},{"line_number":37,"context_line":""},{"line_number":38,"context_line":"    def test_portgroup_delete(self):"},{"line_number":39,"context_line":"        \"\"\"Test steps:"},{"line_number":40,"context_line":""},{"line_number":41,"context_line":"        1) Create node and portgroup in setUp()."}],"source_content_type":"text/x-python","patch_set":11,"id":"7aa08908_629a7e70","line":38,"range":{"start_line":38,"start_character":4,"end_line":38,"end_character":36},"updated":"2016-06-15 08:37:20.000000000","message":"Wouldn\u0027t we need an abnormal test case for deleting non existing port group?","commit_id":"62d00a047b9befdad27d8beb6670183e365d0e1c"},{"author":{"_account_id":13719,"name":"Naohiro Tamura","email":"naohirot.openstack@gmail.com","username":"nao"},"change_message_id":"1b22723de9cde823e3a763cf4ffa0106feecb8d9","unresolved":false,"context_lines":[{"line_number":35,"context_line":"        portgroup_list_uuid \u003d self.get_portgroup_uuids_from_portgroup_list()"},{"line_number":36,"context_line":"        self.assertIn(self.portgroup[\u0027uuid\u0027], portgroup_list_uuid)"},{"line_number":37,"context_line":""},{"line_number":38,"context_line":"    def test_portgroup_delete(self):"},{"line_number":39,"context_line":"        \"\"\"Test steps:"},{"line_number":40,"context_line":""},{"line_number":41,"context_line":"        1) Create node and portgroup in setUp()."}],"source_content_type":"text/x-python","patch_set":11,"id":"3aaa91ec_17a55aa1","line":38,"range":{"start_line":38,"start_character":4,"end_line":38,"end_character":36},"in_reply_to":"3aaa91ec_08f6118f","updated":"2016-06-23 07:14:09.000000000","message":"Okay.","commit_id":"62d00a047b9befdad27d8beb6670183e365d0e1c"},{"author":{"_account_id":14614,"name":"Kyrylo Romanenko","display_name":"K.Romanenko","email":"romanenko-kv@hotmail.com","username":"kromanenko"},"change_message_id":"c9942c650d30ab679817b49ffdb87526a33610b1","unresolved":false,"context_lines":[{"line_number":35,"context_line":"        portgroup_list_uuid \u003d self.get_portgroup_uuids_from_portgroup_list()"},{"line_number":36,"context_line":"        self.assertIn(self.portgroup[\u0027uuid\u0027], portgroup_list_uuid)"},{"line_number":37,"context_line":""},{"line_number":38,"context_line":"    def test_portgroup_delete(self):"},{"line_number":39,"context_line":"        \"\"\"Test steps:"},{"line_number":40,"context_line":""},{"line_number":41,"context_line":"        1) Create node and portgroup in setUp()."}],"source_content_type":"text/x-python","patch_set":11,"id":"3aaa91ec_08f6118f","line":38,"range":{"start_line":38,"start_character":4,"end_line":38,"end_character":36},"in_reply_to":"7aa08908_629a7e70","updated":"2016-06-22 11:02:49.000000000","message":"You are right, i will write another patch for negative tests. This patch contains only basic sanity tests.","commit_id":"62d00a047b9befdad27d8beb6670183e365d0e1c"},{"author":{"_account_id":13636,"name":"aarefiev","display_name":"Anton","email":"arefyevanton@gmail.com","username":"aarefiev"},"change_message_id":"40efe424bd06671cecd5dd1e283304a3ced4588e","unresolved":false,"context_lines":[{"line_number":47,"context_line":"        portgroup_list_uuid \u003d self.get_portgroup_uuids_from_portgroup_list()"},{"line_number":48,"context_line":"        self.assertNotIn(self.portgroup[\u0027uuid\u0027], portgroup_list_uuid)"},{"line_number":49,"context_line":""},{"line_number":50,"context_line":"    def test_portgroup_show(self):"},{"line_number":51,"context_line":"        \"\"\"Test steps:"},{"line_number":52,"context_line":""},{"line_number":53,"context_line":"        1) Create node and portgroup in setUp()."}],"source_content_type":"text/x-python","patch_set":11,"id":"3aaa91ec_af6fcec3","line":50,"range":{"start_line":50,"start_character":4,"end_line":50,"end_character":34},"updated":"2016-06-23 08:32:58.000000000","message":"there is also separate client method \"get by address\", imo we need one test case for it","commit_id":"62d00a047b9befdad27d8beb6670183e365d0e1c"},{"author":{"_account_id":14614,"name":"Kyrylo Romanenko","display_name":"K.Romanenko","email":"romanenko-kv@hotmail.com","username":"kromanenko"},"change_message_id":"06ed1b968321e438f77067de1db19ec26cdd268a","unresolved":false,"context_lines":[{"line_number":47,"context_line":"        portgroup_list_uuid \u003d self.get_portgroup_uuids_from_portgroup_list()"},{"line_number":48,"context_line":"        self.assertNotIn(self.portgroup[\u0027uuid\u0027], portgroup_list_uuid)"},{"line_number":49,"context_line":""},{"line_number":50,"context_line":"    def test_portgroup_show(self):"},{"line_number":51,"context_line":"        \"\"\"Test steps:"},{"line_number":52,"context_line":""},{"line_number":53,"context_line":"        1) Create node and portgroup in setUp()."}],"source_content_type":"text/x-python","patch_set":11,"id":"3aaa91ec_da72c448","line":50,"range":{"start_line":50,"start_character":4,"end_line":50,"end_character":34},"in_reply_to":"3aaa91ec_af6fcec3","updated":"2016-06-23 13:32:44.000000000","message":"Ok, i`ll add that testcase when i`ll investigate it.","commit_id":"62d00a047b9befdad27d8beb6670183e365d0e1c"},{"author":{"_account_id":14525,"name":"Vasyl Saienko","email":"vsaienko@mirantis.com","username":"vsaienko"},"change_message_id":"f008ad72b176a46c18a37e89c837d8f82ff83d48","unresolved":false,"context_lines":[{"line_number":35,"context_line":"        2) Check that port group has been successfully created."},{"line_number":36,"context_line":"        \"\"\""},{"line_number":37,"context_line":"        portgroup_list_uuid \u003d self.get_portgroup_uuids_from_portgroup_list("},{"line_number":38,"context_line":"            flags\u003dself.pg_api_ver)"},{"line_number":39,"context_line":"        self.assertIn(self.port_group[\u0027uuid\u0027], portgroup_list_uuid)"},{"line_number":40,"context_line":""},{"line_number":41,"context_line":"    def test_portgroup_delete(self):"}],"source_content_type":"text/x-python","patch_set":30,"id":"da4df55a_6a1f566c","line":38,"updated":"2016-12-26 15:37:33.000000000","message":"version string is passed everywhere in the tests, might be set this microversion by default in base.py?","commit_id":"1cd5d6df74c2f081d5da886ca058fce5cbae274a"},{"author":{"_account_id":14614,"name":"Kyrylo Romanenko","display_name":"K.Romanenko","email":"romanenko-kv@hotmail.com","username":"kromanenko"},"change_message_id":"c9fd93958bf68ac30394f894ef044664a6829e05","unresolved":false,"context_lines":[{"line_number":35,"context_line":"        2) Check that port group has been successfully created."},{"line_number":36,"context_line":"        \"\"\""},{"line_number":37,"context_line":"        portgroup_list_uuid \u003d self.get_portgroup_uuids_from_portgroup_list("},{"line_number":38,"context_line":"            flags\u003dself.pg_api_ver)"},{"line_number":39,"context_line":"        self.assertIn(self.port_group[\u0027uuid\u0027], portgroup_list_uuid)"},{"line_number":40,"context_line":""},{"line_number":41,"context_line":"    def test_portgroup_delete(self):"}],"source_content_type":"text/x-python","patch_set":30,"id":"da4df55a_bd0df4e9","line":38,"in_reply_to":"da4df55a_6a1f566c","updated":"2016-12-27 14:20:13.000000000","message":"Done","commit_id":"1cd5d6df74c2f081d5da886ca058fce5cbae274a"},{"author":{"_account_id":12356,"name":"Vladyslav Drok","email":"vdrok@mirantis.com","username":"vdrok"},"change_message_id":"34f3de91f77a738820814b33a62839db22922849","unresolved":false,"context_lines":[{"line_number":54,"context_line":"        \"\"\""},{"line_number":55,"context_line":"        portgroup_show \u003d self.show_portgroup(self.port_group[\u0027uuid\u0027])"},{"line_number":56,"context_line":"        self.assertEqual(self.port_group[\u0027uuid\u0027], portgroup_show[\u0027uuid\u0027])"},{"line_number":57,"context_line":"        self.assertEqual(self.port_group[\u0027name\u0027], portgroup_show[\u0027name\u0027])"},{"line_number":58,"context_line":""},{"line_number":59,"context_line":"    def test_portgroup_list(self):"},{"line_number":60,"context_line":"        \"\"\"Test steps:"}],"source_content_type":"text/x-python","patch_set":33,"id":"3a461143_ac3ac396","line":57,"updated":"2017-02-01 12:39:58.000000000","message":"nit - you don\u0027t specify a name when creating the portgroup","commit_id":"e8daa4795c5418a54e0a02fc53a7ea9d562a5f90"},{"author":{"_account_id":12356,"name":"Vladyslav Drok","email":"vdrok@mirantis.com","username":"vdrok"},"change_message_id":"34f3de91f77a738820814b33a62839db22922849","unresolved":false,"context_lines":[{"line_number":67,"context_line":"        other_node \u003d self.create_node()"},{"line_number":68,"context_line":"        other_portgroup \u003d self.create_portgroup(other_node[\u0027uuid\u0027])"},{"line_number":69,"context_line":""},{"line_number":70,"context_line":"        uuids \u003d {x[\u0027UUID\u0027] for x in self.list_portgroups()}"},{"line_number":71,"context_line":""},{"line_number":72,"context_line":"        self.assertTrue({self.port_group[\u0027uuid\u0027],"},{"line_number":73,"context_line":"                         other_portgroup[\u0027uuid\u0027]}.issubset(uuids))"}],"source_content_type":"text/x-python","patch_set":33,"id":"3a461143_4c6b1f86","line":70,"range":{"start_line":70,"start_character":17,"end_line":70,"end_character":58},"updated":"2017-02-01 12:39:58.000000000","message":"nit - set(get_portgroup_uuids_from_portgroup_list(...))","commit_id":"e8daa4795c5418a54e0a02fc53a7ea9d562a5f90"}]}
