blob: 03e6e414e577760e5a500e0644d7e8afa05b667e [file] [log] [blame]
Jay Pipes051075a2012-04-28 17:39:37 -04001# vim: tabstop=4 shiftwidth=4 softtabstop=4
2
ZhiQiang Fan39f97222013-09-20 04:49:44 +08003# Copyright 2012 OpenStack Foundation
Jay Pipes051075a2012-04-28 17:39:37 -04004# 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
Matthew Treinish2153ec02013-09-09 20:57:30 +000021from tempest.test import services
Jay Pipes051075a2012-04-28 17:39:37 -040022
23LOG = logging.getLogger(__name__)
24
25
Sean Dague6dbc6da2013-05-08 17:49:46 -040026class TestServerBasicOps(manager.OfficialClientTest):
Jay Pipes051075a2012-04-28 17:39:37 -040027
28 """
29 This smoke test case follows this basic set of operations:
30
31 * Create a keypair for use in launching an instance
32 * Create a security group to control network access in instance
33 * Add simple permissive rules to the security group
34 * Launch an instance
35 * Pause/unpause the instance
36 * Suspend/resume the instance
37 * Terminate the instance
38 """
39
Ken'ichi Ohmichi599d1b82013-08-19 18:48:37 +090040 def add_keypair(self):
41 self.keypair = self.create_keypair()
Jay Pipes051075a2012-04-28 17:39:37 -040042
ivan-zhu19977392013-01-12 21:57:55 +080043 def create_security_group(self):
Jay Pipes051075a2012-04-28 17:39:37 -040044 sg_name = rand_name('secgroup-smoke')
45 sg_desc = sg_name + " description"
Maru Newbydec13ec2012-08-30 11:19:17 -070046 self.secgroup = self.compute_client.security_groups.create(sg_name,
47 sg_desc)
Giulio Fidente92f77192013-08-26 17:13:28 +020048 self.assertEqual(self.secgroup.name, sg_name)
49 self.assertEqual(self.secgroup.description, sg_desc)
50 self.set_resource('secgroup', self.secgroup)
Jay Pipes051075a2012-04-28 17:39:37 -040051
52 # Add rules to the security group
Ken'ichi Ohmichi3c1f5192013-08-19 19:02:15 +090053 self.create_loginable_secgroup_rule(secgroup_id=self.secgroup.id)
Jay Pipes051075a2012-04-28 17:39:37 -040054
ivan-zhu19977392013-01-12 21:57:55 +080055 def boot_instance(self):
Jay Pipes051075a2012-04-28 17:39:37 -040056 create_kwargs = {
Ken'ichi Ohmichi599d1b82013-08-19 18:48:37 +090057 'key_name': self.keypair.id
Jay Pipes051075a2012-04-28 17:39:37 -040058 }
Ken'ichi Ohmichi61f272b2013-08-15 15:58:53 +090059 instance = self.create_server(self.compute_client,
60 create_kwargs=create_kwargs)
61 self.set_resource('instance', instance)
Jay Pipes051075a2012-04-28 17:39:37 -040062
ivan-zhu19977392013-01-12 21:57:55 +080063 def pause_server(self):
Jay Pipes051075a2012-04-28 17:39:37 -040064 instance = self.get_resource('instance')
65 instance_id = instance.id
66 LOG.debug("Pausing instance %s. Current status: %s",
67 instance_id, instance.status)
68 instance.pause()
Sean Dague35a7caf2013-05-10 10:38:22 -040069 self.status_timeout(
70 self.compute_client.servers, instance_id, 'PAUSED')
Jay Pipes051075a2012-04-28 17:39:37 -040071
ivan-zhu19977392013-01-12 21:57:55 +080072 def unpause_server(self):
Jay Pipes051075a2012-04-28 17:39:37 -040073 instance = self.get_resource('instance')
74 instance_id = instance.id
75 LOG.debug("Unpausing instance %s. Current status: %s",
76 instance_id, instance.status)
77 instance.unpause()
Sean Dague35a7caf2013-05-10 10:38:22 -040078 self.status_timeout(
79 self.compute_client.servers, instance_id, 'ACTIVE')
Jay Pipes051075a2012-04-28 17:39:37 -040080
ivan-zhu19977392013-01-12 21:57:55 +080081 def suspend_server(self):
Jay Pipes051075a2012-04-28 17:39:37 -040082 instance = self.get_resource('instance')
83 instance_id = instance.id
84 LOG.debug("Suspending instance %s. Current status: %s",
85 instance_id, instance.status)
86 instance.suspend()
Sean Dague35a7caf2013-05-10 10:38:22 -040087 self.status_timeout(self.compute_client.servers,
Maru Newbydec13ec2012-08-30 11:19:17 -070088 instance_id, 'SUSPENDED')
Jay Pipes051075a2012-04-28 17:39:37 -040089
ivan-zhu19977392013-01-12 21:57:55 +080090 def resume_server(self):
Jay Pipes051075a2012-04-28 17:39:37 -040091 instance = self.get_resource('instance')
92 instance_id = instance.id
93 LOG.debug("Resuming instance %s. Current status: %s",
94 instance_id, instance.status)
95 instance.resume()
Sean Dague35a7caf2013-05-10 10:38:22 -040096 self.status_timeout(
97 self.compute_client.servers, instance_id, 'ACTIVE')
Jay Pipes051075a2012-04-28 17:39:37 -040098
ivan-zhu19977392013-01-12 21:57:55 +080099 def terminate_instance(self):
Jay Pipes051075a2012-04-28 17:39:37 -0400100 instance = self.get_resource('instance')
101 instance.delete()
102 self.remove_resource('instance')
ivan-zhu19977392013-01-12 21:57:55 +0800103
Matthew Treinish2153ec02013-09-09 20:57:30 +0000104 @services('compute', 'network')
ivan-zhu19977392013-01-12 21:57:55 +0800105 def test_server_basicops(self):
Ken'ichi Ohmichi599d1b82013-08-19 18:48:37 +0900106 self.add_keypair()
ivan-zhu19977392013-01-12 21:57:55 +0800107 self.create_security_group()
108 self.boot_instance()
ivan-zhu19977392013-01-12 21:57:55 +0800109 self.pause_server()
110 self.unpause_server()
111 self.suspend_server()
112 self.resume_server()
113 self.terminate_instance()