@Override public Hardware apply(VAppTemplate from) { checkNotNull(from, "VAppTemplate"); if (!from.isOvfDescriptorUploaded()) { logger.warn("cannot parse hardware as ovf descriptor for %s is not uploaded", from); return null; } Envelope ovf = client.getOvfEnvelopeForVAppTemplate(from.getHref()); if (ovf == null) { logger.warn("cannot parse hardware as no ovf envelope found for %s", from); return null; } if (ovf.getVirtualSystem().getVirtualHardwareSections().size() == 0) { logger.warn("cannot parse hardware for %s as no hardware sections exist in ovf %s", ovf); return null; } if (ovf.getVirtualSystem().getVirtualHardwareSections().size() > 1) { logger.warn("multiple hardware choices found. using first", ovf); } VirtualHardwareSection hardware = Iterables.get(ovf.getVirtualSystem().getVirtualHardwareSections(), 0); HardwareBuilder builder = rasdToHardwareBuilder.apply(hardware.getItems()); builder.location(findLocationForResource.apply(checkNotNull(parent, "parent"))); builder .ids(from.getHref().toASCIIString()) .name(from.getName()) .supportsImage(ImagePredicates.idEquals(from.getHref().toASCIIString())); return builder.build(); }
@Override public Image apply(VAppTemplate from) { checkNotNull(from, "VAppTemplate"); Envelope ovf = templateToEnvelope.apply(from); ImageBuilder builder = new ImageBuilder(); builder.ids(from.getHref().toASCIIString()); builder.uri(from.getHref()); builder.name(from.getName()); if (from.getVDC() != null) { builder.location(findLocationForResource.apply(from.getVDC())); } else { // otherwise, it could be in a public catalog, which is not assigned to a VDC } builder.description(from.getDescription() != null ? from.getDescription() : from.getName()); builder.operatingSystem(CIMOperatingSystem.toComputeOs(ovf)); builder.status(toPortableImageStatus.get(from.getStatus())); return builder.build(); }