protected Hardware automaticHardware(double cores, int ram, Optional<Float> diskSize) { HardwareBuilder builder = new HardwareBuilder(); if (diskSize.isPresent() && diskSize.get() > 0.0f) { builder.volume(new VolumeImpl(diskSize.get(), true, true)); } return builder .id(automaticHardwareIdSpecBuilder(cores, ram, diskSize).toString()) .ram(ram) .processor(new Processor(cores, 1.0)) .build(); }
protected Hardware automaticHardware(double cores, int ram, Optional<Float> diskSize) { HardwareBuilder builder = new HardwareBuilder(); if (diskSize.isPresent() && diskSize.get() > 0.0f) { builder.volume(new VolumeImpl(diskSize.get(), true, true)); } return builder .id(automaticHardwareIdSpecBuilder(cores, ram, diskSize).toString()) .ram(ram) .processor(new Processor(cores, 1.0)) .build(); }
@Override public Iterable<Hardware> listHardwareProfiles() { // Max [cores=48] [disk size per storage=2048GB] [ram=200704 MB] List<Hardware> hardwares = Lists.newArrayList(); for (int core = 1; core <= 48; core++) for (int ram : new int[]{1024, 2 * 1024, 4 * 1024, 8 * 1024, 10 * 1024, 16 * 1024, 24 * 1024, 28 * 1024, 32 * 1024}) for (float size : new float[]{10, 20, 30, 50, 80, 100, 150, 200, 250, 500}) { String id = String.format("cpu=%d,ram=%s,disk=%f", core, ram, size); hardwares.add(new HardwareBuilder() .ids(id) .ram(ram) .hypervisor("kvm") .name(id) .processor(new Processor(core, 1d)) .volume(new VolumeImpl(size, true, true)) .build()); } return hardwares; }
@Override public Hardware apply(FlavorInRegion flavorInRegion) { Location location = locationIndex.get().get(flavorInRegion.getRegion()); checkState(location != null, "location %s not in locationIndex: %s", flavorInRegion.getRegion(), locationIndex.get()); Flavor flavor = flavorInRegion.getFlavor(); return new HardwareBuilder().id(flavorInRegion.slashEncode()).providerId(flavor.getId()).name(flavor.getName()) .ram(flavor.getRam()).processor(new Processor(flavor.getVcpus(), 1.0)).volume( new VolumeImpl(Float.valueOf(flavor.getDisk()), true, true)).location(location).build(); } }
@Override public Hardware apply(FlavorInZone flavorInZone) { Location location = locationIndex.get().get(flavorInZone.getZone()); checkState(location != null, "location %s not in locationIndex: %s", flavorInZone.getZone(), locationIndex.get()); Flavor flavor = flavorInZone.getFlavor(); return new HardwareBuilder().id(flavorInZone.slashEncode()).providerId(flavor.getId()).name(flavor.getName()) .ram(flavor.getRam()).processor(new Processor(flavor.getVcpus(), 1.0)).volume( new VolumeImpl(Float.valueOf(flavor.getDisk()), true, true)).location(location).build(); } }
@Override public Hardware apply(FlavorInRegion flavorInRegion) { Location location = locationIndex.get().get(flavorInRegion.getRegion()); checkState(location != null, "location %s not in locationIndex: %s", flavorInRegion.getRegion(), locationIndex.get()); Flavor flavor = flavorInRegion.getFlavor(); return new HardwareBuilder().id(flavorInRegion.slashEncode()).providerId(flavor.getId()).name(flavor.getName()) .ram(flavor.getRam()).processor(new Processor(flavor.getVcpus(), 1.0)).volume( new VolumeImpl(Float.valueOf(flavor.getDisk()), true, true)).location(location).build(); } }
@Override public Hardware apply(FlavorInZone flavorInZone) { Location location = locationIndex.get().get(flavorInZone.getZone()); checkState(location != null, "location %s not in locationIndex: %s", flavorInZone.getZone(), locationIndex.get()); Flavor flavor = flavorInZone.getFlavor(); return new HardwareBuilder().id(flavorInZone.slashEncode()).providerId(flavor.getId()).name(flavor.getName()) .ram(flavor.getRam()).processor(new Processor(flavor.getVcpus(), 1.0)).volume( new VolumeImpl(Float.valueOf(flavor.getDisk()), true, true)).location(location).build(); } }
@Override public Hardware apply(FlavorInZone flavorInZone) { Location location = locationIndex.get().get(flavorInZone.getZone()); checkState(location != null, "location %s not in locationIndex: %s", flavorInZone.getZone(), locationIndex.get()); Flavor flavor = flavorInZone.getFlavor(); return new HardwareBuilder().id(flavorInZone.slashEncode()).providerId(flavor.getId()).name(flavor.getName()) .ram(flavor.getRam()).processor(new Processor(flavor.getVcpus(), 1.0)).volume( new VolumeImpl(Float.valueOf(flavor.getDisk()), true, true)).location(location).build(); } }
@Override public Hardware apply(FlavorInRegion flavorInRegion) { Location location = locationIndex.get().get(flavorInRegion.getRegion()); checkState(location != null, "location %s not in locationIndex: %s", flavorInRegion.getRegion(), locationIndex.get()); Flavor flavor = flavorInRegion.getFlavor(); return new HardwareBuilder().id(flavorInRegion.slashEncode()).providerId(flavor.getId()).name(flavor.getName()) .ram(flavor.getRam()).processor(new Processor(flavor.getVcpus(), 1.0)).volume( new VolumeImpl(Float.valueOf(flavor.getDisk()), true, true)).location(location).build(); } }
@Override public Hardware apply(PackageInDatacenter pkgInDatacenter) { Location location = locationIndex.get().get(pkgInDatacenter.getDatacenter()); checkState(location != null, "location %s not in locationIndex: %s", pkgInDatacenter.getDatacenter(), locationIndex.get()); org.jclouds.joyent.cloudapi.v6_5.domain.Package pkg = pkgInDatacenter.get(); return new HardwareBuilder().id(pkgInDatacenter.slashEncode()).providerId(pkg.getName()).name(pkg.getName()) .ram(pkg.getMemorySizeMb()) // TODO: no api call to get processors.. either hard-code or // calculate .processor(new Processor(1, 1.0)).volume(new VolumeImpl(Float.valueOf(pkg.getDiskSizeGb()), true, true)) .location(location).build(); } }
@Override public Hardware apply(HardwareProfile from) { HardwareBuilder builder = new HardwareBuilder(); builder.ids(from.getId()); builder.name(from.getName()); builder.uri(from.getHref()); for (HardwareProperty property : from.getProperties()) { if (property.getName().equals("memory")) { builder.ram(Integer.parseInt(property.getValue().toString())); } else if (property.getName().equals("storage")) { Float gigs = new Float(property.getValue().toString()); builder.processors(ImmutableList.of(new Processor(gigs / 10.0, 1.0))); builder.volume(new VolumeBuilder().type(Volume.Type.LOCAL).device("/").size(gigs).bootDevice(true).durable( true).build()); } } return builder.build(); } }
@Override public Hardware apply(PackageInDatacenter pkgInDatacenter) { Location location = locationIndex.get().get(pkgInDatacenter.getDatacenter()); checkState(location != null, "location %s not in locationIndex: %s", pkgInDatacenter.getDatacenter(), locationIndex.get()); org.jclouds.joyent.sdc.v6_5.domain.Package pkg = pkgInDatacenter.get(); return new HardwareBuilder().id(pkgInDatacenter.slashEncode()).providerId(pkg.getName()).name(pkg.getName()) .ram(pkg.getMemorySizeMb()) // TODO: no api call to get processors.. either hard-code or // calculate .processor(new Processor(1, 1.0)).volume(new VolumeImpl(Float.valueOf(pkg.getDiskSizeGb()), true, true)) .location(location).build(); } }
@Override public Hardware apply(Size input) { HardwareBuilder builder = new HardwareBuilder(); builder.id(input.slug()); builder.providerId(input.slug()); builder.name(input.slug()); builder.ram(input.memory()); // No cpu speed from DigitalOcean API, so assume more cores == faster builder.processor(new Processor(input.vcpus(), input.vcpus())); builder.volume(new VolumeBuilder() .size(Float.valueOf(input.disk())) .type(Type.LOCAL) .build()); ImmutableMap.Builder<String, String> metadata = ImmutableMap.builder(); metadata.put("costPerHour", String.valueOf(input.priceHourly())); metadata.put("costPerMonth", String.valueOf(input.priceMonthly())); builder.userMetadata(metadata.build()); return builder.build(); } }
@Override public Hardware apply(Size input) { HardwareBuilder builder = new HardwareBuilder(); builder.id(input.slug()); builder.providerId(input.slug()); builder.name(input.slug()); builder.ram(input.memory()); // No cpu speed from DigitalOcean API, so assume more cores == faster builder.processor(new Processor(input.vcpus(), input.vcpus())); builder.volume(new VolumeBuilder() .size(Float.valueOf(input.disk())) .type(Type.LOCAL) .build()); ImmutableMap.Builder<String, String> metadata = ImmutableMap.builder(); metadata.put("costPerHour", String.valueOf(input.priceHourly())); metadata.put("costPerMonth", String.valueOf(input.priceMonthly())); builder.userMetadata(metadata.build()); return builder.build(); } }
@Override public Hardware apply(Size input) { HardwareBuilder builder = new HardwareBuilder(); builder.id(input.slug()); builder.providerId(input.slug()); builder.name(input.slug()); builder.ram(input.memory()); // No cpu speed from DigitalOcean API, so assume more cores == faster builder.processor(new Processor(input.vcpus(), input.vcpus())); builder.volume(new VolumeBuilder() .size(Float.valueOf(input.disk())) .type(Type.LOCAL) .build()); ImmutableMap.Builder<String, String> metadata = ImmutableMap.builder(); metadata.put("costPerHour", String.valueOf(input.priceHourly())); metadata.put("costPerMonth", String.valueOf(input.priceMonthly())); builder.userMetadata(metadata.build()); return builder.build(); } }
@Override public Hardware apply(PackageInDatacenter pkgInDatacenter) { Location location = locationIndex.get().get(pkgInDatacenter.getDatacenter()); checkState(location != null, "location %s not in locationIndex: %s", pkgInDatacenter.getDatacenter(), locationIndex.get()); org.jclouds.joyent.cloudapi.v6_5.domain.Package pkg = pkgInDatacenter.get(); return new HardwareBuilder().id(pkgInDatacenter.slashEncode()).providerId(pkg.getName()).name(pkg.getName()) .ram(pkg.getMemorySizeMb()) // TODO: no api call to get processors.. either hard-code or // calculate .processor(new Processor(1, 1.0)).volume(new VolumeImpl(Float.valueOf(pkg.getDiskSizeGb()), true, true)) .location(location).build(); } }
@Override public Hardware apply(RoleSize from) { final HardwareBuilder builder = new HardwareBuilder(). ids(from.name().name()). name(from.name().name()). hypervisor("Hyper-V"). processors(ImmutableList.of(new Processor(from.cores(), 2))). ram(from.memoryInMb()); if (from.virtualMachineResourceDiskSizeInMb() != null) { builder.volume(new VolumeBuilder() .size(Float.valueOf(from.virtualMachineResourceDiskSizeInMb())) .type(Volume.Type.LOCAL) .build()); } return builder.build(); }
@Test public void testConvertSize() { Size size = Size.create("2gb", true, 1.0f, 10f, 0.05f, 2048, 1, 20, ImmutableList.<String> of()); Hardware expected = new HardwareBuilder().id("2gb").providerId("2gb").name("2gb") .processor(new Processor(1.0, 1.0)).ram(2048) .volume(new VolumeBuilder().size(20f).type(Type.LOCAL).build()) .userMetadata(ImmutableMap.of("costPerHour", "0.05", "costPerMonth", "10")).build(); SizeToHardware function = new SizeToHardware(); assertEquals(function.apply(size), expected); } }
@BeforeMethod public final void setup() { instance = new ParseInstanceTest().expected(); hardwares = ImmutableSet.of(new HardwareBuilder().id("my_id") .uri(URI.create("https://www.googleapis.com/compute/v1/projects/party/zones/us-central1-a/machineTypes/" + "n1-standard-1")) .providerId("1") .name("mock hardware").processor(new Processor(1.0, 1.0)).ram(2048) .volume(new VolumeBuilder().size(20f).type(Type.LOCAL).build()).build()); locations = ImmutableSet.of(new LocationBuilder() .id("id") .description("https://www.googleapis.com/compute/v1/projects/party/zones/us-central1-a") .scope(LocationScope.REGION) .parent( new LocationBuilder().id("0").description("mock parent location").scope(LocationScope.PROVIDER) .build()).build()); groupNullNodeParser = createNodeParser(hardwares, locations, null); }
@BeforeMethod public void setup() { image = new ImageBuilder().ids("mock").operatingSystem(OperatingSystem.builder().description("mock").build()) .status(Status.AVAILABLE).build(); hardware = new HardwareBuilder().ids("mock").volume(new VolumeBuilder().type(Type.LOCAL).size(1.0f).build()) .processor(new Processor(1.0, 1.0)).build(); template = new TemplateImpl(image, hardware, new LocationBuilder().id("mock").scope(LocationScope.PROVIDER) .description("mock").build(), TemplateOptions.NONE); }