public Builder toBuilder() { return builder().fromOperatingSystem(this); }
private void assertUbuntu(Image image, String version) { // Expect owner Canonical assertEquals(image.getUserMetadata().get("owner"), "099720109477", "image="+image); assertTrue(image.getName().toLowerCase().contains("ubuntu"), "image="+image); assertTrue(image.getName().contains(version), "image="+image); assertEquals(image.getOperatingSystem().getFamily(), OsFamily.UBUNTU, "image="+image); assertEquals(image.getOperatingSystem().getVersion(), version, "image="+image); }
public Builder fromOperatingSystem(OperatingSystem in) { return family(in.getFamily()).name(in.getName()).version(in.getVersion()).arch(in.getArch()).description( in.getDescription()).is64Bit(in.is64Bit()); } }
static Iterable<String> searchStrings(OperatingSystem os) { Set<String> search = Sets.newLinkedHashSet(); if (os.getName() != null) search.add(os.getName()); if (os.getDescription() != null) search.add(os.getDescription()); return search; }
private void listImages(ComputeService computeService) { log("list images"); for (Image image : computeService.listImages()) {// TODO log(String.format(" image location=%s, id=%s, name=%s, version=%s, osArch=%s, osfam=%s, osdesc=%s, desc=%s", image.getLocation(), image.getProviderId(), image.getName(), image.getVersion(), image .getOperatingSystem().getArch(), image.getOperatingSystem().getFamily(), image .getOperatingSystem().getDescription(), image.getDescription())); } }
@Test public void testVirtualGuestToImageWithSoftwareLicense() { VirtualGuest virtualGuest = createVirtualGuestWithSoftwareLicenseDetails(); Image image = new VirtualGuestToImage(operatingSystemToImage).apply(virtualGuest); assertNotNull(image); assertEquals(image.getOperatingSystem().getFamily(), OsFamily.UBUNTU); assertEquals(image.getOperatingSystem().getVersion(), "12.04"); assertEquals(image.getOperatingSystem().is64Bit(), true); }
@Test public void testTryStackOneric() { String name = "oneiric-server-cloudimg-amd64"; Image imageToConvert = Image.builder().id("id-" + name).name(name).build(); OperatingSystem convertedOs = converterForUbuntu.apply(imageToConvert); assertEquals(convertedOs.getName(), imageToConvert.getName()); assertEquals(convertedOs.getFamily(), OsFamily.UBUNTU); assertEquals(convertedOs.getDescription(), imageToConvert.getName()); assertEquals(convertedOs.getVersion(), "11.10"); assertEquals(convertedOs.getArch(), null); assertTrue(convertedOs.is64Bit()); }
@Test public void testWhenNoHardwareAndImageMatchServerScopedIdsHardwareOperatingSystemAndImageIdAreSet() { Hardware existingHardware = new HardwareBuilder().id("az-1.region-a.geo-1/52415800-8b69-11e0-9b19-734f216543fd") .providerId("52415800-8b69-11e0-9b19-734f216543fd").location(zone).build(); Image existingImage = new ImageBuilder().id("az-1.region-a.geo-1/52415800-8b69-11e0-9b19-734f6f006e54") .operatingSystem(OperatingSystem.builder().family(OsFamily.LINUX).description("foobuntu").build()) .providerId("52415800-8b69-11e0-9b19-734f6f006e54").description("foobuntu").status(Image.Status.AVAILABLE) .location(zone).build(); checkHardwareAndImageStatus(existingHardware, existingHardware, existingImage.getId(), existingImage.getOperatingSystem(), existingImage); }
@Test public void testNewWindowsName() throws Exception { ReviseParsedImage rpi = new AWSEC2ReviseParsedImage(osVersionMap); Image from = newImage("amazon", "Windows_Server-2008-R2_SP1-English-64Bit-Base-2012.03.13"); OperatingSystem.Builder osBuilder = OperatingSystem.builder().description("test"); ImageBuilder builder = new ImageBuilder().id("1").operatingSystem(osBuilder.build()).status( org.jclouds.compute.domain.Image.Status.AVAILABLE).description("test"); OsFamily family = OsFamily.WINDOWS; rpi.reviseParsedImage(from, builder, family, osBuilder); OperatingSystem os = osBuilder.build(); assertEquals(os.getFamily(), OsFamily.WINDOWS); assertEquals(os.getVersion(), "2008"); assertEquals(builder.build().getVersion(), "2012.03.13"); }
@Test public void createByCloningAddsNodeCredentials() throws InterruptedException, ExecutionException { Credentials credentials = LoginCredentials.builder().user("jclouds").password("pass").build(); ImageCacheSupplier imageCache = createMock(ImageCacheSupplier.class); ImageExtension delegate = createMock(ImageExtension.class); AddDefaultCredentialsToImage credsToImage = createMock(AddDefaultCredentialsToImage.class); Map<String, Credentials> credentialStore = ImmutableMap.of("node#node1", credentials); ImageTemplate template = new CloneImageTemplateBuilder().name("test").nodeId("node1").build(); Image result = new ImageBuilder().id("test") .operatingSystem(OperatingSystem.builder().description("test").build()).status(Status.AVAILABLE).build(); expect(delegate.createImage(template)).andReturn(immediateFuture(result)); replay(delegate, credsToImage); Future<Image> image = new DelegatingImageExtension(imageCache, delegate, credsToImage, credentialStore) .createImage(template); assertEquals(image.get().getDefaultCredentials(), credentials); verify(delegate, credsToImage); }
public void testRedHatEnterpriseLinuxDescriptionSupportsYum() { assert supportsYum().apply(new OperatingSystem(null, "", null, null, "Red Hat Enterprise Linux", false)); } }
@Test public void testAmazonLinuxInstanceStore() throws IOException { Template defaultTemplate = view.getComputeService().templateBuilder().osFamily(AMZN_LINUX) .imageMatches(EC2ImagePredicates.rootDeviceType(RootDeviceType.INSTANCE_STORE)).build(); assert defaultTemplate.getImage().getProviderId().startsWith("ami-") : defaultTemplate; assertEquals(defaultTemplate.getImage().getOperatingSystem().is64Bit(), true); assertEquals(defaultTemplate.getImage().getOperatingSystem().getFamily(), AMZN_LINUX); assertEquals(defaultTemplate.getImage().getUserMetadata().get("rootDeviceType"), "instance-store"); assertEquals(defaultTemplate.getLocation().getId(), "us-east-1"); assertEquals(getCores(defaultTemplate.getHardware()), 1.0d); assertEquals(defaultTemplate.getImage().getOperatingSystem().getArch(), "paravirtual"); }
@Test public void testTemplateChoiceForInstanceByImageIdDoesNotGetAllImages() throws Exception { @SuppressWarnings("unchecked") Supplier<Set<? extends Image>> images = createMock(Supplier.class); replay(images); final Image image = new ImageBuilder().providerId("cc-image").name("image").id("us-east-1/cc-image").location(location) .operatingSystem(new OperatingSystem(OsFamily.UBUNTU, null, "1.0", "hvm", "ubuntu", true)) .description("description").version("1.0").defaultCredentials(LoginCredentials.builder().user("root").build()) .status(Image.Status.AVAILABLE) .build(); Map<RegionAndName, Image> imageMap = ImmutableMap.of( new RegionAndName(image.getLocation().getId(), image.getProviderId()), image); // weird compilation error means have to declare extra generics for call to build() - see https://bugs.eclipse.org/bugs/show_bug.cgi?id=365818 Supplier<LoadingCache<RegionAndName, ? extends Image>> imageCache = Suppliers.<LoadingCache<RegionAndName, ? extends Image>> ofInstance( CacheBuilder.newBuilder().<RegionAndName,Image>build(CacheLoader.from(Functions.forMap(imageMap)))); Template template = newTemplateBuilder(images, imageCache).imageId("us-east-1/cc-image").build(); assert template != null : "The returned template was null, but it should have a value."; assertEquals(template.getImage().getId(), "us-east-1/cc-image"); }
@Test public void createByCloningDoesNothingIfImageHasCredentials() throws InterruptedException, ExecutionException { LoginCredentials credentials = LoginCredentials.builder().user("jclouds").password("pass").build(); ImageCacheSupplier imageCache = createMock(ImageCacheSupplier.class); ImageExtension delegate = createMock(ImageExtension.class); AddDefaultCredentialsToImage credsToImage = createMock(AddDefaultCredentialsToImage.class); ImageTemplate template = new CloneImageTemplateBuilder().name("test").nodeId("node1").build(); Image result = new ImageBuilder().id("test") .operatingSystem(OperatingSystem.builder().description("test").build()).status(Status.AVAILABLE) .defaultCredentials(credentials).build(); expect(delegate.createImage(template)).andReturn(immediateFuture(result)); replay(delegate, credsToImage); Future<Image> image = new DelegatingImageExtension(imageCache, delegate, credsToImage, null) .createImage(template); // Verify that the exact same instance is returned unmodified assertTrue(image.get() == result); verify(delegate, credsToImage); }
public void testReturnRootWhenNotOnWindows() { Image image = createMock(Image.class); expect(image.getId()).andReturn("1"); expect(image.getOperatingSystem()).andReturn( OperatingSystem.builder().family(OsFamily.LINUX).description("foo").build()).atLeastOnce(); replay(image); Credentials creds = new Credentials("root", null); assertEquals(new ReturnCredentialsBoundToImage(null, ImmutableMap.<String, Credentials> of(), ImmutableMap .<OsFamily, LoginCredentials> of()).apply(image), creds); verify(image); }
@Override public Image apply(OSTemplate template) { checkNotNull(template, "template"); OsFamilyVersion64Bit parsed = osParser.apply(template.getName()); Builder builder = OperatingSystem.builder(); builder.name(template.getName()).description(template.getName()).is64Bit(parsed.is64Bit).version(parsed.version) .family(parsed.family); return new ImageBuilder().ids(template.getName()).name(template.getName()).description(template.getName()) .operatingSystem(builder.build()).status(Status.AVAILABLE).build(); } }
@Test(expectedExceptions = IllegalStateException.class) public void testConversionWhereLocationNotFound() { UUID id = UUID.randomUUID(); Image novaImageToConvert = Image.builder().id(id.toString()).name("Test Image " + id).build(); OperatingSystem operatingSystem = new OperatingSystem(OsFamily.UBUNTU, "My Test OS", "My Test Version", "x86", "My Test OS", true); ImageInZoneToImage converter = new ImageInZoneToImage(NovaComputeServiceContextModule.toPortableImageStatus, constant(operatingSystem), locationIndex); ImageInZone novaImageInZoneToConvert = new ImageInZone(novaImageToConvert, "South"); converter.apply(novaImageInZoneToConvert); }
@Override public Image apply(DriveInfo drive) { if (drive.getName() == null) return null; String description = drive.getDescription() != null ? drive.getDescription() : drive.getName(); Builder builder = OperatingSystem.builder(); OsFamilyVersion64Bit parsed = imageParser.apply(drive.getName()); builder.name(drive.getName()).description(description) .is64Bit(drive.getBits() != null ? drive.getBits() == 64 : parsed.is64Bit).version(parsed.version) .family(parsed.family); return new ImageBuilder().ids(drive.getUuid()) .userMetadata(ImmutableMap.<String, String> of("size", drive.getSize() / 1024 / 1024 / 1024 + "")) .location(locationSupplier.get()).name(drive.getName()).description(description) .operatingSystem(builder.build()).status(Status.AVAILABLE).version("").build(); } }
/** * Ensures that an explicitly set null Image description results in no errors. */ public void testNullDescription() { Image img = new ImageBuilder().id("test-id") .description(null) .status(Status.AVAILABLE) .operatingSystem(new OperatingSystem(OsFamily.CLOUD_LINUX, null, null, null, "os-description", true)) .build(); assertNull(img.getDescription()); } }
@Override public Iterable<Image> listImages() { // initializing as a List, as ImmutableSet does not allow you to put // duplicates Builder<Image> images = ImmutableList.builder(); int id = 1; for (boolean is64Bit : new boolean[] { true, false }) for (Entry<OsFamily, Map<String, String>> osVersions : this.osToVersionMap.entrySet()) { for (String version : ImmutableSet.copyOf(osVersions.getValue().values())) { String desc = String.format("stub %s %s", osVersions.getKey(), is64Bit); images.add(new ImageBuilder().ids(id++ + "").name(osVersions.getKey().name()).location(location.get()) .operatingSystem(new OperatingSystem(osVersions.getKey(), desc, version, null, desc, is64Bit)) .description(desc).status(Image.Status.AVAILABLE).build()); } } return images.build(); }