summaryrefslogtreecommitdiffstats
path: root/moonclient/moonclient/rules.py
diff options
context:
space:
mode:
authorWuKong <rebirthmonkey@gmail.com>2015-07-01 09:01:11 +0200
committerWuKong <rebirthmonkey@gmail.com>2015-07-01 09:01:11 +0200
commit96b35f38008c73c70fb598d29515a4cce5e48edc (patch)
treed24795c0a917ec7dab59389f5fce8cdfb9c85dfc /moonclient/moonclient/rules.py
parent03bf0c32a0c656d4b91bebedc87a005e6d7563bb (diff)
migrate moonclient from github to opnfv
Change-Id: I024ad1136f50d1c2898d30e05be48131d02b6932 Signed-off-by: WuKong <rebirthmonkey@gmail.com>
Diffstat (limited to 'moonclient/moonclient/rules.py')
-rw-r--r--moonclient/moonclient/rules.py127
1 files changed, 127 insertions, 0 deletions
diff --git a/moonclient/moonclient/rules.py b/moonclient/moonclient/rules.py
new file mode 100644
index 00000000..b1f7e422
--- /dev/null
+++ b/moonclient/moonclient/rules.py
@@ -0,0 +1,127 @@
+# 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
+from cliff.show import ShowOne
+
+
+class RulesList(ShowOne):
+ """List all aggregation algorithms."""
+
+ log = logging.getLogger(__name__)
+
+ def get_parser(self, prog_name):
+ parser = super(RulesList, self).get_parser(prog_name)
+ 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/{}/sub_rules".format(
+ parsed_args.intraextension),
+ authtoken=True)
+ if "sub_rules" not in data:
+ raise Exception("Error in command {}: {}".format("RulesList", data))
+ # TODO (dthom): a better view with a Lister
+ return (
+ ("sub_rules",),
+ (data["sub_rules"],)
+ )
+
+
+class RuleAdd(ShowOne):
+ """List the current aggregation algorithm."""
+
+ log = logging.getLogger(__name__)
+
+ def get_parser(self, prog_name):
+ parser = super(RuleAdd, self).get_parser(prog_name)
+ parser.add_argument(
+ 'relation',
+ metavar='<relation-uuid>',
+ help='Relation UUID',
+ )
+ parser.add_argument(
+ 'rule',
+ metavar='<argument-list>',
+ help='Rule list (example: admin,vm_admin,servers)',
+ )
+ 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
+ rule = parsed_args.rule.split(",")
+ post = {
+ "rule": rule,
+ "relation": parsed_args.relation
+ }
+ data = self.app.get_url("/v3/OS-MOON/intra_extensions/{intraextension}/sub_rules".format(
+ intraextension=parsed_args.intraextension),
+ post_data=post,
+ authtoken=True)
+ if "sub_rules" not in data:
+ raise Exception("Error in command {}: {}".format("RuleAdd", data))
+ return (
+ ("sub_rules",),
+ (data["sub_rules"],)
+ )
+
+
+class RuleDelete(ShowOne):
+ """Set the current aggregation algorithm."""
+
+ log = logging.getLogger(__name__)
+
+ def get_parser(self, prog_name):
+ parser = super(RuleDelete, self).get_parser(prog_name)
+ parser.add_argument(
+ 'relation',
+ metavar='<relation-uuid>',
+ help='Relation UUID',
+ )
+ parser.add_argument(
+ 'rule',
+ metavar='<argument-list>',
+ help='Rule list (example: admin,vm_admin,servers)',
+ )
+ 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
+ rule = "+".join(parsed_args.rule.split(","))
+ data = self.app.get_url(
+ "/v3/OS-MOON/intra_extensions/{intra_extensions_id}/sub_rules/{relation_name}/{rule}".format(
+ intra_extensions_id=parsed_args.intraextension,
+ relation_name=parsed_args.relation,
+ rule=rule,
+ ),
+ method="DELETE",
+ authtoken=True)
+ if "sub_rules" not in data:
+ raise Exception("Error in command {}: {}".format("RuleDelete", data))
+ return (
+ ("sub_rules",),
+ (data["sub_rules"],)
+ )