blob: 15212492bb9661e96bf334ce33881c743e9ea044 [file] [log] [blame]
ZhiQiang Fan39f97222013-09-20 04:49:44 +08001# Copyright 2012 OpenStack Foundation
Attila Fazekasa23f5002012-10-23 19:32:45 +02002# 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
Matthew Treinisha83a16e2012-12-07 13:44:02 -050016import os
17
Matthew Treinish01472ff2015-02-20 17:26:52 -050018from tempest_lib.common.utils import data_utils
19
Matthew Treinish88f49ef2014-01-29 18:36:27 +000020from tempest import config
Chris Hoge7579c1a2015-02-26 14:12:15 -080021from tempest import test
Masayuki Igawa224a8272014-02-17 15:07:43 +090022from tempest.thirdparty.boto import test as boto_test
23from tempest.thirdparty.boto.utils import s3
Attila Fazekasa23f5002012-10-23 19:32:45 +020024
Matthew Treinish88f49ef2014-01-29 18:36:27 +000025CONF = config.CONF
26
Attila Fazekasa23f5002012-10-23 19:32:45 +020027
Masayuki Igawa224a8272014-02-17 15:07:43 +090028class S3ImagesTest(boto_test.BotoTestCase):
Attila Fazekasa23f5002012-10-23 19:32:45 +020029
30 @classmethod
Emily Hugenbruche252a4a2015-02-27 15:43:12 +000031 def setup_clients(cls):
32 super(S3ImagesTest, cls).setup_clients()
33 cls.s3_client = cls.os.s3_client
34 cls.images_client = cls.os.ec2api_client
35
36 @classmethod
Andrea Frittoli29fea352014-09-15 13:31:14 +010037 def resource_setup(cls):
38 super(S3ImagesTest, cls).resource_setup()
Attila Fazekas234d3e82013-02-22 16:39:49 +010039 if not cls.conclusion['A_I_IMAGES_READY']:
ivan-zhu1feeb382013-01-24 10:14:39 +080040 raise cls.skipException("".join(("EC2 ", cls.__name__,
41 ": requires ami/aki/ari manifest")))
Matthew Treinish88f49ef2014-01-29 18:36:27 +000042 cls.materials_path = CONF.boto.s3_materials_path
43 cls.ami_manifest = CONF.boto.ami_manifest
44 cls.aki_manifest = CONF.boto.aki_manifest
45 cls.ari_manifest = CONF.boto.ari_manifest
Attila Fazekasa23f5002012-10-23 19:32:45 +020046 cls.ami_path = cls.materials_path + os.sep + cls.ami_manifest
47 cls.aki_path = cls.materials_path + os.sep + cls.aki_manifest
48 cls.ari_path = cls.materials_path + os.sep + cls.ari_manifest
Ken'ichi Ohmichia498b1d2015-03-23 01:56:52 +000049 cls.bucket_name = data_utils.rand_name("bucket")
Attila Fazekasa23f5002012-10-23 19:32:45 +020050 bucket = cls.s3_client.create_bucket(cls.bucket_name)
51 cls.addResourceCleanUp(cls.destroy_bucket,
52 cls.s3_client.connection_data,
53 cls.bucket_name)
Masayuki Igawa224a8272014-02-17 15:07:43 +090054 s3.s3_upload_dir(bucket, cls.materials_path)
Attila Fazekasa23f5002012-10-23 19:32:45 +020055
Chris Hoge7579c1a2015-02-26 14:12:15 -080056 @test.idempotent_id('f9d360a5-0188-4c77-9db2-4c34c28d12a5')
Attila Fazekasa23f5002012-10-23 19:32:45 +020057 def test_register_get_deregister_ami_image(self):
Sean Dague64ef48d2013-01-03 17:54:36 -050058 # Register and deregister ami image
Ken'ichi Ohmichia498b1d2015-03-23 01:56:52 +000059 image = {"name": data_utils.rand_name("ami-name"),
Attila Fazekasa23f5002012-10-23 19:32:45 +020060 "location": self.bucket_name + "/" + self.ami_manifest,
61 "type": "ami"}
62 image["image_id"] = self.images_client.register_image(
Sean Dague14c68182013-04-14 15:34:30 -040063 name=image["name"],
64 image_location=image["location"])
Attila Fazekas3e381f72013-08-01 16:52:23 +020065 # NOTE(afazekas): delete_snapshot=True might trigger boto lib? bug
Attila Fazekasa23f5002012-10-23 19:32:45 +020066 image["cleanUp"] = self.addResourceCleanUp(
Sean Dague14c68182013-04-14 15:34:30 -040067 self.images_client.deregister_image,
68 image["image_id"])
Attila Fazekasa23f5002012-10-23 19:32:45 +020069 self.assertEqual(image["image_id"][0:3], image["type"])
70 retrieved_image = self.images_client.get_image(image["image_id"])
71 self.assertTrue(retrieved_image.name == image["name"])
72 self.assertTrue(retrieved_image.id == image["image_id"])
Attila Fazekas95d4f1f2013-07-26 07:40:02 +020073 if retrieved_image.state != "available":
74 self.assertImageStateWait(retrieved_image, "available")
Attila Fazekasa23f5002012-10-23 19:32:45 +020075 self.images_client.deregister_image(image["image_id"])
Hoisaleshwara Madan V Saed773c2013-05-27 16:53:44 +053076 self.assertNotIn(image["image_id"], str(
77 self.images_client.get_all_images()))
Attila Fazekasa23f5002012-10-23 19:32:45 +020078 self.cancelResourceCleanUp(image["cleanUp"])
79
Chris Hoge7579c1a2015-02-26 14:12:15 -080080 @test.idempotent_id('42cca5b0-453b-4618-b99f-dbc039db426f')
Attila Fazekasa23f5002012-10-23 19:32:45 +020081 def test_register_get_deregister_aki_image(self):
Sean Dague64ef48d2013-01-03 17:54:36 -050082 # Register and deregister aki image
Ken'ichi Ohmichia498b1d2015-03-23 01:56:52 +000083 image = {"name": data_utils.rand_name("aki-name"),
Hoisaleshwara Madan V Saed773c2013-05-27 16:53:44 +053084 "location": self.bucket_name + "/" + self.aki_manifest,
Attila Fazekasa23f5002012-10-23 19:32:45 +020085 "type": "aki"}
86 image["image_id"] = self.images_client.register_image(
Sean Dague14c68182013-04-14 15:34:30 -040087 name=image["name"],
88 image_location=image["location"])
Attila Fazekasa23f5002012-10-23 19:32:45 +020089 image["cleanUp"] = self.addResourceCleanUp(
Sean Dague14c68182013-04-14 15:34:30 -040090 self.images_client.deregister_image,
91 image["image_id"])
Attila Fazekasa23f5002012-10-23 19:32:45 +020092 self.assertEqual(image["image_id"][0:3], image["type"])
93 retrieved_image = self.images_client.get_image(image["image_id"])
94 self.assertTrue(retrieved_image.name == image["name"])
95 self.assertTrue(retrieved_image.id == image["image_id"])
96 self.assertIn(retrieved_image.state, self.valid_image_state)
97 if retrieved_image.state != "available":
Attila Fazekas40aa3612013-01-19 22:16:38 +010098 self.assertImageStateWait(retrieved_image, "available")
Attila Fazekasa23f5002012-10-23 19:32:45 +020099 self.images_client.deregister_image(image["image_id"])
Hoisaleshwara Madan V Saed773c2013-05-27 16:53:44 +0530100 self.assertNotIn(image["image_id"], str(
101 self.images_client.get_all_images()))
Attila Fazekasa23f5002012-10-23 19:32:45 +0200102 self.cancelResourceCleanUp(image["cleanUp"])
103
Chris Hoge7579c1a2015-02-26 14:12:15 -0800104 @test.idempotent_id('1359e860-841c-43bb-80f3-bb389cbfd81d')
Attila Fazekasa23f5002012-10-23 19:32:45 +0200105 def test_register_get_deregister_ari_image(self):
Sean Dague64ef48d2013-01-03 17:54:36 -0500106 # Register and deregister ari image
Ken'ichi Ohmichia498b1d2015-03-23 01:56:52 +0000107 image = {"name": data_utils.rand_name("ari-name"),
Attila Fazekasa23f5002012-10-23 19:32:45 +0200108 "location": "/" + self.bucket_name + "/" + self.ari_manifest,
109 "type": "ari"}
110 image["image_id"] = self.images_client.register_image(
Sean Dague14c68182013-04-14 15:34:30 -0400111 name=image["name"],
112 image_location=image["location"])
Attila Fazekasa23f5002012-10-23 19:32:45 +0200113 image["cleanUp"] = self.addResourceCleanUp(
Sean Dague14c68182013-04-14 15:34:30 -0400114 self.images_client.deregister_image,
115 image["image_id"])
Attila Fazekasa23f5002012-10-23 19:32:45 +0200116 self.assertEqual(image["image_id"][0:3], image["type"])
117 retrieved_image = self.images_client.get_image(image["image_id"])
118 self.assertIn(retrieved_image.state, self.valid_image_state)
119 if retrieved_image.state != "available":
Attila Fazekas40aa3612013-01-19 22:16:38 +0100120 self.assertImageStateWait(retrieved_image, "available")
Attila Fazekasa23f5002012-10-23 19:32:45 +0200121 self.assertIn(retrieved_image.state, self.valid_image_state)
122 self.assertTrue(retrieved_image.name == image["name"])
123 self.assertTrue(retrieved_image.id == image["image_id"])
124 self.images_client.deregister_image(image["image_id"])
125 self.cancelResourceCleanUp(image["cleanUp"])
126
Attila Fazekas3e381f72013-08-01 16:52:23 +0200127# TODO(afazekas): less copy-paste style