package io.fathom.cloud.compute; import io.fathom.cloud.compute.api.os.resources.CertificatesResource; import io.fathom.cloud.compute.api.os.resources.ComputeImagesResource; import io.fathom.cloud.compute.api.os.resources.ExtensionsResource; import io.fathom.cloud.compute.api.os.resources.FlavorsResource; import io.fathom.cloud.compute.api.os.resources.FloatingIpPoolsResource; import io.fathom.cloud.compute.api.os.resources.FloatingIpsResource; import io.fathom.cloud.compute.api.os.resources.HostsResource; import io.fathom.cloud.compute.api.os.resources.KeypairsResource; import io.fathom.cloud.compute.api.os.resources.LimitsResource; import io.fathom.cloud.compute.api.os.resources.OsAggregatesResource; import io.fathom.cloud.compute.api.os.resources.OsAvailabilityZoneResource; import io.fathom.cloud.compute.api.os.resources.OsFloatingIpDnsResource; import io.fathom.cloud.compute.api.os.resources.OsHypervisorsResource; import io.fathom.cloud.compute.api.os.resources.OsServicesResource; import io.fathom.cloud.compute.api.os.resources.QuotaSetsResource; import io.fathom.cloud.compute.api.os.resources.SecurityGroupRulesResource; import io.fathom.cloud.compute.api.os.resources.SecurityGroupsResource; import io.fathom.cloud.compute.api.os.resources.ServerMetadataResource; import io.fathom.cloud.compute.api.os.resources.ServersResource; import io.fathom.cloud.compute.api.os.resources.SimpleTenantUsageResource; import io.fathom.cloud.compute.commands.TimeSpanOptionHandler; import io.fathom.cloud.compute.metadata.MetadataFilter; import io.fathom.cloud.compute.metadata.MetadataResource; import io.fathom.cloud.compute.services.ComputeDerivedMetadata; import io.fathom.cloud.compute.services.ComputeDerivedMetadataImpl; import io.fathom.cloud.compute.services.ComputeService; import io.fathom.cloud.compute.services.ComputeServiceImpl; import io.fathom.cloud.compute.services.Flavors; import io.fathom.cloud.compute.services.NetworkMap; import io.fathom.cloud.compute.services.NetworkMapImpl; import org.kohsuke.args4j.CmdLineParser; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import com.fathomdb.TimeSpan; import com.fathomdb.extensions.ExtensionModuleBase; import com.fathomdb.extensions.HttpConfiguration; public class ComputeExtension extends ExtensionModuleBase { private static final Logger log = LoggerFactory.getLogger(ComputeExtension.class); @Override public void addHttpExtensions(HttpConfiguration http) { // boolean ENABLE_EC2 = false; // if (ENABLE_EC2) { // http.bind(Ec2Endpoint.class); // } // // if (ENABLE_EC2) { // http.filter("/*").through(AwsFilter.class); // } http.bind(MetadataFilter.class); http.bind(MetadataResource.class); http.bind(ComputeImagesResource.class); http.bind(ExtensionsResource.class); http.bind(FlavorsResource.class); http.bind(FloatingIpsResource.class); http.bind(FloatingIpPoolsResource.class); http.bind(KeypairsResource.class); http.bind(LimitsResource.class); http.bind(SecurityGroupsResource.class); http.bind(SecurityGroupRulesResource.class); http.bind(ServerMetadataResource.class); http.bind(ServersResource.class); http.bind(SimpleTenantUsageResource.class); http.bind(QuotaSetsResource.class); http.bind(CertificatesResource.class); http.bind(OsAggregatesResource.class); http.bind(OsAvailabilityZoneResource.class); http.bind(OsFloatingIpDnsResource.class); http.bind(OsHypervisorsResource.class); http.bind(OsServicesResource.class); http.bind(HostsResource.class); } @Override protected void configure() { CmdLineParser.registerHandler(TimeSpan.class, TimeSpanOptionHandler.class); bind(ComputeService.class).to(ComputeServiceImpl.class); bind(NetworkMap.class).to(NetworkMapImpl.class); bind(ComputeDerivedMetadata.class).to(ComputeDerivedMetadataImpl.class); bind(Flavors.class).asEagerSingleton(); } }