blob: ddf2036ea28a677dc7f3c01b2a867d4121346ae8 [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.aliyun.ecs.domain;
import com.google.auto.value.AutoValue;
import com.google.common.base.CaseFormat;
import com.google.common.base.Enums;
import com.google.common.base.Joiner;
import com.google.common.base.Optional;
import com.google.common.collect.ImmutableMap;
import org.jclouds.javax.annotation.Nullable;
import org.jclouds.json.SerializedNames;
import java.util.Date;
import java.util.List;
import java.util.Map;
import static com.google.common.base.Preconditions.checkArgument;
@AutoValue
public abstract class Instance {
public enum InternetChargeType {
PAY_BY_TRAFFIC("PayByTraffic"),
DEFAULT("");
private final String internetChargeType;
InternetChargeType(String internetChargeType) {
this.internetChargeType = internetChargeType;
}
public static InternetChargeType fromValue(String value) {
return Enums.getIfPresent(InternetChargeType.class, CaseFormat.UPPER_CAMEL.to(CaseFormat.UPPER_UNDERSCORE, value)).or(InternetChargeType.DEFAULT);
}
public String internetChargeType() {
return internetChargeType;
}
@Override
public String toString() {
return internetChargeType();
}
}
public enum Status {
STARTING, RUNNING, STOPPING, STOPPED;
public static Status fromValue(String value) {
Optional<Status> status = Enums.getIfPresent(Status.class, value.toUpperCase());
checkArgument(status.isPresent(), "Expected one of %s but was %s", Joiner.on(',').join(Status.values()),
value);
return status.get();
}
}
Instance() {}
@SerializedNames(
{ "InnerIpAddress", "ImageId", "InstanceTypeFamily", "VlanId", "NetworkInterfaces", "InstanceId", "EipAddress",
"InternetMaxBandwidthIn", "ZoneId", "InternetChargeType", "SpotStrategy", "StoppedMode", "SerialNumber",
"IoOptimized", "Memory", "Cpu", "VpcAttributes", "InternetMaxBandwidthOut", "DeviceAvailable",
"SecurityGroupIds", "SaleCycle", "SpotPriceLimit", "AutoReleaseTime", "StartTime", "InstanceName",
"Description", "ResourceGroupId", "OSType", "OSName", "InstanceNetworkType", "PublicIpAddress",
"HostName", "InstanceType", "CreationTime", "Status", "Tags", "ClusterId", "Recyclable", "RegionId",
"GPUSpec", "DedicatedHostAttribute", "OperationLocks", "InstanceChargeType", "GPUAmount",
"ExpiredTime" })
public static Instance create(Map<String, List<String>> innerIpAddress, String imageId, String instanceTypeFamily,
String vlanId, Map<String, List<NetworkInterface>> networkInterfaces, String id, EipAddress eipAddress,
Integer internetMaxBandwidthIn, String zoneId, InternetChargeType internetChargeType, String spotStrategy,
String stoppedMode, String serialNumber, Boolean ioOptimized, Integer memory, Integer cpu,
VpcAttributes vpcAttributes, Integer internetMaxBandwidthOut, Boolean deviceAvailable,
Map<String, List<String>> securityGroupIds, String saleCycle, Double spotPriceLimit, String autoReleaseTime,
Date startTime, String name, String description, String resourceGroupId, String osType, String osName,
String instanceNetworkType, Map<String, List<String>> publicIpAddress, String hostname, String instanceType,
Date creationTime, Status status, Map<String, List<Tag>> tags, String clusterId, Boolean recyclable,
String regionId, String gpuSpec, DedicatedHostAttribute dedicatedHostAttribute,
Map<String, List<String>> operationLocks, String instanceChargeType, Integer gpuAmount, Date expiredTime) {
return builder().innerIpAddress(innerIpAddress).imageId(imageId).instanceTypeFamily(instanceTypeFamily).vlanId(vlanId)
.networkInterfaces(networkInterfaces).id(id).eipAddress(eipAddress).internetMaxBandwidthIn(internetMaxBandwidthIn)
.zoneId(zoneId).internetChargeType(internetChargeType).spotStrategy(spotStrategy).stoppedMode(stoppedMode).serialNumber(serialNumber)
.ioOptimized(ioOptimized).memory(memory).cpu(cpu).vpcAttributes(vpcAttributes).internetMaxBandwidthOut(internetMaxBandwidthOut).deviceAvailable(deviceAvailable)
.securityGroupIds(securityGroupIds).saleCycle(saleCycle).spotPriceLimit(spotPriceLimit).autoReleaseTime(autoReleaseTime).startTime(startTime).name(name)
.description(description).resourceGroupId(resourceGroupId).osType(osType).osName(osName).instanceNetworkType(instanceNetworkType).publicIpAddress(publicIpAddress)
.hostname(hostname).instanceType(instanceType).creationTime(creationTime).status(status).tags(tags).clusterId(clusterId).recyclable(recyclable).regionId(regionId)
.gpuSpec(gpuSpec).dedicatedHostAttribute(dedicatedHostAttribute).operationLocks(operationLocks).instanceChargeType(instanceChargeType).gpuAmount(gpuAmount)
.expiredTime(expiredTime).build();
}
public abstract Map<String, List<String>> innerIpAddress();
public abstract String imageId();
public abstract String instanceTypeFamily();
public abstract String vlanId();
public abstract Map<String, List<NetworkInterface>> networkInterfaces();
public abstract String id();
public abstract EipAddress eipAddress();
public abstract Integer internetMaxBandwidthIn();
public abstract String zoneId();
public abstract InternetChargeType internetChargeType();
public abstract String spotStrategy();
public abstract String stoppedMode();
public abstract String serialNumber();
public abstract Boolean ioOptimized();
public abstract Integer memory();
public abstract Integer cpu();
public abstract VpcAttributes vpcAttributes();
public abstract Integer internetMaxBandwidthOut();
public abstract Boolean deviceAvailable();
public abstract Map<String, List<String>> securityGroupIds();
public abstract String saleCycle();
public abstract Double spotPriceLimit();
public abstract String autoReleaseTime();
public abstract Date startTime();
public abstract String name();
public abstract String description();
public abstract String resourceGroupId();
public abstract String osType();
public abstract String osName();
public abstract String instanceNetworkType();
public abstract Map<String, List<String>> publicIpAddress();
public abstract String hostname();
public abstract String instanceType();
public abstract Date creationTime();
public abstract Status status();
@Nullable
public abstract Map<String, List<Tag>> tags();
public abstract String clusterId();
public abstract Boolean recyclable();
public abstract String regionId();
public abstract String gpuSpec();
public abstract DedicatedHostAttribute dedicatedHostAttribute();
public abstract Map<String, List<String>> operationLocks();
public abstract String instanceChargeType();
public abstract Integer gpuAmount();
public abstract Date expiredTime();
public abstract Builder toBuilder();
public static Builder builder() {
return new AutoValue_Instance.Builder();
}
@AutoValue.Builder
public abstract static class Builder {
public abstract Builder innerIpAddress(Map<String, List<String>> innerIpAddress);
public abstract Builder imageId(String imageId);
public abstract Builder instanceTypeFamily(String instanceTypeFamily);
public abstract Builder vlanId(String vlanId);
public abstract Builder networkInterfaces(Map<String, List<NetworkInterface>> networkInterfaces);
public abstract Builder id(String id);
public abstract Builder eipAddress(EipAddress eipAddress);
public abstract Builder internetMaxBandwidthIn(Integer internetMaxBandwidthIn);
public abstract Builder zoneId(String zoneId);
public abstract Builder internetChargeType(InternetChargeType internetChargeType);
public abstract Builder spotStrategy(String spotStrategy);
public abstract Builder stoppedMode(String stoppedMode);
public abstract Builder serialNumber(String serialNumber);
public abstract Builder ioOptimized(Boolean ioOptimized);
public abstract Builder memory(Integer memory);
public abstract Builder cpu(Integer cpu);
public abstract Builder vpcAttributes(VpcAttributes vpcAttributes);
public abstract Builder internetMaxBandwidthOut(Integer internetMaxBandwidthOut);
public abstract Builder deviceAvailable(Boolean deviceAvailable);
public abstract Builder securityGroupIds(Map<String, List<String>> securityGroupIds);
public abstract Builder saleCycle(String saleCycle);
public abstract Builder spotPriceLimit(Double spotPriceLimit);
public abstract Builder autoReleaseTime(String autoReleaseTime);
public abstract Builder startTime(Date startTime);
public abstract Builder name(String name);
public abstract Builder description(String description);
public abstract Builder resourceGroupId(String resourceGroupId);
public abstract Builder osType(String osType);
public abstract Builder osName(String osName);
public abstract Builder instanceNetworkType(String instanceNetworkType);
public abstract Builder publicIpAddress(Map<String, List<String>> publicIpAddress);
public abstract Builder hostname(String hostname);
public abstract Builder instanceType(String instanceType);
public abstract Builder creationTime(Date creationTime);
public abstract Builder status(Status status);
public abstract Builder tags(Map<String, List<Tag>> tags);
public abstract Builder clusterId(String clusterId);
public abstract Builder recyclable(Boolean recyclable);
public abstract Builder regionId(String regionId);
public abstract Builder gpuSpec(String gpuSpec);
public abstract Builder dedicatedHostAttribute(DedicatedHostAttribute dedicatedHostAttribute);
public abstract Builder operationLocks(Map<String, List<String>> operationLocks);
public abstract Builder instanceChargeType(String InstanceChargeType);
public abstract Builder gpuAmount(Integer gpuAmount);
public abstract Builder expiredTime(Date expiredTime);
abstract Instance autoBuild();
abstract Map<String, List<String>> innerIpAddress();
abstract Map<String, List<NetworkInterface>> networkInterfaces();
abstract Map<String, List<String>> securityGroupIds();
abstract Map<String, List<String>> publicIpAddress();
abstract Map<String, List<String>> operationLocks();
abstract Map<String, List<Tag>> tags();
public Instance build() {
innerIpAddress(innerIpAddress() == null ? ImmutableMap.<String, List<String>>of() : ImmutableMap.copyOf(innerIpAddress()));
securityGroupIds(securityGroupIds() == null ? ImmutableMap.<String, List<String>>of() : ImmutableMap.copyOf(securityGroupIds()));
networkInterfaces(networkInterfaces() == null ? ImmutableMap.<String, List<NetworkInterface>>of() : ImmutableMap.copyOf(networkInterfaces()));
publicIpAddress(publicIpAddress() == null ? ImmutableMap.<String, List<String>>of() : ImmutableMap.copyOf(publicIpAddress()));
operationLocks(operationLocks() == null ? ImmutableMap.<String, List<String>>of() : ImmutableMap.copyOf(operationLocks()));
tags(tags() != null ? ImmutableMap.copyOf(tags()) : ImmutableMap.<String, List<Tag>>of());
return autoBuild();
}
}
}