blob: e35ec5f7720a27f2d67bc03838766fc9f4c30b3d [file] [log] [blame]
/*
* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The ASF licenses this file to You under the Apache License, Version 2.0
* (the "License"); you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.jclouds.aws.ec2.compute.suppliers;
import static org.jclouds.ec2.compute.domain.EC2HardwareBuilder.c1_medium;
import static org.jclouds.ec2.compute.domain.EC2HardwareBuilder.c1_xlarge;
import static org.jclouds.ec2.compute.domain.EC2HardwareBuilder.c3_2xlarge;
import static org.jclouds.ec2.compute.domain.EC2HardwareBuilder.c3_4xlarge;
import static org.jclouds.ec2.compute.domain.EC2HardwareBuilder.c3_8xlarge;
import static org.jclouds.ec2.compute.domain.EC2HardwareBuilder.c3_large;
import static org.jclouds.ec2.compute.domain.EC2HardwareBuilder.c3_xlarge;
import static org.jclouds.ec2.compute.domain.EC2HardwareBuilder.c4_large;
import static org.jclouds.ec2.compute.domain.EC2HardwareBuilder.c4_2xlarge;
import static org.jclouds.ec2.compute.domain.EC2HardwareBuilder.c4_4xlarge;
import static org.jclouds.ec2.compute.domain.EC2HardwareBuilder.c4_8xlarge;
import static org.jclouds.ec2.compute.domain.EC2HardwareBuilder.c4_xlarge;
import static org.jclouds.ec2.compute.domain.EC2HardwareBuilder.c5_large;
import static org.jclouds.ec2.compute.domain.EC2HardwareBuilder.c5_xlarge;
import static org.jclouds.ec2.compute.domain.EC2HardwareBuilder.c5_2xlarge;
import static org.jclouds.ec2.compute.domain.EC2HardwareBuilder.c5_4xlarge;
import static org.jclouds.ec2.compute.domain.EC2HardwareBuilder.c5_9xlarge;
import static org.jclouds.ec2.compute.domain.EC2HardwareBuilder.c5_18xlarge;
import static org.jclouds.ec2.compute.domain.EC2HardwareBuilder.c5d_large;
import static org.jclouds.ec2.compute.domain.EC2HardwareBuilder.c5d_xlarge;
import static org.jclouds.ec2.compute.domain.EC2HardwareBuilder.c5d_2xlarge;
import static org.jclouds.ec2.compute.domain.EC2HardwareBuilder.c5d_4xlarge;
import static org.jclouds.ec2.compute.domain.EC2HardwareBuilder.c5d_9xlarge;
import static org.jclouds.ec2.compute.domain.EC2HardwareBuilder.c5d_18xlarge;
import static org.jclouds.ec2.compute.domain.EC2HardwareBuilder.cc1_4xlarge;
import static org.jclouds.ec2.compute.domain.EC2HardwareBuilder.cc2_8xlarge;
import static org.jclouds.ec2.compute.domain.EC2HardwareBuilder.cg1_4xlarge;
import static org.jclouds.ec2.compute.domain.EC2HardwareBuilder.d2_2xlarge;
import static org.jclouds.ec2.compute.domain.EC2HardwareBuilder.d2_4xlarge;
import static org.jclouds.ec2.compute.domain.EC2HardwareBuilder.d2_8xlarge;
import static org.jclouds.ec2.compute.domain.EC2HardwareBuilder.d2_xlarge;
import static org.jclouds.ec2.compute.domain.EC2HardwareBuilder.g2_2xlarge;
import static org.jclouds.ec2.compute.domain.EC2HardwareBuilder.hi1_4xlarge;
import static org.jclouds.ec2.compute.domain.EC2HardwareBuilder.hs1_8xlarge;
import static org.jclouds.ec2.compute.domain.EC2HardwareBuilder.i2_2xlarge;
import static org.jclouds.ec2.compute.domain.EC2HardwareBuilder.i2_4xlarge;
import static org.jclouds.ec2.compute.domain.EC2HardwareBuilder.i2_8xlarge;
import static org.jclouds.ec2.compute.domain.EC2HardwareBuilder.i2_xlarge;
import static org.jclouds.ec2.compute.domain.EC2HardwareBuilder.m1_large;
import static org.jclouds.ec2.compute.domain.EC2HardwareBuilder.m1_medium;
import static org.jclouds.ec2.compute.domain.EC2HardwareBuilder.m1_small;
import static org.jclouds.ec2.compute.domain.EC2HardwareBuilder.m1_xlarge;
import static org.jclouds.ec2.compute.domain.EC2HardwareBuilder.m2_2xlarge;
import static org.jclouds.ec2.compute.domain.EC2HardwareBuilder.m2_4xlarge;
import static org.jclouds.ec2.compute.domain.EC2HardwareBuilder.m2_xlarge;
import static org.jclouds.ec2.compute.domain.EC2HardwareBuilder.m3_2xlarge;
import static org.jclouds.ec2.compute.domain.EC2HardwareBuilder.m3_large;
import static org.jclouds.ec2.compute.domain.EC2HardwareBuilder.m3_medium;
import static org.jclouds.ec2.compute.domain.EC2HardwareBuilder.m3_xlarge;
import static org.jclouds.ec2.compute.domain.EC2HardwareBuilder.m4_10xlarge;
import static org.jclouds.ec2.compute.domain.EC2HardwareBuilder.m4_16xlarge;
import static org.jclouds.ec2.compute.domain.EC2HardwareBuilder.m4_2xlarge;
import static org.jclouds.ec2.compute.domain.EC2HardwareBuilder.m4_4xlarge;
import static org.jclouds.ec2.compute.domain.EC2HardwareBuilder.m4_large;
import static org.jclouds.ec2.compute.domain.EC2HardwareBuilder.m4_xlarge;
import static org.jclouds.ec2.compute.domain.EC2HardwareBuilder.m5_large;
import static org.jclouds.ec2.compute.domain.EC2HardwareBuilder.m5_xlarge;
import static org.jclouds.ec2.compute.domain.EC2HardwareBuilder.m5_2xlarge;
import static org.jclouds.ec2.compute.domain.EC2HardwareBuilder.m5_4xlarge;
import static org.jclouds.ec2.compute.domain.EC2HardwareBuilder.m5_12xlarge;
import static org.jclouds.ec2.compute.domain.EC2HardwareBuilder.m5_24xlarge;
import static org.jclouds.ec2.compute.domain.EC2HardwareBuilder.m5d_large;
import static org.jclouds.ec2.compute.domain.EC2HardwareBuilder.m5d_xlarge;
import static org.jclouds.ec2.compute.domain.EC2HardwareBuilder.m5d_2xlarge;
import static org.jclouds.ec2.compute.domain.EC2HardwareBuilder.m5d_4xlarge;
import static org.jclouds.ec2.compute.domain.EC2HardwareBuilder.m5d_12xlarge;
import static org.jclouds.ec2.compute.domain.EC2HardwareBuilder.m5d_24xlarge;
import static org.jclouds.ec2.compute.domain.EC2HardwareBuilder.r3_large;
import static org.jclouds.ec2.compute.domain.EC2HardwareBuilder.r3_xlarge;
import static org.jclouds.ec2.compute.domain.EC2HardwareBuilder.r3_2xlarge;
import static org.jclouds.ec2.compute.domain.EC2HardwareBuilder.r3_4xlarge;
import static org.jclouds.ec2.compute.domain.EC2HardwareBuilder.r3_8xlarge;
import static org.jclouds.ec2.compute.domain.EC2HardwareBuilder.r4_16xlarge;
import static org.jclouds.ec2.compute.domain.EC2HardwareBuilder.r4_2xlarge;
import static org.jclouds.ec2.compute.domain.EC2HardwareBuilder.r4_4xlarge;
import static org.jclouds.ec2.compute.domain.EC2HardwareBuilder.r4_8xlarge;
import static org.jclouds.ec2.compute.domain.EC2HardwareBuilder.r4_large;
import static org.jclouds.ec2.compute.domain.EC2HardwareBuilder.r4_xlarge;
import static org.jclouds.ec2.compute.domain.EC2HardwareBuilder.t1_micro;
import static org.jclouds.ec2.compute.domain.EC2HardwareBuilder.t2_large;
import static org.jclouds.ec2.compute.domain.EC2HardwareBuilder.t2_medium;
import static org.jclouds.ec2.compute.domain.EC2HardwareBuilder.t2_micro;
import static org.jclouds.ec2.compute.domain.EC2HardwareBuilder.t2_nano;
import static org.jclouds.ec2.compute.domain.EC2HardwareBuilder.t2_small;
import static org.jclouds.ec2.compute.domain.EC2HardwareBuilder.t2_xlarge;
import static org.jclouds.ec2.compute.domain.EC2HardwareBuilder.t2_2xlarge;
import static org.jclouds.ec2.compute.domain.EC2HardwareBuilder.t3_nano;
import static org.jclouds.ec2.compute.domain.EC2HardwareBuilder.t3_micro;
import static org.jclouds.ec2.compute.domain.EC2HardwareBuilder.t3_small;
import static org.jclouds.ec2.compute.domain.EC2HardwareBuilder.t3_medium;
import static org.jclouds.ec2.compute.domain.EC2HardwareBuilder.t3_large;
import static org.jclouds.ec2.compute.domain.EC2HardwareBuilder.t3_xlarge;
import static org.jclouds.ec2.compute.domain.EC2HardwareBuilder.t3_2xlarge;
import static org.jclouds.ec2.compute.domain.EC2HardwareBuilder.x1_16xlarge;
import static org.jclouds.ec2.compute.domain.EC2HardwareBuilder.x1_32xlarge;
import java.util.Set;
import javax.inject.Inject;
import javax.inject.Singleton;
import org.jclouds.aws.ec2.compute.config.ClusterCompute;
import org.jclouds.compute.domain.Hardware;
import org.jclouds.ec2.compute.suppliers.EC2HardwareSupplier;
import com.google.common.collect.ImmutableSet;
import com.google.common.collect.ImmutableSet.Builder;
@Singleton
public class AWSEC2HardwareSupplier extends EC2HardwareSupplier {
private final Set<String> ccAmis;
@Inject
public AWSEC2HardwareSupplier(@ClusterCompute Set<String> ccAmis) {
this.ccAmis = ccAmis;
}
@Override
public Set<? extends Hardware> get() {
Builder<Hardware> sizes = ImmutableSet.builder();
sizes.add(cc1_4xlarge().supportsImageIds(ccAmis).build());
sizes.add(cg1_4xlarge().supportsImageIds(ccAmis).build());
sizes.add(cc2_8xlarge().supportsImageIds(ccAmis).build());
sizes.add(hi1_4xlarge().supportsImageIds(ccAmis).build());
sizes.add(hs1_8xlarge().supportsImageIds(ccAmis).build());
sizes.add(g2_2xlarge().supportsImageIds(ccAmis).build());
sizes.add(t1_micro().build());
sizes.add(t2_nano().build());
sizes.add(t2_micro().build());
sizes.add(t2_small().build());
sizes.add(t2_medium().build());
sizes.add(t2_large().build());
sizes.add(t2_xlarge().build());
sizes.add(t2_2xlarge().build());
sizes.add(t3_nano().build());
sizes.add(t3_micro().build());
sizes.add(t3_small().build());
sizes.add(t3_medium().build());
sizes.add(t3_large().build());
sizes.add(t3_xlarge().build());
sizes.add(t3_2xlarge().build());
sizes.add(c1_medium().build());
sizes.add(c1_xlarge().build());
sizes.add(c3_large().build());
sizes.add(c3_xlarge().build());
sizes.add(c3_2xlarge().build());
sizes.add(c3_4xlarge().build());
sizes.add(c3_8xlarge().build());
sizes.add(c4_large().build());
sizes.add(c4_xlarge().build());
sizes.add(c4_2xlarge().build());
sizes.add(c4_4xlarge().build());
sizes.add(c4_8xlarge().build());
sizes.add(c5_large().build());
sizes.add(c5_xlarge().build());
sizes.add(c5_2xlarge().build());
sizes.add(c5_4xlarge().build());
sizes.add(c5_9xlarge().build());
sizes.add(c5_18xlarge().build());
sizes.add(c5d_large().build());
sizes.add(c5d_xlarge().build());
sizes.add(c5d_2xlarge().build());
sizes.add(c5d_4xlarge().build());
sizes.add(c5d_9xlarge().build());
sizes.add(c5d_18xlarge().build());
sizes.add(i2_xlarge().build());
sizes.add(i2_2xlarge().build());
sizes.add(i2_4xlarge().build());
sizes.add(i2_8xlarge().build());
sizes.add(m1_large().build());
sizes.add(m1_small().build());
sizes.add(m1_medium().build());
sizes.add(m1_xlarge().build());
sizes.add(m2_xlarge().build());
sizes.add(m2_2xlarge().build());
sizes.add(m2_4xlarge().build());
sizes.add(m3_medium().build());
sizes.add(m3_large().build());
sizes.add(m3_xlarge().build());
sizes.add(m3_2xlarge().build());
sizes.add(m4_large().build());
sizes.add(m4_xlarge().build());
sizes.add(m4_2xlarge().build());
sizes.add(m4_4xlarge().build());
sizes.add(m4_10xlarge().build());
sizes.add(m4_16xlarge().build());
sizes.add(m5_large().build());
sizes.add(m5_xlarge().build());
sizes.add(m5_2xlarge().build());
sizes.add(m5_4xlarge().build());
sizes.add(m5_12xlarge().build());
sizes.add(m5_24xlarge().build());
sizes.add(m5d_large().build());
sizes.add(m5d_xlarge().build());
sizes.add(m5d_2xlarge().build());
sizes.add(m5d_4xlarge().build());
sizes.add(m5d_12xlarge().build());
sizes.add(m5d_24xlarge().build());
sizes.add(r3_large().build());
sizes.add(r3_xlarge().build());
sizes.add(r3_2xlarge().build());
sizes.add(r3_4xlarge().build());
sizes.add(r3_8xlarge().build());
sizes.add(r4_large().build());
sizes.add(r4_xlarge().build());
sizes.add(r4_2xlarge().build());
sizes.add(r4_4xlarge().build());
sizes.add(r4_8xlarge().build());
sizes.add(r4_16xlarge().build());
sizes.add(d2_xlarge().build());
sizes.add(d2_2xlarge().build());
sizes.add(d2_4xlarge().build());
sizes.add(d2_8xlarge().build());
sizes.add(x1_32xlarge().build());
sizes.add(x1_16xlarge().build());
return sizes.build();
}
}