)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":7461,"name":"Paul Murray","email":"pmurray@hpe.com","username":"ptm"},"change_message_id":"46533704c318e38c420929a49d4b711cf2b8443f","unresolved":false,"context_lines":[{"line_number":4,"context_line":"Commit:     lanoux \u003cjoseph.lanoux@hpe.com\u003e"},{"line_number":5,"context_line":"CommitDate: 2016-02-03 05:47:08 -0800"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"WIP - DO NOT REVIEW"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Add a couple of tests attaching and detaching a volume from a shelved"},{"line_number":10,"context_line":"and shelved_offload server."}],"source_content_type":"text/x-gerrit-commit-message","patch_set":10,"id":"5a5ae5dd_7a5813fb","line":7,"updated":"2016-02-03 18:19:12.000000000","message":"I think this needs a better title :)\nWIP is enough, we do want it reviewed and it should say what it is - it should go in when it works.","commit_id":"1813d4e7ffa0b0c9be3a3b9493c678c6448fdb91"},{"author":{"_account_id":1865,"name":"Andrea Rosa","email":"andrea.rosa@gmail.com","username":"andrea-rosa-m"},"change_message_id":"faaac18b9659adffbae1d40baf8eb324fb6a5dbd","unresolved":false,"context_lines":[{"line_number":15,"context_line":" that\u0027s all disabled."},{"line_number":16,"context_line":""},{"line_number":17,"context_line":" #2 microversion support in tempest doesn\u0027t really exist, so we hack"},{"line_number":18,"context_line":"  up 2.20 requests when needed through judicious use of cut and paste."},{"line_number":19,"context_line":""},{"line_number":20,"context_line":"This patch should not be merged, but it does provide some validation"},{"line_number":21,"context_line":"the code works as expected."}],"source_content_type":"text/x-gerrit-commit-message","patch_set":20,"id":"5a5ae5dd_32d109fb","line":18,"range":{"start_line":18,"start_character":39,"end_line":18,"end_character":70},"updated":"2016-02-05 08:36:11.000000000","message":"\"judicious use of cut and paste\" is the most elegant way to say \"quick and dirty terrible hack\" just for that I think this patch deserves to be merged!","commit_id":"eaee7015845b705ba2584a1c0da372f62455d8d1"},{"author":{"_account_id":9152,"name":"Castulo J. Martinez","email":"castulo.martinez@intel.com","username":"cas"},"change_message_id":"06fe3a63beb9dae3904650837949b548464fce2b","unresolved":false,"context_lines":[{"line_number":9,"context_line":"Compute microversion v2.20 allows the volume attachment operations"},{"line_number":10,"context_line":"while server in shelved and shelved_offloaded state."},{"line_number":11,"context_line":""},{"line_number":12,"context_line":"Ref- http://docs.openstack.org/developer/nova/api_microversion_history.html#id18"},{"line_number":13,"context_line":""},{"line_number":14,"context_line":"This commit adds tests for that behavior and verify the attaching and detaching"},{"line_number":15,"context_line":"volumes from a shelved or shelved_offloaded server."}],"source_content_type":"text/x-gerrit-commit-message","patch_set":32,"id":"1af94dfe_fb1e620a","line":12,"range":{"start_line":12,"start_character":0,"end_line":12,"end_character":72},"updated":"2016-03-18 18:48:28.000000000","message":"The commit message exceeds the 72 characters limit defined in:\nhttps://wiki.openstack.org/wiki/GitCommitMessages","commit_id":"c549cf01af20a64b87076e4de899e8bcb6cea5d4"}],"tempest/api/compute/volumes/test_attach_volume.py":[{"author":{"_account_id":7461,"name":"Paul Murray","email":"pmurray@hpe.com","username":"ptm"},"change_message_id":"40841347b7a87cc4b44542b28b6c4891f5a58efb","unresolved":false,"context_lines":[{"line_number":183,"context_line":"        self.addCleanup(self._delete_volume(volume_2nd))"},{"line_number":184,"context_line":"        self.volumes_client.wait_for_volume_status(volume_2nd[\u0027id\u0027],"},{"line_number":185,"context_line":"                                                   \u0027available\u0027)"},{"line_number":186,"context_line":""},{"line_number":187,"context_line":"        self.servers_client.shelve_offload_server(self.server[\u0027id\u0027])"},{"line_number":188,"context_line":"        offload_time \u003d CONF.compute.shelved_offload_time"},{"line_number":189,"context_line":"        if offload_time \u003e\u003d 0:"}],"source_content_type":"text/x-python","patch_set":10,"id":"5a5ae5dd_9af86fe7","line":186,"updated":"2016-02-03 18:17:53.000000000","message":"I think the volume that is going to be detach should be attached here, while still active. Then detached after shelving.","commit_id":"1813d4e7ffa0b0c9be3a3b9493c678c6448fdb91"},{"author":{"_account_id":97,"name":"Daryl Walleck","email":"daryl.walleck@rackspace.com","username":"dwalleck"},"change_message_id":"049480a2b9186657243aa1fbb3d0fc0894590f08","unresolved":false,"context_lines":[{"line_number":186,"context_line":""},{"line_number":187,"context_line":"        self.servers_client.shelve_offload_server(self.server[\u0027id\u0027])"},{"line_number":188,"context_line":"        offload_time \u003d CONF.compute.shelved_offload_time"},{"line_number":189,"context_line":"        if offload_time \u003e\u003d 0:"},{"line_number":190,"context_line":"            waiters.wait_for_server_status(self.servers_client,"},{"line_number":191,"context_line":"                                           self.server[\u0027id\u0027],"},{"line_number":192,"context_line":"                                           \u0027SHELVED_OFFLOADED\u0027,"}],"source_content_type":"text/x-python","patch_set":11,"id":"5a5ae5dd_0c2d25a7","line":189,"updated":"2016-02-03 21:04:50.000000000","message":"This is a reasonable check to make, but it would make more sense to have this check in wait_for_server_status so that the check does not have to be repeated","commit_id":"1f5b4a0ace5c5dc2e8dbf1276c435d8bf441b042"},{"author":{"_account_id":10016,"name":"Joseph Lanoux","email":"joseph.lanoux@hpe.com","username":"lanoux"},"change_message_id":"168317ec48bd6a7663231e4e57061b1c130f91cd","unresolved":false,"context_lines":[{"line_number":186,"context_line":""},{"line_number":187,"context_line":"        self.servers_client.shelve_offload_server(self.server[\u0027id\u0027])"},{"line_number":188,"context_line":"        offload_time \u003d CONF.compute.shelved_offload_time"},{"line_number":189,"context_line":"        if offload_time \u003e\u003d 0:"},{"line_number":190,"context_line":"            waiters.wait_for_server_status(self.servers_client,"},{"line_number":191,"context_line":"                                           self.server[\u0027id\u0027],"},{"line_number":192,"context_line":"                                           \u0027SHELVED_OFFLOADED\u0027,"}],"source_content_type":"text/x-python","patch_set":11,"id":"5a5ae5dd_7b223903","line":189,"in_reply_to":"5a5ae5dd_0c2d25a7","updated":"2016-02-04 08:55:02.000000000","message":"Actually, I forgot to remove the condition. Thanks!","commit_id":"1f5b4a0ace5c5dc2e8dbf1276c435d8bf441b042"},{"author":{"_account_id":7461,"name":"Paul Murray","email":"pmurray@hpe.com","username":"ptm"},"change_message_id":"7214a5f083031f5d8e24e7b0aee9ec3d19baf329","unresolved":false,"context_lines":[{"line_number":159,"context_line":"    a shelved offload instance."},{"line_number":160,"context_line":"    \"\"\""},{"line_number":161,"context_line":""},{"line_number":162,"context_line":"    min_microversion \u003d \u00272.19\u0027"},{"line_number":163,"context_line":"    max_microversion \u003d \u0027latest\u0027"},{"line_number":164,"context_line":""},{"line_number":165,"context_line":"    @test.idempotent_id(\u002713a940b6-3474-4c3c-b03f-29b89112bfee\u0027)"}],"source_content_type":"text/x-python","patch_set":13,"id":"5a5ae5dd_f07c00ed","line":162,"updated":"2016-02-04 10:57:53.000000000","message":"I think this should be 2.20 - that\u0027s where the feature is introduced.","commit_id":"ac050f510327dc9a8675d0e48e1342178697bfba"},{"author":{"_account_id":9152,"name":"Castulo J. Martinez","email":"castulo.martinez@intel.com","username":"cas"},"change_message_id":"d187795110da911d8cd94da697d9d814ebf86ad9","unresolved":false,"context_lines":[{"line_number":167,"context_line":"                          \u0027Shelve is not available.\u0027)"},{"line_number":168,"context_line":"    def test_attach_volume_shelved_offload_server(self):"},{"line_number":169,"context_line":"        # Attach a volume from a shelved server."},{"line_number":170,"context_line":"        self.server \u003d self.create_test_server(wait_until\u003d\u0027ACTIVE\u0027)"},{"line_number":171,"context_line":""},{"line_number":172,"context_line":"        # Create a volume and wait for them to become available"},{"line_number":173,"context_line":"        volume \u003d self.volumes_client.create_volume("}],"source_content_type":"text/x-python","patch_set":19,"id":"5a5ae5dd_507dc16c","line":170,"range":{"start_line":170,"start_character":8,"end_line":170,"end_character":19},"updated":"2016-02-04 16:16:31.000000000","message":"Why do you use self.server instead of just server here? using a local variable would not be enough in this case?","commit_id":"0c48e879afc5e2c5f9d853ff7910e71ab61794a6"},{"author":{"_account_id":9152,"name":"Castulo J. Martinez","email":"castulo.martinez@intel.com","username":"cas"},"change_message_id":"d187795110da911d8cd94da697d9d814ebf86ad9","unresolved":false,"context_lines":[{"line_number":169,"context_line":"        # Attach a volume from a shelved server."},{"line_number":170,"context_line":"        self.server \u003d self.create_test_server(wait_until\u003d\u0027ACTIVE\u0027)"},{"line_number":171,"context_line":""},{"line_number":172,"context_line":"        # Create a volume and wait for them to become available"},{"line_number":173,"context_line":"        volume \u003d self.volumes_client.create_volume("},{"line_number":174,"context_line":"            size\u003dCONF.volume.volume_size,"},{"line_number":175,"context_line":"            display_name\u003d\u0027test_1st\u0027)[\u0027volume\u0027]"}],"source_content_type":"text/x-python","patch_set":19,"id":"5a5ae5dd_9a2d9848","line":172,"range":{"start_line":172,"start_character":39,"end_line":172,"end_character":43},"updated":"2016-02-04 16:16:31.000000000","message":"Little typo, you probably meant \"it\"instead of \"them\"","commit_id":"0c48e879afc5e2c5f9d853ff7910e71ab61794a6"},{"author":{"_account_id":9152,"name":"Castulo J. Martinez","email":"castulo.martinez@intel.com","username":"cas"},"change_message_id":"d187795110da911d8cd94da697d9d814ebf86ad9","unresolved":false,"context_lines":[{"line_number":186,"context_line":"                                       \u0027SHELVED_OFFLOADED\u0027)"},{"line_number":187,"context_line":""},{"line_number":188,"context_line":"        # Attach the volume to the server"},{"line_number":189,"context_line":"        self.attachment \u003d self.servers_client.attach_volume("},{"line_number":190,"context_line":"            self.server[\u0027id\u0027],"},{"line_number":191,"context_line":"            volumeId\u003dvolume[\u0027id\u0027],"},{"line_number":192,"context_line":"            device\u003d\u0027/dev/svda\u0027)[\u0027volumeAttachment\u0027]"}],"source_content_type":"text/x-python","patch_set":19,"id":"5a5ae5dd_903819a2","line":189,"range":{"start_line":189,"start_character":8,"end_line":189,"end_character":23},"updated":"2016-02-04 16:16:31.000000000","message":"same question as before with self.server, is it really necessary to use self.attachment instead of just a local variable here?","commit_id":"0c48e879afc5e2c5f9d853ff7910e71ab61794a6"},{"author":{"_account_id":9152,"name":"Castulo J. Martinez","email":"castulo.martinez@intel.com","username":"cas"},"change_message_id":"d187795110da911d8cd94da697d9d814ebf86ad9","unresolved":false,"context_lines":[{"line_number":193,"context_line":"        self.volumes_client.wait_for_volume_status(volume[\u0027id\u0027], \u0027in-use\u0027)"},{"line_number":194,"context_line":"        self.addCleanup(self._detach, self.server[\u0027id\u0027], volume[\u0027id\u0027])"},{"line_number":195,"context_line":""},{"line_number":196,"context_line":"        # Unshelve the instance and check that there are two volumes"},{"line_number":197,"context_line":"        self.servers_client.unshelve_server(self.server[\u0027id\u0027])"},{"line_number":198,"context_line":"        waiters.wait_for_server_status(self.servers_client,"},{"line_number":199,"context_line":"                                       self.server[\u0027id\u0027],"}],"source_content_type":"text/x-python","patch_set":19,"id":"5a5ae5dd_1dc6829a","line":196,"range":{"start_line":196,"start_character":61,"end_line":196,"end_character":68},"updated":"2016-02-04 16:16:31.000000000","message":"wouldn\u0027t it be more accurate to use something like \"two disks\" than \"two volumes\" in this comment? I can of feel that using the word volumes can be a little miss-leading.","commit_id":"0c48e879afc5e2c5f9d853ff7910e71ab61794a6"},{"author":{"_account_id":9152,"name":"Castulo J. Martinez","email":"castulo.martinez@intel.com","username":"cas"},"change_message_id":"d187795110da911d8cd94da697d9d814ebf86ad9","unresolved":false,"context_lines":[{"line_number":215,"context_line":"        # Attach a volume from a shelved server."},{"line_number":216,"context_line":"        self.server \u003d self.create_test_server(wait_until\u003d\u0027ACTIVE\u0027)"},{"line_number":217,"context_line":""},{"line_number":218,"context_line":"        # Create a volume and wait for them to become available"},{"line_number":219,"context_line":"        volume \u003d self.volumes_client.create_volume("},{"line_number":220,"context_line":"            size\u003dCONF.volume.volume_size,"},{"line_number":221,"context_line":"            display_name\u003d\u0027test_1st\u0027)[\u0027volume\u0027]"}],"source_content_type":"text/x-python","patch_set":19,"id":"5a5ae5dd_1dd0c21e","line":218,"range":{"start_line":218,"start_character":39,"end_line":218,"end_character":43},"updated":"2016-02-04 16:16:31.000000000","message":"same as above, small typo, should be \"it\" instead of \"them\"","commit_id":"0c48e879afc5e2c5f9d853ff7910e71ab61794a6"},{"author":{"_account_id":1865,"name":"Andrea Rosa","email":"andrea.rosa@gmail.com","username":"andrea-rosa-m"},"change_message_id":"53df57730e90c956221a77b7ee5e8fcba5b643d0","unresolved":false,"context_lines":[{"line_number":170,"context_line":"            wait_until\u003d\u0027ACTIVE\u0027,"},{"line_number":171,"context_line":"            adminPass\u003dself.image_ssh_password)"},{"line_number":172,"context_line":""},{"line_number":173,"context_line":"        # Create a volume and wait for them to become available"},{"line_number":174,"context_line":"        self.volume \u003d self.volumes_client.create_volume("},{"line_number":175,"context_line":"            size\u003dCONF.volume.volume_size,"},{"line_number":176,"context_line":"            display_name\u003d\u0027test_1st\u0027)[\u0027volume\u0027]"}],"source_content_type":"text/x-python","patch_set":31,"id":"3afc51ec_54e722e4","line":173,"range":{"start_line":173,"start_character":39,"end_line":173,"end_character":43},"updated":"2016-03-11 17:03:38.000000000","message":"nit: s/them/it","commit_id":"5e1ae36255975f2468e98920f21c40b5969057a4"},{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"9ad886039b78dbcbe5cb6c8de44cc3363639c522","unresolved":false,"context_lines":[{"line_number":170,"context_line":"            wait_until\u003d\u0027ACTIVE\u0027,"},{"line_number":171,"context_line":"            adminPass\u003dself.image_ssh_password)"},{"line_number":172,"context_line":""},{"line_number":173,"context_line":"        # Create a volume and wait for them to become available"},{"line_number":174,"context_line":"        self.volume \u003d self.volumes_client.create_volume("},{"line_number":175,"context_line":"            size\u003dCONF.volume.volume_size,"},{"line_number":176,"context_line":"            display_name\u003d\u0027test_1st\u0027)[\u0027volume\u0027]"}],"source_content_type":"text/x-python","patch_set":31,"id":"1af94dfe_6056bad3","line":173,"range":{"start_line":173,"start_character":39,"end_line":173,"end_character":43},"in_reply_to":"3afc51ec_54e722e4","updated":"2016-03-16 07:44:11.000000000","message":"Done","commit_id":"5e1ae36255975f2468e98920f21c40b5969057a4"},{"author":{"_account_id":1865,"name":"Andrea Rosa","email":"andrea.rosa@gmail.com","username":"andrea-rosa-m"},"change_message_id":"53df57730e90c956221a77b7ee5e8fcba5b643d0","unresolved":false,"context_lines":[{"line_number":182,"context_line":""},{"line_number":183,"context_line":"        # Shelve the server"},{"line_number":184,"context_line":"        self.servers_client.shelve_server(self.server[\u0027id\u0027])"},{"line_number":185,"context_line":"        offload_time \u003d CONF.compute.shelved_offload_time"},{"line_number":186,"context_line":"        if offload_time \u003e\u003d 0:"},{"line_number":187,"context_line":"            waiters.wait_for_server_status(self.servers_client,"},{"line_number":188,"context_line":"                                           self.server[\u0027id\u0027],"}],"source_content_type":"text/x-python","patch_set":31,"id":"3afc51ec_f730f0a0","line":185,"range":{"start_line":185,"start_character":8,"end_line":185,"end_character":56},"updated":"2016-03-11 17:03:38.000000000","message":"how can we change this value?\nIf the CONF file never changes we test just one of the two cases, I\u0027d like to have a way to tests SHELVED and SHELVED_OFFLOADED instances.","commit_id":"5e1ae36255975f2468e98920f21c40b5969057a4"},{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"9ad886039b78dbcbe5cb6c8de44cc3363639c522","unresolved":false,"context_lines":[{"line_number":182,"context_line":""},{"line_number":183,"context_line":"        # Shelve the server"},{"line_number":184,"context_line":"        self.servers_client.shelve_server(self.server[\u0027id\u0027])"},{"line_number":185,"context_line":"        offload_time \u003d CONF.compute.shelved_offload_time"},{"line_number":186,"context_line":"        if offload_time \u003e\u003d 0:"},{"line_number":187,"context_line":"            waiters.wait_for_server_status(self.servers_client,"},{"line_number":188,"context_line":"                                           self.server[\u0027id\u0027],"}],"source_content_type":"text/x-python","patch_set":31,"id":"1af94dfe_e00f6adf","line":185,"range":{"start_line":185,"start_character":8,"end_line":185,"end_character":56},"in_reply_to":"3afc51ec_f730f0a0","updated":"2016-03-16 07:44:11.000000000","message":"That can be done via config options only. That should be same as what is supported by cloud and that\u0027s why config option is.\n\nIf cloud have no shelved_offload_time on nova side which means directly \u0027SHELVED\u0027 then tempest cannot test \u0027shelved_offload\u0027 case as server will never go to \u0027SHELVED_OFFLOADED\u0027 state it will directly goes to \u0027SHELVED\u0027","commit_id":"5e1ae36255975f2468e98920f21c40b5969057a4"},{"author":{"_account_id":1865,"name":"Andrea Rosa","email":"andrea.rosa@gmail.com","username":"andrea-rosa-m"},"change_message_id":"53df57730e90c956221a77b7ee5e8fcba5b643d0","unresolved":false,"context_lines":[{"line_number":212,"context_line":"            self.image_ssh_password,"},{"line_number":213,"context_line":"            self.validation_resources[\u0027keypair\u0027][\u0027private_key\u0027])"},{"line_number":214,"context_line":""},{"line_number":215,"context_line":"        command \u003d \u0027grep vd /proc/partitions | wc -l\u0027"},{"line_number":216,"context_line":"        nb_partitions \u003d linux_client.exec_command(command).strip()"},{"line_number":217,"context_line":"        self.assertEqual(number_of_partition, nb_partitions)"},{"line_number":218,"context_line":""}],"source_content_type":"text/x-python","patch_set":31,"id":"3afc51ec_7d3a01cf","line":215,"range":{"start_line":215,"start_character":8,"end_line":215,"end_character":52},"updated":"2016-03-11 17:03:38.000000000","message":"I think this check is a bit weak, I\u0027d suggest we look for the specific device in the /dev/disk/by-uuid folder.\nWe need to change a bit the logic for verifying when the device is detached.","commit_id":"5e1ae36255975f2468e98920f21c40b5969057a4"},{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"9ad886039b78dbcbe5cb6c8de44cc3363639c522","unresolved":false,"context_lines":[{"line_number":212,"context_line":"            self.image_ssh_password,"},{"line_number":213,"context_line":"            self.validation_resources[\u0027keypair\u0027][\u0027private_key\u0027])"},{"line_number":214,"context_line":""},{"line_number":215,"context_line":"        command \u003d \u0027grep vd /proc/partitions | wc -l\u0027"},{"line_number":216,"context_line":"        nb_partitions \u003d linux_client.exec_command(command).strip()"},{"line_number":217,"context_line":"        self.assertEqual(number_of_partition, nb_partitions)"},{"line_number":218,"context_line":""}],"source_content_type":"text/x-python","patch_set":31,"id":"1af94dfe_6077da3a","line":215,"range":{"start_line":215,"start_character":8,"end_line":215,"end_character":52},"in_reply_to":"3afc51ec_7d3a01cf","updated":"2016-03-16 07:44:11.000000000","message":"Actually for shelve offload case, server would not have mounted volume so i do not think checking particular mount point will work.\n\nAfter unshelve it will mount to some drive which is not known.","commit_id":"5e1ae36255975f2468e98920f21c40b5969057a4"},{"author":{"_account_id":1865,"name":"Andrea Rosa","email":"andrea.rosa@gmail.com","username":"andrea-rosa-m"},"change_message_id":"53df57730e90c956221a77b7ee5e8fcba5b643d0","unresolved":false,"context_lines":[{"line_number":233,"context_line":"            self.attachment[\u0027id\u0027])[\u0027volumeAttachment\u0027]"},{"line_number":234,"context_line":"        self.assertEqual(self.server[\u0027id\u0027], volume_attachment[\u0027serverId\u0027])"},{"line_number":235,"context_line":"        self.assertEqual(self.attachment[\u0027id\u0027], volume_attachment[\u0027id\u0027])"},{"line_number":236,"context_line":"        # Check the mountpoint is not None after unselve server even in"},{"line_number":237,"context_line":"        # case of shelved_offloaded."},{"line_number":238,"context_line":"        self.assertIsNotNone(volume_attachment[\u0027device\u0027])"},{"line_number":239,"context_line":""}],"source_content_type":"text/x-python","patch_set":31,"id":"3afc51ec_f703d00b","line":236,"range":{"start_line":236,"start_character":49,"end_line":236,"end_character":56},"updated":"2016-03-11 17:03:38.000000000","message":"nit: unselve is a typo","commit_id":"5e1ae36255975f2468e98920f21c40b5969057a4"},{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"9ad886039b78dbcbe5cb6c8de44cc3363639c522","unresolved":false,"context_lines":[{"line_number":233,"context_line":"            self.attachment[\u0027id\u0027])[\u0027volumeAttachment\u0027]"},{"line_number":234,"context_line":"        self.assertEqual(self.server[\u0027id\u0027], volume_attachment[\u0027serverId\u0027])"},{"line_number":235,"context_line":"        self.assertEqual(self.attachment[\u0027id\u0027], volume_attachment[\u0027id\u0027])"},{"line_number":236,"context_line":"        # Check the mountpoint is not None after unselve server even in"},{"line_number":237,"context_line":"        # case of shelved_offloaded."},{"line_number":238,"context_line":"        self.assertIsNotNone(volume_attachment[\u0027device\u0027])"},{"line_number":239,"context_line":""}],"source_content_type":"text/x-python","patch_set":31,"id":"1af94dfe_6004fabf","line":236,"range":{"start_line":236,"start_character":49,"end_line":236,"end_character":56},"in_reply_to":"3afc51ec_f703d00b","updated":"2016-03-16 07:44:11.000000000","message":"Done","commit_id":"5e1ae36255975f2468e98920f21c40b5969057a4"},{"author":{"_account_id":1865,"name":"Andrea Rosa","email":"andrea.rosa@gmail.com","username":"andrea-rosa-m"},"change_message_id":"53df57730e90c956221a77b7ee5e8fcba5b643d0","unresolved":false,"context_lines":[{"line_number":239,"context_line":""},{"line_number":240,"context_line":"        # Shelve the server for detach volume testing"},{"line_number":241,"context_line":"        self.servers_client.shelve_server(self.server[\u0027id\u0027])"},{"line_number":242,"context_line":"        offload_time \u003d CONF.compute.shelved_offload_time"},{"line_number":243,"context_line":"        if offload_time \u003e\u003d 0:"},{"line_number":244,"context_line":"            waiters.wait_for_server_status(self.servers_client,"},{"line_number":245,"context_line":"                                           self.server[\u0027id\u0027],"}],"source_content_type":"text/x-python","patch_set":31,"id":"3afc51ec_37ec18c7","line":242,"range":{"start_line":242,"start_character":8,"end_line":242,"end_character":56},"updated":"2016-03-11 17:03:38.000000000","message":"same question here, how can we control the shelved_offload_time value?","commit_id":"5e1ae36255975f2468e98920f21c40b5969057a4"},{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"9ad886039b78dbcbe5cb6c8de44cc3363639c522","unresolved":false,"context_lines":[{"line_number":239,"context_line":""},{"line_number":240,"context_line":"        # Shelve the server for detach volume testing"},{"line_number":241,"context_line":"        self.servers_client.shelve_server(self.server[\u0027id\u0027])"},{"line_number":242,"context_line":"        offload_time \u003d CONF.compute.shelved_offload_time"},{"line_number":243,"context_line":"        if offload_time \u003e\u003d 0:"},{"line_number":244,"context_line":"            waiters.wait_for_server_status(self.servers_client,"},{"line_number":245,"context_line":"                                           self.server[\u0027id\u0027],"}],"source_content_type":"text/x-python","patch_set":31,"id":"1af94dfe_c02b4e2f","line":242,"range":{"start_line":242,"start_character":8,"end_line":242,"end_character":56},"in_reply_to":"3afc51ec_37ec18c7","updated":"2016-03-16 07:44:11.000000000","message":"Ditto, via config options.","commit_id":"5e1ae36255975f2468e98920f21c40b5969057a4"},{"author":{"_account_id":7350,"name":"Jordan Pittier","email":"jordan.pittier@gmail.com","username":"JordanP"},"change_message_id":"ca2f1acfd227433ac8855d73687d21c1e8eec0ff","unresolved":false,"context_lines":[{"line_number":62,"context_line":"            self.volumes_client.wait_for_resource_deletion(self.volume[\u0027id\u0027])"},{"line_number":63,"context_line":"            self.volume \u003d None"},{"line_number":64,"context_line":""},{"line_number":65,"context_line":"    def _shelve_server(self):"},{"line_number":66,"context_line":"        # Shelve the server"},{"line_number":67,"context_line":"        self.servers_client.shelve_server(self.server[\u0027id\u0027])"},{"line_number":68,"context_line":"        offload_time \u003d CONF.compute.shelved_offload_time"}],"source_content_type":"text/x-python","patch_set":32,"id":"fa0719c6_7c547820","line":65,"updated":"2016-03-22 15:06:29.000000000","message":"This is code duplicated from somewhere. I recognize this code and it\u0027s somewhere else in Tempest. We shouldn\u0027t duplicate code.","commit_id":"c549cf01af20a64b87076e4de899e8bcb6cea5d4"},{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"473b028f5e20aa9cf5420b90c04bc4084e4835f3","unresolved":false,"context_lines":[{"line_number":62,"context_line":"            self.volumes_client.wait_for_resource_deletion(self.volume[\u0027id\u0027])"},{"line_number":63,"context_line":"            self.volume \u003d None"},{"line_number":64,"context_line":""},{"line_number":65,"context_line":"    def _shelve_server(self):"},{"line_number":66,"context_line":"        # Shelve the server"},{"line_number":67,"context_line":"        self.servers_client.shelve_server(self.server[\u0027id\u0027])"},{"line_number":68,"context_line":"        offload_time \u003d CONF.compute.shelved_offload_time"}],"source_content_type":"text/x-python","patch_set":32,"id":"fa0719c6_af3dc6de","line":65,"in_reply_to":"fa0719c6_7c547820","updated":"2016-03-24 09:01:02.000000000","message":"Yea, nice point. Actually it is in https://github.com/openstack/tempest/blob/master/tempest/scenario/test_shelve_instance.py#L37\n\nBut that is different than what we need here. That one unshelve the server immediately. \n\nBut we can refactor that later to avoid duplication.","commit_id":"c549cf01af20a64b87076e4de899e8bcb6cea5d4"},{"author":{"_account_id":10016,"name":"Joseph Lanoux","email":"joseph.lanoux@hpe.com","username":"lanoux"},"change_message_id":"96ecc90c867dfd4c3e3b274c62dd0a517968bbff","unresolved":false,"context_lines":[{"line_number":66,"context_line":"        # Shelve the server"},{"line_number":67,"context_line":"        self.servers_client.shelve_server(self.server[\u0027id\u0027])"},{"line_number":68,"context_line":"        offload_time \u003d CONF.compute.shelved_offload_time"},{"line_number":69,"context_line":"        if offload_time \u003e\u003d 0:"},{"line_number":70,"context_line":"            waiters.wait_for_server_status(self.servers_client,"},{"line_number":71,"context_line":"                                           self.server[\u0027id\u0027],"},{"line_number":72,"context_line":"                                           \u0027SHELVED_OFFLOADED\u0027,"}],"source_content_type":"text/x-python","patch_set":32,"id":"1af94dfe_10261fce","line":69,"updated":"2016-03-16 09:43:16.000000000","message":"SHELVED and SHELVED_OFFLOADED are two different states of the server and are independent of the cloud. Another case can be added to test SHELVED server.","commit_id":"c549cf01af20a64b87076e4de899e8bcb6cea5d4"},{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"473b028f5e20aa9cf5420b90c04bc4084e4835f3","unresolved":false,"context_lines":[{"line_number":66,"context_line":"        # Shelve the server"},{"line_number":67,"context_line":"        self.servers_client.shelve_server(self.server[\u0027id\u0027])"},{"line_number":68,"context_line":"        offload_time \u003d CONF.compute.shelved_offload_time"},{"line_number":69,"context_line":"        if offload_time \u003e\u003d 0:"},{"line_number":70,"context_line":"            waiters.wait_for_server_status(self.servers_client,"},{"line_number":71,"context_line":"                                           self.server[\u0027id\u0027],"},{"line_number":72,"context_line":"                                           \u0027SHELVED_OFFLOADED\u0027,"}],"source_content_type":"text/x-python","patch_set":32,"id":"fa0719c6_af14a64c","line":69,"in_reply_to":"1af94dfe_10261fce","updated":"2016-03-24 09:01:02.000000000","message":"Yea, we can add but shelved state tests will always be skipped in case of offload_time \u003e\u003d 0 where server goes directly to shelved offload state immediately or after offload time.\n\nIf offload_time is -1 then we can test both states by adding new tests.\n\nSo current tests will tests shelved or shelved offload state as per cloud is configured.","commit_id":"c549cf01af20a64b87076e4de899e8bcb6cea5d4"},{"author":{"_account_id":7350,"name":"Jordan Pittier","email":"jordan.pittier@gmail.com","username":"JordanP"},"change_message_id":"ad11c08281c2e1efe832ed1ccae6e5e92013f7ed","unresolved":false,"context_lines":[{"line_number":76,"context_line":"                                           self.server[\u0027id\u0027],"},{"line_number":77,"context_line":"                                           \u0027SHELVED\u0027)"},{"line_number":78,"context_line":""},{"line_number":79,"context_line":"    def _create_and_attach(self, shelve_server\u003dFalse):"},{"line_number":80,"context_line":"        # Start a server and wait for it to become ready"},{"line_number":81,"context_line":"        self.admin_pass \u003d self.image_ssh_password"},{"line_number":82,"context_line":"        self.server \u003d self.create_test_server("}],"source_content_type":"text/x-python","patch_set":32,"id":"fa0719c6_5e901a95","line":79,"updated":"2016-03-24 10:01:02.000000000","message":"This method does too much now. We should split it I think. If we split it, then each sub methods can return a variable so we don\"t have to set instance variables (like self.server and self.attachment)","commit_id":"c549cf01af20a64b87076e4de899e8bcb6cea5d4"},{"author":{"_account_id":10016,"name":"Joseph Lanoux","email":"joseph.lanoux@hpe.com","username":"lanoux"},"change_message_id":"96ecc90c867dfd4c3e3b274c62dd0a517968bbff","unresolved":false,"context_lines":[{"line_number":192,"context_line":"            self.admin_pass,"},{"line_number":193,"context_line":"            self.validation_resources[\u0027keypair\u0027][\u0027private_key\u0027])"},{"line_number":194,"context_line":""},{"line_number":195,"context_line":"        command \u003d \u0027grep vd /proc/partitions | wc -l\u0027"},{"line_number":196,"context_line":"        nb_partitions \u003d linux_client.exec_command(command).strip()"},{"line_number":197,"context_line":"        self.assertEqual(number_of_partition, nb_partitions)"},{"line_number":198,"context_line":""}],"source_content_type":"text/x-python","patch_set":32,"id":"1af94dfe_f009f332","line":195,"updated":"2016-03-16 09:43:16.000000000","message":"The real reason is that by-uuid is not supported by the Cirros image so it\u0027s all we have. And we\u0027re not relying on mounted or unmounted drives here.","commit_id":"c549cf01af20a64b87076e4de899e8bcb6cea5d4"},{"author":{"_account_id":9152,"name":"Castulo J. Martinez","email":"castulo.martinez@intel.com","username":"cas"},"change_message_id":"06fe3a63beb9dae3904650837949b548464fce2b","unresolved":false,"context_lines":[{"line_number":201,"context_line":"                          \u0027Shelve is not available.\u0027)"},{"line_number":202,"context_line":"    @testtools.skipUnless(CONF.validation.run_validation,"},{"line_number":203,"context_line":"                          \u0027SSH required for this test\u0027)"},{"line_number":204,"context_line":"    def test_attach_volume_shelved_offload_server(self):"},{"line_number":205,"context_line":"        self._create_and_attach(shelve_server\u003dTrue)"},{"line_number":206,"context_line":""},{"line_number":207,"context_line":"        # Unshelve the instance and check that there are two volumes"}],"source_content_type":"text/x-python","patch_set":32,"id":"1af94dfe_be495e33","line":204,"range":{"start_line":204,"start_character":8,"end_line":204,"end_character":49},"updated":"2016-03-18 18:48:28.000000000","message":"I think using this name for the test could be misleading. From this name you would assume this test is going to attach a volume to a server which is in shelved offload state, however this won\u0027t necessarily happen, if the nova.con in the environment being tested has the shelved_offload_time \u003d -1 then the end state of the server will be just shelved, but the test would still pass. So the name of this test could reflect that either shelved scenario could be tested or as Joseph Lanoux commented above just separate the tests for both cases.","commit_id":"c549cf01af20a64b87076e4de899e8bcb6cea5d4"},{"author":{"_account_id":7350,"name":"Jordan Pittier","email":"jordan.pittier@gmail.com","username":"JordanP"},"change_message_id":"ca2f1acfd227433ac8855d73687d21c1e8eec0ff","unresolved":false,"context_lines":[{"line_number":201,"context_line":"                          \u0027Shelve is not available.\u0027)"},{"line_number":202,"context_line":"    @testtools.skipUnless(CONF.validation.run_validation,"},{"line_number":203,"context_line":"                          \u0027SSH required for this test\u0027)"},{"line_number":204,"context_line":"    def test_attach_volume_shelved_offload_server(self):"},{"line_number":205,"context_line":"        self._create_and_attach(shelve_server\u003dTrue)"},{"line_number":206,"context_line":""},{"line_number":207,"context_line":"        # Unshelve the instance and check that there are two volumes"}],"source_content_type":"text/x-python","patch_set":32,"id":"fa0719c6_9e006103","line":204,"range":{"start_line":204,"start_character":8,"end_line":204,"end_character":49},"in_reply_to":"1af94dfe_be495e33","updated":"2016-03-22 15:06:29.000000000","message":"Agreed.","commit_id":"c549cf01af20a64b87076e4de899e8bcb6cea5d4"},{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"473b028f5e20aa9cf5420b90c04bc4084e4835f3","unresolved":false,"context_lines":[{"line_number":201,"context_line":"                          \u0027Shelve is not available.\u0027)"},{"line_number":202,"context_line":"    @testtools.skipUnless(CONF.validation.run_validation,"},{"line_number":203,"context_line":"                          \u0027SSH required for this test\u0027)"},{"line_number":204,"context_line":"    def test_attach_volume_shelved_offload_server(self):"},{"line_number":205,"context_line":"        self._create_and_attach(shelve_server\u003dTrue)"},{"line_number":206,"context_line":""},{"line_number":207,"context_line":"        # Unshelve the instance and check that there are two volumes"}],"source_content_type":"text/x-python","patch_set":32,"id":"fa0719c6_127b39c2","line":204,"range":{"start_line":204,"start_character":8,"end_line":204,"end_character":49},"in_reply_to":"fa0719c6_9e006103","updated":"2016-03-24 09:01:02.000000000","message":"ok, adding new tests will always skip for offload time \u003e\u003d0. please see my comment above.\n\nBut yea test name can be adjusted.","commit_id":"c549cf01af20a64b87076e4de899e8bcb6cea5d4"},{"author":{"_account_id":7350,"name":"Jordan Pittier","email":"jordan.pittier@gmail.com","username":"JordanP"},"change_message_id":"ca2f1acfd227433ac8855d73687d21c1e8eec0ff","unresolved":false,"context_lines":[{"line_number":227,"context_line":""},{"line_number":228,"context_line":"        # Detach the volume"},{"line_number":229,"context_line":"        self._detach(self.server[\u0027id\u0027], self.volume[\u0027id\u0027])"},{"line_number":230,"context_line":"        self.attachment \u003d None"},{"line_number":231,"context_line":""},{"line_number":232,"context_line":"        # Unshelve the instance and check that there is only one volume"},{"line_number":233,"context_line":"        self._unshelve_server_and_check_volumes(\u00271\u0027)"}],"source_content_type":"text/x-python","patch_set":32,"id":"fa0719c6_7e510d0e","line":230,"updated":"2016-03-22 15:06:29.000000000","message":"Why do we need this variable ? We should not use instance variable when it\u0027s not needed.","commit_id":"c549cf01af20a64b87076e4de899e8bcb6cea5d4"},{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"a069b537150173162cdf278fe5ee33f8b8c4d477","unresolved":false,"context_lines":[{"line_number":227,"context_line":""},{"line_number":228,"context_line":"        # Detach the volume"},{"line_number":229,"context_line":"        self._detach(self.server[\u0027id\u0027], self.volume[\u0027id\u0027])"},{"line_number":230,"context_line":"        self.attachment \u003d None"},{"line_number":231,"context_line":""},{"line_number":232,"context_line":"        # Unshelve the instance and check that there is only one volume"},{"line_number":233,"context_line":"        self._unshelve_server_and_check_volumes(\u00271\u0027)"}],"source_content_type":"text/x-python","patch_set":32,"id":"5a18252c_2edf3b0e","line":230,"in_reply_to":"fa0719c6_23d54de7","updated":"2016-04-14 03:40:02.000000000","message":"yea, that\u0027s much needed. This class need re factoring, ll do in separate patch. let\u0027s not mix refactoring with this patch.","commit_id":"c549cf01af20a64b87076e4de899e8bcb6cea5d4"},{"author":{"_account_id":7350,"name":"Jordan Pittier","email":"jordan.pittier@gmail.com","username":"JordanP"},"change_message_id":"ad11c08281c2e1efe832ed1ccae6e5e92013f7ed","unresolved":false,"context_lines":[{"line_number":227,"context_line":""},{"line_number":228,"context_line":"        # Detach the volume"},{"line_number":229,"context_line":"        self._detach(self.server[\u0027id\u0027], self.volume[\u0027id\u0027])"},{"line_number":230,"context_line":"        self.attachment \u003d None"},{"line_number":231,"context_line":""},{"line_number":232,"context_line":"        # Unshelve the instance and check that there is only one volume"},{"line_number":233,"context_line":"        self._unshelve_server_and_check_volumes(\u00271\u0027)"}],"source_content_type":"text/x-python","patch_set":32,"id":"fa0719c6_23d54de7","line":230,"in_reply_to":"fa0719c6_72a715bd","updated":"2016-03-24 10:01:02.000000000","message":"Then now is a good time to rework that  cleanup _detach() method and kill this self.attachment variable everywhere. _create_and_attach() should return an \"attachment\" and not define self.attachment.","commit_id":"c549cf01af20a64b87076e4de899e8bcb6cea5d4"},{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"473b028f5e20aa9cf5420b90c04bc4084e4835f3","unresolved":false,"context_lines":[{"line_number":227,"context_line":""},{"line_number":228,"context_line":"        # Detach the volume"},{"line_number":229,"context_line":"        self._detach(self.server[\u0027id\u0027], self.volume[\u0027id\u0027])"},{"line_number":230,"context_line":"        self.attachment \u003d None"},{"line_number":231,"context_line":""},{"line_number":232,"context_line":"        # Unshelve the instance and check that there is only one volume"},{"line_number":233,"context_line":"        self._unshelve_server_and_check_volumes(\u00271\u0027)"}],"source_content_type":"text/x-python","patch_set":32,"id":"fa0719c6_72a715bd","line":230,"in_reply_to":"fa0719c6_7e510d0e","updated":"2016-03-24 09:01:02.000000000","message":"Actually we are detaching volume here explicitly and need to make self.attachment to None to avoid failure in cleanup _detach() which is being added while attaching volume","commit_id":"c549cf01af20a64b87076e4de899e8bcb6cea5d4"},{"author":{"_account_id":7350,"name":"Jordan Pittier","email":"jordan.pittier@gmail.com","username":"JordanP"},"change_message_id":"20ebf77605024257b0ab968ae39d8474ce818c79","unresolved":false,"context_lines":[{"line_number":63,"context_line":"            self.volumes_client.wait_for_resource_deletion(self.volume[\u0027id\u0027])"},{"line_number":64,"context_line":"            self.volume \u003d None"},{"line_number":65,"context_line":""},{"line_number":66,"context_line":"    def _shelve_server(self):"},{"line_number":67,"context_line":"        # Shelve the server"},{"line_number":68,"context_line":"        self.servers_client.shelve_server(self.server[\u0027id\u0027])"},{"line_number":69,"context_line":"        offload_time \u003d CONF.compute.shelved_offload_time"}],"source_content_type":"text/x-python","patch_set":33,"id":"5a18252c_20cedf62","line":66,"updated":"2016-04-15 08:00:50.000000000","message":"Could you move than in tempest/common/compute.py please ? And change test_delete_server.py to use the new helper ?\n\nThis is duplicating some code that could be reused in the future.","commit_id":"de28b575f5f89d5fb684ae094805f514c6d08871"},{"author":{"_account_id":10016,"name":"Joseph Lanoux","email":"joseph.lanoux@hpe.com","username":"lanoux"},"change_message_id":"cd433459e925156d73adc26320083aa69cef6bba","unresolved":false,"context_lines":[{"line_number":63,"context_line":"            self.volumes_client.wait_for_resource_deletion(self.volume[\u0027id\u0027])"},{"line_number":64,"context_line":"            self.volume \u003d None"},{"line_number":65,"context_line":""},{"line_number":66,"context_line":"    def _shelve_server(self):"},{"line_number":67,"context_line":"        # Shelve the server"},{"line_number":68,"context_line":"        self.servers_client.shelve_server(self.server[\u0027id\u0027])"},{"line_number":69,"context_line":"        offload_time \u003d CONF.compute.shelved_offload_time"}],"source_content_type":"text/x-python","patch_set":33,"id":"1a122d0e_1fab068b","line":66,"in_reply_to":"1a122d0e_625268df","updated":"2016-04-15 13:02:17.000000000","message":"Sorry - I got confused.","commit_id":"de28b575f5f89d5fb684ae094805f514c6d08871"},{"author":{"_account_id":7350,"name":"Jordan Pittier","email":"jordan.pittier@gmail.com","username":"JordanP"},"change_message_id":"a80a00d05a77f974115b9211c29b85f1873810ea","unresolved":false,"context_lines":[{"line_number":63,"context_line":"            self.volumes_client.wait_for_resource_deletion(self.volume[\u0027id\u0027])"},{"line_number":64,"context_line":"            self.volume \u003d None"},{"line_number":65,"context_line":""},{"line_number":66,"context_line":"    def _shelve_server(self):"},{"line_number":67,"context_line":"        # Shelve the server"},{"line_number":68,"context_line":"        self.servers_client.shelve_server(self.server[\u0027id\u0027])"},{"line_number":69,"context_line":"        offload_time \u003d CONF.compute.shelved_offload_time"}],"source_content_type":"text/x-python","patch_set":33,"id":"1a122d0e_625268df","line":66,"in_reply_to":"1a122d0e_9651ca11","updated":"2016-04-15 11:20:12.000000000","message":"How / since when, tempest/common/compute.py is only for server creation ? I thought it was the place for common utility functions related to the compute service.","commit_id":"de28b575f5f89d5fb684ae094805f514c6d08871"},{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"89de8cbc4ee8a43f42dc95f852dea2a849e653b9","unresolved":false,"context_lines":[{"line_number":63,"context_line":"            self.volumes_client.wait_for_resource_deletion(self.volume[\u0027id\u0027])"},{"line_number":64,"context_line":"            self.volume \u003d None"},{"line_number":65,"context_line":""},{"line_number":66,"context_line":"    def _shelve_server(self):"},{"line_number":67,"context_line":"        # Shelve the server"},{"line_number":68,"context_line":"        self.servers_client.shelve_server(self.server[\u0027id\u0027])"},{"line_number":69,"context_line":"        offload_time \u003d CONF.compute.shelved_offload_time"}],"source_content_type":"text/x-python","patch_set":33,"id":"1a122d0e_9651ca11","line":66,"in_reply_to":"3a1531f4_f4b5987e","updated":"2016-04-15 09:42:47.000000000","message":"Yea, i saw its been in 3-4 places. better to put it in compute. Thanks. \n\n@Joseph - defiantly not with create server, i will add separately.","commit_id":"de28b575f5f89d5fb684ae094805f514c6d08871"},{"author":{"_account_id":10016,"name":"Joseph Lanoux","email":"joseph.lanoux@hpe.com","username":"lanoux"},"change_message_id":"ce5aeaca9479e6b594fc3cb936581271b16e88df","unresolved":false,"context_lines":[{"line_number":63,"context_line":"            self.volumes_client.wait_for_resource_deletion(self.volume[\u0027id\u0027])"},{"line_number":64,"context_line":"            self.volume \u003d None"},{"line_number":65,"context_line":""},{"line_number":66,"context_line":"    def _shelve_server(self):"},{"line_number":67,"context_line":"        # Shelve the server"},{"line_number":68,"context_line":"        self.servers_client.shelve_server(self.server[\u0027id\u0027])"},{"line_number":69,"context_line":"        offload_time \u003d CONF.compute.shelved_offload_time"}],"source_content_type":"text/x-python","patch_set":33,"id":"3a1531f4_f4b5987e","line":66,"in_reply_to":"5a18252c_20cedf62","updated":"2016-04-15 08:31:37.000000000","message":"I agree that this bit is duplicated and could be centralized but not in compute.py as it has nothing to do with server creation.","commit_id":"de28b575f5f89d5fb684ae094805f514c6d08871"},{"author":{"_account_id":7350,"name":"Jordan Pittier","email":"jordan.pittier@gmail.com","username":"JordanP"},"change_message_id":"20ebf77605024257b0ab968ae39d8474ce818c79","unresolved":false,"context_lines":[{"line_number":77,"context_line":"                                           self.server[\u0027id\u0027],"},{"line_number":78,"context_line":"                                           \u0027SHELVED\u0027)"},{"line_number":79,"context_line":""},{"line_number":80,"context_line":"    def _create_and_attach(self, shelve_server\u003dFalse):"},{"line_number":81,"context_line":"        # Start a server and wait for it to become ready"},{"line_number":82,"context_line":"        self.admin_pass \u003d self.image_ssh_password"},{"line_number":83,"context_line":"        self.server \u003d self.create_test_server("}],"source_content_type":"text/x-python","patch_set":33,"id":"5a18252c_40eddbb5","line":80,"updated":"2016-04-15 08:00:50.000000000","message":"This function does do much now. Functions should be kept small and serve only one purpose.","commit_id":"de28b575f5f89d5fb684ae094805f514c6d08871"},{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"89de8cbc4ee8a43f42dc95f852dea2a849e653b9","unresolved":false,"context_lines":[{"line_number":77,"context_line":"                                           self.server[\u0027id\u0027],"},{"line_number":78,"context_line":"                                           \u0027SHELVED\u0027)"},{"line_number":79,"context_line":""},{"line_number":80,"context_line":"    def _create_and_attach(self, shelve_server\u003dFalse):"},{"line_number":81,"context_line":"        # Start a server and wait for it to become ready"},{"line_number":82,"context_line":"        self.admin_pass \u003d self.image_ssh_password"},{"line_number":83,"context_line":"        self.server \u003d self.create_test_server("}],"source_content_type":"text/x-python","patch_set":33,"id":"1a122d0e_5648d25b","line":80,"in_reply_to":"5a18252c_40eddbb5","updated":"2016-04-15 09:42:47.000000000","message":"Yea, totally agree on this, but still i will say better to do these refactoring later. Do not worry i have that in my TODO :)","commit_id":"de28b575f5f89d5fb684ae094805f514c6d08871"}]}
