# -*- coding: utf-8 -*- """ :codeauthor: Megan Wilhite """ # Import Python Libs from __future__ import absolute_import, print_function, unicode_literals # Import Salt Libs from salt.ext import six # Create the cloud instance name to be used throughout the tests from tests.integration.cloud.helpers.cloud_test_base import TIMEOUT, CloudTest class VMWareTest(CloudTest): """ Integration tests for the vmware cloud provider in Salt-Cloud """ PROVIDER = "vmware" REQUIRED_PROVIDER_CONFIG_ITEMS = ("password", "user", "url") def test_instance(self): """ Tests creating and deleting an instance on vmware and installing salt """ # create the instance disk_datastore = self.config["vmware-test"]["devices"]["disk"]["Hard disk 2"][ "datastore" ] 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.assertInstanceExists(ret_val) self.assertIn( disk_datastore_str, ret_val, msg="Hard Disk 2 did not use the Datastore {0} ".format(disk_datastore), ) self.assertDestroyInstance() def test_snapshot(self): """ Tests creating snapshot and creating vm with --no-deploy """ # create the instance 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.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, ) s_ret_str = "Snapshot created successfully" self.assertIn(s_ret_str, six.text_type(create_snapshot)) self.assertDestroyInstance()