)]}'
{"shade/openstackcloud.py":[{"author":{"_account_id":2,"name":"Monty Taylor","email":"mordred@inaugust.com","username":"mordred"},"change_message_id":"a0926e93356498d6160b9bb05ca5b9701a38313d","unresolved":false,"context_lines":[{"line_number":11415,"context_line":"            return self._normalize_magnum_services("},{"line_number":11416,"context_line":"                self._get_and_munchify(\u0027mservices\u0027, data))"},{"line_number":11417,"context_line":""},{"line_number":11418,"context_line":"    def create_cluster(self, name, profile_id, config\u003dNone, desired_capacity\u003d0,"},{"line_number":11419,"context_line":"                       max_size\u003dNone, metadata\u003dNone, min_size\u003dNone,"},{"line_number":11420,"context_line":"                       timeout\u003dNone):"},{"line_number":11421,"context_line":"        body \u003d {"}],"source_content_type":"text/x-python","patch_set":1,"id":"3fa0c359_dbd93af3","line":11418,"range":{"start_line":11418,"start_character":35,"end_line":11418,"end_character":45},"updated":"2018-02-09 15:38:50.000000000","message":"Let\u0027s rename this to \u0027profile\u0027 and accept a profile dict too. Like:\n\n    profile \u003d self.get_cluster_profile(profile)\n    profile_id \u003d profile[\u0027id\u0027]\n\n(and then see note below on get_cluster_profile)","commit_id":"d5cde149db9df9d25fc015bd52954ca8c8c6a708"},{"author":{"_account_id":2,"name":"Monty Taylor","email":"mordred@inaugust.com","username":"mordred"},"change_message_id":"a0926e93356498d6160b9bb05ca5b9701a38313d","unresolved":false,"context_lines":[{"line_number":11456,"context_line":"            json\u003d{\u0027metadata\u0027: metadata},"},{"line_number":11457,"context_line":"            error_message\u003d\u0027Error updating cluster metadata\u0027)"},{"line_number":11458,"context_line":""},{"line_number":11459,"context_line":"    def get_cluster(self, name_or_id):"},{"line_number":11460,"context_line":"        try:"},{"line_number":11461,"context_line":"            data \u003d self._clustering_client.get("},{"line_number":11462,"context_line":"                \"/clusters/{cluster_id}\".format(cluster_id\u003dname_or_id),"}],"source_content_type":"text/x-python","patch_set":1,"id":"3fa0c359_3b1cde76","line":11459,"updated":"2018-02-09 15:38:50.000000000","message":"Please rename this to \"get_cluster_by_id\". Then, add a get_cluster method:\n\n    def get_cluster(self, name_or_id, filters\u003dNone):\n        return _utils._get_entity(\n            self, \u0027cluster\u0027, name_or_id, filters)","commit_id":"d5cde149db9df9d25fc015bd52954ca8c8c6a708"},{"author":{"_account_id":22623,"name":"Erik Olof Gunnar Andersson","email":"eandersson@blizzard.com","username":"eoandersson"},"change_message_id":"4a849b91f2359a74284163664a28a63762bba088","unresolved":false,"context_lines":[{"line_number":11629,"context_line":"            return self._clustering_client.get("},{"line_number":11630,"context_line":"                endpoint,"},{"line_number":11631,"context_line":"                error_message\u003d\"Error fetching cluster policies\")"},{"line_number":11632,"context_line":"#            return self._get_and_munchify(\u0027policies\u0027, data)"},{"line_number":11633,"context_line":"        except Exception:"},{"line_number":11634,"context_line":"            return None"},{"line_number":11635,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"3fa0c359_b306e71b","line":11632,"updated":"2018-02-09 02:25:01.000000000","message":"This should probably be removed.","commit_id":"d5cde149db9df9d25fc015bd52954ca8c8c6a708"},{"author":{"_account_id":2,"name":"Monty Taylor","email":"mordred@inaugust.com","username":"mordred"},"change_message_id":"a0926e93356498d6160b9bb05ca5b9701a38313d","unresolved":false,"context_lines":[{"line_number":11669,"context_line":"        except Exception:"},{"line_number":11670,"context_line":"            return None"},{"line_number":11671,"context_line":""},{"line_number":11672,"context_line":"    def get_cluster_profile(self, name_or_id):"},{"line_number":11673,"context_line":"        try:"},{"line_number":11674,"context_line":"            data \u003d self._clustering_client.get("},{"line_number":11675,"context_line":"                \"/profiles/{profile_id}\".format(profile_id\u003dname_or_id),"}],"source_content_type":"text/x-python","patch_set":1,"id":"3fa0c359_fe1f4458","line":11672,"updated":"2018-02-09 15:38:50.000000000","message":"Same thing as get_cluster - make this method get_cluster_profile_by_id, then make a get_cluster_profile:\n\n    def get_cluster_profile(\n            self, name_or_id, filters\u003dNone):\n        return _utils._get_entity(\n            self, \u0027cluster_profile\u0027, name_or_id, filters)","commit_id":"d5cde149db9df9d25fc015bd52954ca8c8c6a708"},{"author":{"_account_id":2,"name":"Monty Taylor","email":"mordred@inaugust.com","username":"mordred"},"change_message_id":"a0926e93356498d6160b9bb05ca5b9701a38313d","unresolved":false,"context_lines":[{"line_number":11738,"context_line":"        except Exception:"},{"line_number":11739,"context_line":"            return None"},{"line_number":11740,"context_line":""},{"line_number":11741,"context_line":"    def get_cluster_policy(self, name_or_id):"},{"line_number":11742,"context_line":"        try:"},{"line_number":11743,"context_line":"            data \u003d self._clustering_client.get("},{"line_number":11744,"context_line":"                \"/policies/{policy_id}\".format(policy_id\u003dname_or_id),"}],"source_content_type":"text/x-python","patch_set":1,"id":"3fa0c359_3e784c8e","line":11741,"updated":"2018-02-09 15:38:50.000000000","message":"Same pattern.","commit_id":"d5cde149db9df9d25fc015bd52954ca8c8c6a708"},{"author":{"_account_id":25674,"name":"Jude Cross","email":"jucross@blizzard.com","username":"problem_v"},"change_message_id":"ccbe0a93a888029e505b93f2c1aa4d4853971ebd","unresolved":false,"context_lines":[{"line_number":11808,"context_line":"            return self._clustering_client.get("},{"line_number":11809,"context_line":"                \u0027/receivers\u0027,"},{"line_number":11810,"context_line":"                error_message\u003d\"Error fetching receivers\")"},{"line_number":11811,"context_line":"#            return self._get_and_munchify(\u0027receivers\u0027, data)"},{"line_number":11812,"context_line":"        except Exception:"},{"line_number":11813,"context_line":"            return None"},{"line_number":11814,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"3fa0c359_369c0569","line":11811,"range":{"start_line":11811,"start_character":1,"end_line":11811,"end_character":13},"updated":"2018-02-09 03:41:14.000000000","message":"Same here, as Erik\u0027s comment. any of these commented out lines should be removed.","commit_id":"d5cde149db9df9d25fc015bd52954ca8c8c6a708"},{"author":{"_account_id":2,"name":"Monty Taylor","email":"mordred@inaugust.com","username":"mordred"},"change_message_id":"5fbc39f8dbe463a9e51b0b13e2a0c5661f4ae49e","unresolved":false,"context_lines":[{"line_number":11418,"context_line":"    def create_cluster(self, name, profile, config\u003dNone, desired_capacity\u003d0,"},{"line_number":11419,"context_line":"                       max_size\u003dNone, metadata\u003dNone, min_size\u003dNone,"},{"line_number":11420,"context_line":"                       timeout\u003dNone):"},{"line_number":11421,"context_line":"        profile_id \u003d profile[\u0027id\u0027]"},{"line_number":11422,"context_line":"        body \u003d {"},{"line_number":11423,"context_line":"            \u0027desired_capacity\u0027: desired_capacity,"},{"line_number":11424,"context_line":"            \u0027name\u0027: name,"}],"source_content_type":"text/x-python","patch_set":2,"id":"3fa0c359_a6a5d1a0","line":11421,"updated":"2018-02-14 15:35:20.000000000","message":"This is now missing:\n\n  profile \u003d self.get_cluster_profile(profile)\n\nThat line will handle the logic for just returning a dict if one was given or otherwise doing a remote fetch to find  one if just a name or id was given. Then the\n\n  profile_id \u003d profile[\u0027id\u0027]\n\ncan always be expected to be successful.","commit_id":"3c3e1a351f77f82fcc85325ad67f34bb7c4cdd57"},{"author":{"_account_id":2,"name":"Monty Taylor","email":"mordred@inaugust.com","username":"mordred"},"change_message_id":"5fbc39f8dbe463a9e51b0b13e2a0c5661f4ae49e","unresolved":false,"context_lines":[{"line_number":11447,"context_line":"        return self._get_and_munchify(key\u003dNone, data\u003ddata)"},{"line_number":11448,"context_line":""},{"line_number":11449,"context_line":"    def set_cluster_metadata(self, name_or_id, metadata):"},{"line_number":11450,"context_line":"        cluster \u003d self.get_cluster_by_id(name_or_id)"},{"line_number":11451,"context_line":"        if not cluster:"},{"line_number":11452,"context_line":"            raise OpenStackCloudException("},{"line_number":11453,"context_line":"                \u0027Invalid Cluster {cluster}\u0027.format(cluster\u003dname_or_id))"}],"source_content_type":"text/x-python","patch_set":2,"id":"3fa0c359_a6ecf1ba","line":11450,"updated":"2018-02-14 15:35:20.000000000","message":"If you keep this as self.get_cluster, then set_cluster_metadata can also work with name/id or cluster dict.","commit_id":"3c3e1a351f77f82fcc85325ad67f34bb7c4cdd57"},{"author":{"_account_id":2,"name":"Monty Taylor","email":"mordred@inaugust.com","username":"mordred"},"change_message_id":"5fbc39f8dbe463a9e51b0b13e2a0c5661f4ae49e","unresolved":false,"context_lines":[{"line_number":11467,"context_line":"        except Exception:"},{"line_number":11468,"context_line":"            return None"},{"line_number":11469,"context_line":""},{"line_number":11470,"context_line":"    def get_cluster(self, name_or_id, filters\u003dNone):"},{"line_number":11471,"context_line":"        return _utils._get_entity(self, \u0027cluster\u0027, name_or_id, filters)"},{"line_number":11472,"context_line":""},{"line_number":11473,"context_line":"    def update_cluster(self, name_or_id, new_name\u003dNone,"}],"source_content_type":"text/x-python","patch_set":2,"id":"3fa0c359_06336563","line":11470,"updated":"2018-02-14 15:35:20.000000000","message":"Thanks!","commit_id":"3c3e1a351f77f82fcc85325ad67f34bb7c4cdd57"},{"author":{"_account_id":2,"name":"Monty Taylor","email":"mordred@inaugust.com","username":"mordred"},"change_message_id":"5fbc39f8dbe463a9e51b0b13e2a0c5661f4ae49e","unresolved":false,"context_lines":[{"line_number":11473,"context_line":"    def update_cluster(self, name_or_id, new_name\u003dNone,"},{"line_number":11474,"context_line":"                       profile_name_or_id\u003dNone, config\u003dNone, metadata\u003dNone,"},{"line_number":11475,"context_line":"                       timeout\u003dNone, profile_only\u003dFalse):"},{"line_number":11476,"context_line":"        cluster \u003d self.get_cluster_by_id(name_or_id)"},{"line_number":11477,"context_line":"        if cluster is None:"},{"line_number":11478,"context_line":"            self.log.debug(\"Cluster %s not found for updating\", name_or_id)"},{"line_number":11479,"context_line":"            return False"}],"source_content_type":"text/x-python","patch_set":2,"id":"3fa0c359_864695bf","line":11476,"updated":"2018-02-14 15:35:20.000000000","message":"Same - I\u0027d keep this get_cluster","commit_id":"3c3e1a351f77f82fcc85325ad67f34bb7c4cdd57"},{"author":{"_account_id":2,"name":"Monty Taylor","email":"mordred@inaugust.com","username":"mordred"},"change_message_id":"5fbc39f8dbe463a9e51b0b13e2a0c5661f4ae49e","unresolved":false,"context_lines":[{"line_number":11515,"context_line":"                    name_or_id)[\"cluster_policies\"]:"},{"line_number":11516,"context_line":"                self.detach_policy_from_cluster(name_or_id,"},{"line_number":11517,"context_line":"                                                policy[\u0027policy_id\u0027])"},{"line_number":11518,"context_line":"            time.sleep(2)"},{"line_number":11519,"context_line":""},{"line_number":11520,"context_line":"        if self.list_cluster_receivers()[\"receivers\"]:"},{"line_number":11521,"context_line":"            for receiver in self.list_cluster_receivers()[\"receivers\"]:"}],"source_content_type":"text/x-python","patch_set":2,"id":"3fa0c359_065a8581","line":11518,"updated":"2018-02-14 15:35:20.000000000","message":"Using a time.sleep like this is a potential race condition. I\u0027m assuming this is done so that the the list_cluster_receivers call below will have been updated, yes? I think it\u0027s better if we poll something using iterate_timeout to verify that the policy has been detached. Might even want to make that a behavior in detach_policy_from_cluster that\u0027s protected by a wait parameter.","commit_id":"3c3e1a351f77f82fcc85325ad67f34bb7c4cdd57"},{"author":{"_account_id":2,"name":"Monty Taylor","email":"mordred@inaugust.com","username":"mordred"},"change_message_id":"5fbc39f8dbe463a9e51b0b13e2a0c5661f4ae49e","unresolved":false,"context_lines":[{"line_number":11541,"context_line":"    def attach_policy_to_cluster(self, name_or_id, policy_name_or_id,"},{"line_number":11542,"context_line":"                                 is_enabled):"},{"line_number":11543,"context_line":"        cluster \u003d self.get_cluster_by_id(name_or_id)"},{"line_number":11544,"context_line":"        policy \u003d self.get_cluster_policy_by_id(policy_name_or_id)"},{"line_number":11545,"context_line":"        if cluster is None:"},{"line_number":11546,"context_line":"            self.log.debug(\"Cluster %s not found for attaching\", name_or_id)"},{"line_number":11547,"context_line":"            return False"}],"source_content_type":"text/x-python","patch_set":2,"id":"3fa0c359_46c96d23","line":11544,"updated":"2018-02-14 15:35:20.000000000","message":"Same ting - leave these as not using the _by_id versions and the id or dict logic magic gets to happen.","commit_id":"3c3e1a351f77f82fcc85325ad67f34bb7c4cdd57"},{"author":{"_account_id":2,"name":"Monty Taylor","email":"mordred@inaugust.com","username":"mordred"},"change_message_id":"5fbc39f8dbe463a9e51b0b13e2a0c5661f4ae49e","unresolved":false,"context_lines":[{"line_number":11568,"context_line":""},{"line_number":11569,"context_line":"    def detach_policy_from_cluster(self, name_or_id, policy_name_or_id):"},{"line_number":11570,"context_line":"        cluster \u003d self.get_cluster_by_id(name_or_id)"},{"line_number":11571,"context_line":"        policy \u003d self.get_cluster_policy_by_id(policy_name_or_id)"},{"line_number":11572,"context_line":"        if cluster is None:"},{"line_number":11573,"context_line":"            self.log.debug(\"Cluster %s not found for detaching\", name_or_id)"},{"line_number":11574,"context_line":"            return False"}],"source_content_type":"text/x-python","patch_set":2,"id":"3fa0c359_66cca934","line":11571,"updated":"2018-02-14 15:35:20.000000000","message":"same","commit_id":"3c3e1a351f77f82fcc85325ad67f34bb7c4cdd57"},{"author":{"_account_id":2,"name":"Monty Taylor","email":"mordred@inaugust.com","username":"mordred"},"change_message_id":"5fbc39f8dbe463a9e51b0b13e2a0c5661f4ae49e","unresolved":false,"context_lines":[{"line_number":11592,"context_line":"    def update_policy_on_cluster(self, name_or_id, policy_name_or_id,"},{"line_number":11593,"context_line":"                                 is_enabled):"},{"line_number":11594,"context_line":"        cluster \u003d self.get_cluster_by_id(name_or_id)"},{"line_number":11595,"context_line":"        policy \u003d self.get_cluster_policy_by_id(policy_name_or_id)"},{"line_number":11596,"context_line":"        if cluster is None:"},{"line_number":11597,"context_line":"            self.log.debug(\"Cluster %s not found for updating\", name_or_id)"},{"line_number":11598,"context_line":"            return False"}],"source_content_type":"text/x-python","patch_set":2,"id":"3fa0c359_26d221d2","line":11595,"updated":"2018-02-14 15:35:20.000000000","message":"same","commit_id":"3c3e1a351f77f82fcc85325ad67f34bb7c4cdd57"},{"author":{"_account_id":2,"name":"Monty Taylor","email":"mordred@inaugust.com","username":"mordred"},"change_message_id":"5fbc39f8dbe463a9e51b0b13e2a0c5661f4ae49e","unresolved":false,"context_lines":[{"line_number":11683,"context_line":"        except Exception:"},{"line_number":11684,"context_line":"            return None"},{"line_number":11685,"context_line":""},{"line_number":11686,"context_line":"    def get_cluster_profile(self, name_or_id, fileters\u003dNone):"},{"line_number":11687,"context_line":"        return _utils._get_entity("},{"line_number":11688,"context_line":"            self, \u0027cluster_profile\u0027, name_or_id, filters)"},{"line_number":11689,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"3fa0c359_a6ddd1dd","line":11686,"updated":"2018-02-14 15:35:20.000000000","message":"thanks - looks great.","commit_id":"3c3e1a351f77f82fcc85325ad67f34bb7c4cdd57"},{"author":{"_account_id":26558,"name":"Bailey Johnson","email":"bjjohnson@blizzard.com","username":"elachance"},"change_message_id":"c845fafb4c5cda24af426675db452fb21e701f27","unresolved":false,"context_lines":[{"line_number":11541,"context_line":"            self.log.debug(\"Cluster %s not found for deleting\", name_or_id)"},{"line_number":11542,"context_line":"            return False"},{"line_number":11543,"context_line":""},{"line_number":11544,"context_line":"        if self.list_policies_on_cluster(name_or_id)[\"cluster_policies\"]:"},{"line_number":11545,"context_line":"            for policy in self.list_policies_on_cluster("},{"line_number":11546,"context_line":"                    name_or_id)[\"cluster_policies\"]:"},{"line_number":11547,"context_line":"                detach_policy \u003d self.get_cluster_policy_by_id("}],"source_content_type":"text/x-python","patch_set":4,"id":"df7087c5_f78a1319","line":11544,"range":{"start_line":11544,"start_character":0,"end_line":11544,"end_character":8},"updated":"2018-03-22 21:09:58.000000000","message":"Right now I have logic in here to automatically detach any policy and delete any receiver still connected to the cluster. Is this an okay thing to do within shade? Or should I save the logic for ansible?","commit_id":"0728754dedd4e46dd50ff72222f92b4a99e6cab9"},{"author":{"_account_id":2,"name":"Monty Taylor","email":"mordred@inaugust.com","username":"mordred"},"change_message_id":"a1da4cda52d7e467bcf95c1d58467d3aabd436eb","unresolved":false,"context_lines":[{"line_number":11541,"context_line":"            self.log.debug(\"Cluster %s not found for deleting\", name_or_id)"},{"line_number":11542,"context_line":"            return False"},{"line_number":11543,"context_line":""},{"line_number":11544,"context_line":"        if self.list_policies_on_cluster(name_or_id)[\"cluster_policies\"]:"},{"line_number":11545,"context_line":"            for policy in self.list_policies_on_cluster("},{"line_number":11546,"context_line":"                    name_or_id)[\"cluster_policies\"]:"},{"line_number":11547,"context_line":"                detach_policy \u003d self.get_cluster_policy_by_id("}],"source_content_type":"text/x-python","patch_set":4,"id":"9f6a8fd7_eb3142a4","line":11544,"range":{"start_line":11544,"start_character":0,"end_line":11544,"end_character":8},"in_reply_to":"df7087c5_f78a1319","updated":"2018-04-27 11:34:11.000000000","message":"Absolutely should be in shade - thanks!","commit_id":"0728754dedd4e46dd50ff72222f92b4a99e6cab9"},{"author":{"_account_id":2,"name":"Monty Taylor","email":"mordred@inaugust.com","username":"mordred"},"change_message_id":"a1da4cda52d7e467bcf95c1d58467d3aabd436eb","unresolved":false,"context_lines":[{"line_number":11625,"context_line":""},{"line_number":11626,"context_line":"        start \u003d time.time()"},{"line_number":11627,"context_line":"        policy_status \u003d self.get_cluster_by_id(cluster[\u0027id\u0027])[\u0027policies\u0027]"},{"line_number":11628,"context_line":"        value \u003d []"},{"line_number":11629,"context_line":""},{"line_number":11630,"context_line":"        while policy_status !\u003d value:"},{"line_number":11631,"context_line":"            time.sleep(1)"}],"source_content_type":"text/x-python","patch_set":4,"id":"9f6a8fd7_abb58acf","line":11628,"updated":"2018-04-27 11:34:11.000000000","message":"This is just going to check to see if there are no policies. But if we\u0027re detaching a single policy, isn\u0027t is possible that  policies could have another entry in it, so we should be checking that the policy in question is no longer in the list, yeah?","commit_id":"0728754dedd4e46dd50ff72222f92b4a99e6cab9"},{"author":{"_account_id":2,"name":"Monty Taylor","email":"mordred@inaugust.com","username":"mordred"},"change_message_id":"a1da4cda52d7e467bcf95c1d58467d3aabd436eb","unresolved":false,"context_lines":[{"line_number":11907,"context_line":"            error_message\u003d\"Error deleting receiver \""},{"line_number":11908,"context_line":"                          \"{name}\".format(name\u003dname_or_id))"},{"line_number":11909,"context_line":""},{"line_number":11910,"context_line":"        start \u003d time.time()"},{"line_number":11911,"context_line":""},{"line_number":11912,"context_line":"        while receiver:"},{"line_number":11913,"context_line":"            time.sleep(1)"},{"line_number":11914,"context_line":"            receiver \u003d self.get_cluster_receiver_by_id(receiver[\u0027id\u0027])"},{"line_number":11915,"context_line":""},{"line_number":11916,"context_line":"            timed_out \u003d time.time() - start \u003e\u003d 60"},{"line_number":11917,"context_line":""},{"line_number":11918,"context_line":"            if receiver and timed_out:"},{"line_number":11919,"context_line":"                return False"},{"line_number":11920,"context_line":"        return True"},{"line_number":11921,"context_line":""},{"line_number":11922,"context_line":"    def update_cluster_receiver(self, name_or_id, new_name\u003dNone, action\u003dNone,"}],"source_content_type":"text/x-python","patch_set":4,"id":"9f6a8fd7_2b73ba4f","line":11919,"range":{"start_line":11910,"start_character":0,"end_line":11919,"end_character":28},"updated":"2018-04-27 11:34:11.000000000","message":"we have a utility context managed called \"iterate timeout\" for this.","commit_id":"0728754dedd4e46dd50ff72222f92b4a99e6cab9"}],"shade/tests/functional/test_clustering.py":[{"author":{"_account_id":25674,"name":"Jude Cross","email":"jucross@blizzard.com","username":"problem_v"},"change_message_id":"ccbe0a93a888029e505b93f2c1aa4d4853971ebd","unresolved":false,"context_lines":[{"line_number":1183,"context_line":"        # Format of the created_at variable differs between policy create"},{"line_number":1184,"context_line":"        # and policy get so if we don\u0027t ignore this variable, comparison will"},{"line_number":1185,"context_line":"        # always fail"},{"line_number":1186,"context_line":"        policy[\u0027created_at\u0027] \u003d \u0027ignore\u0027"},{"line_number":1187,"context_line":""},{"line_number":1188,"context_line":"        policy_get \u003d self.user_cloud.get_cluster_policy(policy[\u0027id\u0027])"},{"line_number":1189,"context_line":""},{"line_number":1190,"context_line":"        policy_get[\u0027created_at\u0027] \u003d \u0027ignore\u0027"},{"line_number":1191,"context_line":""},{"line_number":1192,"context_line":"        self.assertEqual(policy_get, policy)"},{"line_number":1193,"context_line":""},{"line_number":1194,"context_line":"    def test_update_cluster_policy(self):"},{"line_number":1195,"context_line":"        policy_name \u003d \u0027example_policy\u0027"}],"source_content_type":"text/x-python","patch_set":1,"id":"3fa0c359_d602816f","line":1192,"range":{"start_line":1186,"start_character":0,"end_line":1192,"end_character":44},"updated":"2018-02-09 03:41:14.000000000","message":"You should make this match test_list_cluster_policies for OCD reasons :)","commit_id":"d5cde149db9df9d25fc015bd52954ca8c8c6a708"}],"shade/tests/unit/fixtures/catalog-v3-suburl.json":[{"author":{"_account_id":25674,"name":"Jude Cross","email":"jucross@blizzard.com","username":"problem_v"},"change_message_id":"ccbe0a93a888029e505b93f2c1aa4d4853971ebd","unresolved":false,"context_lines":[{"line_number":161,"context_line":"        \"endpoint_links\": [],"},{"line_number":162,"context_line":"        \"name\": \"senlin\","},{"line_number":163,"context_line":"        \"type\": \"clustering\""},{"line_number":164,"context_line":"      }      "},{"line_number":165,"context_line":"    ],"},{"line_number":166,"context_line":"    \"expires_at\": \"9999-12-31T23:59:59Z\","},{"line_number":167,"context_line":"    \"issued_at\": \"2016-12-17T14:25:05.000000Z\","}],"source_content_type":"application/json","patch_set":1,"id":"3fa0c359_96f8797b","line":164,"updated":"2018-02-09 03:41:14.000000000","message":"remove this :)","commit_id":"d5cde149db9df9d25fc015bd52954ca8c8c6a708"}],"shade/tests/unit/test_clustering.py":[{"author":{"_account_id":22623,"name":"Erik Olof Gunnar Andersson","email":"eandersson@blizzard.com","username":"eoandersson"},"change_message_id":"4a849b91f2359a74284163664a28a63762bba088","unresolved":false,"context_lines":[{"line_number":17,"context_line":"from shade.tests.unit import base"},{"line_number":18,"context_line":""},{"line_number":19,"context_line":""},{"line_number":20,"context_line":"clustering_dict \u003d {"},{"line_number":21,"context_line":"    \u0027name\u0027: \u0027fake-name\u0027,"},{"line_number":22,"context_line":"    \u0027profile_id\u0027: \u0027fake-profile-id\u0027,"},{"line_number":23,"context_line":"    \u0027desired_capacity\u0027: 1,"}],"source_content_type":"text/x-python","patch_set":1,"id":"3fa0c359_733dbfc2","line":20,"updated":"2018-02-09 02:25:01.000000000","message":"These variables should probably be uppercase, or maybe moved to a json file?","commit_id":"d5cde149db9df9d25fc015bd52954ca8c8c6a708"},{"author":{"_account_id":25674,"name":"Jude Cross","email":"jucross@blizzard.com","username":"problem_v"},"change_message_id":"ccbe0a93a888029e505b93f2c1aa4d4853971ebd","unresolved":false,"context_lines":[{"line_number":17,"context_line":"from shade.tests.unit import base"},{"line_number":18,"context_line":""},{"line_number":19,"context_line":""},{"line_number":20,"context_line":"clustering_dict \u003d {"},{"line_number":21,"context_line":"    \u0027name\u0027: \u0027fake-name\u0027,"},{"line_number":22,"context_line":"    \u0027profile_id\u0027: \u0027fake-profile-id\u0027,"},{"line_number":23,"context_line":"    \u0027desired_capacity\u0027: 1,"}],"source_content_type":"text/x-python","patch_set":1,"id":"3fa0c359_f62c5d03","line":20,"in_reply_to":"3fa0c359_733dbfc2","updated":"2018-02-09 03:41:14.000000000","message":"+1","commit_id":"d5cde149db9df9d25fc015bd52954ca8c8c6a708"},{"author":{"_account_id":22623,"name":"Erik Olof Gunnar Andersson","email":"eandersson@blizzard.com","username":"eoandersson"},"change_message_id":"288de5ae95462635551c1a5fa7fffda43e4b3242","unresolved":false,"context_lines":[{"line_number":47,"context_line":"    \u0027type\u0027: \u0027webhook\u0027"},{"line_number":48,"context_line":"}"},{"line_number":49,"context_line":""},{"line_number":50,"context_line":"new_clustering_dict \u003d copy.copy(CLUSTERING_DICT)"},{"line_number":51,"context_line":"new_clustering_dict[\u0027id\u0027] \u003d \u00271\u0027"},{"line_number":52,"context_line":"new_profile_dict \u003d copy.copy(PROFILE_DICT)"},{"line_number":53,"context_line":"new_profile_dict[\u0027id\u0027] \u003d \u00271\u0027"}],"source_content_type":"text/x-python","patch_set":2,"id":"3fa0c359_ab587287","line":50,"updated":"2018-02-12 18:43:46.000000000","message":"These should be upper case as well.","commit_id":"3c3e1a351f77f82fcc85325ad67f34bb7c4cdd57"}]}
