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.domain;
20
21 import java.util.List;
22 import java.util.Map;
23
24 import javax.annotation.Nullable;
25
26 import org.jclouds.vcloud.domain.internal.VDCImpl;
27
28 import com.google.inject.ImplementedBy;
29
30 /**
31 * A vDC is a deployment environment for vApps. A Vdc element provides a user view of a vDC.
32 *
33 * @author Adrian Cole
34 */
35 @org.jclouds.vcloud.endpoints.VDC
36 @ImplementedBy(VDCImpl.class)
37 public interface VDC extends ReferenceType {
38 /**
39 * Reference to the org containing this vDC.
40 *
41 * @since vcloud api 1.0
42 * @return org, or null if this is a version before 1.0 where the org isn't present
43 */
44 ReferenceType getOrg();
45
46 /**
47 * The creation status of the vDC
48 *
49 * @since vcloud api 1.0
50 */
51 VDCStatus getStatus();
52
53 /**
54 * optional description
55 *
56 * @since vcloud api 0.8
57 */
58 @Nullable
59 String getDescription();
60
61 /**
62 * read‐only container for Task elements. Each element in the container represents a queued,
63 * running, or failed task owned by this object.
64 *
65 * @since vcloud api 1.0
66 */
67 List<Task> getTasks();
68
69 /**
70 * defines how resources are allocated by the vDC. The value of this element is set by the
71 * administrator who created the vDC. It is read‐only to users.
72 *
73 * @since vcloud api 1.0
74 */
75 AllocationModel getAllocationModel();
76
77 /**
78 * defines the storage capacity available in the vDC
79 *
80 * @since vcloud api 0.8
81 * @return null if the provider doesn't support storage capacity
82 */
83 @Nullable
84 Capacity getStorageCapacity();
85
86 /**
87 * reports CPU resource consumption in a vDC
88 *
89 * @since vcloud api 0.8
90 * @return null if the provider doesn't support cpu capacity
91 */
92 @Nullable
93 Capacity getCpuCapacity();
94
95 /**
96 * reports memory resource consumption in a vDC
97 *
98 * @since vcloud api 0.8
99 * @return null if the provider doesn't support memory capacity
100 */
101 @Nullable
102 Capacity getMemoryCapacity();
103
104 /**
105 * container for ResourceEntity elements
106 *
107 * @since vcloud api 0.8
108 */
109 Map<String, ReferenceType> getResourceEntities();
110
111 /**
112 * container for OrgNetwork elements that represent organization networks contained by the vDC
113 *
114 * @since vcloud api 0.8
115 */
116 Map<String, ReferenceType> getAvailableNetworks();
117
118 /**
119 * maximum number of virtual NICs allowed in this vDC. Defaults to 0, which specifies an
120 * unlimited number.
121 *
122 * @since vcloud api 1.0
123 */
124 int getNicQuota();
125
126 /**
127 * maximum number of OrgNetwork objects that can be deployed in this vDC. Defaults to 0, which
128 * specifies an unlimited number.
129 *
130 * @since vcloud api 1.0
131 */
132 int getNetworkQuota();
133
134 /**
135 * maximum number of virtual machines that can be deployed in this vDC. Defaults to 0, which
136 * specifies an unlimited number.
137 *
138 * @since vcloud api 0.8
139 */
140 int getVmQuota();
141
142 /**
143 * true if this vDC is enabled
144 *
145 * @since vcloud api 1.0
146 */
147 boolean isEnabled();
148
149 }