/**
 * Copyright (C) 2009-2013 enstratius, Inc.
 *
 * ====================================================================
 * Licensed 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.dasein.cloud.compute;

import org.dasein.cloud.platform.Metric;

import java.io.Serializable;
import java.util.Collection;

public class ScalingGroup implements Serializable {
    private static final long serialVersionUID = -5317003700769693511L;
    
    private int                   defaultCooldown;
    private long                  creationTimestamp;
    private String                description;
    private int                   maxServers;
    private int                   minServers;
    private String                name;
    private String[]              providerDataCenterIds;
    private String                providerLaunchConfigurationId;
    private String                providerOwnerId;
    private String                providerRegionId;
    private String                providerScalingGroupId;
    private String[]              providerServerIds;
    private int                   targetCapacity;
    private String                autoScalingGroupARN;
    private String[]              enabledMetrics;
    private int                   healthCheckGracePeriod;
    private String                healthCheckType;
    private String[]              providerLoadBalancerNames;
    private String                status;
    private Collection<String[]>  suspendedProcesses;
    private String[]              terminationPolicies;
    private String                providerVlanId;

    
    public ScalingGroup() { }

    public String getAutoScalingGroupARN() {
      return autoScalingGroupARN;
    }

    public void setAutoScalingGroupARN(String arn) {
      this.autoScalingGroupARN = arn;
    }

    public String[] getEnabledMetrics() {
      return enabledMetrics;
    }

    public void setEnabledMetrics(String[] metrics) {
      this.enabledMetrics = metrics;
    }

    public int getHealthCheckGracePeriod() {
      return healthCheckGracePeriod;
    }

    public void setHealthCheckGracePeriod(int healthCheckGracePeriod) {
      this.healthCheckGracePeriod = healthCheckGracePeriod;
    }

    public String getHealthCheckType() {
      return healthCheckType;
    }

    public void setHealthCheckType(String healthCheckType) {
      this.healthCheckType = healthCheckType;
    }

    public String[] getProviderLoadBalancerNames() {
      return providerLoadBalancerNames;
    }

    public void setProviderLoadBalancerNames(String[] providerLoadBalancerNames) {
      this.providerLoadBalancerNames = providerLoadBalancerNames;
    }

    public String getStatus() {
      return status;
    }

    public void setStatus(String status) {
      this.status = status;
    }

    public Collection<String[]> getSuspendedProcesses() {
      return suspendedProcesses;
    }

    public void setSuspendedProcesses(Collection<String[]> suspendedProcesses) {
      this.suspendedProcesses = suspendedProcesses;
    }

    public String[] getTerminationPolicies() {
      return terminationPolicies;
    }

    public void setTerminationPolicies(String[] terminationPolicies) {
      this.terminationPolicies = terminationPolicies;
    }

    public String getProviderVlanId() {
      return providerVlanId;
    }

    public void setProviderVlanId(String providerVlanId) {
      this.providerVlanId = providerVlanId;
    }

    public int getDefaultCoolcown() {
        return defaultCooldown;
    }

    public void setDefaultCoolcown(int cooldown) {
        this.defaultCooldown = cooldown;
    }

    public String getDescription() {
        return description;
    }

    public void setDescription(String description) {
        this.description = description;
    }

    public int getMaxServers() {
        return maxServers;
    }

    public void setMaxServers(int maxServers) {
        this.maxServers = maxServers;
    }

    public int getMinServers() {
        return minServers;
    }

    public void setMinServers(int minServers) {
        this.minServers = minServers;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String[] getProviderDataCenterIds() {
        return providerDataCenterIds;
    }

    public void setProviderDataCenterIds(String[] providerDataCenterIds) {
        this.providerDataCenterIds = providerDataCenterIds;
    }

    public String getProviderLaunchConfigurationId() {
        return providerLaunchConfigurationId;
    }

    public void setProviderLaunchConfigurationId(String providerLaunchConfigurationId) {
        this.providerLaunchConfigurationId = providerLaunchConfigurationId;
    }

    public String getProviderOwnerId() {
        return providerOwnerId;
    }

    public void setProviderOwnerId(String providerOwnerId) {
        this.providerOwnerId = providerOwnerId;
    }

    public String getProviderRegionId() {
        return providerRegionId;
    }

    public void setProviderRegionId(String providerRegionId) {
        this.providerRegionId = providerRegionId;
    }

    public String getProviderScalingGroupId() {
        return providerScalingGroupId;
    }

    public void setProviderScalingGroupId(String providerScalingGroupId) {
        this.providerScalingGroupId = providerScalingGroupId;
    }

    public void setProviderServerIds(String[] providerServerIds) {
        this.providerServerIds = providerServerIds;
    }

    public String[] getProviderServerIds() {
        return providerServerIds;
    }

    public void setCreationTimestamp(long creationTimestamp) {
        this.creationTimestamp = creationTimestamp;
    }

    public long getCreationTimestamp() {
        return creationTimestamp;
    }

    public void setTargetCapacity(int targetCapacity) {
        this.targetCapacity = targetCapacity;
    }

    public int getTargetCapacity() {
        return targetCapacity;
    }
    
}

@@ -783,50 +783,8 @@
 e;%0A%0A
-import org.dasein.cloud.platform.Metric;%0A%0A
 impo
@@ -808,16 +808,16 @@
 izable;%0A
+
 import j
@@ -2058,24 +2058,52 @@
 onPolicies;%0A
+    // comma seperated list%0A
     private 
@@ -2124,30 +2124,25 @@
         
-providerVlan
+subnet
 Id
+s
 ;%0A%0A    %0A
@@ -3808,194 +3808,8 @@
  %7D%0A%0A
-    public String getProviderVlanId() %7B%0A      return providerVlanId;%0A    %7D%0A%0A    public void setProviderVlanId(String providerVlanId) %7B%0A      this.providerVlanId = providerVlanId;%0A    %7D%0A%0A
     
@@ -6312,24 +6312,24 @@
 apacity() %7B%0A
-
         retu
@@ -6352,16 +6352,172 @@
 y;%0A    %7D
+%0A%0A    public String getSubnetIds() %7B%0A      return subnetIds;%0A    %7D%0A%0A    public void setSubnetIds(String subnetIds) %7B%0A      this.subnetIds = subnetIds;%0A    %7D
 %0A    %0A%7D%0A

replace providerVlanId in AutoScaling Groups with subnetIds