@Test(enabled = true) public void testCreateTemplate() throws Exception { Zone zone = Iterables.getFirst(client.getZoneClient().listZones(), null); assertNotNull(zone); Iterable<Network> networks = client .getNetworkClient() .listNetworks(ListNetworksOptions.Builder.zoneId(zone.getId()).isDefault(true)); networks = Iterables.filter( networks, new Predicate<Network>() { @Override public boolean apply(@Nullable Network network) { return network != null && network.getState().equals("Implemented"); } }); assertEquals(Iterables.size(networks), 1); Network network = Iterables.getOnlyElement(networks, null); assertNotNull(network); // Create a VM and stop it Long templateId = (imageId != null && !"".equals(imageId)) ? new Long(imageId) : null; vmForCreation = VirtualMachineClientLiveTest.createVirtualMachineInNetwork( network, templateId, client, jobComplete, virtualMachineRunning); assertTrue( jobComplete.apply( client.getVirtualMachineClient().stopVirtualMachine(vmForCreation.getId())), vmForCreation.toString()); // Work out the VM's volume Set<Volume> volumes = client .getVolumeClient() .listVolumes(ListVolumesOptions.Builder.virtualMachineId(vmForCreation.getId())); assertEquals(volumes.size(), 1); Volume volume = Iterables.getOnlyElement(volumes); // Create a template CreateTemplateOptions options = CreateTemplateOptions.Builder.volumeId(volume.getId()); AsyncCreateResponse response = client .getTemplateClient() .createTemplate( TemplateMetadata.builder() .name(prefix + "-createTemplate") .osTypeId(vmForCreation.getGuestOSId()) .displayText("jclouds live testCreateTemplate") .build(), options); assertTrue(jobComplete.apply(response.getJobId()), vmForCreation.toString()); createdTemplate = client.getTemplateClient().getTemplateInZone(response.getId(), vmForCreation.getZoneId()); // Assertions assertNotNull(createdTemplate); }
public boolean isInstanceOf(Instance instance, List<VirtualMachine> vms, long cloudId) { boolean result = false; for (VirtualMachine vm : vms) { Long vmId = vm.getId(); if (vm.cloud().getId().equals(cloudId) && instance.getVirtualMachine().getId().equals(vmId)) { result = true; } } return result; }
@AfterGroups(groups = "live") protected void tearDown() { if (vmForCreation != null) { assertTrue( jobComplete.apply( client.getVirtualMachineClient().stopVirtualMachine(vmForCreation.getId())), vmForCreation.toString()); assertTrue( jobComplete.apply( client.getVirtualMachineClient().destroyVirtualMachine(vmForCreation.getId())), vmForCreation.toString()); assertTrue(virtualMachineDestroyed.apply(vmForCreation)); } if (vmForRegistration != null) { assertTrue( jobComplete.apply( client.getVirtualMachineClient().stopVirtualMachine(vmForRegistration.getId())), vmForRegistration.toString()); assertTrue( jobComplete.apply( client.getVirtualMachineClient().destroyVirtualMachine(vmForRegistration.getId())), vmForRegistration.toString()); assert virtualMachineDestroyed.apply(vmForRegistration); } if (createdTemplate != null) { AsyncCreateResponse deleteJob = client.getTemplateClient().deleteTemplate(createdTemplate.getId()); assertTrue(jobComplete.apply(deleteJob.getJobId())); } if (registeredTemplate != null) { AsyncCreateResponse deleteJob = client.getTemplateClient().deleteTemplate(registeredTemplate.getId()); assertTrue(jobComplete.apply(deleteJob.getJobId())); } super.tearDown(); }
@Override public List<VirtualMachine> getVirtualMachines( Long applicationId, Long componentId, Long instanceId, Long cloudId) { List<VirtualMachine> vms; List<VirtualMachine> result = new ArrayList<VirtualMachine>(); vms = virtualMachineModelService.getAll(); for (VirtualMachine vm : vms) { boolean suitable = true; List<Instance> instances = null; List<ApplicationComponent> appComps = null; // Filter for application id if (applicationId != null) { instances = this.getInstances(vm.getId()); appComps = new ArrayList<>(); for (Instance instance : instances) { if (instance.getVirtualMachine().getId().equals(vm.getId())) { LOGGER.info("Instance " + instance.getId() + " belongs to VM " + vm.getId()); appComps.add( getApplicationComponentForInstance(instance.getApplicationComponent().getId())); } } boolean oneInstanceFit = false; for (ApplicationComponent ac : appComps) { if (ac.getApplication().getId() == applicationId) { oneInstanceFit = true; } } suitable = oneInstanceFit; } // Filter for component id if (suitable && componentId != null) { if (instances == null) { instances = this.getInstances(vm.getId()); appComps = new ArrayList<ApplicationComponent>(); for (Instance instance : instances) { appComps.add( getApplicationComponentForInstance(instance.getApplicationComponent().getId())); } } boolean oneInstanceFit = false; for (ApplicationComponent ac : appComps) { if (ac.getComponent().getId() == componentId) { oneInstanceFit = true; } } suitable = oneInstanceFit; } // Filter for instance id if (suitable && instanceId != null) { if (instances == null) { instances = this.getInstances(vm.getId()); } boolean oneInstanceFit = false; for (Instance instance : instances) { if (instance.getId() == instanceId) { oneInstanceFit = true; } } suitable = oneInstanceFit; } // Filter for cloud id if (suitable && cloudId != null) { if (vm.cloud().getId() != cloudId) { suitable = false; } } // Add to result if (suitable) { result.add(vm); } } return result; }