Skip to content

Commit e15c311

Browse files
author
Paul Angus
authored
Merge pull request #3248 from shapeblue/storage-offering-domains-zones
Enable service offerings to be scoped to domain(s) and zone(s)
2 parents 98e84e3 + 6d51689 commit e15c311

File tree

104 files changed

+6797
-931
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

104 files changed

+6797
-931
lines changed

api/src/main/java/com/cloud/configuration/ConfigurationService.java

Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -106,6 +106,20 @@ public interface ConfigurationService {
106106
*/
107107
boolean deleteServiceOffering(DeleteServiceOfferingCmd cmd);
108108

109+
/**
110+
* Retrieve ID of domains for a service offering
111+
*
112+
* @param serviceOfferingId
113+
*/
114+
List<Long> getServiceOfferingDomains(Long serviceOfferingId);
115+
116+
/**
117+
* Retrieve ID of domains for a service offering
118+
*
119+
* @param serviceOfferingId
120+
*/
121+
List<Long> getServiceOfferingZones(Long serviceOfferingId);
122+
109123
/**
110124
* Updates a disk offering
111125
*
@@ -139,6 +153,20 @@ public interface ConfigurationService {
139153
*/
140154
DiskOffering createDiskOffering(CreateDiskOfferingCmd cmd);
141155

156+
/**
157+
* Retrieve ID of domains for a disk offering
158+
*
159+
* @param diskOfferingId
160+
*/
161+
List<Long> getDiskOfferingDomains(Long diskOfferingId);
162+
163+
/**
164+
* Retrieve ID of domains for a disk offering
165+
*
166+
* @param diskOfferingId
167+
*/
168+
List<Long> getDiskOfferingZones(Long diskOfferingId);
169+
142170
/**
143171
* Creates a new pod based on the parameters specified in the command object
144172
*
@@ -269,6 +297,20 @@ Vlan createVlanAndPublicIpRange(CreateVlanIpRangeCmd cmd) throws InsufficientCap
269297

270298
boolean deleteNetworkOffering(DeleteNetworkOfferingCmd cmd);
271299

300+
/**
301+
* Retrieve ID of domains for a network offering
302+
*
303+
* @param networkOfferingId
304+
*/
305+
List<Long> getNetworkOfferingDomains(Long networkOfferingId);
306+
307+
/**
308+
* Retrieve ID of domains for a network offering
309+
*
310+
* @param networkOfferingId
311+
*/
312+
List<Long> getNetworkOfferingZones(Long networkOfferingId);
313+
272314
Account getVlanAccount(long vlanId);
273315

274316
Domain getVlanDomain(long vlanId);

api/src/main/java/com/cloud/network/vpc/VpcOffering.java

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,8 @@
1616
// under the License.
1717
package com.cloud.network.vpc;
1818

19+
import java.util.Date;
20+
1921
import org.apache.cloudstack.api.Identity;
2022
import org.apache.cloudstack.api.InternalIdentity;
2123

@@ -59,13 +61,16 @@ public enum State {
5961
/**
6062
* @return true if the offering provides a distributed router capable of one-hop forwarding
6163
*/
62-
boolean supportsDistributedRouter();
64+
boolean isSupportsDistributedRouter();
6365

6466
/**
6567
* @return true if VPC created with the offering can span multiple zones in the region
6668
*/
67-
boolean offersRegionLevelVPC();
69+
boolean isOffersRegionLevelVPC();
70+
71+
boolean isRedundantRouter();
6872

69-
boolean getRedundantRouter();
73+
Date getRemoved();
7074

75+
Date getCreated();
7176
}

api/src/main/java/com/cloud/network/vpc/VpcProvisioningService.java

Lines changed: 25 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -20,21 +20,24 @@
2020
import java.util.List;
2121
import java.util.Map;
2222

23+
import org.apache.cloudstack.api.command.admin.vpc.CreateVPCOfferingCmd;
2324
import org.apache.cloudstack.api.command.admin.vpc.UpdateVPCOfferingCmd;
25+
import org.apache.cloudstack.api.command.user.vpc.ListVPCOfferingsCmd;
2426

2527
import com.cloud.utils.Pair;
2628

2729
public interface VpcProvisioningService {
2830

29-
public VpcOffering getVpcOffering(long vpcOfferingId);
31+
VpcOffering getVpcOffering(long vpcOfferingId);
3032

31-
public VpcOffering createVpcOffering(String name, String displayText, List<String> supportedServices,
32-
Map<String, List<String>> serviceProviders,
33-
Map serviceCapabilitystList,
34-
Long serviceOfferingId);
33+
VpcOffering createVpcOffering(CreateVPCOfferingCmd cmd);
3534

36-
Pair<List<? extends VpcOffering>,Integer> listVpcOfferings(Long id, String name, String displayText, List<String> supportedServicesStr, Boolean isDefault, String keyword,
37-
String state, Long startIndex, Long pageSizeVal);
35+
VpcOffering createVpcOffering(String name, String displayText, List<String> supportedServices,
36+
Map<String, List<String>> serviceProviders,
37+
Map serviceCapabilitystList,
38+
Long serviceOfferingId, List<Long> domainIds, List<Long> zoneIds);
39+
40+
Pair<List<? extends VpcOffering>,Integer> listVpcOfferings(ListVPCOfferingsCmd cmd);
3841

3942
/**
4043
* @param offId
@@ -46,9 +49,22 @@ Pair<List<? extends VpcOffering>,Integer> listVpcOfferings(Long id, String name,
4649
public VpcOffering updateVpcOffering(long vpcOffId, String vpcOfferingName, String displayText, String state);
4750

4851
/**
49-
* @param vpcOfferingCmd
52+
* @param cmd
5053
* @return
5154
*/
52-
public VpcOffering updateVpcOffering(final UpdateVPCOfferingCmd vpcOfferingCmd);
55+
VpcOffering updateVpcOffering(final UpdateVPCOfferingCmd cmd);
56+
57+
/**
58+
* Retrieve ID of domains for a VPC offering
59+
*
60+
* @param vpcOfferingId
61+
*/
62+
List<Long> getVpcOfferingDomains(Long vpcOfferingId);
5363

64+
/**
65+
* Retrieve ID of domains for a VPC offering
66+
*
67+
* @param vpcOfferingId
68+
*/
69+
List<Long> getVpcOfferingZones(Long vpcOfferingId);
5470
}

api/src/main/java/com/cloud/offering/DiskOffering.java

Lines changed: 5 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -34,13 +34,13 @@ enum State {
3434
Inactive, Active,
3535
}
3636

37-
public enum Type {
37+
enum Type {
3838
Disk, Service
3939
};
4040

4141
State getState();
4242

43-
public enum DiskCacheMode {
43+
enum DiskCacheMode {
4444
NONE("none"), WRITEBACK("writeback"), WRITETHROUGH("writethrough");
4545

4646
private final String _diskCacheMode;
@@ -59,19 +59,17 @@ public String toString() {
5959

6060
boolean isUseLocalStorage();
6161

62-
Long getDomainId();
63-
6462
String getName();
6563

6664
boolean isSystemUse();
6765

6866
String getDisplayText();
6967

70-
public ProvisioningType getProvisioningType();
68+
ProvisioningType getProvisioningType();
7169

72-
public String getTags();
70+
String getTags();
7371

74-
public String[] getTagsArray();
72+
String[] getTagsArray();
7573

7674
Date getCreated();
7775

api/src/main/java/com/cloud/offering/NetworkOffering.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,7 @@ public enum State {
3838
}
3939

4040
public enum Detail {
41-
InternalLbProvider, PublicLbProvider, servicepackageuuid, servicepackagedescription, PromiscuousMode, MacAddressChanges, ForgedTransmits, RelatedNetworkOffering
41+
InternalLbProvider, PublicLbProvider, servicepackageuuid, servicepackagedescription, PromiscuousMode, MacAddressChanges, ForgedTransmits, RelatedNetworkOffering, domainid, zoneid
4242
}
4343

4444
public final static String SystemPublicNetwork = "System-Public-Network";

api/src/main/java/com/cloud/offering/ServiceOffering.java

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -104,9 +104,6 @@ public enum StorageType {
104104
@Override
105105
boolean isUseLocalStorage();
106106

107-
@Override
108-
Long getDomainId();
109-
110107
/**
111108
* @return tag that should be present on the host needed, optional parameter
112109
*/

api/src/main/java/com/cloud/user/AccountService.java

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -25,9 +25,12 @@
2525
import org.apache.cloudstack.api.command.admin.user.RegisterCmd;
2626
import org.apache.cloudstack.api.command.admin.user.UpdateUserCmd;
2727

28+
import com.cloud.dc.DataCenter;
2829
import com.cloud.domain.Domain;
2930
import com.cloud.exception.PermissionDeniedException;
31+
import com.cloud.network.vpc.VpcOffering;
3032
import com.cloud.offering.DiskOffering;
33+
import com.cloud.offering.NetworkOffering;
3134
import com.cloud.offering.ServiceOffering;
3235

3336
public interface AccountService {
@@ -96,9 +99,13 @@ UserAccount createUserAccount(String userName, String password, String firstName
9699

97100
void checkAccess(Account account, AccessType accessType, boolean sameOwner, ControlledEntity... entities) throws PermissionDeniedException;
98101

99-
void checkAccess(Account account, ServiceOffering so) throws PermissionDeniedException;
102+
void checkAccess(Account account, ServiceOffering so, DataCenter zone) throws PermissionDeniedException;
100103

101-
void checkAccess(Account account, DiskOffering dof) throws PermissionDeniedException;
104+
void checkAccess(Account account, DiskOffering dof, DataCenter zone) throws PermissionDeniedException;
105+
106+
void checkAccess(Account account, NetworkOffering nof, DataCenter zone) throws PermissionDeniedException;
107+
108+
void checkAccess(Account account, VpcOffering vof, DataCenter zone) throws PermissionDeniedException;
102109

103110
void checkAccess(User user, ControlledEntity entity);
104111

api/src/main/java/org/apache/cloudstack/acl/SecurityChecker.java

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,9 @@
1919
import com.cloud.dc.DataCenter;
2020
import com.cloud.domain.Domain;
2121
import com.cloud.exception.PermissionDeniedException;
22+
import com.cloud.network.vpc.VpcOffering;
2223
import com.cloud.offering.DiskOffering;
24+
import com.cloud.offering.NetworkOffering;
2325
import com.cloud.offering.ServiceOffering;
2426
import com.cloud.user.Account;
2527
import com.cloud.user.User;
@@ -136,7 +138,11 @@ boolean checkAccess(Account caller, AccessType accessType, String action, Contro
136138

137139
boolean checkAccess(Account account, DataCenter zone) throws PermissionDeniedException;
138140

139-
public boolean checkAccess(Account account, ServiceOffering so) throws PermissionDeniedException;
141+
boolean checkAccess(Account account, ServiceOffering so, DataCenter zone) throws PermissionDeniedException;
140142

141-
boolean checkAccess(Account account, DiskOffering dof) throws PermissionDeniedException;
143+
boolean checkAccess(Account account, DiskOffering dof, DataCenter zone) throws PermissionDeniedException;
144+
145+
boolean checkAccess(Account account, NetworkOffering nof, DataCenter zone) throws PermissionDeniedException;
146+
147+
boolean checkAccess(Account account, VpcOffering vof, DataCenter zone) throws PermissionDeniedException;
142148
}

api/src/main/java/org/apache/cloudstack/api/ApiConstants.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -358,6 +358,7 @@ public class ApiConstants {
358358
public static final String VNET = "vnet";
359359
public static final String IS_VOLATILE = "isvolatile";
360360
public static final String VOLUME_ID = "volumeid";
361+
public static final String ZONE = "zone";
361362
public static final String ZONE_ID = "zoneid";
362363
public static final String ZONE_NAME = "zonename";
363364
public static final String NETWORK_TYPE = "networktype";

0 commit comments

Comments
 (0)