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(); + } + } }