/**
* Licensed to jclouds, Inc. (jclouds) under one or more
* contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. jclouds 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.cloudstack.options;
import java.util.Set;
import org.jclouds.cloudstack.domain.StorageType;
import org.jclouds.cloudstack.domain.SystemVmType;
import com.google.common.collect.ImmutableSet;
/**
* Options to control how service offerings are created
*
* @see <a
* href="http://download.cloud.com/releases/2.2.0/api_2.2.12/global_admin/createServiceOffering.html"
* />
* @author Andrei Savu
*/
public class CreateServiceOfferingOptions extends AccountInDomainOptions {
public static final CreateServiceOfferingOptions NONE = new CreateServiceOfferingOptions();
/**
* @param hostTags
* the host tag for this service offering
*/
public CreateServiceOfferingOptions hostTags(Set<String> hostTags) {
this.queryParameters.replaceValues("hosttags", ImmutableSet.copyOf(hostTags));
return this;
}
/**
* @param isSystem
* is this a system vm offering
*/
public CreateServiceOfferingOptions isSystem(boolean isSystem) {
this.queryParameters.replaceValues("issystem", ImmutableSet.<String>of(isSystem + ""));
return this;
}
/**
* @param limitCpuUse
* restrict the CPU usage to committed service offering
*/
public CreateServiceOfferingOptions limitCpuUse(boolean limitCpuUse) {
this.queryParameters.replaceValues("limitcpuuse", ImmutableSet.<String>of(limitCpuUse + ""));
return this;
}
/**
* @param networkRateInMb
* data transfer rate in megabits per second allowed. Supported only
* for non-System offering and system offerings having "domainrouter"
* systemvmtype
*/
public CreateServiceOfferingOptions networkRateInMb(int networkRateInMb) {
this.queryParameters.replaceValues("networkrate", ImmutableSet.<String>of(networkRateInMb + ""));
return this;
}
/**
* @param highlyAvailable
* the HA for the service offering
*/
public CreateServiceOfferingOptions highlyAvailable(boolean highlyAvailable) {
this.queryParameters.replaceValues("offerha", ImmutableSet.<String>of(highlyAvailable + ""));
return this;
}
/**
* @param storageType
* the storage type of the service offering
*/
public CreateServiceOfferingOptions storageType(StorageType storageType) {
this.queryParameters.replaceValues("storagetype", ImmutableSet.<String>of(storageType.toString()));
return this;
}
/**
* @param systemVmType
* the system VM type. Possible types are "domainrouter", "consoleproxy" and "secondarystoragevm"
*/
public CreateServiceOfferingOptions systemVmType(SystemVmType systemVmType) {
this.queryParameters.replaceValues("systemvmtype", ImmutableSet.<String>of(systemVmType.toString()));
return this;
}
/**
* @param tags
* the tags for this service offering
*/
public CreateServiceOfferingOptions tags(Set<String> tags) {
this.queryParameters.replaceValues("tags", ImmutableSet.copyOf(tags));
return this;
}
public static class Builder {
/**
* @see CreateServiceOfferingOptions#hostTags
*/
public static CreateServiceOfferingOptions hostTags(Set<String> hostTags) {
CreateServiceOfferingOptions options = new CreateServiceOfferingOptions();
return options.hostTags(hostTags);
}
/**
* @see CreateServiceOfferingOptions#isSystem
*/
public static CreateServiceOfferingOptions isSystem(boolean isSystem) {
CreateServiceOfferingOptions options = new CreateServiceOfferingOptions();
return options.isSystem(isSystem);
}
/**
* @see CreateServiceOfferingOptions#limitCpuUse
*/
public static CreateServiceOfferingOptions limitCpuUse(boolean limitCpuUse) {
CreateServiceOfferingOptions options = new CreateServiceOfferingOptions();
return options.limitCpuUse(limitCpuUse);
}
/**
* @see CreateServiceOfferingOptions#networkRateInMb
*/
public static CreateServiceOfferingOptions networkRateInMb(int networkRate) {
CreateServiceOfferingOptions options = new CreateServiceOfferingOptions();
return options.networkRateInMb(networkRate);
}
/**
* @see CreateServiceOfferingOptions#highlyAvailable
*/
public static CreateServiceOfferingOptions highlyAvailable(boolean highlyAvailable) {
CreateServiceOfferingOptions options = new CreateServiceOfferingOptions();
return options.highlyAvailable(highlyAvailable);
}
/**
* @see CreateServiceOfferingOptions#storageType
*/
public static CreateServiceOfferingOptions storageType(StorageType storageType) {
CreateServiceOfferingOptions options = new CreateServiceOfferingOptions();
return options.storageType(storageType);
}
/**
* @see CreateServiceOfferingOptions#systemVmType
*/
public static CreateServiceOfferingOptions systemVmType(SystemVmType systemVmType) {
CreateServiceOfferingOptions options = new CreateServiceOfferingOptions();
return options.systemVmType(systemVmType);
}
/**
* @see CreateServiceOfferingOptions#tags
*/
public static CreateServiceOfferingOptions tags(Set<String> tags) {
CreateServiceOfferingOptions options = new CreateServiceOfferingOptions();
return options.tags(tags);
}
/**
* @see CreateServiceOfferingOptions#accountInDomain
*/
public static CreateServiceOfferingOptions accountInDomain(String account, String domain) {
CreateServiceOfferingOptions options = new CreateServiceOfferingOptions();
return options.accountInDomain(account, domain);
}
/**
* @see CreateServiceOfferingOptions#domainId
*/
public static CreateServiceOfferingOptions domainId(String domainId) {
CreateServiceOfferingOptions options = new CreateServiceOfferingOptions();
return options.domainId(domainId);
}
}
/**
* {@inheritDoc}
*/
@Override
public CreateServiceOfferingOptions accountInDomain(String account, String domain) {
return CreateServiceOfferingOptions.class.cast(super.accountInDomain(account, domain));
}
/**
* {@inheritDoc}
*/
@Override
public CreateServiceOfferingOptions domainId(String domainId) {
return CreateServiceOfferingOptions.class.cast(super.domainId(domainId));
}
}