diff options
Diffstat (limited to 'moonclient/moonclient/intraextension.py')
-rw-r--r-- | moonclient/moonclient/intraextension.py | 156 |
1 files changed, 156 insertions, 0 deletions
diff --git a/moonclient/moonclient/intraextension.py b/moonclient/moonclient/intraextension.py new file mode 100644 index 00000000..c46927cd --- /dev/null +++ b/moonclient/moonclient/intraextension.py @@ -0,0 +1,156 @@ +# Copyright 2015 Open Platform for NFV Project, Inc. and its contributors +# This software is distributed under the terms and conditions of the 'Apache-2.0' +# license which can be found in the file 'LICENSE' in this package distribution +# or at 'http://www.apache.org/licenses/LICENSE-2.0'. + +import logging + +from cliff.command import Command +from cliff.lister import Lister +from cliff.show import ShowOne + + +class IntraExtensionCreate(Command): + """Create a new Intra_Extension.""" + + log = logging.getLogger(__name__) + + def get_parser(self, prog_name): + parser = super(IntraExtensionCreate, self).get_parser(prog_name) + parser.add_argument( + 'name', + metavar='<intraextension-name>', + help='New IntraExtension name', + ) + parser.add_argument( + '--policy_model', + metavar='<policymodel-name>', + help='Policy model name (Template for the new IntraExtension)', + ) + parser.add_argument( + '--description', + metavar='<intraextension-description>', + help='New IntraExtension description', + default="" + ) + return parser + + def take_action(self, parsed_args): + post_data = { + "name": parsed_args.name, + "policymodel": parsed_args.policy_model, + "description": parsed_args.description + } + ie = self.app.get_url("/v3/OS-MOON/intra_extensions", post_data=post_data, authtoken=True) + if "id" not in ie: + raise Exception("Error in command {}".format(ie)) + self.app.stdout.write("IntraExtension created: {}\n".format(ie["id"])) + return + + +class IntraExtensionList(Lister): + """List all Intra_Extensions.""" + + log = logging.getLogger(__name__) + + def get_parser(self, prog_name): + parser = super(IntraExtensionList, self).get_parser(prog_name) + return parser + + def take_action(self, parsed_args): + ie = self.app.get_url("/v3/OS-MOON/intra_extensions", authtoken=True) + if "intra_extensions" not in ie: + raise Exception("Error in command {}".format(ie)) + return ( + ("id",), + ((_id, ) for _id in ie["intra_extensions"]) + ) + + +class IntraExtensionDelete(Command): + """Delete an Intra_Extension.""" + + log = logging.getLogger(__name__) + + def get_parser(self, prog_name): + parser = super(IntraExtensionDelete, self).get_parser(prog_name) + parser.add_argument( + 'uuid', + metavar='<intraextension-uuid>', + help='IntraExtension UUID', + ) + return parser + + def take_action(self, parsed_args): + ie = self.app.get_url("/v3/OS-MOON/intra_extensions/{}".format(parsed_args.uuid), + method="DELETE", + authtoken=True) + return + + +class IntraExtensionShow(ShowOne): + """Show detail about one Intra_Extension.""" + + log = logging.getLogger(__name__) + + def get_parser(self, prog_name): + parser = super(IntraExtensionShow, self).get_parser(prog_name) + parser.add_argument( + 'uuid', + metavar='<intraextension-uuid>', + help='IntraExtension UUID', + ) + return parser + + def take_action(self, parsed_args): + ie = self.app.get_url("/v3/OS-MOON/intra_extensions/{}".format(parsed_args.uuid), authtoken=True) + if "intra_extensions" not in ie: + raise Exception("Error in command {}".format(ie)) + try: + columns = ( + "id", + "name", + "description", + "tenant", + "enabled", + "model", + "genre" + ) + data = ( + ie["intra_extensions"]["id"], + ie["intra_extensions"]["name"], + ie["intra_extensions"]["description"], + ie["intra_extensions"]["tenant"], + ie["intra_extensions"]["enabled"], + ie["intra_extensions"]["model"], + ie["intra_extensions"]["genre"] + ) + return columns, data + except Exception as e: + self.app.stdout.write(str(e)) + + +class TenantSet(Command): + """Set the tenant for a intra_extension.""" + + log = logging.getLogger(__name__) + + def get_parser(self, prog_name): + parser = super(TenantSet, self).get_parser(prog_name) + parser.add_argument( + 'intraextension_uuid', + metavar='<intraextension-uuid>', + help='IntraExtension UUID', + ) + parser.add_argument( + 'tenant_name', + metavar='<tenant-name>', + help='Tenant Name', + ) + return parser + + def take_action(self, parsed_args): + self.app.get_url("/v3/OS-MOON/intra_extensions/{}/tenant".format(parsed_args.intraextension_uuid), + post_data={"tenant_id": parsed_args.tenant_name}, + authtoken=True) + |