Consume column utils from osc-lib

get_column_definitions() and get_columns() in neutronclient.osc.utils
have been migrated to osc-lib 1.8.0 (or later), so we no longer need
to maintain our own versions. This commit consumes osc-lib versions.

The workaround in firewallrule.py is no longer needed with
osc-lib 1.8.0 as the original bug has been fixed in osc-lib 1.8.0
(osc-lib commit 8cbdcde6076fa1df40e00d3e16bf140a59aa6273).

Change-Id: I4b9243b0fdb4ca744cc3f85371cb066a456f1d42
This commit is contained in:
Akihiro Motoki
2018-01-07 05:03:25 +09:00
parent 27ab2f9f40
commit 4914b4e3b5
26 changed files with 263 additions and 385 deletions

View File

@@ -20,8 +20,6 @@ Stuffs specific to neutronclient OSC plugin should not be added
to this module. They should go to neutronclient.osc.v2.utils.
"""
import operator
from keystoneclient import exceptions as identity_exc
from keystoneclient.v3 import domains
from keystoneclient.v3 import projects
@@ -30,79 +28,6 @@ from osc_lib import utils
from neutronclient._i18n import _
LIST_BOTH = 'both'
LIST_SHORT_ONLY = 'short_only'
LIST_LONG_ONLY = 'long_only'
def get_column_definitions(attr_map, long_listing):
"""Return table headers and column names for a listing table.
:param attr_map: a list of table entry definitions.
Each entry should be a tuple consisting of
(API attribute name, header name, listing mode). For example:
(('id', 'ID', LIST_BOTH),
('name', 'Name', LIST_BOTH),
('tenant_id', 'Project', LIST_LONG_ONLY))
The third field of each tuple must be one of LIST_BOTH,
LIST_LONG_ONLY (a corresponding column is shown only in a long mode), or
LIST_SHORT_ONLY (a corresponding column is shown only in a short mode).
:param long_listing: A boolean value which indicates a long listing
or not. In most cases, parsed_args.long is passed to this argument.
:return: A tuple of a list of table headers and a list of column names.
"""
if long_listing:
headers = [hdr for col, hdr, listing_mode in attr_map
if listing_mode in (LIST_BOTH, LIST_LONG_ONLY)]
columns = [col for col, hdr, listing_mode in attr_map
if listing_mode in (LIST_BOTH, LIST_LONG_ONLY)]
else:
headers = [hdr for col, hdr, listing_mode in attr_map if listing_mode
if listing_mode in (LIST_BOTH, LIST_SHORT_ONLY)]
columns = [col for col, hdr, listing_mode in attr_map if listing_mode
if listing_mode in (LIST_BOTH, LIST_SHORT_ONLY)]
return headers, columns
def get_columns(item, attr_map=None):
"""Return pair of resource attributes and corresponding display names.
Assume the following item and attr_map are passed.
item: {'id': 'myid', 'name': 'myname',
'foo': 'bar', 'tenant_id': 'mytenan'}
attr_map:
(('id', 'ID', LIST_BOTH),
('name', 'Name', LIST_BOTH),
('tenant_id', 'Project', LIST_LONG_ONLY))
This method returns:
(('id', 'name', 'tenant_id', 'foo'), # attributes
('ID', 'Name', 'Project', 'foo') # display names
Both tuples of attributes and display names are sorted by display names
in the alphabetical order.
Attributes not found in a given attr_map are kept as-is.
:param item: a dictionary which represents a resource.
Keys of the dictionary are expected to be attributes of the resource.
Values are not referred to by this method.
:param attr_map: a list of mapping from attribute to display name.
The same format is used as for get_column_definitions attr_map.
:return: A pair of tuple of attributes and tuple of display names.
"""
attr_map = attr_map or tuple([])
_attr_map_dict = dict((col, hdr) for col, hdr, listing_mode in attr_map)
columns = [(column, _attr_map_dict.get(column, column))
for column in item.keys()]
columns = sorted(columns, key=operator.itemgetter(1))
return (tuple(col[0] for col in columns),
tuple(col[1] for col in columns))
# TODO(amotoki): Use osc-lib version once osc-lib provides this.
def add_project_owner_option_to_parser(parser):
"""Register project and project domain options.

View File

@@ -13,6 +13,7 @@
from osc_lib.command import command
from osc_lib import utils
from osc_lib.utils import columns as column_util
from neutronclient._i18n import _
from neutronclient.common import exceptions
@@ -99,7 +100,7 @@ class CreateBgpPeer(command.ShowOne):
attrs = _get_attrs(self.app.client_manager, parsed_args)
body = {constants.BGP_PEER: attrs}
obj = client.create_bgp_peer(body)[constants.BGP_PEER]
columns, display_columns = nc_osc_utils.get_columns(obj)
columns, display_columns = column_util.get_columns(obj)
data = utils.get_dict_properties(obj, columns)
return display_columns, data
@@ -183,6 +184,6 @@ class ShowBgpPeer(command.ShowOne):
id = client.find_resource(constants.BGP_PEER,
parsed_args.bgp_peer)['id']
obj = client.show_bgp_peer(id)[constants.BGP_PEER]
columns, display_columns = nc_osc_utils.get_columns(obj)
columns, display_columns = column_util.get_columns(obj)
data = utils.get_dict_properties(obj, columns)
return display_columns, data

View File

@@ -13,6 +13,7 @@
from osc_lib.command import command
from osc_lib import utils
from osc_lib.utils import columns as column_util
from neutronclient._i18n import _
from neutronclient.osc import utils as nc_osc_utils
@@ -149,7 +150,7 @@ class CreateBgpSpeaker(command.ShowOne):
body = {}
body[constants.BGP_SPEAKER] = attrs
obj = client.create_bgp_speaker(body)[constants.BGP_SPEAKER]
columns, display_columns = nc_osc_utils.get_columns(obj)
columns, display_columns = column_util.get_columns(obj)
data = utils.get_dict_properties(obj, columns)
return display_columns, data
@@ -315,6 +316,6 @@ class ShowBgpSpeaker(command.ShowOne):
id = client.find_resource(constants.BGP_SPEAKER,
parsed_args.bgp_speaker)['id']
obj = client.show_bgp_speaker(id)[constants.BGP_SPEAKER]
columns, display_columns = nc_osc_utils.get_columns(obj)
columns, display_columns = column_util.get_columns(obj)
data = utils.get_dict_properties(obj, columns)
return display_columns, data

View File

@@ -18,6 +18,7 @@ import logging
from osc_lib.command import command
from osc_lib import exceptions
from osc_lib import utils
from osc_lib.utils import columns as column_util
from neutronclient._i18n import _
from neutronclient.osc import utils as osc_utils
@@ -32,16 +33,16 @@ _formatters = {
}
_attr_map = (
('id', 'ID', osc_utils.LIST_BOTH),
('name', 'Name', osc_utils.LIST_BOTH),
('ingress_firewall_policy_id', 'Ingress Policy ID', osc_utils.LIST_BOTH),
('egress_firewall_policy_id', 'Egress Policy ID', osc_utils.LIST_BOTH),
('description', 'Description', osc_utils.LIST_LONG_ONLY),
('status', 'Status', osc_utils.LIST_LONG_ONLY),
('ports', 'Ports', osc_utils.LIST_LONG_ONLY),
('admin_state_up', 'State', osc_utils.LIST_LONG_ONLY),
('shared', 'Shared', osc_utils.LIST_LONG_ONLY),
('tenant_id', 'Project', osc_utils.LIST_LONG_ONLY),
('id', 'ID', column_util.LIST_BOTH),
('name', 'Name', column_util.LIST_BOTH),
('ingress_firewall_policy_id', 'Ingress Policy ID', column_util.LIST_BOTH),
('egress_firewall_policy_id', 'Egress Policy ID', column_util.LIST_BOTH),
('description', 'Description', column_util.LIST_LONG_ONLY),
('status', 'Status', column_util.LIST_LONG_ONLY),
('ports', 'Ports', column_util.LIST_LONG_ONLY),
('admin_state_up', 'State', column_util.LIST_LONG_ONLY),
('shared', 'Shared', column_util.LIST_LONG_ONLY),
('tenant_id', 'Project', column_util.LIST_LONG_ONLY),
)
@@ -201,7 +202,7 @@ class CreateFirewallGroup(command.ShowOne):
attrs = _get_common_attrs(self.app.client_manager, parsed_args)
obj = client.create_fwaas_firewall_group(
{const.FWG: attrs})[const.FWG]
columns, display_columns = osc_utils.get_columns(obj, _attr_map)
columns, display_columns = column_util.get_columns(obj, _attr_map)
data = utils.get_dict_properties(obj, columns, formatters=_formatters)
return (display_columns, data)
@@ -254,7 +255,7 @@ class ListFirewallGroup(command.Lister):
def take_action(self, parsed_args):
client = self.app.client_manager.neutronclient
obj = client.list_fwaas_firewall_groups()[const.FWGS]
headers, columns = osc_utils.get_column_definitions(
headers, columns = column_util.get_column_definitions(
_attr_map, long_listing=parsed_args.long)
return (headers, (utils.get_dict_properties(
s, columns, formatters=_formatters) for s in obj))
@@ -313,7 +314,7 @@ class ShowFirewallGroup(command.ShowOne):
fwg_id = client.find_resource(const.FWG, parsed_args.firewall_group,
cmd_resource=const.CMD_FWG)['id']
obj = client.show_fwaas_firewall_group(fwg_id)[const.FWG]
columns, display_columns = osc_utils.get_columns(obj, _attr_map)
columns, display_columns = column_util.get_columns(obj, _attr_map)
data = utils.get_dict_properties(obj, columns, formatters=_formatters)
return (display_columns, data)

View File

@@ -21,6 +21,7 @@ import logging
from osc_lib.command import command
from osc_lib import exceptions
from osc_lib import utils
from osc_lib.utils import columns as column_util
from neutronclient._i18n import _
from neutronclient.osc import utils as osc_utils
@@ -32,13 +33,13 @@ LOG = logging.getLogger(__name__)
_formatters = {}
_attr_map = (
('id', 'ID', osc_utils.LIST_BOTH),
('name', 'Name', osc_utils.LIST_BOTH),
('firewall_rules', 'Firewall Rules', osc_utils.LIST_BOTH),
('description', 'Description', osc_utils.LIST_LONG_ONLY),
('audited', 'Audited', osc_utils.LIST_LONG_ONLY),
('shared', 'Shared', osc_utils.LIST_LONG_ONLY),
('tenant_id', 'Project', osc_utils.LIST_LONG_ONLY),
('id', 'ID', column_util.LIST_BOTH),
('name', 'Name', column_util.LIST_BOTH),
('firewall_rules', 'Firewall Rules', column_util.LIST_BOTH),
('description', 'Description', column_util.LIST_LONG_ONLY),
('audited', 'Audited', column_util.LIST_LONG_ONLY),
('shared', 'Shared', column_util.LIST_LONG_ONLY),
('tenant_id', 'Project', column_util.LIST_LONG_ONLY),
)
@@ -155,7 +156,7 @@ class CreateFirewallPolicy(command.ShowOne):
attrs = _get_common_attrs(self.app.client_manager, parsed_args)
obj = client.create_fwaas_firewall_policy(
{const.FWP: attrs})[const.FWP]
columns, display_columns = osc_utils.get_columns(obj, _attr_map)
columns, display_columns = column_util.get_columns(obj, _attr_map)
data = utils.get_dict_properties(obj, columns, formatters=_formatters)
return (display_columns, data)
@@ -297,7 +298,7 @@ class ListFirewallPolicy(command.Lister):
def take_action(self, parsed_args):
client = self.app.client_manager.neutronclient
obj = client.list_fwaas_firewall_policies()[const.FWPS]
headers, columns = osc_utils.get_column_definitions(
headers, columns = column_util.get_column_definitions(
_attr_map, long_listing=parsed_args.long)
return (headers, (utils.get_dict_properties(
s, columns, formatters=_formatters) for s in obj))
@@ -360,7 +361,7 @@ class ShowFirewallPolicy(command.ShowOne):
parsed_args.firewall_policy,
cmd_resource=const.CMD_FWP)['id']
obj = client.show_fwaas_firewall_policy(fwp_id)[const.FWP]
columns, display_columns = osc_utils.get_columns(obj, _attr_map)
columns, display_columns = column_util.get_columns(obj, _attr_map)
data = utils.get_dict_properties(obj, columns, formatters=_formatters)
return (display_columns, data)

View File

@@ -20,6 +20,7 @@ from cliff import columns as cliff_columns
from osc_lib.command import command
from osc_lib import exceptions
from osc_lib import utils
from osc_lib.utils import columns as column_util
from neutronclient._i18n import _
from neutronclient.common import utils as nc_utils
@@ -31,21 +32,21 @@ LOG = logging.getLogger(__name__)
_attr_map = (
('id', 'ID', osc_utils.LIST_BOTH),
('name', 'Name', osc_utils.LIST_BOTH),
('enabled', 'Enabled', osc_utils.LIST_BOTH),
('summary', 'Summary', osc_utils.LIST_SHORT_ONLY),
('description', 'Description', osc_utils.LIST_LONG_ONLY),
('ip_version', 'IP Version', osc_utils.LIST_LONG_ONLY),
('action', 'Action', osc_utils.LIST_LONG_ONLY),
('protocol', 'Protocol', osc_utils.LIST_LONG_ONLY),
('source_ip_address', 'Source IP Address', osc_utils.LIST_LONG_ONLY),
('source_port', 'Source Port', osc_utils.LIST_LONG_ONLY),
('id', 'ID', column_util.LIST_BOTH),
('name', 'Name', column_util.LIST_BOTH),
('enabled', 'Enabled', column_util.LIST_BOTH),
('summary', 'Summary', column_util.LIST_SHORT_ONLY),
('description', 'Description', column_util.LIST_LONG_ONLY),
('ip_version', 'IP Version', column_util.LIST_LONG_ONLY),
('action', 'Action', column_util.LIST_LONG_ONLY),
('protocol', 'Protocol', column_util.LIST_LONG_ONLY),
('source_ip_address', 'Source IP Address', column_util.LIST_LONG_ONLY),
('source_port', 'Source Port', column_util.LIST_LONG_ONLY),
('destination_ip_address', 'Destination IP Address',
osc_utils.LIST_LONG_ONLY),
('destination_port', 'Destination Port', osc_utils.LIST_LONG_ONLY),
('shared', 'Shared', osc_utils.LIST_LONG_ONLY),
('tenant_id', 'Project', osc_utils.LIST_LONG_ONLY),
column_util.LIST_LONG_ONLY),
('destination_port', 'Destination Port', column_util.LIST_LONG_ONLY),
('shared', 'Shared', column_util.LIST_LONG_ONLY),
('tenant_id', 'Project', column_util.LIST_LONG_ONLY),
)
@@ -217,7 +218,7 @@ class CreateFirewallRule(command.ShowOne):
attrs = _get_common_attrs(self.app.client_manager, parsed_args)
obj = client.create_fwaas_firewall_rule(
{const.FWR: attrs})[const.FWR]
columns, display_columns = osc_utils.get_columns(obj, _attr_map)
columns, display_columns = column_util.get_columns(obj, _attr_map)
data = utils.get_dict_properties(obj, columns, formatters=_formatters)
return display_columns, data
@@ -294,7 +295,7 @@ class ListFirewallRule(command.Lister):
client = self.app.client_manager.neutronclient
obj = client.list_fwaas_firewall_rules()[const.FWRS]
obj_extend = self.extend_list(obj, parsed_args)
headers, columns = osc_utils.get_column_definitions(
headers, columns = column_util.get_column_definitions(
_attr_map, long_listing=parsed_args.long)
return (headers, (utils.get_dict_properties(
s, columns, formatters=_formatters) for s in obj_extend))
@@ -344,7 +345,7 @@ class ShowFirewallRule(command.ShowOne):
const.FWR, parsed_args.firewall_rule,
cmd_resource=const.CMD_FWR)['id']
obj = client.show_fwaas_firewall_rule(fwr_id)[const.FWR]
columns, display_columns = osc_utils.get_columns(obj, _attr_map)
columns, display_columns = column_util.get_columns(obj, _attr_map)
data = utils.get_dict_properties(obj, columns, formatters=_formatters)
return (display_columns, data)

View File

@@ -19,6 +19,7 @@ import copy
from osc_lib.command import command
from osc_lib import exceptions
from osc_lib import utils
from osc_lib.utils import columns as column_util
from oslo_log import log as logging
from neutronclient._i18n import _
@@ -29,20 +30,20 @@ from neutronclient.osc import utils as osc_utils
LOG = logging.getLogger(__name__)
_attr_map = (
('id', 'ID', osc_utils.LIST_BOTH),
('description', 'Description', osc_utils.LIST_LONG_ONLY),
('enabled', 'Enabled', osc_utils.LIST_BOTH),
('name', 'Name', osc_utils.LIST_BOTH),
('target_id', 'Target', osc_utils.LIST_LONG_ONLY),
('project_id', 'Project', osc_utils.LIST_LONG_ONLY),
('resource_id', 'Resource', osc_utils.LIST_LONG_ONLY),
('resource_type', 'Type', osc_utils.LIST_BOTH),
('event', 'Event', osc_utils.LIST_LONG_ONLY),
('summary', 'Summary', osc_utils.LIST_SHORT_ONLY),
('id', 'ID', column_util.LIST_BOTH),
('description', 'Description', column_util.LIST_LONG_ONLY),
('enabled', 'Enabled', column_util.LIST_BOTH),
('name', 'Name', column_util.LIST_BOTH),
('target_id', 'Target', column_util.LIST_LONG_ONLY),
('project_id', 'Project', column_util.LIST_LONG_ONLY),
('resource_id', 'Resource', column_util.LIST_LONG_ONLY),
('resource_type', 'Type', column_util.LIST_BOTH),
('event', 'Event', column_util.LIST_LONG_ONLY),
('summary', 'Summary', column_util.LIST_SHORT_ONLY),
)
_attr_map_for_loggable = (
('type', 'Supported types', osc_utils.LIST_BOTH),
('type', 'Supported types', column_util.LIST_BOTH),
)
NET_LOG = 'network_log'
@@ -142,7 +143,7 @@ class CreateNetworkLog(command.ShowOne):
client = self.app.client_manager.neutronclient
attrs = _get_common_attrs(self.app.client_manager, parsed_args)
obj = client.create_network_log({'log': attrs})['log']
columns, display_columns = osc_utils.get_columns(obj, _attr_map)
columns, display_columns = column_util.get_columns(obj, _attr_map)
data = utils.get_dict_properties(obj, columns)
return (display_columns, data)
@@ -195,7 +196,7 @@ class ListLoggableResource(command.Lister):
def take_action(self, parsed_args):
client = self.app.client_manager.neutronclient
obj = client.list_network_loggable_resources()['loggable_resources']
headers, columns = osc_utils.get_column_definitions(
headers, columns = column_util.get_column_definitions(
_attr_map_for_loggable, long_listing=parsed_args.long)
return (headers, (utils.get_dict_properties(s, columns) for s in obj))
@@ -232,7 +233,7 @@ class ListNetworkLog(command.Lister):
client = self.app.client_manager.neutronclient
obj = client.list_network_logs()['logs']
obj_extend = self._extend_list(obj, parsed_args)
headers, columns = osc_utils.get_column_definitions(
headers, columns = column_util.get_column_definitions(
_attr_map, long_listing=parsed_args.long)
return (headers, (
utils.get_dict_properties(s, columns) for s in obj_extend))
@@ -284,6 +285,6 @@ class ShowNetworkLog(command.ShowOne):
log_id = client.find_resource(
'log', parsed_args.network_log, cmd_resource=NET_LOG)['id']
obj = client.show_network_log(log_id)['log']
columns, display_columns = osc_utils.get_columns(obj, _attr_map)
columns, display_columns = column_util.get_columns(obj, _attr_map)
data = utils.get_dict_properties(obj, columns)
return (display_columns, data)

View File

@@ -21,6 +21,7 @@ from osc_lib.cli.parseractions import KeyValueAction
from osc_lib.command import command
from osc_lib import exceptions
from osc_lib import utils as osc_utils
from osc_lib.utils import columns as column_util
from neutronclient._i18n import _
from neutronclient.osc import utils as nc_osc_utils
@@ -29,20 +30,20 @@ from neutronclient.osc.v2.networking_bgpvpn import constants
LOG = logging.getLogger(__name__)
_attr_map = (
('id', 'ID', nc_osc_utils.LIST_BOTH),
('tenant_id', 'Project', nc_osc_utils.LIST_LONG_ONLY),
('name', 'Name', nc_osc_utils.LIST_BOTH),
('type', 'Type', nc_osc_utils.LIST_BOTH),
('route_targets', 'Route Targets', nc_osc_utils.LIST_LONG_ONLY),
('import_targets', 'Import Targets', nc_osc_utils.LIST_LONG_ONLY),
('export_targets', 'Export Targets', nc_osc_utils.LIST_LONG_ONLY),
('id', 'ID', column_util.LIST_BOTH),
('tenant_id', 'Project', column_util.LIST_LONG_ONLY),
('name', 'Name', column_util.LIST_BOTH),
('type', 'Type', column_util.LIST_BOTH),
('route_targets', 'Route Targets', column_util.LIST_LONG_ONLY),
('import_targets', 'Import Targets', column_util.LIST_LONG_ONLY),
('export_targets', 'Export Targets', column_util.LIST_LONG_ONLY),
('route_distinguishers', 'Route Distinguishers',
nc_osc_utils.LIST_LONG_ONLY),
('networks', 'Associated Networks', nc_osc_utils.LIST_LONG_ONLY),
('routers', 'Associated Routers', nc_osc_utils.LIST_LONG_ONLY),
('ports', 'Associated Ports', nc_osc_utils.LIST_LONG_ONLY),
('vni', 'VNI', nc_osc_utils.LIST_LONG_ONLY),
('local_pref', 'Local Pref', nc_osc_utils.LIST_LONG_ONLY),
column_util.LIST_LONG_ONLY),
('networks', 'Associated Networks', column_util.LIST_LONG_ONLY),
('routers', 'Associated Routers', column_util.LIST_LONG_ONLY),
('ports', 'Associated Ports', column_util.LIST_LONG_ONLY),
('vni', 'VNI', column_util.LIST_LONG_ONLY),
('local_pref', 'Local Pref', column_util.LIST_LONG_ONLY),
)
_formatters = {
'route_targets': format_columns.ListColumn,
@@ -267,7 +268,7 @@ class CreateBgpvpn(command.ShowOne):
attrs['tenant_id'] = project_id
body = {constants.BGPVPN: attrs}
obj = client.create_bgpvpn(body)[constants.BGPVPN]
columns, display_columns = nc_osc_utils.get_columns(obj, _attr_map)
columns, display_columns = column_util.get_columns(obj, _attr_map)
data = osc_utils.get_dict_properties(obj, columns,
formatters=_formatters)
return display_columns, data
@@ -379,7 +380,7 @@ class ListBgpvpn(command.Lister):
if parsed_args.property:
params.update(parsed_args.property)
objs = client.list_bgpvpns(**params)[constants.BGPVPNS]
headers, columns = nc_osc_utils.get_column_definitions(
headers, columns = column_util.get_column_definitions(
_attr_map, long_listing=parsed_args.long)
return (headers, (osc_utils.get_dict_properties(
s, columns, formatters=_formatters) for s in objs))
@@ -401,7 +402,7 @@ class ShowBgpvpn(command.ShowOne):
client = self.app.client_manager.neutronclient
id = client.find_resource(constants.BGPVPN, parsed_args.bgpvpn)['id']
obj = client.show_bgpvpn(id)[constants.BGPVPN]
columns, display_columns = nc_osc_utils.get_columns(obj, _attr_map)
columns, display_columns = column_util.get_columns(obj, _attr_map)
data = osc_utils.get_dict_properties(obj, columns,
formatters=_formatters)
return display_columns, data

View File

@@ -14,9 +14,9 @@
# under the License.
#
from osc_lib.utils import columns as column_util
from neutronclient._i18n import _
from neutronclient.osc import utils as nc_osc_utils
from neutronclient.osc.v2.networking_bgpvpn import constants
from neutronclient.osc.v2.networking_bgpvpn.resource_association import\
CreateBgpvpnResAssoc
@@ -34,10 +34,10 @@ class BgpvpnNetAssoc(object):
_resource_plural = constants.NETWORK_ASSOCS
_attr_map = (
('id', 'ID', nc_osc_utils.LIST_BOTH),
('tenant_id', 'Project', nc_osc_utils.LIST_LONG_ONLY),
('id', 'ID', column_util.LIST_BOTH),
('tenant_id', 'Project', column_util.LIST_LONG_ONLY),
('%s_id' % _assoc_res_name, '%s ID' % _assoc_res_name.capitalize(),
nc_osc_utils.LIST_BOTH),
column_util.LIST_BOTH),
)
_formatters = {}

View File

@@ -18,9 +18,9 @@ import logging
from osc_lib.cli import format_columns
from osc_lib.cli import parseractions
from osc_lib.utils import columns as column_util
from neutronclient._i18n import _
from neutronclient.osc import utils as nc_osc_utils
from neutronclient.osc.v2.networking_bgpvpn import constants
from neutronclient.osc.v2.networking_bgpvpn import resource_association
@@ -33,16 +33,16 @@ class BgpvpnPortAssoc(object):
_resource_plural = constants.PORT_ASSOCS
_attr_map = (
('id', 'ID', nc_osc_utils.LIST_BOTH),
('tenant_id', 'Project', nc_osc_utils.LIST_LONG_ONLY),
('id', 'ID', column_util.LIST_BOTH),
('tenant_id', 'Project', column_util.LIST_LONG_ONLY),
('%s_id' % _assoc_res_name, '%s ID' % _assoc_res_name.capitalize(),
nc_osc_utils.LIST_BOTH),
column_util.LIST_BOTH),
('prefix_routes', 'Prefix Routes (BGP LOCAL_PREF)',
nc_osc_utils.LIST_LONG_ONLY),
column_util.LIST_LONG_ONLY),
('bgpvpn_routes', 'BGP VPN Routes (BGP LOCAL_PREF)',
nc_osc_utils.LIST_LONG_ONLY),
column_util.LIST_LONG_ONLY),
('advertise_fixed_ips', "Advertise Port's Fixed IPs",
nc_osc_utils.LIST_LONG_ONLY),
column_util.LIST_LONG_ONLY),
)
_formatters = {
'prefix_routes': format_columns.ListColumn,

View File

@@ -20,6 +20,7 @@ from osc_lib.cli import parseractions
from osc_lib.command import command
from osc_lib import exceptions
from osc_lib import utils as osc_utils
from osc_lib.utils import columns as column_util
from neutronclient._i18n import _
from neutronclient.osc import utils as nc_osc_utils
@@ -83,8 +84,7 @@ class CreateBgpvpnResAssoc(command.ShowOne):
transform = getattr(self, '_transform_resource', None)
if callable(transform):
transform(obj)
columns, display_columns = nc_osc_utils.get_columns(obj,
self._attr_map)
columns, display_columns = column_util.get_columns(obj, self._attr_map)
data = osc_utils.get_dict_properties(obj, columns,
formatters=self._formatters)
return display_columns, data
@@ -218,7 +218,7 @@ class ListBgpvpnResAssoc(command.Lister):
transform = getattr(self, '_transform_resource', None)
if callable(transform):
[transform(obj) for obj in objs]
headers, columns = nc_osc_utils.get_column_definitions(
headers, columns = column_util.get_column_definitions(
self._attr_map, long_listing=parsed_args.long)
return (headers, (osc_utils.get_dict_properties(
s, columns, formatters=self._formatters) for s in objs))
@@ -256,8 +256,7 @@ class ShowBgpvpnResAssoc(command.ShowOne):
transform = getattr(self, '_transform_resource', None)
if callable(transform):
transform(obj)
columns, display_columns = nc_osc_utils.get_columns(obj,
self._attr_map)
columns, display_columns = column_util.get_columns(obj, self._attr_map)
data = osc_utils.get_dict_properties(obj, columns,
formatters=self._formatters)
return display_columns, data

View File

@@ -14,9 +14,9 @@
# under the License.
#
from osc_lib.utils import columns as column_util
from neutronclient._i18n import _
from neutronclient.osc import utils as nc_osc_utils
from neutronclient.osc.v2.networking_bgpvpn import constants
from neutronclient.osc.v2.networking_bgpvpn.resource_association import\
CreateBgpvpnResAssoc
@@ -34,10 +34,10 @@ class BgpvpnRouterAssoc(object):
_resource_plural = constants.ROUTER_ASSOCS
_attr_map = (
('id', 'ID', nc_osc_utils.LIST_BOTH),
('tenant_id', 'Project', nc_osc_utils.LIST_LONG_ONLY),
('id', 'ID', column_util.LIST_BOTH),
('tenant_id', 'Project', column_util.LIST_LONG_ONLY),
('%s_id' % _assoc_res_name, '%s ID' % _assoc_res_name.capitalize(),
nc_osc_utils.LIST_BOTH),
column_util.LIST_BOTH),
)
_formatters = {}

View File

@@ -19,40 +19,40 @@ import logging
from osc_lib.command import command
from osc_lib import exceptions
from osc_lib import utils
from osc_lib.utils import columns as column_util
from neutronclient._i18n import _
from neutronclient.common import exceptions as nc_exc
from neutronclient.osc import utils as nc_osc_utils
LOG = logging.getLogger(__name__)
resource = 'flow_classifier'
_attr_map = (
('id', 'ID', nc_osc_utils.LIST_BOTH),
('name', 'Name', nc_osc_utils.LIST_BOTH),
('summary', 'Summary', nc_osc_utils.LIST_SHORT_ONLY),
('protocol', 'Protocol', nc_osc_utils.LIST_LONG_ONLY),
('ethertype', 'Ethertype', nc_osc_utils.LIST_LONG_ONLY),
('id', 'ID', column_util.LIST_BOTH),
('name', 'Name', column_util.LIST_BOTH),
('summary', 'Summary', column_util.LIST_SHORT_ONLY),
('protocol', 'Protocol', column_util.LIST_LONG_ONLY),
('ethertype', 'Ethertype', column_util.LIST_LONG_ONLY),
('source_ip_prefix', 'Source IP',
nc_osc_utils.LIST_LONG_ONLY),
column_util.LIST_LONG_ONLY),
('destination_ip_prefix', 'Destination IP',
nc_osc_utils.LIST_LONG_ONLY),
column_util.LIST_LONG_ONLY),
('logical_source_port', 'Logical Source Port',
nc_osc_utils.LIST_LONG_ONLY),
column_util.LIST_LONG_ONLY),
('logical_destination_port', 'Logical Destination Port',
nc_osc_utils.LIST_LONG_ONLY),
column_util.LIST_LONG_ONLY),
('source_port_range_min', 'Source Port Range Min',
nc_osc_utils.LIST_LONG_ONLY),
column_util.LIST_LONG_ONLY),
('source_port_range_max', 'Source Port Range Max',
nc_osc_utils.LIST_LONG_ONLY),
column_util.LIST_LONG_ONLY),
('destination_port_range_min', 'Destination Port Range Min',
nc_osc_utils.LIST_LONG_ONLY),
column_util.LIST_LONG_ONLY),
('destination_port_range_max', 'Destination Port Range Max',
nc_osc_utils.LIST_LONG_ONLY),
('l7_parameters', 'L7 Parameters', nc_osc_utils.LIST_LONG_ONLY),
('description', 'Description', nc_osc_utils.LIST_LONG_ONLY),
('project_id', 'Project', nc_osc_utils.LIST_LONG_ONLY),
column_util.LIST_LONG_ONLY),
('l7_parameters', 'L7 Parameters', column_util.LIST_LONG_ONLY),
('description', 'Description', column_util.LIST_LONG_ONLY),
('project_id', 'Project', column_util.LIST_LONG_ONLY),
)
@@ -118,7 +118,7 @@ class CreateSfcFlowClassifier(command.ShowOne):
attrs = _get_common_attrs(self.app.client_manager, parsed_args)
body = {resource: attrs}
obj = client.create_sfc_flow_classifier(body)[resource]
columns, display_columns = nc_osc_utils.get_columns(obj, _attr_map)
columns, display_columns = column_util.get_columns(obj, _attr_map)
data = utils.get_dict_properties(obj, columns)
return display_columns, data
@@ -200,7 +200,7 @@ class ListSfcFlowClassifier(command.Lister):
client = self.app.client_manager.neutronclient
obj = client.list_sfc_flow_classifiers()
obj_extend = self.extend_list(obj, parsed_args)
headers, columns = nc_osc_utils.get_column_definitions(
headers, columns = column_util.get_column_definitions(
_attr_map, long_listing=parsed_args.long)
return (headers, (utils.get_dict_properties(
s, columns) for s in obj_extend))
@@ -256,7 +256,7 @@ class ShowSfcFlowClassifier(command.ShowOne):
client = self.app.client_manager.neutronclient
fc_id = _get_id(client, parsed_args.flow_classifier, resource)
obj = client.show_sfc_flow_classifier(fc_id)[resource]
columns, display_columns = nc_osc_utils.get_columns(obj, _attr_map)
columns, display_columns = column_util.get_columns(obj, _attr_map)
data = utils.get_dict_properties(obj, columns)
return display_columns, data

View File

@@ -19,25 +19,25 @@ from osc_lib.cli import parseractions
from osc_lib.command import command
from osc_lib import exceptions
from osc_lib import utils
from osc_lib.utils import columns as column_util
from neutronclient._i18n import _
from neutronclient.osc import utils as nc_osc_utils
LOG = logging.getLogger(__name__)
resource = 'port_chain'
_attr_map = (
('id', 'ID', nc_osc_utils.LIST_BOTH),
('name', 'Name', nc_osc_utils.LIST_BOTH),
('port_pair_groups', 'Port Pair Groups', nc_osc_utils.LIST_BOTH),
('id', 'ID', column_util.LIST_BOTH),
('name', 'Name', column_util.LIST_BOTH),
('port_pair_groups', 'Port Pair Groups', column_util.LIST_BOTH),
('flow_classifiers', 'Flow Classifiers',
nc_osc_utils.LIST_BOTH),
column_util.LIST_BOTH),
('chain_parameters', 'Chain Parameters',
nc_osc_utils.LIST_BOTH),
('description', 'Description', nc_osc_utils.LIST_LONG_ONLY),
('chain_id', 'Chain ID', nc_osc_utils.LIST_BOTH),
('project_id', 'Project', nc_osc_utils.LIST_LONG_ONLY),
column_util.LIST_BOTH),
('description', 'Description', column_util.LIST_LONG_ONLY),
('chain_id', 'Chain ID', column_util.LIST_BOTH),
('project_id', 'Project', column_util.LIST_LONG_ONLY),
)
@@ -85,7 +85,7 @@ class CreateSfcPortChain(command.ShowOne):
attrs = _get_common_attrs(self.app.client_manager, parsed_args)
body = {resource: attrs}
obj = client.create_sfc_port_chain(body)[resource]
columns, display_columns = nc_osc_utils.get_columns(obj, _attr_map)
columns, display_columns = column_util.get_columns(obj, _attr_map)
data = utils.get_dict_properties(obj, columns)
return display_columns, data
@@ -131,7 +131,7 @@ class ListSfcPortChain(command.Lister):
def take_action(self, parsed_args):
client = self.app.client_manager.neutronclient
data = client.list_sfc_port_chains()
headers, columns = nc_osc_utils.get_column_definitions(
headers, columns = column_util.get_column_definitions(
_attr_map, long_listing=parsed_args.long)
return (headers,
(utils.get_dict_properties(s, columns)
@@ -254,7 +254,7 @@ class ShowSfcPortChain(command.ShowOne):
client = self.app.client_manager.neutronclient
pc_id = _get_id(client, parsed_args.port_chain, resource)
obj = client.show_sfc_port_chain(pc_id)[resource]
columns, display_columns = nc_osc_utils.get_columns(obj, _attr_map)
columns, display_columns = column_util.get_columns(obj, _attr_map)
data = utils.get_dict_properties(obj, columns)
return display_columns, data

View File

@@ -19,23 +19,23 @@ from osc_lib.cli import parseractions
from osc_lib.command import command
from osc_lib import exceptions
from osc_lib import utils
from osc_lib.utils import columns as column_util
from neutronclient._i18n import _
from neutronclient.osc import utils as nc_osc_utils
LOG = logging.getLogger(__name__)
resource = 'port_pair'
_attr_map = (
('id', 'ID', nc_osc_utils.LIST_BOTH),
('name', 'Name', nc_osc_utils.LIST_BOTH),
('ingress', 'Ingress Logical Port', nc_osc_utils.LIST_BOTH),
('egress', 'Egress Logical Port', nc_osc_utils.LIST_BOTH),
('id', 'ID', column_util.LIST_BOTH),
('name', 'Name', column_util.LIST_BOTH),
('ingress', 'Ingress Logical Port', column_util.LIST_BOTH),
('egress', 'Egress Logical Port', column_util.LIST_BOTH),
('service_function_parameters', 'Service Function Parameters',
nc_osc_utils.LIST_LONG_ONLY),
('description', 'Description', nc_osc_utils.LIST_LONG_ONLY),
('project_id', 'Project', nc_osc_utils.LIST_LONG_ONLY),
column_util.LIST_LONG_ONLY),
('description', 'Description', column_util.LIST_LONG_ONLY),
('project_id', 'Project', column_util.LIST_LONG_ONLY),
)
@@ -80,7 +80,7 @@ class CreateSfcPortPair(command.ShowOne):
attrs = _get_common_attrs(self.app.client_manager, parsed_args)
body = {resource: attrs}
obj = client.create_sfc_port_pair(body)[resource]
columns, display_columns = nc_osc_utils.get_columns(obj, _attr_map)
columns, display_columns = column_util.get_columns(obj, _attr_map)
data = utils.get_dict_properties(obj, columns)
return display_columns, data
@@ -125,7 +125,7 @@ class ListSfcPortPair(command.Lister):
def take_action(self, parsed_args):
client = self.app.client_manager.neutronclient
data = client.list_sfc_port_pairs()
headers, columns = nc_osc_utils.get_column_definitions(
headers, columns = column_util.get_column_definitions(
_attr_map, long_listing=parsed_args.long)
return (headers,
(utils.get_dict_properties(
@@ -183,7 +183,7 @@ class ShowSfcPortPair(command.ShowOne):
client = self.app.client_manager.neutronclient
port_pair_id = _get_id(client, parsed_args.port_pair, resource)
obj = client.show_sfc_port_pair(port_pair_id)[resource]
columns, display_columns = nc_osc_utils.get_columns(obj, _attr_map)
columns, display_columns = column_util.get_columns(obj, _attr_map)
data = utils.get_dict_properties(obj, columns)
return display_columns, data

View File

@@ -19,24 +19,24 @@ from osc_lib.cli import parseractions
from osc_lib.command import command
from osc_lib import exceptions
from osc_lib import utils
from osc_lib.utils import columns as column_util
from neutronclient._i18n import _
from neutronclient.osc import utils as nc_osc_utils
LOG = logging.getLogger(__name__)
resource = 'port_pair_group'
_attr_map = (
('id', 'ID', nc_osc_utils.LIST_BOTH),
('name', 'Name', nc_osc_utils.LIST_BOTH),
('port_pairs', 'Port Pair', nc_osc_utils.LIST_BOTH),
('id', 'ID', column_util.LIST_BOTH),
('name', 'Name', column_util.LIST_BOTH),
('port_pairs', 'Port Pair', column_util.LIST_BOTH),
('port_pair_group_parameters', 'Port Pair Group Parameters',
nc_osc_utils.LIST_BOTH),
('description', 'Description', nc_osc_utils.LIST_LONG_ONLY),
('group_id', 'Loadbalance ID', nc_osc_utils.LIST_LONG_ONLY),
('project_id', 'Project', nc_osc_utils.LIST_LONG_ONLY),
('tap_enabled', 'Tap Enabled', nc_osc_utils.LIST_BOTH)
column_util.LIST_BOTH),
('description', 'Description', column_util.LIST_LONG_ONLY),
('group_id', 'Loadbalance ID', column_util.LIST_LONG_ONLY),
('project_id', 'Project', column_util.LIST_LONG_ONLY),
('tap_enabled', 'Tap Enabled', column_util.LIST_BOTH)
)
@@ -89,7 +89,7 @@ class CreateSfcPortPairGroup(command.ShowOne):
attrs = _get_common_attrs(self.app.client_manager, parsed_args)
body = {resource: attrs}
obj = client.create_sfc_port_pair_group(body)[resource]
columns, display_columns = nc_osc_utils.get_columns(obj, _attr_map)
columns, display_columns = column_util.get_columns(obj, _attr_map)
data = utils.get_dict_properties(obj, columns)
return display_columns, data
@@ -135,7 +135,7 @@ class ListSfcPortPairGroup(command.Lister):
def take_action(self, parsed_args):
client = self.app.client_manager.neutronclient
data = client.list_sfc_port_pair_groups()
headers, columns = nc_osc_utils.get_column_definitions(
headers, columns = column_util.get_column_definitions(
_attr_map, long_listing=parsed_args.long)
return (headers,
(utils.get_dict_properties(
@@ -217,7 +217,7 @@ class ShowSfcPortPairGroup(command.ShowOne):
client = self.app.client_manager.neutronclient
ppg_id = _get_id(client, parsed_args.port_pair_group, resource)
obj = client.show_sfc_port_pair_group(ppg_id)[resource]
columns, display_columns = nc_osc_utils.get_columns(obj, _attr_map)
columns, display_columns = column_util.get_columns(obj, _attr_map)
data = utils.get_dict_properties(obj, columns)
return display_columns, data

View File

@@ -17,20 +17,20 @@ import logging
from osc_lib.command import command
from osc_lib import exceptions
from osc_lib import utils
from osc_lib.utils import columns as column_util
from neutronclient._i18n import _
from neutronclient.osc import utils as nc_osc_utils
LOG = logging.getLogger(__name__)
resource = 'service_graph'
_attr_map = (
('id', 'ID', nc_osc_utils.LIST_BOTH),
('name', 'Name', nc_osc_utils.LIST_BOTH),
('port_chains', 'Branching Points', nc_osc_utils.LIST_BOTH),
('description', 'Description', nc_osc_utils.LIST_LONG_ONLY),
('project_id', 'Project', nc_osc_utils.LIST_LONG_ONLY),
('id', 'ID', column_util.LIST_BOTH),
('name', 'Name', column_util.LIST_BOTH),
('port_chains', 'Branching Points', column_util.LIST_BOTH),
('description', 'Description', column_util.LIST_LONG_ONLY),
('project_id', 'Project', column_util.LIST_LONG_ONLY),
)
@@ -62,7 +62,7 @@ class CreateSfcServiceGraph(command.ShowOne):
try:
body = {resource: attrs}
obj = client.create_sfc_service_graph(body)[resource]
columns, display_columns = nc_osc_utils.get_columns(obj, _attr_map)
columns, display_columns = column_util.get_columns(obj, _attr_map)
data = utils.get_dict_properties(obj, columns)
return display_columns, data
except Exception as e:
@@ -140,7 +140,7 @@ class ListSfcServiceGraph(command.Lister):
def take_action(self, parsed_args):
client = self.app.client_manager.neutronclient
data = client.list_sfc_service_graphs()
headers, columns = nc_osc_utils.get_column_definitions(
headers, columns = column_util.get_column_definitions(
_attr_map, long_listing=parsed_args.long)
return (headers,
(utils.get_dict_properties(s, columns)
@@ -163,7 +163,7 @@ class ShowSfcServiceGraph(command.ShowOne):
client = self.app.client_manager.neutronclient
sg_id = _get_id(client, parsed_args.service_graph, resource)
obj = client.show_sfc_service_graph(sg_id)[resource]
columns, display_columns = nc_osc_utils.get_columns(obj, _attr_map)
columns, display_columns = column_util.get_columns(obj, _attr_map)
data = utils.get_dict_properties(obj, columns)
return display_columns, data

View File

@@ -17,6 +17,7 @@
from osc_lib.command import command
from osc_lib import exceptions
from osc_lib import utils
from osc_lib.utils import columns as column_util
from oslo_log import log as logging
from neutronclient._i18n import _
@@ -26,12 +27,12 @@ from neutronclient.osc import utils as osc_utils
LOG = logging.getLogger(__name__)
_attr_map = (
('id', 'ID', osc_utils.LIST_BOTH),
('name', 'Name', osc_utils.LIST_BOTH),
('type', 'Type', osc_utils.LIST_BOTH),
('endpoints', 'Endpoints', osc_utils.LIST_BOTH),
('description', 'Description', osc_utils.LIST_LONG_ONLY),
('tenant_id', 'Project', osc_utils.LIST_LONG_ONLY),
('id', 'ID', column_util.LIST_BOTH),
('name', 'Name', column_util.LIST_BOTH),
('type', 'Type', column_util.LIST_BOTH),
('endpoints', 'Endpoints', column_util.LIST_BOTH),
('description', 'Description', column_util.LIST_LONG_ONLY),
('tenant_id', 'Project', column_util.LIST_LONG_ONLY),
)
@@ -98,7 +99,7 @@ class CreateEndpointGroup(command.ShowOne):
attrs['endpoints'] = parsed_args.endpoints
obj = client.create_endpoint_group(
{'endpoint_group': attrs})['endpoint_group']
columns, display_columns = osc_utils.get_columns(obj, _attr_map)
columns, display_columns = column_util.get_columns(obj, _attr_map)
data = utils.get_dict_properties(obj, columns)
return display_columns, data
@@ -154,7 +155,7 @@ class ListEndpointGroup(command.Lister):
def take_action(self, parsed_args):
client = self.app.client_manager.neutronclient
obj = client.list_endpoint_groups()['endpoint_groups']
headers, columns = osc_utils.get_column_definitions(
headers, columns = column_util.get_column_definitions(
_attr_map, long_listing=parsed_args.long)
return (headers, (utils.get_dict_properties(s, columns) for s in obj))
@@ -211,6 +212,6 @@ class ShowEndpointGroup(command.ShowOne):
'endpoint_group', parsed_args.endpoint_group,
cmd_resource='endpoint_group')['id']
obj = client.show_endpoint_group(endpoint_id)['endpoint_group']
columns, display_columns = osc_utils.get_columns(obj, _attr_map)
columns, display_columns = column_util.get_columns(obj, _attr_map)
data = utils.get_dict_properties(obj, columns)
return (display_columns, data)

View File

@@ -17,6 +17,7 @@
from osc_lib.command import command
from osc_lib import exceptions
from osc_lib import utils
from osc_lib.utils import columns as column_util
from oslo_log import log as logging
from neutronclient._i18n import _
@@ -28,17 +29,17 @@ from neutronclient.osc.v2.vpnaas import utils as vpn_utils
LOG = logging.getLogger(__name__)
_attr_map = (
('id', 'ID', osc_utils.LIST_BOTH),
('name', 'Name', osc_utils.LIST_BOTH),
('auth_algorithm', 'Authentication Algorithm', osc_utils.LIST_BOTH),
('encryption_algorithm', 'Encryption Algorithm', osc_utils.LIST_BOTH),
('ike_version', 'IKE Version', osc_utils.LIST_BOTH),
('pfs', 'Perfect Forward Secrecy (PFS)', osc_utils.LIST_BOTH),
('description', 'Description', osc_utils.LIST_LONG_ONLY),
('id', 'ID', column_util.LIST_BOTH),
('name', 'Name', column_util.LIST_BOTH),
('auth_algorithm', 'Authentication Algorithm', column_util.LIST_BOTH),
('encryption_algorithm', 'Encryption Algorithm', column_util.LIST_BOTH),
('ike_version', 'IKE Version', column_util.LIST_BOTH),
('pfs', 'Perfect Forward Secrecy (PFS)', column_util.LIST_BOTH),
('description', 'Description', column_util.LIST_LONG_ONLY),
('phase1_negotiation_mode', 'Phase1 Negotiation Mode',
osc_utils.LIST_LONG_ONLY),
('tenant_id', 'Project', osc_utils.LIST_LONG_ONLY),
('lifetime', 'Lifetime', osc_utils.LIST_LONG_ONLY),
column_util.LIST_LONG_ONLY),
('tenant_id', 'Project', column_util.LIST_LONG_ONLY),
('lifetime', 'Lifetime', column_util.LIST_LONG_ONLY),
)
@@ -130,7 +131,7 @@ class CreateIKEPolicy(command.ShowOne):
if parsed_args.name:
attrs['name'] = str(parsed_args.name)
obj = client.create_ikepolicy({'ikepolicy': attrs})['ikepolicy']
columns, display_columns = osc_utils.get_columns(obj, _attr_map)
columns, display_columns = column_util.get_columns(obj, _attr_map)
data = utils.get_dict_properties(obj, columns)
return display_columns, data
@@ -183,7 +184,7 @@ class ListIKEPolicy(command.Lister):
def take_action(self, parsed_args):
client = self.app.client_manager.neutronclient
obj = client.list_ikepolicies()['ikepolicies']
headers, columns = osc_utils.get_column_definitions(
headers, columns = column_util.get_column_definitions(
_attr_map, long_listing=parsed_args.long)
return (headers, (utils.get_dict_properties(s, columns) for s in obj))
@@ -238,6 +239,6 @@ class ShowIKEPolicy(command.ShowOne):
'ikepolicy', parsed_args.ikepolicy,
cmd_resource='ikepolicy')['id']
obj = client.show_ikepolicy(ike_id)['ikepolicy']
columns, display_columns = osc_utils.get_columns(obj, _attr_map)
columns, display_columns = column_util.get_columns(obj, _attr_map)
data = utils.get_dict_properties(obj, columns)
return (display_columns, data)

View File

@@ -18,6 +18,7 @@ from osc_lib.cli import format_columns
from osc_lib.command import command
from osc_lib import exceptions
from osc_lib import utils
from osc_lib.utils import columns as column_util
from oslo_log import log as logging
from neutronclient._i18n import _
@@ -35,26 +36,27 @@ _formatters = {
_attr_map = (
('id', 'ID', osc_utils.LIST_BOTH),
('name', 'Name', osc_utils.LIST_BOTH),
('peer_address', 'Peer Address', osc_utils.LIST_BOTH),
('auth_mode', 'Authentication Algorithm', osc_utils.LIST_BOTH),
('status', 'Status', osc_utils.LIST_BOTH),
('tenant_id', 'Project', osc_utils.LIST_LONG_ONLY),
('peer_cidrs', 'Peer CIDRs', osc_utils.LIST_LONG_ONLY),
('vpnservice_id', 'VPN Service', osc_utils.LIST_LONG_ONLY),
('ipsecpolicy_id', 'IPSec Policy', osc_utils.LIST_LONG_ONLY),
('ikepolicy_id', 'IKE Policy', osc_utils.LIST_LONG_ONLY),
('mtu', 'MTU', osc_utils.LIST_LONG_ONLY),
('initiator', 'Initiator', osc_utils.LIST_LONG_ONLY),
('admin_state_up', 'State', osc_utils.LIST_LONG_ONLY),
('description', 'Description', osc_utils.LIST_LONG_ONLY),
('psk', 'Pre-shared Key', osc_utils.LIST_LONG_ONLY),
('route_mode', 'Route Mode', osc_utils.LIST_LONG_ONLY),
('local_id', 'Local ID', osc_utils.LIST_LONG_ONLY),
('peer_id', 'Peer ID', osc_utils.LIST_LONG_ONLY),
('local_ep_group_id', 'Local Endpoint Group ID', osc_utils.LIST_LONG_ONLY),
('peer_ep_group_id', 'Peer Endpoint Group ID', osc_utils.LIST_LONG_ONLY),
('id', 'ID', column_util.LIST_BOTH),
('name', 'Name', column_util.LIST_BOTH),
('peer_address', 'Peer Address', column_util.LIST_BOTH),
('auth_mode', 'Authentication Algorithm', column_util.LIST_BOTH),
('status', 'Status', column_util.LIST_BOTH),
('tenant_id', 'Project', column_util.LIST_LONG_ONLY),
('peer_cidrs', 'Peer CIDRs', column_util.LIST_LONG_ONLY),
('vpnservice_id', 'VPN Service', column_util.LIST_LONG_ONLY),
('ipsecpolicy_id', 'IPSec Policy', column_util.LIST_LONG_ONLY),
('ikepolicy_id', 'IKE Policy', column_util.LIST_LONG_ONLY),
('mtu', 'MTU', column_util.LIST_LONG_ONLY),
('initiator', 'Initiator', column_util.LIST_LONG_ONLY),
('admin_state_up', 'State', column_util.LIST_LONG_ONLY),
('description', 'Description', column_util.LIST_LONG_ONLY),
('psk', 'Pre-shared Key', column_util.LIST_LONG_ONLY),
('route_mode', 'Route Mode', column_util.LIST_LONG_ONLY),
('local_id', 'Local ID', column_util.LIST_LONG_ONLY),
('peer_id', 'Peer ID', column_util.LIST_LONG_ONLY),
('local_ep_group_id', 'Local Endpoint Group ID',
column_util.LIST_LONG_ONLY),
('peer_ep_group_id', 'Peer Endpoint Group ID', column_util.LIST_LONG_ONLY),
)
@@ -239,7 +241,7 @@ class CreateIPsecSiteConnection(command.ShowOne):
raise exceptions.CommandError(message)
obj = client.create_ipsec_site_connection(
{'ipsec_site_connection': attrs})['ipsec_site_connection']
columns, display_columns = osc_utils.get_columns(obj, _attr_map)
columns, display_columns = column_util.get_columns(obj, _attr_map)
data = utils.get_dict_properties(obj, columns, formatters=_formatters)
return display_columns, data
@@ -296,7 +298,7 @@ class ListIPsecSiteConnection(command.Lister):
def take_action(self, parsed_args):
client = self.app.client_manager.neutronclient
obj = client.list_ipsec_site_connections()['ipsec_site_connections']
headers, columns = osc_utils.get_column_definitions(
headers, columns = column_util.get_column_definitions(
_attr_map, long_listing=parsed_args.long)
return (headers, (utils.get_dict_properties(
s, columns, formatters=_formatters) for s in obj))
@@ -367,6 +369,6 @@ class ShowIPsecSiteConnection(command.ShowOne):
cmd_resource='ipsec_site_connection')['id']
obj = client.show_ipsec_site_connection(
ipsec_site_id)['ipsec_site_connection']
columns, display_columns = osc_utils.get_columns(obj, _attr_map)
columns, display_columns = column_util.get_columns(obj, _attr_map)
data = utils.get_dict_properties(obj, columns, formatters=_formatters)
return (display_columns, data)

View File

@@ -17,6 +17,7 @@
from osc_lib.command import command
from osc_lib import exceptions
from osc_lib import utils
from osc_lib.utils import columns as column_util
from oslo_log import log as logging
from neutronclient._i18n import _
@@ -28,16 +29,16 @@ from neutronclient.osc.v2.vpnaas import utils as vpn_utils
LOG = logging.getLogger(__name__)
_attr_map = (
('id', 'ID', osc_utils.LIST_BOTH),
('name', 'Name', osc_utils.LIST_BOTH),
('auth_algorithm', 'Authentication Algorithm', osc_utils.LIST_BOTH),
('encapsulation_mode', 'Encapsulation Mode', osc_utils.LIST_BOTH),
('transform_protocol', 'Transform Protocol', osc_utils.LIST_BOTH),
('encryption_algorithm', 'Encryption Algorithm', osc_utils.LIST_BOTH),
('pfs', 'Perfect Forward Secrecy (PFS)', osc_utils.LIST_LONG_ONLY),
('description', 'Description', osc_utils.LIST_LONG_ONLY),
('tenant_id', 'Project', osc_utils.LIST_LONG_ONLY),
('lifetime', 'Lifetime', osc_utils.LIST_LONG_ONLY),
('id', 'ID', column_util.LIST_BOTH),
('name', 'Name', column_util.LIST_BOTH),
('auth_algorithm', 'Authentication Algorithm', column_util.LIST_BOTH),
('encapsulation_mode', 'Encapsulation Mode', column_util.LIST_BOTH),
('transform_protocol', 'Transform Protocol', column_util.LIST_BOTH),
('encryption_algorithm', 'Encryption Algorithm', column_util.LIST_BOTH),
('pfs', 'Perfect Forward Secrecy (PFS)', column_util.LIST_LONG_ONLY),
('description', 'Description', column_util.LIST_LONG_ONLY),
('tenant_id', 'Project', column_util.LIST_LONG_ONLY),
('lifetime', 'Lifetime', column_util.LIST_LONG_ONLY),
)
@@ -128,7 +129,7 @@ class CreateIPsecPolicy(command.ShowOne):
if parsed_args.name:
attrs['name'] = str(parsed_args.name)
obj = client.create_ipsecpolicy({'ipsecpolicy': attrs})['ipsecpolicy']
columns, display_columns = osc_utils.get_columns(obj, _attr_map)
columns, display_columns = column_util.get_columns(obj, _attr_map)
data = utils.get_dict_properties(obj, columns)
return display_columns, data
@@ -182,7 +183,7 @@ class ListIPsecPolicy(command.Lister):
def take_action(self, parsed_args):
client = self.app.client_manager.neutronclient
obj = client.list_ipsecpolicies()['ipsecpolicies']
headers, columns = osc_utils.get_column_definitions(
headers, columns = column_util.get_column_definitions(
_attr_map, long_listing=parsed_args.long)
return (headers, (utils.get_dict_properties(s, columns) for s in obj))
@@ -237,6 +238,6 @@ class ShowIPsecPolicy(command.ShowOne):
'ipsecpolicy', parsed_args.ipsecpolicy,
cmd_resource='ipsecpolicy')['id']
obj = client.show_ipsecpolicy(ipsec_id)['ipsecpolicy']
columns, display_columns = osc_utils.get_columns(obj, _attr_map)
columns, display_columns = column_util.get_columns(obj, _attr_map)
data = utils.get_dict_properties(obj, columns)
return (display_columns, data)

View File

@@ -17,6 +17,7 @@
from osc_lib.command import command
from osc_lib import exceptions
from osc_lib import utils
from osc_lib.utils import columns as column_util
from oslo_log import log as logging
from neutronclient._i18n import _
@@ -26,15 +27,15 @@ from neutronclient.osc import utils as osc_utils
LOG = logging.getLogger(__name__)
_attr_map = (
('id', 'ID', osc_utils.LIST_BOTH),
('name', 'Name', osc_utils.LIST_BOTH),
('router_id', 'Router', osc_utils.LIST_BOTH),
('subnet_id', 'Subnet', osc_utils.LIST_BOTH),
('flavor_id', 'Flavor', osc_utils.LIST_BOTH),
('admin_state_up', 'State', osc_utils.LIST_BOTH),
('status', 'Status', osc_utils.LIST_BOTH),
('description', 'Description', osc_utils.LIST_LONG_ONLY),
('tenant_id', 'Project', osc_utils.LIST_LONG_ONLY),
('id', 'ID', column_util.LIST_BOTH),
('name', 'Name', column_util.LIST_BOTH),
('router_id', 'Router', column_util.LIST_BOTH),
('subnet_id', 'Subnet', column_util.LIST_BOTH),
('flavor_id', 'Flavor', column_util.LIST_BOTH),
('admin_state_up', 'State', column_util.LIST_BOTH),
('status', 'Status', column_util.LIST_BOTH),
('description', 'Description', column_util.LIST_LONG_ONLY),
('tenant_id', 'Project', column_util.LIST_LONG_ONLY),
)
@@ -121,7 +122,7 @@ class CreateVPNService(command.ShowOne):
parsed_args.router).id
attrs['router_id'] = _router_id
obj = client.create_vpnservice({'vpnservice': attrs})['vpnservice']
columns, display_columns = osc_utils.get_columns(obj, _attr_map)
columns, display_columns = column_util.get_columns(obj, _attr_map)
data = utils.get_dict_properties(obj, columns)
return display_columns, data
@@ -175,7 +176,7 @@ class ListVPNService(command.Lister):
def take_action(self, parsed_args):
client = self.app.client_manager.neutronclient
obj = client.list_vpnservices()['vpnservices']
headers, columns = osc_utils.get_column_definitions(
headers, columns = column_util.get_column_definitions(
_attr_map, long_listing=parsed_args.long)
return (headers, (utils.get_dict_properties(s, columns) for s in obj))
@@ -230,6 +231,6 @@ class ShowVPNService(command.ShowOne):
'vpnservice', parsed_args.vpnservice,
cmd_resource='vpnservice')['id']
obj = client.show_vpnservice(vpn_id)['vpnservice']
columns, display_columns = osc_utils.get_columns(obj, _attr_map)
columns, display_columns = column_util.get_columns(obj, _attr_map)
data = utils.get_dict_properties(obj, columns)
return (display_columns, data)

View File

@@ -1,60 +0,0 @@
# Copyright 2016 NEC Corporation
#
# 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.
import testtools
from neutronclient.osc import utils
class TestUtils(testtools.TestCase):
def test_get_column_definitions(self):
attr_map = (
('id', 'ID', utils.LIST_BOTH),
('tenant_id', 'Project', utils.LIST_LONG_ONLY),
('name', 'Name', utils.LIST_BOTH),
('summary', 'Summary', utils.LIST_SHORT_ONLY),
)
headers, columns = utils.get_column_definitions(attr_map,
long_listing=False)
self.assertEqual(['id', 'name', 'summary'], columns)
self.assertEqual(['ID', 'Name', 'Summary'], headers)
def test_get_column_definitions_long(self):
attr_map = (
('id', 'ID', utils.LIST_BOTH),
('tenant_id', 'Project', utils.LIST_LONG_ONLY),
('name', 'Name', utils.LIST_BOTH),
('summary', 'Summary', utils.LIST_SHORT_ONLY),
)
headers, columns = utils.get_column_definitions(attr_map,
long_listing=True)
self.assertEqual(['id', 'tenant_id', 'name'], columns)
self.assertEqual(['ID', 'Project', 'Name'], headers)
def test_get_columns(self):
item = {
'id': 'test-id',
'tenant_id': 'test-tenant_id',
# 'name' is not included
'foo': 'bar', # unknown attribute
}
attr_map = (
('id', 'ID', utils.LIST_BOTH),
('tenant_id', 'Project', utils.LIST_LONG_ONLY),
('name', 'Name', utils.LIST_BOTH),
)
columns, display_names = utils.get_columns(item, attr_map)
self.assertEqual(tuple(['id', 'tenant_id', 'foo']), columns)
self.assertEqual(tuple(['ID', 'Project', 'foo']), display_names)

View File

@@ -17,6 +17,7 @@
import copy
import mock
from osc_lib.utils import columns as column_util
from neutronclient.osc import utils as nc_osc_utils
from neutronclient.osc.v2.networking_bgpvpn import constants
@@ -106,10 +107,10 @@ class BgpvpnFakeAssoc(object):
_resource_plural = '%ss' % _resource
_attr_map = (
('id', 'ID', nc_osc_utils.LIST_BOTH),
('tenant_id', 'Project', nc_osc_utils.LIST_LONG_ONLY),
('id', 'ID', column_util.LIST_BOTH),
('tenant_id', 'Project', column_util.LIST_LONG_ONLY),
('%s_id' % _assoc_res_name, '%s ID' % _assoc_res_name.capitalize(),
nc_osc_utils.LIST_BOTH),
column_util.LIST_BOTH),
)
_formatters = {}

View File

@@ -20,25 +20,25 @@ import operator
import mock
from osc_lib import exceptions
from osc_lib import utils as osc_utils
from osc_lib.utils import columns as column_util
from neutronclient.osc import utils as nc_osc_utils
from neutronclient.osc.v2.networking_bgpvpn import bgpvpn
from neutronclient.osc.v2.networking_bgpvpn import constants
from neutronclient.tests.unit.osc.v2.networking_bgpvpn import fakes
columns_short = tuple(col for col, _, listing_mode in bgpvpn._attr_map
if listing_mode in (nc_osc_utils.LIST_BOTH,
nc_osc_utils.LIST_SHORT_ONLY))
if listing_mode in (column_util.LIST_BOTH,
column_util.LIST_SHORT_ONLY))
columns_long = tuple(col for col, _, listing_mode in bgpvpn._attr_map
if listing_mode in (nc_osc_utils.LIST_BOTH,
nc_osc_utils.LIST_LONG_ONLY))
if listing_mode in (column_util.LIST_BOTH,
column_util.LIST_LONG_ONLY))
headers_short = tuple(head for _, head, listing_mode in bgpvpn._attr_map
if listing_mode in (nc_osc_utils.LIST_BOTH,
nc_osc_utils.LIST_SHORT_ONLY))
if listing_mode in (column_util.LIST_BOTH,
column_util.LIST_SHORT_ONLY))
headers_long = tuple(head for _, head, listing_mode in bgpvpn._attr_map
if listing_mode in (nc_osc_utils.LIST_BOTH,
nc_osc_utils.LIST_LONG_ONLY))
if listing_mode in (column_util.LIST_BOTH,
column_util.LIST_LONG_ONLY))
sorted_attr_map = sorted(bgpvpn._attr_map, key=operator.itemgetter(1))
sorted_columns = tuple(col for col, _, _ in sorted_attr_map)
sorted_headers = tuple(head for _, head, _ in sorted_attr_map)

View File

@@ -20,27 +20,27 @@ import operator
import mock
from osc_lib import exceptions
from osc_lib import utils as osc_utils
from osc_lib.utils import columns as column_util
from neutronclient.osc import utils as nc_osc_utils
from neutronclient.tests.unit.osc.v2.networking_bgpvpn import fakes
columns_short = tuple(col for col, _, listing_mode
in fakes.BgpvpnFakeAssoc._attr_map
if listing_mode in (nc_osc_utils.LIST_BOTH,
nc_osc_utils.LIST_SHORT_ONLY))
if listing_mode in (column_util.LIST_BOTH,
column_util.LIST_SHORT_ONLY))
columns_long = tuple(col for col, _, listing_mode
in fakes.BgpvpnFakeAssoc._attr_map
if listing_mode in (nc_osc_utils.LIST_BOTH,
nc_osc_utils.LIST_LONG_ONLY))
if listing_mode in (column_util.LIST_BOTH,
column_util.LIST_LONG_ONLY))
headers_short = tuple(head for _, head, listing_mode
in fakes.BgpvpnFakeAssoc._attr_map
if listing_mode in (nc_osc_utils.LIST_BOTH,
nc_osc_utils.LIST_SHORT_ONLY))
if listing_mode in (column_util.LIST_BOTH,
column_util.LIST_SHORT_ONLY))
headers_long = tuple(head for _, head, listing_mode
in fakes.BgpvpnFakeAssoc._attr_map
if listing_mode in (nc_osc_utils.LIST_BOTH,
nc_osc_utils.LIST_LONG_ONLY))
if listing_mode in (column_util.LIST_BOTH,
column_util.LIST_LONG_ONLY))
sorted_attr_map = sorted(fakes.BgpvpnFakeAssoc._attr_map,
key=operator.itemgetter(1))
sorted_columns = tuple(col for col, _, _ in sorted_attr_map)