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 e3a9b62c6ce..09a4a310a5d 100644 --- a/api/src/org/apache/cloudstack/affinity/AffinityGroupProcessor.java +++ b/api/src/org/apache/cloudstack/affinity/AffinityGroupProcessor.java @@ -59,4 +59,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 325ab80e047..c249f62da76 100644 --- a/api/src/org/apache/cloudstack/affinity/AffinityProcessorBase.java +++ b/api/src/org/apache/cloudstack/affinity/AffinityProcessorBase.java @@ -48,4 +48,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 7992f9300db..4fb13c056fc 100644 --- a/client/tomcatconf/applicationContext.xml.in +++ b/client/tomcatconf/applicationContext.xml.in @@ -379,6 +379,7 @@ +