blob: 43ac2d9c00416da839d1677e0abc0a925cf72e1c [file] [log] [blame]
Jay Pipes051075a2012-04-28 17:39:37 -04001# vim: tabstop=4 shiftwidth=4 softtabstop=4
2
3# Copyright 2012 OpenStack, LLC
4# All Rights Reserved.
5#
6# Licensed under the Apache License, Version 2.0 (the "License"); you may
7# not use this file except in compliance with the License. You may obtain
8# a copy of the License at
9#
10# http://www.apache.org/licenses/LICENSE-2.0
11#
12# Unless required by applicable law or agreed to in writing, software
13# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
14# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
15# License for the specific language governing permissions and limitations
16# under the License.
17
Jay Pipes051075a2012-04-28 17:39:37 -040018from tempest.common.utils.data_utils import rand_name
Matthew Treinishf4a9b0f2013-07-26 16:58:26 -040019from tempest.openstack.common import log as logging
Sean Dague6dbc6da2013-05-08 17:49:46 -040020from tempest.scenario import manager
Jay Pipes051075a2012-04-28 17:39:37 -040021
22LOG = logging.getLogger(__name__)
23
24
Sean Dague6dbc6da2013-05-08 17:49:46 -040025class TestServerBasicOps(manager.OfficialClientTest):
Jay Pipes051075a2012-04-28 17:39:37 -040026
27 """
28 This smoke test case follows this basic set of operations:
29
30 * Create a keypair for use in launching an instance
31 * Create a security group to control network access in instance
32 * Add simple permissive rules to the security group
33 * Launch an instance
34 * Pause/unpause the instance
35 * Suspend/resume the instance
36 * Terminate the instance
37 """
38
ivan-zhu19977392013-01-12 21:57:55 +080039 def create_keypair(self):
Jay Pipes051075a2012-04-28 17:39:37 -040040 kp_name = rand_name('keypair-smoke')
Maru Newbydec13ec2012-08-30 11:19:17 -070041 self.keypair = self.compute_client.keypairs.create(kp_name)
Jay Pipes051075a2012-04-28 17:39:37 -040042 try:
43 self.assertEqual(self.keypair.id, kp_name)
44 self.set_resource('keypair', self.keypair)
45 except AttributeError:
46 self.fail("Keypair object not successfully created.")
47
ivan-zhu19977392013-01-12 21:57:55 +080048 def create_security_group(self):
Jay Pipes051075a2012-04-28 17:39:37 -040049 sg_name = rand_name('secgroup-smoke')
50 sg_desc = sg_name + " description"
Maru Newbydec13ec2012-08-30 11:19:17 -070051 self.secgroup = self.compute_client.security_groups.create(sg_name,
52 sg_desc)
Jay Pipes051075a2012-04-28 17:39:37 -040053 try:
54 self.assertEqual(self.secgroup.name, sg_name)
55 self.assertEqual(self.secgroup.description, sg_desc)
56 self.set_resource('secgroup', self.secgroup)
57 except AttributeError:
58 self.fail("SecurityGroup object not successfully created.")
59
60 # Add rules to the security group
61 rulesets = [
62 {
63 'ip_protocol': 'tcp',
64 'from_port': 1,
65 'to_port': 65535,
66 'cidr': '0.0.0.0/0',
67 'group_id': self.secgroup.id
68 },
69 {
70 'ip_protocol': 'icmp',
71 'from_port': -1,
72 'to_port': -1,
73 'cidr': '0.0.0.0/0',
74 'group_id': self.secgroup.id
75 }
76 ]
77 for ruleset in rulesets:
78 try:
Maru Newbydec13ec2012-08-30 11:19:17 -070079 self.compute_client.security_group_rules.create(
Sean Dague14c68182013-04-14 15:34:30 -040080 self.secgroup.id, **ruleset)
Matthew Treinish05d9fb92012-12-07 16:14:05 -050081 except Exception:
Jay Pipes051075a2012-04-28 17:39:37 -040082 self.fail("Failed to create rule in security group.")
83
ivan-zhu19977392013-01-12 21:57:55 +080084 def boot_instance(self):
Jay Pipes051075a2012-04-28 17:39:37 -040085 create_kwargs = {
86 'key_name': self.get_resource('keypair').id
87 }
Ken'ichi Ohmichi61f272b2013-08-15 15:58:53 +090088 instance = self.create_server(self.compute_client,
89 create_kwargs=create_kwargs)
90 self.set_resource('instance', instance)
Jay Pipes051075a2012-04-28 17:39:37 -040091
ivan-zhu19977392013-01-12 21:57:55 +080092 def pause_server(self):
Jay Pipes051075a2012-04-28 17:39:37 -040093 instance = self.get_resource('instance')
94 instance_id = instance.id
95 LOG.debug("Pausing instance %s. Current status: %s",
96 instance_id, instance.status)
97 instance.pause()
Sean Dague35a7caf2013-05-10 10:38:22 -040098 self.status_timeout(
99 self.compute_client.servers, instance_id, 'PAUSED')
Jay Pipes051075a2012-04-28 17:39:37 -0400100
ivan-zhu19977392013-01-12 21:57:55 +0800101 def unpause_server(self):
Jay Pipes051075a2012-04-28 17:39:37 -0400102 instance = self.get_resource('instance')
103 instance_id = instance.id
104 LOG.debug("Unpausing instance %s. Current status: %s",
105 instance_id, instance.status)
106 instance.unpause()
Sean Dague35a7caf2013-05-10 10:38:22 -0400107 self.status_timeout(
108 self.compute_client.servers, instance_id, 'ACTIVE')
Jay Pipes051075a2012-04-28 17:39:37 -0400109
ivan-zhu19977392013-01-12 21:57:55 +0800110 def suspend_server(self):
Jay Pipes051075a2012-04-28 17:39:37 -0400111 instance = self.get_resource('instance')
112 instance_id = instance.id
113 LOG.debug("Suspending instance %s. Current status: %s",
114 instance_id, instance.status)
115 instance.suspend()
Sean Dague35a7caf2013-05-10 10:38:22 -0400116 self.status_timeout(self.compute_client.servers,
Maru Newbydec13ec2012-08-30 11:19:17 -0700117 instance_id, 'SUSPENDED')
Jay Pipes051075a2012-04-28 17:39:37 -0400118
ivan-zhu19977392013-01-12 21:57:55 +0800119 def resume_server(self):
Jay Pipes051075a2012-04-28 17:39:37 -0400120 instance = self.get_resource('instance')
121 instance_id = instance.id
122 LOG.debug("Resuming instance %s. Current status: %s",
123 instance_id, instance.status)
124 instance.resume()
Sean Dague35a7caf2013-05-10 10:38:22 -0400125 self.status_timeout(
126 self.compute_client.servers, instance_id, 'ACTIVE')
Jay Pipes051075a2012-04-28 17:39:37 -0400127
ivan-zhu19977392013-01-12 21:57:55 +0800128 def terminate_instance(self):
Jay Pipes051075a2012-04-28 17:39:37 -0400129 instance = self.get_resource('instance')
130 instance.delete()
131 self.remove_resource('instance')
ivan-zhu19977392013-01-12 21:57:55 +0800132
133 def test_server_basicops(self):
134 self.create_keypair()
135 self.create_security_group()
136 self.boot_instance()
ivan-zhu19977392013-01-12 21:57:55 +0800137 self.pause_server()
138 self.unpause_server()
139 self.suspend_server()
140 self.resume_server()
141 self.terminate_instance()