コード例 #1
0
def main():
    parser = ArgumentParser(description=_PROG_HELP)
    schema_values_common.add_to_argument_parser(parser)
    parser.add_argument('--manifests',
                        required=True,
                        help='The yaml file containing all resources')
    args = parser.parse_args()

    schema = schema_values_common.load_schema(args)
    resources = load_resources_yaml(args.manifests)

    app = find_application_resource(resources)
    mp_deploy_info = app.get('metadata', {}).get(
        'annotations', {}).get('marketplace.cloud.google.com/deploy-info')
    if not mp_deploy_info:
        raise Exception(
            'Application resource is missing '
            '"marketplace.cloud.google.com/deploy-info" annotation')
    validate_deploy_info_annotation(mp_deploy_info, schema)

    version = app.get('spec', {}).get('descriptor', {}).get('version')
    if not version or not isinstance(version, str):
        raise Exception(
            'Application resource must have a valid spec.descriptor.version value'
        )
    if schema.is_v2():
        published_version = schema.x_google_marketplace.published_version
        if version != published_version:
            raise Exception(
                'Application resource\'s spec.descriptor.version "{}" does not match '
                'schema.yaml\'s publishedVersion "{}"'.format(
                    version, published_version))
コード例 #2
0
def main():
    parser = ArgumentParser(description=_PROG_HELP)
    schema_values_common.add_to_argument_parser(parser)
    parser.add_argument('--deployer_image',
                        required=True,
                        help='The full deployer image, required')
    parser.add_argument('--deployer_image_digest',
                        required=True,
                        help='The digest of the deployer image, required')
    args = parser.parse_args()

    schema = schema_values_common.load_schema(args)
    schema.validate()
    if (schema.x_google_marketplace is None
            or not schema.x_google_marketplace.is_v2()):
        raise Exception('schema.yaml must be in v2 version')

    x = schema.x_google_marketplace
    meta = collections.OrderedDict([
        ('releaseDate', _utcnow_timestamp()),
        ('url', args.deployer_image),
        ('digest', args.deployer_image_digest),
        ('releaseNote', x.published_version_meta.release_note),
    ])
    if x.published_version_meta.release_types:
        meta['releaseTypes'] = x.published_version_meta.release_types
    if x.published_version_meta.recommended is not None:
        meta['recommended'] = x.published_version_meta.recommended

    sys.stdout.write(_ordered_dump(meta, default_flow_style=False, indent=2))
    sys.stdout.flush()
コード例 #3
0
def main():
    parser = ArgumentParser(description=_PROG_HELP)
    schema_values_common.add_to_argument_parser(parser)
    parser.add_argument('--output',
                        '-o',
                        help=_OUTPUT_HELP,
                        choices=[OUTPUT_SHELL_VARS, OUTPUT_YAML],
                        default=OUTPUT_YAML)
    parser.add_argument('--param',
                        help='If specified, outputs the value of a single '
                        'parameter unescaped. The value here is a JSON '
                        'which should partially match the parameter schema.')
    args = parser.parse_args()

    schema = schema_values_common.load_schema(args)
    values = schema_values_common.load_values(args)

    try:
        if args.param:
            definition = json.loads(args.param)
            sys.stdout.write(output_param(values, schema, definition))
            return

        if args.output == OUTPUT_SHELL_VARS:
            sys.stdout.write(output_shell_vars(values))
        elif args.output == OUTPUT_YAML:
            sys.stdout.write(output_yaml(values))
    finally:
        sys.stdout.flush()
コード例 #4
0
def main():
    parser = ArgumentParser(description=_PROG_HELP)
    schema_values_common.add_to_argument_parser(parser)
    parser.add_argument('--output',
                        '-o',
                        help=_OUTPUT_HELP,
                        choices=[OUTPUT_SHELL_VARS, OUTPUT_YAML],
                        default=OUTPUT_YAML)
    parser.add_argument(
        '--xtype',
        help='If specified, outputs the values of the given x-google-marketplace'
        ' property.')
    parser.add_argument(
        '--key', help='If specified, outputs the keys, rather than the values')
    args = parser.parse_args()

    schema = schema_values_common.load_schema(args)
    values = schema_values_common.load_values(args)

    try:
        if args.xtype:
            sys.stdout.write(output_xtype(values, schema, args.xtype,
                                          args.key))
            return

        if args.output == OUTPUT_SHELL_VARS:
            sys.stdout.write(output_shell_vars(values))
        elif args.output == OUTPUT_YAML:
            sys.stdout.write(output_yaml(values))
    finally:
        sys.stdout.flush()
コード例 #5
0
def main():
  parser = ArgumentParser(description=_PROG_HELP)
  schema_values_common.add_to_argument_parser(parser)
  parser.add_argument('command', help='Command to run')
  parser.add_argument('arguments', nargs='*', help='Arguments to the command')
  args = parser.parse_args()

  values = schema_values_common.load_values(args)
  # Convert values to strings to pass to subprocess.
  values = {k: str(v) for k, v in values.iteritems()}

  # Default env vars should NOT be passed on to the new environment.
  default_vars = [v.split('=')[0]
                  for v in subprocess.check_output(['env -0'],
                                                   env={},
                                                   shell=True).split('\0')
                  if v]
  command = (['/usr/bin/env'] +
             ['--unset={}'.format(v) for v in default_vars] +
             [args.command] +
             args.arguments)
  p = subprocess.Popen(command,
                       env=values,
                       stdin=subprocess.PIPE,
                       stdout=subprocess.PIPE,
                       stderr=subprocess.PIPE)
  stdoutdata, stderrdata = p.communicate(input=sys.stdin.read())
  if stdoutdata:
    sys.stdout.write(stdoutdata)
    sys.stdout.flush()
  if stderrdata:
    sys.stderr.write(stderrdata)
    sys.stderr.flush()
  sys.exit(p.returncode)
コード例 #6
0
def main():
  parser = ArgumentParser(description=_PROG_HELP)
  schema_values_common.add_to_argument_parser(
      parser, values_file='/data/values.yaml', values_dir='/data/values')
  parser.add_argument('--final_values_file',
                      help='Where the final value file should be written to',
                      default='/data/final_values.yaml')
  args = parser.parse_args()

  schema = schema_values_common.load_schema(args)
  values = schema_values_common.load_values(args)
  values = expand(values, schema)
  write_values(values, args.final_values_file)
コード例 #7
0
def main():
  parser = ArgumentParser(description=_PROG_HELP)
  schema_values_common.add_to_argument_parser(parser)
  args = parser.parse_args()

  schema = schema_values_common.load_schema(args)
  schema.validate()
  if (schema.x_google_marketplace is None or
      not schema.x_google_marketplace.is_v2()):
    raise Exception('schema.yaml must be in v2 version')

  sys.stdout.write(schema.x_google_marketplace.published_version)
  sys.stdout.flush()
コード例 #8
0
def main():
    parser = ArgumentParser(description=_PROG_HELP)
    schema_values_common.add_to_argument_parser(parser)
    parser.add_argument('--deployer_image', required=True)
    parser.add_argument('--deployer_entrypoint', default=None)
    args = parser.parse_args()

    schema = schema_values_common.load_schema(args)
    values = schema_values_common.load_values(args)
    manifests = process(schema,
                        values,
                        deployer_image=args.deployer_image,
                        deployer_entrypoint=args.deployer_entrypoint)
    print yaml.safe_dump_all(manifests, default_flow_style=False, indent=2)
コード例 #9
0
def main():
    parser = ArgumentParser(description=_PROG_HELP)
    schema_values_common.add_to_argument_parser(parser)
    parser.add_argument('--final_values_file',
                        help='Where the final value file should be written to',
                        default='/data/final_values.yaml')
    parser.add_argument(
        '--app_uid',
        help=
        'The application UID for populating into APPLICATION_UID properties',
        default='')
    args = parser.parse_args()

    schema = schema_values_common.load_schema(args)
    values = schema_values_common.load_values(args)
    values = expand(values, schema, app_uid=args.app_uid)
    write_values(values, args.final_values_file)
コード例 #10
0
def main():
    parser = ArgumentParser(description=_PROG_HELP)
    schema_values_common.add_to_argument_parser(parser)
    parser.add_argument(
        '--empty_if_not_supported',
        action='store_true',
        help='For a v1 schema, do not fail but output empty string instead')
    args = parser.parse_args()

    schema = schema_values_common.load_schema(args)
    schema.validate()
    if (schema.x_google_marketplace is None
            or not schema.x_google_marketplace.is_v2()):
        if args.empty_if_not_supported:
            sys.stderr.write('schema.yaml is not in v2 version. Skipping')
            sys.stderr.flush()
            return
        raise Exception('schema.yaml must be in v2 version')

    sys.stdout.write(schema.x_google_marketplace.published_version)
    sys.stdout.flush()
コード例 #11
0
def main():
  parser = ArgumentParser(description=_PROG_HELP)
  schema_values_common.add_to_argument_parser(parser)
  parser.add_argument('--deployer_image', required=True)
  parser.add_argument('--deployer_entrypoint', default=None)
  parser.add_argument('--deployer_service_account_name', required=True)
  parser.add_argument('--version_repo', default=None)
  parser.add_argument('--image_pull_secret', default=None)
  args = parser.parse_args()

  schema = schema_values_common.load_schema(args)
  values = schema_values_common.load_values(args)
  manifests = process(
      schema,
      values,
      deployer_image=args.deployer_image,
      deployer_entrypoint=args.deployer_entrypoint,
      version_repo=args.version_repo,
      image_pull_secret=args.image_pull_secret,
      deployer_service_account_name=args.deployer_service_account_name)
  print(yaml.safe_dump_all(manifests, default_flow_style=False, indent=2))
コード例 #12
0
def main():
    parser = ArgumentParser(description=_PROG_HELP)
    schema_values_common.add_to_argument_parser(parser)
    args = parser.parse_args()

    schema_values_common.load_schema_and_validate(args)