)]}'
{"nova/compute/manager.py":[{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"f2505f61689551983413e4603ecc01c05596e457","unresolved":false,"context_lines":[{"line_number":1131,"context_line":"        # NOTE(sbauza): We want the compute node to hard fail if it won\u0027t be"},{"line_number":1132,"context_line":"        # able to provide its resources to the placement API, or it will not"},{"line_number":1133,"context_line":"        # be able to be eligible as a destination."},{"line_number":1134,"context_line":"        # NOTE(imacdonn): We used to check for the placement.os_region_name"},{"line_number":1135,"context_line":"        # config option here, but actually accessing the placement service is"},{"line_number":1136,"context_line":"        # a better way to verify its use."},{"line_number":1137,"context_line":"        try:"},{"line_number":1138,"context_line":"            self.reportclient.get(\u0027/resource_providers?name\u003dbogus\u0027)"},{"line_number":1139,"context_line":"        except keystone_exception.MissingAuthPlugin:"}],"source_content_type":"text/x-python","patch_set":1,"id":"bf659307_ca5ebae8","line":1136,"range":{"start_line":1134,"start_character":8,"end_line":1136,"end_character":41},"updated":"2018-04-05 16:05:25.000000000","message":"We don\u0027t really need this note. What we used to do and why we don\u0027t anymore is relevant for the commit message, but not really the code docs.","commit_id":"3639dd72162682c6e40fd0b150a1bf5ee64e1b8e"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"3014cc81ffbec402fca42c9d5eca98265997bd77","unresolved":false,"context_lines":[{"line_number":1131,"context_line":"        # NOTE(sbauza): We want the compute node to hard fail if it won\u0027t be"},{"line_number":1132,"context_line":"        # able to provide its resources to the placement API, or it will not"},{"line_number":1133,"context_line":"        # be able to be eligible as a destination."},{"line_number":1134,"context_line":"        # NOTE(imacdonn): We used to check for the placement.os_region_name"},{"line_number":1135,"context_line":"        # config option here, but actually accessing the placement service is"},{"line_number":1136,"context_line":"        # a better way to verify its use."},{"line_number":1137,"context_line":"        try:"},{"line_number":1138,"context_line":"            self.reportclient.get(\u0027/resource_providers?name\u003dbogus\u0027)"},{"line_number":1139,"context_line":"        except keystone_exception.MissingAuthPlugin:"}],"source_content_type":"text/x-python","patch_set":1,"id":"bf659307_cd0eb831","line":1136,"range":{"start_line":1134,"start_character":8,"end_line":1136,"end_character":41},"in_reply_to":"bf659307_00fc913c","updated":"2018-04-06 21:34:27.000000000","message":"I think the old comment is fine as-is.","commit_id":"3639dd72162682c6e40fd0b150a1bf5ee64e1b8e"},{"author":{"_account_id":23561,"name":"iain MacDonnell","email":"iain.macdonnell@oracle.com","username":"imacdonn"},"change_message_id":"77741e697abb80065b21f975ac190050103f2f20","unresolved":false,"context_lines":[{"line_number":1131,"context_line":"        # NOTE(sbauza): We want the compute node to hard fail if it won\u0027t be"},{"line_number":1132,"context_line":"        # able to provide its resources to the placement API, or it will not"},{"line_number":1133,"context_line":"        # be able to be eligible as a destination."},{"line_number":1134,"context_line":"        # NOTE(imacdonn): We used to check for the placement.os_region_name"},{"line_number":1135,"context_line":"        # config option here, but actually accessing the placement service is"},{"line_number":1136,"context_line":"        # a better way to verify its use."},{"line_number":1137,"context_line":"        try:"},{"line_number":1138,"context_line":"            self.reportclient.get(\u0027/resource_providers?name\u003dbogus\u0027)"},{"line_number":1139,"context_line":"        except keystone_exception.MissingAuthPlugin:"}],"source_content_type":"text/x-python","patch_set":1,"id":"bf659307_00fc913c","line":1136,"range":{"start_line":1134,"start_character":8,"end_line":1136,"end_character":41},"in_reply_to":"bf659307_ca5ebae8","updated":"2018-04-05 19:26:38.000000000","message":"OK. I didn\u0027t want to remove the old comment because it\u0027s basically still valid, but also it didn\u0027t seem appropriate to replace the implementation and leave the old comment exactly the same. I\u0027ll figure something out.","commit_id":"3639dd72162682c6e40fd0b150a1bf5ee64e1b8e"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"f501ace1a4470e814c2424e9a22d8927f7c72733","unresolved":false,"context_lines":[{"line_number":1135,"context_line":"        # config option here, but actually accessing the placement service is"},{"line_number":1136,"context_line":"        # a better way to verify its use."},{"line_number":1137,"context_line":"        try:"},{"line_number":1138,"context_line":"            self.reportclient.get(\u0027/resource_providers?name\u003dbogus\u0027)"},{"line_number":1139,"context_line":"        except keystone_exception.MissingAuthPlugin:"},{"line_number":1140,"context_line":"            raise exception.PlacementNotConfigured()"},{"line_number":1141,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"bf659307_ac53c216","line":1138,"range":{"start_line":1138,"start_character":54,"end_line":1138,"end_character":65},"updated":"2018-03-31 22:56:36.000000000","message":"Note to reviewers: This is to limit the response time/size for performance reasons.","commit_id":"3639dd72162682c6e40fd0b150a1bf5ee64e1b8e"},{"author":{"_account_id":23561,"name":"iain MacDonnell","email":"iain.macdonnell@oracle.com","username":"imacdonn"},"change_message_id":"77741e697abb80065b21f975ac190050103f2f20","unresolved":false,"context_lines":[{"line_number":1135,"context_line":"        # config option here, but actually accessing the placement service is"},{"line_number":1136,"context_line":"        # a better way to verify its use."},{"line_number":1137,"context_line":"        try:"},{"line_number":1138,"context_line":"            self.reportclient.get(\u0027/resource_providers?name\u003dbogus\u0027)"},{"line_number":1139,"context_line":"        except keystone_exception.MissingAuthPlugin:"},{"line_number":1140,"context_line":"            raise exception.PlacementNotConfigured()"},{"line_number":1141,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"bf659307_f63363f5","line":1138,"range":{"start_line":1138,"start_character":54,"end_line":1138,"end_character":65},"in_reply_to":"bf659307_aa5d86ea","updated":"2018-04-05 19:26:38.000000000","message":"Ack","commit_id":"3639dd72162682c6e40fd0b150a1bf5ee64e1b8e"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"f2505f61689551983413e4603ecc01c05596e457","unresolved":false,"context_lines":[{"line_number":1135,"context_line":"        # config option here, but actually accessing the placement service is"},{"line_number":1136,"context_line":"        # a better way to verify its use."},{"line_number":1137,"context_line":"        try:"},{"line_number":1138,"context_line":"            self.reportclient.get(\u0027/resource_providers?name\u003dbogus\u0027)"},{"line_number":1139,"context_line":"        except keystone_exception.MissingAuthPlugin:"},{"line_number":1140,"context_line":"            raise exception.PlacementNotConfigured()"},{"line_number":1141,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"bf659307_aa5d86ea","line":1138,"range":{"start_line":1138,"start_character":54,"end_line":1138,"end_character":65},"in_reply_to":"bf659307_ac53c216","updated":"2018-04-05 16:05:25.000000000","message":"This would be better served as a comment in the code.","commit_id":"3639dd72162682c6e40fd0b150a1bf5ee64e1b8e"},{"author":{"_account_id":15888,"name":"Zhenyu Zheng","email":"zheng.zhenyu@outlook.com","username":"Kevin_Zheng"},"change_message_id":"b65c8fff9f7437d6b6379ca25db936647b30efa2","unresolved":false,"context_lines":[{"line_number":1137,"context_line":"        try:"},{"line_number":1138,"context_line":"            self.reportclient.get(\u0027/resource_providers?name\u003dbogus\u0027)"},{"line_number":1139,"context_line":"        except keystone_exception.MissingAuthPlugin:"},{"line_number":1140,"context_line":"            raise exception.PlacementNotConfigured()"},{"line_number":1141,"context_line":""},{"line_number":1142,"context_line":"        self.driver.init_host(host\u003dself.host)"},{"line_number":1143,"context_line":"        context \u003d nova.context.get_admin_context()"}],"source_content_type":"text/x-python","patch_set":1,"id":"bf659307_57061454","line":1140,"range":{"start_line":1140,"start_character":12,"end_line":1140,"end_character":52},"updated":"2018-04-03 08:10:49.000000000","message":"Raise another exception or update the error message? because the user my have not correctly configured the placement config, or it might be correctly configured but un-accessable","commit_id":"3639dd72162682c6e40fd0b150a1bf5ee64e1b8e"},{"author":{"_account_id":23561,"name":"iain MacDonnell","email":"iain.macdonnell@oracle.com","username":"imacdonn"},"change_message_id":"4ca1de2b970029ee6fc7cd120c7756855735ce2f","unresolved":false,"context_lines":[{"line_number":1137,"context_line":"        try:"},{"line_number":1138,"context_line":"            self.reportclient.get(\u0027/resource_providers?name\u003dbogus\u0027)"},{"line_number":1139,"context_line":"        except keystone_exception.MissingAuthPlugin:"},{"line_number":1140,"context_line":"            raise exception.PlacementNotConfigured()"},{"line_number":1141,"context_line":""},{"line_number":1142,"context_line":"        self.driver.init_host(host\u003dself.host)"},{"line_number":1143,"context_line":"        context \u003d nova.context.get_admin_context()"}],"source_content_type":"text/x-python","patch_set":1,"id":"bf659307_9baccb9f","line":1140,"range":{"start_line":1140,"start_character":12,"end_line":1140,"end_character":52},"in_reply_to":"bf659307_57061454","updated":"2018-04-03 16:42:22.000000000","message":"The idea here is that if it\u0027s configured but inaccessable, it will fail with something other than a MissingAuthPlugin. I did test it with the placement service shut down, and it failed with a ConnectFailed (something to that effect), which was quite obvious, and seemed suitable.\n\nThe intent here is to avoid silently ignoring the case where compute is not configured use placement. If we are configured to use placement, but it\u0027s not functional, that should become obvious in other ways (such as the above).","commit_id":"3639dd72162682c6e40fd0b150a1bf5ee64e1b8e"},{"author":{"_account_id":15888,"name":"Zhenyu Zheng","email":"zheng.zhenyu@outlook.com","username":"Kevin_Zheng"},"change_message_id":"a7337a3c2d4bb7d268668719e5effa15243d0015","unresolved":false,"context_lines":[{"line_number":1137,"context_line":"        try:"},{"line_number":1138,"context_line":"            self.reportclient.get(\u0027/resource_providers?name\u003dbogus\u0027)"},{"line_number":1139,"context_line":"        except keystone_exception.MissingAuthPlugin:"},{"line_number":1140,"context_line":"            raise exception.PlacementNotConfigured()"},{"line_number":1141,"context_line":""},{"line_number":1142,"context_line":"        self.driver.init_host(host\u003dself.host)"},{"line_number":1143,"context_line":"        context \u003d nova.context.get_admin_context()"}],"source_content_type":"text/x-python","patch_set":1,"id":"bf659307_78ebf276","line":1140,"range":{"start_line":1140,"start_character":12,"end_line":1140,"end_character":52},"in_reply_to":"bf659307_9baccb9f","updated":"2018-04-04 01:39:57.000000000","message":"Thanks for the clarification, that makes sense","commit_id":"3639dd72162682c6e40fd0b150a1bf5ee64e1b8e"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"7a980912dcee0034cebaacc30658e9d377db6ebc","unresolved":false,"context_lines":[{"line_number":1136,"context_line":"        # the request fails for some other reason (e.g. placement service not"},{"line_number":1137,"context_line":"        # functional), it should be obvious from the exception."},{"line_number":1138,"context_line":"        try:"},{"line_number":1139,"context_line":"            self.reportclient.get(\u0027/resource_providers?name\u003dbogus\u0027)"},{"line_number":1140,"context_line":"        except keystone_exception.MissingAuthPlugin:"},{"line_number":1141,"context_line":"            raise exception.PlacementNotConfigured()"},{"line_number":1142,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"bf659307_bfcb3f51","line":1139,"updated":"2018-04-09 22:04:01.000000000","message":"This will generate spam in the access log of placement, which will be highly confusing to an operator I think.\n\nI feel like if we really have to do this, we\u0027ve failed somewhere else. I\u0027m assuming the version document works without auth or something, but seriously, this is kinda nuts.\n\nCan\u0027t we just get a status check sort of page added to placement and use that? TBH, I\u0027d rather us _not_ do this at runtime. We have lots of places where lack of configuration makes things not work. This is overkill, IMHO.","commit_id":"808e36824ab483543b0b6c842a5d6770c42e1dd4"},{"author":{"_account_id":15888,"name":"Zhenyu Zheng","email":"zheng.zhenyu@outlook.com","username":"Kevin_Zheng"},"change_message_id":"6a2b8ccf9bbd58f8969e6dc5563c1344356a7a49","unresolved":false,"context_lines":[{"line_number":1136,"context_line":"        # the request fails for some other reason (e.g. placement service not"},{"line_number":1137,"context_line":"        # functional), it should be obvious from the exception."},{"line_number":1138,"context_line":"        try:"},{"line_number":1139,"context_line":"            self.reportclient.get(\u0027/resource_providers?name\u003dbogus\u0027)"},{"line_number":1140,"context_line":"        except keystone_exception.MissingAuthPlugin:"},{"line_number":1141,"context_line":"            raise exception.PlacementNotConfigured()"},{"line_number":1142,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"bf659307_f0a9e4dc","line":1139,"in_reply_to":"bf659307_bfcb3f51","updated":"2018-04-10 01:14:00.000000000","message":"good point","commit_id":"808e36824ab483543b0b6c842a5d6770c42e1dd4"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"69f79a952cbaa06cea149ac83519121067618e44","unresolved":false,"context_lines":[{"line_number":1129,"context_line":"        # NOTE(sbauza): We want the compute node to hard fail if it won\u0027t be"},{"line_number":1130,"context_line":"        # able to provide its resources to the placement API, or it will not"},{"line_number":1131,"context_line":"        # be able to be eligible as a destination."},{"line_number":1132,"context_line":"        if CONF.placement.region_name is None:"},{"line_number":1133,"context_line":"            raise exception.PlacementNotConfigured()"},{"line_number":1134,"context_line":""},{"line_number":1135,"context_line":"        self.driver.init_host(host\u003dself.host)"}],"source_content_type":"text/x-python","patch_set":4,"id":"9f6a8fd7_3363df1c","side":"PARENT","line":1132,"updated":"2018-05-02 14:56:05.000000000","message":"For posterity, we could have simply replaced this with checking if CONF.placement.auth_type is None, but for whatever reason people didn\u0027t want to do that. It was all discussed in IRC.","commit_id":"e1346ac8cab48c8c0b9843665b4857fb28836d22"}],"nova/exception.py":[{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"65940d9c0ec51b2939cbd17c1f04382e8eb26f1c","unresolved":false,"context_lines":[{"line_number":2207,"context_line":"    msg_fmt \u003d _(\"Networking client is experiencing an unauthorized exception.\")"},{"line_number":2208,"context_line":""},{"line_number":2209,"context_line":""},{"line_number":2210,"context_line":"class PlacementNotConfigured(NovaException):"},{"line_number":2211,"context_line":"    msg_fmt \u003d _(\"This compute is not configured to talk to the placement \""},{"line_number":2212,"context_line":"                \"service. Configure the [placement] section of nova.conf \""},{"line_number":2213,"context_line":"                \"and restart the service.\")"},{"line_number":2214,"context_line":""},{"line_number":2215,"context_line":""},{"line_number":2216,"context_line":"class InvalidEmulatorThreadsPolicy(Invalid):"}],"source_content_type":"text/x-python","patch_set":3,"id":"9f6a8fd7_b8529a66","line":2213,"range":{"start_line":2210,"start_character":0,"end_line":2213,"end_character":43},"updated":"2018-04-17 20:41:46.000000000","message":"x","commit_id":"634f23013a689318d4efb9d10c782578d16829a5"}],"nova/test.py":[{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"7a980912dcee0034cebaacc30658e9d377db6ebc","unresolved":false,"context_lines":[{"line_number":422,"context_line":"                # Make sure that CONF.host is relevant to the right hostname"},{"line_number":423,"context_line":"                self.useFixture(nova_fixtures.ConfPatcher(host\u003dhost))"},{"line_number":424,"context_line":"        # NOTE(imacdonn): We need a placement service so the check in"},{"line_number":425,"context_line":"        # compute.init_host() can verify its use"},{"line_number":426,"context_line":"        if name \u003d\u003d \u0027compute\u0027:"},{"line_number":427,"context_line":"            self.useFixture(nova_fixtures.PlacementFixture())"},{"line_number":428,"context_line":"        svc \u003d self.useFixture("}],"source_content_type":"text/x-python","patch_set":2,"id":"bf659307_9fc0bb2c","line":425,"updated":"2018-04-09 22:04:01.000000000","message":"Evidence of overkill.","commit_id":"808e36824ab483543b0b6c842a5d6770c42e1dd4"}],"nova/tests/unit/compute/test_compute_mgr.py":[{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"f2505f61689551983413e4603ecc01c05596e457","unresolved":false,"context_lines":[{"line_number":3727,"context_line":"        # Tests that we fail init_host with an appropriate exception if"},{"line_number":3728,"context_line":"        # ksa raises a MissingAuthPlugin, which happens if the placement"},{"line_number":3729,"context_line":"        # section is not configured correctly."},{"line_number":3730,"context_line":"        get_mock.side_effect \u003d keystone_exception.MissingAuthPlugin()"},{"line_number":3731,"context_line":"        self.assertRaises(exception.PlacementNotConfigured,"},{"line_number":3732,"context_line":"                          self.compute.init_host)"},{"line_number":3733,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"bf659307_4af70ad6","line":3730,"updated":"2018-04-05 16:05:25.000000000","message":"If we didn\u0027t have the PlacementFixture in use, would we get this? If so, I\u0027d prefer to have a test that actually uses the real stuff rather than mocks.","commit_id":"3639dd72162682c6e40fd0b150a1bf5ee64e1b8e"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"3014cc81ffbec402fca42c9d5eca98265997bd77","unresolved":false,"context_lines":[{"line_number":3727,"context_line":"        # Tests that we fail init_host with an appropriate exception if"},{"line_number":3728,"context_line":"        # ksa raises a MissingAuthPlugin, which happens if the placement"},{"line_number":3729,"context_line":"        # section is not configured correctly."},{"line_number":3730,"context_line":"        get_mock.side_effect \u003d keystone_exception.MissingAuthPlugin()"},{"line_number":3731,"context_line":"        self.assertRaises(exception.PlacementNotConfigured,"},{"line_number":3732,"context_line":"                          self.compute.init_host)"},{"line_number":3733,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"bf659307_0d26f0b8","line":3730,"in_reply_to":"bf659307_2a4bb6b0","updated":"2018-04-06 21:34:27.000000000","message":"Fair enough.","commit_id":"3639dd72162682c6e40fd0b150a1bf5ee64e1b8e"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"b8733f779e69fc7d6133b539db834b18f5e7b318","unresolved":false,"context_lines":[{"line_number":3727,"context_line":"        # Tests that we fail init_host with an appropriate exception if"},{"line_number":3728,"context_line":"        # ksa raises a MissingAuthPlugin, which happens if the placement"},{"line_number":3729,"context_line":"        # section is not configured correctly."},{"line_number":3730,"context_line":"        get_mock.side_effect \u003d keystone_exception.MissingAuthPlugin()"},{"line_number":3731,"context_line":"        self.assertRaises(exception.PlacementNotConfigured,"},{"line_number":3732,"context_line":"                          self.compute.init_host)"},{"line_number":3733,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"bf659307_2a4bb6b0","line":3730,"in_reply_to":"bf659307_4af70ad6","updated":"2018-04-05 16:20:40.000000000","message":"No, having PlacementFixture is what lets the other zillion tests that hit init_host pass.  (Previously it was the fact that we set [os_]region_name in the conf fixture.)  We could dig down into the PlacementFixture itself and mock lower in the call stack, but it would have to be the same mock.","commit_id":"3639dd72162682c6e40fd0b150a1bf5ee64e1b8e"}],"nova/tests/unit/test_test.py":[{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"f2505f61689551983413e4603ecc01c05596e457","unresolved":false,"context_lines":[{"line_number":39,"context_line":""},{"line_number":40,"context_line":"    \"\"\""},{"line_number":41,"context_line":"    def test_service_isolation(self):"},{"line_number":42,"context_line":"        # NOTE(imacdonn): We need a placement service so the check in"},{"line_number":43,"context_line":"        # compute.init_host() can verify its use"},{"line_number":44,"context_line":"        self.useFixture(fixtures.PlacementFixture())"},{"line_number":45,"context_line":"        self.useFixture(fixtures.ServiceFixture(\u0027compute\u0027))"},{"line_number":46,"context_line":""},{"line_number":47,"context_line":"    def test_rpc_consumer_isolation(self):"},{"line_number":48,"context_line":"        class NeverCalled(object):"}],"source_content_type":"text/x-python","patch_set":1,"id":"bf659307_2a1736f0","line":45,"range":{"start_line":42,"start_character":8,"end_line":45,"end_character":59},"updated":"2018-04-05 16:05:25.000000000","message":"This could just be replaced with:\n\n  self.start_service(\u0027compute\u0027)\n\nright? Although maybe the point of this test is just running that fixture to see if it blows up.","commit_id":"3639dd72162682c6e40fd0b150a1bf5ee64e1b8e"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"d0bdb23035f3f451c1abd8e9d4a67a8f8af9696e","unresolved":false,"context_lines":[{"line_number":39,"context_line":""},{"line_number":40,"context_line":"    \"\"\""},{"line_number":41,"context_line":"    def test_service_isolation(self):"},{"line_number":42,"context_line":"        # NOTE(imacdonn): We need a placement service so the check in"},{"line_number":43,"context_line":"        # compute.init_host() can verify its use"},{"line_number":44,"context_line":"        self.useFixture(fixtures.PlacementFixture())"},{"line_number":45,"context_line":"        self.useFixture(fixtures.ServiceFixture(\u0027compute\u0027))"},{"line_number":46,"context_line":""},{"line_number":47,"context_line":"    def test_rpc_consumer_isolation(self):"},{"line_number":48,"context_line":"        class NeverCalled(object):"}],"source_content_type":"text/x-python","patch_set":1,"id":"bf659307_bb0cdd42","line":45,"range":{"start_line":42,"start_character":8,"end_line":45,"end_character":59},"in_reply_to":"bf659307_2a1736f0","updated":"2018-04-06 21:32:14.000000000","message":"I guess.  But as you say, start_service(\u0027compute\u0027) will do exactly this, as amended in this patch.  And start_service(\u0027compute\u0027) happens in a zillion other places.  So I\u0027m really not sure what this test accomplishes.  I would not be opposed to killing it.","commit_id":"3639dd72162682c6e40fd0b150a1bf5ee64e1b8e"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"3014cc81ffbec402fca42c9d5eca98265997bd77","unresolved":false,"context_lines":[{"line_number":39,"context_line":""},{"line_number":40,"context_line":"    \"\"\""},{"line_number":41,"context_line":"    def test_service_isolation(self):"},{"line_number":42,"context_line":"        # NOTE(imacdonn): We need a placement service so the check in"},{"line_number":43,"context_line":"        # compute.init_host() can verify its use"},{"line_number":44,"context_line":"        self.useFixture(fixtures.PlacementFixture())"},{"line_number":45,"context_line":"        self.useFixture(fixtures.ServiceFixture(\u0027compute\u0027))"},{"line_number":46,"context_line":""},{"line_number":47,"context_line":"    def test_rpc_consumer_isolation(self):"},{"line_number":48,"context_line":"        class NeverCalled(object):"}],"source_content_type":"text/x-python","patch_set":1,"id":"bf659307_cd3798e3","line":45,"range":{"start_line":42,"start_character":8,"end_line":45,"end_character":59},"in_reply_to":"bf659307_bb0cdd42","updated":"2018-04-06 21:34:27.000000000","message":"I\u0027m fine with just leaving it, and removing in a follow up if it serves no value.","commit_id":"3639dd72162682c6e40fd0b150a1bf5ee64e1b8e"}]}
