blob: c32d49d86b469ebd766f184b5b34194c7bfdf987 [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 }
Giulio Fidente61cadca2013-09-24 18:33:37 +020059 instance = self.create_server(create_kwargs=create_kwargs)
Ken'ichi Ohmichi61f272b2013-08-15 15:58:53 +090060 self.set_resource('instance', instance)
Jay Pipes051075a2012-04-28 17:39:37 -040061
ivan-zhu19977392013-01-12 21:57:55 +080062 def pause_server(self):
Jay Pipes051075a2012-04-28 17:39:37 -040063 instance = self.get_resource('instance')
64 instance_id = instance.id
65 LOG.debug("Pausing instance %s. Current status: %s",
66 instance_id, instance.status)
67 instance.pause()
Sean Dague35a7caf2013-05-10 10:38:22 -040068 self.status_timeout(
69 self.compute_client.servers, instance_id, 'PAUSED')
Jay Pipes051075a2012-04-28 17:39:37 -040070
ivan-zhu19977392013-01-12 21:57:55 +080071 def unpause_server(self):
Jay Pipes051075a2012-04-28 17:39:37 -040072 instance = self.get_resource('instance')
73 instance_id = instance.id
74 LOG.debug("Unpausing instance %s. Current status: %s",
75 instance_id, instance.status)
76 instance.unpause()
Sean Dague35a7caf2013-05-10 10:38:22 -040077 self.status_timeout(
78 self.compute_client.servers, instance_id, 'ACTIVE')
Jay Pipes051075a2012-04-28 17:39:37 -040079
ivan-zhu19977392013-01-12 21:57:55 +080080 def suspend_server(self):
Jay Pipes051075a2012-04-28 17:39:37 -040081 instance = self.get_resource('instance')
82 instance_id = instance.id
83 LOG.debug("Suspending instance %s. Current status: %s",
84 instance_id, instance.status)
85 instance.suspend()
Sean Dague35a7caf2013-05-10 10:38:22 -040086 self.status_timeout(self.compute_client.servers,
Maru Newbydec13ec2012-08-30 11:19:17 -070087 instance_id, 'SUSPENDED')
Jay Pipes051075a2012-04-28 17:39:37 -040088
ivan-zhu19977392013-01-12 21:57:55 +080089 def resume_server(self):
Jay Pipes051075a2012-04-28 17:39:37 -040090 instance = self.get_resource('instance')
91 instance_id = instance.id
92 LOG.debug("Resuming instance %s. Current status: %s",
93 instance_id, instance.status)
94 instance.resume()
Sean Dague35a7caf2013-05-10 10:38:22 -040095 self.status_timeout(
96 self.compute_client.servers, instance_id, 'ACTIVE')
Jay Pipes051075a2012-04-28 17:39:37 -040097
ivan-zhu19977392013-01-12 21:57:55 +080098 def terminate_instance(self):
Jay Pipes051075a2012-04-28 17:39:37 -040099 instance = self.get_resource('instance')
100 instance.delete()
101 self.remove_resource('instance')
ivan-zhu19977392013-01-12 21:57:55 +0800102
Matthew Treinish2153ec02013-09-09 20:57:30 +0000103 @services('compute', 'network')
ivan-zhu19977392013-01-12 21:57:55 +0800104 def test_server_basicops(self):
Ken'ichi Ohmichi599d1b82013-08-19 18:48:37 +0900105 self.add_keypair()
ivan-zhu19977392013-01-12 21:57:55 +0800106 self.create_security_group()
107 self.boot_instance()
ivan-zhu19977392013-01-12 21:57:55 +0800108 self.pause_server()
109 self.unpause_server()
110 self.suspend_server()
111 self.resume_server()
112 self.terminate_instance()