in src/pydeploy/__main__.py [0:0]
def main():
parser = argparse.ArgumentParser(description='deploy composition', prog='pydeploy', usage='%(prog)s composition composition.json [flags]')
parser.add_argument('name', metavar='composition', type=str, help='composition name')
parser.add_argument('file', metavar='composition', type=str, help='composition')
parser.add_argument('--apihost', action='store', metavar='HOST', help='API HOST')
parser.add_argument('-i', '--insecure', action='store_true', help='bypass certificate checking')
parser.add_argument('-u', '--auth', metavar='KEY', help='authorization KEY')
parser.add_argument('-v', '--version', action='version', version='%(prog)s '+ composer.__version__)
parser.add_argument('-a', '--annotation', action='append', nargs=1, help='add KEY annotation with VALUE')
parser.add_argument('-A', '--annotation-file', action='append', nargs=1, help='add KEY annotation with FILE content')
parser.add_argument('-w', '--overwrite', action='store_true', help='overwrite actions if already defined')
args = parser.parse_args()
try:
filename = args.file
with open(filename, encoding='UTF-8') as f:
composition = json.load(f)
if 'ast' not in composition:
raise 'Composition must have a field "ast" of type dictionary'
if 'composition' not in composition:
raise 'Composition must have a field "composition" of type dictionary'
if 'version' not in composition:
raise 'Composition must have a field "composition" of type dictionary'
if 'actions' in composition:
if not isinstance(composition['actions'], list):
raise 'Optional field "actions" must be an array'
composition['annotations'] = []
if args.annotation is not None:
composition['annotations'].extend([keyValue(a[0]) for a in args.annotation])
if args.annotation is not None:
composition['annotations'].extend([keyValueFromFile(a[0]) for a in args.annotation_file])
except Exception as err:
print(err)
sys.exit(422 - 256) # Unprocessable Entity
options = { 'ignore_certs': args.insecure }
if args.apihost is not None:
options['apihost'] = args.apihost
if args.auth is not None:
options['api_key'] = args.auth
try:
composition['name'] = composer.parse_action_name(args.name)
except Exception as err:
print(err)
sys.exit(400 - 256) # Bad Request
try:
actions = conductor.openwhisk(options).compositions.deploy(composition, args.overwrite)
names = ' '.join([n['name'] for n in actions])
print('ok: created action'+ ('s' if len(names) > 1 else '') + '' + names)
except Exception as err:
print(err.error)
sys.exit(500 - 256)