summaryrefslogtreecommitdiff
path: root/openstackclient/network
diff options
context:
space:
mode:
authorting wang <bx_wang@outlook.com>2016-05-26 19:55:11 +0800
committerHuanxuan Ao <huanxuan.ao@easystack.cn>2016-06-27 10:44:41 +0800
commit6c7a30ab381e79f21767898f0a235276839f8ef2 (patch)
tree8aee57ef18302246c888dd28410647cbb3e2e547 /openstackclient/network
parent7cda2b2a066cd45c7aeb9a6d92c1a83e49d48128 (diff)
downloadpython-openstackclient-6c7a30ab381e79f21767898f0a235276839f8ef2.tar.gz
Implement rbac list and show command
1. implement "openstack network rbac list" 2. implement "openstack network rbac show" 3. also add FakeRBACPolicy to test "network rbac xxx" command The unit test class similar to FakeRouter, which is able to fake one or more rbac policies. It will be used by the rbac CRUD patches. Change-Id: I6c97bc8819698546895fd530464a2cbb347bf77d Co-Authored-By: Huanxuan Ao <huanxuan.ao@easystack.cn> Partially-Implements: blueprint neutron-client-rbac Depends-On: I88f409a24947b67146c0f93ec8480834cef56d2f
Diffstat (limited to 'openstackclient/network')
-rw-r--r--openstackclient/network/v2/network_rbac.py75
1 files changed, 75 insertions, 0 deletions
diff --git a/openstackclient/network/v2/network_rbac.py b/openstackclient/network/v2/network_rbac.py
new file mode 100644
index 00000000..7a759449
--- /dev/null
+++ b/openstackclient/network/v2/network_rbac.py
@@ -0,0 +1,75 @@
+# Licensed under the Apache License, Version 2.0 (the "License"); you may
+# not use this file except in compliance with the License. You may obtain
+# a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+# License for the specific language governing permissions and limitations
+# under the License.
+#
+
+"""RBAC action implementations"""
+
+from osc_lib.command import command
+from osc_lib import utils
+
+from openstackclient.i18n import _
+
+
+def _get_columns(item):
+ columns = list(item.keys())
+ if 'tenant_id' in columns:
+ columns.remove('tenant_id')
+ columns.append('project_id')
+ if 'target_tenant' in columns:
+ columns.remove('target_tenant')
+ columns.append('target_project')
+ return tuple(sorted(columns))
+
+
+class ListNetworkRBAC(command.Lister):
+ """List network RBAC policies"""
+
+ def take_action(self, parsed_args):
+ client = self.app.client_manager.network
+
+ columns = (
+ 'id',
+ 'object_type',
+ 'object_id',
+ )
+ column_headers = (
+ 'ID',
+ 'Object Type',
+ 'Object ID',
+ )
+
+ data = client.rbac_policies()
+ return (column_headers,
+ (utils.get_item_properties(
+ s, columns,
+ ) for s in data))
+
+
+class ShowNetworkRBAC(command.ShowOne):
+ """Display network RBAC policy details"""
+
+ def get_parser(self, prog_name):
+ parser = super(ShowNetworkRBAC, self).get_parser(prog_name)
+ parser.add_argument(
+ 'rbac_policy',
+ metavar="<rbac-policy>",
+ help=_("RBAC policy (ID only)")
+ )
+ 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)
+ columns = _get_columns(obj)
+ data = utils.get_item_properties(obj, columns)
+ return columns, data