Merge "Updated from global requirements"
diff --git a/tempest/api/network/test_allowed_address_pair.py b/tempest/api/network/test_allowed_address_pair.py
index c085c39..6a772f1 100644
--- a/tempest/api/network/test_allowed_address_pair.py
+++ b/tempest/api/network/test_allowed_address_pair.py
@@ -13,9 +13,14 @@
# License for the specific language governing permissions and limitations
# under the License.
+import netaddr
+
from tempest.api.network import base
+from tempest import config
from tempest import test
+CONF = config.CONF
+
class AllowedAddressPairTestJSON(base.BaseNetworkTest):
_interface = 'json'
@@ -68,22 +73,50 @@
self._confirm_allowed_address_pair(port[0], self.ip_address)
@test.attr(type='smoke')
- def test_update_port_with_address_pair(self):
+ def _update_port_with_address(self, address, mac_address=None, **kwargs):
# Create a port without allowed address pair
_, body = self.client.create_port(network_id=self.network['id'])
port_id = body['port']['id']
self.addCleanup(self.client.delete_port, port_id)
-
- # Confirm port is created
- _, body = self.client.show_port(port_id)
+ if mac_address is None:
+ mac_address = self.mac_address
# Update allowed address pair attribute of port
- allowed_address_pairs = [{'ip_address': self.ip_address,
- 'mac_address': self.mac_address}]
+ allowed_address_pairs = [{'ip_address': address,
+ 'mac_address': mac_address}]
+ if kwargs:
+ allowed_address_pairs.append(kwargs['allowed_address_pairs'])
_, body = self.client.update_port(
port_id, allowed_address_pairs=allowed_address_pairs)
- newport = body['port']
- self._confirm_allowed_address_pair(newport, self.ip_address)
+ allowed_address_pair = body['port']['allowed_address_pairs']
+ self.assertEqual(allowed_address_pair, allowed_address_pairs)
+
+ @test.attr(type='smoke')
+ def test_update_port_with_address_pair(self):
+ # Update port with allowed address pair
+ self._update_port_with_address(self.ip_address)
+
+ @test.attr(type='smoke')
+ def test_update_port_with_cidr_address_pair(self):
+ # Update allowed address pair with cidr
+ cidr = str(netaddr.IPNetwork(CONF.network.tenant_network_cidr))
+ self._update_port_with_address(cidr)
+
+ @test.attr(type='smoke')
+ def test_update_port_with_multiple_ip_mac_address_pair(self):
+ # Create an ip _address and mac_address through port create
+ _, resp = self.client.create_port(network_id=self.network['id'])
+ newportid = resp['port']['id']
+ self.addCleanup(self.client.delete_port, newportid)
+ ipaddress = resp['port']['fixed_ips'][0]['ip_address']
+ macaddress = resp['port']['mac_address']
+
+ # Update allowed address pair port with multiple ip and mac
+ allowed_address_pairs = {'ip_address': ipaddress,
+ 'mac_address': macaddress}
+ self._update_port_with_address(
+ self.ip_address, self.mac_address,
+ allowed_address_pairs=allowed_address_pairs)
def _confirm_allowed_address_pair(self, port, ip):
msg = 'Port allowed address pairs should not be empty'
diff --git a/tempest/cli/simple_read_only/network/test_neutron.py b/tempest/cli/simple_read_only/network/test_neutron.py
index 2b3920d..6090882 100644
--- a/tempest/cli/simple_read_only/network/test_neutron.py
+++ b/tempest/cli/simple_read_only/network/test_neutron.py
@@ -162,6 +162,42 @@
'allocation_pools'])
@test.attr(type='smoke')
+ @test.requires_ext(extension='vpnaas', service='network')
+ def test_neutron_vpn_ikepolicy_list(self):
+ ikepolicy = self.parser.listing(self.neutron('vpn-ikepolicy-list'))
+ self.assertTableStruct(ikepolicy, ['id', 'name',
+ 'auth_algorithm',
+ 'encryption_algorithm',
+ 'ike_version', 'pfs'])
+
+ @test.attr(type='smoke')
+ @test.requires_ext(extension='vpnaas', service='network')
+ def test_neutron_vpn_ipsecpolicy_list(self):
+ ipsecpolicy = self.parser.listing(self.neutron('vpn-ipsecpolicy-list'))
+ self.assertTableStruct(ipsecpolicy, ['id', 'name',
+ 'auth_algorithm',
+ 'encryption_algorithm',
+ 'pfs'])
+
+ @test.attr(type='smoke')
+ @test.requires_ext(extension='vpnaas', service='network')
+ def test_neutron_vpn_service_list(self):
+ vpn_list = self.parser.listing(self.neutron('vpn-service-list'))
+ self.assertTableStruct(vpn_list, ['id', 'name',
+ 'router_id', 'status'])
+
+ @test.attr(type='smoke')
+ @test.requires_ext(extension='vpnaas', service='network')
+ def test_neutron_ipsec_site_connection_list(self):
+ ipsec_site = self.parser.listing(self.neutron
+ ('ipsec-site-connection-list'))
+ self.assertTableStruct(ipsec_site, ['id', 'name',
+ 'peer_address',
+ 'peer_cidrs',
+ 'route_mode',
+ 'auth_mode', 'status'])
+
+ @test.attr(type='smoke')
def test_neutron_help(self):
help_text = self.neutron('help')
lines = help_text.split('\n')
diff --git a/tempest/clients.py b/tempest/clients.py
index 4269812..328ad08 100644
--- a/tempest/clients.py
+++ b/tempest/clients.py
@@ -230,22 +230,9 @@
# super cares for credentials validation
super(Manager, self).__init__(credentials=credentials)
+ self._set_compute_clients(self.interface)
+
if self.interface == 'xml':
- self.certificates_client = CertificatesClientXML(
- self.auth_provider)
- self.servers_client = ServersClientXML(self.auth_provider)
- self.limits_client = LimitsClientXML(self.auth_provider)
- self.images_client = ImagesClientXML(self.auth_provider)
- self.keypairs_client = KeyPairsClientXML(self.auth_provider)
- self.quotas_client = QuotasClientXML(self.auth_provider)
- self.quota_classes_client = QuotaClassesClientXML(
- self.auth_provider)
- self.flavors_client = FlavorsClientXML(self.auth_provider)
- self.extensions_client = ExtensionsClientXML(self.auth_provider)
- self.volumes_extensions_client = VolumesExtensionsClientXML(
- self.auth_provider)
- self.floating_ips_client = FloatingIPsClientXML(
- self.auth_provider)
self.backups_client = BackupsClientXML(self.auth_provider)
self.snapshots_client = SnapshotsClientXML(self.auth_provider)
self.snapshots_v2_client = SnapshotsV2ClientXML(self.auth_provider)
@@ -256,29 +243,15 @@
self.identity_client = IdentityClientXML(self.auth_provider)
self.identity_v3_client = IdentityV3ClientXML(
self.auth_provider)
- self.security_groups_client = SecurityGroupsClientXML(
- self.auth_provider)
- self.interfaces_client = InterfacesClientXML(self.auth_provider)
self.endpoints_client = EndPointClientXML(self.auth_provider)
- self.fixed_ips_client = FixedIPsClientXML(self.auth_provider)
- self.availability_zone_client = AvailabilityZoneClientXML(
- self.auth_provider)
self.service_client = ServiceClientXML(self.auth_provider)
self.volume_services_client = VolumesServicesClientXML(
self.auth_provider)
- self.aggregates_client = AggregatesClientXML(self.auth_provider)
- self.services_client = ServicesClientXML(self.auth_provider)
- self.tenant_usages_client = TenantUsagesClientXML(
- self.auth_provider)
self.policy_client = PolicyClientXML(self.auth_provider)
self.region_client = RegionClientXML(self.auth_provider)
- self.hosts_client = HostsClientXML(self.auth_provider)
- self.hypervisor_client = HypervisorClientXML(self.auth_provider)
self.network_client = NetworkClientXML(self.auth_provider)
self.credentials_client = CredentialsClientXML(
self.auth_provider)
- self.instance_usages_audit_log_client = \
- InstanceUsagesAuditLogClientXML(self.auth_provider)
self.volume_hosts_client = VolumeHostsClientXML(
self.auth_provider)
self.volume_quotas_client = VolumeQuotasClientXML(
@@ -299,32 +272,7 @@
VolumeV2AvailabilityZoneClientXML(self.auth_provider)
elif self.interface == 'json':
- self.certificates_client = CertificatesClientJSON(
- self.auth_provider)
- self.certificates_v3_client = CertificatesV3ClientJSON(
- self.auth_provider)
self.baremetal_client = BaremetalClientJSON(self.auth_provider)
- self.servers_client = ServersClientJSON(self.auth_provider)
- self.servers_v3_client = ServersV3ClientJSON(self.auth_provider)
- self.limits_client = LimitsClientJSON(self.auth_provider)
- self.images_client = ImagesClientJSON(self.auth_provider)
- self.keypairs_client = KeyPairsClientJSON(self.auth_provider)
- self.keypairs_v3_client = KeyPairsV3ClientJSON(
- self.auth_provider)
- self.quotas_client = QuotasClientJSON(self.auth_provider)
- self.quota_classes_client = QuotaClassesClientJSON(
- self.auth_provider)
- self.quotas_v3_client = QuotasV3ClientJSON(self.auth_provider)
- self.flavors_client = FlavorsClientJSON(self.auth_provider)
- self.flavors_v3_client = FlavorsV3ClientJSON(self.auth_provider)
- self.extensions_v3_client = ExtensionsV3ClientJSON(
- self.auth_provider)
- self.extensions_client = ExtensionsClientJSON(
- self.auth_provider)
- self.volumes_extensions_client = VolumesExtensionsClientJSON(
- self.auth_provider)
- self.floating_ips_client = FloatingIPsClientJSON(
- self.auth_provider)
self.backups_client = BackupsClientJSON(self.auth_provider)
self.snapshots_client = SnapshotsClientJSON(self.auth_provider)
self.snapshots_v2_client = SnapshotsV2ClientJSON(
@@ -338,46 +286,15 @@
self.identity_client = IdentityClientJSON(self.auth_provider)
self.identity_v3_client = IdentityV3ClientJSON(
self.auth_provider)
- self.security_groups_client = SecurityGroupsClientJSON(
- self.auth_provider)
- self.interfaces_v3_client = InterfacesV3ClientJSON(
- self.auth_provider)
- self.interfaces_client = InterfacesClientJSON(
- self.auth_provider)
self.endpoints_client = EndPointClientJSON(self.auth_provider)
- self.fixed_ips_client = FixedIPsClientJSON(self.auth_provider)
- self.availability_zone_v3_client = AvailabilityZoneV3ClientJSON(
- self.auth_provider)
- self.availability_zone_client = AvailabilityZoneClientJSON(
- self.auth_provider)
- self.services_v3_client = ServicesV3ClientJSON(
- self.auth_provider)
self.service_client = ServiceClientJSON(self.auth_provider)
self.volume_services_client = VolumesServicesClientJSON(
self.auth_provider)
- self.agents_v3_client = AgentsV3ClientJSON(self.auth_provider)
- self.aggregates_v3_client = AggregatesV3ClientJSON(
- self.auth_provider)
- self.aggregates_client = AggregatesClientJSON(
- self.auth_provider)
- self.services_client = ServicesClientJSON(self.auth_provider)
- self.tenant_usages_client = TenantUsagesClientJSON(
- self.auth_provider)
- self.version_v3_client = VersionV3ClientJSON(self.auth_provider)
- self.migrations_v3_client = MigrationsV3ClientJSON(
- self.auth_provider)
self.policy_client = PolicyClientJSON(self.auth_provider)
self.region_client = RegionClientJSON(self.auth_provider)
- self.hosts_client = HostsClientJSON(self.auth_provider)
- self.hypervisor_v3_client = HypervisorV3ClientJSON(
- self.auth_provider)
- self.hypervisor_client = HypervisorClientJSON(
- self.auth_provider)
self.network_client = NetworkClientJSON(self.auth_provider)
self.credentials_client = CredentialsClientJSON(
self.auth_provider)
- self.instance_usages_audit_log_client = \
- InstanceUsagesAuditLogClientJSON(self.auth_provider)
self.volume_hosts_client = VolumeHostsClientJSON(
self.auth_provider)
self.volume_quotas_client = VolumeQuotasClientJSON(
@@ -386,7 +303,7 @@
self.auth_provider)
self.volumes_v2_extension_client = VolumeV2ExtensionClientJSON(
self.auth_provider)
- self.hosts_v3_client = HostsV3ClientJSON(self.auth_provider)
+
self.database_flavors_client = DatabaseFlavorsClientJSON(
self.auth_provider)
self.database_versions_client = DatabaseVersionsClientJSON(
@@ -446,6 +363,83 @@
self.volume_qos_v2_client = QosSpecsV2ClientJSON(
self.auth_provider)
+ def _set_compute_clients(self, type):
+ if type == 'json':
+ self._set_compute_json_clients()
+ else:
+ self._set_compute_xml_clients()
+
+ def _set_compute_xml_clients(self):
+ self.certificates_client = CertificatesClientXML(self.auth_provider)
+ self.servers_client = ServersClientXML(self.auth_provider)
+ self.limits_client = LimitsClientXML(self.auth_provider)
+ self.images_client = ImagesClientXML(self.auth_provider)
+ self.keypairs_client = KeyPairsClientXML(self.auth_provider)
+ self.quotas_client = QuotasClientXML(self.auth_provider)
+ self.quota_classes_client = QuotaClassesClientXML(self.auth_provider)
+ self.flavors_client = FlavorsClientXML(self.auth_provider)
+ self.extensions_client = ExtensionsClientXML(self.auth_provider)
+ self.volumes_extensions_client = VolumesExtensionsClientXML(
+ self.auth_provider)
+ self.floating_ips_client = FloatingIPsClientXML(self.auth_provider)
+ self.security_groups_client = SecurityGroupsClientXML(
+ self.auth_provider)
+ self.interfaces_client = InterfacesClientXML(self.auth_provider)
+ self.fixed_ips_client = FixedIPsClientXML(self.auth_provider)
+ self.availability_zone_client = AvailabilityZoneClientXML(
+ self.auth_provider)
+ self.aggregates_client = AggregatesClientXML(self.auth_provider)
+ self.services_client = ServicesClientXML(self.auth_provider)
+ self.tenant_usages_client = TenantUsagesClientXML(self.auth_provider)
+ self.hosts_client = HostsClientXML(self.auth_provider)
+ self.hypervisor_client = HypervisorClientXML(self.auth_provider)
+ self.instance_usages_audit_log_client = \
+ InstanceUsagesAuditLogClientXML(self.auth_provider)
+
+ def _set_compute_json_clients(self):
+ self.certificates_client = CertificatesClientJSON(self.auth_provider)
+ self.certificates_v3_client = CertificatesV3ClientJSON(
+ self.auth_provider)
+ self.servers_client = ServersClientJSON(self.auth_provider)
+ self.servers_v3_client = ServersV3ClientJSON(self.auth_provider)
+ self.limits_client = LimitsClientJSON(self.auth_provider)
+ self.images_client = ImagesClientJSON(self.auth_provider)
+ self.keypairs_client = KeyPairsClientJSON(self.auth_provider)
+ self.keypairs_v3_client = KeyPairsV3ClientJSON(self.auth_provider)
+ self.quotas_client = QuotasClientJSON(self.auth_provider)
+ self.quota_classes_client = QuotaClassesClientJSON(self.auth_provider)
+ self.quotas_v3_client = QuotasV3ClientJSON(self.auth_provider)
+ self.flavors_client = FlavorsClientJSON(self.auth_provider)
+ self.flavors_v3_client = FlavorsV3ClientJSON(self.auth_provider)
+ self.extensions_client = ExtensionsClientJSON(self.auth_provider)
+ self.extensions_v3_client = ExtensionsV3ClientJSON(self.auth_provider)
+ self.volumes_extensions_client = VolumesExtensionsClientJSON(
+ self.auth_provider)
+ self.floating_ips_client = FloatingIPsClientJSON(self.auth_provider)
+ self.security_groups_client = SecurityGroupsClientJSON(
+ self.auth_provider)
+ self.interfaces_client = InterfacesClientJSON(self.auth_provider)
+ self.interfaces_v3_client = InterfacesV3ClientJSON(self.auth_provider)
+ self.fixed_ips_client = FixedIPsClientJSON(self.auth_provider)
+ self.availability_zone_client = AvailabilityZoneClientJSON(
+ self.auth_provider)
+ self.availability_zone_v3_client = AvailabilityZoneV3ClientJSON(
+ self.auth_provider)
+ self.services_v3_client = ServicesV3ClientJSON(self.auth_provider)
+ self.agents_v3_client = AgentsV3ClientJSON(self.auth_provider)
+ self.aggregates_client = AggregatesClientJSON(self.auth_provider)
+ self.aggregates_v3_client = AggregatesV3ClientJSON(self.auth_provider)
+ self.services_client = ServicesClientJSON(self.auth_provider)
+ self.tenant_usages_client = TenantUsagesClientJSON(self.auth_provider)
+ self.version_v3_client = VersionV3ClientJSON(self.auth_provider)
+ self.migrations_v3_client = MigrationsV3ClientJSON(self.auth_provider)
+ self.hosts_client = HostsClientJSON(self.auth_provider)
+ self.hosts_v3_client = HostsV3ClientJSON(self.auth_provider)
+ self.hypervisor_client = HypervisorClientJSON(self.auth_provider)
+ self.hypervisor_v3_client = HypervisorV3ClientJSON(self.auth_provider)
+ self.instance_usages_audit_log_client = \
+ InstanceUsagesAuditLogClientJSON(self.auth_provider)
+
class AdminManager(Manager):