blob: 711b4417c27c463a06b0c9341d5bc6c1d01b21e8 [file] [log] [blame]
Ken'ichi Ohmichi3cf16272017-04-25 11:49:18 -07001# Copyright 2012 OpenStack Foundation
2# All Rights Reserved.
3#
4# Licensed under the Apache License, Version 2.0 (the "License"); you may
5# not use this file except in compliance with the License. You may obtain
6# a copy of the License at
7#
8# http://www.apache.org/licenses/LICENSE-2.0
9#
10# Unless required by applicable law or agreed to in writing, software
11# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
12# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
13# License for the specific language governing permissions and limitations
14# under the License.
15
16import testtools
17
18from tempest.api.compute import base
19from tempest.common.utils.linux import remote_client
Andrea Frittoli9f416dd2017-08-10 15:38:00 +010020from tempest.common import waiters
Ken'ichi Ohmichi3cf16272017-04-25 11:49:18 -070021from tempest import config
22from tempest.lib.common.utils import data_utils
Andrea Frittoli9f416dd2017-08-10 15:38:00 +010023from tempest.lib.common.utils import test_utils
Ken'ichi Ohmichi3cf16272017-04-25 11:49:18 -070024from tempest.lib import decorators
25
26CONF = config.CONF
27
28
29class ServersWithSpecificFlavorTestJSON(base.BaseV2ComputeAdminTest):
Ken'ichi Ohmichi3cf16272017-04-25 11:49:18 -070030 @classmethod
31 def setup_credentials(cls):
32 cls.prepare_instance_network()
33 super(ServersWithSpecificFlavorTestJSON, cls).setup_credentials()
34
35 @classmethod
36 def setup_clients(cls):
37 super(ServersWithSpecificFlavorTestJSON, cls).setup_clients()
38 cls.client = cls.servers_client
39
Ken'ichi Ohmichi3cf16272017-04-25 11:49:18 -070040 @decorators.idempotent_id('b3c7bcfc-bb5b-4e22-b517-c7f686b802ca')
41 @testtools.skipUnless(CONF.validation.run_validation,
42 'Instance validation tests are disabled.')
43 def test_verify_created_server_ephemeral_disk(self):
44 # Verify that the ephemeral disk is created when creating server
45 flavor_base = self.flavors_client.show_flavor(
46 self.flavor_ref)['flavor']
47
48 def create_flavor_with_ephemeral(ephem_disk):
49 name = 'flavor_with_ephemeral_%s' % ephem_disk
50 flavor_name = data_utils.rand_name(name)
51
52 ram = flavor_base['ram']
53 vcpus = flavor_base['vcpus']
54 disk = flavor_base['disk']
55
56 # Create a flavor with ephemeral disk
57 flavor = self.create_flavor(name=flavor_name, ram=ram, vcpus=vcpus,
58 disk=disk, ephemeral=ephem_disk)
zhuflc88e0a12017-12-28 11:30:01 +080059
60 # Set extra specs same as self.flavor_ref for the created flavor,
61 # because the environment may need some special extra specs to
62 # create server which should have been contained in
63 # self.flavor_ref.
64 extra_spec_keys = \
65 self.admin_flavors_client.list_flavor_extra_specs(
66 self.flavor_ref)['extra_specs']
67 if extra_spec_keys:
68 self.admin_flavors_client.set_flavor_extra_spec(
69 flavor['id'], **extra_spec_keys)
70
Ken'ichi Ohmichi3cf16272017-04-25 11:49:18 -070071 return flavor['id']
72
73 flavor_with_eph_disk_id = create_flavor_with_ephemeral(ephem_disk=1)
74 flavor_no_eph_disk_id = create_flavor_with_ephemeral(ephem_disk=0)
75
76 admin_pass = self.image_ssh_password
77
Andrea Frittoli9f416dd2017-08-10 15:38:00 +010078 validation_resources = self.get_test_validation_resources(
79 self.os_primary)
Ken'ichi Ohmichi3cf16272017-04-25 11:49:18 -070080 server_no_eph_disk = self.create_test_server(
81 validatable=True,
Andrea Frittoli9f416dd2017-08-10 15:38:00 +010082 validation_resources=validation_resources,
Ken'ichi Ohmichi3cf16272017-04-25 11:49:18 -070083 wait_until='ACTIVE',
84 adminPass=admin_pass,
85 flavor=flavor_no_eph_disk_id)
86
Andrea Frittoli9f416dd2017-08-10 15:38:00 +010087 self.addCleanup(waiters.wait_for_server_termination,
88 self.servers_client, server_no_eph_disk['id'])
89 self.addCleanup(test_utils.call_and_ignore_notfound_exc,
90 self.servers_client.delete_server,
91 server_no_eph_disk['id'])
92
Ken'ichi Ohmichi3cf16272017-04-25 11:49:18 -070093 # Get partition number of server without ephemeral disk.
94 server_no_eph_disk = self.client.show_server(
95 server_no_eph_disk['id'])['server']
96 linux_client = remote_client.RemoteClient(
Andrea Frittoli9f416dd2017-08-10 15:38:00 +010097 self.get_server_ip(server_no_eph_disk,
98 validation_resources),
Ken'ichi Ohmichi3cf16272017-04-25 11:49:18 -070099 self.ssh_user,
100 admin_pass,
Andrea Frittoli9f416dd2017-08-10 15:38:00 +0100101 validation_resources['keypair']['private_key'],
Ken'ichi Ohmichi3cf16272017-04-25 11:49:18 -0700102 server=server_no_eph_disk,
103 servers_client=self.client)
104 disks_num = len(linux_client.get_disks().split('\n'))
105
106 # Explicit server deletion necessary for Juno compatibility
107 self.client.delete_server(server_no_eph_disk['id'])
108
109 server_with_eph_disk = self.create_test_server(
110 validatable=True,
Andrea Frittoli9f416dd2017-08-10 15:38:00 +0100111 validation_resources=validation_resources,
Ken'ichi Ohmichi3cf16272017-04-25 11:49:18 -0700112 wait_until='ACTIVE',
113 adminPass=admin_pass,
114 flavor=flavor_with_eph_disk_id)
115
Andrea Frittoli9f416dd2017-08-10 15:38:00 +0100116 self.addCleanup(waiters.wait_for_server_termination,
117 self.servers_client, server_with_eph_disk['id'])
118 self.addCleanup(test_utils.call_and_ignore_notfound_exc,
119 self.servers_client.delete_server,
120 server_with_eph_disk['id'])
121
Ken'ichi Ohmichi3cf16272017-04-25 11:49:18 -0700122 server_with_eph_disk = self.client.show_server(
123 server_with_eph_disk['id'])['server']
124 linux_client = remote_client.RemoteClient(
Andrea Frittoli9f416dd2017-08-10 15:38:00 +0100125 self.get_server_ip(server_with_eph_disk,
126 validation_resources),
Ken'ichi Ohmichi3cf16272017-04-25 11:49:18 -0700127 self.ssh_user,
128 admin_pass,
Andrea Frittoli9f416dd2017-08-10 15:38:00 +0100129 validation_resources['keypair']['private_key'],
Ken'ichi Ohmichi3cf16272017-04-25 11:49:18 -0700130 server=server_with_eph_disk,
131 servers_client=self.client)
132 disks_num_eph = len(linux_client.get_disks().split('\n'))
133 self.assertEqual(disks_num + 1, disks_num_eph)