public T fromVirtualGuest(VirtualGuest in) { return this .accountId(in.getAccountId()) .createDate(in.getCreateDate()) .dedicatedAccountHostOnly(in.isDedicatedAccountHostOnly()) .domain(in.getDomain()) .fullyQualifiedDomainName(in.getFullyQualifiedDomainName()) .hostname(in.getHostname()) .id(in.getId()) .lastVerifiedDate(in.getLastVerifiedDate()) .maxCpu(in.getMaxCpu()) .maxCpuUnits(in.getMaxCpuUnits()) .maxMemory(in.getMaxMemory()) .metricPollDate(in.getMetricPollDate()) .modifyDate(in.getModifyDate()) .notes(in.getNotes()) .privateNetworkOnly(in.isPrivateNetworkOnly()) .startCpus(in.getStartCpus()) .statusId(in.getStatusId()) .uuid(in.getUuid()) .primaryBackendIpAddress(in.getPrimaryBackendIpAddress()) .primaryIpAddress(in.getPrimaryIpAddress()) .billingItemId(in.getBillingItemId()) .operatingSystem(in.getOperatingSystem()) .datacenter(in.getDatacenter()) .powerState(in.getPowerState()); } }
@Override public HostnameAndDomain apply(VirtualGuest virtualGuest) { return new HostnameAndDomain(virtualGuest.getHostname(), virtualGuest.getDomain()); } });
public boolean apply(VirtualGuest guest) { guest = getNode(guest.getId() + ""); return guest.getActiveTransactionCount() == 0; } }, activeTransactionsDelay).apply(guest), "%s still has active transactions!", guest);
@Override public boolean apply(VirtualGuest guest) { checkNotNull(guest, "virtual guest was null"); VirtualGuest virtualGuest = client.getVirtualGuestApi().getVirtualGuest(guest.getId()); boolean hasBackendIp = virtualGuest.getPrimaryBackendIpAddress() != null; boolean hasPrimaryIp = virtualGuest.getPrimaryIpAddress() != null; boolean hasPasswords = virtualGuest.getOperatingSystem() != null && !virtualGuest.getOperatingSystem().getPasswords().isEmpty(); return virtualGuest.isPrivateNetworkOnly() ? hasBackendIp && hasPasswords : hasBackendIp && hasPrimaryIp && hasPasswords; } }
private void checkVirtualGuest(VirtualGuest vg) { if (vg.getBillingItemId() == -1) return;// Quotes and shutting down guests assert vg.getAccountId() > 0 : vg; assert vg.getCreateDate() != null : vg; assert vg.getDomain() != null : vg; assert vg.getFullyQualifiedDomainName() != null : vg; assert vg.getHostname() != null : vg; assert vg.getId() > 0 : vg; assert vg.getMaxCpu() > 0 : vg; assert vg.getMaxCpuUnits() != null : vg; assert vg.getMaxMemory() > 0 : vg; assert vg.getMetricPollDate() != null : vg; assert vg.getModifyDate() != null : vg; assert vg.getStartCpus() > 0 : vg; assert vg.getStatusId() >= 0 : vg; assert vg.getUuid() != null : vg; assert vg.getPrimaryBackendIpAddress() != null : vg; assert vg.getPrimaryIpAddress() != null : vg; }
String hostname = checkNotNull(virtualGuest.getHostname(), "hostname"); String domain = checkNotNull(virtualGuest.getDomain(), "domain"); int startCpus = virtualGuest.getStartCpus(); int maxMemory = virtualGuest.getMaxMemory(); boolean hourlyBillingFlag = virtualGuest.isHourlyBillingFlag(); boolean localDisk = virtualGuest.isLocalDiskFlag(); String datacenterName = checkNotNull(virtualGuest.getDatacenter().getName(), "datacenterName"); Set<VirtualGuestNetworkComponent> virtualGuestNetworkComponents = virtualGuest.getVirtualGuestNetworkComponents(); Set<NetworkComponent> networkComponents = Sets.newHashSet(); if (virtualGuestNetworkComponents != null) { .hourlyBillingFlag(hourlyBillingFlag) .localDiskFlag(localDisk) .dedicatedAccountHostOnlyFlag(virtualGuest.isDedicatedAccountHostOnly()) .privateNetworkOnlyFlag(virtualGuest.isPrivateNetworkOnly()) .datacenter(new Datacenter(datacenterName)); if (virtualGuest.getOperatingSystem() != null) { String operatingSystemReferenceCode = checkNotNull(virtualGuest.getOperatingSystem() .getOperatingSystemReferenceCode(), "operatingSystemReferenceCode"); templateObjectBuilder.operatingSystemReferenceCode(operatingSystemReferenceCode) .blockDevices(getBlockDevices(virtualGuest)); } else if (virtualGuest.getVirtualGuestBlockDeviceTemplateGroup() != null) { String globalIdentifier = checkNotNull(virtualGuest.getVirtualGuestBlockDeviceTemplateGroup() .getGlobalIdentifier(), "blockDeviceTemplateGroup.globalIdentifier"); templateObjectBuilder.blockDeviceTemplateGroup(new BlockDeviceTemplateGroup(globalIdentifier)); if (virtualGuest.getPrimaryNetworkComponent() != null) {
private void checkVirtualGuest(VirtualGuest vg) { if (vg.getActiveTransactionCount() == 0) { assertNotNull(vg.getDomain(), "domain must be not null"); assertNotNull(vg.getFullyQualifiedDomainName(), "fullyQualifiedDomainName must be not null"); assertNotNull(vg.getHostname(), "hostname must be not null"); assertTrue(vg.getId() > 0, "id must be greater than 0"); assertTrue(vg.getMaxCpu() > 0, "maxCpu must be greater than 0"); assertNotNull(vg.getMaxCpuUnits(), "maxCpuUnits must be not null"); assertTrue(vg.getMaxMemory() > 0, "maxMemory must be greater than 0"); assertTrue(vg.getStartCpus() > 0, "startCpus must be greater than 0"); assertTrue(vg.getStatusId() > 0, "statusId must be greater than 0"); assertNotNull(vg.getUuid(), "uuid must be not null"); } }
@Override public NodeMetadata apply(VirtualGuest from) { NodeMetadataBuilder builder = new NodeMetadataBuilder(); builder.ids(from.getId() + ""); builder.name(from.getHostname()); builder.hostname(from.getFullyQualifiedDomainName()); if (from.getDatacenter() != null) { builder.location(from(locations.get()).firstMatch( LocationPredicates.idEquals(from.getDatacenter().getName())).orNull()); builder.group(nodeNamingConvention.groupInUniqueNameOrNull(from.getHostname())); builder.hardware(virtualGuestToHardware.apply(from)); Image image = virtualGuestToImage.apply(from); if (from.getPowerState() != null) { builder.status(serverStateToNodeStatus.get(from.getPowerState().getKeyName())); if (from.getPrimaryIpAddress() != null) builder.publicAddresses(ImmutableSet.of(from.getPrimaryIpAddress())); if (from.getPrimaryBackendIpAddress() != null) builder.privateAddresses(ImmutableSet.of(from.getPrimaryBackendIpAddress())); if (from.getOperatingSystem() != null && from.getOperatingSystem().getPasswords() != null && !from.getOperatingSystem().getPasswords().isEmpty()) { Password password = getBestPassword(from.getOperatingSystem().getPasswords(), from); builder.credentials(LoginCredentials.builder().identity(password.getUsername()).credential(password.getPassword()).build()); if (from.getTagReferences() != null && !from.getTagReferences().isEmpty()) { List<String> tags = Lists.newArrayList(); for (TagReference tagReference : from.getTagReferences()) { if (tagReference != null) {
private void checkVirtualGuest(VirtualGuest vg) { if (vg.getActiveTransactionCount() == 0) { assertNotNull(vg.getDomain(), "domain must be not null"); assertNotNull(vg.getFullyQualifiedDomainName(), "fullyQualifiedDomainName must be not null"); assertNotNull(vg.getHostname(), "hostname must be not null"); assertTrue(vg.getId() > 0, "id must be greater than 0"); assertTrue(vg.getMaxCpu() > 0, "maxCpu must be greater than 0"); assertTrue(vg.getMaxMemory() > 0, "maxMemory must be greater than 0"); assertTrue(vg.getStatusId() > 0, "statusId must be greater than 0"); } }
@Override public NodeMetadata apply(VirtualGuest from) { // convert the result object to a jclouds NodeMetadata NodeMetadataBuilder builder = new NodeMetadataBuilder(); builder.ids(from.getId() + ""); builder.name(from.getHostname()); builder.hostname(from.getHostname()); if (from.getDatacenter() != null) builder.location(from(locations.get()).firstMatch( LocationPredicates.idEquals(from.getDatacenter().getId() + "")).orNull()); builder.group(nodeNamingConvention.groupInUniqueNameOrNull(from.getHostname())); Image image = images.getImage(from); if (image != null) { builder.imageId(image.getId()); builder.operatingSystem(image.getOperatingSystem()); } builder.hardware(hardware.getHardware(from)); builder.status(serverStateToNodeStatus.get(from.getPowerState().getKeyName())); // These are null for 'bad' guest orders in the HALTED state. if (from.getPrimaryIpAddress() != null) builder.publicAddresses(ImmutableSet.<String> of(from.getPrimaryIpAddress())); if (from.getPrimaryBackendIpAddress() != null) builder.privateAddresses(ImmutableSet.<String> of(from.getPrimaryBackendIpAddress())); return builder.build(); }
@Override public Hardware apply(final VirtualGuest from) { HardwareBuilder builder = new HardwareBuilder().ids(from.getId() + "") .name(from.getHostname()) .hypervisor("XenServer") .processors(ImmutableList.of(new Processor(from.getStartCpus(), 2))) .ram(from.getMaxMemory()); if (from.getVirtualGuestBlockDevices() != null) { builder.volumes( FluentIterable.from(from.getVirtualGuestBlockDevices()).filter(new Predicate<VirtualGuestBlockDevice>() { @Override public boolean apply(VirtualGuestBlockDevice input) {
/** * Builds a Json string suitable for sending to the softlayer api * * @param virtualGuest * @return String */ String buildJson(VirtualGuest virtualGuest) { TemplateObject templateObject = null; String hostname = checkNotNull(virtualGuest.getHostname(), "hostname"); String domain = checkNotNull(virtualGuest.getDomain(), "domain"); int startCpus = checkNotNull(virtualGuest.getStartCpus(), "startCpus"); int maxMemory = checkNotNull(virtualGuest.getMaxMemory(), "maxMemory"); boolean localDiskFlag = checkNotNull(virtualGuest.isLocalDiskFlag(), "localDiskFlag"); String datacenterName = checkNotNull(virtualGuest.getDatacenter().getName(), "datacenterName"); Set<NetworkComponent> networkComponents = getNetworkComponents(virtualGuest); if(virtualGuest.getOperatingSystem() != null) { String operatingSystemReferenceCode = checkNotNull(virtualGuest.getOperatingSystem() .getOperatingSystemReferenceCode(), "operatingSystemReferenceCode"); templateObject = new TemplateObject(hostname, domain, startCpus, maxMemory, true, operatingSystemReferenceCode, null, localDiskFlag, new Datacenter(datacenterName), networkComponents, getBlockDevices(virtualGuest)); } else if(virtualGuest.getVirtualGuestBlockDeviceTemplateGroup() != null) { String globalIdentifier = checkNotNull(virtualGuest.getVirtualGuestBlockDeviceTemplateGroup() .getGlobalIdentifier(), "blockDeviceTemplateGroup.globalIdentifier"); templateObject = new TemplateObject(hostname, domain, startCpus, maxMemory, true, null, new BlockDeviceTemplateGroup(globalIdentifier), localDiskFlag, new Datacenter(datacenterName), networkComponents, null); } return json.toJson(ImmutableMap.of("parameters", ImmutableList.<TemplateObject> of(templateObject))); }
@Override public NodeAndInitialCredentials<VirtualGuest> createNodeWithGroupEncodedIntoName(String group, String name, Template template) { checkNotNull(template, "template was null"); checkNotNull(template.getOptions(), "template options was null"); checkArgument(template.getOptions().getClass().isAssignableFrom(SoftLayerTemplateOptions.class), "options class %s should have been assignable from SoftLayerTemplateOptions", template.getOptions() .getClass()); String domainName = template.getOptions().as(SoftLayerTemplateOptions.class).getDomainName(); VirtualGuest newGuest = VirtualGuest.builder().domain(domainName).hostname(name).build(); ProductOrder order = ProductOrder.builder().packageId(productPackageSupplier.get().getId()) .location(template.getLocation().getId()).quantity(1).useHourlyPricing(true).prices(getPrices(template)) .virtualGuests(newGuest).build(); logger.debug(">> ordering new virtualGuest domain(%s) hostname(%s)", domainName, name); ProductOrderReceipt productOrderReceipt = client.getVirtualGuestClient().orderVirtualGuest(order); VirtualGuest result = get(productOrderReceipt.getOrderDetails().getVirtualGuests(), 0); logger.trace("<< virtualGuest(%s)", result.getId()); logger.debug(">> awaiting login details for virtualGuest(%s)", result.getId()); boolean orderInSystem = loginDetailsTester.apply(result); logger.trace("<< virtualGuest(%s) complete(%s)", result.getId(), orderInSystem); checkState(orderInSystem, "order for guest %s doesn't have login details within %sms", result, Long.toString(guestLoginDelay)); result = client.getVirtualGuestClient().getVirtualGuest(result.getId()); Password pw = get(result.getOperatingSystem().getPasswords(), 0); return new NodeAndInitialCredentials<VirtualGuest>(result, result.getId() + "", LoginCredentials.builder().user(pw.getUsername()).password( pw.getPassword()).build()); }
@Test public void testCreateNodeWithGroupEncodedIntoNameThenStoreCredentials() { String group = "foo"; String name = "node" + new Random().nextInt(); Template template = templateBuilder.build(); // test passing custom options template.getOptions().as(SoftLayerTemplateOptions.class).domainName("me.org"); guest = adapter.createNodeWithGroupEncodedIntoName(group, name, template); assertEquals(guest.getNode().getHostname(), name); assertEquals(guest.getNodeId(), guest.getNode().getId() + ""); assertEquals(guest.getNode().getDomain(), template.getOptions().as(SoftLayerTemplateOptions.class) .getDomainName()); assert InetAddresses.isInetAddress(guest.getNode().getPrimaryBackendIpAddress()) : guest; doConnectViaSsh(guest.getNode(), prioritizeCredentialsFromTemplate.apply(template, guest.getCredentials())); }
@Test public void testVirtualGuestToNodeMetadata() { VirtualGuest virtualGuest = createVirtualGuest(); NodeMetadata nodeMetadata = new VirtualGuestToNodeMetadata(locationSupplier, namingConvention, virtualGuestToImage, virtualGuestToHardware).apply(virtualGuest); assertNotNull(nodeMetadata); assertEquals(nodeMetadata.getName(), virtualGuest.getHostname()); assertNotNull(nodeMetadata.getLocation()); assertEquals(nodeMetadata.getLocation().getId(), location.getId()); assertEquals(nodeMetadata.getHostname(), virtualGuest.getFullyQualifiedDomainName()); assertEquals(nodeMetadata.getHardware().getRam(), virtualGuest.getMaxMemory()); assertTrue(nodeMetadata.getHardware().getProcessors().size() == 1); assertEquals(Iterables.get(nodeMetadata.getHardware().getProcessors(), 0).getCores(), (double) virtualGuest.getStartCpus()); assertEquals(nodeMetadata.getOperatingSystem().getFamily(), OsFamily.UBUNTU); assertEquals(nodeMetadata.getOperatingSystem().getVersion(), "12.04"); assertEquals(nodeMetadata.getOperatingSystem().is64Bit(), true); }
@Test public void testCreateVirtualGuest() throws Exception { VirtualGuest virtualGuestRequest = VirtualGuest.builder() .domain("jclouds.org") .hostname("virtualGuestApiLiveTest") .startCpus(1) .maxMemory(1024) .operatingSystem(OperatingSystem.builder().id("CENTOS_6_64").operatingSystemReferenceCode("CENTOS_6_64").build()) .datacenter(Datacenter.builder().name(datacenter.getName()).build()) .build(); virtualGuest = virtualGuestApi.createVirtualGuest(virtualGuestRequest); boolean orderInSystem = loginDetailsTester.apply(virtualGuest); checkState(orderInSystem, "order for guest %s doesn't have login details within %sms", virtualGuest, Long.toString(guestLoginDelay)); virtualGuest = virtualGuestApi.getVirtualGuest(virtualGuest.getId()); checkVirtualGuest(virtualGuest); assertNotNull(virtualGuest.getPrimaryIpAddress(), "primaryIpAddress must be not null"); assertNotNull(virtualGuest.getPrimaryBackendIpAddress(), "backendIpAddress must be not null"); }
@Test public void testCorrect() { ProductItemPrice price1 = ProductItemPrice.builder().id(100).build(); ProductItemPrice price2 = ProductItemPrice.builder().id(101).build(); VirtualGuest guest = VirtualGuest.builder().hostname("myhost") .domain("mydomain") .build(); ProductOrder order = ProductOrder.builder() .packageId(123) .location("loc456") .quantity(99) .useHourlyPricing(true) .prices(ImmutableSet.of(price1,price2)) .virtualGuests(guest) .build(); String expected = String.format(FORMAT.replaceAll("'","\""), 123,"loc456",100,101,"myhost","mydomain",99,true); HttpRequest req = binder.bindToRequest(request, order); assertEquals(req.getPayload().getRawContent(), expected); } }
if (guest.getHostname().startsWith(TEST_HOSTNAME_PREFIX)) { if (guest.getBillingItemId() != -1) { api().cancelService(guest.getBillingItemId()); prices.add(osPrice); VirtualGuest guest = VirtualGuest.builder().domain("jclouds.org").hostname( TEST_HOSTNAME_PREFIX + new Random().nextInt()).build(); VirtualGuest result = Iterables.get(order2.getVirtualGuests(), 0); ProductOrder order3 = api().getOrderTemplate(result.getId());
public Hardware getHardware(VirtualGuest guest) { // 'bad' orders have no start cpu's and cause the order lookup to fail. if (guest.getStartCpus() < 1) return null; ProductOrder order = client.getVirtualGuestClient().getOrderTemplate(guest.getId()); if (order == null) return null; Iterable<ProductItem> items = Iterables.transform(order.getPrices(), ProductItems.item()); return productItemsToHardware.apply(items); } }
public boolean apply(VirtualGuest guest) { guest = api().getVirtualGuest(virtualGuest.getId()); return guest.getPowerState().getKeyName() == VirtualGuest.State.RUNNING; } }, 5 * 60 * 1000).apply(virtualGuest), "%s still not running!", virtualGuest);