)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":23184,"name":"DavidPurcell","email":"d.purcell222@gmail.com","username":"DavidPurcell"},"change_message_id":"9819c71c9d19f0fb39efad09577c4a10c56f0838","unresolved":false,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Compute API Server Actions Test"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Adds tests for start, stop of a server API"},{"line_number":10,"context_line":"Co-Authored-By: Felipe Monteiro \u003cfelipe.monteiro@att.com\u003e"},{"line_number":11,"context_line":"Co-Authored-By: GUPTA, SANGEET \u003csg774j@att.com\u003e"},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"Change-Id: If0e71a3afd6a49f21544883edad6758a6f2e8267"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":3,"id":"da36d5c6_5997d339","line":10,"range":{"start_line":9,"start_character":0,"end_line":10,"end_character":57},"updated":"2017-02-22 18:53:17.000000000","message":"Can you add in an implements or partially-implements tag here for the relevant blueprint on launchpad?  Should look something like this: Partially-Implements: blueprint initial-tests-compute","commit_id":"f06e4bcfd5163087ac8dbbbb4f25b0bec874972f"}],"patrole_tempest_plugin/tests/api/compute/test_server_actions_rbac.py":[{"author":{"_account_id":23184,"name":"DavidPurcell","email":"d.purcell222@gmail.com","username":"DavidPurcell"},"change_message_id":"ace654c98ef6c278be93f7aed0eaf36c9ca6d1be","unresolved":false,"context_lines":[{"line_number":63,"context_line":"        super(ServerActionsRbacTest, cls).setup_credentials()"},{"line_number":64,"context_line":""},{"line_number":65,"context_line":"    def _test_start_server(self):"},{"line_number":66,"context_line":"        self.client.stop_server(self.server_id)"},{"line_number":67,"context_line":"        waiters.wait_for_server_status(self.client, self.server_id, \u0027SHUTOFF\u0027)"},{"line_number":68,"context_line":"        self.client.start_server(self.server_id)"},{"line_number":69,"context_line":"        waiters.wait_for_server_status(self.client, self.server_id,"},{"line_number":70,"context_line":"                                       \u0027ACTIVE\u0027)"}],"source_content_type":"text/x-python","patch_set":1,"id":"da36d5c6_3f9f9151","line":67,"range":{"start_line":66,"start_character":8,"end_line":67,"end_character":78},"updated":"2017-02-21 16:03:57.000000000","message":"Can this be a call to _test_stop_server?","commit_id":"c2353684858f3ca9317500234df64173394fcc4b"},{"author":{"_account_id":23184,"name":"DavidPurcell","email":"d.purcell222@gmail.com","username":"DavidPurcell"},"change_message_id":"ace654c98ef6c278be93f7aed0eaf36c9ca6d1be","unresolved":false,"context_lines":[{"line_number":62,"context_line":"        cls.prepare_instance_network()"},{"line_number":63,"context_line":"        super(ServerActionsRbacTest, cls).setup_credentials()"},{"line_number":64,"context_line":""},{"line_number":65,"context_line":"    def _test_start_server(self):"},{"line_number":66,"context_line":"        self.client.stop_server(self.server_id)"},{"line_number":67,"context_line":"        waiters.wait_for_server_status(self.client, self.server_id, \u0027SHUTOFF\u0027)"},{"line_number":68,"context_line":"        self.client.start_server(self.server_id)"},{"line_number":69,"context_line":"        waiters.wait_for_server_status(self.client, self.server_id,"},{"line_number":70,"context_line":"                                       \u0027ACTIVE\u0027)"},{"line_number":71,"context_line":""},{"line_number":72,"context_line":"    def _test_stop_server(self):"},{"line_number":73,"context_line":"        self.client.stop_server(self.server_id)"}],"source_content_type":"text/x-python","patch_set":1,"id":"da36d5c6_3fd791c0","line":70,"range":{"start_line":65,"start_character":4,"end_line":70,"end_character":48},"updated":"2017-02-21 16:03:57.000000000","message":"See line 118 about possible issues with roles being unable to stop a server but being allowed to start it.","commit_id":"c2353684858f3ca9317500234df64173394fcc4b"},{"author":{"_account_id":23185,"name":"Samantha Blanco","email":"samantha.blanco@att.com","username":"sblanco"},"change_message_id":"5cf346feaab92cbd0f9fb1a367c7859a4dca931e","unresolved":false,"context_lines":[{"line_number":74,"context_line":"        waiters.wait_for_server_status(self.client, self.server_id,"},{"line_number":75,"context_line":"                                       \u0027SHUTOFF\u0027)"},{"line_number":76,"context_line":""},{"line_number":77,"context_line":"    def _test_reset_state(self):"},{"line_number":78,"context_line":"            self.client.reset_state(self.server_id)"},{"line_number":79,"context_line":"            self.client.reset_state(self.server_id, state\u003d\u0027active\u0027)"},{"line_number":80,"context_line":""},{"line_number":81,"context_line":"    def _test_create_backup(self):"},{"line_number":82,"context_line":"            backup \u003d data_utils.rand_name(\u0027backup\u0027)"}],"source_content_type":"text/x-python","patch_set":1,"id":"da36d5c6_25b14090","line":79,"range":{"start_line":77,"start_character":0,"end_line":79,"end_character":67},"updated":"2017-02-21 16:43:55.000000000","message":"I don\u0027t see where this is being used. I would recommend this as a cleanup as Nova does not allow delete in certain states","commit_id":"c2353684858f3ca9317500234df64173394fcc4b"},{"author":{"_account_id":23185,"name":"Samantha Blanco","email":"samantha.blanco@att.com","username":"sblanco"},"change_message_id":"5cf346feaab92cbd0f9fb1a367c7859a4dca931e","unresolved":false,"context_lines":[{"line_number":85,"context_line":"            image_id \u003d data_utils.parse_image_id(resp[\u0027location\u0027])"},{"line_number":86,"context_line":"            self.addCleanup(self.images_client.delete_image, image_id)"},{"line_number":87,"context_line":""},{"line_number":88,"context_line":"    @rbac_rule_validation.action("},{"line_number":89,"context_line":"        service\u003d\"nova\","},{"line_number":90,"context_line":"        rule\u003d\"compute:get_all\")"},{"line_number":91,"context_line":"    @decorators.idempotent_id(\u00271bfe3f93-d40c-4fba-a566-c087ea200f90\u0027)"},{"line_number":92,"context_line":"    def test_list_servers(self):"},{"line_number":93,"context_line":"        rbac_utils.switch_role(self, switchToRbacRole\u003dTrue)"},{"line_number":94,"context_line":"        self.client.list_servers()"},{"line_number":95,"context_line":""},{"line_number":96,"context_line":"    @rbac_rule_validation.action("},{"line_number":97,"context_line":"        service\u003d\"nova\","},{"line_number":98,"context_line":"        rule\u003d\"compute:get_all_tenants\")"},{"line_number":99,"context_line":"    @decorators.idempotent_id(\u00279fdb024e-e3c0-411b-817f-ed8a3a42a4e5\u0027)"},{"line_number":100,"context_line":"    def test_list_servers_all_tenants(self):"},{"line_number":101,"context_line":"        rbac_utils.switch_role(self, switchToRbacRole\u003dTrue)"},{"line_number":102,"context_line":"        self.client.list_servers()"},{"line_number":103,"context_line":""},{"line_number":104,"context_line":"    @rbac_rule_validation.action("},{"line_number":105,"context_line":"        service\u003d\"nova\","}],"source_content_type":"text/x-python","patch_set":1,"id":"da36d5c6_4569d424","line":102,"range":{"start_line":88,"start_character":0,"end_line":102,"end_character":34},"updated":"2017-02-21 16:43:55.000000000","message":"See David\u0027s note on L134","commit_id":"c2353684858f3ca9317500234df64173394fcc4b"},{"author":{"_account_id":23184,"name":"DavidPurcell","email":"d.purcell222@gmail.com","username":"DavidPurcell"},"change_message_id":"ace654c98ef6c278be93f7aed0eaf36c9ca6d1be","unresolved":false,"context_lines":[{"line_number":115,"context_line":"    @decorators.idempotent_id(\u00278876bfa9-4d10-406e-a335-a57e451abb12\u0027)"},{"line_number":116,"context_line":"    def test_start_server(self):"},{"line_number":117,"context_line":"        rbac_utils.switch_role(self, switchToRbacRole\u003dTrue)"},{"line_number":118,"context_line":"        self._test_start_server()"},{"line_number":119,"context_line":""},{"line_number":120,"context_line":"    @rbac_rule_validation.action("},{"line_number":121,"context_line":"        service\u003d\"nova\","}],"source_content_type":"text/x-python","patch_set":1,"id":"da36d5c6_9f607d37","line":118,"range":{"start_line":118,"start_character":8,"end_line":118,"end_character":33},"updated":"2017-02-21 16:03:57.000000000","message":"In the case where a role will has the ability to start a server but not to stop a server, this test case will fail, as _test_start_server hits both policy actions.  The stopping of the server should be handled before the switch_role.","commit_id":"c2353684858f3ca9317500234df64173394fcc4b"},{"author":{"_account_id":23184,"name":"DavidPurcell","email":"d.purcell222@gmail.com","username":"DavidPurcell"},"change_message_id":"ace654c98ef6c278be93f7aed0eaf36c9ca6d1be","unresolved":false,"context_lines":[{"line_number":117,"context_line":"        rbac_utils.switch_role(self, switchToRbacRole\u003dTrue)"},{"line_number":118,"context_line":"        self._test_start_server()"},{"line_number":119,"context_line":""},{"line_number":120,"context_line":"    @rbac_rule_validation.action("},{"line_number":121,"context_line":"        service\u003d\"nova\","},{"line_number":122,"context_line":"        rule\u003d\"compute:backup\")"},{"line_number":123,"context_line":"    @decorators.idempotent_id(\u00271124a44f-f4ce-4744-8c09-b547fe63fc7e\u0027)"},{"line_number":124,"context_line":"    def test_create_backup(self):"},{"line_number":125,"context_line":"        rbac_utils.switch_role(self, switchToRbacRole\u003dTrue)"},{"line_number":126,"context_line":"        self._test_create_backup()"},{"line_number":127,"context_line":""},{"line_number":128,"context_line":"    @rbac_rule_validation.action("},{"line_number":129,"context_line":"        service\u003d\"nova\","},{"line_number":130,"context_line":"        rule\u003d\"compute_extension:admin_actions:createBackup\")"},{"line_number":131,"context_line":"    @decorators.idempotent_id(\u0027405b6e3a-7122-421f-892d-1586fd8244bb\u0027)"},{"line_number":132,"context_line":"    def test_create_backup_ext(self):"},{"line_number":133,"context_line":"        rbac_utils.switch_role(self, switchToRbacRole\u003dTrue)"},{"line_number":134,"context_line":"        self._test_create_backup()"}],"source_content_type":"text/x-python","patch_set":1,"id":"da36d5c6_ff47b974","line":134,"range":{"start_line":120,"start_character":3,"end_line":134,"end_character":34},"updated":"2017-02-21 16:03:57.000000000","message":"Is there a difference between these two tests?  It seems like they are identical tests that we expect to hit two different policies.","commit_id":"c2353684858f3ca9317500234df64173394fcc4b"},{"author":{"_account_id":17896,"name":"Rick Bartra","email":"rickbartra@microsoft.com","username":"rb560u"},"change_message_id":"4a0a53c33594b436126c959d8612b9a1b6d94c6e","unresolved":false,"context_lines":[{"line_number":97,"context_line":""},{"line_number":98,"context_line":"    @rbac_rule_validation.action("},{"line_number":99,"context_line":"        service\u003d\"nova\","},{"line_number":100,"context_line":"        rule\u003d\"compute:stop\")"},{"line_number":101,"context_line":"    @decorators.idempotent_id(\u0027ab4a17d2-166f-4a6d-9944-f17baa576cf2\u0027)"},{"line_number":102,"context_line":"    def test_stop_server(self):"},{"line_number":103,"context_line":"        rbac_utils.switch_role(self, switchToRbacRole\u003dTrue)"}],"source_content_type":"text/x-python","patch_set":2,"id":"da36d5c6_083c4ce1","line":100,"range":{"start_line":100,"start_character":14,"end_line":100,"end_character":26},"updated":"2017-02-21 19:49:27.000000000","message":"I believe this is deprecated. \n\nhttps://github.com/openstack/nova/blob/master/nova/policies/servers.py\n\nI believe Nova now uses: os_compute_api:servers:stop\n\nif you want to use compute:stop , then you should specify a min and max microversion for the test.","commit_id":"b30f4b589f8e1858df62de59a8e3c7af289daa18"},{"author":{"_account_id":17896,"name":"Rick Bartra","email":"rickbartra@microsoft.com","username":"rb560u"},"change_message_id":"4a0a53c33594b436126c959d8612b9a1b6d94c6e","unresolved":false,"context_lines":[{"line_number":105,"context_line":""},{"line_number":106,"context_line":"    @rbac_rule_validation.action("},{"line_number":107,"context_line":"        service\u003d\"nova\","},{"line_number":108,"context_line":"        rule\u003d\"compute:start\")"},{"line_number":109,"context_line":"    @decorators.idempotent_id(\u00278876bfa9-4d10-406e-a335-a57e451abb12\u0027)"},{"line_number":110,"context_line":"    def test_start_server(self):"},{"line_number":111,"context_line":"        self._test_stop_server()"}],"source_content_type":"text/x-python","patch_set":2,"id":"da36d5c6_cb4dce73","line":108,"range":{"start_line":108,"start_character":14,"end_line":108,"end_character":27},"updated":"2017-02-21 19:49:27.000000000","message":"I believe this is deprecated. \n\nhttps://github.com/openstack/nova/blob/master/nova/policies/servers.py\n\nI believe Nova now uses: os_compute_api:servers:start\n\nif you want to use compute:start , then you should specify a min and max microversion for the test.","commit_id":"b30f4b589f8e1858df62de59a8e3c7af289daa18"},{"author":{"_account_id":17896,"name":"Rick Bartra","email":"rickbartra@microsoft.com","username":"rb560u"},"change_message_id":"4a0a53c33594b436126c959d8612b9a1b6d94c6e","unresolved":false,"context_lines":[{"line_number":114,"context_line":""},{"line_number":115,"context_line":"    @rbac_rule_validation.action("},{"line_number":116,"context_line":"        service\u003d\"nova\","},{"line_number":117,"context_line":"        rule\u003d\"compute:backup\")"},{"line_number":118,"context_line":"    @decorators.idempotent_id(\u00271124a44f-f4ce-4744-8c09-b547fe63fc7e\u0027)"},{"line_number":119,"context_line":"    def test_create_backup(self):"},{"line_number":120,"context_line":"        rbac_utils.switch_role(self, switchToRbacRole\u003dTrue)"}],"source_content_type":"text/x-python","patch_set":2,"id":"da36d5c6_ab309ae9","line":117,"range":{"start_line":117,"start_character":14,"end_line":117,"end_character":28},"updated":"2017-02-21 19:49:27.000000000","message":"I believe this is deprecated. \n\nhttps://github.com/openstack/nova/blob/4f91ed3a547965ed96a22520edcfb783e7936e95/nova/policies/create_backup.py\n\nos_compute_api:os-create-backup\n\nif you want to use compute:backup , then you should specify a min and max microversion for the test.","commit_id":"b30f4b589f8e1858df62de59a8e3c7af289daa18"},{"author":{"_account_id":23186,"name":"Felipe Monteiro","email":"felipe.carneiro.monteiro@gmail.com","username":"felipe.monteiro"},"change_message_id":"c7445dc6bb592ce291ef382752f6997c4fc9fafe","unresolved":false,"context_lines":[{"line_number":34,"context_line":"    def setup_clients(cls):"},{"line_number":35,"context_line":"        super(ServerActionsRbacTest, cls).setup_clients()"},{"line_number":36,"context_line":"        cls.client \u003d cls.servers_client"},{"line_number":37,"context_line":"        cls.images_client \u003d cls.compute_images_client"},{"line_number":38,"context_line":""},{"line_number":39,"context_line":"    @classmethod"},{"line_number":40,"context_line":"    def skip_checks(cls):"}],"source_content_type":"text/x-python","patch_set":4,"id":"da36d5c6_8f6702e8","line":37,"range":{"start_line":37,"start_character":8,"end_line":37,"end_character":53},"updated":"2017-02-23 22:58:16.000000000","message":"Currently unused.","commit_id":"4beadcaff6d766d4c441d65ed22e3f7c89d2d1c4"},{"author":{"_account_id":23186,"name":"Felipe Monteiro","email":"felipe.carneiro.monteiro@gmail.com","username":"felipe.monteiro"},"change_message_id":"2cff0d771153b9f524db2271208cea6511621e51","unresolved":false,"context_lines":[{"line_number":34,"context_line":"    def setup_clients(cls):"},{"line_number":35,"context_line":"        super(ServerActionsRbacTest, cls).setup_clients()"},{"line_number":36,"context_line":"        cls.client \u003d cls.servers_client"},{"line_number":37,"context_line":"        cls.images_client \u003d cls.compute_images_client"},{"line_number":38,"context_line":""},{"line_number":39,"context_line":"    @classmethod"},{"line_number":40,"context_line":"    def skip_checks(cls):"}],"source_content_type":"text/x-python","patch_set":4,"id":"da36d5c6_8ffdf90a","line":37,"range":{"start_line":37,"start_character":8,"end_line":37,"end_character":53},"in_reply_to":"da36d5c6_7fa96523","updated":"2017-02-27 14:10:49.000000000","message":"That\u0027s fine. Please add \"WIP\" to the front of the commit message or -1 Workflow your commit if you\u0027re not ready for it to be reviewed.","commit_id":"4beadcaff6d766d4c441d65ed22e3f7c89d2d1c4"},{"author":{"_account_id":23026,"name":"Sravan Kumar","email":"d.sravan.kumar@ericsson.com","username":"rajusravan"},"change_message_id":"29a94eeeec2ea9797a55018a8951e70d279d244e","unresolved":false,"context_lines":[{"line_number":34,"context_line":"    def setup_clients(cls):"},{"line_number":35,"context_line":"        super(ServerActionsRbacTest, cls).setup_clients()"},{"line_number":36,"context_line":"        cls.client \u003d cls.servers_client"},{"line_number":37,"context_line":"        cls.images_client \u003d cls.compute_images_client"},{"line_number":38,"context_line":""},{"line_number":39,"context_line":"    @classmethod"},{"line_number":40,"context_line":"    def skip_checks(cls):"}],"source_content_type":"text/x-python","patch_set":4,"id":"da36d5c6_7fa96523","line":37,"range":{"start_line":37,"start_character":8,"end_line":37,"end_character":53},"in_reply_to":"da36d5c6_8f6702e8","updated":"2017-02-27 06:19:05.000000000","message":"Felipe, In Parallel I am making changes for other actions locally and using images_client for some action.\nForget to delete this while doing code upload for start and stop of a server.","commit_id":"4beadcaff6d766d4c441d65ed22e3f7c89d2d1c4"},{"author":{"_account_id":23186,"name":"Felipe Monteiro","email":"felipe.carneiro.monteiro@gmail.com","username":"felipe.monteiro"},"change_message_id":"c7445dc6bb592ce291ef382752f6997c4fc9fafe","unresolved":false,"context_lines":[{"line_number":46,"context_line":"            raise cls.skipException("},{"line_number":47,"context_line":"                \u0027%s skipped as interface attachment is not available\u0027"},{"line_number":48,"context_line":"                % cls.__name__)"},{"line_number":49,"context_line":"        if not CONF.service_available.neutron:"},{"line_number":50,"context_line":"            raise cls.skipException("},{"line_number":51,"context_line":"                \u0027%s skipped as Neutron is required\u0027 % cls.__name__)"},{"line_number":52,"context_line":""},{"line_number":53,"context_line":"    @classmethod"},{"line_number":54,"context_line":"    def resource_setup(cls):"}],"source_content_type":"text/x-python","patch_set":4,"id":"da36d5c6_0f7b128d","line":51,"range":{"start_line":49,"start_character":0,"end_line":51,"end_character":67},"updated":"2017-02-23 22:58:16.000000000","message":"Only needed if network-related tests are provided. Currently, there are none.","commit_id":"4beadcaff6d766d4c441d65ed22e3f7c89d2d1c4"},{"author":{"_account_id":23186,"name":"Felipe Monteiro","email":"felipe.carneiro.monteiro@gmail.com","username":"felipe.monteiro"},"change_message_id":"c7445dc6bb592ce291ef382752f6997c4fc9fafe","unresolved":false,"context_lines":[{"line_number":54,"context_line":"    def resource_setup(cls):"},{"line_number":55,"context_line":"        cls.set_validation_resources()"},{"line_number":56,"context_line":"        super(ServerActionsRbacTest, cls).resource_setup()"},{"line_number":57,"context_line":"        cls.server_id \u003d cls.rebuild_server(None, validatable\u003dTrue)"},{"line_number":58,"context_line":""},{"line_number":59,"context_line":"    @classmethod"},{"line_number":60,"context_line":"    def setup_credentials(cls):"}],"source_content_type":"text/x-python","patch_set":4,"id":"da36d5c6_cf465a4e","line":57,"range":{"start_line":57,"start_character":24,"end_line":57,"end_character":66},"updated":"2017-02-23 22:58:16.000000000","message":"This should be cls.create_test_server(wait_until\u003d\u0027ACTIVE\u0027, validatable\u003dTrue) (assuming you need the server to be validatable).","commit_id":"4beadcaff6d766d4c441d65ed22e3f7c89d2d1c4"},{"author":{"_account_id":23186,"name":"Felipe Monteiro","email":"felipe.carneiro.monteiro@gmail.com","username":"felipe.monteiro"},"change_message_id":"c7445dc6bb592ce291ef382752f6997c4fc9fafe","unresolved":false,"context_lines":[{"line_number":56,"context_line":"        super(ServerActionsRbacTest, cls).resource_setup()"},{"line_number":57,"context_line":"        cls.server_id \u003d cls.rebuild_server(None, validatable\u003dTrue)"},{"line_number":58,"context_line":""},{"line_number":59,"context_line":"    @classmethod"},{"line_number":60,"context_line":"    def setup_credentials(cls):"},{"line_number":61,"context_line":"        cls.prepare_instance_network()"},{"line_number":62,"context_line":"        super(ServerActionsRbacTest, cls).setup_credentials()"},{"line_number":63,"context_line":""},{"line_number":64,"context_line":"    def _test_start_server(self):"},{"line_number":65,"context_line":"        self.client.start_server(self.server_id)"}],"source_content_type":"text/x-python","patch_set":4,"id":"da36d5c6_ef4ebe6d","line":62,"range":{"start_line":59,"start_character":0,"end_line":62,"end_character":61},"updated":"2017-02-23 22:58:16.000000000","message":"cls.prepare_instance_network() is only needed for network-related tests. The current list of tests below don\u0027t require a network. However, should you add more tests that do require a network, obviously it follows that this needs to be here.","commit_id":"4beadcaff6d766d4c441d65ed22e3f7c89d2d1c4"},{"author":{"_account_id":23026,"name":"Sravan Kumar","email":"d.sravan.kumar@ericsson.com","username":"rajusravan"},"change_message_id":"ec00888a1672e506f2f8c08580659c0f7fa5c1f7","unresolved":false,"context_lines":[{"line_number":56,"context_line":"        super(ServerActionsRbacTest, cls).resource_setup()"},{"line_number":57,"context_line":"        cls.server_id \u003d cls.rebuild_server(None, validatable\u003dTrue)"},{"line_number":58,"context_line":""},{"line_number":59,"context_line":"    @classmethod"},{"line_number":60,"context_line":"    def setup_credentials(cls):"},{"line_number":61,"context_line":"        cls.prepare_instance_network()"},{"line_number":62,"context_line":"        super(ServerActionsRbacTest, cls).setup_credentials()"},{"line_number":63,"context_line":""},{"line_number":64,"context_line":"    def _test_start_server(self):"},{"line_number":65,"context_line":"        self.client.start_server(self.server_id)"}],"source_content_type":"text/x-python","patch_set":4,"id":"da36d5c6_3f7fed15","line":62,"range":{"start_line":59,"start_character":0,"end_line":62,"end_character":61},"in_reply_to":"da36d5c6_ef4ebe6d","updated":"2017-02-27 05:56:25.000000000","message":"Got it Felipe.. I will do changes accordingly.","commit_id":"4beadcaff6d766d4c441d65ed22e3f7c89d2d1c4"},{"author":{"_account_id":23186,"name":"Felipe Monteiro","email":"felipe.carneiro.monteiro@gmail.com","username":"felipe.monteiro"},"change_message_id":"7ae3bc5e576903ea185dd8231dcfc61117c53b23","unresolved":false,"context_lines":[{"line_number":41,"context_line":"        if not CONF.compute_feature_enabled.api_extensions:"},{"line_number":42,"context_line":"            raise cls.skipException("},{"line_number":43,"context_line":"                \u0027%s skipped as no compute extensions enabled\u0027 % cls.__name__)"},{"line_number":44,"context_line":"        if not CONF.compute_feature_enabled.interface_attach:"},{"line_number":45,"context_line":"            raise cls.skipException("},{"line_number":46,"context_line":"                \u0027%s skipped as interface attachment is not available\u0027"},{"line_number":47,"context_line":"                % cls.__name__)"},{"line_number":48,"context_line":""},{"line_number":49,"context_line":"    @classmethod"},{"line_number":50,"context_line":"    def resource_setup(cls):"}],"source_content_type":"text/x-python","patch_set":5,"id":"da36d5c6_3dab67d8","line":47,"range":{"start_line":44,"start_character":0,"end_line":47,"end_character":31},"updated":"2017-02-27 15:01:36.000000000","message":"I\u0027m not entirely certain whether this\u0027ll be needed, but it might be if you test create:attach_volume or create:attach_network.","commit_id":"e87b92ee25935d3ed8c4de03efe7085141e24fca"}]}
