
This contains the create, delete, update, show, and list client APIs for the new VPN endpoint group API. The API syntax is: vpn-endpoint-group-create [--name name] [--description desc] \ --type {subnet|cidr|vlan} --value <value1> [--value <value2>...] vpn-endpoint-group-delete <name-or-uuid> vpn-endpoint-group-show <name-or-uuid> vpn-endpoint-group-update <name-or-uuid> [--name name] [--description desc] vpn-endpoint-group-list Notes: Using prefix "vpn-" on commands, so that there is no conflict with other neutron commands. Note: Using --type and --value, instead of --endpoint_type and --endpoint, which are already used (and must be globally unique). For example, if latter re used, see error "Must specify new values to update endpoint_group". The --value may be repeated multiple times, as a list of endpoints can be added to a group. There must be at least one. For --type=subnet, the user may enter the name or UUID of subnet, which must already exist. Client will translate names to UUIDs. As shown, the endpoints cannot be modified. A new endpoint group must be formed, and then can be used by VPN (once support is in place). When updating, either name or description must be provided (otherwise there is nothing to update). Added unit tests for the new API. DocImpact Change-Id: Ic696674d97474f8bbf3f895aa21b1585a04dc2fe Partial-Bug: 1459423 Depends-On: Ia729bd0c6967fa2b8c698495aa360f340b42d98a Depends-On: I6e10590a988312eafca076a14be38b19e2d44a87
149 lines
6.0 KiB
Python
149 lines
6.0 KiB
Python
# (c) Copyright 2015 Cisco Systems, Inc.
|
|
# 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.
|
|
#
|
|
|
|
import sys
|
|
|
|
from neutronclient.neutron.v2_0.vpn import endpoint_group
|
|
from neutronclient.tests.unit import test_cli20
|
|
|
|
|
|
class CLITestV20VpnEndpointGroupJSON(test_cli20.CLITestV20Base):
|
|
|
|
def setUp(self):
|
|
super(CLITestV20VpnEndpointGroupJSON, self).setUp()
|
|
self.register_non_admin_status_resource('endpoint_group')
|
|
|
|
def test_create_endpoint_group_with_cidrs(self):
|
|
"""vpn-endpoint-group-create with CIDR endpoints."""
|
|
resource = 'endpoint_group'
|
|
cmd = endpoint_group.CreateEndpointGroup(test_cli20.MyApp(sys.stdout),
|
|
None)
|
|
tenant_id = 'mytenant-id'
|
|
my_id = 'my-id'
|
|
name = 'my-endpoint-group'
|
|
description = 'my endpoint group'
|
|
endpoint_type = 'cidr'
|
|
endpoints = ['10.0.0.0/24', '20.0.0.0/24']
|
|
|
|
args = ['--name', name,
|
|
'--description', description,
|
|
'--tenant-id', tenant_id,
|
|
'--type', endpoint_type,
|
|
'--value', '10.0.0.0/24',
|
|
'--value', '20.0.0.0/24']
|
|
|
|
position_names = ['name', 'description', 'tenant_id',
|
|
'type', 'endpoints']
|
|
|
|
position_values = [name, description, tenant_id,
|
|
endpoint_type, endpoints]
|
|
|
|
self._test_create_resource(resource, cmd, name, my_id, args,
|
|
position_names, position_values)
|
|
|
|
def test_create_endpoint_group_with_subnets(self):
|
|
"""vpn-endpoint-group-create with subnet endpoints."""
|
|
resource = 'endpoint_group'
|
|
cmd = endpoint_group.CreateEndpointGroup(test_cli20.MyApp(sys.stdout),
|
|
None)
|
|
tenant_id = 'mytenant-id'
|
|
my_id = 'my-id'
|
|
endpoint_type = 'subnet'
|
|
subnet = 'subnet-id'
|
|
endpoints = [subnet]
|
|
|
|
args = ['--type', endpoint_type,
|
|
'--value', subnet,
|
|
'--tenant-id', tenant_id]
|
|
|
|
position_names = ['type', 'endpoints', 'tenant_id']
|
|
|
|
position_values = [endpoint_type, endpoints, tenant_id]
|
|
|
|
self._test_create_resource(resource, cmd, None, my_id, args,
|
|
position_names, position_values)
|
|
|
|
def test_list_endpoint_group(self):
|
|
"""vpn-endpoint-group-list."""
|
|
resources = "endpoint_groups"
|
|
cmd = endpoint_group.ListEndpointGroup(test_cli20.MyApp(sys.stdout),
|
|
None)
|
|
self._test_list_resources(resources, cmd, True)
|
|
|
|
def test_list_endpoint_group_pagination(self):
|
|
"""vpn-endpoint-group-list."""
|
|
resources = "endpoint_groups"
|
|
cmd = endpoint_group.ListEndpointGroup(test_cli20.MyApp(sys.stdout),
|
|
None)
|
|
self._test_list_resources_with_pagination(resources, cmd)
|
|
|
|
def test_list_endpoint_group_sort(self):
|
|
"""vpn-endpoint-group-list --sort-key name --sort-key id
|
|
--sort-key asc --sort-key desc
|
|
"""
|
|
resources = "endpoint_groups"
|
|
cmd = endpoint_group.ListEndpointGroup(test_cli20.MyApp(sys.stdout),
|
|
None)
|
|
self._test_list_resources(resources, cmd,
|
|
sort_key=["name", "id"],
|
|
sort_dir=["asc", "desc"])
|
|
|
|
def test_list_endpoint_group_limit(self):
|
|
"""vpn-endpoint-group-list -P."""
|
|
resources = "endpoint_groups"
|
|
cmd = endpoint_group.ListEndpointGroup(test_cli20.MyApp(sys.stdout),
|
|
None)
|
|
self._test_list_resources(resources, cmd, page_size=1000)
|
|
|
|
def test_show_endpoint_group_id(self):
|
|
"""vpn-endpoint-group-show test_id."""
|
|
resource = 'endpoint_group'
|
|
cmd = endpoint_group.ShowEndpointGroup(test_cli20.MyApp(sys.stdout),
|
|
None)
|
|
args = ['--fields', 'id', self.test_id]
|
|
self._test_show_resource(resource, cmd, self.test_id, args, ['id'])
|
|
|
|
def test_show_endpoint_group_id_name(self):
|
|
"""vpn-endpoint-group-show."""
|
|
resource = 'endpoint_group'
|
|
cmd = endpoint_group.ShowEndpointGroup(test_cli20.MyApp(sys.stdout),
|
|
None)
|
|
args = ['--fields', 'id', '--fields', 'name', self.test_id]
|
|
self._test_show_resource(resource, cmd, self.test_id,
|
|
args, ['id', 'name'])
|
|
|
|
def test_update_endpoint_group(self):
|
|
"""vpn-endpoint-group-update myid --name newname
|
|
--description newdesc.
|
|
"""
|
|
resource = 'endpoint_group'
|
|
cmd = endpoint_group.UpdateEndpointGroup(test_cli20.MyApp(sys.stdout),
|
|
None)
|
|
self._test_update_resource(resource, cmd, 'myid',
|
|
['myid', '--name', 'newname',
|
|
'--description', 'newdesc'],
|
|
{'name': 'newname',
|
|
'description': 'newdesc'})
|
|
|
|
def test_delete_endpoint_group(self):
|
|
"""vpn-endpoint-group-delete my-id."""
|
|
resource = 'endpoint_group'
|
|
cmd = endpoint_group.DeleteEndpointGroup(test_cli20.MyApp(sys.stdout),
|
|
None)
|
|
my_id = 'my-id'
|
|
args = [my_id]
|
|
self._test_delete_resource(resource, cmd, my_id, args)
|