summaryrefslogtreecommitdiff
path: root/openstackclient/network
diff options
context:
space:
mode:
Diffstat (limited to 'openstackclient/network')
-rw-r--r--openstackclient/network/v2/floating_ip.py16
-rw-r--r--openstackclient/network/v2/network_qos_policy.py29
-rw-r--r--openstackclient/network/v2/network_rbac.py26
-rw-r--r--openstackclient/network/v2/port.py3
-rw-r--r--openstackclient/network/v2/router.py34
-rw-r--r--openstackclient/network/v2/security_group.py21
-rw-r--r--openstackclient/network/v2/security_group_rule.py20
-rw-r--r--openstackclient/network/v2/subnet.py31
8 files changed, 125 insertions, 55 deletions
diff --git a/openstackclient/network/v2/floating_ip.py b/openstackclient/network/v2/floating_ip.py
index c787cd2f..7b8374e2 100644
--- a/openstackclient/network/v2/floating_ip.py
+++ b/openstackclient/network/v2/floating_ip.py
@@ -18,6 +18,7 @@ import logging
from osc_lib import utils
from openstackclient.i18n import _
+from openstackclient.identity import common as identity_common
from openstackclient.network import common
from openstackclient.network import sdk_utils
@@ -66,6 +67,15 @@ def _get_attrs(client_manager, parsed_args):
if parsed_args.description is not None:
attrs['description'] = parsed_args.description
+ if parsed_args.project:
+ identity_client = client_manager.identity
+ project_id = identity_common.find_project(
+ identity_client,
+ parsed_args.project,
+ parsed_args.project_domain,
+ ).id
+ attrs['tenant_id'] = project_id
+
return attrs
@@ -113,6 +123,12 @@ class CreateFloatingIP(common.NetworkAndComputeShowOne):
metavar='<description>',
help=_('Set floating IP description')
)
+ parser.add_argument(
+ '--project',
+ metavar='<project>',
+ help=_("Owner's project (name or ID)")
+ )
+ identity_common.add_project_domain_option_to_parser(parser)
return parser
def take_action_network(self, client, parsed_args):
diff --git a/openstackclient/network/v2/network_qos_policy.py b/openstackclient/network/v2/network_qos_policy.py
index 75cb1d91..5ccbe36b 100644
--- a/openstackclient/network/v2/network_qos_policy.py
+++ b/openstackclient/network/v2/network_qos_policy.py
@@ -21,17 +21,18 @@ from osc_lib import utils
from openstackclient.i18n import _
from openstackclient.identity import common as identity_common
+from openstackclient.network import sdk_utils
LOG = logging.getLogger(__name__)
def _get_columns(item):
- columns = list(item.keys())
- if 'tenant_id' in columns:
- columns.remove('tenant_id')
- columns.append('project_id')
- return tuple(sorted(columns))
+ column_map = {
+ 'is_shared': 'shared',
+ 'tenant_id': 'project_id',
+ }
+ return sdk_utils.get_osc_show_columns_for_sdk_resource(item, column_map)
def _get_attrs(client_manager, parsed_args):
@@ -56,6 +57,8 @@ def _get_attrs(client_manager, parsed_args):
return attrs
+# TODO(abhiraut): Use the SDK resource mapped attribute names once the
+# OSC minimum requirements include SDK 1.0.
class CreateNetworkQosPolicy(command.ShowOne):
_description = _("Create a QoS policy")
@@ -96,9 +99,9 @@ class CreateNetworkQosPolicy(command.ShowOne):
client = self.app.client_manager.network
attrs = _get_attrs(self.app.client_manager, parsed_args)
obj = client.create_qos_policy(**attrs)
- columns = _get_columns(obj)
+ display_columns, columns = _get_columns(obj)
data = utils.get_item_properties(obj, columns, formatters={})
- return columns, data
+ return (display_columns, data)
class DeleteNetworkQosPolicy(command.Command):
@@ -135,6 +138,8 @@ class DeleteNetworkQosPolicy(command.Command):
raise exceptions.CommandError(msg)
+# TODO(abhiraut): Use only the SDK resource mapped attribute names once the
+# OSC minimum requirements include SDK 1.0.
class ListNetworkQosPolicy(command.Lister):
_description = _("List QoS policies")
@@ -143,8 +148,8 @@ class ListNetworkQosPolicy(command.Lister):
columns = (
'id',
'name',
- 'shared',
- 'tenant_id',
+ 'is_shared',
+ 'project_id',
)
column_headers = (
'ID',
@@ -160,6 +165,8 @@ class ListNetworkQosPolicy(command.Lister):
) for s in data))
+# TODO(abhiraut): Use the SDK resource mapped attribute names once the
+# OSC minimum requirements include SDK 1.0.
class SetNetworkQosPolicy(command.Command):
_description = _("Set QoS policy properties")
@@ -226,6 +233,6 @@ class ShowNetworkQosPolicy(command.ShowOne):
client = self.app.client_manager.network
obj = client.find_qos_policy(parsed_args.policy,
ignore_missing=False)
- columns = _get_columns(obj)
+ display_columns, columns = _get_columns(obj)
data = utils.get_item_properties(obj, columns)
- return columns, data
+ return (display_columns, data)
diff --git a/openstackclient/network/v2/network_rbac.py b/openstackclient/network/v2/network_rbac.py
index 2bcdd811..e837af3a 100644
--- a/openstackclient/network/v2/network_rbac.py
+++ b/openstackclient/network/v2/network_rbac.py
@@ -21,20 +21,18 @@ from osc_lib import utils
from openstackclient.i18n import _
from openstackclient.identity import common as identity_common
+from openstackclient.network import sdk_utils
LOG = logging.getLogger(__name__)
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_id')
- return tuple(sorted(columns))
+ column_map = {
+ 'target_tenant': 'target_project_id',
+ 'tenant_id': 'project_id',
+ }
+ return sdk_utils.get_osc_show_columns_for_sdk_resource(item, column_map)
def _get_attrs(client_manager, parsed_args):
@@ -70,6 +68,8 @@ def _get_attrs(client_manager, parsed_args):
return attrs
+# TODO(abhiraut): Use the SDK resource mapped attribute names once the
+# OSC minimum requirements include SDK 1.0.
class CreateNetworkRBAC(command.ShowOne):
_description = _("Create network RBAC policy")
@@ -122,9 +122,9 @@ class CreateNetworkRBAC(command.ShowOne):
client = self.app.client_manager.network
attrs = _get_attrs(self.app.client_manager, parsed_args)
obj = client.create_rbac_policy(**attrs)
- columns = _get_columns(obj)
+ display_columns, columns = _get_columns(obj)
data = utils.get_item_properties(obj, columns)
- return columns, data
+ return display_columns, data
class DeleteNetworkRBAC(command.Command):
@@ -185,6 +185,8 @@ class ListNetworkRBAC(command.Lister):
) for s in data))
+# TODO(abhiraut): Use the SDK resource mapped attribute names once the
+# OSC minimum requirements include SDK 1.0.
class SetNetworkRBAC(command.Command):
_description = _("Set network RBAC policy properties")
@@ -242,6 +244,6 @@ class ShowNetworkRBAC(command.ShowOne):
client = self.app.client_manager.network
obj = client.find_rbac_policy(parsed_args.rbac_policy,
ignore_missing=False)
- columns = _get_columns(obj)
+ display_columns, columns = _get_columns(obj)
data = utils.get_item_properties(obj, columns)
- return columns, data
+ return display_columns, data
diff --git a/openstackclient/network/v2/port.py b/openstackclient/network/v2/port.py
index c960ba25..bce3e2d3 100644
--- a/openstackclient/network/v2/port.py
+++ b/openstackclient/network/v2/port.py
@@ -50,7 +50,8 @@ def _get_columns(item):
columns = list(item.keys())
if 'tenant_id' in columns:
columns.remove('tenant_id')
- columns.append('project_id')
+ if 'project_id' not in columns:
+ columns.append('project_id')
binding_columns = [
'binding:host_id',
'binding:profile',
diff --git a/openstackclient/network/v2/router.py b/openstackclient/network/v2/router.py
index cbd412b5..cdd634d0 100644
--- a/openstackclient/network/v2/router.py
+++ b/openstackclient/network/v2/router.py
@@ -25,6 +25,7 @@ from osc_lib import utils
from openstackclient.i18n import _
from openstackclient.identity import common as identity_common
+from openstackclient.network import sdk_utils
LOG = logging.getLogger(__name__)
@@ -59,11 +60,10 @@ _formatters = {
def _get_columns(item):
- columns = list(item.keys())
- if 'tenant_id' in columns:
- columns.remove('tenant_id')
- columns.append('project_id')
- return tuple(sorted(columns))
+ column_map = {
+ 'tenant_id': 'project_id',
+ }
+ return sdk_utils.get_osc_show_columns_for_sdk_resource(item, column_map)
def _get_attrs(client_manager, parsed_args):
@@ -215,10 +215,10 @@ class CreateRouter(command.ShowOne):
attrs['ha'] = parsed_args.ha
obj = client.create_router(**attrs)
- columns = _get_columns(obj)
+ display_columns, columns = _get_columns(obj)
data = utils.get_item_properties(obj, columns, formatters=_formatters)
- return (columns, data)
+ return (display_columns, data)
class DeleteRouter(command.Command):
@@ -282,11 +282,17 @@ class ListRouter(command.Lister):
default=False,
help=_("List additional fields in output")
)
+ parser.add_argument(
+ '--project',
+ metavar='<project>',
+ help=_("List routers according to their project (name or ID)")
+ )
+ identity_common.add_project_domain_option_to_parser(parser)
return parser
def take_action(self, parsed_args):
+ identity_client = self.app.client_manager.identity
client = self.app.client_manager.network
-
columns = (
'id',
'name',
@@ -316,6 +322,13 @@ class ListRouter(command.Lister):
elif parsed_args.disable:
args['admin_state_up'] = False
+ if parsed_args.project:
+ project_id = identity_common.find_project(
+ identity_client,
+ parsed_args.project,
+ parsed_args.project_domain,
+ ).id
+ args['tenant_id'] = project_id
if parsed_args.long:
columns = columns + (
'routes',
@@ -523,9 +536,10 @@ class ShowRouter(command.ShowOne):
def take_action(self, parsed_args):
client = self.app.client_manager.network
obj = client.find_router(parsed_args.router, ignore_missing=False)
- columns = _get_columns(obj)
+ display_columns, columns = _get_columns(obj)
data = utils.get_item_properties(obj, columns, formatters=_formatters)
- return (columns, data)
+
+ return (display_columns, data)
class UnsetRouter(command.Command):
diff --git a/openstackclient/network/v2/security_group.py b/openstackclient/network/v2/security_group.py
index 554dd61d..5420bc8b 100644
--- a/openstackclient/network/v2/security_group.py
+++ b/openstackclient/network/v2/security_group.py
@@ -81,8 +81,9 @@ def _get_columns(item):
columns.remove('security_group_rules')
property_column_mappings.append(('rules', 'security_group_rules'))
if 'tenant_id' in columns:
- columns.append('project_id')
columns.remove('tenant_id')
+ if 'project_id' not in columns:
+ columns.append('project_id')
property_column_mappings.append(('project_id', 'tenant_id'))
display_columns = sorted(columns)
@@ -201,6 +202,13 @@ class ListSecurityGroup(common.NetworkAndComputeLister):
default=False,
help=argparse.SUPPRESS,
)
+ parser.add_argument(
+ '--project',
+ metavar='<project>',
+ help=_("List security groups according to the project "
+ "(name or ID)")
+ )
+ identity_common.add_project_domain_option_to_parser(parser)
return parser
def update_parser_compute(self, parser):
@@ -228,7 +236,16 @@ class ListSecurityGroup(common.NetworkAndComputeLister):
) for s in data))
def take_action_network(self, client, parsed_args):
- return self._get_return_data(client.security_groups())
+ filters = {}
+ if parsed_args.project:
+ identity_client = self.app.client_manager.identity
+ project_id = identity_common.find_project(
+ identity_client,
+ parsed_args.project,
+ parsed_args.project_domain,
+ ).id
+ filters['tenant_id'] = project_id
+ return self._get_return_data(client.security_groups(**filters))
def take_action_compute(self, client, parsed_args):
search = {'all_tenants': parsed_args.all_projects}
diff --git a/openstackclient/network/v2/security_group_rule.py b/openstackclient/network/v2/security_group_rule.py
index 05fafc0d..b878d875 100644
--- a/openstackclient/network/v2/security_group_rule.py
+++ b/openstackclient/network/v2/security_group_rule.py
@@ -29,6 +29,7 @@ import six
from openstackclient.i18n import _
from openstackclient.identity import common as identity_common
from openstackclient.network import common
+from openstackclient.network import sdk_utils
from openstackclient.network import utils as network_utils
@@ -67,11 +68,10 @@ def _format_network_port_range(rule):
def _get_columns(item):
- columns = list(item.keys())
- if 'tenant_id' in columns:
- columns.remove('tenant_id')
- columns.append('project_id')
- return tuple(sorted(columns))
+ column_map = {
+ 'tenant_id': 'project_id',
+ }
+ return sdk_utils.get_osc_show_columns_for_sdk_resource(item, column_map)
def _convert_to_lowercase(string):
@@ -89,6 +89,8 @@ def _is_icmp_protocol(protocol):
return False
+# TODO(abhiraut): Use the SDK resource mapped attribute names once the
+# OSC minimum requirements include SDK 1.0.
class CreateSecurityGroupRule(common.NetworkAndComputeShowOne):
_description = _("Create a new security group rule")
@@ -341,9 +343,9 @@ class CreateSecurityGroupRule(common.NetworkAndComputeShowOne):
# Create and show the security group rule.
obj = client.create_security_group_rule(**attrs)
- columns = _get_columns(obj)
+ display_columns, columns = _get_columns(obj)
data = utils.get_item_properties(obj, columns)
- return (columns, data)
+ return (display_columns, data)
def take_action_compute(self, client, parsed_args):
group = utils.find_resource(
@@ -597,9 +599,9 @@ class ShowSecurityGroupRule(common.NetworkAndComputeShowOne):
def take_action_network(self, client, parsed_args):
obj = client.find_security_group_rule(parsed_args.rule,
ignore_missing=False)
- columns = _get_columns(obj)
+ display_columns, columns = _get_columns(obj)
data = utils.get_item_properties(obj, columns)
- return (columns, data)
+ return (display_columns, data)
def take_action_compute(self, client, parsed_args):
# NOTE(rtheis): Unfortunately, compute does not have an API
diff --git a/openstackclient/network/v2/subnet.py b/openstackclient/network/v2/subnet.py
index 5366dff6..292b7c06 100644
--- a/openstackclient/network/v2/subnet.py
+++ b/openstackclient/network/v2/subnet.py
@@ -23,6 +23,7 @@ from osc_lib import utils
from openstackclient.i18n import _
from openstackclient.identity import common as identity_common
+from openstackclient.network import sdk_utils
LOG = logging.getLogger(__name__)
@@ -126,11 +127,12 @@ def _get_common_parse_arguments(parser, is_create=True):
def _get_columns(item):
- columns = list(item.keys())
- if 'tenant_id' in columns:
- columns.remove('tenant_id')
- columns.append('project_id')
- return tuple(sorted(columns))
+ column_map = {
+ 'is_dhcp_enabled': 'enable_dhcp',
+ 'subnet_pool_id': 'subnetpool_id',
+ 'tenant_id': 'project_id',
+ }
+ return sdk_utils.get_osc_show_columns_for_sdk_resource(item, column_map)
def convert_entries_to_nexthop(entries):
@@ -226,6 +228,8 @@ def _get_attrs(client_manager, parsed_args, is_create=True):
return attrs
+# TODO(abhiraut): Use the SDK resource mapped attribute names once the
+# OSC minimum requirements include SDK 1.0.
class CreateSubnet(command.ShowOne):
_description = _("Create a subnet")
@@ -332,9 +336,9 @@ class CreateSubnet(command.ShowOne):
client = self.app.client_manager.network
attrs = _get_attrs(self.app.client_manager, parsed_args)
obj = client.create_subnet(**attrs)
- columns = _get_columns(obj)
+ display_columns, columns = _get_columns(obj)
data = utils.get_item_properties(obj, columns, formatters=_formatters)
- return (columns, data)
+ return (display_columns, data)
class DeleteSubnet(command.Command):
@@ -371,6 +375,8 @@ class DeleteSubnet(command.Command):
raise exceptions.CommandError(msg)
+# TODO(abhiraut): Use only the SDK resource mapped attribute names once the
+# OSC minimum requirements include SDK 1.0.
class ListSubnet(command.Lister):
_description = _("List subnets")
@@ -452,8 +458,10 @@ class ListSubnet(command.Lister):
filters['ip_version'] = parsed_args.ip_version
if parsed_args.dhcp:
filters['enable_dhcp'] = True
+ filters['is_dhcp_enabled'] = True
elif parsed_args.no_dhcp:
filters['enable_dhcp'] = False
+ filters['is_dhcp_enabled'] = False
if parsed_args.service_types:
filters['service_types'] = parsed_args.service_types
if parsed_args.project:
@@ -463,6 +471,7 @@ class ListSubnet(command.Lister):
parsed_args.project_domain,
).id
filters['tenant_id'] = project_id
+ filters['project_id'] = project_id
if parsed_args.network:
network_id = network_client.find_network(parsed_args.network,
ignore_missing=False).id
@@ -481,7 +490,7 @@ class ListSubnet(command.Lister):
headers += ('Project', 'DHCP', 'Name Servers',
'Allocation Pools', 'Host Routes', 'IP Version',
'Gateway', 'Service Types')
- columns += ('tenant_id', 'enable_dhcp', 'dns_nameservers',
+ columns += ('project_id', 'is_dhcp_enabled', 'dns_nameservers',
'allocation_pools', 'host_routes', 'ip_version',
'gateway_ip', 'service_types')
@@ -492,6 +501,8 @@ class ListSubnet(command.Lister):
) for s in data))
+# TODO(abhiraut): Use the SDK resource mapped attribute names once the
+# OSC minimum requirements include SDK 1.0.
class SetSubnet(command.Command):
_description = _("Set subnet properties")
@@ -576,9 +587,9 @@ class ShowSubnet(command.ShowOne):
def take_action(self, parsed_args):
obj = self.app.client_manager.network.find_subnet(parsed_args.subnet,
ignore_missing=False)
- columns = _get_columns(obj)
+ display_columns, columns = _get_columns(obj)
data = utils.get_item_properties(obj, columns, formatters=_formatters)
- return (columns, data)
+ return (display_columns, data)
class UnsetSubnet(command.Command):