All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.jclouds.cloudstack.compute.options.CloudStackTemplateOptions Maven / Gradle / Ivy

/*
 * 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.cloudstack.compute.options;

import static com.google.common.base.Preconditions.checkNotNull;

import java.io.IOException;
import java.net.URL;
import java.util.Arrays;
import java.util.Map;
import java.util.Set;

import org.jclouds.compute.options.TemplateOptions;
import org.jclouds.domain.LoginCredentials;
import org.jclouds.scriptbuilder.domain.Statement;

import com.google.common.base.Charsets;
import com.google.common.base.MoreObjects;
import com.google.common.base.Objects;
import com.google.common.collect.ImmutableMap;
import com.google.common.collect.ImmutableSet;
import com.google.common.io.Resources;

/**
 * Contains options supported by the
 * {@link ComputeService#createNodesInGroup(String, int, TemplateOptions)} and
 * {@link ComputeService#createNodesInGroup(String, int, TemplateOptions)}
 * operations on the gogrid provider.
 *
 * 

Usage

The recommended way to instantiate a * {@link CloudStackTemplateOptions} object is to statically import * {@code CloudStackTemplateOptions.*} and invoke a static creation method * followed by an instance mutator (if needed): *

* *

 * import static org.jclouds.compute.options.CloudStackTemplateOptions.Builder.*;
 * ComputeService client = // get connection
 * templateBuilder.options(inboundPorts(22, 80, 8080, 443));
 * Set<? extends NodeMetadata> set = client.createNodesInGroup(tag, 2, templateBuilder.build());
 * 
*/ public class CloudStackTemplateOptions extends TemplateOptions implements Cloneable { private Set securityGroupIds = ImmutableSet.of(); private Map ipsToNetworks = ImmutableMap.of(); private String ipOnDefaultNetwork; private String keyPair; private boolean setupStaticNat = true; private String account; private String domainId; private boolean generateKeyPair = false; private boolean generateSecurityGroup = false; private String diskOfferingId; private int dataDiskSize; private byte[] userData; public CloudStackTemplateOptions securityGroupIds(Iterable securityGroupIds) { this.securityGroupIds = ImmutableSet.copyOf(securityGroupIds); return this; } public CloudStackTemplateOptions ipsToNetworks(Map ipsToNetworks) { this.ipsToNetworks = ImmutableMap.copyOf(ipsToNetworks); return this; } public CloudStackTemplateOptions ipOnDefaultNetwork(String ipOnDefaultNetwork) { this.ipOnDefaultNetwork = ipOnDefaultNetwork; return this; } public CloudStackTemplateOptions keyPair(String keyPair) { this.keyPair = keyPair; return this; } public CloudStackTemplateOptions setupStaticNat(boolean setupStaticNat) { this.setupStaticNat = setupStaticNat; return this; } public CloudStackTemplateOptions account(String account) { this.account = account; return this; } public CloudStackTemplateOptions domainId(String domainId) { this.domainId = domainId; return this; } public CloudStackTemplateOptions generateKeyPair(boolean generateKeyPair) { this.generateKeyPair = generateKeyPair; return this; } public CloudStackTemplateOptions generateSecurityGroup(boolean generateSecurityGroup) { this.generateSecurityGroup = generateSecurityGroup; return this; } public CloudStackTemplateOptions diskOfferingId(String diskOfferingId) { this.diskOfferingId = diskOfferingId; return this; } public CloudStackTemplateOptions dataDiskSize(int dataDiskSize) { this.dataDiskSize = dataDiskSize; return this; } public CloudStackTemplateOptions userData(byte[] userData) { this.userData = userData; return this; } public CloudStackTemplateOptions userData(String userData) { this.userData = checkNotNull(userData, "userdata").getBytes(Charsets.UTF_8); return this; } public CloudStackTemplateOptions userData(URL userDataUrl) throws IOException { this.userData = Resources.toString(checkNotNull(userDataUrl, "userDataUrl"), Charsets.UTF_8).getBytes(Charsets.UTF_8); return this; } public Set getSecurityGroupIds() { return securityGroupIds; } public Map getIpsToNetworks() { return ipsToNetworks; } public String getIpOnDefaultNetwork() { return ipOnDefaultNetwork; } public String getKeyPair() { return keyPair; } public boolean shouldSetupStaticNat() { return setupStaticNat; } public String getAccount() { return account; } public String getDomainId() { return domainId; } public boolean shouldGenerateKeyPair() { return generateKeyPair; } public boolean shouldGenerateSecurityGroup() { return generateSecurityGroup; } public String getDiskOfferingId() { return diskOfferingId; } public int getDataDiskSize() { return dataDiskSize; } public byte[] getUserData() { return userData; } @Override public CloudStackTemplateOptions clone() { CloudStackTemplateOptions options = new CloudStackTemplateOptions(); copyTo(options); return options; } @Override public void copyTo(TemplateOptions to) { super.copyTo(to); if (to instanceof CloudStackTemplateOptions) { CloudStackTemplateOptions eTo = CloudStackTemplateOptions.class.cast(to); eTo.securityGroupIds(securityGroupIds); eTo.ipsToNetworks(ipsToNetworks); eTo.ipOnDefaultNetwork(ipOnDefaultNetwork); eTo.keyPair(keyPair); eTo.generateKeyPair(generateKeyPair); eTo.generateSecurityGroup(generateSecurityGroup); eTo.account(account); eTo.domainId(domainId); eTo.setupStaticNat(setupStaticNat); eTo.diskOfferingId(diskOfferingId); eTo.dataDiskSize(dataDiskSize); eTo.userData(userData); } } @Override public boolean equals(Object o) { if (this == o) return true; if (!(o instanceof CloudStackTemplateOptions)) return false; if (!super.equals(o)) return false; CloudStackTemplateOptions that = (CloudStackTemplateOptions) o; return setupStaticNat == that.setupStaticNat && generateKeyPair == that.generateKeyPair && generateSecurityGroup == that.generateSecurityGroup && dataDiskSize == that.dataDiskSize && Objects.equal(securityGroupIds, that.securityGroupIds) && Objects.equal(ipsToNetworks, that.ipsToNetworks) && Objects.equal(ipOnDefaultNetwork, that.ipOnDefaultNetwork) && Objects.equal(keyPair, that.keyPair) && Objects.equal(account, that.account) && Objects.equal(domainId, that.domainId) && Objects.equal(diskOfferingId, that.diskOfferingId) && Arrays.equals(userData, that.userData); } @Override public int hashCode() { return Objects.hashCode(super.hashCode(), securityGroupIds, ipsToNetworks, ipOnDefaultNetwork, keyPair, setupStaticNat, account, domainId, generateKeyPair, generateSecurityGroup, diskOfferingId, dataDiskSize, Arrays.hashCode(userData)); } @Override public String toString() { return MoreObjects.toStringHelper(this) .add("securityGroupIds", securityGroupIds) .add("ipsToNetworks", ipsToNetworks) .add("ipOnDefaultNetwork", ipOnDefaultNetwork) .add("keyPair", keyPair) .add("setupStaticNat", setupStaticNat) .add("account", account) .add("domainId", domainId) .add("generateKeyPair", generateKeyPair) .add("generateSecurityGroup", generateSecurityGroup) .add("diskOfferingId", diskOfferingId) .add("dataDiskSize", dataDiskSize) .add("userData", userData) .toString(); } public static class Builder { /** * @see CloudStackTemplateOptions#securityGroupIds */ public static CloudStackTemplateOptions securityGroupIds(Iterable securityGroupIds) { CloudStackTemplateOptions options = new CloudStackTemplateOptions(); return options.securityGroupIds(securityGroupIds); } /** * @see CloudStackTemplateOptions#ipsToNetworks */ public static CloudStackTemplateOptions ipsToNetworks(Map ipToNetworkMap) { CloudStackTemplateOptions options = new CloudStackTemplateOptions(); return options.ipsToNetworks(ipToNetworkMap); } /** * @see CloudStackTemplateOptions#ipOnDefaultNetwork */ public static CloudStackTemplateOptions ipOnDefaultNetwork(String ipAddress) { CloudStackTemplateOptions options = new CloudStackTemplateOptions(); return options.ipOnDefaultNetwork(ipAddress); } /** * @see CloudStackTemplateOptions#keyPair */ public static CloudStackTemplateOptions keyPair(String keyPair) { CloudStackTemplateOptions options = new CloudStackTemplateOptions(); return options.keyPair(keyPair); } /** * @see CloudStackTemplateOptions#setupStaticNat */ public static CloudStackTemplateOptions setupStaticNat(boolean setupStaticNat) { CloudStackTemplateOptions options = new CloudStackTemplateOptions(); return options.setupStaticNat(setupStaticNat); } /** * @see CloudStackTemplateOptions#account */ public static CloudStackTemplateOptions account(String account) { CloudStackTemplateOptions options = new CloudStackTemplateOptions(); return options.account(account); } /** * @see CloudStackTemplateOptions#domainId */ public static CloudStackTemplateOptions domainId(String domainId) { CloudStackTemplateOptions options = new CloudStackTemplateOptions(); return options.domainId(domainId); } /** * @see CloudStackTemplateOptions#generateKeyPair(boolean) */ public static CloudStackTemplateOptions generateKeyPair(boolean enable) { return new CloudStackTemplateOptions().generateKeyPair(enable); } /** * @see CloudStackTemplateOptions#generateSecurityGroup(boolean) */ public static CloudStackTemplateOptions generateSecurityGroup(boolean enable) { return new CloudStackTemplateOptions().generateSecurityGroup(enable); } /** * @see CloudStackTemplateOptions#diskOfferingId */ public static CloudStackTemplateOptions diskOfferingId(String diskOfferingId) { CloudStackTemplateOptions options = new CloudStackTemplateOptions(); return options.diskOfferingId(diskOfferingId); } /** * @see CloudStackTemplateOptions#dataDiskSize */ public static CloudStackTemplateOptions dataDiskSize(int dataDiskSize) { CloudStackTemplateOptions options = new CloudStackTemplateOptions(); return options.dataDiskSize(dataDiskSize); } /** * @see CloudStackTemplateOptions#userData */ public static CloudStackTemplateOptions userData(byte[] userData) { CloudStackTemplateOptions options = new CloudStackTemplateOptions(); return options.userData(userData); } } // methods that only facilitate returning the correct object type /** * {@inheritDoc} */ @Override public CloudStackTemplateOptions blockOnPort(int port, int seconds) { return CloudStackTemplateOptions.class.cast(super.blockOnPort(port, seconds)); } /** * {@inheritDoc} */ @Override public CloudStackTemplateOptions inboundPorts(int... ports) { return CloudStackTemplateOptions.class.cast(super.inboundPorts(ports)); } /** * {@inheritDoc} */ @Override public CloudStackTemplateOptions authorizePublicKey(String publicKey) { return CloudStackTemplateOptions.class.cast(super.authorizePublicKey(publicKey)); } /** * {@inheritDoc} */ @Override public CloudStackTemplateOptions installPrivateKey(String privateKey) { return CloudStackTemplateOptions.class.cast(super.installPrivateKey(privateKey)); } /** * {@inheritDoc} */ @Override public CloudStackTemplateOptions blockUntilRunning(boolean blockUntilRunning) { return CloudStackTemplateOptions.class.cast(super.blockUntilRunning(blockUntilRunning)); } /** * {@inheritDoc} */ @Override public CloudStackTemplateOptions dontAuthorizePublicKey() { return CloudStackTemplateOptions.class.cast(super.dontAuthorizePublicKey()); } /** * {@inheritDoc} */ @Override public CloudStackTemplateOptions nameTask(String name) { return CloudStackTemplateOptions.class.cast(super.nameTask(name)); } /** * {@inheritDoc} */ @Override public CloudStackTemplateOptions runAsRoot(boolean runAsRoot) { return CloudStackTemplateOptions.class.cast(super.runAsRoot(runAsRoot)); } /** * {@inheritDoc} */ @Override public CloudStackTemplateOptions runScript(Statement script) { return CloudStackTemplateOptions.class.cast(super.runScript(script)); } /** * {@inheritDoc} */ @Override public CloudStackTemplateOptions overrideLoginCredentials(LoginCredentials overridingCredentials) { return CloudStackTemplateOptions.class.cast(super.overrideLoginCredentials(overridingCredentials)); } /** * {@inheritDoc} */ @Override public CloudStackTemplateOptions overrideLoginPassword(String password) { return CloudStackTemplateOptions.class.cast(super.overrideLoginPassword(password)); } /** * {@inheritDoc} */ @Override public CloudStackTemplateOptions overrideLoginPrivateKey(String privateKey) { return CloudStackTemplateOptions.class.cast(super.overrideLoginPrivateKey(privateKey)); } /** * {@inheritDoc} */ @Override public CloudStackTemplateOptions overrideLoginUser(String loginUser) { return CloudStackTemplateOptions.class.cast(super.overrideLoginUser(loginUser)); } /** * {@inheritDoc} */ @Override public CloudStackTemplateOptions overrideAuthenticateSudo(boolean authenticateSudo) { return CloudStackTemplateOptions.class.cast(super.overrideAuthenticateSudo(authenticateSudo)); } /** * {@inheritDoc} */ @Override public CloudStackTemplateOptions userMetadata(Map userMetadata) { return CloudStackTemplateOptions.class.cast(super.userMetadata(userMetadata)); } /** * {@inheritDoc} */ @Override public CloudStackTemplateOptions userMetadata(String key, String value) { return CloudStackTemplateOptions.class.cast(super.userMetadata(key, value)); } /** * {@inheritDoc} */ @Override public CloudStackTemplateOptions nodeNames(Iterable nodeNames) { return CloudStackTemplateOptions.class.cast(super.nodeNames(nodeNames)); } /** * {@inheritDoc} */ @Override public CloudStackTemplateOptions networks(Iterable networks) { return CloudStackTemplateOptions.class.cast(super.networks(networks)); } }




© 2015 - 2025 Weber Informatics LLC | Privacy Policy