コード例 #1
0
ファイル: test_deployer.py プロジェクト: kalsky/vCenterShell
class TestVirtualMachineDeployer(TestCase):
    def setUp(self):
        self.name = 'name'
        self.uuid = 'uuid'
        self.name_gen = Mock(return_value=self.name)
        self.pv_service = Mock()
        self.si = Mock()
        self.clone_parmas = Mock()
        self.clone_res = Mock()
        self.clone_res.error = None
        self.clone_res.vm = Mock()
        self.clone_res.vm.summary = Mock()
        self.clone_res.vm.summary.config = Mock()
        self.clone_res.vm.summary.config.uuid = self.uuid
        self.pv_service.CloneVmParameters = Mock(
            return_value=self.clone_parmas)
        self.pv_service.clone_vm = Mock(return_value=self.clone_res)
        self.image_deployer = Mock()
        self.image_deployer.deploy_image = Mock(return_value=True)
        self.vm = Mock()
        self.vm.config = Mock()
        self.vm.config.uuid = self.uuid
        self.pv_service.find_vm_by_name = Mock(return_value=self.vm)
        self.cs_helper = Mock()
        self.model_parser = ResourceModelParser()
        self.deployer = VirtualMachineDeployer(self.pv_service, self.name_gen,
                                               self.image_deployer,
                                               self.cs_helper,
                                               self.model_parser)

    def test_vm_deployer(self):
        deploy_from_template_details = DeployFromTemplateDetails(
            vCenterVMFromTemplateResourceModel(), 'VM Deployment')
        deploy_from_template_details.template_resource_model.vcenter_name = 'vcenter_resource_name'

        resource_context = self._create_vcenter_resource_context()

        res = self.deployer.deploy_from_template(
            si=self.si,
            data_holder=deploy_from_template_details,
            vcenter_data_model=resource_context,
            logger=Mock())

        self.assertEqual(res.vm_name, self.name)
        self.assertEqual(res.vm_uuid, self.uuid)
        self.assertEqual(res.cloud_provider_resource_name,
                         'vcenter_resource_name')
        self.assertTrue(self.pv_service.CloneVmParameters.called)

    def test_clone_deployer(self):
        deploy_from_template_details = DeployFromTemplateDetails(
            vCenterCloneVMFromVMResourceModel(), 'VM Deployment')
        deploy_from_template_details.template_resource_model.vcenter_name = 'vcenter_resource_name'
        deploy_from_template_details.vcenter_vm = 'name'
        resource_context = self._create_vcenter_resource_context()

        res = self.deployer.deploy_clone_from_vm(
            si=self.si,
            data_holder=deploy_from_template_details,
            vcenter_data_model=resource_context,
            logger=Mock())

        self.assertEqual(res.vm_name, self.name)
        self.assertEqual(res.vm_uuid, self.uuid)
        self.assertEqual(res.cloud_provider_resource_name,
                         'vcenter_resource_name')
        self.assertTrue(self.pv_service.CloneVmParameters.called)

    def test_snapshot_deployer(self):
        deploy_from_template_details = DeployFromTemplateDetails(
            VCenterDeployVMFromLinkedCloneResourceModel(), 'VM Deployment')
        deploy_from_template_details.template_resource_model.vcenter_name = 'vcenter_resource_name'
        deploy_from_template_details.vcenter_vm_snapshot = 'name/shanpshot'
        resource_context = self._create_vcenter_resource_context()

        res = self.deployer.deploy_from_linked_clone(
            si=self.si,
            data_holder=deploy_from_template_details,
            vcenter_data_model=resource_context,
            logger=Mock())

        self.assertEqual(res.vm_name, self.name)
        self.assertEqual(res.vm_uuid, self.uuid)
        self.assertEqual(res.cloud_provider_resource_name,
                         'vcenter_resource_name')
        self.assertTrue(self.pv_service.CloneVmParameters.called)

    def _create_vcenter_resource_context(self):
        vc = VMwarevCenterResourceModel()
        vc.user = '******'
        vc.password = '******'
        vc.default_dvswitch = 'switch1'
        vc.holding_network = 'anetwork'
        vc.vm_cluster = 'Quali'
        vc.vm_location = 'Quali'
        vc.vm_resource_pool = 'Quali'
        vc.vm_storage = 'Quali'
        vc.shutdown_method = 'hard'
        vc.ovf_tool_path = 'C\\program files\ovf'
        vc.execution_server_selector = ''
        vc.reserved_networks = 'vlan65'
        vc.default_datacenter = 'QualiSB'

        return vc

    def test_vm_deployer_error(self):
        self.clone_res.error = Mock()

        self.pv_service.CloneVmParameters = Mock(
            return_value=self.clone_parmas)
        self.pv_service.clone_vm = Mock(return_value=self.clone_res)
        deploy_from_template_details = DeployFromTemplateDetails(
            vCenterVMFromTemplateResourceModel(), 'VM Deployment')
        deploy_from_template_details.template_resource_model.vcenter_name = 'vcenter_resource_name'

        vcenter_data_model = self._create_vcenter_resource_context()

        self.assertRaises(Exception, self.deployer.deploy_from_template,
                          self.si, Mock(), deploy_from_template_details,
                          vcenter_data_model)
        self.assertTrue(self.pv_service.CloneVmParameters.called)

    def test_vm_deployer_image(self):
        params = DeployDataHolder({
            'app_name': 'appName',
            'vcenter_name': 'vCenter',
            'image_params': {
                "vcenter_image": "c:\image.ovf",
                "vm_cluster": "QualiSB Cluster",
                "vm_resource_pool": "LiverPool",
                "vm_storage": "eric ds cluster",
                "default_datacenter": "QualiSB",
                "vm_location": "vm_location",
                "auto_power_on": 'False',
                "vcenter_name": 'vCenter',
                "vcenter_image_arguments":
                "--compress=9,--schemaValidate,--etc",
                'ip_regex': '',
                'refresh_ip_timeout': '10',
                'auto_power_on': 'True',
                'auto_power_off': 'True',
                'wait_for_ip': 'True',
                'auto_delete': 'True',
                'autoload': 'True'
            }
        })

        connectivity = Mock()
        connectivity.address = 'vcenter ip or name'
        connectivity.user = '******'
        connectivity.password = '******'

        self.cs_helper.get_connection_details = Mock(return_value=connectivity)

        session = Mock()
        vcenter_data_model = Mock()
        vcenter_data_model.default_datacenter = 'qualisb'
        resource_context = Mock()

        res = self.deployer.deploy_from_image(
            si=self.si,
            logger=Mock(),
            session=session,
            vcenter_data_model=vcenter_data_model,
            data_holder=params,
            resource_context=resource_context)

        self.assertEqual(res.vm_name, self.name)
        self.assertEqual(res.vm_uuid, self.uuid)
        self.assertEqual(res.cloud_provider_resource_name, params.vcenter_name)

    def test_vm_deployer_image_no_res(self):
        self.image_deployer.deploy_image = Mock(return_value=None)
        params = DeployDataHolder({
            "image_url":
            "c:\image.ovf",
            "cluster_name":
            "QualiSB Cluster",
            "resource_pool":
            "LiverPool",
            "datastore_name":
            "eric ds cluster",
            "datacenter_name":
            "QualiSB",
            "power_on":
            False,
            "app_name":
            "appName",
            "user_arguments": ["--compress=9", "--schemaValidate", "--etc"]
        })

        connectivity = Mock()
        connectivity.address = 'vcenter ip or name'
        connectivity.user = '******'
        connectivity.password = '******'

        self.assertRaises(Exception, self.deployer.deploy_from_image, self.si,
                          params, connectivity)

    def test_vm_deployer_image_no_vm(self):
        self.pv_service.find_vm_by_name = Mock(return_value=None)
        params = DeployDataHolder({
            "image_url":
            "c:\image.ovf",
            "cluster_name":
            "QualiSB Cluster",
            "resource_pool":
            "LiverPool",
            "datastore_name":
            "eric ds cluster",
            "datacenter_name":
            "QualiSB",
            "power_on":
            False,
            "app_name":
            "appName",
            "user_arguments": ["--compress=9", "--schemaValidate", "--etc"]
        })

        connectivity = Mock()
        connectivity.address = 'vcenter ip or name'
        connectivity.user = '******'
        connectivity.password = '******'

        self.assertRaises(Exception, self.deployer.deploy_from_image, self.si,
                          params, connectivity)
コード例 #2
0
class TestVirtualMachineDeployer(TestCase):
    def setUp(self):
        self.name = 'name'
        self.uuid = 'uuid'
        self.name_gen = Mock(return_value=self.name)
        self.pv_service = Mock()
        self.si = Mock()
        self.clone_parmas = Mock()
        self.clone_res = Mock()
        self.clone_res.error = None
        self.clone_res.vm = Mock()
        self.clone_res.vm.summary = Mock()
        self.clone_res.vm.summary.config = Mock()
        self.clone_res.vm.summary.config.uuid = self.uuid
        self.pv_service.CloneVmParameters = Mock(return_value=self.clone_parmas)
        self.pv_service.clone_vm = Mock(return_value=self.clone_res)
        self.image_deployer = Mock()
        self.image_deployer.deploy_image = Mock(return_value=True)
        self.vm = Mock()
        self.vm.config = Mock()
        self.vm.config.uuid = self.uuid
        self.pv_service.find_vm_by_name = Mock(return_value=self.vm)
        self.cs_helper = Mock()
        self.model_parser = ResourceModelParser()
        self.deployer = VirtualMachineDeployer(self.pv_service, self.name_gen, self.image_deployer, self.cs_helper,
                                               self.model_parser)

    def test_vm_deployer(self):
        deploy_from_template_details = DeployFromTemplateDetails(vCenterVMFromTemplateResourceModel(), 'VM Deployment')
        deploy_from_template_details.template_resource_model.vcenter_name = 'vcenter_resource_name'

        resource_context = self._create_vcenter_resource_context()

        res = self.deployer.deploy_from_template(
            si=self.si,
            data_holder=deploy_from_template_details,
            vcenter_data_model=resource_context,
            logger=Mock())

        self.assertEqual(res.vm_name, self.name)
        self.assertEqual(res.vm_uuid, self.uuid)
        self.assertEqual(res.cloud_provider_resource_name, 'vcenter_resource_name')
        self.assertTrue(self.pv_service.CloneVmParameters.called)

    def test_clone_deployer(self):
        deploy_from_template_details = DeployFromTemplateDetails(vCenterCloneVMFromVMResourceModel(), 'VM Deployment')
        deploy_from_template_details.template_resource_model.vcenter_name = 'vcenter_resource_name'
        deploy_from_template_details.vcenter_vm = 'name'
        resource_context = self._create_vcenter_resource_context()

        res = self.deployer.deploy_clone_from_vm(
            si=self.si,
            data_holder=deploy_from_template_details,
            vcenter_data_model=resource_context,
            logger=Mock())

        self.assertEqual(res.vm_name, self.name)
        self.assertEqual(res.vm_uuid, self.uuid)
        self.assertEqual(res.cloud_provider_resource_name, 'vcenter_resource_name')
        self.assertTrue(self.pv_service.CloneVmParameters.called)

    def test_snapshot_deployer(self):
        deploy_from_template_details = DeployFromTemplateDetails(VCenterDeployVMFromLinkedCloneResourceModel(), 'VM Deployment')
        deploy_from_template_details.template_resource_model.vcenter_name = 'vcenter_resource_name'
        deploy_from_template_details.vcenter_vm_snapshot = 'name/shanpshot'
        resource_context = self._create_vcenter_resource_context()

        res = self.deployer.deploy_from_linked_clone(
            si=self.si,
            data_holder=deploy_from_template_details,
            vcenter_data_model=resource_context,
            logger=Mock())

        self.assertEqual(res.vm_name, self.name)
        self.assertEqual(res.vm_uuid, self.uuid)
        self.assertEqual(res.cloud_provider_resource_name, 'vcenter_resource_name')
        self.assertTrue(self.pv_service.CloneVmParameters.called)

    def _create_vcenter_resource_context(self):
        vc = VMwarevCenterResourceModel()
        vc.user = '******'
        vc.password = '******'
        vc.default_dvswitch = 'switch1'
        vc.holding_network = 'anetwork'
        vc.vm_cluster = 'Quali'
        vc.vm_location = 'Quali'
        vc.vm_resource_pool = 'Quali'
        vc.vm_storage = 'Quali'
        vc.shutdown_method = 'hard'
        vc.ovf_tool_path = 'C\\program files\ovf'
        vc.execution_server_selector = ''
        vc.reserved_networks = 'vlan65'
        vc.default_datacenter = 'QualiSB'

        return vc

    def test_vm_deployer_error(self):
        self.clone_res.error = Mock()

        self.pv_service.CloneVmParameters = Mock(return_value=self.clone_parmas)
        self.pv_service.clone_vm = Mock(return_value=self.clone_res)
        deploy_from_template_details = DeployFromTemplateDetails(vCenterVMFromTemplateResourceModel(), 'VM Deployment')
        deploy_from_template_details.template_resource_model.vcenter_name = 'vcenter_resource_name'

        vcenter_data_model = self._create_vcenter_resource_context()

        self.assertRaises(Exception, self.deployer.deploy_from_template, self.si,
                          Mock(), deploy_from_template_details, vcenter_data_model)
        self.assertTrue(self.pv_service.CloneVmParameters.called)

    def test_vm_deployer_image(self):
        params = DeployDataHolder({
            'app_name': 'appName',
            'vcenter_name': 'vCenter',
            'image_params':
                {
                    "vcenter_image": "c:\image.ovf",
                    "vm_cluster": "QualiSB Cluster",
                    "vm_resource_pool": "LiverPool",
                    "vm_storage": "eric ds cluster",
                    "default_datacenter": "QualiSB",
                    "vm_location": "vm_location",
                    "auto_power_on": 'False',
                    "vcenter_name": 'vCenter',
                    "vcenter_image_arguments": "--compress=9,--schemaValidate,--etc",
                    'ip_regex': '',
                    'refresh_ip_timeout': '10',
                    'auto_power_on': 'True',
                    'auto_power_off': 'True',
                    'wait_for_ip': 'True',
                    'auto_delete': 'True',
                    'autoload': 'True'
                }
        })

        connectivity = Mock()
        connectivity.address = 'vcenter ip or name'
        connectivity.user = '******'
        connectivity.password = '******'

        self.cs_helper.get_connection_details = Mock(return_value=connectivity)

        session = Mock()
        vcenter_data_model = Mock()
        vcenter_data_model.default_datacenter = 'qualisb'
        resource_context = Mock()

        res = self.deployer.deploy_from_image(si=self.si,
                                              logger=Mock(),
                                              session=session,
                                              vcenter_data_model=vcenter_data_model,
                                              data_holder=params,
                                              resource_context=resource_context)

        self.assertEqual(res.vm_name, self.name)
        self.assertEqual(res.vm_uuid, self.uuid)
        self.assertEqual(res.cloud_provider_resource_name,
                         params.vcenter_name)

    def test_vm_deployer_image_no_res(self):
        self.image_deployer.deploy_image = Mock(return_value=None)
        params = DeployDataHolder(
            {
                "image_url": "c:\image.ovf",
                "cluster_name": "QualiSB Cluster",
                "resource_pool": "LiverPool",
                "datastore_name": "eric ds cluster",
                "datacenter_name": "QualiSB",
                "power_on": False,
                "app_name": "appName",
                "user_arguments": ["--compress=9",
                                   "--schemaValidate", "--etc"
                                   ]
            })

        connectivity = Mock()
        connectivity.address = 'vcenter ip or name'
        connectivity.user = '******'
        connectivity.password = '******'

        self.assertRaises(Exception, self.deployer.deploy_from_image, self.si, params, connectivity)

    def test_vm_deployer_image_no_vm(self):
        self.pv_service.find_vm_by_name = Mock(return_value=None)
        params = DeployDataHolder(
            {
                "image_url": "c:\image.ovf",
                "cluster_name": "QualiSB Cluster",
                "resource_pool": "LiverPool",
                "datastore_name": "eric ds cluster",
                "datacenter_name": "QualiSB",
                "power_on": False,
                "app_name": "appName",
                "user_arguments": ["--compress=9",
                                   "--schemaValidate", "--etc"
                                   ]
            })

        connectivity = Mock()
        connectivity.address = 'vcenter ip or name'
        connectivity.user = '******'
        connectivity.password = '******'

        self.assertRaises(Exception, self.deployer.deploy_from_image, self.si, params, connectivity)
コード例 #3
0
class TestVirtualMachineDeployer(TestCase):
    def setUp(self):
        self.name = 'name'
        self.uuid = 'uuid'
        self.name_gen = Mock(return_value=self.name)
        self.pv_service = Mock()
        self.si = Mock()
        self.clone_parmas = Mock()
        self.clone_res = Mock()
        self.clone_res.error = None
        self.clone_res.vm = Mock()
        self.clone_res.vm.summary = Mock()
        self.clone_res.vm.summary.config = Mock()
        self.clone_res.vm.summary.config.uuid = self.uuid
        self.pv_service.CloneVmParameters = Mock(return_value=self.clone_parmas)
        self.pv_service.clone_vm = Mock(return_value=self.clone_res)
        self.image_deployer = Mock()
        self.image_deployer.deploy_image = Mock(return_value=True)
        self.vm = Mock()
        self.vm.config = Mock()
        self.vm.config.uuid = self.uuid
        self.pv_service.find_vm_by_name = Mock(return_value=self.vm)
        self.cs_helper = Mock()
        self.deployer = VirtualMachineDeployer(self.pv_service, self.name_gen, self.image_deployer, self.cs_helper,
                                               ResourceModelParser())

    def test_vm_deployer(self):
        deploy_from_template_details = DeployFromTemplateDetails(vCenterVMFromTemplateResourceModel(), 'VM Deployment')
        deploy_from_template_details.template_resource_model.vcenter_name = 'vcenter_resource_name'

        resource_context = self._create_vcenter_resource_context()

        res = self.deployer.deploy_from_template(
            si=self.si,
            data_holder=deploy_from_template_details,
            resource_context=resource_context,
            logger=Mock())

        self.assertEqual(res.vm_name, self.name)
        self.assertEqual(res.vm_uuid, self.uuid)
        self.assertEqual(res.cloud_provider_resource_name, 'vcenter_resource_name')
        self.assertTrue(self.pv_service.CloneVmParameters.called)

    def _create_vcenter_resource_context(self):
        resource_context = create_autospec(ResourceInfo)
        resource_context.ResourceModelName = 'VMwarev Center'
        resource_context.ResourceAttributes = {'User': '******',
                                               'Password': '******',
                                               'Default dvSwitch': 'switch1',
                                               'Holding Network': 'anetwork',
                                               'Default Port Group Location': 'Quali',
                                               'VM Cluster': 'Quali',
                                               'VM Location': 'Quali',
                                               'VM Resource Pool': 'Quali',
                                               'VM Storage': 'Quali',
                                               'Shutdown Method': 'hard',
                                               'OVF Tool Path': 'C\\program files\ovf',
                                               'Execution Server Selector': '',
                                               'Reserved Networks': 'vlan65',
                                               'Default Datacenter': 'QualiSB'
                                               }
        return resource_context

    def test_vm_deployer_error(self):
        self.clone_res.error = Mock()

        self.pv_service.CloneVmParameters = Mock(return_value=self.clone_parmas)
        self.pv_service.clone_vm = Mock(return_value=self.clone_res)
        deploy_from_template_details = DeployFromTemplateDetails(vCenterVMFromTemplateResourceModel(), 'VM Deployment')
        deploy_from_template_details.template_resource_model.vcenter_name = 'vcenter_resource_name'

        resource_context = self._create_vcenter_resource_context()

        self.assertRaises(Exception, self.deployer.deploy_from_template, self.si, Mock(), deploy_from_template_details,
                          resource_context)
        self.assertTrue(self.pv_service.CloneVmParameters.called)

    def test_vm_deployer_image(self):
        params = DeployDataHolder({
            'app_name': 'appName',
            'vcenter_name': 'vCenter',
            'image_params':
                {
                    "vcenter_image": "c:\image.ovf",
                    "vm_cluster": "QualiSB Cluster",
                    "vm_resource_pool": "LiverPool",
                    "vm_storage": "eric ds cluster",
                    "default_datacenter": "QualiSB",
                    "vm_location": "vm_location",
                    "auto_power_on": 'False',
                    "vcenter_name": 'vCenter',
                    "vcenter_image_arguments": "--compress=9,--schemaValidate,--etc",
                    'ip_regex': '',
                    'refresh_ip_timeout': '10',
                    'auto_power_on': 'True',
                    'auto_power_off': 'True',
                    'wait_for_ip': 'True',
                    'auto_delete': 'True',
                    'autoload': 'True'
                }
        })

        connectivity = Mock()
        connectivity.address = 'vcenter ip or name'
        connectivity.user = '******'
        connectivity.password = '******'

        self.cs_helper.get_connection_details = Mock(return_value=connectivity)

        session = Mock()
        vcenter_data_model = Mock()
        vcenter_data_model.default_datacenter = 'qualisb'
        resource_context = Mock()

        res = self.deployer.deploy_from_image(si=self.si,
                                              logger=Mock(),
                                              session=session,
                                              vcenter_data_model=vcenter_data_model,
                                              data_holder=params,
                                              resource_context=resource_context)

        self.assertEqual(res.vm_name, self.name)
        self.assertEqual(res.vm_uuid, self.uuid)
        self.assertEqual(res.cloud_provider_resource_name,
                         params.vcenter_name)

    def test_vm_deployer_image_no_res(self):
        self.image_deployer.deploy_image = Mock(return_value=None)
        params = DeployDataHolder(
            {
                "image_url": "c:\image.ovf",
                "cluster_name": "QualiSB Cluster",
                "resource_pool": "LiverPool",
                "datastore_name": "eric ds cluster",
                "datacenter_name": "QualiSB",
                "power_on": False,
                "app_name": "appName",
                "user_arguments": ["--compress=9",
                                   "--schemaValidate", "--etc"
                                   ]
            })

        connectivity = Mock()
        connectivity.address = 'vcenter ip or name'
        connectivity.user = '******'
        connectivity.password = '******'

        self.assertRaises(Exception, self.deployer.deploy_from_image, self.si, params, connectivity)

    def test_vm_deployer_image_no_vm(self):
        self.pv_service.find_vm_by_name = Mock(return_value=None)
        params = DeployDataHolder(
            {
                "image_url": "c:\image.ovf",
                "cluster_name": "QualiSB Cluster",
                "resource_pool": "LiverPool",
                "datastore_name": "eric ds cluster",
                "datacenter_name": "QualiSB",
                "power_on": False,
                "app_name": "appName",
                "user_arguments": ["--compress=9",
                                   "--schemaValidate", "--etc"
                                   ]
            })

        connectivity = Mock()
        connectivity.address = 'vcenter ip or name'
        connectivity.user = '******'
        connectivity.password = '******'

        self.assertRaises(Exception, self.deployer.deploy_from_image, self.si, params, connectivity)