diff --git a/api/src/org/apache/cloudstack/affinity/AffinityGroup.java b/api/src/org/apache/cloudstack/affinity/AffinityGroup.java index ac2eb613370..c1ad11dbdd0 100644 --- a/api/src/org/apache/cloudstack/affinity/AffinityGroup.java +++ b/api/src/org/apache/cloudstack/affinity/AffinityGroup.java @@ -28,4 +28,6 @@ public interface AffinityGroup extends ControlledEntity, InternalIdentity, Ident String getType(); + ACLType getAclType(); + } diff --git a/api/src/org/apache/cloudstack/affinity/AffinityGroupProcessor.java b/api/src/org/apache/cloudstack/affinity/AffinityGroupProcessor.java index 8e9fabd3f60..59b1f47863d 100644 --- a/api/src/org/apache/cloudstack/affinity/AffinityGroupProcessor.java +++ b/api/src/org/apache/cloudstack/affinity/AffinityGroupProcessor.java @@ -58,4 +58,23 @@ public interface AffinityGroupProcessor extends Adapter { */ boolean check(VirtualMachineProfile vm, DeployDestination plannedDestination) throws AffinityConflictException; + + /** + * isAdminControlledGroup() should return true if the affinity/anti-affinity + * group can only be operated on[create/delete/modify] by the Admin + * + * @return boolean true/false + */ + boolean isAdminControlledGroup(); + + + /** + * canBeSharedDomainWide() should return true if the affinity/anti-affinity + * group can be created for a domain and shared by all accounts under the + * domain. + * + * @return boolean true/false + */ + boolean canBeSharedDomainWide(); + } \ No newline at end of file diff --git a/api/src/org/apache/cloudstack/affinity/AffinityGroupService.java b/api/src/org/apache/cloudstack/affinity/AffinityGroupService.java index 1b30e58d92f..43a4994ec91 100644 --- a/api/src/org/apache/cloudstack/affinity/AffinityGroupService.java +++ b/api/src/org/apache/cloudstack/affinity/AffinityGroupService.java @@ -75,4 +75,8 @@ public interface AffinityGroupService { boolean isAffinityGroupProcessorAvailable(String affinityGroupType); + boolean isAdminControlledGroup(AffinityGroup group); + + boolean isAffinityGroupAvailableInDomain(long affinityGroupId, long domainId); + } diff --git a/api/src/org/apache/cloudstack/affinity/AffinityProcessorBase.java b/api/src/org/apache/cloudstack/affinity/AffinityProcessorBase.java index 779ca326b3a..0c5831a78d5 100644 --- a/api/src/org/apache/cloudstack/affinity/AffinityProcessorBase.java +++ b/api/src/org/apache/cloudstack/affinity/AffinityProcessorBase.java @@ -47,4 +47,14 @@ public class AffinityProcessorBase extends AdapterBase implements AffinityGroupP throws AffinityConflictException { return true; } + + @Override + public boolean isAdminControlledGroup() { + return false; + } + + @Override + public boolean canBeSharedDomainWide() { + return false; + } } diff --git a/client/tomcatconf/applicationContext.xml.in b/client/tomcatconf/applicationContext.xml.in index 708555a175f..e87636cacb4 100644 --- a/client/tomcatconf/applicationContext.xml.in +++ b/client/tomcatconf/applicationContext.xml.in @@ -377,6 +377,7 @@ +