(cls, json_resp, nova_api_version=None)
Parse the service catalog returned by the Identity API for an endpoint matching
        the Nova service with the requested version
        Sends a CRITICAL service check when no viable candidates are found in the Catalog
Parse the service catalog returned by the Identity API for an endpoint matching
        the Nova service with the requested version
        Sends a CRITICAL service check when no viable candidates are found in the Catalog
Parse the service catalog returned by the Identity API for an endpoint matching the Nova service with the requested version Sends a CRITICAL service check when no viable candidates are found in the Catalog
def get_nova_endpoint(cls, json_resp, nova_api_version=None):
        """
        Parse the service catalog returned by the Identity API for an endpoint matching
        the Nova service with the requested version
        Sends a CRITICAL service check when no viable candidates are found in the Catalog
        """
        nova_version = nova_api_version or DEFAULT_NOVA_API_VERSION
        catalog = json_resp.get('token', {}).get('catalog', [])

        nova_match = 'novav21' if nova_version == V21_NOVA_API_VERSION else 'nova'

        for entry in catalog:
            if entry['name'] == nova_match or 'Compute' in entry['name']:
                # Collect any endpoints on the public or internal interface
                valid_endpoints = {}
                for ep in entry['endpoints']:
                    interface = ep.get('interface', '')
                    if interface in ['public', 'internal']:
                        valid_endpoints[interface] = ep['url']

                if valid_endpoints:
                    # Favor public endpoints over internal
                    nova_endpoint = valid_endpoints.get("public", valid_endpoints.get("internal"))
                    return nova_endpoint
        else:
            raise MissingNovaEndpoint()
def get_nova_endpoint ( cls , json_resp , nova_api_version = None ) : nova_version = nova_api_version or DEFAULT_NOVA_API_VERSION catalog = json_resp . get ( 'token' , { } ) . get ( 'catalog' , [ ] ) nova_match = 'novav21' if nova_version == V21_NOVA_API_VERSION else 'nova' for entry in catalog : if entry [ 'name' ] == nova_match or 'Compute' in entry [ 'name' ] : # Collect any endpoints on the public or internal interface valid_endpoints = { } for ep in entry [ 'endpoints' ] : interface = ep . get ( 'interface' , '' ) if interface in [ 'public' , 'internal' ] : valid_endpoints [ interface ] = ep [ 'url' ] if valid_endpoints : # Favor public endpoints over internal nova_endpoint = valid_endpoints . get ( "public" , valid_endpoints . get ( "internal" ) ) return nova_endpoint else : raise MissingNovaEndpoint ( )