def create_cloud(dmd): ''' Return a Cloud suitable for Impact functional testing. ''' # DeviceClass dc = dmd.Devices.createOrganizer('/CloudStack') dc.setZenProperty('zPythonClass', 'ZenPacks.zenoss.CloudStack.Cloud') # Endpoint cloud = dc.createInstance('cloud') # Zone from ZenPacks.zenoss.CloudStack.Zone import Zone zone1 = add_contained(cloud, 'zones', Zone('zone1')) # Pod from ZenPacks.zenoss.CloudStack.Pod import Pod pod1 = add_contained(zone1, 'pods', Pod('pod1')) # SystemVM from ZenPacks.zenoss.CloudStack.SystemVM import SystemVM systemvm1 = add_contained(pod1, 'systemvms', SystemVM('systemvm1')) # RouterVM from ZenPacks.zenoss.CloudStack.RouterVM import RouterVM routervm1 = add_contained(pod1, 'routervms', RouterVM('routervm1')) # Cluster from ZenPacks.zenoss.CloudStack.Cluster import Cluster cluster1 = add_contained(pod1, 'clusters', Cluster('cluster1')) # Host from ZenPacks.zenoss.CloudStack.Host import Host host1 = add_contained(cluster1, 'hosts', Host('host1')) add_noncontained(host1, 'systemvms', systemvm1) add_noncontained(host1, 'routervms', routervm1) # VirtualMachine from ZenPacks.zenoss.CloudStack.VirtualMachine import VirtualMachine vm1 = add_contained(zone1, 'vms', VirtualMachine('vm1')) add_noncontained(vm1, 'host', host1) return cloud
def test_XenServer(self): from ZenPacks.zenoss.XenServer.tests.test_impact import create_endpoint from ZenPacks.zenoss.XenServer.VM import VM from ZenPacks.zenoss.XenServer.VIF import VIF xen_endpoint = create_endpoint(self.dmd) xen_host = xen_endpoint.getObjByPath('hosts/host1') xen_pif = xen_endpoint.getObjByPath('hosts/host1/pifs/pif1') xen_pif.ipv4_addresses = ['10.11.12.13'] xen_pif.index_object() xen_vm = xen_endpoint.getObjByPath('vms/vm1') xen_vm_vif = xen_endpoint.getObjByPath('vms/vm1/vifs/vif1') xen_vm_vif.macaddress = '00:0c:29:fe:ab:bc' xen_vm_vif.index_object() xen_routervm = add_contained(xen_endpoint, 'vms', VM('xen_routervm1')) xen_routervm_vif = add_contained(xen_routervm, 'vifs', VIF('xen_routervm1_vif1')) xen_routervm_vif.macaddress = '00:0c:29:fe:ab:bd' xen_routervm_vif.index_object() xen_systemvm = add_contained(xen_endpoint, 'vms', VM('xen_systemvm1')) xen_systemvm_vif = add_contained(xen_systemvm, 'vifs', VIF('xen_systemvm1_vif1')) xen_systemvm_vif.macaddress = '00:0c:29:fe:ab:be' xen_systemvm_vif.index_object() host = self.cloud().getObjByPath('zones/zone1/pods/pod1/clusters/cluster1/hosts/host1') host.ip_address = xen_pif.ipv4_addresses[0] host.index_object() vm = self.cloud().getObjByPath('zones/zone1/vms/vm1') vm.mac_address = xen_vm_vif.macaddress vm.index_object() routervm = self.cloud().getObjByPath('zones/zone1/pods/pod1/routervms/routervm1') routervm.linklocal_macaddress = xen_routervm_vif.macaddress routervm.index_object() systemvm = self.cloud().getObjByPath('zones/zone1/pods/pod1/systemvms/systemvm1') systemvm.linklocal_macaddress = xen_systemvm_vif.macaddress systemvm.index_object() host_impacts, host_impacted_by = impacts_for(host) vm_impacts, vm_impacted_by = impacts_for(vm) routervm_impacts, routervm_impacted_by = impacts_for(routervm) systemvm_impacts, systemvm_impacted_by = impacts_for(systemvm) # Host -> CloudStack Host self.assertTrue( xen_host.id in host_impacted_by, 'missing impact: {0} -> {1}'.format(xen_host, host)) # VM -> CloudStack RouterVM self.assertTrue( xen_vm.id in vm_impacted_by, 'missing impact: {0} -> {1}'.format(xen_vm, vm)) # VM -> CloudStack SystemVM self.assertTrue( xen_routervm.id in routervm_impacted_by, 'missing impact: {0} -> {1}'.format(xen_routervm, routervm)) # VM -> CloudStack VirtualMachine self.assertTrue( xen_systemvm.id in systemvm_impacted_by, 'missing impact: {0} -> {1}'.format(xen_systemvm, systemvm))