)]}'
{"shade/__init__.py":[{"author":{"_account_id":2,"name":"Monty Taylor","email":"mordred@inaugust.com","username":"mordred"},"change_message_id":"23f1ee6064530db9450fdebe1efc9d63c3e9d47a","unresolved":false,"context_lines":[{"line_number":658,"context_line":"    @property"},{"line_number":659,"context_line":"    def neutron_client(self):"},{"line_number":660,"context_line":"        if self._neutron_client is None:"},{"line_number":661,"context_line":"            # Check if neutron/quantum is available"},{"line_number":662,"context_line":"            endpoint \u003d self.get_endpoint("},{"line_number":663,"context_line":"                service_type\u003dself.get_service_type(\u0027network\u0027))"},{"line_number":664,"context_line":"            if endpoint is not None:"}],"source_content_type":"text/x-python","patch_set":3,"id":"bab921fb_2b4d516c","line":661,"updated":"2015-04-24 12:35:58.000000000","message":"Great idea for a check - but there are a lot of places in our code where we use neutron_client. I think this should throw an OpenStackCloudException with a clear message that the cloud has no network service available- so that if a user tries to do a neutron function they get a clear error message bubbled up through the neutron-related APIs.\n\nThen - for the list_floating_ips you have below, we can replace if None with try/catch as that\u0027s not a thing that wants to show up for the user and we have an action we can take, which is to use nova instead.\n\nAlso - no need to mention quantum - this is a new library. :)","commit_id":"4748d093c449f57bc62e18a8414088cb5fd47314"},{"author":{"_account_id":2,"name":"Monty Taylor","email":"mordred@inaugust.com","username":"mordred"},"change_message_id":"23f1ee6064530db9450fdebe1efc9d63c3e9d47a","unresolved":false,"context_lines":[{"line_number":850,"context_line":"    def list_ports(self):"},{"line_number":851,"context_line":"        return self.manager.submitTask(_tasks.PortList())[\u0027ports\u0027]"},{"line_number":852,"context_line":""},{"line_number":853,"context_line":"    def list_floating_ips(self):"},{"line_number":854,"context_line":"        if self.neutron_client is None:"},{"line_number":855,"context_line":"            return self.manager.submitTask("},{"line_number":856,"context_line":"                _tasks.NovaFloatingIPList())[\u0027floating_ips\u0027]"}],"source_content_type":"text/x-python","patch_set":3,"id":"bab921fb_cbedb526","line":853,"updated":"2015-04-24 12:35:58.000000000","message":"So then here it would be \"try: NeutronFloatingIPList: except: NovaFloatingIPList\"","commit_id":"4748d093c449f57bc62e18a8414088cb5fd47314"},{"author":{"_account_id":2,"name":"Monty Taylor","email":"mordred@inaugust.com","username":"mordred"},"change_message_id":"23f1ee6064530db9450fdebe1efc9d63c3e9d47a","unresolved":false,"context_lines":[{"line_number":1638,"context_line":""},{"line_number":1639,"context_line":"    def add_auto_ip(self, server):"},{"line_number":1640,"context_line":"        try:"},{"line_number":1641,"context_line":"            new_ip \u003d self.manager.submitTask(_tasks.FloatingIPCreate())"},{"line_number":1642,"context_line":"        except Exception as e:"},{"line_number":1643,"context_line":"            self.log.debug("},{"line_number":1644,"context_line":"                \"nova floating ip create failed\", exc_info\u003dTrue)"}],"source_content_type":"text/x-python","patch_set":3,"id":"bab921fb_ebb759d6","line":1641,"updated":"2015-04-24 12:35:58.000000000","message":"You\u0027ll want to do a similar thing here - add_auto_ip is actually the most common workflow in Infra land, fwiw.","commit_id":"4748d093c449f57bc62e18a8414088cb5fd47314"}]}
