mirror of
https://github.com/saltstack/salt.git
synced 2025-04-17 10:10:20 +00:00
assert instances exist in unified way
This commit is contained in:
parent
03da233c35
commit
6840d5f9e1
15 changed files with 77 additions and 117 deletions
|
@ -69,7 +69,7 @@ class DigitalOceanTest(CloudTest):
|
|||
.format(PROVIDER_NAME)
|
||||
)
|
||||
|
||||
self.assertEqual(self._instance_exists(), False,
|
||||
self.assertFalse(self._instance_exists(),
|
||||
'The instance "{}" exists before it was created by the test'.format(self.instance_name))
|
||||
|
||||
def test_list_images(self):
|
||||
|
@ -151,9 +151,7 @@ class DigitalOceanTest(CloudTest):
|
|||
Test creating an instance on DigitalOcean
|
||||
'''
|
||||
# check if instance with salt installed returned
|
||||
self.assertIn(
|
||||
self.instance_name,
|
||||
[i.strip() for i in self.run_cloud('-p digitalocean-test {0}'.format(self.instance_name), timeout=TIMEOUT)]
|
||||
)
|
||||
self.assertEqual(self._instance_exists(), True)
|
||||
ret_str = self.run_cloud('-p digitalocean-test {0}'.format(self.instance_name), timeout=TIMEOUT)
|
||||
self.assertInstanceExists(ret_str)
|
||||
|
||||
self._destroy_instance()
|
||||
|
|
|
@ -64,7 +64,7 @@ class DimensionDataTest(CloudTest):
|
|||
.format(PROVIDER_NAME)
|
||||
)
|
||||
|
||||
self.assertEqual(self._instance_exists(), False,
|
||||
self.assertFalse(self._instance_exists(),
|
||||
'The instance "{}" exists before it was created by the test'.format(self.instance_name))
|
||||
|
||||
def test_list_images(self):
|
||||
|
@ -102,9 +102,7 @@ class DimensionDataTest(CloudTest):
|
|||
Test creating an instance on Dimension Data's cloud
|
||||
'''
|
||||
# check if instance with salt installed returned
|
||||
self.assertIn(
|
||||
self.instance_name,
|
||||
[i.strip() for i in self.run_cloud('-p dimensiondata-test {0}'.format(self.instance_name), timeout=TIMEOUT)]
|
||||
)
|
||||
ret_val = self.run_cloud('-p dimensiondata-test {0}'.format(self.instance_name), timeout=TIMEOUT)
|
||||
self.assertInstanceExists(ret_val)
|
||||
|
||||
self._destroy_instance()
|
||||
|
|
|
@ -107,7 +107,7 @@ class EC2Test(CloudTest):
|
|||
.format(PROVIDER_NAME)
|
||||
)
|
||||
|
||||
self.assertEqual(self._instance_exists(), False,
|
||||
self.assertFalse(self._instance_exists(),
|
||||
'The instance "{}" exists before it was created by the test'.format(self.instance_name))
|
||||
|
||||
def override_profile_config(self, name, data):
|
||||
|
@ -141,12 +141,10 @@ class EC2Test(CloudTest):
|
|||
if debug:
|
||||
cmd.extend(['-l', 'debug'])
|
||||
cmd.append(self.instance_name)
|
||||
instance = self.run_cloud(' '.join(cmd), timeout=TIMEOUT)
|
||||
ret_str = '{0}:'.format(self.instance_name)
|
||||
ret_val = self.run_cloud(' '.join(cmd), timeout=TIMEOUT)
|
||||
|
||||
# check if instance returned with salt installed
|
||||
self.assertIn(ret_str, instance)
|
||||
self.assertEqual(self._instance_exists(), True)
|
||||
self.assertInstanceExists(ret_val)
|
||||
|
||||
self._destroy_instance()
|
||||
|
||||
|
@ -157,11 +155,10 @@ class EC2Test(CloudTest):
|
|||
# Start with a name that is different from usual so that it will get deleted normally after the test
|
||||
changed_name = self.instance_name + '-changed'
|
||||
# create the instance
|
||||
instance = self.run_cloud('-p ec2-test {0} --no-deploy'.format(changed_name), timeout=TIMEOUT)
|
||||
ret_str = '{0}:'.format(changed_name)
|
||||
ret_val = self.run_cloud('-p ec2-test {0} --no-deploy'.format(changed_name), timeout=TIMEOUT)
|
||||
|
||||
# check if instance returned
|
||||
self.assertIn(ret_str, instance)
|
||||
self.assertInstanceExists(ret_val)
|
||||
|
||||
change_name = self.run_cloud('-a rename {0} newname={1} --assume-yes'.format(changed_name, self.instance_name),
|
||||
timeout=TIMEOUT)
|
||||
|
|
|
@ -75,12 +75,10 @@ class GCETest(CloudTest):
|
|||
'''
|
||||
|
||||
# create the instance
|
||||
instance = self.run_cloud('-p gce-test {0}'.format(self.instance_name), timeout=TIMEOUT)
|
||||
ret_str = '{0}:'.format(self.instance_name)
|
||||
ret_str = self.run_cloud('-p gce-test {0}'.format(self.instance_name), timeout=TIMEOUT)
|
||||
|
||||
# check if instance returned with salt installed
|
||||
self.assertIn(ret_str, instance)
|
||||
self.assertEqual(self._instance_exists(), True)
|
||||
self.assertInstanceExists(ret_str)
|
||||
self._destroy_instance()
|
||||
|
||||
def test_instance_extra(self):
|
||||
|
@ -89,12 +87,8 @@ class GCETest(CloudTest):
|
|||
'''
|
||||
|
||||
# create the instance
|
||||
instance = self.run_cloud('-p gce-test-extra \
|
||||
{0}'.format(self.instance_name),
|
||||
timeout=TIMEOUT)
|
||||
ret_str = '{0}:'.format(self.instance_name)
|
||||
|
||||
ret_str = self.run_cloud('-p gce-test-extra {0}'.format(self.instance_name), timeout=TIMEOUT)
|
||||
# check if instance returned with salt installed
|
||||
self.assertIn(ret_str, instance)
|
||||
self.assertEqual(self._instance_exists(), True)
|
||||
self.assertInstanceExists(ret_str)
|
||||
|
||||
self._destroy_instance()
|
||||
|
|
|
@ -64,7 +64,7 @@ class GoGridTest(CloudTest):
|
|||
.format(PROVIDER_NAME)
|
||||
)
|
||||
|
||||
self.assertEqual(self._instance_exists(), False,
|
||||
self.assertFalse(self._instance_exists(),
|
||||
'The instance "{}" exists before it was created by the test'.format(self.instance_name))
|
||||
|
||||
def test_instance(self):
|
||||
|
@ -72,9 +72,7 @@ class GoGridTest(CloudTest):
|
|||
Test creating an instance on GoGrid
|
||||
'''
|
||||
# check if instance with salt installed returned
|
||||
self.assertIn(
|
||||
self.instance_name,
|
||||
[i.strip() for i in self.run_cloud('-p gogrid-test {0}'.format(self.instance_name), timeout=TIMEOUT)]
|
||||
)
|
||||
self.assertEqual(self._instance_exists(), True)
|
||||
ret_str = self.run_cloud('-p gogrid-test {0}'.format(self.instance_name), timeout=TIMEOUT)
|
||||
self.assertInstanceExists(ret_str)
|
||||
|
||||
self._destroy_instance()
|
||||
|
|
|
@ -8,10 +8,9 @@ from __future__ import absolute_import, print_function, unicode_literals
|
|||
import os
|
||||
|
||||
# Import Salt Testing Libs
|
||||
from unittest import skipIf
|
||||
|
||||
from tests.support.paths import FILES
|
||||
from tests.support.helpers import expensiveTest
|
||||
from tests.support.paths import FILES
|
||||
from tests.support.unit import skipIf
|
||||
|
||||
# Import Salt Libs
|
||||
from salt.config import cloud_providers_config
|
||||
|
@ -67,16 +66,14 @@ class JoyentTest(CloudTest):
|
|||
'tests/integration/files/conf/cloud.providers.d/{0}.conf'
|
||||
.format(PROVIDER_NAME)
|
||||
)
|
||||
self.assertEqual(self._instance_exists(), False,
|
||||
self.assertFalse(self._instance_exists(),
|
||||
'The instance "{}" exists before it was created by the test'.format(self.instance_name))
|
||||
|
||||
def test_instance(self):
|
||||
'''
|
||||
Test creating and deleting instance on Joyent
|
||||
'''
|
||||
self.assertIn(
|
||||
self.instance_name,
|
||||
[i.strip() for i in self.run_cloud('-p joyent-test {0}'.format(self.instance_name), timeout=TIMEOUT)]
|
||||
)
|
||||
self.assertEqual(self._instance_exists(), True)
|
||||
ret_str = self.run_cloud('-p joyent-test {0}'.format(self.instance_name), timeout=TIMEOUT)
|
||||
self.assertInstanceExists(ret_str)
|
||||
|
||||
self._destroy_instance()
|
||||
|
|
|
@ -62,7 +62,7 @@ class LinodeTest(CloudTest):
|
|||
)
|
||||
)
|
||||
|
||||
self.assertEqual(self._instance_exists(), False,
|
||||
self.assertFalse(self._instance_exists(),
|
||||
'The instance "{}" exists before it was created by the test'.format(self.instance_name))
|
||||
|
||||
def test_instance(self):
|
||||
|
@ -70,9 +70,7 @@ class LinodeTest(CloudTest):
|
|||
Test creating an instance on Linode
|
||||
'''
|
||||
# check if instance with salt installed returned
|
||||
self.assertIn(
|
||||
self.instance_name,
|
||||
[i.strip() for i in self.run_cloud('-p linode-test {0}'.format(self.instance_name), timeout=TIMEOUT)]
|
||||
)
|
||||
self.assertEqual(self._instance_exists(), True)
|
||||
ret_str = self.run_cloud('-p linode-test {0}'.format(self.instance_name), timeout=TIMEOUT)
|
||||
self.assertInstanceExists(ret_str)
|
||||
|
||||
self._destroy_instance()
|
||||
|
|
|
@ -51,6 +51,7 @@ def __has_required_azure():
|
|||
return False
|
||||
|
||||
|
||||
@skipIf(True, 'MSAzure will be deprecated in favor of azurearm')
|
||||
@skipIf(HAS_AZURE is False, 'These tests require the Azure Python SDK to be installed.')
|
||||
@skipIf(__has_required_azure() is False, 'The Azure Python SDK must be >= 0.11.1.')
|
||||
class AzureTest(CloudTest):
|
||||
|
@ -110,7 +111,7 @@ class AzureTest(CloudTest):
|
|||
)
|
||||
)
|
||||
|
||||
self.assertEqual(self._instance_exists(), False,
|
||||
self.assertFalse(self._instance_exists(),
|
||||
'The instance "{}" exists before it was created by the test'.format(self.instance_name))
|
||||
|
||||
def test_instance(self):
|
||||
|
@ -118,14 +119,7 @@ class AzureTest(CloudTest):
|
|||
Test creating an instance on Azure
|
||||
'''
|
||||
# check if instance with salt installed returned
|
||||
self.assertIn(
|
||||
self.instance_name,
|
||||
[i.strip() for i in self.run_cloud(
|
||||
'-p {0} {1}'.format(
|
||||
PROFILE_NAME,
|
||||
self.instance_name
|
||||
), timeout=TIMEOUT
|
||||
)]
|
||||
)
|
||||
self.assertEqual(self._instance_exists(), True)
|
||||
ret_val = self.run_cloud('-p {0} {1}'.format(PROFILE_NAME, self.instance_name), timeout=TIMEOUT)
|
||||
self.assertInstanceExists(ret_val)
|
||||
|
||||
self._destroy_instance()
|
||||
|
|
|
@ -72,7 +72,7 @@ class OneAndOneTest(CloudTest):
|
|||
.format(PROVIDER_NAME)
|
||||
)
|
||||
|
||||
self.assertEqual(self._instance_exists(), False,
|
||||
self.assertFalse(self._instance_exists(),
|
||||
'The instance "{}" exists before it was created by the test'.format(INSTANCE_NAME))
|
||||
|
||||
def test_list_images(self):
|
||||
|
@ -90,12 +90,7 @@ class OneAndOneTest(CloudTest):
|
|||
Test creating an instance on 1and1
|
||||
'''
|
||||
# check if instance with salt installed returned
|
||||
self.assertIn(
|
||||
INSTANCE_NAME,
|
||||
[i.strip() for i in self.run_cloud(
|
||||
'-p oneandone-test {0}'.format(INSTANCE_NAME), timeout=TIMEOUT
|
||||
)]
|
||||
)
|
||||
self.assertEqual(self._instance_exists(), True)
|
||||
ret_str = self.run_cloud('-p oneandone-test {0}'.format(INSTANCE_NAME), timeout=TIMEOUT)
|
||||
self.assertInstanceExists(ret_str)
|
||||
|
||||
self._destroy_instance()
|
||||
|
|
|
@ -220,7 +220,7 @@ class RackspaceTest(CloudTest):
|
|||
.format(PROVIDER_NAME)
|
||||
)
|
||||
|
||||
self.assertEqual(self._instance_exists(), False,
|
||||
self.assertFalse(self._instance_exists(),
|
||||
'The instance "{}" exists before it was created by the test'.format(self.instance_name))
|
||||
|
||||
def test_instance(self):
|
||||
|
@ -228,10 +228,7 @@ class RackspaceTest(CloudTest):
|
|||
Test creating an instance on rackspace with the openstack driver
|
||||
'''
|
||||
# check if instance with salt installed returned
|
||||
self.assertIn(
|
||||
self.instance_name,
|
||||
[i.strip() for i in self.run_cloud('-p rackspace-test {0}'.format(self.instance_name), timeout=TIMEOUT)]
|
||||
)
|
||||
ret_val = self.run_cloud('-p rackspace-test {0}'.format(self.instance_name), timeout=TIMEOUT)
|
||||
self.assertInstanceExists(ret_val)
|
||||
|
||||
self.assertEqual(self._instance_exists(), True)
|
||||
self._destroy_instance()
|
||||
|
|
|
@ -76,7 +76,7 @@ class ProfitBricksTest(CloudTest):
|
|||
.format(PROVIDER_NAME)
|
||||
)
|
||||
|
||||
self.assertEqual(self._instance_exists(), False,
|
||||
self.assertFalse(self._instance_exists(),
|
||||
'The instance "{}" exists before it was created by the test'.format(self.instance_name))
|
||||
|
||||
def test_list_images(self):
|
||||
|
@ -188,13 +188,7 @@ class ProfitBricksTest(CloudTest):
|
|||
Test creating an instance on ProfitBricks
|
||||
'''
|
||||
# check if instance with salt installed returned
|
||||
self.assertIn(
|
||||
self.instance_name,
|
||||
[i.strip() for i in self.run_cloud(
|
||||
'-p profitbricks-test {0}'.format(self.instance_name),
|
||||
timeout=TIMEOUT
|
||||
)]
|
||||
)
|
||||
self.assertEqual(self._instance_exists(), True)
|
||||
ret_str = self.run_cloud('-p profitbricks-test {0}'.format(self.instance_name),timeout=TIMEOUT)
|
||||
self.assertInstanceExists(ret_str)
|
||||
|
||||
self._destroy_instance()
|
||||
|
|
|
@ -72,7 +72,7 @@ class VMWareTest(CloudTest):
|
|||
.format(PROVIDER_NAME)
|
||||
)
|
||||
|
||||
self.assertEqual(self._instance_exists(), False,
|
||||
self.assertFalse(self._instance_exists(),
|
||||
'The instance "{}" exists before it was created by the test'.format(self.instance_name))
|
||||
|
||||
def test_instance(self):
|
||||
|
@ -90,14 +90,13 @@ class VMWareTest(CloudTest):
|
|||
profile_config = cloud_config(profile)
|
||||
disk_datastore = profile_config['vmware-test']['devices']['disk']['Hard disk 2']['datastore']
|
||||
|
||||
instance = self.run_cloud('-p vmware-test {0}'.format(self.instance_name), timeout=TIMEOUT)
|
||||
ret_str = '{0}:'.format(self.instance_name)
|
||||
disk_datastore_str = ' [{0}] {1}/Hard disk 2-flat.vmdk'.format(disk_datastore, self.instance_name)
|
||||
ret_val = self.run_cloud('-p vmware-test {0}'.format(self.instance_name), timeout=TIMEOUT)
|
||||
disk_datastore_str = ' [{0}] {1}/Hard disk 2-flat.vmdk'.format(disk_datastore,
|
||||
self.instance_name)
|
||||
|
||||
# check if instance returned with salt installed
|
||||
self.assertIn(ret_str, instance)
|
||||
self.assertEqual(self._instance_exists(), True)
|
||||
self.assertIn(disk_datastore_str, instance,
|
||||
self.assertInstanceExists(ret_val)
|
||||
self.assertIn(disk_datastore_str, ret_val,
|
||||
msg='Hard Disk 2 did not use the Datastore {0} '.format(disk_datastore))
|
||||
|
||||
self._destroy_instance()
|
||||
|
@ -107,21 +106,17 @@ class VMWareTest(CloudTest):
|
|||
Tests creating snapshot and creating vm with --no-deploy
|
||||
'''
|
||||
# create the instance
|
||||
instance = self.run_cloud('-p vmware-test {0} --no-deploy'.format(self.instance_name),
|
||||
timeout=TIMEOUT)
|
||||
ret_str = '{0}:'.format(self.instance_name)
|
||||
ret_val = self.run_cloud('-p vmware-test {0} --no-deploy'.format(self.instance_name),
|
||||
timeout=TIMEOUT)
|
||||
|
||||
# check if instance returned with salt installed
|
||||
self.assertIn(ret_str, instance)
|
||||
self.assertEqual(self._instance_exists(), True)
|
||||
self.assertInstanceExists(ret_val)
|
||||
|
||||
create_snapshot = self.run_cloud('-a create_snapshot {0} \
|
||||
snapshot_name=\'Test Cloud\' \
|
||||
memdump=True -y'.format(self.instance_name),
|
||||
timeout=TIMEOUT)
|
||||
memdump=True -y'.format(self.instance_name), timeout=TIMEOUT)
|
||||
s_ret_str = 'Snapshot created successfully'
|
||||
|
||||
self.assertIn(s_ret_str, six.text_type(create_snapshot))
|
||||
self.assertEqual(self._instance_exists(), True)
|
||||
|
||||
self._destroy_instance()
|
||||
|
|
|
@ -16,7 +16,6 @@ from tests.support.unit import skipIf
|
|||
|
||||
# Import Salt Libs
|
||||
from salt.config import cloud_providers_config
|
||||
from salt.ext import six
|
||||
|
||||
|
||||
# Create the cloud instance name to be used throughout the tests
|
||||
|
@ -67,7 +66,7 @@ class VultrTest(CloudTest):
|
|||
.format(PROVIDER_NAME)
|
||||
)
|
||||
|
||||
self.assertEqual(self._instance_exists(), False,
|
||||
self.assertFalse(self._instance_exists(),
|
||||
'The instance "{}" exists before it was created by the test'.format(self.instance_name))
|
||||
|
||||
def test_list_images(self):
|
||||
|
@ -147,13 +146,8 @@ class VultrTest(CloudTest):
|
|||
Test creating an instance on Vultr
|
||||
'''
|
||||
# check if instance with salt installed returned
|
||||
create_vm = self.run_cloud('-p vultr-test {0}'.format(self.instance_name), timeout=TIMEOUT + 300)
|
||||
self.assertIn(
|
||||
self.instance_name,
|
||||
[i.strip() for i in create_vm]
|
||||
)
|
||||
self.assertNotIn('Failed to start', six.text_type(create_vm))
|
||||
self.assertEqual(self._instance_exists(), True)
|
||||
ret_val = self.run_cloud('-p vultr-test {0}'.format(self.instance_name), timeout=TIMEOUT + 300)
|
||||
self.assertInstanceExists(ret_val)
|
||||
|
||||
# Vultr won't let us delete an instance less than 5 minutes old.
|
||||
time.sleep(300)
|
||||
|
|
|
@ -12,6 +12,9 @@ from time import sleep
|
|||
from tests.support.case import ShellCase
|
||||
from tests.support.helpers import generate_random_name
|
||||
|
||||
# Import Salt Libs
|
||||
from salt.ext import six
|
||||
|
||||
log = logging.getLogger(__name__)
|
||||
TIMEOUT = 500
|
||||
|
||||
|
@ -28,7 +31,16 @@ class CloudTest(ShellCase):
|
|||
# salt-cloud -a show_instance myinstance
|
||||
query = self.run_cloud('--query')
|
||||
log.debug('Checking for "{}" in => {}'.format(self.instance_name, query))
|
||||
return any(self.instance_name is q.strip(': ') for q in query)
|
||||
return any(self.instance_name == q.strip(': ') for q in query)
|
||||
|
||||
def assertInstanceExists(self, creation_ret=None):
|
||||
'''
|
||||
:param creation_ret: The return value from the run_cloud() function that created the instance
|
||||
'''
|
||||
if creation_ret:
|
||||
self.assertIn(self.instance_name, [i.strip(': ') for i in creation_ret])
|
||||
self.assertNotIn('Failed to start', six.text_type(creation_ret))
|
||||
self.assertTrue(self._instance_exists(), 'Instance "{}" was not created successfully')
|
||||
|
||||
def _destroy_instance(self):
|
||||
log.debug('Deleting instance "{}"'.format(self.instance_name))
|
||||
|
@ -52,7 +64,7 @@ class CloudTest(ShellCase):
|
|||
log.warning('Instance "{}" may not have been deleted properly'.format(self.instance_name))
|
||||
|
||||
# By now it should all be over
|
||||
self.assertEqual(self._instance_exists(), False, 'Could not destroy "{}"'.format(self.instance_name))
|
||||
self.assertFalse(self._instance_exists(), 'Could not destroy "{}"'.format(self.instance_name))
|
||||
log.debug('Instance "{}" no longer exists'.format(self.instance_name))
|
||||
|
||||
def tearDown(self):
|
||||
|
@ -71,9 +83,9 @@ class CloudTest(ShellCase):
|
|||
sleep(30)
|
||||
else:
|
||||
break
|
||||
self.assertEqual(self._instance_exists(), False, 'Instance exists after multiple attempts to delete: {}'
|
||||
self.assertFalse(self._instance_exists(), 'Instance exists after multiple attempts to delete: {}'
|
||||
.format(self.instance_name))
|
||||
# Complain if the instance was destroyed in this tearDown.
|
||||
# Destroying instances in the tearDown is a contingency, not the way things should work by default.
|
||||
self.assertEqual(instance_deleted, True, 'The Instance "{}" was not deleted properly at the end of the test'
|
||||
.format(self.instance_name))
|
||||
self.assertTrue(instance_deleted, 'The Instance "{}" was not deleted properly at the end of the test'
|
||||
.format(self.instance_name))
|
||||
|
|
|
@ -54,7 +54,7 @@ class CloudClientTestCase(CloudTest):
|
|||
cloud_client = salt.cloud.CloudClient(self.config_file)
|
||||
|
||||
# Create the VM using salt.cloud.CloudClient.create() instead of calling salt-cloud
|
||||
created = cloud_client.create(
|
||||
ret_val = cloud_client.create(
|
||||
provider=self.provider_name,
|
||||
names=[self.instance_name],
|
||||
image=self.image_name,
|
||||
|
@ -62,8 +62,7 @@ class CloudClientTestCase(CloudTest):
|
|||
)
|
||||
|
||||
# Check that the VM was created correctly
|
||||
self.assertIn(self.instance_name, created)
|
||||
self.assertEqual(self._instance_exists(), True)
|
||||
self.assertInstanceExists(ret_val)
|
||||
|
||||
# Clean up after ourselves and delete the VM
|
||||
deleted = cloud_client.destroy(names=[self.instance_name])
|
||||
|
|
Loading…
Add table
Reference in a new issue