Ejemplo n.º 1
0
    def setUp(self):
        super(MuranoTest, self).setUp()
        self.check_clients_state()
        self.env_name = rand_name("ostf_test-Murano_env")

        if not self.config.compute.compute_nodes \
                and self.config.compute.libvirt_type != 'vcenter':
            self.skipTest('There are no compute nodes')

        self.max_available_ram = 0
        for hypervisor in self.compute_client.hypervisors.list():
            if hypervisor.free_ram_mb >= 2048:
                self.flavor_reqs = True
                break
            else:
                if hypervisor.free_ram_mb > self.max_available_ram:
                    self.max_available_ram = hypervisor.free_ram_mb
                self.flavor_reqs = False

        self.flavor_name = rand_name("ostf_test_Murano_flavor")
        if self.flavor_reqs:
            self.flavor = self.compute_client.flavors.create(self.flavor_name,
                                                             disk=60, ram=2048,
                                                             vcpus=1)

        self.murano_available = True
        self.endpoint = self.config.murano.api_url + '/v1/'
        self.headers = {'X-Auth-Token': self.murano_client.auth_token,
                        'content-type': 'application/json'}
        try:
            self.list_environments()
        except exceptions.CommunicationError:
            self.murano_available = False
            self.skipTest("Murano service is not available")
Ejemplo n.º 2
0
    def setUp(self):
        super(SaharaTemplatesTest, self).setUp()

        flavor_id = self.create_flavor()
        self.ng_template = {
            'name': rand_name('sahara-ng-template-'),
            'plugin_name': self._plugin_name,
            'hadoop_version': self._hadoop_version,
            'flavor_id': flavor_id,
            'node_processes': self._node_processes,
            'description': 'Test node group template'
        }
        self.cl_template = {
            'name':
            rand_name('sahara-cl-template-'),
            'plugin_name':
            self._plugin_name,
            'hadoop_version':
            self._hadoop_version,
            'node_groups': [{
                'name': 'all-in-one',
                'flavor_id': flavor_id,
                'node_processes': self._node_processes,
                'count': 1
            }],
            'description':
            'Test cluster template'
        }
        self.client = self.sahara_client
Ejemplo n.º 3
0
    def test_create_and_delete_image(self):
        """Check create, update and delete image actions using Glance v1
        Target component: Glance

        Scenario:
            1.Create image
            2.Checking image status
            3.Check that image was created successfully
            4.Update image with properties
            5.Check that properties was updated successfully
            6.Delete image

        Duration: 130 s.
        Available since release: 2014.2-6.1
        """
        fail_msg = "Error creating image. Please refer to Openstack logs " "for more information."
        self.image = self.verify(100, self.image_create, 1, fail_msg, "Image creation", self.glance_client_v1)

        fail_msg = "Image status is incorrect. Please refer to " "Openstack logs for more information."
        self.verify(
            200, self.check_image_status, 2, fail_msg, "Checking image status", self.glance_client_v1, self.image
        )

        fail_msg = "Image doesn't appear at list. Please refer to " "Openstack logs for more information."
        self.verify(100, self.find_image_by_id, 3, fail_msg, "Finding image", self.glance_client_v1, self.image.id)

        group_props = rand_name("ostf_test")
        prop = rand_name("ostf-prop")
        value_prop = rand_name("prop-value")

        fail_msg = "Can't update image with properties. Please refer to " "Openstack logs for more information."
        self.image = self.verify(
            100,
            self.update_image,
            4,
            fail_msg,
            "Updating image",
            self.glance_client_v1,
            self.image,
            group_props,
            prop,
            value_prop,
        )

        fail_msg = "Can't find appended properties. Please refer to " "OSTF logs for more information."
        self.verify(
            100,
            self.find_props,
            5,
            fail_msg,
            "Finding properties",
            self.glance_client_v1,
            self.image,
            group_props,
            prop,
            value_prop,
        )

        fail_msg = "Cant delete image. Please refer to Openstack logs " "for more information."
        self.verify(100, self.delete_image, 6, fail_msg, "Deleting image", self.glance_client_v1, self.image)
Ejemplo n.º 4
0
    def _create_cluster(
            cls, compute_client, sahara_client, plugin_name, plugin_version,
            cluster_template_id, description, image_id, cluster_configs,
            node_groups, anti_affinity, neutron_management_network=None):

        key_name = rand_name(cls.USER_KEYPAIR_ID)
        cls.keys.append(
            compute_client.keypairs.create(key_name))

        body = sahara_client.clusters.create(
            name=rand_name(cls.CLUSTER_NAME),
            plugin_name=plugin_name,
            hadoop_version=plugin_version,
            cluster_template_id=cluster_template_id,
            default_image_id=image_id,
            description=description,
            cluster_configs=cluster_configs,
            node_groups=node_groups,
            user_keypair_id=key_name,
            anti_affinity=anti_affinity,
            net_id=neutron_management_network)

        if body:
            cls.clusters.append(body.id)
            return body
Ejemplo n.º 5
0
    def setUp(self):
        super(SaharaTemplatesTest, self).setUp()

        flavor_id = self.create_flavor()
        self.ng_template = {
            'name': rand_name('sahara-ng-template-'),
            'plugin_name': self._plugin_name,
            'hadoop_version': self._hadoop_version,
            'flavor_id': flavor_id,
            'node_processes': self._node_processes,
            'description': 'Test node group template'
        }
        self.cl_template = {
            'name': rand_name('sahara-cl-template-'),
            'plugin_name': self._plugin_name,
            'hadoop_version': self._hadoop_version,
            'node_groups': [
                {
                    'name': 'all-in-one',
                    'flavor_id': flavor_id,
                    'node_processes': self._node_processes,
                    'count': 1
                }
            ],
            'description': 'Test cluster template'
        }
        self.client = self.sahara_client
Ejemplo n.º 6
0
    def test_create_and_delete_image(self):
        """Check create, update and delete image actions using Glance v1
        Target component: Glance

        Scenario:
            1.Create image
            2.Checking image status
            3.Check that image was created successfully
            4.Update image with properties
            5.Check that properties was updated successfully
            6.Delete image

        Duration: 130 s.
        Deployment tags: disabled
        Available since release: 2014.2-6.1
        """
        # TODO(tleontovich) enable when mos LP1527224 fixed
        fail_msg = ("Error creating image. Please refer to Openstack logs "
                    "for more information.")
        self.image = self.verify(100, self.image_create, 1, fail_msg,
                                 'Image creation', self.glance_client_v1)

        fail_msg = ("Image status is incorrect. Please refer to "
                    "Openstack logs for more information.")
        self.verify(200, self.check_image_status, 2, fail_msg,
                    'Checking image status', self.glance_client_v1, self.image)

        fail_msg = ("Image doesn't appear at list. Please refer to "
                    "Openstack logs for more information.")
        self.verify(100, self.find_image_by_id, 3, fail_msg, 'Finding image',
                    self.glance_client_v1, self.image.id)

        group_props = rand_name("ostf_test")
        prop = rand_name("ostf-prop")
        value_prop = rand_name("prop-value")

        fail_msg = ("Can't update image with properties. Please refer to "
                    "Openstack logs for more information.")
        self.image = self.verify(100, self.update_image, 4, fail_msg,
                                 'Updating image', self.glance_client_v1,
                                 self.image, group_props, prop, value_prop)

        fail_msg = ("Can't find appended properties. Please refer to "
                    "OSTF logs for more information.")
        self.verify(100, self.find_props, 5, fail_msg, 'Finding properties',
                    self.glance_client_v1, self.image, group_props, prop,
                    value_prop)

        fail_msg = ("Can't delete image. Please refer to Openstack logs "
                    "for more information.")
        self.verify(100, self.delete_image, 6, fail_msg, 'Deleting image',
                    self.glance_client_v1, self.image)
Ejemplo n.º 7
0
    def test_create_and_delete_image(self):
        """Check create, update and delete image actions using Glance v1
        Target component: Glance

        Scenario:
            1.Create image
            2.Checking image status
            3.Check that image was created successfully
            4.Update image with properties
            5.Check that properties was updated successfully
            6.Delete image

        Duration: 130 s.
        Deployment tags: disabled
        Available since release: 2014.2-6.1
        """
        # TODO(tleontovich) enable when mos LP1527224 fixed
        fail_msg = ("Error creating image. Please refer to Openstack logs "
                    "for more information.")
        self.image = self.verify(100, self.image_create, 1, fail_msg,
                                 'Image creation', self.glance_client_v1)

        fail_msg = ("Image status is incorrect. Please refer to "
                    "Openstack logs for more information.")
        self.verify(200, self.check_image_status, 2, fail_msg,
                    'Checking image status', self.glance_client_v1, self.image)

        fail_msg = ("Image doesn't appear at list. Please refer to "
                    "Openstack logs for more information.")
        self.verify(100, self.find_image_by_id, 3, fail_msg, 'Finding image',
                    self.glance_client_v1, self.image.id)

        group_props = rand_name("ostf_test")
        prop = rand_name("ostf-prop")
        value_prop = rand_name("prop-value")

        fail_msg = ("Can't update image with properties. Please refer to "
                    "Openstack logs for more information.")
        self.image = self.verify(100, self.update_image, 4, fail_msg,
                                 'Updating image', self.glance_client_v1,
                                 self.image, group_props, prop, value_prop)

        fail_msg = ("Can't find appended properties. Please refer to "
                    "OSTF logs for more information.")
        self.verify(100, self.find_props, 5, fail_msg, 'Finding properties',
                    self.glance_client_v1, self.image, group_props, prop,
                    value_prop)

        fail_msg = ("Can't delete image. Please refer to Openstack logs "
                    "for more information.")
        self.verify(100, self.delete_image, 6, fail_msg, 'Deleting image',
                    self.glance_client_v1, self.image)
    def test_008_check_public_instance_connectivity_from_instance(self):
        """Check network connectivity from instance via floating IP
        Target component: Nova

        Scenario:
            1. Create a new security group (if it doesn`t exist yet).
            2. Create an instance using the new security group.
            3. Create a new floating IP
            4. Assign the new floating IP to the instance.
            5. Check that public IP 8.8.8.8 can be pinged from instance.
            6. Remove server floating ip.
            7. Delete server.
        Duration: 200 s.

        """
        if not self.security_groups:
                self.security_groups[self.tenant_id] = self.verify(
                    25, self._create_security_group, 1,
                    "Security group can not be created.",
                    'security group creation',
                    self.compute_client)

        name = rand_name('ost1_test-server-smoke-')
        security_groups = [self.security_groups[self.tenant_id].name]

        server = self.verify(200, self._create_server, 2,
                             "Server can not be created.",
                             "server creation",
                             self.compute_client, name, security_groups)

        floating_ip = self.verify(
            20,
            self._create_floating_ip,
            3,
            "Floating IP can not be created.",
            'floating IP creation')

        self.verify(10, self._assign_floating_ip_to_instance,
                    4, "Floating IP can not be assigned.",
                    'floating IP assignment',
                    self.compute_client, server, floating_ip)

        self.floating_ips.append(floating_ip)

        ip_address = floating_ip.ip
        LOG.info('is address is %s' % ip_address)
        LOG.debug(ip_address)
        self.verify(300, self._check_connectivity_from_vm,
                    5, ("Connectivity to 8.8.8.8 from the VM doesn`t "
                    "function properly."),
                    'public connectivity checking from VM', ip_address,
                    30, (10, 30))

        self.verify(10, self.compute_client.servers.remove_floating_ip,
                    6, "Floating IP cannot be removed.",
                    "removing floating IP", server, floating_ip)

        self.verify(30, self._delete_server, 7,
                    "Server can not be deleted. ",
                    "server deletion", server)
Ejemplo n.º 9
0
    def _create_server(self, client):
        name = rand_name('ost1_test-volume-instance')
        base_image_id = get_image_from_name()
        flavor_id = self._create_nano_flavor().id
        if 'neutron' in self.config.network.network_provider:
            network = [
                net.id for net in self.compute_client.networks.list()
                if net.label == self.private_net
            ]

            create_kwargs = {'nics': [{'net-id': network[0]}]}
            server = client.servers.create(name, base_image_id, flavor_id,
                                           **create_kwargs)
        else:
            server = client.servers.create(name, base_image_id, flavor_id)

        self.set_resource(name, server)
        self.verify_response_body_content(server.name, name,
                                          "Instance creation failed")
        # The instance retrieved on creation is missing network
        # details, necessitating retrieval after it becomes active to
        # ensure correct details.
        server = self._wait_server_param(client, server, 'addresses', 5, 1)
        self.servers.append(server)
        self.set_resource(name, server)
        return server
Ejemplo n.º 10
0
    def setUp(self):
        super(MuranoTest, self).setUp()
        self.check_clients_state()
        self.env_name = rand_name("ostf_test-Murano_env")

        if not self.config.compute.compute_nodes:
            self.skipTest('There are no compute nodes to run tests')

        self.min_required_ram_mb = 4096

        self.murano_available = True
        self.endpoint = '{0}/v1/'.format(
            self.identity_client.service_catalog.url_for(
                service_type='application-catalog', endpoint_type='publicURL'))

        self.headers = {
            'X-Auth-Token': self.murano_client.http_client.auth_token,
            'content-type': 'application/json'
        }

        try:
            self.list_environments()
        except exceptions.CommunicationError:
            self.murano_available = False
            self.skipTest("Murano service is not available")
    def test_005_create_servers(self):
        """Launch instance
        Target component: Nova

        Scenario:
            1. Create a new security group (if it doesn`t exist yet).
            2. Create an instance using the new security group.
        Duration: 200 s.
        """
        if not self.security_groups:
            self.security_groups[self.tenant_id] = self.verify(
                25,
                self._create_security_group,
                1,
                "Security group can not be created.",
                'security group creation',
                self.compute_client)

        name = rand_name('ost1_test-server-smoke-')
        security_groups = [self.security_groups[self.tenant_id].name]

        server = self.verify(
            200,
            self._create_server,
            2,
            "Creating instance using the new security group has failed.",
            'image creation',
            self.compute_client, name, security_groups
        )

        self.servers.append(server)
Ejemplo n.º 12
0
    def setUp(self):
        super(MuranoTest, self).setUp()
        self.check_clients_state()
        self.env_name = rand_name("ostf_test-Murano_env")

        if not self.config.compute.compute_nodes:
            self.skipTest('There are no compute nodes to run tests')

        self.min_required_ram_mb = 4096

        self.murano_available = True
        self.endpoint = '{0}/v1/'.format(
            self.identity_client.service_catalog.url_for(
                service_type='application-catalog',
                endpoint_type='publicURL'))

        self.headers = {
            'X-Auth-Token': self.murano_client.http_client.auth_token,
            'content-type': 'application/json'
        }

        try:
            self.list_environments()
        except exceptions.CommunicationError:
            self.murano_available = False
            self.skipTest("Murano service is not available")
Ejemplo n.º 13
0
 def _create_keypair(self, client, namestart='ost1_test-keypair-smoke-'):
     kp_name = rand_name(namestart)
     keypair = client.keypairs.create(kp_name)
     self.set_resource(kp_name, keypair)
     self.verify_response_body_content(keypair.id, kp_name,
                                       'Keypair creation failed')
     return keypair
Ejemplo n.º 14
0
 def _create_volume(self, client, display_name=None, **kwargs):
     if display_name is None:
         display_name = rand_name('ost1_test-volume')
     volume = client.volumes.create(
         size=1, display_name=display_name, **kwargs)
     self.set_resource(display_name, volume)
     return volume
Ejemplo n.º 15
0
    def test_1_vcenter_create_servers(self):
        """vCenter: Launch instance
        Target component: Nova

        Scenario:
            1. Create a new security group (if it doesn`t exist yet).
            2. Create an instance using the new security group.
            3. Delete instance.

        Duration: 200 s.
        Available since release: 2014.2-6.1
        Deployment tags: use_vcenter
        """
        img_name = 'TestVM-VMDK'
        self.manager.config.compute.image_name = img_name
        self.check_image_exists()
        if not self.security_groups:
            self.security_groups[self.tenant_id] = self.verify(
                25, self._create_security_group, 1,
                "Security group can not be created.",
                'security group creation', self.compute_client)

        name = rand_name('ost1_test-server-smoke-')
        security_groups = [self.security_groups[self.tenant_id].name]
        flavor_id = self.find_flavor_id()

        server = self.verify(
            200, self._create_server, 2,
            "Creating instance using the new security group has failed.",
            'image creation', self.compute_client, name, security_groups,
            flavor_id, None, img_name)

        self.verify(30, self._delete_server, 3, "Server can not be deleted.",
                    "server deletion", server)
Ejemplo n.º 16
0
    def test_004_create_servers(self):
        """Launch instance
        Target component: Nova

        Scenario:
            1. Create a new security group (if it doesn`t exist yet).
            2. Create an instance using the new security group.
            3. Delete instance.
        Duration: 200 s.

        """
        self.check_image_exists()
        if not self.security_groups:
            self.security_groups[self.tenant_id] = self.verify(
                25, self._create_security_group, 1,
                "Security group can not be created.",
                'security group creation', self.compute_client)

        name = rand_name('ost1_test-server-smoke-')
        security_groups = [self.security_groups[self.tenant_id].name]

        server = self.verify(
            200, self._create_server, 2,
            "Creating instance using the new security group has failed.",
            'image creation', self.compute_client, name, security_groups)

        self.verify(30, self._delete_server, 3, "Server can not be deleted.",
                    "server deletion", server)
    def test_009_check_internet_connectivity_instance_without_floatingIP(self):
        """Check network connectivity from instance without floating IP

        Scenario:
            1. Create a new security group (if it doesn`t exist yet).
            2. Create an instance using the new security group.
            (if it doesn`t exist yet).
            3. Check that public IP 8.8.8.8 can be pinged from instance.
        Duration: 200 s.
        """
        if not self.servers:
            if not self.security_groups:
                self.security_groups[self.tenant_id] = self.verify(
                    25, self._create_security_group, 1,
                    "Security group can not be created.",
                    'security group creation', self.compute_client)

            name = rand_name('ost1_test-server-smoke-')
            security_groups = [self.security_groups[self.tenant_id].name]

            server = self.verify(200, self._create_server, 2,
                                 "Server can not be created.",
                                 'server creation', self.compute_client, name,
                                 security_groups)

            self.servers.append(server)
        server = self.servers[-1]
        instance_ip = server.addresses['novanetwork'][0]['addr']
        compute = getattr(server, 'OS-EXT-SRV-ATTR:host')

        self.verify(100, self._check_connectivity_from_vm, 3,
                    ("Connectivity to 8.8.8.8 from the VM doesn`t "
                     "function properly."),
                    'public connectivity checking from VM', instance_ip,
                    compute)
    def setUp(self):
        super(MuranoDeployLinuxServicesTests, self).setUp()
        self.check_clients_state()

        msg = ("Linux image with Murano "
               "tag isn't available. Need to import this image into "
               "glance and mark with Murano metadata tag. Please refer to"
               " the Mirantis OpenStack and Murano user documentation. ")
        self.image = self.find_murano_image('linux')
        if not self.image:
            LOG.debug(msg)
            self.skipTest(msg)

        self.flavor_name = rand_name("ostf_test_Murano_flavor")
        if self.flavor_reqs:
            try:
                self.flavor = self.compute_client.flavors.create(
                    self.flavor_name,
                    disk=60,
                    ram=self.min_required_ram,
                    vcpus=1)
            except Exception:
                self.fail('Failed to create flavor "%s" for the test. Please, '
                          'refer to the Mirantis OpenStack documentation and '
                          'OpenStack Health Check logs.' % self.flavor_name)
        else:
            self.skipTest(
                "This test requires more resources on one of "
                "the compute nodes (> {0} MB of free RAM), but you "
                "have only {1} MB on most appropriate compute node.".format(
                    self.min_required_ram, self.max_available_ram))
Ejemplo n.º 19
0
    def _create_server(self, client):
        if not self.smoke_flavor:
            self.fail("Flavor for tests was not created. Seems that "
                      "something is wrong with nova services.")

        name = rand_name('ost1_test-volume-instance')
        base_image_id = self.get_image_from_name()
        if 'neutron' in self.config.network.network_provider:
            network = [
                net.id for net in self.compute_client.networks.list()
                if net.label == self.private_net
            ]
            if network:
                create_kwargs = {'nics': [{'net-id': network[0]}]}
            else:
                self.fail("Default private network '{0}' isn't present."
                          "Please verify it is properly created.".format(
                              self.private_net))
            server = client.servers.create(name, base_image_id,
                                           self.smoke_flavor.id,
                                           **create_kwargs)
        else:
            server = client.servers.create(name, base_image_id,
                                           self.smoke_flavor.id)

        self.verify_response_body_content(server.name, name,
                                          "Instance creation failed")
        # The instance retrieved on creation is missing network
        # details, necessitating retrieval after it becomes active to
        # ensure correct details.
        server = self._wait_server_param(client, server, 'addresses', 5, 1)
        self.set_resource(name, server)
        return server
Ejemplo n.º 20
0
 def _create_user(self, client, tenant_id):
     password = "******"
     email = "*****@*****.**"
     name = rand_name('ost1_test-user-')
     user = client.users.create(name, password, email, tenant_id)
     self.users.append(user)
     return user
    def setUp(self):
        super(MuranoDeployLinuxServicesTests, self).setUp()
        self.check_clients_state()

        msg = ("Linux image with Murano "
               "tag isn't available. Need to import this image into "
               "glance and mark with Murano metadata tag. Please refer to"
               " the Mirantis OpenStack and Murano user documentation. ")
        self.image = self.find_murano_image('linux')
        if not self.image:
            LOG.debug(msg)
            self.skipTest(msg)

        self.flavor_name = rand_name("ostf_test_Murano_flavor")
        if self.flavor_reqs:
            try:
                self.flavor = self.compute_client.flavors.create(
                    self.flavor_name, disk=60, ram=self.min_required_ram,
                    vcpus=1)
            except Exception:
                self.fail('Failed to create flavor "%s" for the test. Please, '
                          'refer to the Mirantis OpenStack documentation and '
                          'OpenStack Health Check logs.' % self.flavor_name)
        else:
            self.skipTest("This test requires more resources on one of "
                          "the compute nodes (> {0} MB of free RAM), but you "
                          "have only {1} MB on most appropriate compute node."
                          .format(self.min_required_ram,
                                  self.max_available_ram))
Ejemplo n.º 22
0
    def _create_server(self, client):
        name = rand_name('ost1_test-volume-instance')
        base_image_id = self.get_image_from_name()
        if 'neutron' in self.config.network.network_provider:
            network = [net.id for net in
                       self.compute_client.networks.list()
                       if net.label == self.private_net]
            if network:
                create_kwargs = {'nics': [{'net-id': network[0]}]}
            else:
                self.fail('Private network was not created by default')
            server = client.servers.create(
                name, base_image_id, self.smoke_flavor.id, **create_kwargs)
        else:
            server = client.servers.create(name, base_image_id,
                                           self.smoke_flavor.id)

        self.verify_response_body_content(server.name,
                                          name,
                                          "Instance creation failed")
        # The instance retrieved on creation is missing network
        # details, necessitating retrieval after it becomes active to
        # ensure correct details.
        server = self._wait_server_param(client, server, 'addresses', 5, 1)
        self.set_resource(name, server)
        return server
Ejemplo n.º 23
0
 def _create_flavors(self, client, ram, disk, vcpus=1):
     name = rand_name('ost1_test-flavor-')
     flavorid = rand_int_id()
     flavor = client.flavors.create(name=name, ram=ram, disk=disk,
                                    vcpus=vcpus, flavorid=flavorid)
     self.flavors.append(flavor)
     return flavor
Ejemplo n.º 24
0
    def setUp(self):
        super(MuranoDeployLinuxServicesTests, self).setUp()
        self.check_clients_state()

        self.doc_link = ('http://docs.mirantis.com/openstack/fuel/'
                         'fuel-{0}/user-guide.html#platform-tests-'
                         'description'.format(self.config.fuel.fuel_version))

        max_free_ram_mb = (
            self.get_max_free_compute_node_ram(self.min_required_ram_mb))
        if max_free_ram_mb < self.min_required_ram_mb:
            msg = ('This test requires more hardware resources of your '
                   'OpenStack cluster: at least one of the compute nodes '
                   'must have >= {0} MB of free RAM, but you have only '
                   '{1} MB on most appropriate compute node.'
                   .format(self.min_required_ram_mb, max_free_ram_mb))
            LOG.debug(msg)
            self.skipTest(msg)

        self.image = self.find_murano_image('linux')

        self.dummy_fqdn = 'io.murano.apps.Simple'

        self.flavor_name = rand_name("ostf_test_Murano_flavor")
        flavor = self.compute_client.flavors.create(
            self.flavor_name, disk=60, ram=self.min_required_ram_mb, vcpus=1)
        self.addCleanup(self.compute_client.flavors.delete, flavor.id)
Ejemplo n.º 25
0
 def _create_boot_volume(self, client):
     display_name = rand_name('ost1_test-bootable-volume')
     imageRef = self.get_image_from_name()
     LOG.debug(
         'Image ref is {0} for volume {1}'.format(imageRef, display_name))
     return self._create_volume(
         client, display_name=display_name, imageRef=imageRef)
Ejemplo n.º 26
0
    def _boot_image(self, image_id):
        name = rand_name('ost1_test-image')
        client = self.compute_client
        flavor_id = self.smoke_flavor
        LOG.debug("name:%s, image:%s" % (name, image_id))
        if 'neutron' in self.config.network.network_provider:
            network = [net.id for net in
                       self.compute_client.networks.list()
                       if net.label == self.private_net]

            create_kwargs = {
                'nics': [
                    {'net-id': network[0]},
                ],
            }
            server = client.servers.create(name=name,
                                           image=image_id,
                                           flavor=flavor_id, **create_kwargs)
        else:
            server = client.servers.create(name=name,
                                           image=image_id,
                                           flavor=flavor_id)
        self.set_resource(name, server)
        #self.addCleanup(self.compute_client.servers.delete, server)
        self.verify_response_body_content(
            name, server.name,
            msg="Please refer to OpenStack logs for more details.")
        self._wait_for_server_status(server, 'ACTIVE')
        server = client.servers.get(server)  # getting network information
        LOG.debug("server:%s" % server)
        return server
Ejemplo n.º 27
0
    def _create_server(self, client):
        if not self.smoke_flavor:
            self.fail("Flavor for tests was not created. Seems that "
                      "something is wrong with nova services.")

        name = rand_name('ost1_test-volume-instance')
        base_image_id = self.get_image_from_name()
        if 'neutron' in self.config.network.network_provider:
            network = [net.id for net in
                       self.compute_client.networks.list()
                       if net.label == self.private_net]
            if network:
                create_kwargs = {'nics': [{'net-id': network[0]}]}
            else:
                self.fail("Default private network '{0}' isn't present."
                          "Please verify it is properly created.".
                          format(self.private_net))
            server = client.servers.create(
                name, base_image_id, self.smoke_flavor.id, **create_kwargs)
        else:
            server = client.servers.create(name, base_image_id,
                                           self.smoke_flavor.id)

        self.verify_response_body_content(server.name,
                                          name,
                                          "Instance creation failed")
        # The instance retrieved on creation is missing network
        # details, necessitating retrieval after it becomes active to
        # ensure correct details.
        server = self._wait_server_param(client, server, 'addresses', 5, 1)
        self.set_resource(name, server)
        return server
Ejemplo n.º 28
0
 def _create_user(self, client, tenant_id):
     password = "******"
     email = "*****@*****.**"
     name = rand_name('ost1_test-user-')
     user = client.users.create(name, password, email, tenant_id)
     self.users.append(user)
     return user
Ejemplo n.º 29
0
 def _create_boot_volume(self, client):
     display_name = rand_name('ost1_test-bootable-volume')
     imageRef = self.get_image_from_name()
     LOG.debug('Image ref is {0}'.format(imageRef))
     volume = client.volumes.create(
         size=1, display_name=display_name, imageRef=imageRef)
     return volume
Ejemplo n.º 30
0
    def sahara_helper(self, image_id, plugin_name, hadoop_version):
        #  Find flavor id for sahara instances
        flavor_id = next(flavor.id
                         for flavor in self.compute_client.flavors.list()
                         if flavor.name == 'm1.small')

        private_net_id, floating_ip_pool = self.create_network_resources()
        #  Create json for node group
        node_group = {
            'name':
            'all-in-one',
            'flavor_id':
            flavor_id,
            'node_processes': [
                'nodemanager', 'datanode', 'resourcemanager', 'namenode',
                'historyserver'
            ],
            'count':
            1,
            'auto_security_group':
            True
        }
        if floating_ip_pool:
            node_group['floating_ip_pool'] = floating_ip_pool

        #  Create json for Sahara cluster
        cluster_json = {
            'name': rand_name("ceilo-cluster"),
            'plugin_name': plugin_name,
            'hadoop_version': hadoop_version,
            'default_image_id': image_id,
            'cluster_configs': {
                'HDFS': {
                    'dfs.replication': 1
                }
            },
            'node_groups': [node_group],
            'net_id': private_net_id
        }

        #  Create Sahara cluster
        cluster = self.sahara_client.clusters.create(**cluster_json)
        self.addCleanup(
            self.delete_resource,
            delete_method=lambda: self.sahara_client.clusters.delete(cluster.id
                                                                     ),
            get_method=lambda: self.sahara_client.clusters.get(cluster.id))

        #  Wait for change cluster state for metric: cluster.update
        def check_status():
            cluster_state = self.sahara_client.clusters.get(cluster.id).status
            return cluster_state in ['Waiting', 'Active', 'Error']

        fuel_health.test.call_until_true(check_status, 300, 1)

        #  Delete cluster
        self.sahara_client.clusters.delete(cluster.id)

        return cluster
Ejemplo n.º 31
0
 def create_alarm(self, **kwargs):
     """This method provides creation of alarm."""
     if 'name' in kwargs:
         kwargs['name'] = rand_name(kwargs['name'])
     alarm = self.ceilometer_client.alarms.create(**kwargs)
     self.objects_for_delete.append(
         (self.ceilometer_client.alarms.delete, alarm.alarm_id))
     return alarm
Ejemplo n.º 32
0
    def neutron_helper(self):
        net = self.neutron_client.create_network(
            {"network": {"name": rand_name("ceilo-net")}})["network"]
        self.addCleanup(self.cleanup_resources,
                        [(self.neutron_client.delete_network, net["id"])])
        self.neutron_client.update_network(
            net["id"], {"network": {"name": rand_name("ceilo-net-update")}})

        subnet = self.neutron_client.create_subnet(
            {"subnet": {"name": rand_name("ceilo-subnet"),
                        "network_id": net["id"],
                        "ip_version": 4,
                        "cidr": "10.0.7.0/24"}})["subnet"]
        self.addCleanup(self.cleanup_resources,
                        [(self.neutron_client.delete_subnet, subnet["id"])])
        self.neutron_client.update_subnet(
            subnet["id"], {"subnet": {"name": rand_name("ceilo-subnet")}})

        port = self.neutron_client.create_port({
            "port": {"name": rand_name("ceilo-port"),
                     "network_id": net["id"]}})['port']
        self.addCleanup(self.cleanup_resources,
                        [(self.neutron_client.delete_port, port["id"])])
        self.neutron_client.update_port(
            port["id"], {"port": {"name": rand_name("ceilo-port-update")}})

        router = self.neutron_client.create_router(
            {"router": {"name": rand_name("ceilo-router")}})['router']
        self.addCleanup(self.cleanup_resources,
                        [(self.neutron_client.delete_router, router["id"])])
        self.neutron_client.update_router(
            router["id"],
            {"router": {"name": rand_name("ceilo-router-update")}})

        external_network = self.find_external_network()
        try:
            body = {
                "floatingip": {
                    "floating_network_id": external_network["id"]
                }
            }
            fl_ip = self.neutron_client.create_floatingip(body)["floatingip"]
        except neutron_exc.IpAddressGenerationFailureClient:
            self.fail('No more IP addresses available on external network.')
        self.addCleanup(self.cleanup_resources,
                        [(self.neutron_client.delete_floatingip, fl_ip["id"])])
        self.neutron_client.update_floatingip(
            fl_ip["id"], {"floatingip": {"port_id": None}})

        self.neutron_client.delete_floatingip(fl_ip["id"])
        self.neutron_client.delete_router(router["id"])
        self.neutron_client.delete_port(port["id"])
        self.neutron_client.delete_subnet(subnet["id"])
        self.neutron_client.delete_network(net["id"])

        return net, subnet, port, router, fl_ip
Ejemplo n.º 33
0
 def create_alarm(self, **kwargs):
     """This method provides creation of alarm."""
     if 'name' in kwargs:
         kwargs['name'] = rand_name(kwargs['name'])
     alarm = self.ceilometer_client.alarms.create(**kwargs)
     self.objects_for_delete.append((self.ceilometer_client.alarms.delete,
                                     alarm.alarm_id))
     return alarm
Ejemplo n.º 34
0
 def _create_boot_volume(self, client):
     display_name = rand_name('ost1_test-bootable-volume')
     imageRef = self.get_image_from_name()
     LOG.debug('Image ref is {0} for volume {1}'.format(
         imageRef, display_name))
     return self._create_volume(client,
                                display_name=display_name,
                                imageRef=imageRef)
Ejemplo n.º 35
0
 def _create_keypair(self, client, namestart='ost1_test-keypair-smoke-'):
     kp_name = rand_name(namestart)
     keypair = client.keypairs.create(kp_name)
     self.set_resource(kp_name, keypair)
     self.verify_response_body_content(keypair.id,
                                       kp_name,
                                       'Keypair creation failed')
     return keypair
Ejemplo n.º 36
0
    def test_check_volume_notifications(self):
        """Ceilometer test to check notifications from Cinder
        Target component: Ceilometer

        Scenario:
            1. Create an instance.
            2. Wait for 'ACTIVE' status of the instance.
            3. Create a volume and volume snapshot.
            4. Get volume snapshot notifications.
            5. Get volume notifications.
            6. Delete the instance.

        Duration: 150 s.
        Deployment tags: Ceilometer
        """

        if (not self.config.volume.cinder_node_exist
                and not self.config.volume.ceph_exist):
            self.skipTest('There are no storage nodes for volumes.')

        self.check_image_exists()
        private_net_id, _ = self.create_network_resources()

        fail_msg = 'Failed to create instance.'
        msg = 'creating instance'
        name = rand_name('ostf-ceilo-instance-')
        vcenter = self.config.compute.use_vcenter
        image_name = 'TestVM-VMDK' if vcenter else None
        instance = self.verify(300, self.create_server, 1, fail_msg, msg, name,
                               net_id=private_net_id, img_name=image_name)

        fail_msg = 'Failed while waiting for "ACTIVE" status of instance.'
        msg = 'waiting for "ACTIVE" status of instance'
        self.verify(200, self.wait_for_resource_status, 2,
                    fail_msg, msg, self.compute_client.servers,
                    instance.id, 'ACTIVE')

        fail_msg = 'Failed to create volume and volume snapshot.'
        msg = 'creating volume and volume snapshot'
        volume, snapshot = self.verify(300, self.volume_helper, 3,
                                       fail_msg, msg, instance)

        query = [{'field': 'resource', 'op': 'eq', 'value': snapshot.id}]
        fail_msg = 'Failed to get volume snapshot notifications.'
        msg = 'getting volume snapshot notifications'
        self.verify(300, self.wait_metrics, 4,
                    fail_msg, msg,
                    self.snapshot_notifications, query)

        query = [{'field': 'resource', 'op': 'eq', 'value': volume.id}]
        fail_msg = 'Failed to get volume notifications.'
        msg = 'getting volume notifications'
        self.verify(300, self.wait_metrics, 5,
                    fail_msg, msg, self.volume_notifications, query)

        fail_msg = 'Failed to delete the server.'
        msg = 'deleting server'
        self.verify(30, self._delete_server, 6, fail_msg, msg, instance)
Ejemplo n.º 37
0
 def volume_helper(self, instance):
     device = '/dev/vdb'
     #   Create a volume
     volume = self.volume_client.volumes.create(
         name=rand_name('ost1_test-ceilo-volume'), size=1)
     self.addCleanup(
         self.delete_resource,
         delete_method=lambda: self.volume_client.volumes.delete(volume),
         get_method=lambda: self.volume_client.volumes.get(volume.id))
     #   Wait for "Available" status of the volume
     self.wait_for_resource_status(
         self.volume_client.volumes, volume.id, 'available')
     #   Resize the volume
     self.volume_client.volumes.extend(volume, 2)
     self.wait_for_resource_status(
         self.volume_client.volumes, volume.id, 'available')
     #   Create a volume snapshot
     snapshot = self.volume_client.volume_snapshots.create(
         volume.id, name=rand_name('ost1_test-'))
     self.addCleanup(
         self.delete_resource,
         delete_method=lambda: self.volume_client.volume_snapshots.delete(
             snapshot),
         get_method=lambda: self.volume_client.volume_snapshots.get(
             snapshot.id))
     #   Wait for "Available" status of the snapshot
     self.wait_for_resource_status(
         self.volume_client.volume_snapshots, snapshot.id, 'available')
     #   Update the volume name
     self.volume_client.volumes.update(volume, name="ost1_test-update")
     #   Attach the volume to the instance
     self.volume_client.volumes.attach(volume.id, instance.id, device)
     #   Detach the volume from the instance
     self.volume_client.volumes.detach(volume.id)
     #   Delete the volume snapshot
     self.delete_resource(
         delete_method=lambda: self.volume_client.volume_snapshots.delete(
             snapshot),
         get_method=lambda: self.volume_client.volume_snapshots.get(
             snapshot.id))
     #   Delete the volume
     self.delete_resource(
         delete_method=lambda: self.volume_client.volumes.delete(volume),
         get_method=lambda: self.volume_client.volumes.get(volume.id))
     return volume, snapshot
Ejemplo n.º 38
0
 def setUp(self):
     super(HeatBaseTest, self).setUp()
     self.check_clients_state()
     if not self.testvm_flavor:
         LOG.debug("Creating a flavor for Heat tests.")
         flavor_name = rand_name('ostf-heat-flavor-')
         self.testvm_flavor = (self.compute_client.flavors.create(
             flavor_name, disk=1, ram=64, vcpus=1))
         self.flavors.append(self.testvm_flavor)
Ejemplo n.º 39
0
    def test_002_ironic_node_actions(self):
        """Check that Ironic can operate nodes
        Target component: Ironic

        Scenario:
            1. Create Ironic node with fake driver.
            2. Update Ironic node properties.
            3. Show and check updated node properties.
            4. Delete Ironic node.
        Duration: 60 s.
        Deployment tags: Ironic
        Available since release: 2015.1.0-8.0
        """
        # Step 1
        fail_msg = "Error creating node."
        self.node = self.verify(20,
                                self.node_create,
                                1,
                                fail_msg,
                                'Node creation',
                                driver='fake',
                                extra={'NodeTest': ''})
        LOG.debug(self.node)
        # Step 2
        prop = rand_name("ostf-prop")
        value_prop = rand_name("prop-value")
        fail_msg = "Can't update node with properties."
        self.node = self.verify(20, self.node_update, 2, fail_msg,
                                'Updating node', self.node, prop, value_prop)
        LOG.debug(self.node)
        # Step 3
        fail_msg = "Can't show node properties."
        self.node = self.verify(20, self.node_show, 3, fail_msg,
                                'Showing node', self.node)
        LOG.debug(self.node)
        for p, v in self.node.properties.items():
            self.verify(5, self.assertTrue, 3, "Can't check node property.",
                        'Checking node property', prop in p)
            self.verify(5, self.assertTrue, 3, "Can't check property value.",
                        'Checking property value', value_prop in v)
        # Step 4
        fail_msg = "Can't delete node."
        self.verify(20, self.node_delete, 4, fail_msg, 'Deleting node',
                    self.node)
    def test_005_check_public_network_connectivity(self):
        """Check that VM is accessible via floating IP address
        Target component: Nova

        Scenario:
            1. Create a new security group (if it doesn`t exist yet).
            2. Create an instance using the new security group
            3. Create a new floating IP
            4. Assign the new floating IP to the instance.
            5. Check connectivity to the floating IP using ping command.
            6. Remove server floating ip.
            7. Delete server.
        Duration: 200 s.

        """
        if not self.security_groups:
                self.security_groups[self.tenant_id] = self.verify(
                    25, self._create_security_group, 1,
                    "Security group can not be created.",
                    'security group creation',
                    self.compute_client)

        name = rand_name('ost1_test-server-smoke-')
        security_groups = [self.security_groups[self.tenant_id].name]

        server = self.verify(200, self._create_server, 2,
                             "Server can not be created.",
                             "server creation",
                             self.compute_client, name, security_groups)

        floating_ip = self.verify(
            20,
            self._create_floating_ip,
            3,
            "Floating IP can not be created.",
            'floating IP creation')

        self.verify(10, self._assign_floating_ip_to_instance,
                    4, "Floating IP can not be assigned.",
                    'floating IP assignment',
                    self.compute_client, server, floating_ip)

        self.floating_ips.append(floating_ip)

        self.verify(300, self._check_vm_connectivity, 5,
                    "VM connectivity doesn`t function properly.",
                    'VM connectivity checking', floating_ip.ip,
                    30, (10, 30))

        self.verify(10, self.compute_client.servers.remove_floating_ip,
                    6, "Floating IP cannot be removed.",
                    "removing floating IP", server, floating_ip)

        self.verify(30, self._delete_server, 7,
                    "Server can not be deleted. ",
                    "server deletion", server)
Ejemplo n.º 41
0
 def _create_network(self, label='ost1_test-network-smoke-'):
     n_label = rand_name(label)
     cidr = self.config.network.tenant_network_cidr
     networks = self.compute_client.networks.create(label=n_label,
                                                    cidr=cidr)
     self.set_resource(n_label, networks)
     self.network.append(networks)
     self.verify_response_body_content(networks.label, n_label,
                                       "Network creation failed")
     return networks
Ejemplo n.º 42
0
 def _create_flavors(self, client, ram, disk, vcpus=1):
     name = rand_name('ost1_test-flavor-')
     flavorid = rand_int_id()
     flavor = client.flavors.create(name=name,
                                    ram=ram,
                                    disk=disk,
                                    vcpus=vcpus,
                                    flavorid=flavorid)
     self.flavors.append(flavor)
     return flavor
Ejemplo n.º 43
0
    def create_flavor(self, ram=256, vcpus=1, disk=2):
        """This method creates a flavor for Heat tests."""

        LOG.debug('Creation of Heat tests flavor...')
        name = rand_name('ost1_test-heat-flavor-')
        flavor = self.compute_client.flavors.create(name, ram, vcpus, disk)
        self.addCleanup(self.compute_client.flavors.delete, flavor.id)
        LOG.debug('Flavor for Heat tests has been created.')

        return flavor
Ejemplo n.º 44
0
 def create_alarm(self, **kwargs):
     """
     This method provides creation of alarm
     """
     if 'name' in kwargs:
         kwargs['name'] = rand_name(kwargs['name'])
     alarm = self.ceilometer_client.alarms.create(**kwargs)
     if alarm:
         self.alarm_id_list.append(alarm.alarm_id)
         return alarm
Ejemplo n.º 45
0
 def _create_nano_flavor(cls):
     name = rand_name('ost1_test-flavor-nano')
     flavorid = rand_int_id(999, 10000)
     try:
         flavor = cls.compute_client.flavors.create(
             name, 64, 1, 1, flavorid)
     except Exception:
         LOG.debug("OSTF test flavor cannot be created.")
         LOG.debug(traceback.format_exc())
     return flavor
Ejemplo n.º 46
0
 def setUp(self):
     super(HeatBaseTest, self).setUp()
     self.check_clients_state()
     if not self.testvm_flavor:
         LOG.debug("Creating a flavor for Heat tests.")
         flavor_name = rand_name('ostf-heat-flavor-')
         self.testvm_flavor = (
             self.compute_client.flavors.create(flavor_name,
                                                disk=1, ram=64, vcpus=1))
         self.flavors.append(self.testvm_flavor)
Ejemplo n.º 47
0
    def create_flavor(self, ram=256, vcpus=1, disk=2):
        """This method creates a flavor for Heat tests."""

        LOG.debug('Creation of Heat tests flavor...')
        name = rand_name('ost1_test-heat-flavor-')
        flavor = self.compute_client.flavors.create(name, ram, vcpus, disk)
        self.addCleanup(self.compute_client.flavors.delete, flavor.id)
        LOG.debug('Flavor for Heat tests has been created.')

        return flavor
    def test_008_check_public_instance_connectivity_from_instance(self):
        """Check network connectivity from instance via floating IP

        Scenario:
            1. Create a new security group (if it doesn`t exist yet).
            2. Create an instance using the new security group.
            (if it doesn`t exist yet).
            3. Create a new floating IP (if it doesn`t exist yet).
            4. Assign the new floating IP to the instance.
            5. Check that public IP 8.8.8.8 can be pinged from instance.
        Duration: 200 s.

        Deployment tags: nova_network
        """
        if not self.floating_ips:
            if not self.servers:
                if not self.security_groups:
                    self.security_groups[self.tenant_id] = self.verify(
                        25, self._create_security_group, 1,
                        "Security group can not be created.",
                        'security group creation', self.compute_client)

                name = rand_name('ost1_test-server-smoke-')
                security_groups = [self.security_groups[self.tenant_id].name]

                server = self.verify(
                    200, self._create_server, 2,
                    "Server can not be created.",
                    'server creation',
                    self.compute_client, name, security_groups)

                self.servers.append(server)

            floating_ip = self.verify(
                20, self._create_floating_ip, 3,
                "Floating IP can not be created.",
                'floating IP creation')

            self.floating_ips.append(floating_ip)

        if self.servers and self.floating_ips:
            self.verify(10, self._assign_floating_ip_to_instance, 4,
                        "Floating IP can not be assigned.",
                        "floating IP assignment",
                        self.compute_client,
                        self.servers[0],
                        self.floating_ips[0])

        if self.floating_ips:
            ip_address = self.floating_ips[0].ip
            LOG.debug(ip_address)
            self.verify(100, self._check_connectivity_from_vm,
                        5, ("Connectivity to 8.8.8.8 from the VM doesn`t "
                            "function properly."),
                        'public connectivity checking from VM', ip_address)
Ejemplo n.º 49
0
 def _create_nano_flavor(cls):
     name = rand_name('ost1_test-flavor-nano')
     flavorid = rand_int_id(999, 10000)
     flavor = None
     try:
         flavor = cls.compute_client.flavors.create(name, 64, 1, 1,
                                                    flavorid)
     except Exception:
         LOG.debug("OSTF test flavor cannot be created.")
         LOG.debug(traceback.format_exc())
     return flavor
Ejemplo n.º 50
0
 def _create_network(self, label='ost1_test-network-smoke-'):
     n_label = rand_name(label)
     cidr = self.config.network.tenant_network_cidr
     networks = self.compute_client.networks.create(
         label=n_label, cidr=cidr)
     self.set_resource(n_label, networks)
     self.network.append(networks)
     self.verify_response_body_content(networks.label,
                                       n_label,
                                       "Network creation failed")
     return networks
Ejemplo n.º 51
0
 def glance_helper(self):
     image = self.glance_client.images.create(
         name=rand_name('ostf-ceilo-image'))
     self.objects_for_delete.append((self.glance_client.images.delete,
                                     image.id))
     self.glance_client.images.update(image.id, data='data',
                                      disk_format='qcow2',
                                      container_format='bare')
     self.glance_client.images.upload(image.id, 'upload_data')
     self.glance_client.images.data(image.id)
     self.glance_client.images.delete(image.id)
     return image
Ejemplo n.º 52
0
    def test_008_check_public_instance_connectivity_from_instance(self):
        """Check network connectivity from instance via floating IP

        Scenario:
            1. Create a new security group (if it doesn`t exist yet).
            2. Create an instance using the new security group.
            (if it doesn`t exist yet).
            3. Create a new floating IP (if it doesn`t exist yet).
            4. Assign the new floating IP to the instance.
            5. Check that public IP 8.8.8.8 can be pinged from instance.
        Duration: 200 s.
        """
        if not self.floating_ips:
            if not self.servers:
                if not self.security_groups:
                    self.security_groups[self.tenant_id] = self.verify(
                        25, self._create_security_group, 1,
                        "Security group can not be created.",
                        'security group creation', self.compute_client)

                name = rand_name('ost1_test-server-smoke-')
                security_groups = [self.security_groups[self.tenant_id].name]

                server = self.verify(
                    200, self._create_server, 2,
                    "Server can not be created.",
                    'server creation',
                    self.compute_client, name, security_groups)

                self.servers.append(server)

            floating_ip = self.verify(
                20, self._create_floating_ip, 3,
                "Floating IP can not be created.",
                'floating IP creation')

            self.floating_ips.append(floating_ip)

        if self.servers and self.floating_ips:
            self.verify(10, self._assign_floating_ip_to_instance, 4,
                        "Floating IP can not be assigned.",
                        "floating IP assignment",
                        self.compute_client,
                        self.servers[0],
                        self.floating_ips[0])

        if self.floating_ips:
            ip_address = self.floating_ips[0].ip
            LOG.debug(ip_address)
            self.verify(100, self._check_connectivity_from_vm,
                        5, ("Connectivity to 8.8.8.8 from the VM doesn`t "
                            "function properly."),
                        'public connectivity checking from VM', ip_address)
Ejemplo n.º 53
0
 def _create_image(self, server):
     snapshot_name = rand_name('ost1_test-snapshot-')
     create_image_client = self.compute_client.servers.create_image
     image_id = create_image_client(server, snapshot_name)
     self.addCleanup(self.compute_client.images.delete, image_id)
     self._wait_for_server_status(server, 'ACTIVE')
     self._wait_for_image_status(image_id, 'ACTIVE')
     snapshot_image = self.compute_client.images.get(image_id)
     self.verify_response_body_content(
         snapshot_name, snapshot_image.name,
         msg="Please refer to OpenStack logs for more details.")
     return image_id
Ejemplo n.º 54
0
    def test_2_vcenter_check_internet_connectivity_without_floatingIP(self):
        """vCenter: Check network connectivity from instance without floating \
            IP
        Target component: Nova

        Scenario:
            1. Create a new security group (if it doesn`t exist yet).
            2. Create an instance using the new security group.
            (if it doesn`t exist yet).
            3. Check that public IP 8.8.8.8 can be pinged from instance.
            4. Delete server.

        Duration: 300 s.
        Available since release: 2014.2-6.1
        Deployment tags: nova_network, use_vcenter
        """
        self.check_image_exists()
        if not self.security_groups:
            self.security_groups[self.tenant_id] = self.verify(
                25, self._create_security_group, 1,
                "Security group can not be created.",
                'security group creation', self.compute_client)

        name = rand_name('ost1_test-server-smoke-')
        security_groups = [self.security_groups[self.tenant_id].name]
        img_name = 'TestVM-VMDK'
        compute = None

        server = self.verify(
            250, self._create_server, 2,
            "Server can not be created.",
            'server creation',
            self.compute_client, name, security_groups, None, None, img_name)

        try:
            for addr in server.addresses:
                if addr.startswith('novanetwork'):
                    instance_ip = server.addresses[addr][0]['addr']
        except Exception:
            LOG.exception()
            self.fail("Step 3 failed: cannot get instance details. "
                      "Please refer to OpenStack logs for more details.")

        self.verify(400, self._check_connectivity_from_vm,
                    3, ("Connectivity to 8.8.8.8 from the VM doesn`t "
                        "function properly."),
                    'public connectivity checking from VM',
                    instance_ip, 30, (6, 30), compute)

        self.verify(30, self._delete_server, 4,
                    "Server can not be deleted. ",
                    "server deletion", server)
Ejemplo n.º 55
0
    def create_flavor(self, ram=1024, vcpus=1, disk=20):
        """This method creates a flavor for Sahara tests.

        All resources created by this method will be automatically deleted.
        """

        LOG.debug('Creating flavor for Sahara tests...')
        name = rand_name('sahara-flavor-')
        flavor = self.compute_client.flavors.create(name, ram, vcpus, disk)
        self.addCleanup(self.compute_client.flavors.delete, flavor.id)
        LOG.debug('Flavor for Sahara tests has been created.')

        return flavor.id
Ejemplo n.º 56
0
    def _create_node_group_template(
            cls, client, name, plugin_name, plugin_version, description,
            volumes_per_node, volume_size, node_processes, node_configs,
            floating_ip_pool=None):

        body = client.node_group_templates.create(
            rand_name(name), plugin_name, plugin_version, cls.sahara_flavor,
            description, volumes_per_node, volume_size, node_processes,
            node_configs, floating_ip_pool)

        if body:
            cls.node_groups.append(body.id)
            return body
Ejemplo n.º 57
0
 def _boot_image(self, image_id):
     if not self.find_micro_flavor():
         self.fail("Flavor for tests was not created. Seems that "
                   "something is wrong with nova services.")
     else:
         flavor_id = self.micro_flavors[0]
     disk = self.glance_client_v1.images.get(image_id).disk_format
     if disk == 'vmdk':
         az_name = 'vcenter'
     else:
         az_name = 'nova'
     name = rand_name('ost1_test-image')
     client = self.compute_client
     LOG.debug("name:%s, image:%s" % (name, image_id))
     if 'neutron' in self.config.network.network_provider:
         network = [
             net.id for net in self.compute_client.networks.list()
             if net.label == self.private_net
         ]
         if network:
             create_kwargs = {
                 'nics': [
                     {
                         'net-id': network[0]
                     },
                 ],
             }
         else:
             self.fail("Default private network '{0}' isn't present. "
                       "Please verify it is properly created.".format(
                           self.private_net))
         server = client.servers.create(name=name,
                                        image=image_id,
                                        flavor=flavor_id,
                                        availability_zone=az_name,
                                        **create_kwargs)
     else:
         server = client.servers.create(name=name,
                                        image=image_id,
                                        flavor=flavor_id,
                                        availability_zone=az_name)
     self.set_resource(name, server)
     self.verify_response_body_content(
         name,
         server.name,
         msg="Please refer to OpenStack logs for more details.")
     self._wait_for_server_status(server, 'ACTIVE')
     server = client.servers.get(server)  # getting network information
     LOG.debug("server:%s" % server)
     return server