docs: 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()