117 lines
3.6 KiB
Python
117 lines
3.6 KiB
Python
# Copyright 2015 Objectif Libre
|
|
# All Rights Reserved.
|
|
#
|
|
# Licensed under the Apache License, Version 2.0 (the "License"); you may
|
|
# not use this file except in compliance with the License. You may obtain
|
|
# a copy of the License at
|
|
#
|
|
# http://www.apache.org/licenses/LICENSE-2.0
|
|
#
|
|
# Unless required by applicable law or agreed to in writing, software
|
|
# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
|
|
# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
|
|
# License for the specific language governing permissions and limitations
|
|
# under the License.
|
|
import functools
|
|
|
|
from oslo_utils import strutils
|
|
import six
|
|
|
|
from cloudkittyclient.common import utils
|
|
from cloudkittyclient import exc
|
|
|
|
_bool_strict = functools.partial(strutils.bool_from_string, strict=True)
|
|
|
|
|
|
@utils.arg('-n', '--name',
|
|
help='Script name',
|
|
required=True)
|
|
@utils.arg('-f', '--file',
|
|
help='Script file',
|
|
required=False)
|
|
def do_pyscripts_script_create(cc, args={}):
|
|
"""Create a script."""
|
|
script_args = {'name': args.name}
|
|
if args.file:
|
|
with open(args.file) as fp:
|
|
script_args['data'] = fp.read()
|
|
out = cc.pyscripts.scripts.create(**script_args)
|
|
utils.print_dict(out.to_dict())
|
|
|
|
|
|
@utils.arg('-d', '--show-data',
|
|
help='Show data in the listing',
|
|
required=False,
|
|
default=False)
|
|
def do_pyscripts_script_list(cc, args={}):
|
|
"""List scripts."""
|
|
request_args = {}
|
|
if not args.show_data:
|
|
request_args['no_data'] = True
|
|
scripts = cc.pyscripts.scripts.list(**request_args)
|
|
field_labels = ['Name', 'Script id', 'Data', 'Checksum']
|
|
fields = ['name', 'script_id', 'data', 'checksum']
|
|
utils.print_list(scripts,
|
|
fields,
|
|
field_labels,
|
|
sortby=0)
|
|
|
|
|
|
@utils.arg('-s', '--script-id',
|
|
help='Script uuid',
|
|
required=True)
|
|
def do_pyscripts_script_get(cc, args={}):
|
|
"""Get script."""
|
|
try:
|
|
script = cc.pyscripts.scripts.get(script_id=args.script_id)
|
|
except exc.HTTPNotFound:
|
|
raise exc.CommandError('Script not found: %s' % args.script_id)
|
|
utils.print_dict(script.to_dict())
|
|
|
|
|
|
@utils.arg('-s', '--script-id',
|
|
help='Script uuid',
|
|
required=True)
|
|
def do_pyscripts_script_get_data(cc, args={}):
|
|
"""Get script data."""
|
|
try:
|
|
script = cc.pyscripts.scripts.get(script_id=args.script_id)
|
|
except exc.HTTPNotFound:
|
|
raise exc.CommandError('Script not found: %s' % args.script_id)
|
|
six.print_(script.data)
|
|
|
|
|
|
@utils.arg('-s', '--script-id',
|
|
help='Script uuid',
|
|
required=True)
|
|
def do_pyscripts_script_delete(cc, args={}):
|
|
"""Delete a script."""
|
|
try:
|
|
cc.pyscripts.scripts.delete(script_id=args.script_id)
|
|
except exc.HTTPNotFound:
|
|
raise exc.CommandError('Script not found: %s' % args.counter_name)
|
|
|
|
|
|
@utils.arg('-s', '--script-id',
|
|
help='Script uuid',
|
|
required=True)
|
|
@utils.arg('-f', '--file',
|
|
help='Script file',
|
|
required=True)
|
|
def do_pyscripts_script_update(cc, args={}):
|
|
"""Update a mapping."""
|
|
excluded_fields = [
|
|
'checksum',
|
|
]
|
|
with open(args.file) as fp:
|
|
content = fp.read()
|
|
try:
|
|
script = cc.pyscripts.scripts.get(script_id=args.script_id)
|
|
except exc.HTTPNotFound:
|
|
raise exc.CommandError('Script not found: %s' % args.script_id)
|
|
script_dict = script.to_dict()
|
|
for field in excluded_fields:
|
|
del script_dict[field]
|
|
script_dict['data'] = content
|
|
cc.pyscripts.scripts.update(**script_dict)
|