)]}'
{"tempest/clients.py":[{"author":{"_account_id":5196,"name":"Matthew Treinish","email":"mtreinish@kortar.org","username":"treinish"},"change_message_id":"08b5167dc0216275ed26bbcfe292336d5f29f338","unresolved":false,"context_lines":[{"line_number":611,"context_line":""},{"line_number":612,"context_line":"    def _get_baremetal_client(self):"},{"line_number":613,"context_line":"        # ironic client is currently intended to by used by admin users"},{"line_number":614,"context_line":"        username \u003d CONF.identity.admin_username"},{"line_number":615,"context_line":"        password \u003d CONF.identity.admin_password"},{"line_number":616,"context_line":"        tenant_name \u003d CONF.identity.admin_tenant_name"},{"line_number":617,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAWH%2F%2BbsA%3D","line":614,"updated":"2014-03-26 20:06:46.000000000","message":"You need to handle tenant isolation here too. Otherwise you can have resource conflicts if there are more than one ironic scenario tests running at the same time.\n\nYou honestly should just have this like the other get_client methods but first check if the admin role is present and fail if it\u0027s not. Then when you instantiate in the scenario tests just make 2 manager calls OfficialClientManager() one with admin and one without.","commit_id":"fc8ad59a66faaae45863fe3135c2a8f88ec25902"}],"tempest/config.py":[{"author":{"_account_id":5196,"name":"Matthew Treinish","email":"mtreinish@kortar.org","username":"treinish"},"change_message_id":"08b5167dc0216275ed26bbcfe292336d5f29f338","unresolved":false,"context_lines":[{"line_number":819,"context_line":"    cfg.StrOpt(\u0027catalog_type\u0027,"},{"line_number":820,"context_line":"               default\u003d\u0027baremetal\u0027,"},{"line_number":821,"context_line":"               help\u003d\"Catalog type of the baremetal provisioning service\"),"},{"line_number":822,"context_line":"    cfg.BoolOpt(\u0027driver_enabled\u0027,"},{"line_number":823,"context_line":"                default\u003dFalse,"},{"line_number":824,"context_line":"                help\u003d\"Whether the Ironic nova-compute driver is enabled\"),"},{"line_number":825,"context_line":"    cfg.StrOpt(\u0027endpoint_type\u0027,"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAWH%2F%2BbvA%3D","line":822,"updated":"2014-03-26 20:06:46.000000000","message":"Is this a thing yet? I didn\u0027t think it was in the nova tree yet.","commit_id":"fc8ad59a66faaae45863fe3135c2a8f88ec25902"},{"author":{"_account_id":1420,"name":"Adam Gandelman","email":"adamg@ubuntu.com","username":"gandelman-a"},"change_message_id":"cdc50deadf1b3ad5d67bfb3cf4db88250ad414a0","unresolved":false,"context_lines":[{"line_number":819,"context_line":"    cfg.StrOpt(\u0027catalog_type\u0027,"},{"line_number":820,"context_line":"               default\u003d\u0027baremetal\u0027,"},{"line_number":821,"context_line":"               help\u003d\"Catalog type of the baremetal provisioning service\"),"},{"line_number":822,"context_line":"    cfg.BoolOpt(\u0027driver_enabled\u0027,"},{"line_number":823,"context_line":"                default\u003dFalse,"},{"line_number":824,"context_line":"                help\u003d\"Whether the Ironic nova-compute driver is enabled\"),"},{"line_number":825,"context_line":"    cfg.StrOpt(\u0027endpoint_type\u0027,"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAWH%2F%2Bbls%3D","line":822,"in_reply_to":"AAAAWH%2F%2BbvA%3D","updated":"2014-03-26 20:19:52.000000000","message":"It was a thing in Nova, and will be a thing again in the future.  The goal was graduation in Icehouse, and the driver lived in the nova tree.  But since it looked like that target has been delayed to Juno, the driver moved into the Ironic tree for the time being.  Devstack currently sets nova.conf to import the driver from there, ie compute_driver\u003dironic.nova.virt.ironic.IronicDriver when VIRT_DRIVER\u003dironic.  \n\nWorth noting that devstack may setup ironic services without VIRT_DRIVER\u003dironic (hence this config option), so that the API and conductor services are running alongside the standard libvirt compute driver.  Example: check-tempest-dsvm-ironic, which currently runs in Ironic\u0027s gate to test CRUD against the API.","commit_id":"fc8ad59a66faaae45863fe3135c2a8f88ec25902"}],"tempest/scenario/manager.py":[{"author":{"_account_id":5196,"name":"Matthew Treinish","email":"mtreinish@kortar.org","username":"treinish"},"change_message_id":"08b5167dc0216275ed26bbcfe292336d5f29f338","unresolved":false,"context_lines":[{"line_number":451,"context_line":"            msg \u003d \u0027Ironc not available or compute driver not enabled\u0027"},{"line_number":452,"context_line":"            raise cls.skipException(msg)"},{"line_number":453,"context_line":""},{"line_number":454,"context_line":"        # use a non-admin compute client for nova ops"},{"line_number":455,"context_line":"        manager \u003d clients.OfficialClientManager("},{"line_number":456,"context_line":"            CONF.identity.username, CONF.identity.password,"},{"line_number":457,"context_line":"            CONF.identity.tenant_name)"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAWH%2F%2Bbto%3D","line":454,"updated":"2014-03-26 20:06:46.000000000","message":"You need to handle the tenant isolation case","commit_id":"fc8ad59a66faaae45863fe3135c2a8f88ec25902"},{"author":{"_account_id":1420,"name":"Adam Gandelman","email":"adamg@ubuntu.com","username":"gandelman-a"},"change_message_id":"171cfd74f4f82b233741e7c1c5322dc32af3253e","unresolved":false,"context_lines":[{"line_number":451,"context_line":"            msg \u003d \u0027Ironc not available or compute driver not enabled\u0027"},{"line_number":452,"context_line":"            raise cls.skipException(msg)"},{"line_number":453,"context_line":""},{"line_number":454,"context_line":"        # use a non-admin compute client for nova ops"},{"line_number":455,"context_line":"        manager \u003d clients.OfficialClientManager("},{"line_number":456,"context_line":"            CONF.identity.username, CONF.identity.password,"},{"line_number":457,"context_line":"            CONF.identity.tenant_name)"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAWH%2F%2Bax4%3D","line":454,"in_reply_to":"AAAAWH%2F%2Bbto%3D","updated":"2014-03-26 22:38:36.000000000","message":"Right, so I\u0027ve updated my local branch to use the various classes\u0027 internal mechanisms for determining which credentials to use based on isolated creds support being enabled.  That is, any OfficialClientTest instance\u0027s baremetal_client attribute will be None unless it was instantiated /w admin creds.\n\nHaving done that, I now need this setUp to initiate a second manager /w admin creds and update cls.baremetal_client (basically the inverse of what I\u0027m doing with cls.compute_client here).  Is this reasonable? Not sure if I\u0027m overlooking an easier way to do this.","commit_id":"fc8ad59a66faaae45863fe3135c2a8f88ec25902"},{"author":{"_account_id":97,"name":"Daryl Walleck","email":"daryl.walleck@rackspace.com","username":"dwalleck"},"change_message_id":"0dfdfa81a92c14acceca1163b08e504b4105c2dd","unresolved":false,"context_lines":[{"line_number":284,"context_line":"        return rules"},{"line_number":285,"context_line":""},{"line_number":286,"context_line":"    def create_server(self, client\u003dNone, name\u003dNone, image\u003dNone, flavor\u003dNone,"},{"line_number":287,"context_line":"                      wait\u003dTrue, create_kwargs\u003d{}):"},{"line_number":288,"context_line":"        if client is None:"},{"line_number":289,"context_line":"            client \u003d self.compute_client"},{"line_number":290,"context_line":"        if name is None:"}],"source_content_type":"text/x-python","patch_set":7,"id":"AAAAWH%2F%2BKqQ%3D","line":287,"updated":"2014-03-28 17:22:52.000000000","message":"I realize this isn\u0027t necessarily part of this review, it\u0027s really a bad practice to use an empty dict as a default like this","commit_id":"58be89e937d382b6a1abf1704a54be1de5a98b3b"},{"author":{"_account_id":5689,"name":"Masayuki Igawa","email":"masayuki@igawa.io","username":"igawa"},"change_message_id":"ba26e46ad3d1a4af49defbdf7e2c8ddcc6c2bd72","unresolved":false,"context_lines":[{"line_number":447,"context_line":"        super(BaremetalScenarioTest, cls).setUpClass()"},{"line_number":448,"context_line":""},{"line_number":449,"context_line":"        if (not CONF.service_available.ironic or"},{"line_number":450,"context_line":"           not CONF.baremetal.driver_enabled):"},{"line_number":451,"context_line":"            msg \u003d \u0027Ironc not available or compute driver not enabled\u0027"},{"line_number":452,"context_line":"            raise cls.skipException(msg)"},{"line_number":453,"context_line":""}],"source_content_type":"text/x-python","patch_set":7,"id":"AAAAWH%2F%2BElE%3D","line":450,"updated":"2014-03-31 05:14:43.000000000","message":"I think this condition requires both \u0027True\u0027. So currently, this test case is skipped in check-tempest-dsvm-ironic-nv job[1]. Is this intentional?\n\n[1] http://logs.openstack.org/58/81958/7/check/check-tempest-dsvm-ironic-nv/944b03a/logs/testr_results.html.gz","commit_id":"58be89e937d382b6a1abf1704a54be1de5a98b3b"},{"author":{"_account_id":5689,"name":"Masayuki Igawa","email":"masayuki@igawa.io","username":"igawa"},"change_message_id":"ba26e46ad3d1a4af49defbdf7e2c8ddcc6c2bd72","unresolved":false,"context_lines":[{"line_number":448,"context_line":""},{"line_number":449,"context_line":"        if (not CONF.service_available.ironic or"},{"line_number":450,"context_line":"           not CONF.baremetal.driver_enabled):"},{"line_number":451,"context_line":"            msg \u003d \u0027Ironc not available or compute driver not enabled\u0027"},{"line_number":452,"context_line":"            raise cls.skipException(msg)"},{"line_number":453,"context_line":""},{"line_number":454,"context_line":"        # use an admin client manager for baremetal client"}],"source_content_type":"text/x-python","patch_set":7,"id":"AAAAWH%2F%2BEok%3D","line":451,"updated":"2014-03-31 05:14:43.000000000","message":"s/Ironc/Ironic\nand\ns/compute/baremetal ?","commit_id":"58be89e937d382b6a1abf1704a54be1de5a98b3b"},{"author":{"_account_id":97,"name":"Daryl Walleck","email":"daryl.walleck@rackspace.com","username":"dwalleck"},"change_message_id":"0dfdfa81a92c14acceca1163b08e504b4105c2dd","unresolved":false,"context_lines":[{"line_number":492,"context_line":"            node \u003d None"},{"line_number":493,"context_line":"            try:"},{"line_number":494,"context_line":"                node \u003d self.get_node(instance_id\u003dinstance_id)"},{"line_number":495,"context_line":"            except Exception:"},{"line_number":496,"context_line":"                pass"},{"line_number":497,"context_line":"            return node is not None"},{"line_number":498,"context_line":""}],"source_content_type":"text/x-python","patch_set":7,"id":"AAAAWH%2F%2BKo0%3D","line":495,"updated":"2014-03-28 17:22:52.000000000","message":"Wouldn\u0027t is make sense to either catch specific exceptions, or at least log whatever exception was raised so you\u0027d have it logged in case the test fails?","commit_id":"58be89e937d382b6a1abf1704a54be1de5a98b3b"},{"author":{"_account_id":2889,"name":"Aeva Black","email":"aeva.online@gmail.com","username":"tenbrae"},"change_message_id":"5f597536a59131e7ef095dcba3ca8e688309ae2f","unresolved":false,"context_lines":[{"line_number":458,"context_line":"        cls.baremetal_client \u003d manager.baremetal_client"},{"line_number":459,"context_line":""},{"line_number":460,"context_line":"        # allow any issues obtaining the node list to raise early"},{"line_number":461,"context_line":"        cls.baremetal_client.node.list()"},{"line_number":462,"context_line":""},{"line_number":463,"context_line":"    def _node_state_timeout(self, node_id, state_attr,"},{"line_number":464,"context_line":"                            target_states, timeout\u003d10, interval\u003d1):"}],"source_content_type":"text/x-python","patch_set":8,"id":"AAAAWH%2F9Y7Y%3D","line":461,"updated":"2014-04-04 21:14:31.000000000","message":"should this check that there are a suitable number of available nodes, and check that the node(s) are properly configured (eg, call client.node.validate() on them)? Or is that overkill for the setup method?","commit_id":"4a48a603f43dd1ed4583f75b7b2696d793fa3932"},{"author":{"_account_id":1420,"name":"Adam Gandelman","email":"adamg@ubuntu.com","username":"gandelman-a"},"change_message_id":"62eaa4065826dbfb25f58c89837f55b1348b200a","unresolved":false,"context_lines":[{"line_number":458,"context_line":"        cls.baremetal_client \u003d manager.baremetal_client"},{"line_number":459,"context_line":""},{"line_number":460,"context_line":"        # allow any issues obtaining the node list to raise early"},{"line_number":461,"context_line":"        cls.baremetal_client.node.list()"},{"line_number":462,"context_line":""},{"line_number":463,"context_line":"    def _node_state_timeout(self, node_id, state_attr,"},{"line_number":464,"context_line":"                            target_states, timeout\u003d10, interval\u003d1):"}],"source_content_type":"text/x-python","patch_set":8,"id":"AAAAWH%2F9Yfo%3D","line":461,"in_reply_to":"AAAAWH%2F9Y7Y%3D","updated":"2014-04-04 22:28:03.000000000","message":"This is verification that the API is functioning and the admin tenant has access.  I would like to do the type of node validation you\u0027re suggesting, but I think it should happen as new tests in the future. I\u0027m imagining a test case that can be extended to cover validation of different driver types. This was the original plan for the scenario test, hence \u0027PXESSH\u0027 in the name.","commit_id":"4a48a603f43dd1ed4583f75b7b2696d793fa3932"}],"tempest/scenario/test_baremetal_basic_ops.py":[{"author":{"_account_id":5689,"name":"Masayuki Igawa","email":"masayuki@igawa.io","username":"igawa"},"change_message_id":"ba26e46ad3d1a4af49defbdf7e2c8ddcc6c2bd72","unresolved":false,"context_lines":[{"line_number":1,"context_line":""},{"line_number":2,"context_line":"# -*- encoding: utf-8 -*-"},{"line_number":3,"context_line":"#"},{"line_number":4,"context_line":"# Copyright 2014 Hewlett-Packard Development Company, L.P."}],"source_content_type":"text/x-python","patch_set":7,"id":"AAAAWH%2F%2BEqU%3D","line":1,"updated":"2014-03-31 05:14:43.000000000","message":"We don\u0027t need this blank line.","commit_id":"58be89e937d382b6a1abf1704a54be1de5a98b3b"},{"author":{"_account_id":5689,"name":"Masayuki Igawa","email":"masayuki@igawa.io","username":"igawa"},"change_message_id":"ba26e46ad3d1a4af49defbdf7e2c8ddcc6c2bd72","unresolved":false,"context_lines":[{"line_number":1,"context_line":""},{"line_number":2,"context_line":"# -*- encoding: utf-8 -*-"},{"line_number":3,"context_line":"#"},{"line_number":4,"context_line":"# Copyright 2014 Hewlett-Packard Development Company, L.P."},{"line_number":5,"context_line":"#"}],"source_content_type":"text/x-python","patch_set":7,"id":"AAAAWH%2F%2BEqI%3D","line":2,"updated":"2014-03-31 05:14:43.000000000","message":"We don\u0027t need this line also.","commit_id":"58be89e937d382b6a1abf1704a54be1de5a98b3b"},{"author":{"_account_id":97,"name":"Daryl Walleck","email":"daryl.walleck@rackspace.com","username":"dwalleck"},"change_message_id":"0dfdfa81a92c14acceca1163b08e504b4105c2dd","unresolved":false,"context_lines":[{"line_number":88,"context_line":"        self.wait_node(self.instance.id)"},{"line_number":89,"context_line":"        self.node \u003d self.get_node(instance_id\u003dself.instance.id)"},{"line_number":90,"context_line":""},{"line_number":91,"context_line":"        self.wait_power_state(self.node.uuid, \u0027power on\u0027)"},{"line_number":92,"context_line":""},{"line_number":93,"context_line":"        self.wait_provisioning_state("},{"line_number":94,"context_line":"            self.node.uuid, [\u0027wait call-back\u0027, \u0027active\u0027], timeout\u003d15)"}],"source_content_type":"text/x-python","patch_set":7,"id":"AAAAWH%2F%2BKms%3D","line":91,"updated":"2014-03-28 17:22:52.000000000","message":"Rather than referring to power states as strings, wouldn\u0027t it be more maintainable to have an enum-style class to keep track of these?","commit_id":"58be89e937d382b6a1abf1704a54be1de5a98b3b"},{"author":{"_account_id":5689,"name":"Masayuki Igawa","email":"masayuki@igawa.io","username":"igawa"},"change_message_id":"e9bbb936e5d2f506ea7f179c50527d0e89d16d21","unresolved":false,"context_lines":[{"line_number":23,"context_line":"LOG \u003d logging.getLogger(__name__)"},{"line_number":24,"context_line":""},{"line_number":25,"context_line":""},{"line_number":26,"context_line":"# power/provision states as of icehouse"},{"line_number":27,"context_line":"class PowerStates(object):"},{"line_number":28,"context_line":"    \"\"\"Possible power states of an Ironic node.\"\"\""},{"line_number":29,"context_line":"    POWER_ON \u003d \u0027power on\u0027"}],"source_content_type":"text/x-python","patch_set":8,"id":"AAAAWH%2F9Thw%3D","line":26,"updated":"2014-04-07 08:53:42.000000000","message":"Just a question. Is there any plan of changing these states in Juno?","commit_id":"4a48a603f43dd1ed4583f75b7b2696d793fa3932"},{"author":{"_account_id":1420,"name":"Adam Gandelman","email":"adamg@ubuntu.com","username":"gandelman-a"},"change_message_id":"cdf1f2ea2a097ed8a389ea4e2c6341b6b7843327","unresolved":false,"context_lines":[{"line_number":23,"context_line":"LOG \u003d logging.getLogger(__name__)"},{"line_number":24,"context_line":""},{"line_number":25,"context_line":""},{"line_number":26,"context_line":"# power/provision states as of icehouse"},{"line_number":27,"context_line":"class PowerStates(object):"},{"line_number":28,"context_line":"    \"\"\"Possible power states of an Ironic node.\"\"\""},{"line_number":29,"context_line":"    POWER_ON \u003d \u0027power on\u0027"}],"source_content_type":"text/x-python","patch_set":8,"id":"AAAAWn%2F%2F4cg%3D","line":26,"in_reply_to":"AAAAWH%2F9Thw%3D","updated":"2014-04-08 18:57:33.000000000","message":"I do not believe there are any plans to change these constants in Juno, though the actual progression of state transitions may vary between drivers.  This current exercise validates the pxe_ssh driver flow, we can expand on this when other driver tests are added.","commit_id":"4a48a603f43dd1ed4583f75b7b2696d793fa3932"},{"author":{"_account_id":97,"name":"Daryl Walleck","email":"daryl.walleck@rackspace.com","username":"dwalleck"},"change_message_id":"afd22f70ff75f7d9d329670bb48ef26c539b70d7","unresolved":false,"context_lines":[{"line_number":102,"context_line":"        create_kwargs \u003d {"},{"line_number":103,"context_line":"            \u0027key_name\u0027: self.keypair.id"},{"line_number":104,"context_line":"        }"},{"line_number":105,"context_line":"        self.instance \u003d self.create_server("},{"line_number":106,"context_line":"            wait\u003dFalse, create_kwargs\u003dcreate_kwargs)"},{"line_number":107,"context_line":""},{"line_number":108,"context_line":"        self.set_resource(\u0027instance\u0027, self.instance)"}],"source_content_type":"text/x-python","patch_set":8,"id":"AAAAWH%2F9t2A%3D","line":105,"updated":"2014-04-02 15:56:03.000000000","message":"This is assuming that the default flavor for all Tempest tests will be the baremetal flavor.This will likely cause other tests to have problems if the entire suite is ran together (server actions that baremetal does not support). Would it make sense to add a config value to the baremetal section for a baremetal flavor?","commit_id":"4a48a603f43dd1ed4583f75b7b2696d793fa3932"},{"author":{"_account_id":97,"name":"Daryl Walleck","email":"daryl.walleck@rackspace.com","username":"dwalleck"},"change_message_id":"7de9953712172bfc719421adc57a90a8f51b5258","unresolved":false,"context_lines":[{"line_number":102,"context_line":"        create_kwargs \u003d {"},{"line_number":103,"context_line":"            \u0027key_name\u0027: self.keypair.id"},{"line_number":104,"context_line":"        }"},{"line_number":105,"context_line":"        self.instance \u003d self.create_server("},{"line_number":106,"context_line":"            wait\u003dFalse, create_kwargs\u003dcreate_kwargs)"},{"line_number":107,"context_line":""},{"line_number":108,"context_line":"        self.set_resource(\u0027instance\u0027, self.instance)"}],"source_content_type":"text/x-python","patch_set":8,"id":"AAAAWH%2F9pXg%3D","line":105,"in_reply_to":"AAAAWH%2F9sV0%3D","updated":"2014-04-03 04:51:48.000000000","message":"Totally makes sense. I strayed off topic, but my concern was more around if other Tempest tests would play nicely with bare metal flavors, which appears to be handled in a different review for proper filtering.","commit_id":"4a48a603f43dd1ed4583f75b7b2696d793fa3932"},{"author":{"_account_id":1420,"name":"Adam Gandelman","email":"adamg@ubuntu.com","username":"gandelman-a"},"change_message_id":"e52093041e2cafad95a8e251d91a9e325d6178cb","unresolved":false,"context_lines":[{"line_number":102,"context_line":"        create_kwargs \u003d {"},{"line_number":103,"context_line":"            \u0027key_name\u0027: self.keypair.id"},{"line_number":104,"context_line":"        }"},{"line_number":105,"context_line":"        self.instance \u003d self.create_server("},{"line_number":106,"context_line":"            wait\u003dFalse, create_kwargs\u003dcreate_kwargs)"},{"line_number":107,"context_line":""},{"line_number":108,"context_line":"        self.set_resource(\u0027instance\u0027, self.instance)"}],"source_content_type":"text/x-python","patch_set":8,"id":"AAAAWH%2F9sV0%3D","line":105,"in_reply_to":"AAAAWH%2F9t2A%3D","updated":"2014-04-02 18:47:27.000000000","message":"I\u0027m not sure what the status is of multi-hypervisor deployments in Openstack, but AIUI the tempest suite is geared toward stressing a single hypervisor type, or at least a single flavor type.  The global \u0027flavor_ref\u0027 in tempest.conf gets set and is used for all servers that are created by Tempest. This gets set by devstack (assuming DEFAULT_INSTANCE_TYPE\u003dbaremetal, which devstack-gate does for us). I\u0027d rather not diverge too much from the rest of the tests in the way that it spawns servers.\n\nThe initial devstack support for Ironic does not deploy a setup that supports parallel testing and tempest.conf needs to have tenant isolated disabled to prevent it.","commit_id":"4a48a603f43dd1ed4583f75b7b2696d793fa3932"}],"tempest/scenario/test_ironic_basic_ops.py":[{"author":{"_account_id":5196,"name":"Matthew Treinish","email":"mtreinish@kortar.org","username":"treinish"},"change_message_id":"08b5167dc0216275ed26bbcfe292336d5f29f338","unresolved":false,"context_lines":[{"line_number":25,"context_line":"LOG \u003d logging.getLogger(__name__)"},{"line_number":26,"context_line":""},{"line_number":27,"context_line":""},{"line_number":28,"context_line":"class IronicBasicOptsPXESSH(manager.BaremetalScenarioTest):"},{"line_number":29,"context_line":"    \"\"\""},{"line_number":30,"context_line":"    This smoke test tests the pxe_ssh Ironic driver.  It follows this basic"},{"line_number":31,"context_line":"    set of operations:"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAWH%2F%2BbvU%3D","line":28,"updated":"2014-03-26 20:06:46.000000000","message":"I\u0027d replace Ironic in both this name with baremetal as well as in the filename.","commit_id":"fc8ad59a66faaae45863fe3135c2a8f88ec25902"},{"author":{"_account_id":2889,"name":"Aeva Black","email":"aeva.online@gmail.com","username":"tenbrae"},"change_message_id":"ab521f7c55ef7991ea47f6e8aafa59b1e5ebb129","unresolved":false,"context_lines":[{"line_number":109,"context_line":"        self.wait_provisioning_state("},{"line_number":110,"context_line":"            self.node.uuid, None, timeout\u003dCONF.baremetal.unprovision_timeout)"},{"line_number":111,"context_line":""},{"line_number":112,"context_line":"    @test.services(\u0027ironic\u0027, \u0027compute\u0027, \u0027network\u0027)"},{"line_number":113,"context_line":"    def test_baremetal_server_ops(self):"},{"line_number":114,"context_line":"        self.add_keypair()"},{"line_number":115,"context_line":"        self.boot_instance()"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAWH%2F%2BaPw%3D","line":112,"updated":"2014-03-27 01:01:49.000000000","message":"since this test requires glance and keystone as well, shouldn\u0027t they be listed here?","commit_id":"fc8ad59a66faaae45863fe3135c2a8f88ec25902"}],"tempest/test.py":[{"author":{"_account_id":5196,"name":"Matthew Treinish","email":"mtreinish@kortar.org","username":"treinish"},"change_message_id":"08b5167dc0216275ed26bbcfe292336d5f29f338","unresolved":false,"context_lines":[{"line_number":93,"context_line":"    service_list \u003d {"},{"line_number":94,"context_line":"        \u0027compute\u0027: CONF.service_available.nova,"},{"line_number":95,"context_line":"        \u0027image\u0027: CONF.service_available.glance,"},{"line_number":96,"context_line":"        \u0027ironic\u0027: CONF.service_available.ironic,"},{"line_number":97,"context_line":"        \u0027volume\u0027: CONF.service_available.cinder,"},{"line_number":98,"context_line":"        \u0027orchestration\u0027: CONF.service_available.heat,"},{"line_number":99,"context_line":"        # NOTE(mtreinish) nova-network will provide networking functionality"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAWH%2F%2Bbvo%3D","line":96,"updated":"2014-03-26 20:06:46.000000000","message":"The key here should be baremetal not ironic.","commit_id":"fc8ad59a66faaae45863fe3135c2a8f88ec25902"}]}
