123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990 |
- # -*- coding: utf-8 -*-
- '''
- Integration tests for functions located in the salt.cloud.__init__.py file.
- '''
- # Import Python Libs
- from __future__ import absolute_import, print_function, unicode_literals
- import os
- import random
- import string
- # Import Salt Testing libs
- from tests.support.case import ShellCase
- from tests.support.helpers import expensiveTest
- from tests.support.runtests import RUNTIME_VARS
- # Import Salt libs
- import salt.cloud
- from salt.ext.six.moves import range
- def __random_name(size=6):
- '''
- Generates a random cloud instance name
- '''
- return 'CLOUD-TEST-' + ''.join(
- random.choice(string.ascii_uppercase + string.digits)
- for x in range(size)
- )
- # Create the cloud instance name to be used throughout the tests
- INSTANCE_NAME = __random_name()
- class CloudClientTestCase(ShellCase):
- '''
- Integration tests for the CloudClient class. Uses DigitalOcean as a salt-cloud provider.
- '''
- @expensiveTest
- def setUp(self):
- self.config_file = os.path.join(RUNTIME_VARS.TMP_CONF_CLOUD_PROVIDER_INCLUDES,
- 'digitalocean.conf')
- self.provider_name = 'digitalocean-config'
- self.image_name = '14.04.5 x64'
- # Use a --list-images salt-cloud call to see if the DigitalOcean provider is
- # configured correctly before running any tests.
- images = self.run_cloud('--list-images {0}'.format(self.provider_name))
- if self.image_name not in [i.strip() for i in images]:
- self.skipTest(
- 'Image \'{0}\' was not found in image search. Is the {1} provider '
- 'configured correctly for this test?'.format(
- self.provider_name,
- self.image_name
- )
- )
- def test_cloud_client_create_and_delete(self):
- '''
- Tests that a VM is created successfully when calling salt.cloud.CloudClient.create(),
- which does not require a profile configuration.
- Also checks that salt.cloud.CloudClient.destroy() works correctly since this test needs
- to remove the VM after creating it.
- This test was created as a regression check against Issue #41971.
- '''
- 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(
- provider=self.provider_name,
- names=[INSTANCE_NAME],
- image=self.image_name,
- location='sfo1',
- size='512mb',
- vm_size='512mb'
- )
- # Check that the VM was created correctly
- self.assertIn(INSTANCE_NAME, created)
- # Clean up after ourselves and delete the VM
- deleted = cloud_client.destroy(names=[INSTANCE_NAME])
- # Check that the VM was deleted correctly
- self.assertIn(INSTANCE_NAME, deleted)
|