@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()); }
@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 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"); }
.createDate(new SimpleDateFormatDateService().iso8601DateParse("2013-07-26T14:08:21.552-07:00")) .dedicatedAccountHostOnly(false) .domain("test.com") .fullyQualifiedDomainName("my.test.com") .hostname("my")
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()); } }
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()); } }
private VirtualGuest createVirtualGuestWithSoftwareLicenseDetails() { return VirtualGuest.builder() .domain("example.com") .hostname("host1") .id(1301396) .maxMemory(1024) .startCpus(1) .localDiskFlag(true) .operatingSystem(OperatingSystem.builder().id("UBUNTU_LATEST") .operatingSystemReferenceCode("UBUNTU_LATEST") .softwareLicense(SoftwareLicense.builder() .softwareDescription(SoftwareDescription.builder() .version("12.04-64 Minimal for CCI") .referenceCode("UBUNTU_12_64") .longDescription("Ubuntu Linux 12.04 LTS Precise Pangolin - Minimal Install (64 bit)") .build()) .build()) .build()) .datacenter(Datacenter.builder().name("test").build()) .build(); } }
private VirtualGuest createVirtualGuest() { return VirtualGuest.builder() .domain("example.com") .hostname("host1") .fullyQualifiedDomainName("host1.example.com") .id(1301396) .maxMemory(1024) .startCpus(1) .localDiskFlag(true) .operatingSystem(OperatingSystem.builder().id("UBUNTU_LATEST") .operatingSystemReferenceCode("UBUNTU_LATEST") .softwareLicense(SoftwareLicense.builder() .softwareDescription(SoftwareDescription.builder() .version("12.04-64 Minimal for CCI") .referenceCode("UBUNTU_12_64") .longDescription("Ubuntu Linux 12.04 LTS Precise Pangolin - Minimal Install (64 bit)") .build()) .build()) .build()) .datacenter(Datacenter.builder().name("test").build()) .powerState(PowerState.builder().keyName(VirtualGuest.State.RUNNING).build()) .build(); }
@Test public void testVirtualGuestWithOperatingSystem() { HttpRequest request = HttpRequest.builder().method("POST").endpoint("https://api.softlayer.com/rest/v3/SoftLayer_Virtual_Guest").build(); VirtualGuestToJson binder = new VirtualGuestToJson(json); VirtualGuest virtualGuestWithOS = VirtualGuest.builder() .hostname("hostname") .domain("domain") .startCpus(1) .maxMemory(1024) .datacenter(Datacenter.builder() .name("datacenterName") .build()) .operatingSystem(OperatingSystem.builder().id("123456789") .operatingSystemReferenceCode("UBUNTU_12_64") .build()) .localDiskFlag(true) .networkComponents(ImmutableSet.<VirtualGuestNetworkComponent>of()) .build(); request = binder.bindToRequest(request, virtualGuestWithOS); assertEquals(request.getPayload().getRawContent(), "{" + "\"parameters\":[{\"hostname\":\"hostname\",\"domain\":\"domain\",\"startCpus\":1,\"maxMemory\":1024,\"hourlyBillingFlag\":false,\"localDiskFlag\":true,\"dedicatedAccountHostOnlyFlag\":false,\"privateNetworkOnlyFlag\":false,\"operatingSystemReferenceCode\":\"UBUNTU_12_64\",\"datacenter\":{\"name\":\"datacenterName\"}}]}"); }
@Override @Consumes(MediaType.APPLICATION_JSON) public VirtualGuest expected() { return VirtualGuest.builder() .accountId(232298) .createDate(new SimpleDateFormatDateService().iso8601DateParse("2012-11-30T22:28:17.000Z")) .dedicatedAccountHostOnly(false) .domain("example.com") .hostname("host1") .id(1301396) .maxCpu(1) .maxCpuUnits("CORE") .maxMemory(1024) .privateNetworkOnlyFlag(false) .startCpus(1) .statusId(1001) .billingItemId(0) .operatingSystem(null) .datacenter(null) .build(); } }
@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); } }
@Override @Consumes(MediaType.APPLICATION_JSON) public VirtualGuest expected() { return VirtualGuest .builder() .id(416700).accountId(93750).billingItemId(7184019) .createDate(new SimpleDateFormatDateService().iso8601SecondsDateParse("2011-10-01T11:47:35-08:00")) .metricPollDate(new SimpleDateFormatDateService().iso8601SecondsDateParse("2011-10-02T02:32:00-08:00")) .dedicatedAccountHostOnly(true).domain("me.org").fullyQualifiedDomainName("node1703810489.me.org") .hostname("node1703810489").maxCpu(1).maxCpuUnits("CORE").maxMemory(1024) .modifyDate(new SimpleDateFormatDateService().iso8601SecondsDateParse("2011-10-02T02:32:40-08:00")) .primaryBackendIpAddress("10.37.102.195").primaryIpAddress("173.192.29.187").startCpus(1).statusId(1001) .uuid("02ddbbba-9225-3d54-6de5-fc603b309dd8") .operatingSystem(OperatingSystem.builder().id(913824) .passwords(Password.builder().id(729122).username("root").password("KnJqhC2l").build()) .build()) .datacenter(Datacenter.builder().id(3).name("dal01").longName("Dallas").build()) //TODO: maybe powerState can be flattened like billingItemId .powerState(new PowerState(VirtualGuest.State.RUNNING)).build(); }
@Override @Consumes(MediaType.APPLICATION_JSON) public VirtualGuest expected() { return VirtualGuest .builder() .id(416700).accountId(93750).billingItemId(7184019) .createDate(new SimpleDateFormatDateService().iso8601SecondsDateParse("2011-10-01T11:47:35-08:00")) .metricPollDate(new SimpleDateFormatDateService().iso8601SecondsDateParse("2011-10-02T02:32:00-08:00")) .dedicatedAccountHostOnly(true).domain("me.org").fullyQualifiedDomainName("node1703810489.me.org") .hostname("node1703810489").maxCpu(1).maxCpuUnits("CORE").maxMemory(1024) .modifyDate(new SimpleDateFormatDateService().iso8601SecondsDateParse("2011-10-02T03:19:43-08:00")) .primaryBackendIpAddress("10.37.102.195").primaryIpAddress("173.192.29.187").startCpus(1).statusId(1001) .uuid("02ddbbba-9225-3d54-6de5-fc603b309dd8") .operatingSystem(OperatingSystem.builder().id(913824) .passwords(Password.builder().id(729122).username("root").password("KnJqhC2l").build()) .build()) .datacenter(Datacenter.builder().id(3).name("dal01").longName("Dallas").build()) //TODO: maybe powerState can be flattened like billingItemId .powerState(new PowerState(VirtualGuest.State.HALTED)).build(); }
@Override @Consumes(MediaType.APPLICATION_JSON) public VirtualGuest expected() { return VirtualGuest .builder() .id(416700).accountId(93750).billingItemId(7184019) .createDate(new SimpleDateFormatDateService().iso8601SecondsDateParse("2011-10-01T11:47:35-08:00")) .metricPollDate(new SimpleDateFormatDateService().iso8601SecondsDateParse("2011-10-02T02:32:00-08:00")) .dedicatedAccountHostOnly(true).domain("me.org").fullyQualifiedDomainName("node1703810489.me.org") .hostname("node1703810489").maxCpu(1).maxCpuUnits("CORE").maxMemory(1024) .modifyDate(new SimpleDateFormatDateService().iso8601SecondsDateParse("2011-10-02T03:18:12-08:00")) .primaryBackendIpAddress("10.37.102.195").primaryIpAddress("173.192.29.187").startCpus(1).statusId(1001) .uuid("02ddbbba-9225-3d54-6de5-fc603b309dd8") .operatingSystem(OperatingSystem.builder().id(913824) .passwords(Password.builder().id(729122).username("root").password("KnJqhC2l").build()) .build()) .datacenter(Datacenter.builder().id(3).name("dal01").longName("Dallas").build()) //TODO: maybe powerState can be flattened like billingItemId .powerState(new PowerState(VirtualGuest.State.PAUSED)).build(); }
private VirtualGuest createVirtualGuest() { return VirtualGuest.builder() .domain("example.com") .hostname("host1") .id(1301396) .maxMemory(1024) .startCpus(1) .localDiskFlag(true) .operatingSystem(OperatingSystem.builder().id("UBUNTU_LATEST") .operatingSystemReferenceCode("UBUNTU_LATEST") .build()) .datacenter(Datacenter.builder().name("test").build()) .build(); } }
private VirtualGuest createVirtualGuestWithoutSoftwareLicenseDetails() { return VirtualGuest.builder() .domain("example.com") .hostname("host1") .id(1301396) .maxMemory(1024) .startCpus(1) .localDiskFlag(true) .operatingSystem(OperatingSystem.builder().id("UBUNTU_LATEST") .operatingSystemReferenceCode("UBUNTU_LATEST") .build()) .datacenter(Datacenter.builder().name("test").build()) .build(); }
@Override @Consumes(MediaType.APPLICATION_JSON) public VirtualGuest expected() { return VirtualGuest .builder() .id(416788).accountId(93750).billingItemId(7185261) .createDate(new SimpleDateFormatDateService().iso8601SecondsDateParse("2011-10-02T03:24:43-08:00")) .dedicatedAccountHostOnly(true).domain("me.org").fullyQualifiedDomainName("node1000360500.me.org") .hostname("node1000360500").maxCpu(1).maxCpuUnits("CORE").maxMemory(1024) .modifyDate(new SimpleDateFormatDateService().iso8601SecondsDateParse("2011-10-02T03:25:33-08:00")) .primaryBackendIpAddress("10.37.102.194").primaryIpAddress("173.192.29.186").startCpus(1).statusId(1001) .uuid("96fe22ad-8182-924d-ce51-a037e477dd83") .operatingSystem(OperatingSystem.builder().id(913960).build()) .datacenter(Datacenter.builder().id(3).name("dal01").longName("Dallas").build()) //TODO: maybe powerState can be flattened like billingItemId .powerState(new PowerState(VirtualGuest.State.HALTED)).build(); }
private VirtualGuest createVirtualGuest() { return VirtualGuest.builder() .domain("example.com") .hostname("host1") .id(1301396) .maxMemory(1024) .startCpus(1) .localDiskFlag(true) .operatingSystem(OperatingSystem.builder().id("UBUNTU_LATEST") .operatingSystemReferenceCode("UBUNTU_LATEST") .build()) .datacenter(Datacenter.builder().name("test").build()) .build(); }
private VirtualGuest createVirtualGuestWithoutOperatingSystem() { return VirtualGuest.builder() .domain("example.com") .hostname("host1") .id(1301396) .maxMemory(1024) .startCpus(1) .localDiskFlag(true) .datacenter(Datacenter.builder().name("test").build()) .softwareLicense(SoftwareLicense.builder().build()) .build(); }
@Override @Consumes(MediaType.APPLICATION_JSON) public VirtualGuest expected() { return VirtualGuest .builder() .id(413348).accountId(93750).billingItemId(-1) .createDate(new SimpleDateFormatDateService().iso8601SecondsDateParse("2011-09-28T01:52:45-08:00")) .domain("jclouds.org").fullyQualifiedDomainName("foo-ef4.jclouds.org") .hostname("foo-ef4").maxCpu(0).maxCpuUnits("CORE").maxMemory(256) .statusId(1001).startCpus(0) //TODO: maybe powerState can be flattened like billingItemId .powerState(new PowerState(VirtualGuest.State.HALTED)).build(); }