)]}'
{"tempest/api/compute/admin/test_quotas_negative.py":[{"author":{"_account_id":7428,"name":"Yaroslav Lobankov","email":"lobankovyv@gmail.com","username":"ylobankov"},"change_message_id":"3f49ea74e99e010fb3a5446d26ae15d356a74d5c","unresolved":false,"context_lines":[{"line_number":109,"context_line":""},{"line_number":110,"context_line":"        quota_set \u003d self.adm_client.get_quota_set(self.demo_tenant_id)"},{"line_number":111,"context_line":"        default_sg_quota \u003d quota_set[\u0027security_groups\u0027]"},{"line_number":112,"context_line":"        sg_quota \u003d self.limits_client.show_limits()[\u0027absolute\u0027]["},{"line_number":113,"context_line":"            \u0027totalSecurityGroupsUsed\u0027]"},{"line_number":114,"context_line":"        # Set the quota to number of used security groups"},{"line_number":115,"context_line":""}],"source_content_type":"text/x-python","patch_set":27,"id":"ba3cc151_6f222154","line":112,"updated":"2015-07-01 21:01:57.000000000","message":"It looks like unrelated change.","commit_id":"157054a10508a1cf5a49bf8be8c84b91f84bfaed"},{"author":{"_account_id":10016,"name":"Joseph Lanoux","email":"joseph.lanoux@hpe.com","username":"lanoux"},"change_message_id":"42d1f129784641df656610d82b71c275cc58ff0d","unresolved":false,"context_lines":[{"line_number":109,"context_line":""},{"line_number":110,"context_line":"        quota_set \u003d self.adm_client.get_quota_set(self.demo_tenant_id)"},{"line_number":111,"context_line":"        default_sg_quota \u003d quota_set[\u0027security_groups\u0027]"},{"line_number":112,"context_line":"        sg_quota \u003d self.limits_client.show_limits()[\u0027absolute\u0027]["},{"line_number":113,"context_line":"            \u0027totalSecurityGroupsUsed\u0027]"},{"line_number":114,"context_line":"        # Set the quota to number of used security groups"},{"line_number":115,"context_line":""}],"source_content_type":"text/x-python","patch_set":27,"id":"ba3cc151_c86b0784","line":112,"in_reply_to":"ba3cc151_6f222154","updated":"2015-07-02 12:50:55.000000000","message":"It\u0027s related. As a security group is created in the validation_resources, this test needs to be updated or it fails.","commit_id":"157054a10508a1cf5a49bf8be8c84b91f84bfaed"},{"author":{"_account_id":7428,"name":"Yaroslav Lobankov","email":"lobankovyv@gmail.com","username":"ylobankov"},"change_message_id":"e2d3e730f7ff7d86886e7b18175ea8f3a42a3afd","unresolved":false,"context_lines":[{"line_number":109,"context_line":""},{"line_number":110,"context_line":"        quota_set \u003d self.adm_client.get_quota_set(self.demo_tenant_id)"},{"line_number":111,"context_line":"        default_sg_quota \u003d quota_set[\u0027security_groups\u0027]"},{"line_number":112,"context_line":"        sg_quota \u003d self.limits_client.show_limits()[\u0027absolute\u0027]["},{"line_number":113,"context_line":"            \u0027totalSecurityGroupsUsed\u0027]"},{"line_number":114,"context_line":"        # Set the quota to number of used security groups"},{"line_number":115,"context_line":""}],"source_content_type":"text/x-python","patch_set":27,"id":"ba3cc151_5240f933","line":112,"in_reply_to":"ba3cc151_c86b0784","updated":"2015-07-02 15:06:49.000000000","message":"Thanks Joseph. Sorry for the inconvenience.","commit_id":"157054a10508a1cf5a49bf8be8c84b91f84bfaed"},{"author":{"_account_id":7428,"name":"Yaroslav Lobankov","email":"lobankovyv@gmail.com","username":"ylobankov"},"change_message_id":"d165dd3647d688cbf74f4f6fae15890443a0750d","unresolved":false,"context_lines":[{"line_number":111,"context_line":"        default_sg_quota \u003d quota_set[\u0027security_groups\u0027]"},{"line_number":112,"context_line":"        sg_quota \u003d self.limits_client.show_limits()[\u0027absolute\u0027]["},{"line_number":113,"context_line":"            \u0027totalSecurityGroupsUsed\u0027]"},{"line_number":114,"context_line":"        # Set the quota to number of used security groups"},{"line_number":115,"context_line":""},{"line_number":116,"context_line":"        quota_set \u003d\\"},{"line_number":117,"context_line":"            self.adm_client.update_quota_set(self.demo_tenant_id,"}],"source_content_type":"text/x-python","patch_set":29,"id":"ba3cc151_47fb2779","line":114,"updated":"2015-07-03 15:52:09.000000000","message":"I think it will be better to put this comment before L112.","commit_id":"c25da56f4137dea750a68cfe49fb2c0159db3486"},{"author":{"_account_id":5803,"name":"Attila Fazekas","email":"afazekas@redhat.com","username":"afazekas"},"change_message_id":"5d505f7d57a814ad1179aa03585e747f84d08cfa","unresolved":false,"context_lines":[{"line_number":109,"context_line":""},{"line_number":110,"context_line":"        quota_set \u003d self.adm_client.show_quota_set(self.demo_tenant_id)"},{"line_number":111,"context_line":"        default_sg_quota \u003d quota_set[\u0027security_groups\u0027]"},{"line_number":112,"context_line":""},{"line_number":113,"context_line":"        # Set the quota to number of used security groups"},{"line_number":114,"context_line":"        sg_quota \u003d self.limits_client.show_limits()[\u0027absolute\u0027]["},{"line_number":115,"context_line":"            \u0027totalSecurityGroupsUsed\u0027]"}],"source_content_type":"text/x-python","patch_set":35,"id":"ba3cc151_56d98921","line":112,"updated":"2015-07-10 07:57:49.000000000","message":"Unrelated change.","commit_id":"bfc110fe1f5ae1abfac8fe213c8da249460c3f37"},{"author":{"_account_id":5803,"name":"Attila Fazekas","email":"afazekas@redhat.com","username":"afazekas"},"change_message_id":"6056e1cd9dee9af570bf46b17808f1db7341de03","unresolved":false,"context_lines":[{"line_number":109,"context_line":""},{"line_number":110,"context_line":"        quota_set \u003d self.adm_client.show_quota_set(self.demo_tenant_id)"},{"line_number":111,"context_line":"        default_sg_quota \u003d quota_set[\u0027security_groups\u0027]"},{"line_number":112,"context_line":""},{"line_number":113,"context_line":"        # Set the quota to number of used security groups"},{"line_number":114,"context_line":"        sg_quota \u003d self.limits_client.show_limits()[\u0027absolute\u0027]["},{"line_number":115,"context_line":"            \u0027totalSecurityGroupsUsed\u0027]"}],"source_content_type":"text/x-python","patch_set":35,"id":"ba3cc151_76f7ed59","line":112,"in_reply_to":"ba3cc151_56d98921","updated":"2015-07-10 08:03:12.000000000","message":"sorry.","commit_id":"bfc110fe1f5ae1abfac8fe213c8da249460c3f37"}],"tempest/api/compute/base.py":[{"author":{"_account_id":16433,"name":"izadorozhna","email":"izadorozhna@mirantis.com","username":"izadorozhna"},"change_message_id":"eb4c3973ecb5343fb16cde393793bb4edf9aef5f","unresolved":false,"context_lines":[{"line_number":299,"context_line":"            except Exception:"},{"line_number":300,"context_line":"                LOG.exception(\u0027Failed to delete server %s\u0027 % server_id)"},{"line_number":301,"context_line":""},{"line_number":302,"context_line":"        if CONF.compute.run_ssh:"},{"line_number":303,"context_line":"            validatable \u003d True"},{"line_number":304,"context_line":"        else:"},{"line_number":305,"context_line":"            validatable \u003d False"}],"source_content_type":"text/x-python","patch_set":20,"id":"1af86dd1_c4160a55","line":302,"updated":"2015-06-12 11:24:53.000000000","message":"CONF.compute.run_ssh is deprecated config parameter. It\u0027s better to user CONF.validation.run_validation instead.","commit_id":"a52ae1aabb3243d745952de5834a6ac7f84c1c82"},{"author":{"_account_id":16433,"name":"izadorozhna","email":"izadorozhna@mirantis.com","username":"izadorozhna"},"change_message_id":"9650f0baa94edc282003d3b8039b98863a8a682f","unresolved":false,"context_lines":[{"line_number":300,"context_line":"            except Exception:"},{"line_number":301,"context_line":"                LOG.exception(\u0027Failed to delete server %s\u0027 % server_id)"},{"line_number":302,"context_line":""},{"line_number":303,"context_line":"        if CONF.compute.run_ssh:"},{"line_number":304,"context_line":"            validatable \u003d True"},{"line_number":305,"context_line":"        else:"},{"line_number":306,"context_line":"            validatable \u003d False"}],"source_content_type":"text/x-python","patch_set":23,"id":"fa32b979_3b4f5038","line":303,"updated":"2015-06-18 09:42:42.000000000","message":"Just little comment, maybe it\u0027ll help to pass tests.\nIt\u0027s better to use parameter CONF.validation.run_validation instead, it is similar to CONF.compute.run_ssh, but the current parameter \nCONF.compute.run_ssh is deprecated now in tempest.conf. It seems like because of this Jenkins failed with \"no such option in group compute: run_ssh\".","commit_id":"14bce776d8f5fd15eb698433ec9258b3a11088c0"},{"author":{"_account_id":7428,"name":"Yaroslav Lobankov","email":"lobankovyv@gmail.com","username":"ylobankov"},"change_message_id":"d165dd3647d688cbf74f4f6fae15890443a0750d","unresolved":false,"context_lines":[{"line_number":262,"context_line":"                     \"Maybe it was already deleted?\" % volume_id)"},{"line_number":263,"context_line":""},{"line_number":264,"context_line":"    @classmethod"},{"line_number":265,"context_line":"    def prepare_instance_network(cls):"},{"line_number":266,"context_line":"        if (CONF.compute.ssh_auth_method !\u003d \u0027disabled\u0027 and"},{"line_number":267,"context_line":"                CONF.compute.ssh_connect_method \u003d\u003d \u0027floating\u0027):"},{"line_number":268,"context_line":"            cls.set_network_resources(network\u003dTrue, subnet\u003dTrue, router\u003dTrue,"}],"source_content_type":"text/x-python","patch_set":29,"id":"ba3cc151_02542dc7","line":265,"updated":"2015-07-03 15:52:09.000000000","message":"I think you should use options from validation section here and remove duplicated options from compute section.","commit_id":"c25da56f4137dea750a68cfe49fb2c0159db3486"},{"author":{"_account_id":7428,"name":"Yaroslav Lobankov","email":"lobankovyv@gmail.com","username":"ylobankov"},"change_message_id":"d165dd3647d688cbf74f4f6fae15890443a0750d","unresolved":false,"context_lines":[{"line_number":300,"context_line":"            except Exception:"},{"line_number":301,"context_line":"                LOG.exception(\u0027Failed to delete server %s\u0027 % server_id)"},{"line_number":302,"context_line":""},{"line_number":303,"context_line":"        cls.server \u003d cls.create_test_server("},{"line_number":304,"context_line":"            validatable\u003dTrue,"},{"line_number":305,"context_line":"            wait_until\u003d\u0027ACTIVE\u0027,"},{"line_number":306,"context_line":"            **kwargs)"}],"source_content_type":"text/x-python","patch_set":29,"id":"ba3cc151_a7d233cf","line":303,"updated":"2015-07-03 15:52:09.000000000","message":"Why do we use cls.server instead of server? Maybe I am missing something and we really need this.","commit_id":"c25da56f4137dea750a68cfe49fb2c0159db3486"},{"author":{"_account_id":7428,"name":"Yaroslav Lobankov","email":"lobankovyv@gmail.com","username":"ylobankov"},"change_message_id":"080480a3e1b21fa565085c6765f912a15ceb3d61","unresolved":false,"context_lines":[{"line_number":291,"context_line":"        return image"},{"line_number":292,"context_line":""},{"line_number":293,"context_line":"    @classmethod"},{"line_number":294,"context_line":"    def rebuild_server(cls, server_id, **kwargs):"},{"line_number":295,"context_line":"        # Destroy an existing server and creates a new one"},{"line_number":296,"context_line":"        if server_id:"},{"line_number":297,"context_line":"            try:"}],"source_content_type":"text/x-python","patch_set":31,"id":"ba3cc151_d8b35509","line":294,"updated":"2015-07-06 20:52:19.000000000","message":"It looks like if we set parameter validatable\u003dTrue here\n\n    @classmethod\n    def rebuild_server(cls, server_id, validatable\u003dTrue, **kwargs):\n        ...\n\nthe only change in the test_images_oneserver_negative.py file will be L56\n\n    self.__class__.server_id \u003d self.rebuild_server(self.server_id, validatable\u003dFalse)","commit_id":"97ac8595f810e4b84f396a06e81861681c14fd70"},{"author":{"_account_id":1991,"name":"Russell Sim","email":"russell.sim@gmail.com","username":"russell-sim"},"change_message_id":"3e14ad8a217d7e861cdc29ed175a7f02456b841f","unresolved":false,"context_lines":[{"line_number":291,"context_line":"        return image"},{"line_number":292,"context_line":""},{"line_number":293,"context_line":"    @classmethod"},{"line_number":294,"context_line":"    def rebuild_server(cls, server_id, **kwargs):"},{"line_number":295,"context_line":"        # Destroy an existing server and creates a new one"},{"line_number":296,"context_line":"        if server_id:"},{"line_number":297,"context_line":"            try:"}],"source_content_type":"text/x-python","patch_set":31,"id":"ba3cc151_32829853","line":294,"in_reply_to":"ba3cc151_d8b35509","updated":"2015-07-07 06:48:04.000000000","message":"This should be set to False by default.  In every other case where validation occurs there are if blocks that are explicitly handling the case where it\u0027s on.\n\n if CONF.validation.run_validation:\n\nThis function should not be an exception to this. Perhaps it should just be removed from the call below so that subclasses that call this method can pass in the valadatable value explicitly to enable it.","commit_id":"97ac8595f810e4b84f396a06e81861681c14fd70"},{"author":{"_account_id":7428,"name":"Yaroslav Lobankov","email":"lobankovyv@gmail.com","username":"ylobankov"},"change_message_id":"e80b92add0d57fe44d18ecc782a027fefd1c5241","unresolved":false,"context_lines":[{"line_number":291,"context_line":"        return image"},{"line_number":292,"context_line":""},{"line_number":293,"context_line":"    @classmethod"},{"line_number":294,"context_line":"    def rebuild_server(cls, server_id, **kwargs):"},{"line_number":295,"context_line":"        # Destroy an existing server and creates a new one"},{"line_number":296,"context_line":"        if server_id:"},{"line_number":297,"context_line":"            try:"}],"source_content_type":"text/x-python","patch_set":32,"id":"ba3cc151_3eed77b7","line":294,"updated":"2015-07-07 08:53:47.000000000","message":"Joseph, I suggest to set the \"validatable\" flag as one of the parameters for this method. \nAs Russell said the default value should be False.\n    \n    @classmethod\n    def rebuild_server(cls, server_id, validatable\u003dFalse, **kwargs):\n        ...\n\nIn this case the test_images_oneserver_negative.py file will not have any changes at all. Also I think it will be more logical that this method will have the same validatable flag like the create_test_server method.","commit_id":"2309d5271f76af439bf13101139898dc81fa12d7"},{"author":{"_account_id":7428,"name":"Yaroslav Lobankov","email":"lobankovyv@gmail.com","username":"ylobankov"},"change_message_id":"7a2401cd5dad32424000536b2f3f923e689eb29b","unresolved":false,"context_lines":[{"line_number":323,"context_line":"        cls._delete_volume(cls.volumes_extensions_client, volume_id)"},{"line_number":324,"context_line":""},{"line_number":325,"context_line":"    @classmethod"},{"line_number":326,"context_line":"    def get_server_ip(cls, server):"},{"line_number":327,"context_line":"        \"\"\"Get the server fixed or floating IP."},{"line_number":328,"context_line":""},{"line_number":329,"context_line":"        For the floating IP, the address created by the validation resources"}],"source_content_type":"text/x-python","patch_set":36,"id":"ba3cc151_88ab6275","line":326,"updated":"2015-07-10 13:48:46.000000000","message":"It looks like we could place the code for extracting IP address\n\n    addresses \u003d server[\u0027addresses\u0027][network]\n    for address in addresses:\n        if address[\u0027version\u0027] \u003d\u003d ip_version:\n            ip_address \u003d address[\u0027addr\u0027]\n            break\n\nhere and remove it from RemoteClient at all. Thus we explicitly will pass IP address to RemoteClient instead of server body. It seems that such changes will not influence scenario tests because scenario tests have own wrapper around RemoteClient (I mean the get_remote_client() method). Though we can make these changes later if you like this idea.","commit_id":"72b7e20f388deaf7068f57b0213ca2c3dabe5a05"},{"author":{"_account_id":7428,"name":"Yaroslav Lobankov","email":"lobankovyv@gmail.com","username":"ylobankov"},"change_message_id":"3954ff8ec9662e5db987a8058a1301897e2713ea","unresolved":false,"context_lines":[{"line_number":323,"context_line":"        cls._delete_volume(cls.volumes_extensions_client, volume_id)"},{"line_number":324,"context_line":""},{"line_number":325,"context_line":"    @classmethod"},{"line_number":326,"context_line":"    def get_server_ip(cls, server):"},{"line_number":327,"context_line":"        \"\"\"Get the server fixed or floating IP."},{"line_number":328,"context_line":""},{"line_number":329,"context_line":"        For the floating IP, the address created by the validation resources"}],"source_content_type":"text/x-python","patch_set":36,"id":"ba3cc151_3cb4d580","line":326,"in_reply_to":"ba3cc151_038093f6","updated":"2015-07-10 14:46:55.000000000","message":"\u003e As Attila mentioned, what if there are 2 fixed IPs?\n\nAs far as I understood, afazekas left the comment for another code block (where you extract floating IP address). If the server has, for example, 2 fixed IPs, according to code block \n\n    addresses \u003d server[\u0027addresses\u0027][network]\n    for address in addresses:\n        if address[\u0027version\u0027] \u003d\u003d ip_version:\n            ip_address \u003d address[\u0027addr\u0027]\n            break\n\nwe will choose the first one and stop loop. So it is not clear for me why this code is not robust? I just suggested to move the code, that extracts fixed IP address, to this method and remove it from RemoteClient to explicitly pass IP address (fixed or floating).","commit_id":"72b7e20f388deaf7068f57b0213ca2c3dabe5a05"},{"author":{"_account_id":10016,"name":"Joseph Lanoux","email":"joseph.lanoux@hpe.com","username":"lanoux"},"change_message_id":"57068a65f435ae20bcb7560e6ee5e7cd430f867f","unresolved":false,"context_lines":[{"line_number":323,"context_line":"        cls._delete_volume(cls.volumes_extensions_client, volume_id)"},{"line_number":324,"context_line":""},{"line_number":325,"context_line":"    @classmethod"},{"line_number":326,"context_line":"    def get_server_ip(cls, server):"},{"line_number":327,"context_line":"        \"\"\"Get the server fixed or floating IP."},{"line_number":328,"context_line":""},{"line_number":329,"context_line":"        For the floating IP, the address created by the validation resources"}],"source_content_type":"text/x-python","patch_set":36,"id":"ba3cc151_b007a480","line":326,"in_reply_to":"ba3cc151_3cb4d580","updated":"2015-07-13 08:16:49.000000000","message":"Hi Yaroslav,\nNo, it\u0027s for this block. Remote_client doesn\u0027t have the tools to pick the right IP. It shouldn\u0027t pick up just the first IP. It should be more explicit and pick the specific IP that one wants.","commit_id":"72b7e20f388deaf7068f57b0213ca2c3dabe5a05"},{"author":{"_account_id":10016,"name":"Joseph Lanoux","email":"joseph.lanoux@hpe.com","username":"lanoux"},"change_message_id":"388a043c0a81a0d5b2216f6a21085cf7b0d791da","unresolved":false,"context_lines":[{"line_number":323,"context_line":"        cls._delete_volume(cls.volumes_extensions_client, volume_id)"},{"line_number":324,"context_line":""},{"line_number":325,"context_line":"    @classmethod"},{"line_number":326,"context_line":"    def get_server_ip(cls, server):"},{"line_number":327,"context_line":"        \"\"\"Get the server fixed or floating IP."},{"line_number":328,"context_line":""},{"line_number":329,"context_line":"        For the floating IP, the address created by the validation resources"}],"source_content_type":"text/x-python","patch_set":36,"id":"ba3cc151_038093f6","line":326,"in_reply_to":"ba3cc151_88ab6275","updated":"2015-07-10 14:01:09.000000000","message":"This bit of code to extract the IP is not robust. As Attila mentioned, what if there are 2 fixed IPs? Per his comment in remote_client we should pass IPs and not servers. Once the ssh validation with fixed IP is implemented, both pieces of code will probably get rid of.","commit_id":"72b7e20f388deaf7068f57b0213ca2c3dabe5a05"},{"author":{"_account_id":7428,"name":"Yaroslav Lobankov","email":"lobankovyv@gmail.com","username":"ylobankov"},"change_message_id":"4351a2df95d8e7b3d8a7ac938aacf70fd2e00af8","unresolved":false,"context_lines":[{"line_number":323,"context_line":"        cls._delete_volume(cls.volumes_extensions_client, volume_id)"},{"line_number":324,"context_line":""},{"line_number":325,"context_line":"    @classmethod"},{"line_number":326,"context_line":"    def get_server_ip(cls, server):"},{"line_number":327,"context_line":"        \"\"\"Get the server fixed or floating IP."},{"line_number":328,"context_line":""},{"line_number":329,"context_line":"        For the floating IP, the address created by the validation resources"}],"source_content_type":"text/x-python","patch_set":36,"id":"9a41bdd9_3be59c08","line":326,"in_reply_to":"ba3cc151_b007a480","updated":"2015-07-13 12:01:48.000000000","message":"Hi Joseph, thanks a lot for clarification! :)","commit_id":"72b7e20f388deaf7068f57b0213ca2c3dabe5a05"}],"tempest/api/compute/images/test_images_oneserver_negative.py":[{"author":{"_account_id":7428,"name":"Yaroslav Lobankov","email":"lobankovyv@gmail.com","username":"ylobankov"},"change_message_id":"15cd6d239e6ac4fb4f0d9276d1f12a8c439df992","unresolved":false,"context_lines":[{"line_number":82,"context_line":"        cls.set_validation_resources()"},{"line_number":83,"context_line":""},{"line_number":84,"context_line":"        super(ImagesOneServerNegativeTestJSON, cls).resource_setup()"},{"line_number":85,"context_line":"        server \u003d cls.create_test_server("},{"line_number":86,"context_line":"            validatable\u003dTrue,"},{"line_number":87,"context_line":"            wait_until\u003d\u0027ACTIVE\u0027)"},{"line_number":88,"context_line":"        cls.server_id \u003d server[\u0027id\u0027]"}],"source_content_type":"text/x-python","patch_set":31,"id":"ba3cc151_34c5ba5a","line":85,"updated":"2015-07-06 15:53:04.000000000","message":"Why do you invoke this method with flag validatable\u003dTrue? It looks like we don\u0027t validate anything in these tests.","commit_id":"97ac8595f810e4b84f396a06e81861681c14fd70"}],"tempest/api/compute/servers/test_create_server.py":[{"author":{"_account_id":1192,"name":"David Kranz","email":"dkranz@redhat.com","username":"david-kranz"},"change_message_id":"4b84f07733bf5c8ea6e1ad905ceb4f60c34fcd13","unresolved":false,"context_lines":[{"line_number":111,"context_line":"        # the amount stated by the flavor"},{"line_number":112,"context_line":"        flavor \u003d self.flavors_client.get_flavor_details(self.flavor_ref)"},{"line_number":113,"context_line":"        linux_client \u003d remote_client.RemoteClient("},{"line_number":114,"context_line":"            self.server[\u0027addresses\u0027][self.server[\u0027addresses\u0027].keys()[0]]"},{"line_number":115,"context_line":"            [1][\u0027addr\u0027],"},{"line_number":116,"context_line":"            self.ssh_user,"},{"line_number":117,"context_line":"            self.password,"}],"source_content_type":"text/x-python","patch_set":18,"id":"7a016987_f6cca58a","line":114,"updated":"2015-05-28 20:46:55.000000000","message":"This code is long and opaque enough to justify being abstracted into a helper method on the base compute class that takes the server and returns the address.","commit_id":"1bd2e5829da6cd40b035cb95fe66b3ddd546fbd0"},{"author":{"_account_id":7428,"name":"Yaroslav Lobankov","email":"lobankovyv@gmail.com","username":"ylobankov"},"change_message_id":"6e1d797527268e63ca0984dd29e5b05e058f490f","unresolved":false,"context_lines":[{"line_number":103,"context_line":"        # Verify that the number of vcpus reported by the instance matches"},{"line_number":104,"context_line":"        # the amount stated by the flavor"},{"line_number":105,"context_line":"        flavor \u003d self.flavors_client.show_flavor(self.flavor_ref)"},{"line_number":106,"context_line":"        linux_client \u003d remote_client.RemoteClient("},{"line_number":107,"context_line":"            self.server[\u0027addresses\u0027][self.server[\u0027addresses\u0027].keys()[0]]"},{"line_number":108,"context_line":"            [1][\u0027addr\u0027],"},{"line_number":109,"context_line":"            self.ssh_user,"}],"source_content_type":"text/x-python","patch_set":27,"id":"fa32b979_12620ad9","line":106,"updated":"2015-06-21 10:11:50.000000000","message":"Shouldn\u0027t we use here the config option ssh_connect_method to choose the method of connection to the instance (fixed or floating)?","commit_id":"157054a10508a1cf5a49bf8be8c84b91f84bfaed"},{"author":{"_account_id":10016,"name":"Joseph Lanoux","email":"joseph.lanoux@hpe.com","username":"lanoux"},"change_message_id":"42d1f129784641df656610d82b71c275cc58ff0d","unresolved":false,"context_lines":[{"line_number":103,"context_line":"        # Verify that the number of vcpus reported by the instance matches"},{"line_number":104,"context_line":"        # the amount stated by the flavor"},{"line_number":105,"context_line":"        flavor \u003d self.flavors_client.show_flavor(self.flavor_ref)"},{"line_number":106,"context_line":"        linux_client \u003d remote_client.RemoteClient("},{"line_number":107,"context_line":"            self.server[\u0027addresses\u0027][self.server[\u0027addresses\u0027].keys()[0]]"},{"line_number":108,"context_line":"            [1][\u0027addr\u0027],"},{"line_number":109,"context_line":"            self.ssh_user,"}],"source_content_type":"text/x-python","patch_set":27,"id":"ba3cc151_086c8fcc","line":106,"in_reply_to":"fa32b979_12620ad9","updated":"2015-07-02 12:50:55.000000000","message":"Yes, good point. I\u0027ll update that.","commit_id":"157054a10508a1cf5a49bf8be8c84b91f84bfaed"},{"author":{"_account_id":7428,"name":"Yaroslav Lobankov","email":"lobankovyv@gmail.com","username":"ylobankov"},"change_message_id":"5e52e43663628e2119c5a858eb33dee1176011cb","unresolved":false,"context_lines":[{"line_number":288,"context_line":"            self.validation_resources[\u0027keypair\u0027][\u0027private_key\u0027])"},{"line_number":289,"context_line":"        partition_num \u003d len(linux_client.get_partitions().split(\u0027\\n\u0027))"},{"line_number":290,"context_line":""},{"line_number":291,"context_line":"        self.client.delete_server(server_no_eph_disk[\u0027id\u0027])"},{"line_number":292,"context_line":""},{"line_number":293,"context_line":"        server_with_eph_disk \u003d (self.create_test_server("},{"line_number":294,"context_line":"                                validatable\u003dTrue,"}],"source_content_type":"text/x-python","patch_set":30,"id":"ba3cc151_598e8028","line":291,"updated":"2015-07-06 14:02:12.000000000","message":"Do we really need to delete the server here? For creating a server you use the self.create_test_server() method that will add the created server to the list of servers for cleanup.","commit_id":"e1987627d6499cde9a9eb867a3e8735ce7ee855a"}],"tempest/api/compute/servers/test_server_actions.py":[{"author":{"_account_id":16433,"name":"izadorozhna","email":"izadorozhna@mirantis.com","username":"izadorozhna"},"change_message_id":"918e37241f810885c3485dccd5b62e03d3d391d6","unresolved":false,"context_lines":[{"line_number":119,"context_line":"    def test_reboot_server_hard(self):"},{"line_number":120,"context_line":"        # The server should be power cycled"},{"line_number":121,"context_line":"        self._test_reboot_server(\u0027HARD\u0027)"},{"line_number":122,"context_line":""},{"line_number":123,"context_line":"    @decorators.skip_because(bug\u003d\"1014647\")"},{"line_number":124,"context_line":"    @test.idempotent_id(\u00274640e3ef-a5df-482e-95a1-ceeeb0faa84d\u0027)"},{"line_number":125,"context_line":"    def test_reboot_server_soft(self):"}],"source_content_type":"text/x-python","patch_set":22,"id":"fa32b979_4a042749","line":122,"updated":"2015-06-16 11:46:28.000000000","message":"I removed the skip decorator and checked the test_reboot_server_soft test with all your fixes against my cloud. The test passed because you fixed _test_reboot_server method. Thus I suggest that the decorator @decorators.skip_because(bug\u003d\"1014647\") can be removed.","commit_id":"2f0d7f022c8ddf90e6ff9f339249b69f84c805d8"},{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"759dff8d45d0b2500bd4ededa4940a552d978e2e","unresolved":false,"context_lines":[{"line_number":87,"context_line":"            # Verify that the user can authenticate with the new password"},{"line_number":88,"context_line":"            server \u003d self.client.show_server(self.server_id)"},{"line_number":89,"context_line":"            linux_client \u003d remote_client.RemoteClient(server, self.ssh_user,"},{"line_number":90,"context_line":"                                                      new_password)"},{"line_number":91,"context_line":"            linux_client.validate_authentication()"},{"line_number":92,"context_line":""},{"line_number":93,"context_line":"    def _test_reboot_server(self, reboot_type):"}],"source_content_type":"text/x-python","patch_set":36,"id":"9a41bdd9_f9c5c98d","line":90,"updated":"2015-07-14 10:08:01.000000000","message":"this one with self.get_server_ip(server) and keypair?","commit_id":"72b7e20f388deaf7068f57b0213ca2c3dabe5a05"},{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"34ccb4659b4db2aaff64518f0a9eec11590e10f5","unresolved":false,"context_lines":[{"line_number":87,"context_line":"            # Verify that the user can authenticate with the new password"},{"line_number":88,"context_line":"            server \u003d self.client.show_server(self.server_id)"},{"line_number":89,"context_line":"            linux_client \u003d remote_client.RemoteClient(server, self.ssh_user,"},{"line_number":90,"context_line":"                                                      new_password)"},{"line_number":91,"context_line":"            linux_client.validate_authentication()"},{"line_number":92,"context_line":""},{"line_number":93,"context_line":"    def _test_reboot_server(self, reboot_type):"}],"source_content_type":"text/x-python","patch_set":36,"id":"9a41bdd9_cea6f852","line":90,"in_reply_to":"9a41bdd9_dfc46560","updated":"2015-07-14 11:50:48.000000000","message":"Yeas, right. keypair not needed.","commit_id":"72b7e20f388deaf7068f57b0213ca2c3dabe5a05"},{"author":{"_account_id":5803,"name":"Attila Fazekas","email":"afazekas@redhat.com","username":"afazekas"},"change_message_id":"9c48010cbb3c2a05af1bc916c61637f9d0984712","unresolved":false,"context_lines":[{"line_number":87,"context_line":"            # Verify that the user can authenticate with the new password"},{"line_number":88,"context_line":"            server \u003d self.client.show_server(self.server_id)"},{"line_number":89,"context_line":"            linux_client \u003d remote_client.RemoteClient(server, self.ssh_user,"},{"line_number":90,"context_line":"                                                      new_password)"},{"line_number":91,"context_line":"            linux_client.validate_authentication()"},{"line_number":92,"context_line":""},{"line_number":93,"context_line":"    def _test_reboot_server(self, reboot_type):"}],"source_content_type":"text/x-python","patch_set":36,"id":"9a41bdd9_dfc46560","line":90,"in_reply_to":"9a41bdd9_f9c5c98d","updated":"2015-07-14 10:49:53.000000000","message":"The test name is \u0027test_change_server_password\u0027,\nthis test case should use password, but it will not be able to test this on the gate.\n\nWith the server arg you are right.","commit_id":"72b7e20f388deaf7068f57b0213ca2c3dabe5a05"},{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"759dff8d45d0b2500bd4ededa4940a552d978e2e","unresolved":false,"context_lines":[{"line_number":143,"context_line":"        file_contents \u003d \u0027Test server rebuild.\u0027"},{"line_number":144,"context_line":"        personality \u003d [{\u0027path\u0027: \u0027rebuild.txt\u0027,"},{"line_number":145,"context_line":"                       \u0027contents\u0027: base64.b64encode(file_contents)}]"},{"line_number":146,"context_line":"        password \u003d \u0027rebuildPassw0rd\u0027"},{"line_number":147,"context_line":"        rebuilt_server \u003d self.client.rebuild(self.server_id,"},{"line_number":148,"context_line":"                                             self.image_ref_alt,"},{"line_number":149,"context_line":"                                             name\u003dnew_name,"}],"source_content_type":"text/x-python","patch_set":36,"id":"9a41bdd9_1993cda4","line":146,"updated":"2015-07-14 10:08:01.000000000","message":"Do not we need validatable\u003dTrue here?","commit_id":"72b7e20f388deaf7068f57b0213ca2c3dabe5a05"},{"author":{"_account_id":5803,"name":"Attila Fazekas","email":"afazekas@redhat.com","username":"afazekas"},"change_message_id":"9c48010cbb3c2a05af1bc916c61637f9d0984712","unresolved":false,"context_lines":[{"line_number":143,"context_line":"        file_contents \u003d \u0027Test server rebuild.\u0027"},{"line_number":144,"context_line":"        personality \u003d [{\u0027path\u0027: \u0027rebuild.txt\u0027,"},{"line_number":145,"context_line":"                       \u0027contents\u0027: base64.b64encode(file_contents)}]"},{"line_number":146,"context_line":"        password \u003d \u0027rebuildPassw0rd\u0027"},{"line_number":147,"context_line":"        rebuilt_server \u003d self.client.rebuild(self.server_id,"},{"line_number":148,"context_line":"                                             self.image_ref_alt,"},{"line_number":149,"context_line":"                                             name\u003dnew_name,"}],"source_content_type":"text/x-python","patch_set":36,"id":"9a41bdd9_1ff5ed81","line":146,"in_reply_to":"9a41bdd9_1993cda4","updated":"2015-07-14 10:49:53.000000000","message":"no it is rebuild call not a boot/create.","commit_id":"72b7e20f388deaf7068f57b0213ca2c3dabe5a05"},{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"34ccb4659b4db2aaff64518f0a9eec11590e10f5","unresolved":false,"context_lines":[{"line_number":143,"context_line":"        file_contents \u003d \u0027Test server rebuild.\u0027"},{"line_number":144,"context_line":"        personality \u003d [{\u0027path\u0027: \u0027rebuild.txt\u0027,"},{"line_number":145,"context_line":"                       \u0027contents\u0027: base64.b64encode(file_contents)}]"},{"line_number":146,"context_line":"        password \u003d \u0027rebuildPassw0rd\u0027"},{"line_number":147,"context_line":"        rebuilt_server \u003d self.client.rebuild(self.server_id,"},{"line_number":148,"context_line":"                                             self.image_ref_alt,"},{"line_number":149,"context_line":"                                             name\u003dnew_name,"}],"source_content_type":"text/x-python","patch_set":36,"id":"9a41bdd9_ce8fd8ca","line":146,"in_reply_to":"9a41bdd9_1ff5ed81","updated":"2015-07-14 11:50:48.000000000","message":"Ah yes, This is just direct rebuild call.","commit_id":"72b7e20f388deaf7068f57b0213ca2c3dabe5a05"},{"author":{"_account_id":7428,"name":"Yaroslav Lobankov","email":"lobankovyv@gmail.com","username":"ylobankov"},"change_message_id":"cd3dbf20937c33e1a5b3e426b4aefd3f89708923","unresolved":false,"context_lines":[{"line_number":170,"context_line":"        self.assertEqual(new_name, server[\u0027name\u0027])"},{"line_number":171,"context_line":""},{"line_number":172,"context_line":"        if CONF.validation.run_validation:"},{"line_number":173,"context_line":"            # Verify that the user can authenticate with the provided password"},{"line_number":174,"context_line":"            linux_client \u003d remote_client.RemoteClient("},{"line_number":175,"context_line":"                self.get_server_ip(rebuilt_server),"},{"line_number":176,"context_line":"                self.ssh_user,"}],"source_content_type":"text/x-python","patch_set":36,"id":"9a41bdd9_9a358bf8","line":173,"updated":"2015-07-14 11:17:55.000000000","message":"The comment says that we should authenticate with the provided password, but you use self.password instead of the password variable that is defined in L146. In addition, authentication is performed via keypair. Is it done intentionally or not?","commit_id":"72b7e20f388deaf7068f57b0213ca2c3dabe5a05"},{"author":{"_account_id":5803,"name":"Attila Fazekas","email":"afazekas@redhat.com","username":"afazekas"},"change_message_id":"296afc47128a2f60c7b44ce825dcdb8168966cd1","unresolved":false,"context_lines":[{"line_number":170,"context_line":"        self.assertEqual(new_name, server[\u0027name\u0027])"},{"line_number":171,"context_line":""},{"line_number":172,"context_line":"        if CONF.validation.run_validation:"},{"line_number":173,"context_line":"            # Verify that the user can authenticate with the provided password"},{"line_number":174,"context_line":"            linux_client \u003d remote_client.RemoteClient("},{"line_number":175,"context_line":"                self.get_server_ip(rebuilt_server),"},{"line_number":176,"context_line":"                self.ssh_user,"}],"source_content_type":"text/x-python","patch_set":36,"id":"9a41bdd9_beb28ce3","line":173,"in_reply_to":"9a41bdd9_31e825b4","updated":"2015-07-15 08:26:25.000000000","message":"Just remove the comment regarding to the authentication type here, here we can use any and it will be driven by tempest conf option in the future.","commit_id":"72b7e20f388deaf7068f57b0213ca2c3dabe5a05"},{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"34ccb4659b4db2aaff64518f0a9eec11590e10f5","unresolved":false,"context_lines":[{"line_number":170,"context_line":"        self.assertEqual(new_name, server[\u0027name\u0027])"},{"line_number":171,"context_line":""},{"line_number":172,"context_line":"        if CONF.validation.run_validation:"},{"line_number":173,"context_line":"            # Verify that the user can authenticate with the provided password"},{"line_number":174,"context_line":"            linux_client \u003d remote_client.RemoteClient("},{"line_number":175,"context_line":"                self.get_server_ip(rebuilt_server),"},{"line_number":176,"context_line":"                self.ssh_user,"}],"source_content_type":"text/x-python","patch_set":36,"id":"9a41bdd9_31e825b4","line":173,"in_reply_to":"9a41bdd9_9a358bf8","updated":"2015-07-14 11:50:48.000000000","message":"Yes, password should be used for authentication.","commit_id":"72b7e20f388deaf7068f57b0213ca2c3dabe5a05"}],"tempest/common/utils/linux/remote_client.py":[{"author":{"_account_id":7428,"name":"Yaroslav Lobankov","email":"lobankovyv@gmail.com","username":"ylobankov"},"change_message_id":"d165dd3647d688cbf74f4f6fae15890443a0750d","unresolved":false,"context_lines":[{"line_number":39,"context_line":"            ip_address \u003d server"},{"line_number":40,"context_line":"        else:"},{"line_number":41,"context_line":"            if CONF.validation.connect_method \u003d\u003d \u0027floating\u0027:"},{"line_number":42,"context_line":"                ip_address \u003d server[\u0027addresses\u0027][server[\u0027addresses\u0027].keys()["},{"line_number":43,"context_line":"                    0]][1][\u0027addr\u0027]"},{"line_number":44,"context_line":"            elif CONF.validation.connect_method \u003d\u003d \u0027fixed\u0027:"},{"line_number":45,"context_line":"                addresses \u003d server[\u0027addresses\u0027][network]"}],"source_content_type":"text/x-python","patch_set":29,"id":"ba3cc151_02c3cd38","line":42,"updated":"2015-07-03 15:52:09.000000000","message":"Could you please split this line somehow? It is hard to read this code :)","commit_id":"c25da56f4137dea750a68cfe49fb2c0159db3486"},{"author":{"_account_id":16425,"name":"Bin Bin Cong","email":"binbin.cong@easystack.cn","username":"stephen_cong"},"change_message_id":"703db1c760059bbaba375563ecf0469c7e277ed6","unresolved":false,"context_lines":[{"line_number":39,"context_line":"            ip_address \u003d server"},{"line_number":40,"context_line":"        else:"},{"line_number":41,"context_line":"            if CONF.validation.connect_method \u003d\u003d \u0027floating\u0027:"},{"line_number":42,"context_line":"                ip_address \u003d server[\u0027addresses\u0027][server[\u0027addresses\u0027].keys()["},{"line_number":43,"context_line":"                    0]][1][\u0027addr\u0027]"},{"line_number":44,"context_line":"            elif CONF.validation.connect_method \u003d\u003d \u0027fixed\u0027:"},{"line_number":45,"context_line":"                addresses \u003d server[\u0027addresses\u0027][network]"}],"source_content_type":"text/x-python","patch_set":29,"id":"ba3cc151_8ac92c5d","line":42,"updated":"2015-07-04 07:51:02.000000000","message":"Ditto, a little hard to understand this line, maybe some temp parameter will be helpful?","commit_id":"c25da56f4137dea750a68cfe49fb2c0159db3486"},{"author":{"_account_id":5803,"name":"Attila Fazekas","email":"afazekas@redhat.com","username":"afazekas"},"change_message_id":"2a88f8ed99699ee036d7ec30f7a1033aa1370291","unresolved":false,"context_lines":[{"line_number":41,"context_line":"            if CONF.validation.connect_method \u003d\u003d \u0027floating\u0027:"},{"line_number":42,"context_line":"                # Network created by isolated creds"},{"line_number":43,"context_line":"                net \u003d server[\u0027addresses\u0027].keys()[0]"},{"line_number":44,"context_line":"                # The floatinp IP is the second address, the first begin the"},{"line_number":45,"context_line":"                # fixed IP."},{"line_number":46,"context_line":"                ip_address \u003d server[\u0027addresses\u0027][net][1][\u0027addr\u0027]"},{"line_number":47,"context_line":"            elif CONF.validation.connect_method \u003d\u003d \u0027fixed\u0027:"}],"source_content_type":"text/x-python","patch_set":35,"id":"ba3cc151_3102cf0a","line":44,"updated":"2015-07-10 08:07:24.000000000","message":"What guarantees this ?\nWhat if the server has multiple fixed addresses ?","commit_id":"bfc110fe1f5ae1abfac8fe213c8da249460c3f37"}]}
