Ejemplo n.º 1
0
 def _create_setup(self):
     self.admin_client = self.os_admin.network_client
     net_kwargs = {'tenant_id': self.client.tenant_id}
     for sub, net_type in (('10.100.0.0/16', 'vxlan'), ('10.200.0.0/16',
                                                        'gre')):
         net_kwargs['name'] = '-'.join([net_type, 'net'])
         net_kwargs['provider:network_type'] = net_type
         network = self.admin_client.create_network(**net_kwargs)['network']
         self.networks.append(network)
         self.addCleanup(self.admin_client.delete_network, network['id'])
         cidr = netaddr.IPNetwork(sub)
         subnet = self.create_subnet(network, cidr=cidr)
         self.create_router_interface(self.router['id'], subnet['id'])
         self.addCleanup(self.client.remove_router_interface_with_subnet_id,
                         self.router['id'], subnet['id'])
     # check that MTUs are different for 2 networks
     self.assertNotEqual(self.networks[0]['mtu'], self.networks[1]['mtu'])
     self.networks.sort(key=lambda net: net['mtu'])
     server1, fip1 = self.create_pingable_vm(self.networks[0])
     server_ssh_client1 = ssh.Client(
         self.floating_ips[0]['floating_ip_address'],
         CONF.validation.image_ssh_user,
         pkey=self.keypair['private_key'])
     server2, fip2 = self.create_pingable_vm(self.networks[1])
     server_ssh_client2 = ssh.Client(
         self.floating_ips[0]['floating_ip_address'],
         CONF.validation.image_ssh_user,
         pkey=self.keypair['private_key'])
     for fip in (fip1, fip2):
         self.check_connectivity(fip['floating_ip_address'],
                                 CONF.validation.image_ssh_user,
                                 self.keypair['private_key'])
     return server_ssh_client1, fip1, server_ssh_client2, fip2
Ejemplo n.º 2
0
    def _create_server_with_port_and_subport(self, vlan_network, vlan_tag):
        parent_port = self.create_port(self.network, security_groups=[
            self.secgroup['security_group']['id']])
        port_for_subport = self.create_port(
            vlan_network,
            security_groups=[self.secgroup['security_group']['id']],
            mac_address=parent_port['mac_address'])
        subport = {
            'port_id': port_for_subport['id'],
            'segmentation_type': 'vlan',
            'segmentation_id': vlan_tag}
        trunk = self.client.create_trunk(
            parent_port['id'], subports=[subport])['trunk']

        server, fip = self._create_server_with_fip(parent_port['id'])
        self.addCleanup(self._detach_and_delete_trunk, server, trunk)

        server_ssh_client = ssh.Client(
            fip['floating_ip_address'],
            CONF.validation.image_ssh_user,
            pkey=self.keypair['private_key'])

        return {
            'server': server,
            'fip': fip,
            'ssh_client': server_ssh_client,
            'subport': port_for_subport,
        }
Ejemplo n.º 3
0
 def _create_vms(self, hyper, avail_zone, num_servers=2):
     servers, fips, server_ssh_clients = ([], [], [])
     # Create the availability zone with default zone and
     # a specific mentioned hypervisor.
     az = avail_zone + ':' + hyper
     for i in range(num_servers):
         servers.append(
             self.create_server(flavor_ref=CONF.compute.flavor_ref,
                                image_ref=CONF.compute.image_ref,
                                key_name=self.keypair['name'],
                                networks=[{
                                    'uuid': self.network['id']
                                }],
                                security_groups=[{
                                    'name':
                                    self.secgroup['name']
                                }],
                                availability_zone=az))
     for i, server in enumerate(servers):
         waiters.wait_for_server_status(self.os_admin.servers_client,
                                        server['server']['id'],
                                        const.SERVER_STATUS_ACTIVE)
         port = self.client.list_ports(
             network_id=self.network['id'],
             device_id=server['server']['id'])['ports'][0]
         fips.append(
             self.create_and_associate_floatingip(
                 port['id'], client=self.os_admin.network_client))
         server_ssh_clients.append(
             ssh.Client(fips[i]['floating_ip_address'],
                        CONF.validation.image_ssh_user,
                        pkey=self.keypair['private_key']))
         self.addCleanup(self.os_admin.network_client.delete_floatingip,
                         fips[i]['id'])
     return server_ssh_clients, fips
Ejemplo n.º 4
0
 def check_connectivity(self, host, ssh_user, ssh_key, servers=None):
     ssh_client = ssh.Client(host, ssh_user, pkey=ssh_key)
     try:
         ssh_client.test_connection_auth()
     except lib_exc.SSHTimeout as ssh_e:
         LOG.debug(ssh_e)
         self._log_console_output(servers)
         raise
Ejemplo n.º 5
0
    def _test_east_west(self):
        # The proxy VM is used to control the source VM when it doesn't
        # have a floating-ip.
        if self.src_has_fip:
            proxy = None
            proxy_client = None
        else:
            proxy = self._create_server()
            proxy_client = ssh.Client(proxy['fip']['floating_ip_address'],
                                      CONF.validation.image_ssh_user,
                                      pkey=self.keypair['private_key'])

        # Source VM
        if self.src_has_fip:
            src_server = self._create_server()
            src_server_ip = src_server['fip']['floating_ip_address']
        else:
            src_server = self._create_server(create_floating_ip=False)
            src_server_ip = src_server['port']['fixed_ips'][0]['ip_address']
        ssh_client = ssh.Client(src_server_ip,
                                CONF.validation.image_ssh_user,
                                pkey=self.keypair['private_key'],
                                proxy_client=proxy_client)

        # Destination VM
        if self.dest_has_fip:
            dest_server = self._create_server(network=self._dest_network)
        else:
            dest_server = self._create_server(create_floating_ip=False,
                                              network=self._dest_network)

        # Check connectivity
        self.check_remote_connectivity(
            ssh_client, dest_server['port']['fixed_ips'][0]['ip_address'])
        if self.dest_has_fip:
            self.check_remote_connectivity(
                ssh_client, dest_server['fip']['floating_ip_address'])
Ejemplo n.º 6
0
    def test_qos(self):
        """This is a basic test that check that a QoS policy with

           a bandwidth limit rule is applied correctly by sending
           a file from the instance to the test node.
           Then calculating the bandwidth every ~1 sec by the number of bits
           received / elapsed time.
        """

        NC_PORT = 1234

        self.setup_network_and_server()
        self.check_connectivity(self.fip['floating_ip_address'],
                                CONF.validation.image_ssh_user,
                                self.keypair['private_key'])
        rulesets = [{'protocol': 'tcp',
                     'direction': 'ingress',
                     'port_range_min': NC_PORT,
                     'port_range_max': NC_PORT,
                     'remote_ip_prefix': '0.0.0.0/0'}]
        self.create_secgroup_rules(rulesets,
                                   self.security_groups[-1]['id'])

        ssh_client = ssh.Client(self.fip['floating_ip_address'],
                                CONF.validation.image_ssh_user,
                                pkey=self.keypair['private_key'])
        policy = self.os_admin.network_client.create_qos_policy(
                                        name='test-policy',
                                        description='test-qos-policy',
                                        shared=True)
        policy_id = policy['policy']['id']
        self.os_admin.network_client.create_bandwidth_limit_rule(
            policy_id, max_kbps=constants.LIMIT_KILO_BITS_PER_SECOND,
            max_burst_kbps=constants.LIMIT_KILO_BITS_PER_SECOND)
        port = self.client.list_ports(network_id=self.network['id'],
                                      device_id=self.server[
                                      'server']['id'])['ports'][0]
        self.os_admin.network_client.update_port(port['id'],
                                                 qos_policy_id=policy_id)
        self._create_file_for_bw_tests(ssh_client)
        utils.wait_until_true(lambda: self._check_bw(
            ssh_client,
            self.fip['floating_ip_address'],
            port=NC_PORT),
            timeout=120,
            sleep=1)
Ejemplo n.º 7
0
    def _test_east_west(self):
        # Source VM
        server1 = self._src_server
        server1_ip = server1['fip']['floating_ip_address']
        ssh_client = ssh.Client(server1_ip,
                                CONF.validation.image_ssh_user,
                                pkey=self.keypair['private_key'])

        # Destination VM
        if self.dest_has_fip:
            dest_server = self._dest_server_with_fip
        else:
            dest_server = self._dest_server_without_fip

        # Check connectivity
        self.check_remote_connectivity(
            ssh_client, dest_server['port']['fixed_ips'][0]['ip_address'])
        if self.dest_has_fip:
            self.check_remote_connectivity(
                ssh_client, dest_server['fip']['floating_ip_address'])
Ejemplo n.º 8
0
 def create_vm_default_sec_grp(self, num_servers=2):
     servers, fips, server_ssh_clients = ([], [], [])
     for i in range(num_servers):
         servers.append(
             self.create_server(flavor_ref=CONF.compute.flavor_ref,
                                image_ref=CONF.compute.image_ref,
                                key_name=self.keypair['name'],
                                networks=[{
                                    'uuid': self.network['id']
                                }]))
     for i, server in enumerate(servers):
         waiters.wait_for_server_status(self.os_primary.servers_client,
                                        server['server']['id'],
                                        const.SERVER_STATUS_ACTIVE)
         port = self.client.list_ports(
             network_id=self.network['id'],
             device_id=server['server']['id'])['ports'][0]
         fips.append(self.create_and_associate_floatingip(port['id']))
         server_ssh_clients.append(
             ssh.Client(fips[i]['floating_ip_address'],
                        CONF.validation.image_ssh_user,
                        pkey=self.keypair['private_key']))
     return server_ssh_clients, fips