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