InstanceTypeConverter.java 2.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556
  1. package hudson.plugins.ec2;
  2. import java.util.HashMap;
  3. import java.util.Map;
  4. import com.amazonaws.services.ec2.model.InstanceType;
  5. import com.thoughtworks.xstream.converters.Converter;
  6. import com.thoughtworks.xstream.converters.MarshallingContext;
  7. import com.thoughtworks.xstream.converters.UnmarshallingContext;
  8. import com.thoughtworks.xstream.io.HierarchicalStreamReader;
  9. import com.thoughtworks.xstream.io.HierarchicalStreamWriter;
  10. /*
  11. * Note this is used only to handle the metadata for older versions of the ec2-plugin. The current
  12. * versions use the Amazon APIs for this. See PluginImpl for where this is used.
  13. */
  14. public class InstanceTypeConverter implements Converter {
  15. private static final Map<String, InstanceType> TYPICA_INSTANCE_TYPES = new HashMap<String, InstanceType>();
  16. static {
  17. TYPICA_INSTANCE_TYPES.put("DEFAULT", InstanceType.M1Small);
  18. TYPICA_INSTANCE_TYPES.put("LARGE", InstanceType.M1Large);
  19. TYPICA_INSTANCE_TYPES.put("XLARGE", InstanceType.M1Xlarge);
  20. TYPICA_INSTANCE_TYPES.put("MEDIUM_HCPU", InstanceType.C1Medium);
  21. TYPICA_INSTANCE_TYPES.put("XLARGE_HCPU", InstanceType.C1Xlarge);
  22. TYPICA_INSTANCE_TYPES.put("XLARGE_HMEM", InstanceType.M2Xlarge);
  23. TYPICA_INSTANCE_TYPES.put("XLARGE_DOUBLE_HMEM", InstanceType.M22xlarge);
  24. TYPICA_INSTANCE_TYPES.put("XLARGE_QUAD_HMEM", InstanceType.M24xlarge);
  25. TYPICA_INSTANCE_TYPES.put("XLARGE_CLUSTER_COMPUTE", InstanceType.Cc14xlarge);
  26. }
  27. public boolean canConvert(Class type) {
  28. return InstanceType.class == type;
  29. }
  30. public void marshal(Object source, HierarchicalStreamWriter writer, MarshallingContext context) {
  31. InstanceType instanceType = (InstanceType) source;
  32. writer.setValue(instanceType.name());
  33. }
  34. public Object unmarshal(HierarchicalStreamReader reader, UnmarshallingContext context) {
  35. InstanceType instanceType = null;
  36. String stringValue = reader.getValue();
  37. try {
  38. instanceType = InstanceType.valueOf(stringValue);
  39. } catch (IllegalArgumentException e) {
  40. instanceType = TYPICA_INSTANCE_TYPES.get(stringValue.toUpperCase());
  41. }
  42. return instanceType;
  43. }
  44. }