View Javadoc

1   /**
2    *
3    * Copyright (C) 2011 Cloud Conscious, LLC. <info@cloudconscious.com>
4    *
5    * ====================================================================
6    * Licensed under the Apache License, Version 2.0 (the "License");
7    * you may not use this file except in compliance with the License.
8    * You may obtain a copy of the License at
9    *
10   * http://www.apache.org/licenses/LICENSE-2.0
11   *
12   * Unless required by applicable law or agreed to in writing, software
13   * distributed under the License is distributed on an "AS IS" BASIS,
14   * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15   * See the License for the specific language governing permissions and
16   * limitations under the License.
17   * ====================================================================
18   */
19  package org.jclouds.vcloud.terremark.options;
20  
21  import java.util.Map;
22  
23  import org.jclouds.vcloud.domain.network.NetworkConfig;
24  import org.jclouds.vcloud.options.InstantiateVAppTemplateOptions;
25  
26  import com.google.common.collect.Maps;
27  
28  /**
29   * 
30   * @author Adrian Cole
31   * 
32   */
33  public class TerremarkInstantiateVAppTemplateOptions extends InstantiateVAppTemplateOptions {
34  
35     private final Map<String, String> properties = Maps.newLinkedHashMap();
36  
37     public TerremarkInstantiateVAppTemplateOptions sshKeyFingerprint(String sshKeyFingerprint) {
38        productProperty("sshKeyFingerprint", sshKeyFingerprint);
39        return this;
40     }
41  
42     public TerremarkInstantiateVAppTemplateOptions primaryDNS(String primaryDNS) {
43        productProperty("primaryDNS", primaryDNS);
44        return this;
45     }
46  
47     public TerremarkInstantiateVAppTemplateOptions secondaryDNS(String secondaryDNS) {
48        productProperty("secondaryDNS", secondaryDNS);
49        return this;
50     }
51  
52     public TerremarkInstantiateVAppTemplateOptions withPassword(String password) {
53        productProperty("password", password);
54        return this;
55     }
56  
57     public TerremarkInstantiateVAppTemplateOptions inGroup(String group) {
58        productProperty("group", group);
59        return this;
60     }
61  
62     public TerremarkInstantiateVAppTemplateOptions inRow(String row) {
63        productProperty("row", row);
64        return this;
65     }
66  
67     public static class Builder {
68  
69        /**
70         * @see TerremarkInstantiateVAppTemplateOptions#processorCount(int)
71         */
72        public static TerremarkInstantiateVAppTemplateOptions processorCount(int cpuCount) {
73           TerremarkInstantiateVAppTemplateOptions options = new TerremarkInstantiateVAppTemplateOptions();
74           return options.processorCount(cpuCount);
75        }
76  
77        /**
78         * @see TerremarkInstantiateVAppTemplateOptions#memory(long)
79         */
80        public static TerremarkInstantiateVAppTemplateOptions memory(long megabytes) {
81           TerremarkInstantiateVAppTemplateOptions options = new TerremarkInstantiateVAppTemplateOptions();
82           return options.memory(megabytes);
83        }
84  
85        /**
86         * @see TerremarkInstantiateVAppTemplateOptions#disk(long)
87         */
88        public static TerremarkInstantiateVAppTemplateOptions disk(long kilobytes) {
89           TerremarkInstantiateVAppTemplateOptions options = new TerremarkInstantiateVAppTemplateOptions();
90           return options.disk(kilobytes);
91        }
92  
93        /**
94         * @see TerremarkInstantiateVAppTemplateOptions#addNetworkConfig
95         */
96        public static TerremarkInstantiateVAppTemplateOptions addNetworkConfig(NetworkConfig networkConfig) {
97           TerremarkInstantiateVAppTemplateOptions options = new TerremarkInstantiateVAppTemplateOptions();
98           return options.addNetworkConfig(networkConfig);
99        }
100 
101       /**
102        * @see TerremarkInstantiateVAppTemplateOptions#withPassword(String)
103        */
104       public static TerremarkInstantiateVAppTemplateOptions withPassword(String password) {
105          TerremarkInstantiateVAppTemplateOptions options = new TerremarkInstantiateVAppTemplateOptions();
106          return options.withPassword(password);
107       }
108 
109       /**
110        * @see TerremarkInstantiateVAppTemplateOptions#inGroup(String)
111        */
112       public static TerremarkInstantiateVAppTemplateOptions inGroup(String group) {
113          TerremarkInstantiateVAppTemplateOptions options = new TerremarkInstantiateVAppTemplateOptions();
114          return options.inGroup(group);
115       }
116 
117       /**
118        * @see TerremarkInstantiateVAppTemplateOptions#inRow(String)
119        */
120       public static TerremarkInstantiateVAppTemplateOptions inRow(String row) {
121          TerremarkInstantiateVAppTemplateOptions options = new TerremarkInstantiateVAppTemplateOptions();
122          return options.inRow(row);
123       }
124 
125       /**
126        * @see TerremarkInstantiateVAppTemplateOptions#sshKeyFingerprint(String)
127        */
128       public static TerremarkInstantiateVAppTemplateOptions sshKeyFingerprint(String sshKeyFingerprint) {
129          TerremarkInstantiateVAppTemplateOptions options = new TerremarkInstantiateVAppTemplateOptions();
130          return options.sshKeyFingerprint(sshKeyFingerprint);
131       }
132 
133       /**
134        * @see TerremarkInstantiateVAppTemplateOptions#primaryDNS(String)
135        */
136       public static TerremarkInstantiateVAppTemplateOptions primaryDNS(String primaryDNS) {
137          TerremarkInstantiateVAppTemplateOptions options = new TerremarkInstantiateVAppTemplateOptions();
138          return options.primaryDNS(primaryDNS);
139       }
140 
141       /**
142        * @see TerremarkInstantiateVAppTemplateOptions#secondaryDNS(String)
143        */
144       public static TerremarkInstantiateVAppTemplateOptions secondaryDNS(String secondaryDNS) {
145          TerremarkInstantiateVAppTemplateOptions options = new TerremarkInstantiateVAppTemplateOptions();
146          return options.secondaryDNS(secondaryDNS);
147       }
148 
149       /**
150        * @see TerremarkInstantiateVAppTemplateOptions#productProperty(String, String)
151        */
152       public static TerremarkInstantiateVAppTemplateOptions productProperty(String key, String value) {
153          TerremarkInstantiateVAppTemplateOptions options = new TerremarkInstantiateVAppTemplateOptions();
154          return (TerremarkInstantiateVAppTemplateOptions) options.productProperty(key, value);
155       }
156 
157       /**
158        * @see TerremarkInstantiateVAppTemplateOptions#productProperties(Map<String , String>)
159        */
160       public static TerremarkInstantiateVAppTemplateOptions productProperties(Map<String, String> properties) {
161          TerremarkInstantiateVAppTemplateOptions options = new TerremarkInstantiateVAppTemplateOptions();
162          return (TerremarkInstantiateVAppTemplateOptions) options.productProperties(properties);
163       }
164 
165    }
166 
167    @Override
168    public TerremarkInstantiateVAppTemplateOptions processorCount(int cpuCount) {
169       return (TerremarkInstantiateVAppTemplateOptions) super.processorCount(cpuCount);
170    }
171 
172    @Override
173    public TerremarkInstantiateVAppTemplateOptions addNetworkConfig(NetworkConfig networkConfig) {
174       return (TerremarkInstantiateVAppTemplateOptions) super.addNetworkConfig(networkConfig);
175    }
176 
177    @Override
178    public TerremarkInstantiateVAppTemplateOptions memory(long megabytes) {
179       return (TerremarkInstantiateVAppTemplateOptions) super.memory(megabytes);
180    }
181 
182    @Override
183    public TerremarkInstantiateVAppTemplateOptions disk(long kilobytes) {
184       throw new IllegalArgumentException("changing the boot disk size is unsupported in terremark");
185    }
186 
187    public TerremarkInstantiateVAppTemplateOptions productProperties(Map<String, String> properties) {
188       this.properties.putAll(properties);
189       return this;
190    }
191 
192    public TerremarkInstantiateVAppTemplateOptions productProperty(String key, String value) {
193       this.properties.put(key, value);
194       return this;
195    }
196 
197    public Map<String, String> getProperties() {
198       return properties;
199    }
200 }