)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"cbb3f040867a07e6e35c3b58cdfba32732770dd9","unresolved":false,"context_lines":[{"line_number":27,"context_line":"collapse any such attempts down to a single connection to the"},{"line_number":28,"context_line":"default broker."},{"line_number":29,"context_line":""},{"line_number":30,"context_line":"Depends-On: I01b6f5a20ea9752da46a546a908bd38cf11da681"},{"line_number":31,"context_line":"Change-Id: Icb63d7dabd17f3c5633387793f68a8ba20863a7e"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":21,"id":"3a71b18c_8be51a0a","line":30,"updated":"2016-12-07 01:54:21.000000000","message":"We should depend on this I490ba75c25cd00855cf69e0099c8829b2fac65d6 and then also change requirements.txt in this change to require oslo.messaging\u003e\u003d5.14.0.","commit_id":"e4fab5dfdcaee73d3fd9eb9c5a3e2de8c26ca948"}],"nova/rpc.py":[{"author":{"_account_id":4690,"name":"melanie witt","display_name":"melwitt","email":"melwittt@gmail.com","username":"melwitt"},"change_message_id":"35bcb32c2ad6d002dbc4d4777a10f78c7d4a65f1","unresolved":false,"context_lines":[{"line_number":71,"context_line":"def init(conf):"},{"line_number":72,"context_line":"    global TRANSPORT, NOTIFICATION_TRANSPORT, LEGACY_NOTIFIER, NOTIFIER"},{"line_number":73,"context_line":"    exmods \u003d get_allowed_exmods()"},{"line_number":74,"context_line":"    TRANSPORT \u003d messaging.get_transport(conf,"},{"line_number":75,"context_line":"                                        allowed_remote_exmods\u003dexmods,"},{"line_number":76,"context_line":"                                        aliases\u003dTRANSPORT_ALIASES)"},{"line_number":77,"context_line":"    NOTIFICATION_TRANSPORT \u003d messaging.get_notification_transport("}],"source_content_type":"text/x-python","patch_set":13,"id":"5a74a57a_d5e426ad","side":"PARENT","line":74,"range":{"start_line":74,"start_character":26,"end_line":74,"end_character":39},"updated":"2016-11-28 22:02:01.000000000","message":"Looks like the change of this call causes problems because oslo.messaging registers the options during get_transport rather than globally [1] and the new code is trying to grab the transport_url option before it\u0027s registered.\n\n[1] https://github.com/openstack/oslo.messaging/blob/ea8fad4/oslo_messaging/transport.py#L179","commit_id":"4e747092bcb015303efc2ab13da98ef5ce575ec8"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"649b517b64e1f0c50c57eb53ffaca99a9ab05871","unresolved":false,"context_lines":[{"line_number":71,"context_line":"def init(conf):"},{"line_number":72,"context_line":"    global TRANSPORT, NOTIFICATION_TRANSPORT, LEGACY_NOTIFIER, NOTIFIER"},{"line_number":73,"context_line":"    exmods \u003d get_allowed_exmods()"},{"line_number":74,"context_line":"    # NOTE(danms): Hack around missing opts registration in"},{"line_number":75,"context_line":"    # oslo.messaging"},{"line_number":76,"context_line":"    from oslo_messaging import transport"},{"line_number":77,"context_line":"    CONF.register_opts(transport._transport_opts)"},{"line_number":78,"context_line":"    TRANSPORT \u003d create_transport(get_transport_url())"}],"source_content_type":"text/x-python","patch_set":20,"id":"3a71b18c_79d41feb","line":75,"range":{"start_line":74,"start_character":4,"end_line":75,"end_character":20},"updated":"2016-12-06 21:01:46.000000000","message":"This is fixed with https://review.openstack.org/#/c/403924/ which isn\u0027t released yet but harlowja says he\u0027s going to request a 5.14.0 release of oslo.messaging today.","commit_id":"5fb8d8efe66b6d6575035f83b684043752f67208"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"6e4074648aeaa1785724a1d03b4e6a211a93fc6f","unresolved":false,"context_lines":[{"line_number":71,"context_line":"def init(conf):"},{"line_number":72,"context_line":"    global TRANSPORT, NOTIFICATION_TRANSPORT, LEGACY_NOTIFIER, NOTIFIER"},{"line_number":73,"context_line":"    exmods \u003d get_allowed_exmods()"},{"line_number":74,"context_line":"    # NOTE(danms): Hack around missing opts registration in"},{"line_number":75,"context_line":"    # oslo.messaging"},{"line_number":76,"context_line":"    from oslo_messaging import transport"},{"line_number":77,"context_line":"    CONF.register_opts(transport._transport_opts)"},{"line_number":78,"context_line":"    TRANSPORT \u003d create_transport(get_transport_url())"},{"line_number":79,"context_line":"    NOTIFICATION_TRANSPORT \u003d messaging.get_notification_transport("},{"line_number":80,"context_line":"        conf, allowed_remote_exmods\u003dexmods, aliases\u003dTRANSPORT_ALIASES)"}],"source_content_type":"text/x-python","patch_set":21,"id":"3a71b18c_cbc2b252","line":77,"range":{"start_line":74,"start_character":4,"end_line":77,"end_character":49},"updated":"2016-12-07 01:55:27.000000000","message":"We should depend on I490ba75c25cd00855cf69e0099c8829b2fac65d6, bump the requirements.txt in this patch and then we can remove this too.","commit_id":"e4fab5dfdcaee73d3fd9eb9c5a3e2de8c26ca948"}],"nova/tests/fixtures.py":[{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"8da4a66c3b720da35018121940075619b3efb1b5","unresolved":false,"context_lines":[{"line_number":359,"context_line":"            flavor.create()"},{"line_number":360,"context_line":""},{"line_number":361,"context_line":""},{"line_number":362,"context_line":"class RPCFixture(fixtures.Fixture):"},{"line_number":363,"context_line":"    def __init__(self, *exmods):"},{"line_number":364,"context_line":"        super(RPCFixture, self).__init__()"},{"line_number":365,"context_line":"        self.exmods \u003d []"}],"source_content_type":"text/x-python","patch_set":9,"id":"5a74a57a_fb0d6738","line":362,"range":{"start_line":362,"start_character":6,"end_line":362,"end_character":16},"updated":"2016-11-22 22:27:50.000000000","message":"This isn\u0027t even used anywhere in existing tests from what I can tell.","commit_id":"106c68587c33f891799778fce4dacb6df122da4c"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"4d949573a6f580567d53d538876b8aaceec16dcb","unresolved":false,"context_lines":[{"line_number":359,"context_line":"            flavor.create()"},{"line_number":360,"context_line":""},{"line_number":361,"context_line":""},{"line_number":362,"context_line":"class RPCFixture(fixtures.Fixture):"},{"line_number":363,"context_line":"    def __init__(self, *exmods):"},{"line_number":364,"context_line":"        super(RPCFixture, self).__init__()"},{"line_number":365,"context_line":"        self.exmods \u003d []"}],"source_content_type":"text/x-python","patch_set":9,"id":"5a74a57a_3b37dfe4","line":362,"range":{"start_line":362,"start_character":6,"end_line":362,"end_character":16},"in_reply_to":"5a74a57a_fb0d6738","updated":"2016-11-22 22:29:27.000000000","message":"Nevermind we use it in the base TestCase in nova.test, not sure how I missed that.","commit_id":"106c68587c33f891799778fce4dacb6df122da4c"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"f9044c92b6d9a1d26030c5fa11f41225e88cc34c","unresolved":false,"context_lines":[{"line_number":364,"context_line":"        super(RPCFixture, self).__init__()"},{"line_number":365,"context_line":"        self.exmods \u003d []"},{"line_number":366,"context_line":"        self.exmods.extend(exmods)"},{"line_number":367,"context_line":"        self._busses \u003d {}"},{"line_number":368,"context_line":""},{"line_number":369,"context_line":"    def _fake_create_transport(self, url):"},{"line_number":370,"context_line":"        if url not in self._busses:"}],"source_content_type":"text/x-python","patch_set":9,"id":"5a74a57a_584901d0","line":367,"range":{"start_line":367,"start_character":13,"end_line":367,"end_character":20},"updated":"2016-11-22 22:26:16.000000000","message":"_buses?","commit_id":"106c68587c33f891799778fce4dacb6df122da4c"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"f9044c92b6d9a1d26030c5fa11f41225e88cc34c","unresolved":false,"context_lines":[{"line_number":367,"context_line":"        self._busses \u003d {}"},{"line_number":368,"context_line":""},{"line_number":369,"context_line":"    def _fake_create_transport(self, url):"},{"line_number":370,"context_line":"        if url not in self._busses:"},{"line_number":371,"context_line":"            exmods \u003d rpc.get_allowed_exmods()"},{"line_number":372,"context_line":"            self._busses[url] \u003d messaging.get_transport("},{"line_number":373,"context_line":"                CONF,"}],"source_content_type":"text/x-python","patch_set":9,"id":"5a74a57a_f83f2dd4","line":370,"range":{"start_line":370,"start_character":11,"end_line":370,"end_character":14},"updated":"2016-11-22 22:26:16.000000000","message":"Will this always be None? See below.","commit_id":"106c68587c33f891799778fce4dacb6df122da4c"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"f9044c92b6d9a1d26030c5fa11f41225e88cc34c","unresolved":false,"context_lines":[{"line_number":386,"context_line":"        self.useFixture(self.messaging_conf)"},{"line_number":387,"context_line":"        self.useFixture(fixtures.MonkeyPatch("},{"line_number":388,"context_line":"            \u0027nova.rpc.create_transport\u0027, self._fake_create_transport))"},{"line_number":389,"context_line":"        with mock.patch(\u0027nova.rpc.get_transport_url\u0027) as mock_gtu:"},{"line_number":390,"context_line":"            mock_gtu.return_value \u003d None"},{"line_number":391,"context_line":"            rpc.init(CONF)"},{"line_number":392,"context_line":""},{"line_number":393,"context_line":""}],"source_content_type":"text/x-python","patch_set":9,"id":"5a74a57a_b87db5e9","line":390,"range":{"start_line":389,"start_character":8,"end_line":390,"end_character":40},"updated":"2016-11-22 22:26:16.000000000","message":"A comment in here might be helpful. I\u0027m not sure why we need to mock out get_transport_url to return None since we\u0027ve already replaced create_transport so the fact that rpc.init() is going to pass None to _fake_create_transport isn\u0027t an issue. But thinking of that, when rpc.init calls create_transport, it\u0027s calling get_transport_url and passing that into create_transport, which is now _fake_create_transport, and won\u0027t get_transport_url always pass in None now?","commit_id":"106c68587c33f891799778fce4dacb6df122da4c"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"3862751a7d058dd50303f4129940d7aa3a0b116d","unresolved":false,"context_lines":[{"line_number":386,"context_line":"        self.useFixture(self.messaging_conf)"},{"line_number":387,"context_line":"        self.useFixture(fixtures.MonkeyPatch("},{"line_number":388,"context_line":"            \u0027nova.rpc.create_transport\u0027, self._fake_create_transport))"},{"line_number":389,"context_line":"        with mock.patch(\u0027nova.rpc.get_transport_url\u0027) as mock_gtu:"},{"line_number":390,"context_line":"            mock_gtu.return_value \u003d None"},{"line_number":391,"context_line":"            rpc.init(CONF)"},{"line_number":392,"context_line":""},{"line_number":393,"context_line":""}],"source_content_type":"text/x-python","patch_set":9,"id":"5a74a57a_e9c91dae","line":390,"range":{"start_line":389,"start_character":8,"end_line":390,"end_character":40},"in_reply_to":"5a74a57a_b87db5e9","updated":"2016-11-22 23:49:21.000000000","message":"Only for the init case (next line) yeah. The default rpc setup needs to end up with transport_url\u003dNone, which we\u0027re arranging here. Later calls to create_transport() are the ones we need to catch, although if they are called with a None url we need to be able to hook them up with the one created during init() as well.","commit_id":"106c68587c33f891799778fce4dacb6df122da4c"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"46e26eae5f141e479fe72686cd693bb9136b9e58","unresolved":false,"context_lines":[{"line_number":386,"context_line":"        self.useFixture(self.messaging_conf)"},{"line_number":387,"context_line":"        self.useFixture(fixtures.MonkeyPatch("},{"line_number":388,"context_line":"            \u0027nova.rpc.create_transport\u0027, self._fake_create_transport))"},{"line_number":389,"context_line":"        with mock.patch(\u0027nova.rpc.get_transport_url\u0027) as mock_gtu:"},{"line_number":390,"context_line":"            mock_gtu.return_value \u003d None"},{"line_number":391,"context_line":"            rpc.init(CONF)"},{"line_number":392,"context_line":""},{"line_number":393,"context_line":""}],"source_content_type":"text/x-python","patch_set":9,"id":"5a74a57a_6f2fcda1","line":390,"range":{"start_line":389,"start_character":8,"end_line":390,"end_character":40},"in_reply_to":"5a74a57a_e9c91dae","updated":"2016-11-23 02:02:47.000000000","message":"bonkers","commit_id":"106c68587c33f891799778fce4dacb6df122da4c"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"2a57830375df540d215dd03ec9b83e8b848d044e","unresolved":false,"context_lines":[{"line_number":368,"context_line":""},{"line_number":369,"context_line":"    def _fake_create_transport(self, url):"},{"line_number":370,"context_line":"        # NOTE(danms): This will be called with a non-None url by"},{"line_number":371,"context_line":"        # code that is cells-aware is is requesting to contact"},{"line_number":372,"context_line":"        # something on one of the many transports we\u0027re"},{"line_number":373,"context_line":"        # multplexing here."},{"line_number":374,"context_line":"        if url not in self._buses:"}],"source_content_type":"text/x-python","patch_set":10,"id":"5a74a57a_cf1c617a","line":371,"range":{"start_line":371,"start_character":35,"end_line":371,"end_character":37},"updated":"2016-11-23 02:03:31.000000000","message":"and","commit_id":"48e852a74ff4b60c07f5ccadb1ae6e7067ae3eea"},{"author":{"_account_id":11564,"name":"Chris Dent","email":"cdent@anticdent.org","username":"chdent"},"change_message_id":"e292bd1061248b5e02291b4e0d99bc20b058b501","unresolved":false,"context_lines":[{"line_number":368,"context_line":""},{"line_number":369,"context_line":"    def _fake_create_transport(self, url):"},{"line_number":370,"context_line":"        # NOTE(danms): This will be called with a non-None url by"},{"line_number":371,"context_line":"        # code that is cells-aware is requesting to contact"},{"line_number":372,"context_line":"        # something on one of the many transports we\u0027re"},{"line_number":373,"context_line":"        # multplexing here."},{"line_number":374,"context_line":"        if url not in self._buses:"}],"source_content_type":"text/x-python","patch_set":12,"id":"5a74a57a_2bfb7248","line":371,"updated":"2016-11-27 09:45:20.000000000","message":"\"that is requesting\"?","commit_id":"7efa1201d8e80a83687c833ebe88b8c2b46b4e16"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"649b517b64e1f0c50c57eb53ffaca99a9ab05871","unresolved":false,"context_lines":[{"line_number":503,"context_line":"        # to a single bus. This is how our tests expect things"},{"line_number":504,"context_line":"        # to work. When the tests are fixed, this fixture can"},{"line_number":505,"context_line":"        # support simulating multiple independent buses."},{"line_number":506,"context_line":"        url \u003d None"},{"line_number":507,"context_line":""},{"line_number":508,"context_line":"        # NOTE(danms): This will be called with a non-None url by"},{"line_number":509,"context_line":"        # cells-aware code that is requesting to contact something on"}],"source_content_type":"text/x-python","patch_set":20,"id":"3a71b18c_d9ec53bd","line":506,"updated":"2016-12-06 21:01:46.000000000","message":"Just to make sure based on the comment above, this is intentionally overwriting the input parameter value for url?","commit_id":"5fb8d8efe66b6d6575035f83b684043752f67208"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"e37e1806350e400b097b4460f32ebfadc209d7c7","unresolved":false,"context_lines":[{"line_number":503,"context_line":"        # to a single bus. This is how our tests expect things"},{"line_number":504,"context_line":"        # to work. When the tests are fixed, this fixture can"},{"line_number":505,"context_line":"        # support simulating multiple independent buses."},{"line_number":506,"context_line":"        url \u003d None"},{"line_number":507,"context_line":""},{"line_number":508,"context_line":"        # NOTE(danms): This will be called with a non-None url by"},{"line_number":509,"context_line":"        # cells-aware code that is requesting to contact something on"}],"source_content_type":"text/x-python","patch_set":20,"id":"3a71b18c_59ea0375","line":506,"in_reply_to":"3a71b18c_d9ec53bd","updated":"2016-12-06 21:05:56.000000000","message":"Yes, it\u0027s collapsing everything to the same bus as if every caller had requested the default. This lets us basically ignore what cells-enabled code is asking for until we have a way to start a compute service listening to only one of these separate buses.","commit_id":"5fb8d8efe66b6d6575035f83b684043752f67208"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"649b517b64e1f0c50c57eb53ffaca99a9ab05871","unresolved":false,"context_lines":[{"line_number":505,"context_line":"        # support simulating multiple independent buses."},{"line_number":506,"context_line":"        url \u003d None"},{"line_number":507,"context_line":""},{"line_number":508,"context_line":"        # NOTE(danms): This will be called with a non-None url by"},{"line_number":509,"context_line":"        # cells-aware code that is requesting to contact something on"},{"line_number":510,"context_line":"        # one of the many transports we\u0027re multplexing here."},{"line_number":511,"context_line":"        if url not in self._buses:"}],"source_content_type":"text/x-python","patch_set":20,"id":"3a71b18c_b94877cd","line":508,"range":{"start_line":508,"start_character":50,"end_line":508,"end_character":62},"updated":"2016-12-06 21:01:46.000000000","message":"But won\u0027t that always be overwritten with the url \u003d None above?","commit_id":"5fb8d8efe66b6d6575035f83b684043752f67208"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"b96289057552723561e5c57cd626a871f0987460","unresolved":false,"context_lines":[{"line_number":505,"context_line":"        # support simulating multiple independent buses."},{"line_number":506,"context_line":"        url \u003d None"},{"line_number":507,"context_line":""},{"line_number":508,"context_line":"        # NOTE(danms): This will be called with a non-None url by"},{"line_number":509,"context_line":"        # cells-aware code that is requesting to contact something on"},{"line_number":510,"context_line":"        # one of the many transports we\u0027re multplexing here."},{"line_number":511,"context_line":"        if url not in self._buses:"}],"source_content_type":"text/x-python","patch_set":20,"id":"3a71b18c_c461cad4","line":508,"range":{"start_line":508,"start_character":50,"end_line":508,"end_character":62},"in_reply_to":"3a71b18c_399e2707","updated":"2016-12-06 21:15:18.000000000","message":"Yeah I think a FIXME is a bit more clear here.","commit_id":"5fb8d8efe66b6d6575035f83b684043752f67208"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"e37e1806350e400b097b4460f32ebfadc209d7c7","unresolved":false,"context_lines":[{"line_number":505,"context_line":"        # support simulating multiple independent buses."},{"line_number":506,"context_line":"        url \u003d None"},{"line_number":507,"context_line":""},{"line_number":508,"context_line":"        # NOTE(danms): This will be called with a non-None url by"},{"line_number":509,"context_line":"        # cells-aware code that is requesting to contact something on"},{"line_number":510,"context_line":"        # one of the many transports we\u0027re multplexing here."},{"line_number":511,"context_line":"        if url not in self._buses:"}],"source_content_type":"text/x-python","patch_set":20,"id":"3a71b18c_399e2707","line":508,"range":{"start_line":508,"start_character":50,"end_line":508,"end_character":62},"in_reply_to":"3a71b18c_b94877cd","updated":"2016-12-06 21:05:56.000000000","message":"Yes, this comment is intended to stay, the comment above is intended to go away when we remove the short circuit. Perhaps I should change the first one to a FIXME. I\u0027ll do that and add more words when I make this depend on the o.msg release.","commit_id":"5fb8d8efe66b6d6575035f83b684043752f67208"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"a0afe67506a553f163922b64426a4c7a2946ea8d","unresolved":false,"context_lines":[{"line_number":527,"context_line":"        self.useFixture(self.messaging_conf)"},{"line_number":528,"context_line":"        self.useFixture(fixtures.MonkeyPatch("},{"line_number":529,"context_line":"            \u0027nova.rpc.create_transport\u0027, self._fake_create_transport))"},{"line_number":530,"context_line":"        # NOTE(danms): Execute the init with get_transport_url() as None,"},{"line_number":531,"context_line":"        # instead of the parsed TransportURL(None) so that we can cache"},{"line_number":532,"context_line":"        # it as it will be called later if the default is requested by"},{"line_number":533,"context_line":"        # one of our mq-switching methods."}],"source_content_type":"text/x-python","patch_set":20,"id":"3a71b18c_3959c78e","line":530,"range":{"start_line":530,"start_character":23,"end_line":530,"end_character":73},"updated":"2016-12-06 21:03:51.000000000","message":"You don\u0027t need this if we have url\u003dNone in _fake_create_transport, right?","commit_id":"5fb8d8efe66b6d6575035f83b684043752f67208"}],"requirements.txt":[{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"f3223bfdf2f051bfe5b77c7532426a6b04a0cedf","unresolved":false,"context_lines":[{"line_number":43,"context_line":"oslo.utils\u003e\u003d3.18.0 # Apache-2.0"},{"line_number":44,"context_line":"oslo.db!\u003d4.13.1,!\u003d4.13.2,\u003e\u003d4.11.0 # Apache-2.0"},{"line_number":45,"context_line":"oslo.rootwrap\u003e\u003d5.0.0 # Apache-2.0"},{"line_number":46,"context_line":"oslo.messaging\u003e\u003d5.14.0 # Apache-2.0"},{"line_number":47,"context_line":"oslo.policy\u003e\u003d1.17.0 # Apache-2.0"},{"line_number":48,"context_line":"oslo.privsep\u003e\u003d1.9.0 # Apache-2.0"},{"line_number":49,"context_line":"oslo.i18n\u003e\u003d2.1.0 # Apache-2.0"}],"source_content_type":"text/plain","patch_set":23,"id":"3a71b18c_c516fd57","line":46,"updated":"2016-12-07 16:27:44.000000000","message":"This should be fine because https://review.openstack.org/#/c/407794/ has landed.","commit_id":"9dcab12b7c0d57d1f050cd2df58244ce90ce17e3"}]}
