)]}'
{"openstack/cloud/openstackcloud.py":[{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"1dc95468ba90dd67024abf2f837d09cdcd259e93","unresolved":false,"context_lines":[{"line_number":11397,"context_line":""},{"line_number":11398,"context_line":"    def create_cluster(self, name, profile, config\u003dNone, desired_capacity\u003d0,"},{"line_number":11399,"context_line":"                       max_size\u003dNone, metadata\u003dNone, min_size\u003dNone,"},{"line_number":11400,"context_line":"                       timeout\u003dNone):"},{"line_number":11401,"context_line":"        profile \u003d self.get_cluster_profile(profile)"},{"line_number":11402,"context_line":"        profile_id \u003d profile[\u0027id\u0027]"},{"line_number":11403,"context_line":"        body \u003d {"}],"source_content_type":"text/x-python","patch_set":1,"id":"5f7c97a3_52753031","line":11400,"updated":"2018-06-20 09:57:58.000000000","message":"docstring? (ditto everywhere)","commit_id":"f4ec7ac2b717b160da0c4dcd5f1795268b0b5f9f"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"1dc95468ba90dd67024abf2f837d09cdcd259e93","unresolved":false,"context_lines":[{"line_number":11438,"context_line":"            json\u003d{\u0027metadata\u0027: metadata},"},{"line_number":11439,"context_line":"            error_message\u003d\u0027Error updating cluster metadata\u0027)"},{"line_number":11440,"context_line":""},{"line_number":11441,"context_line":"    def get_cluster_by_id(self, name_or_id):"},{"line_number":11442,"context_line":"        try:"},{"line_number":11443,"context_line":"            data \u003d self._clustering_client.get("},{"line_number":11444,"context_line":"                \"/clusters/{cluster_id}\".format(cluster_id\u003dname_or_id),"}],"source_content_type":"text/x-python","patch_set":1,"id":"5f7c97a3_72706c41","line":11441,"updated":"2018-06-20 09:57:58.000000000","message":"so, is it by name or id? the function name suggests the former, the parameter name suggests the latter","commit_id":"f4ec7ac2b717b160da0c4dcd5f1795268b0b5f9f"},{"author":{"_account_id":2,"name":"Monty Taylor","email":"mordred@inaugust.com","username":"mordred"},"change_message_id":"16a8cc534ca92193895e822403af46da50653271","unresolved":false,"context_lines":[{"line_number":11438,"context_line":"            json\u003d{\u0027metadata\u0027: metadata},"},{"line_number":11439,"context_line":"            error_message\u003d\u0027Error updating cluster metadata\u0027)"},{"line_number":11440,"context_line":""},{"line_number":11441,"context_line":"    def get_cluster_by_id(self, name_or_id):"},{"line_number":11442,"context_line":"        try:"},{"line_number":11443,"context_line":"            data \u003d self._clustering_client.get("},{"line_number":11444,"context_line":"                \"/clusters/{cluster_id}\".format(cluster_id\u003dname_or_id),"}],"source_content_type":"text/x-python","patch_set":1,"id":"5f7c97a3_5e43f73f","line":11441,"in_reply_to":"5f7c97a3_72706c41","updated":"2018-06-20 13:01:00.000000000","message":"Great point - we should update that parameter to be cluster_id I think?","commit_id":"f4ec7ac2b717b160da0c4dcd5f1795268b0b5f9f"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"1dc95468ba90dd67024abf2f837d09cdcd259e93","unresolved":false,"context_lines":[{"line_number":11448,"context_line":"        except Exception:"},{"line_number":11449,"context_line":"            return None"},{"line_number":11450,"context_line":""},{"line_number":11451,"context_line":"    def get_cluster(self, name_or_id, filters\u003dNone):"},{"line_number":11452,"context_line":"        return _utils._get_entity(cloud\u003dself, resource\u003d\u0027cluster\u0027,"},{"line_number":11453,"context_line":"                                  name_or_id\u003dname_or_id, filters\u003dfilters)"},{"line_number":11454,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"5f7c97a3_128d7829","line":11451,"updated":"2018-06-20 09:57:58.000000000","message":"how is it different from get_cluster_by_id?","commit_id":"f4ec7ac2b717b160da0c4dcd5f1795268b0b5f9f"},{"author":{"_account_id":2,"name":"Monty Taylor","email":"mordred@inaugust.com","username":"mordred"},"change_message_id":"16a8cc534ca92193895e822403af46da50653271","unresolved":false,"context_lines":[{"line_number":11448,"context_line":"        except Exception:"},{"line_number":11449,"context_line":"            return None"},{"line_number":11450,"context_line":""},{"line_number":11451,"context_line":"    def get_cluster(self, name_or_id, filters\u003dNone):"},{"line_number":11452,"context_line":"        return _utils._get_entity(cloud\u003dself, resource\u003d\u0027cluster\u0027,"},{"line_number":11453,"context_line":"                                  name_or_id\u003dname_or_id, filters\u003dfilters)"},{"line_number":11454,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"5f7c97a3_de570701","line":11451,"in_reply_to":"5f7c97a3_128d7829","updated":"2018-06-20 13:01:00.000000000","message":"_utils._get_entity does a list + client-side-filter (or it can try a direct call for a server-side filter if you configured things that way) This is the general pattern in here - and it\u0027s because a: we can\u0027t reliably tell if someone passed us a name or an id when they want to get an individual record and b: for scalability for things like nodepool, it\u0027s actually less costly to do a list and cache it for a few seconds than to have 1000 threads all doing gets.\n\nget_cluster_by_id is an option to _never_ do the list/filter approach for the times when you know you have an ID and you want to bypass any list batching/caching.","commit_id":"f4ec7ac2b717b160da0c4dcd5f1795268b0b5f9f"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"1dc95468ba90dd67024abf2f837d09cdcd259e93","unresolved":false,"context_lines":[{"line_number":11458,"context_line":"        old_cluster \u003d self.get_cluster(name_or_id)"},{"line_number":11459,"context_line":"        if old_cluster is None:"},{"line_number":11460,"context_line":"            self.log.debug(\"Cluster %s not found for updating\", name_or_id)"},{"line_number":11461,"context_line":"            return False"},{"line_number":11462,"context_line":"        cluster \u003d {"},{"line_number":11463,"context_line":"            \u0027profile_only\u0027: profile_only"},{"line_number":11464,"context_line":"        }"}],"source_content_type":"text/x-python","patch_set":1,"id":"5f7c97a3_3290b442","line":11461,"updated":"2018-06-20 09:57:58.000000000","message":"Is it standard openstacksdk behavior? O__O I\u0027d be quite surprised to hit it, since I\u0027d expect it to raise in this case. Definitely needs a docstring","commit_id":"f4ec7ac2b717b160da0c4dcd5f1795268b0b5f9f"},{"author":{"_account_id":2,"name":"Monty Taylor","email":"mordred@inaugust.com","username":"mordred"},"change_message_id":"16a8cc534ca92193895e822403af46da50653271","unresolved":false,"context_lines":[{"line_number":11458,"context_line":"        old_cluster \u003d self.get_cluster(name_or_id)"},{"line_number":11459,"context_line":"        if old_cluster is None:"},{"line_number":11460,"context_line":"            self.log.debug(\"Cluster %s not found for updating\", name_or_id)"},{"line_number":11461,"context_line":"            return False"},{"line_number":11462,"context_line":"        cluster \u003d {"},{"line_number":11463,"context_line":"            \u0027profile_only\u0027: profile_only"},{"line_number":11464,"context_line":"        }"}],"source_content_type":"text/x-python","patch_set":1,"id":"5f7c97a3_9ea74f0a","line":11461,"in_reply_to":"5f7c97a3_3290b442","updated":"2018-06-20 13:01:00.000000000","message":"I agree. I\u0027d expect this to do:\n\n  if old_cluster is None:\n      raise exc.OpenStackCloudException(\n          \"Cluster {name_or_id} not found for updating\".format(\n              name_or_id\u003dname_or_id))","commit_id":"f4ec7ac2b717b160da0c4dcd5f1795268b0b5f9f"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"1dc95468ba90dd67024abf2f837d09cdcd259e93","unresolved":false,"context_lines":[{"line_number":11470,"context_line":"            cluster[\u0027metadata\u0027] \u003d metadata"},{"line_number":11471,"context_line":""},{"line_number":11472,"context_line":"        if profile_name_or_id is not None:"},{"line_number":11473,"context_line":"            cluster[\u0027profile_id\u0027] \u003d profile_name_or_id"},{"line_number":11474,"context_line":""},{"line_number":11475,"context_line":"        if timeout is not None:"},{"line_number":11476,"context_line":"            cluster[\u0027timeout\u0027] \u003d timeout"}],"source_content_type":"text/x-python","patch_set":1,"id":"5f7c97a3_d296203f","line":11473,"updated":"2018-06-20 09:57:58.000000000","message":"I hope you\u0027re sure it does accept a name :)","commit_id":"f4ec7ac2b717b160da0c4dcd5f1795268b0b5f9f"},{"author":{"_account_id":2,"name":"Monty Taylor","email":"mordred@inaugust.com","username":"mordred"},"change_message_id":"16a8cc534ca92193895e822403af46da50653271","unresolved":false,"context_lines":[{"line_number":11470,"context_line":"            cluster[\u0027metadata\u0027] \u003d metadata"},{"line_number":11471,"context_line":""},{"line_number":11472,"context_line":"        if profile_name_or_id is not None:"},{"line_number":11473,"context_line":"            cluster[\u0027profile_id\u0027] \u003d profile_name_or_id"},{"line_number":11474,"context_line":""},{"line_number":11475,"context_line":"        if timeout is not None:"},{"line_number":11476,"context_line":"            cluster[\u0027timeout\u0027] \u003d timeout"}],"source_content_type":"text/x-python","patch_set":1,"id":"5f7c97a3_1eea5f0d","line":11473,"in_reply_to":"5f7c97a3_d296203f","updated":"2018-06-20 13:01:00.000000000","message":"++\n\n  profile \u003d self.get_profile(profile_name_or_id)\n  if not profile:\n    raise exc.OpenStackCloudException(...\n  cluster[\u0027profile_id\u0027] \u003d profile.id","commit_id":"f4ec7ac2b717b160da0c4dcd5f1795268b0b5f9f"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"1dc95468ba90dd67024abf2f837d09cdcd259e93","unresolved":false,"context_lines":[{"line_number":11512,"context_line":"        clusters \u003d self.list_clusters()"},{"line_number":11513,"context_line":"        return _utils._filter_list(clusters, name_or_id, filters)"},{"line_number":11514,"context_line":""},{"line_number":11515,"context_line":"    def list_clusters(self):"},{"line_number":11516,"context_line":"        try:"},{"line_number":11517,"context_line":"            data \u003d self._clustering_client.get("},{"line_number":11518,"context_line":"                \u0027/clusters\u0027,"}],"source_content_type":"text/x-python","patch_set":1,"id":"5f7c97a3_f299dc6c","line":11515,"updated":"2018-06-20 09:57:58.000000000","message":"how is it different from just search_clusters()? pardon if it should be obvious from knowing openstacksdk :)","commit_id":"f4ec7ac2b717b160da0c4dcd5f1795268b0b5f9f"},{"author":{"_account_id":2,"name":"Monty Taylor","email":"mordred@inaugust.com","username":"mordred"},"change_message_id":"16a8cc534ca92193895e822403af46da50653271","unresolved":false,"context_lines":[{"line_number":11512,"context_line":"        clusters \u003d self.list_clusters()"},{"line_number":11513,"context_line":"        return _utils._filter_list(clusters, name_or_id, filters)"},{"line_number":11514,"context_line":""},{"line_number":11515,"context_line":"    def list_clusters(self):"},{"line_number":11516,"context_line":"        try:"},{"line_number":11517,"context_line":"            data \u003d self._clustering_client.get("},{"line_number":11518,"context_line":"                \u0027/clusters\u0027,"}],"source_content_type":"text/x-python","patch_set":1,"id":"5f7c97a3_5e6697bd","line":11515,"in_reply_to":"5f7c97a3_f299dc6c","updated":"2018-06-20 13:01:00.000000000","message":"In this case, there is an unfortunate historical thing that we really should fix (and can now that the code is in SDK) ... it used to be that list was *only* for listing and search was for searching with filters.\n\nThe pattern in the non-shade portion passes filters to the list function, which is a better pattern.\n\nFor now though, making sure that each of the resource types follows the existing pattern is more important than fixing the silliness just for one of them.","commit_id":"f4ec7ac2b717b160da0c4dcd5f1795268b0b5f9f"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"1dc95468ba90dd67024abf2f837d09cdcd259e93","unresolved":false,"context_lines":[{"line_number":11528,"context_line":"        policy \u003d self.get_cluster_policy(policy_name_or_id)"},{"line_number":11529,"context_line":"        if cluster is None:"},{"line_number":11530,"context_line":"            self.log.debug(\"Cluster %s not found for attaching\", name_or_id)"},{"line_number":11531,"context_line":"            return False"},{"line_number":11532,"context_line":""},{"line_number":11533,"context_line":"        if policy is None:"},{"line_number":11534,"context_line":"            self.log.debug(\"Policy %s not found for attaching\","}],"source_content_type":"text/x-python","patch_set":1,"id":"5f7c97a3_92a0a893","line":11531,"updated":"2018-06-20 09:57:58.000000000","message":"The same surprise goes here... Personally, I would not use the API behaving like that. In addition to not being obvious, this allows no way to distinguish between cluster not found and policy not found","commit_id":"f4ec7ac2b717b160da0c4dcd5f1795268b0b5f9f"},{"author":{"_account_id":2,"name":"Monty Taylor","email":"mordred@inaugust.com","username":"mordred"},"change_message_id":"16a8cc534ca92193895e822403af46da50653271","unresolved":false,"context_lines":[{"line_number":11528,"context_line":"        policy \u003d self.get_cluster_policy(policy_name_or_id)"},{"line_number":11529,"context_line":"        if cluster is None:"},{"line_number":11530,"context_line":"            self.log.debug(\"Cluster %s not found for attaching\", name_or_id)"},{"line_number":11531,"context_line":"            return False"},{"line_number":11532,"context_line":""},{"line_number":11533,"context_line":"        if policy is None:"},{"line_number":11534,"context_line":"            self.log.debug(\"Policy %s not found for attaching\","}],"source_content_type":"text/x-python","patch_set":1,"id":"5f7c97a3_1e06dfce","line":11531,"in_reply_to":"5f7c97a3_92a0a893","updated":"2018-06-20 13:01:00.000000000","message":"Yup. this should be fixed.","commit_id":"f4ec7ac2b717b160da0c4dcd5f1795268b0b5f9f"},{"author":{"_account_id":27224,"name":"Duc Truong","email":"duc.openstack@gmail.com","username":"dtruong2"},"change_message_id":"318d3e3009d4e9619e27ab90d938a41a39895b7a","unresolved":false,"context_lines":[{"line_number":11398,"context_line":"    def create_cluster(self, name, profile, config\u003dNone, desired_capacity\u003d0,"},{"line_number":11399,"context_line":"                       max_size\u003dNone, metadata\u003dNone, min_size\u003dNone,"},{"line_number":11400,"context_line":"                       timeout\u003dNone):"},{"line_number":11401,"context_line":"        profile \u003d self.get_cluster_profile(profile)"},{"line_number":11402,"context_line":"        profile_id \u003d profile[\u0027id\u0027]"},{"line_number":11403,"context_line":"        body \u003d {"},{"line_number":11404,"context_line":"            \u0027desired_capacity\u0027: desired_capacity,"}],"source_content_type":"text/x-python","patch_set":2,"id":"5f7c97a3_51f6855f","line":11401,"range":{"start_line":11401,"start_character":8,"end_line":11401,"end_character":51},"updated":"2018-06-20 17:30:49.000000000","message":"if profile is None:\n                raise exc.OpenStackCloudException(\n                    \u0027Invalid Cluster Profile {profile}\u0027.format(\n                        profile\u003dprofile))","commit_id":"66765c1c534f22a45fe050f2786d80dde9de4aee"},{"author":{"_account_id":27224,"name":"Duc Truong","email":"duc.openstack@gmail.com","username":"dtruong2"},"change_message_id":"318d3e3009d4e9619e27ab90d938a41a39895b7a","unresolved":false,"context_lines":[{"line_number":11495,"context_line":"    def delete_cluster(self, name_or_id):"},{"line_number":11496,"context_line":"        cluster \u003d self.get_cluster(name_or_id)"},{"line_number":11497,"context_line":"        if cluster is None:"},{"line_number":11498,"context_line":"            self.log.debug(\"Cluster %s not found for deleting\", name_or_id)"},{"line_number":11499,"context_line":"            return False"},{"line_number":11500,"context_line":""},{"line_number":11501,"context_line":"        for policy in self.list_policies_on_cluster(name_or_id):"},{"line_number":11502,"context_line":"            detach_policy \u003d self.get_cluster_policy_by_id("}],"source_content_type":"text/x-python","patch_set":2,"id":"5f7c97a3_11f1ed6a","line":11499,"range":{"start_line":11498,"start_character":0,"end_line":11499,"end_character":24},"updated":"2018-06-20 17:30:49.000000000","message":"Raise OpenStackCloudException","commit_id":"66765c1c534f22a45fe050f2786d80dde9de4aee"},{"author":{"_account_id":27224,"name":"Duc Truong","email":"duc.openstack@gmail.com","username":"dtruong2"},"change_message_id":"318d3e3009d4e9619e27ab90d938a41a39895b7a","unresolved":false,"context_lines":[{"line_number":11629,"context_line":"        try:"},{"line_number":11630,"context_line":"            policy \u003d self._clustering_client.get("},{"line_number":11631,"context_line":"                \"/clusters/{cluster_id}/policies/{policy_id}\".format("},{"line_number":11632,"context_line":"                    cluster_id\u003dname_or_id, policy_id\u003dpolicy_name_or_id),"},{"line_number":11633,"context_line":"                error_message\u003d\"Error fetching policy \""},{"line_number":11634,"context_line":"                              \"{name}\".format(name\u003dpolicy_name_or_id))"},{"line_number":11635,"context_line":"            return self._get_and_munchify(\u0027cluster_policy\u0027, policy)"}],"source_content_type":"text/x-python","patch_set":2,"id":"5f7c97a3_d16db503","line":11632,"range":{"start_line":11632,"start_character":20,"end_line":11632,"end_character":70},"updated":"2018-06-20 17:30:49.000000000","message":"Do we need to do self.get_cluster(name_or_id) and self.get_cluster_policy(policy_name_or_id) before calling the get?","commit_id":"66765c1c534f22a45fe050f2786d80dde9de4aee"},{"author":{"_account_id":27224,"name":"Duc Truong","email":"duc.openstack@gmail.com","username":"dtruong2"},"change_message_id":"318d3e3009d4e9619e27ab90d938a41a39895b7a","unresolved":false,"context_lines":[{"line_number":11638,"context_line":""},{"line_number":11639,"context_line":"    def list_policies_on_cluster(self, name_or_id):"},{"line_number":11640,"context_line":"        endpoint \u003d \"/clusters/{cluster_id}/policies\".format("},{"line_number":11641,"context_line":"            cluster_id\u003dname_or_id)"},{"line_number":11642,"context_line":"        try:"},{"line_number":11643,"context_line":"            data \u003d self._clustering_client.get("},{"line_number":11644,"context_line":"                endpoint,"}],"source_content_type":"text/x-python","patch_set":2,"id":"5f7c97a3_f149d18d","line":11641,"range":{"start_line":11641,"start_character":12,"end_line":11641,"end_character":33},"updated":"2018-06-20 17:30:49.000000000","message":"Get self.get_cluster(name_or_id) before this?","commit_id":"66765c1c534f22a45fe050f2786d80dde9de4aee"},{"author":{"_account_id":27224,"name":"Duc Truong","email":"duc.openstack@gmail.com","username":"dtruong2"},"change_message_id":"318d3e3009d4e9619e27ab90d938a41a39895b7a","unresolved":false,"context_lines":[{"line_number":11705,"context_line":"    def delete_cluster_profile(self, name_or_id):"},{"line_number":11706,"context_line":"        profile \u003d self.get_cluster_profile(name_or_id)"},{"line_number":11707,"context_line":"        if profile is None:"},{"line_number":11708,"context_line":"            self.log.debug(\"Profile %s not found for deleting\", name_or_id)"},{"line_number":11709,"context_line":"            return False"},{"line_number":11710,"context_line":""},{"line_number":11711,"context_line":"        for cluster in self.list_clusters():"},{"line_number":11712,"context_line":"            if (name_or_id, profile.id) in cluster.items():"}],"source_content_type":"text/x-python","patch_set":2,"id":"5f7c97a3_71d861ef","line":11709,"range":{"start_line":11708,"start_character":0,"end_line":11709,"end_character":24},"updated":"2018-06-20 17:30:49.000000000","message":"Raise OpenStackCloudException","commit_id":"66765c1c534f22a45fe050f2786d80dde9de4aee"},{"author":{"_account_id":27224,"name":"Duc Truong","email":"duc.openstack@gmail.com","username":"dtruong2"},"change_message_id":"318d3e3009d4e9619e27ab90d938a41a39895b7a","unresolved":false,"context_lines":[{"line_number":11711,"context_line":"        for cluster in self.list_clusters():"},{"line_number":11712,"context_line":"            if (name_or_id, profile.id) in cluster.items():"},{"line_number":11713,"context_line":"                self.log.debug("},{"line_number":11714,"context_line":"                    \"Profile %s is being used by cluster %s, won\u0027t delete\","},{"line_number":11715,"context_line":"                    name_or_id, cluster.name)"},{"line_number":11716,"context_line":"                return False"},{"line_number":11717,"context_line":""},{"line_number":11718,"context_line":"        self._clustering_client.delete("},{"line_number":11719,"context_line":"            \"/profiles/{profile_id}\".format(profile_id\u003dprofile[\u0027id\u0027]),"}],"source_content_type":"text/x-python","patch_set":2,"id":"5f7c97a3_91d3bdd3","line":11716,"range":{"start_line":11714,"start_character":0,"end_line":11716,"end_character":28},"updated":"2018-06-20 17:30:49.000000000","message":"Raise OpenStackCloudException","commit_id":"66765c1c534f22a45fe050f2786d80dde9de4aee"},{"author":{"_account_id":27224,"name":"Duc Truong","email":"duc.openstack@gmail.com","username":"dtruong2"},"change_message_id":"318d3e3009d4e9619e27ab90d938a41a39895b7a","unresolved":false,"context_lines":[{"line_number":11789,"context_line":"    def delete_cluster_policy(self, name_or_id):"},{"line_number":11790,"context_line":"        policy \u003d self.get_cluster_policy_by_id(name_or_id)"},{"line_number":11791,"context_line":"        if policy is None:"},{"line_number":11792,"context_line":"            self.log.debug(\"Policy %s not found for deleting\", name_or_id)"},{"line_number":11793,"context_line":"            return False"},{"line_number":11794,"context_line":""},{"line_number":11795,"context_line":"        for cluster in self.list_clusters():"},{"line_number":11796,"context_line":"            if (name_or_id, policy.id) in cluster.items():"}],"source_content_type":"text/x-python","patch_set":2,"id":"5f7c97a3_b18039c1","line":11793,"range":{"start_line":11792,"start_character":0,"end_line":11793,"end_character":24},"updated":"2018-06-20 17:30:49.000000000","message":"Raise OpenStackCloudException","commit_id":"66765c1c534f22a45fe050f2786d80dde9de4aee"},{"author":{"_account_id":27224,"name":"Duc Truong","email":"duc.openstack@gmail.com","username":"dtruong2"},"change_message_id":"318d3e3009d4e9619e27ab90d938a41a39895b7a","unresolved":false,"context_lines":[{"line_number":11795,"context_line":"        for cluster in self.list_clusters():"},{"line_number":11796,"context_line":"            if (name_or_id, policy.id) in cluster.items():"},{"line_number":11797,"context_line":"                self.log.debug("},{"line_number":11798,"context_line":"                    \"Policy %s is being used by cluster %s, won\u0027t delete\","},{"line_number":11799,"context_line":"                    name_or_id, cluster.name)"},{"line_number":11800,"context_line":"                return False"},{"line_number":11801,"context_line":""},{"line_number":11802,"context_line":"        self._clustering_client.delete("},{"line_number":11803,"context_line":"            \"/policies/{policy_id}\".format(policy_id\u003dname_or_id),"}],"source_content_type":"text/x-python","patch_set":2,"id":"5f7c97a3_b159198f","line":11800,"range":{"start_line":11798,"start_character":0,"end_line":11800,"end_character":28},"updated":"2018-06-20 17:30:49.000000000","message":"Raise OpenStackCloudException","commit_id":"66765c1c534f22a45fe050f2786d80dde9de4aee"},{"author":{"_account_id":27224,"name":"Duc Truong","email":"duc.openstack@gmail.com","username":"dtruong2"},"change_message_id":"318d3e3009d4e9619e27ab90d938a41a39895b7a","unresolved":false,"context_lines":[{"line_number":11882,"context_line":"    def delete_cluster_receiver(self, name_or_id, wait\u003dFalse, timeout\u003d3600):"},{"line_number":11883,"context_line":"        receiver \u003d self.get_cluster_receiver(name_or_id)"},{"line_number":11884,"context_line":"        if receiver is None:"},{"line_number":11885,"context_line":"            self.log.debug(\"Receiver %s not found for deleting\", name_or_id)"},{"line_number":11886,"context_line":"            return False"},{"line_number":11887,"context_line":""},{"line_number":11888,"context_line":"        receiver_id \u003d receiver[\u0027id\u0027]"},{"line_number":11889,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"5f7c97a3_311f49b8","line":11886,"range":{"start_line":11885,"start_character":0,"end_line":11886,"end_character":24},"updated":"2018-06-20 17:30:49.000000000","message":"Raise OpenStackCloudException","commit_id":"66765c1c534f22a45fe050f2786d80dde9de4aee"}]}
