@Override public Compatibilities deserialize(JsonElement json, Type type, JsonDeserializationContext context) throws JsonParseException { JsonObject jsonObj = json.getAsJsonObject(); Set<String> hardwaretypes = jsonObj.get("hardwaretypes") != null ? context.<Set<String>>deserialize(jsonObj.get("hardwaretypes"), typeToken) : ImmutableSet.<String>of(); Set<String> imagetypes = jsonObj.get("imagetypes") != null ? context.<Set<String>>deserialize(jsonObj.get("imagetypes"), typeToken) : ImmutableSet.<String>of(); Set<String> services = jsonObj.get("services") != null ? context.<Set<String>>deserialize(jsonObj.get("services"), typeToken) : ImmutableSet.<String>of(); return Compatibilities.builder() .setHardwaretypes(hardwaretypes) .setImagetypes(imagetypes) .setServices(services) .build(); } }
.setImagetypes(template.getCompatibilities().getImagetypes()) .setServices("namenode", "datanode", "zookeeper") .build(); .setImagetypes(template.getCompatibilities().getImagetypes()) .setServices(template.getCompatibilities().getServices()) .build(); .setImagetypes("ubuntu12") .setServices(template.getCompatibilities().getServices()) .build();
private void copyMainProps(AbstractTemplate from, AbstractTemplate to, Set<String> immutables, boolean isImmutable) throws TemplateImmutabilityException { //merge defaults if(!from.clusterDefaults.equals(ClusterDefaults.EMPTY_CLUSTER_DEFAULTS)){ to.clusterDefaults = ClusterDefaults.builder() .setServices(mergeSet(to.clusterDefaults.services, from.clusterDefaults.services)) .setConfig(mergeConfig(to.clusterDefaults.config, from.clusterDefaults.config, immutables, isImmutable)) .setDNSSuffix(mergeString(to.clusterDefaults.dnsSuffix, from.clusterDefaults.dnsSuffix)) .setHardwaretype(mergeString(to.clusterDefaults.hardwaretype, from.clusterDefaults.hardwaretype)) .setImagetype(mergeString(to.clusterDefaults.imagetype, from.clusterDefaults.imagetype)) .setProvider(mergeString(to.clusterDefaults.provider, from.clusterDefaults.provider)) .build(); } //merge compatibilities services if(!from.compatibilities.equals(Compatibilities.EMPTY_COMPATIBILITIES)) { to.compatibilities = Compatibilities.builder() .setServices(mergeSet(to.compatibilities.services, from.compatibilities.services)) .setHardwaretypes(mergeSet(to.compatibilities.hardwaretypes, from.compatibilities.hardwaretypes)) .setImagetypes(mergeSet(to.compatibilities.imagetypes, from.compatibilities.imagetypes)) .build(); } }
.setCompatibilities(Compatibilities.builder() .setHardwaretypes("small", "medium", "large-mem") .setImagetypes("centos6", "ubuntu12") .setServices("namenode", "datanode").build()) .build();
Compatibilities.builder() .setHardwaretypes(hardwareType.getName()) .setImagetypes(imageType.getName()) .setServices(service1.getName(), service2.getName()).build()) .build();
Compatibilities.builder() .setHardwaretypes(template.getCompatibilities().getHardwaretypes()) .setImagetypes(template.getCompatibilities().getImagetypes()) .setServices(newCompatibleServices).build(); ClusterTemplate updatedTemplate = ClusterTemplate.builder()
Compatibilities.builder() .setHardwaretypes(template.getCompatibilities().getHardwaretypes()) .setImagetypes(newCompatibleImages) .setServices(template.getCompatibilities().getServices()) .build();