summaryrefslogtreecommitdiffstats
path: root/moonclient/moonclient/subject_scopes.py
diff options
context:
space:
mode:
authorWuKong <rebirthmonkey@gmail.com>2015-09-23 11:58:00 +0200
committerWuKong <rebirthmonkey@gmail.com>2015-09-23 11:58:00 +0200
commit480d0fb4390de27b225722e72cb95686f5c42ff8 (patch)
treef4d1c95356fce394c9bc8db427e5be558ae64568 /moonclient/moonclient/subject_scopes.py
parentc572f02590ae0e70118bb6eec71b3bfdf3fb2b25 (diff)
review moonclient
Change-Id: I0969fe42fd756c025d549d0cffe07943cddd2d15 Signed-off-by: WuKong <rebirthmonkey@gmail.com>
Diffstat (limited to 'moonclient/moonclient/subject_scopes.py')
-rw-r--r--moonclient/moonclient/subject_scopes.py123
1 files changed, 123 insertions, 0 deletions
diff --git a/moonclient/moonclient/subject_scopes.py b/moonclient/moonclient/subject_scopes.py
new file mode 100644
index 00000000..f960a1d0
--- /dev/null
+++ b/moonclient/moonclient/subject_scopes.py
@@ -0,0 +1,123 @@
+# 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.lister import Lister
+from cliff.command import Command
+
+
+class SubjectScopesList(Lister):
+ """List all subject scopes."""
+
+ log = logging.getLogger(__name__)
+
+ def get_parser(self, prog_name):
+ parser = super(SubjectScopesList, self).get_parser(prog_name)
+ parser.add_argument(
+ 'subject_category_id',
+ metavar='<subject-category-uuid>',
+ help='Subject category UUID',
+ )
+ parser.add_argument(
+ '--intraextension',
+ metavar='<intraextension-uuid>',
+ help='IntraExtension UUID',
+ )
+ return parser
+
+ def take_action(self, parsed_args):
+ if not parsed_args.intraextension:
+ parsed_args.intraextension = self.app.intraextension
+ data = self.app.get_url("/v3/OS-MOON/intra_extensions/{}/subject_scopes/{}".format(
+ parsed_args.intraextension,
+ parsed_args.subject_category_id),
+ authtoken=True)
+ return (
+ ("id", "name", "description"),
+ ((_id, data[_id]["name"], data[_id]["description"]) for _id in data)
+ )
+
+
+class SubjectScopesAdd(Command):
+ """Add a new subject scope."""
+
+ log = logging.getLogger(__name__)
+
+ def get_parser(self, prog_name):
+ parser = super(SubjectScopesAdd, self).get_parser(prog_name)
+ parser.add_argument(
+ 'subject_category_id',
+ metavar='<subject-category-uuid>',
+ help='Subject category UUID',
+ )
+ parser.add_argument(
+ 'subject_scope_name',
+ metavar='<subject-scope-str>',
+ help='Subject scope Name',
+ )
+ parser.add_argument(
+ '--description',
+ metavar='<description-str>',
+ help='Description',
+ )
+ parser.add_argument(
+ '--intraextension',
+ metavar='<intraextension-uuid>',
+ help='IntraExtension UUID',
+ )
+ return parser
+
+ def take_action(self, parsed_args):
+ if not parsed_args.intraextension:
+ parsed_args.intraextension = self.app.intraextension
+ data = self.app.get_url("/v3/OS-MOON/intra_extensions/{}/subject_scopes/{}".format(
+ parsed_args.intraextension, parsed_args.subject_category_id),
+ post_data={
+ "subject_scope_name": parsed_args.subject_scope_name,
+ "subject_scope_description": parsed_args.description,
+ },
+ authtoken=True)
+ return (
+ ("id", "name", "description"),
+ ((_id, data[_id]["name"], data[_id]["description"]) for _id in data)
+ )
+
+
+class SubjectScopesDelete(Command):
+ """Delete a subject scope."""
+
+ log = logging.getLogger(__name__)
+
+ def get_parser(self, prog_name):
+ parser = super(SubjectScopesDelete, self).get_parser(prog_name)
+ parser.add_argument(
+ 'subject_category_id',
+ metavar='<subject-category-uuid>',
+ help='Subject category UUID',
+ )
+ parser.add_argument(
+ 'subject_scope_id',
+ metavar='<subject-scope-uuid>',
+ help='Subject scope UUID',
+ )
+ parser.add_argument(
+ '--intraextension',
+ metavar='<intraextension-uuid>',
+ help='IntraExtension UUID',
+ )
+ return parser
+
+ def take_action(self, parsed_args):
+ if not parsed_args.intraextension:
+ parsed_args.intraextension = self.app.intraextension
+ self.app.get_url("/v3/OS-MOON/intra_extensions/{}/subject_scopes/{}/{}".format(
+ parsed_args.intraextension,
+ parsed_args.subject_category_id,
+ parsed_args.subject_scope_id
+ ),
+ method="DELETE",
+ authtoken=True
+ ) \ No newline at end of file