From d87091cc1e829b03a58a18a6a1cb25cd748e1f48 Mon Sep 17 00:00:00 2001 From: Lin Yang Date: Mon, 11 Sep 2017 21:36:17 -0700 Subject: [PATCH] Add list fabrics command Add new command 'rsd fabric list' to allow user to list all fabrics brief info. Change-Id: I7fbd102c9ff67a54c7f6633eb573b038c0d43f1e --- rsdclient/osc/v1/fabric.py | 26 ++++++++++++++++++++++++++ rsdclient/v1/client.py | 2 ++ rsdclient/v1/fabric.py | 33 +++++++++++++++++++++++++++++++++ setup.cfg | 2 ++ 4 files changed, 63 insertions(+) create mode 100644 rsdclient/osc/v1/fabric.py create mode 100644 rsdclient/v1/fabric.py diff --git a/rsdclient/osc/v1/fabric.py b/rsdclient/osc/v1/fabric.py new file mode 100644 index 0000000..4683f16 --- /dev/null +++ b/rsdclient/osc/v1/fabric.py @@ -0,0 +1,26 @@ +# Copyright 2017 Intel, Inc. +# +# 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. +# + +from rsdclient.common import command + + +class ListFabric(command.Command): + _description = "List all Fabrics" + + def take_action(self, parsed_args): + self.log.debug("take_action(%s)", parsed_args) + rsd_client = self.app.client_manager.rsd + fabric_list = rsd_client.fabric.list() + print(fabric_list) diff --git a/rsdclient/v1/client.py b/rsdclient/v1/client.py index f014819..aa459a7 100644 --- a/rsdclient/v1/client.py +++ b/rsdclient/v1/client.py @@ -15,6 +15,7 @@ import rsd_lib +from rsdclient.v1 import fabric from rsdclient.v1 import node from rsdclient.v1 import storage_service @@ -27,3 +28,4 @@ class Client(object): self.node = node.NodeManager(self.client) self.storage_service = \ storage_service.StorageServiceManager(self.client) + self.fabric = fabric.FabricManager(self.client) diff --git a/rsdclient/v1/fabric.py b/rsdclient/v1/fabric.py new file mode 100644 index 0000000..fd6f278 --- /dev/null +++ b/rsdclient/v1/fabric.py @@ -0,0 +1,33 @@ +# Copyright 2017 Intel, Inc. +# +# 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. +# + +from rsdclient.common import base +from rsdclient.common import utils + + +class FabricManager(base.Manager): + _resource_name = 'fabrics' + + def __init__(self, *args, **kwargs): + super(FabricManager, self).__init__(*args, **kwargs) + self.fabrics_path = self.client._fabrics_path + + def list(self): + fabric_collection = self.client.get_fabric_collection() + fabrics = [utils.extract_attr(self.client.get_fabric(fabric_uri)) + for fabric_uri in fabric_collection.members_identities] + fabric_info_table = utils.print_dict( + fabrics, ["Identity", "Name", "Fabric_Type", "Description"]) + return fabric_info_table diff --git a/setup.cfg b/setup.cfg index 4678cd5..ce9274a 100644 --- a/setup.cfg +++ b/setup.cfg @@ -38,6 +38,8 @@ openstack.rsd.v1 = rsd_storage_list = rsdclient.osc.v1.storage_service:ListStorageServices rsd_storage_show = rsdclient.osc.v1.storage_service:ShowStorageServices + rsd_fabric_list = rsdclient.osc.v1.fabric:ListFabric + [build_sphinx] all-files = 1 warning-is-error = 1