diff options
Diffstat (limited to 'moonclient/moonclient/object_assignments.py')
-rw-r--r-- | moonclient/moonclient/object_assignments.py | 55 |
1 files changed, 38 insertions, 17 deletions
diff --git a/moonclient/moonclient/object_assignments.py b/moonclient/moonclient/object_assignments.py index 81305d61..611fdb13 100644 --- a/moonclient/moonclient/object_assignments.py +++ b/moonclient/moonclient/object_assignments.py @@ -17,22 +17,38 @@ class ObjectAssignmentsList(Lister): def get_parser(self, prog_name): parser = super(ObjectAssignmentsList, self).get_parser(prog_name) parser.add_argument( + 'object_id', + metavar='<object-uuid>', + help='Object UUID', + ) + parser.add_argument( + 'category_id', + metavar='<category-uuid>', + help='Category UUID', + ) + parser.add_argument( '--intraextension', metavar='<intraextension-uuid>', help='IntraExtension UUID', ) return parser + def __get_scope_from_id(self, intraextension_id, category_id, scope_id): + data = self.app.get_url("/v3/OS-MOON/intra_extensions/{}/object_scopes/{}".format( + intraextension_id, category_id), + authtoken=True) + if scope_id in data: + return data[scope_id] + 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/{}/object_assignments".format(parsed_args.intraextension), - authtoken=True) - if "object_assignments" not in data: - raise Exception("Error in command {}: {}".format("ObjectAssignmentsList", data)) + data = self.app.get_url("/v3/OS-MOON/intra_extensions/{}/object_assignments/{}/{}".format( + parsed_args.intraextension, parsed_args.object_id, parsed_args.category_id), + authtoken=True) return ( - ("category", "value"), - ((_cat, str(_val)) for _cat, _val in data["object_assignments"].items()) + ("id", "name"), + ((_id, self.__get_scope_from_id(parsed_args.intraextension, parsed_args.category_id, _id)['name']) for _id in data) ) @@ -45,17 +61,17 @@ class ObjectAssignmentsAdd(Command): parser = super(ObjectAssignmentsAdd, self).get_parser(prog_name) parser.add_argument( 'object_id', - metavar='<action-uuid>', + metavar='<object-uuid>', help='Object UUID', ) parser.add_argument( 'object_category', - metavar='<object_category>', + metavar='<object_category-uuid>', help='Object Category', ) parser.add_argument( 'object_category_scope', - metavar='<object_category_scope>', + metavar='<object_category_scope-uuid>', help='Object Category Scope', ) parser.add_argument( @@ -65,21 +81,26 @@ class ObjectAssignmentsAdd(Command): ) return parser + def __get_scope_from_id(self, intraextension_id, category_id, scope_id): + data = self.app.get_url("/v3/OS-MOON/intra_extensions/{}/object_scopes/{}".format( + intraextension_id, category_id), + authtoken=True) + if scope_id in data: + return data[scope_id] + 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/{}/object_assignments".format(parsed_args.intraextension), post_data={ "object_id": parsed_args.object_id, - "object_category": parsed_args.object_category, - "object_category_scope": parsed_args.object_category_scope + "object_category_id": parsed_args.object_category, + "object_scope_id": parsed_args.object_category_scope }, authtoken=True) - if "object_assignments" not in data: - raise Exception("Error in command {}".format(data)) return ( - ("category", "value"), - ((_cat, str(_val)) for _cat, _val in data["object_assignments"].items()) + ("id", "name"), + ((_id, self.__get_scope_from_id(parsed_args.intraextension, parsed_args.category_id, _id)['name']) for _id in data) ) @@ -92,7 +113,7 @@ class ObjectAssignmentsDelete(Command): parser = super(ObjectAssignmentsDelete, self).get_parser(prog_name) parser.add_argument( 'object_id', - metavar='<action-uuid>', + metavar='<object-uuid>', help='Object UUID', ) parser.add_argument( @@ -117,8 +138,8 @@ class ObjectAssignmentsDelete(Command): parsed_args.intraextension = self.app.intraextension self.app.get_url("/v3/OS-MOON/intra_extensions/{}/object_assignments/{}/{}/{}".format( parsed_args.intraextension, - parsed_args.object_category, parsed_args.object_id, + parsed_args.object_category, parsed_args.object_category_scope ), method="DELETE", |