Exemple #1
0
def run(command, parser, cl_args, unknown_args):
    '''
  :param command:
  :param parser:
  :param args:
  :param unknown_args:
  :return:
  '''
    cluster = cl_args['cluster']

    # server mode
    if cluster:
        config_file = config.heron_rc_file()
        client_confs = {}

        # Read the cluster definition, if not found
        client_confs = cdefs.read_server_mode_cluster_definition(
            cluster, cl_args, config_file)

        if not client_confs[cluster]:
            Log.error(
                'Neither service url nor %s cluster definition in %s file',
                cluster, config_file)
            return SimpleResult(Status.HeronError)

        # if cluster definition exists, but service_url is not set, it is an error
        if not 'service_url' in client_confs[cluster]:
            Log.error('No service url for %s cluster in %s', cluster,
                      config_file)
            sys.exit(1)

        service_endpoint = cl_args['service_url']
        service_apiurl = service_endpoint + rest.ROUTE_SIGNATURES[command][1]
        service_method = rest.ROUTE_SIGNATURES[command][0]

        try:
            r = service_method(service_apiurl)
            if r.status_code != requests.codes.ok:
                Log.error(r.json().get(
                    'message',
                    f"Unknown error from API server {r.status_code}"))
            sorted_items = sorted(list(r.json().items()),
                                  key=lambda tup: tup[0])
            for key, value in sorted_items:
                print(f"{key} : {value}")
        except (requests.exceptions.ConnectionError,
                requests.exceptions.HTTPError) as err:
            Log.error(err)
            return SimpleResult(Status.HeronError)
    else:
        config.print_build_info()

    return SimpleResult(Status.Ok)
Exemple #2
0
def server_deployment_mode(command, parser, cluster, cl_args):
    '''
  check the server deployment mode for the given cluster
  if it is valid return the valid set of args
  :param cluster:
  :param cl_args:
  :return:
  '''
    # Read the cluster definition, if not found
    client_confs = cdefs.read_server_mode_cluster_definition(cluster, cl_args)

    if not client_confs[cluster]:
        return dict()

    # tell the user which definition that we are using
    if not cl_args.get('service_url', None):
        Log.debug("Using cluster definition from file %s" \
            % cliconfig.get_cluster_config_file(cluster))
    else:
        Log.debug("Using cluster service url %s" % cl_args['service_url'])

    # if cluster definition exists, but service_url is not set, it is an error
    if not 'service_url' in client_confs[cluster]:
        config_file = cliconfig.get_cluster_config_file(cluster)
        Log.error('No service url for %s cluster in %s', cluster, config_file)
        sys.exit(1)

    # get overrides
    if 'config_property' in cl_args:
        pass

    try:
        cluster_role_env = (cl_args['cluster'], cl_args['role'],
                            cl_args['environ'])
        config.server_mode_cluster_role_env(cluster_role_env, client_confs)
        cluster_tuple = config.defaults_cluster_role_env(cluster_role_env)
    except Exception as ex:
        Log.error("Argument cluster/[role]/[env] is not correct: %s", str(ex))
        sys.exit(1)

    new_cl_args = dict()
    new_cl_args['cluster'] = cluster_tuple[0]
    new_cl_args['role'] = cluster_tuple[1]
    new_cl_args['environ'] = cluster_tuple[2]
    new_cl_args['service_url'] = client_confs[cluster]['service_url'].rstrip(
        '/')
    new_cl_args['deploy_mode'] = config.SERVER_MODE

    cl_args.update(new_cl_args)
    return cl_args
Exemple #3
0
def server_deployment_mode(command, parser, cluster, cl_args):
  '''
  check the server deployment mode for the given cluster
  if it is valid return the valid set of args
  :param cluster:
  :param cl_args:
  :return:
  '''
  # Read the cluster definition, if not found
  client_confs = cdefs.read_server_mode_cluster_definition(cluster, cl_args)

  if not client_confs[cluster]:
    return dict()

  # tell the user which definition that we are using
  if not cl_args.get('service_url', None):
    Log.debug("Using cluster definition from file %s" \
        % cliconfig.get_cluster_config_file(cluster))
  else:
    Log.debug("Using cluster service url %s" % cl_args['service_url'])

  # if cluster definition exists, but service_url is not set, it is an error
  if not 'service_url' in client_confs[cluster]:
    config_file = cliconfig.get_cluster_config_file(cluster)
    Log.error('No service url for %s cluster in %s', cluster, config_file)
    sys.exit(1)

  # get overrides
  if 'config_property' in cl_args:
    pass

  try:
    cluster_role_env = (cl_args['cluster'], cl_args['role'], cl_args['environ'])
    config.server_mode_cluster_role_env(cluster_role_env, client_confs)
    cluster_tuple = config.defaults_cluster_role_env(cluster_role_env)
  except Exception as ex:
    Log.error("Argument cluster/[role]/[env] is not correct: %s", str(ex))
    sys.exit(1)

  new_cl_args = dict()
  new_cl_args['cluster'] = cluster_tuple[0]
  new_cl_args['role'] = cluster_tuple[1]
  new_cl_args['environ'] = cluster_tuple[2]
  new_cl_args['service_url'] = client_confs[cluster]['service_url'].rstrip('/')
  new_cl_args['deploy_mode'] = config.SERVER_MODE

  cl_args.update(new_cl_args)
  return cl_args
Exemple #4
0
def run(command, parser, cl_args, unknown_args):
  '''
  :param command:
  :param parser:
  :param args:
  :param unknown_args:
  :return:
  '''
  cluster = cl_args['cluster']

  # server mode
  if cluster:
    config_file = config.heron_rc_file()
    client_confs = dict()

    # Read the cluster definition, if not found
    client_confs = cdefs.read_server_mode_cluster_definition(cluster, cl_args, config_file)

    if not client_confs[cluster]:
      Log.error('Neither service url nor %s cluster definition in %s file', cluster, config_file)
      return SimpleResult(Status.HeronError)

    # if cluster definition exists, but service_url is not set, it is an error
    if not 'service_url' in client_confs[cluster]:
      Log.error('No service url for %s cluster in %s', cluster, config_file)
      sys.exit(1)

    service_endpoint = cl_args['service_url']
    service_apiurl = service_endpoint + rest.ROUTE_SIGNATURES[command][1]
    service_method = rest.ROUTE_SIGNATURES[command][0]

    try:
      r = service_method(service_apiurl)
      if r.status_code != requests.codes.ok:
        Log.error(r.json().get('message', "Unknown error from api server %d" % r.status_code))
      sorted_items = sorted(r.json().items(), key=lambda tup: tup[0])
      for key, value in sorted_items:
        print("%s : %s" % (key, value))
    except (requests.exceptions.ConnectionError, requests.exceptions.HTTPError) as err:
      Log.error(err)
      return SimpleResult(Status.HeronError)
  else:
    config.print_build_info()

  return SimpleResult(Status.Ok)