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 @@
+