summaryrefslogtreecommitdiff
path: root/openstackclient/network
diff options
context:
space:
mode:
Diffstat (limited to 'openstackclient/network')
-rw-r--r--openstackclient/network/v2/network_rbac.py41
1 files changed, 41 insertions, 0 deletions
diff --git a/openstackclient/network/v2/network_rbac.py b/openstackclient/network/v2/network_rbac.py
index 62968376..f4dfd4e7 100644
--- a/openstackclient/network/v2/network_rbac.py
+++ b/openstackclient/network/v2/network_rbac.py
@@ -186,6 +186,47 @@ class ListNetworkRBAC(command.Lister):
) for s in data))
+class SetNetworkRBAC(command.Command):
+ """Set network RBAC policy properties"""
+
+ def get_parser(self, prog_name):
+ parser = super(SetNetworkRBAC, self).get_parser(prog_name)
+ parser.add_argument(
+ 'rbac_policy',
+ metavar="<rbac-policy>",
+ help=_("RBAC policy to be modified (ID only)")
+ )
+ parser.add_argument(
+ '--target-project',
+ metavar="<target-project>",
+ help=_('The project to which the RBAC policy '
+ 'will be enforced (name or ID)')
+ )
+ parser.add_argument(
+ '--target-project-domain',
+ metavar='<target-project-domain>',
+ help=_('Domain the target project belongs to (name or ID). '
+ 'This can be used in case collisions between project names '
+ 'exist.'),
+ )
+ return parser
+
+ def take_action(self, parsed_args):
+ client = self.app.client_manager.network
+ obj = client.find_rbac_policy(parsed_args.rbac_policy,
+ ignore_missing=False)
+ attrs = {}
+ if parsed_args.target_project:
+ identity_client = self.app.client_manager.identity
+ project_id = identity_common.find_project(
+ identity_client,
+ parsed_args.target_project,
+ parsed_args.target_project_domain,
+ ).id
+ attrs['target_tenant'] = project_id
+ client.update_rbac_policy(obj, **attrs)
+
+
class ShowNetworkRBAC(command.ShowOne):
"""Display network RBAC policy details"""