From c772a1dbc7ace58d099570d41a889adf851c8ba8 Mon Sep 17 00:00:00 2001 From: Ulas Kozat Date: Mon, 28 Dec 2015 16:05:13 -0800 Subject: Added networking-sfc from openstack project with merge date Dec 23 2015 Added patch 13 for subject "add missing db migration files" Change-Id: Id51a160335a14870c1dd816a44baf9b1958b9ac6 --- networking_sfc/cli/port_pair.py | 124 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 124 insertions(+) create mode 100644 networking_sfc/cli/port_pair.py (limited to 'networking_sfc/cli/port_pair.py') diff --git a/networking_sfc/cli/port_pair.py b/networking_sfc/cli/port_pair.py new file mode 100644 index 0000000..d934b02 --- /dev/null +++ b/networking_sfc/cli/port_pair.py @@ -0,0 +1,124 @@ +# Copyright (c) 2015 Huawei Technologies India Pvt.Limited. +# All Rights Reserved. +# +# 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 neutronclient.common import extension +from neutronclient.common import utils +from neutronclient.i18n import _ +from neutronclient.neutron import v2_0 as neutronv20 + +PORT_RESOURCE = 'port' +PORT_PAIR_RESOURCE = 'port_pair' + + +def get_port_id(client, id_or_name): + return neutronv20.find_resourceid_by_name_or_id(client, + PORT_RESOURCE, + id_or_name) + + +def get_port_pair_id(client, id_or_name): + return neutronv20.find_resourceid_by_name_or_id(client, + PORT_PAIR_RESOURCE, + id_or_name) + + +class PortPair(extension.NeutronClientExtension): + resource = PORT_PAIR_RESOURCE + resource_plural = '%ss' % resource + object_path = '/sfc/%s' % resource_plural + resource_path = '/sfc/%s/%%s' % resource_plural + versions = ['2.0'] + + +class PortPairCreate(extension.ClientExtensionCreate, PortPair): + """Create a Port Pair.""" + + shell_command = 'port-pair-create' + + def add_known_arguments(self, parser): + parser.add_argument( + 'name', + metavar='NAME', + help=_('Name of the Port Pair.')) + parser.add_argument( + '--description', + help=_('Description for the Port Pair.')) + parser.add_argument( + '--ingress', + required=True, + help=_('ID or name of the ingress neutron port.')) + parser.add_argument( + '--egress', + required=True, + help=_('ID or name of the egress neutron port.')) + parser.add_argument( + '--service-function-parameters', + metavar='type=TYPE[,correlation=CORRELATION_TYPE]', + type=utils.str2dict, + help=_('Dictionary of Service function parameters. ' + 'Currently, only correlation=None is supported.')) + + def args2body(self, parsed_args): + body = {} + client = self.get_client() + if parsed_args.ingress: + body['ingress'] = get_port_id(client, parsed_args.ingress) + if parsed_args.egress: + body['egress'] = get_port_id(client, parsed_args.egress) + neutronv20.update_dict(parsed_args, body, + ['name', 'description', + 'service_function_parameters']) + return {self.resource: body} + + +class PortPairUpdate(extension.ClientExtensionUpdate, PortPair): + """Update Port Pair's information.""" + + shell_command = 'port-pair-update' + + def add_known_arguments(self, parser): + parser.add_argument( + '--name', + metavar='NAME', + help=_('Name of the Port Pair.')) + parser.add_argument( + '--description', + help=_('Description for the Port Pair.')) + + def args2body(self, parsed_args): + body = {} + neutronv20.update_dict(parsed_args, body, ['name', 'description']) + return {self.resource: body} + + +class PortPairDelete(extension.ClientExtensionDelete, PortPair): + """Delete a given Port Pair.""" + + shell_command = 'port-pair-delete' + + +class PortPairList(extension.ClientExtensionList, PortPair): + """List Port Pairs that belongs to a given tenant.""" + + shell_command = 'port-pair-list' + list_columns = ['id', 'name', 'ingress', 'egress'] + pagination_support = True + sorting_support = True + + +class PortPairShow(extension.ClientExtensionShow, PortPair): + """Show information of a given Port Pair.""" + + shell_command = 'port-pair-show' -- cgit 1.2.3-korg