diff --git a/plugins/network-elements/cisco-vnmc/scripts/network/cisco/associate-dhcp-server.xml b/plugins/network-elements/cisco-vnmc/scripts/network/cisco/associate-dhcp-server.xml
new file mode 100644
index 00000000000..9a1197ae1e4
--- /dev/null
+++ b/plugins/network-elements/cisco-vnmc/scripts/network/cisco/associate-dhcp-server.xml
@@ -0,0 +1,14 @@
+
+
+
+
+
+
+
diff --git a/plugins/network-elements/cisco-vnmc/scripts/network/cisco/create-dhcp-policy.xml b/plugins/network-elements/cisco-vnmc/scripts/network/cisco/create-dhcp-policy.xml
index 0b7de767b4d..5686429df03 100644
--- a/plugins/network-elements/cisco-vnmc/scripts/network/cisco/create-dhcp-policy.xml
+++ b/plugins/network-elements/cisco-vnmc/scripts/network/cisco/create-dhcp-policy.xml
@@ -4,9 +4,6 @@
@@ -57,6 +46,7 @@
diff --git a/plugins/network-elements/cisco-vnmc/src/com/cloud/network/resource/CiscoVnmcResource.java b/plugins/network-elements/cisco-vnmc/src/com/cloud/network/resource/CiscoVnmcResource.java
index 802e1f9b06d..1d5b76de804 100644
--- a/plugins/network-elements/cisco-vnmc/src/com/cloud/network/resource/CiscoVnmcResource.java
+++ b/plugins/network-elements/cisco-vnmc/src/com/cloud/network/resource/CiscoVnmcResource.java
@@ -88,10 +88,8 @@ public class CiscoVnmcResource implements ServerResource {
CREATE_EDGE_ROUTE("create-edge-device-route.xml", "policy-mgr"),
RESOLVE_EDGE_ROUTE_POLICY("associate-route-policy.xml", "policy-mgr"),
RESOLVE_EDGE_DHCP_POLICY("associate-dhcp-policy.xml", "policy-mgr"),
- CREATE_DHCP_POLICY("create-dhcp-policy.xml", "policy-mgr");
-
-
-
+ CREATE_DHCP_POLICY("create-dhcp-policy.xml", "policy-mgr"),
+ RESOLVE_EDGE_DHCP_SERVER_POLICY("associate-dhcp-server.xml", "policy-mgr");
private String scriptsDir = "scripts/network/cisco";
private String xml;
@@ -565,7 +563,7 @@ public class CiscoVnmcResource implements ServerResource {
xml = replaceXmlValue(xml, "cookie", _cookie);
xml = replaceXmlValue(xml, "dhcpserverdn", getDnForDhcpServerPolicy(tenantName));
xml = replaceXmlValue(xml, "dhcpserverdescr", "DHCP server for " + tenantName);
- xml = replaceXmlValue(xml, "dhcpservername", getNameForDhcpServer(tenantName));
+ xml = replaceXmlValue(xml, "dhcpservername", getNameForDhcpPolicy(tenantName));
xml = replaceXmlValue(xml, "iprangedn", getDnForDhcpIpRange(tenantName));
xml = replaceXmlValue(xml, "startip", startIp);
xml = replaceXmlValue(xml, "endip", endIp);
@@ -589,6 +587,28 @@ public class CiscoVnmcResource implements ServerResource {
}
return true;
}
+
+ public boolean associateTenantVDCEdgeDhcpServerPolicy(String tenantName, String intfName) throws ExecutionException {
+ String xml = VnmcXml.RESOLVE_EDGE_DHCP_SERVER_POLICY.getXml();
+ String service = VnmcXml.RESOLVE_EDGE_DHCP_SERVER_POLICY.getService();
+ xml = replaceXmlValue(xml, "cookie", _cookie);
+ xml = replaceXmlValue(xml, "dhcpdn", getDnForDhcpPolicy(tenantName, intfName));
+ xml = replaceXmlValue(xml, "insideintf", intfName);
+ xml = replaceXmlValue(xml, "dhcpserverpolicyname", getNameForDhcpServer(tenantName));
+
+ String response = sendRequest(service, xml);
+ Map checked = checkResponse(response, "errorCode", "response");
+
+ if (checked.get("errorCode") != null) {
+ String errorCode = checked.get("errorCode");
+ if (errorCode.equals("103")) {
+ //already exists
+ return true;
+ }
+ return false;
+ }
+ return true;
+ }
private String sendRequest(String service, String xmlRequest) throws ExecutionException {
org.apache.commons.httpclient.protocol.Protocol myhttps =
diff --git a/plugins/network-elements/cisco-vnmc/src/com/cloud/network/resource/test/CiscoVnmcResourceTest.java b/plugins/network-elements/cisco-vnmc/src/com/cloud/network/resource/test/CiscoVnmcResourceTest.java
index d8ca6a14b79..b7d69d02f15 100644
--- a/plugins/network-elements/cisco-vnmc/src/com/cloud/network/resource/test/CiscoVnmcResourceTest.java
+++ b/plugins/network-elements/cisco-vnmc/src/com/cloud/network/resource/test/CiscoVnmcResourceTest.java
@@ -28,7 +28,7 @@ import com.cloud.utils.exception.ExecutionException;
public class CiscoVnmcResourceTest {
static CiscoVnmcResource resource;
- static String tenantName = "TenantD";
+ static String tenantName = "TenantE";
@BeforeClass
public static void setUpClass() throws Exception {
resource = new CiscoVnmcResource("10.223.56.5", "admin", "C1sco123");
@@ -146,4 +146,15 @@ public class CiscoVnmcResourceTest {
e.printStackTrace();
}
}
+
+ @Test
+ public void testAssociateTenantVDCEdgeDhcpServerPolicy() {
+ try {
+ boolean response = resource.associateTenantVDCEdgeDhcpServerPolicy(tenantName, "Edge_Inside");
+ assertTrue(response);
+ } catch (ExecutionException e) {
+ // TODO Auto-generated catch block
+ e.printStackTrace();
+ }
+ }
}