Added support for PF/DNAT rules. Created methods in VNMCConnection class to create PF rules. Also moved out common code for PF and source NAT in methods. Updated the corresponding VNMC resource class.
Project: http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/repo Commit: http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/commit/5d986867 Tree: http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/tree/5d986867 Diff: http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/diff/5d986867 Branch: refs/heads/cisco-vnmc-api-integration Commit: 5d9868676868c9f9555aa0e706a6f2f2430cd5cf Parents: 8db2fbe Author: Koushik Das <[email protected]> Authored: Fri Feb 22 19:16:41 2013 +0530 Committer: Koushik Das <[email protected]> Committed: Fri Feb 22 19:16:41 2013 +0530 ---------------------------------------------------------------------- .../cloud/network/cisco/CiscoVnmcConnection.java | 32 +- .../network/cisco/CiscoVnmcConnectionImpl.java | 419 +++++++++++---- .../cloud/network/resource/CiscoVnmcResource.java | 130 ++++- .../network/cisco/CiscoVnmcConnectionTest.java | 36 +- 4 files changed, 459 insertions(+), 158 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/5d986867/plugins/network-elements/cisco-vnmc/src/com/cloud/network/cisco/CiscoVnmcConnection.java ---------------------------------------------------------------------- diff --git a/plugins/network-elements/cisco-vnmc/src/com/cloud/network/cisco/CiscoVnmcConnection.java b/plugins/network-elements/cisco-vnmc/src/com/cloud/network/cisco/CiscoVnmcConnection.java index 3cb1ea5..c83e5ce 100644 --- a/plugins/network-elements/cisco-vnmc/src/com/cloud/network/cisco/CiscoVnmcConnection.java +++ b/plugins/network-elements/cisco-vnmc/src/com/cloud/network/cisco/CiscoVnmcConnection.java @@ -52,12 +52,40 @@ public interface CiscoVnmcConnection { public boolean createTenantVDCEdgeSecurityProfile(String tenantName) throws ExecutionException; - public boolean createTenantVDCSourceNATPool(String tenantName, + public boolean createTenantVDCSourceNatIpPool(String tenantName, String identifier, String publicIp) throws ExecutionException; - public boolean createTenantVDCSourceNATPolicy(String tenantName, + public boolean createTenantVDCSourceNatRule(String tenantName, String identifier, String startSourceIp, String endSourceIp) throws ExecutionException; + public boolean createTenantVDCSourceNatPolicy(String tenantName, String identifier) + throws ExecutionException; + + public boolean createTenantVDCSourceNatPolicyRef(String tenantName, String identifier) + throws ExecutionException; + + public boolean createTenantVDCDNatPortPool(String tenantName, String identifier, + String startPort, String endPort) + throws ExecutionException; + + public boolean createTenantVDCDNatIpPool(String tenantName, String identifier, + String ipAddress) throws ExecutionException; + + public boolean createTenantVDCDNatRule(String tenantName, + String identifier, String policyIdentifier, + String protocol, String sourceIp, + String startSourcePort, String endSourcePort) + throws ExecutionException; + + public boolean createTenantVDCDNatPolicy(String tenantName, String identifier) + throws ExecutionException; + + public boolean deleteTenantVDCDNatPolicy(String tenantName, String identifier) + throws ExecutionException; + + public boolean createTenantVDCDNatPolicyRef(String tenantName, String identifier) + throws ExecutionException; + public boolean createTenantVDCNatPolicySet(String tenantName) throws ExecutionException; http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/5d986867/plugins/network-elements/cisco-vnmc/src/com/cloud/network/cisco/CiscoVnmcConnectionImpl.java ---------------------------------------------------------------------- diff --git a/plugins/network-elements/cisco-vnmc/src/com/cloud/network/cisco/CiscoVnmcConnectionImpl.java b/plugins/network-elements/cisco-vnmc/src/com/cloud/network/cisco/CiscoVnmcConnectionImpl.java index e159dd1..f21045f 100644 --- a/plugins/network-elements/cisco-vnmc/src/com/cloud/network/cisco/CiscoVnmcConnectionImpl.java +++ b/plugins/network-elements/cisco-vnmc/src/com/cloud/network/cisco/CiscoVnmcConnectionImpl.java @@ -19,7 +19,9 @@ package com.cloud.network.cisco; import java.io.BufferedReader; import java.io.FileReader; import java.io.StringReader; +import java.util.ArrayList; import java.util.HashMap; +import java.util.List; import java.util.Map; import javax.xml.parsers.DocumentBuilderFactory; @@ -50,6 +52,7 @@ public class CiscoVnmcConnectionImpl implements CiscoVnmcConnection { LOGIN("login.xml", "mgmt-controller"), CREATE_TENANT("create-tenant.xml", "service-reg"), CREATE_VDC("create-vdc.xml", "service-reg"), + CREATE_EDGE_DEVICE_PROFILE("create-edge-device-profile.xml", "policy-mgr"), CREATE_EDGE_ROUTE_POLICY("create-edge-device-route-policy.xml", "policy-mgr"), CREATE_EDGE_ROUTE("create-edge-device-route.xml", "policy-mgr"), @@ -57,18 +60,29 @@ public class CiscoVnmcConnectionImpl implements CiscoVnmcConnection { RESOLVE_EDGE_DHCP_POLICY("associate-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"), + CREATE_EDGE_SECURITY_PROFILE("create-edge-security-profile.xml", "policy-mgr"), - CREATE_SOURCE_NAT_POOL("create-source-nat-pool.xml", "policy-mgr"), - CREATE_SOURCE_NAT_POLICY("create-source-nat-policy.xml", "policy-mgr"), + CREATE_NAT_POLICY_SET("create-nat-policy-set.xml", "policy-mgr"), RESOLVE_NAT_POLICY_SET("associate-nat-policy-set.xml", "policy-mgr"), - CREATE_INGRESS_ACL_RULE("create-ingress-acl-rule.xml", "policy-mgr"), - DELETE_ACL_RULE("delete-acl-rule.xml", "policy-mgr"), + CREATE_NAT_POLICY("create-nat-policy.xml", "policy-mgr"), + DELETE_NAT_POLICY("delete-nat-policy.xml", "policy-mgr"), + LIST_NAT_POLICIES("list-nat-policies.xml", "policy-mgr"), + CREATE_NAT_POLICY_REF("create-nat-policy-ref.xml", "policy-mgr"), + CREATE_PORT_POOL("create-port-pool.xml", "policy-mgr"), + CREATE_IP_POOL("create-ip-pool.xml", "policy-mgr"), + + CREATE_DNAT_RULE("create-dnat-rule.xml", "policy-mgr"), + CREATE_SOURCE_NAT_RULE("create-source-nat-rule.xml", "policy-mgr"), + + CREATE_ACL_POLICY_SET("create-acl-policy-set.xml", "policy-mgr"), + RESOLVE_ACL_POLICY_SET("associate-acl-policy-set.xml", "policy-mgr"), CREATE_ACL_POLICY("create-acl-policy.xml", "policy-mgr"), DELETE_ACL_POLICY("delete-acl-policy.xml", "policy-mgr"), CREATE_ACL_POLICY_REF("create-acl-policy-ref.xml", "policy-mgr"), - CREATE_ACL_POLICY_SET("create-acl-policy-set.xml", "policy-mgr"), - RESOLVE_ACL_POLICY_SET("associate-acl-policy-set.xml", "policy-mgr"), + CREATE_INGRESS_ACL_RULE("create-ingress-acl-rule.xml", "policy-mgr"), + DELETE_ACL_RULE("delete-acl-rule.xml", "policy-mgr"), + CREATE_EDGE_FIREWALL("create-edge-firewall.xml", "resource-mgr"), LIST_UNASSOC_ASA1000V("list-unassigned-asa1000v.xml", "resource-mgr"), ASSIGN_ASA1000V("assoc-asa1000v.xml", "resource-mgr"); @@ -116,7 +130,7 @@ public class CiscoVnmcConnectionImpl implements CiscoVnmcConnection { public String getService() { return service; } - } + } public CiscoVnmcConnectionImpl(String hostIp, String userName, String password) { this._ip = hostIp; @@ -132,7 +146,7 @@ public class CiscoVnmcConnectionImpl implements CiscoVnmcConnection { xml = replaceXmlValue(xml, "password", _password); String response = sendRequest(service, xml); Map<String, String> checked = checkResponse(response, "outCookie", "errorCode", "response"); - + if (checked.get("errorCode") != null) return false; _cookie = checked.get("outCookie"); @@ -248,7 +262,7 @@ public class CiscoVnmcConnectionImpl implements CiscoVnmcConnection { xml = replaceXmlValue(xml, "dn", getDnForTenantVDC(tenantName)); String response = sendRequest(service, xml); - + return verifySuccess(response); } @@ -265,7 +279,7 @@ public class CiscoVnmcConnectionImpl implements CiscoVnmcConnection { xml = replaceXmlValue(xml, "dn", getDnForTenantVDCEdgeDeviceProfile(tenantName)); String response = sendRequest(service, xml); - + return verifySuccess(response); } @@ -292,17 +306,17 @@ public class CiscoVnmcConnectionImpl implements CiscoVnmcConnection { public boolean createTenantVDCEdgeStaticRoute(String tenantName, String nextHopIp, String outsideIntf, String destination, String netmask) throws ExecutionException { - String xml = VnmcXml.CREATE_EDGE_ROUTE.getXml(); - String service = VnmcXml.CREATE_EDGE_ROUTE.getService(); - xml = replaceXmlValue(xml, "cookie", _cookie); - xml = replaceXmlValue(xml, "routedn", getDnForEdgeDeviceRoute(tenantName, 2));//TODO: why 2? - xml = replaceXmlValue(xml, "id", "2"); // TODO:2? - xml = replaceXmlValue(xml, "nexthop", nextHopIp); - xml = replaceXmlValue(xml, "nexthopintf", outsideIntf); - xml = replaceXmlValue(xml, "destination", destination); - xml = replaceXmlValue(xml, "netmask", netmask); + String xml = VnmcXml.CREATE_EDGE_ROUTE.getXml(); + String service = VnmcXml.CREATE_EDGE_ROUTE.getService(); + xml = replaceXmlValue(xml, "cookie", _cookie); + xml = replaceXmlValue(xml, "routedn", getDnForEdgeDeviceRoute(tenantName, 2));//TODO: why 2? + xml = replaceXmlValue(xml, "id", "2"); // TODO:2? + xml = replaceXmlValue(xml, "nexthop", nextHopIp); + xml = replaceXmlValue(xml, "nexthopintf", outsideIntf); + xml = replaceXmlValue(xml, "destination", destination); + xml = replaceXmlValue(xml, "netmask", netmask); - //TODO: this adds default route, make it more generic + //TODO: this adds default route, make it more generic String response = sendRequest(service, xml); return verifySuccess(response); @@ -336,7 +350,7 @@ public class CiscoVnmcConnectionImpl implements CiscoVnmcConnection { xml = replaceXmlValue(xml, "insideintf", intfName); String response = sendRequest(service, xml); - + return verifySuccess(response); } @@ -371,15 +385,15 @@ public class CiscoVnmcConnectionImpl implements CiscoVnmcConnection { */ @Override 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 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); - return verifySuccess(response); + String response = sendRequest(service, xml); + return verifySuccess(response); } /* (non-Javadoc) @@ -401,44 +415,28 @@ public class CiscoVnmcConnectionImpl implements CiscoVnmcConnection { return verifySuccess(response); } - private String getNameForSourceNatPool(String tenantName) { - return "Source-NAT-Pool-For-" + tenantName; + private String getNameForSourceNatIpPool(String tenantName) { + return "SNAT-Ip-" + tenantName; } private String getDnForSourceNatPool(String tenantName) { - return getDnForTenantVDC(tenantName) + "/objgrp-" + getNameForSourceNatPool(tenantName); - } - - private String getDnForSourceNatPoolExpr(String tenantName) { - return getDnForSourceNatPool(tenantName) + "/objgrp-expr-2"; - } - - private String getDnForSourceNatPublicIp(String tenantName) { - return getDnForSourceNatPoolExpr(tenantName) + "/nw-ip-2"; + return getDnForTenantVDC(tenantName) + "/objgrp-" + getNameForSourceNatIpPool(tenantName); } /* (non-Javadoc) - * @see com.cloud.network.resource.CiscoVnmcConnection#createTenantVDCSourceNATPool(java.lang.String, java.lang.String) + * @see com.cloud.network.resource.CiscoVnmcConnection#createTenantVDCSourceNatIpPool(java.lang.String, java.lang.String, java.lang.String) */ @Override - public boolean createTenantVDCSourceNATPool(String tenantName, String publicIp) throws ExecutionException { - String xml = VnmcXml.CREATE_SOURCE_NAT_POOL.getXml(); - String service = VnmcXml.CREATE_SOURCE_NAT_POOL.getService(); - xml = replaceXmlValue(xml, "cookie", _cookie); - xml = replaceXmlValue(xml, "descr", "Source NAT pool for Tenant VDC " + tenantName); - xml = replaceXmlValue(xml, "name", getNameForSourceNatPool(tenantName)); - xml = replaceXmlValue(xml, "snatpooldn", getDnForSourceNatPool(tenantName)); - xml = replaceXmlValue(xml, "snatpoolexprdn", getDnForSourceNatPoolExpr(tenantName)); - xml = replaceXmlValue(xml, "publicipdn", getDnForSourceNatPublicIp(tenantName)); - xml = replaceXmlValue(xml, "publicip", publicIp); - - String response = sendRequest(service, xml); - - return verifySuccess(response); + public boolean createTenantVDCSourceNatIpPool(String tenantName, String identifier, + String publicIp) throws ExecutionException { + return createTenantVDCIpPool(getDnForSourceNatPool(tenantName), + getNameForSourceNatIpPool(tenantName), + "Source NAT ip pool for Tenant VDC " + tenantName, + publicIp); } private String getNameForSourceNatPolicy(String tenantName) { - return "Source-NAT-For-" + tenantName; + return "SNAT-Policy-" + tenantName; } private String getDnForSourceNatPolicy(String tenantName) { @@ -446,62 +444,29 @@ public class CiscoVnmcConnectionImpl implements CiscoVnmcConnection { } private String getNameForSourceNatRule(String tenantName) { - return "Source-NAT-Policy-Rule-" + tenantName; + return "SNAT-Rule-" + tenantName; } private String getDnForSourceNatRule(String tenantName) { return getDnForSourceNatPolicy(tenantName) + "/rule-" + getNameForSourceNatRule(tenantName); } - private String getDnForSourceNatRuleAction(String tenantName) { - return getDnForSourceNatRule(tenantName) + "/nat-action"; - } - - private String getDnForSourceNatRuleRule(String tenantName) { - return getDnForSourceNatRule(tenantName) + "/rule-cond-2"; - } - - private String getDnForSourceNatRuleRange(String tenantName) { - return getDnForSourceNatRuleRule(tenantName) + "/nw-expr2"; - } - - private String getDnForSourceNatRuleRangeIp(String tenantName, int id) { - return getDnForSourceNatRuleRange(tenantName) + "/nw-ip-" + id; - } - - private String getDnForSourceNatRuleRangeAttr(String tenantName) { - return getDnForSourceNatRuleRange(tenantName) + "/nw-attr-qual"; - } - /* (non-Javadoc) - * @see com.cloud.network.resource.CiscoVnmcConnection#createTenantVDCSourceNATPolicy(java.lang.String, java.lang.String, java.lang.String) + * @see com.cloud.network.resource.CiscoVnmcConnection#createTenantVDCSourceNatRule(java.lang.String, java.lang.String, java.lang.String) */ @Override - public boolean createTenantVDCSourceNATPolicy(String tenantName, + public boolean createTenantVDCSourceNatRule(String tenantName, String identifier, String startSourceIp, String endSourceIp) throws ExecutionException { - String xml = VnmcXml.CREATE_SOURCE_NAT_POLICY.getXml(); - String service = VnmcXml.CREATE_SOURCE_NAT_POLICY.getService(); + String xml = VnmcXml.CREATE_SOURCE_NAT_RULE.getXml(); + String service = VnmcXml.CREATE_SOURCE_NAT_RULE.getService(); xml = replaceXmlValue(xml, "cookie", _cookie); - xml = replaceXmlValue(xml, "descr", "Source NAT Policy for Tenant VDC " + tenantName); - xml = replaceXmlValue(xml, "srcTranslatedIpPool", getNameForSourceNatPool(tenantName)); - xml = replaceXmlValue(xml, "natrulename", getNameForSourceNatRule(tenantName)); - xml = replaceXmlValue(xml, "natpolname", getNameForSourceNatPolicy(tenantName)); - xml = replaceXmlValue(xml, "natruleruledescr", "Source NAT Policy for Tenant " + tenantName); - xml = replaceXmlValue(xml, "natpoldescr", "Source NAT Rule for Tenant " + tenantName); - xml = replaceXmlValue(xml, "natpoldn", getDnForSourceNatPolicy(tenantName)); xml = replaceXmlValue(xml, "natruledn", getDnForSourceNatRule(tenantName)); - xml = replaceXmlValue(xml, "sourcestartip", startSourceIp); - xml = replaceXmlValue(xml, "sourceendip", endSourceIp); - xml = replaceXmlValue(xml, "sourcenatpoolname", getNameForSourceNatPool(tenantName)); - - xml = replaceXmlValue(xml, "natactiondn", getDnForSourceNatRuleAction(tenantName)); - xml = replaceXmlValue(xml, "natruleruledn", getDnForSourceNatRuleRule(tenantName)); - xml = replaceXmlValue(xml, "natrangedn", getDnForSourceNatRuleRange(tenantName)); - xml = replaceXmlValue(xml, "natipdn2", getDnForSourceNatRuleRangeIp(tenantName, 2)); - xml = replaceXmlValue(xml, "natipdn3", getDnForSourceNatRuleRangeIp(tenantName, 3)); - - xml = replaceXmlValue(xml, "natsnatruleconddn", getDnForSourceNatRuleRangeAttr(tenantName)); + xml = replaceXmlValue(xml, "natrulename", getNameForSourceNatRule(tenantName)); + xml = replaceXmlValue(xml, "descr", "Source NAT rule for Tenant VDC " + tenantName); + xml = replaceXmlValue(xml, "srcstartip", startSourceIp); + xml = replaceXmlValue(xml, "srcendip", endSourceIp); + xml = replaceXmlValue(xml, "ippoolname", getNameForSourceNatIpPool(tenantName)); String response = sendRequest(service, xml); @@ -509,18 +474,39 @@ public class CiscoVnmcConnectionImpl implements CiscoVnmcConnection { } private String getNameForNatPolicySet(String tenantName) { - return "NAT-Policy-Set-" + tenantName; + return "NAT-PolicySet-" + tenantName; } private String getDnForNatPolicySet(String tenantName) { return getDnForTenantVDC(tenantName) + "/natpset-" + getNameForNatPolicySet(tenantName) ; } - private String getDnForNatPolicyRef(String tenantName) { + private String getDnForSourceNatPolicyRef(String tenantName) { return getDnForNatPolicySet(tenantName) + "/polref-" + getNameForSourceNatPolicy(tenantName) ; } /* (non-Javadoc) + * @see com.cloud.network.resource.CiscoVnmcConnection#createTenantVDCSourceNatPolicyRef(java.lang.String, java.lang.String) + */ + @Override + public boolean createTenantVDCSourceNatPolicyRef(String tenantName, String identifier) throws ExecutionException { + return createTenantVDCNatPolicyRef( + getDnForSourceNatPolicyRef(tenantName), + getNameForSourceNatPolicy(tenantName), + tenantName); + } + + /* (non-Javadoc) + * @see com.cloud.network.resource.CiscoVnmcConnection#createTenantVDCSourceNatPolicy(java.lang.String, java.lang.String) + */ + @Override + public boolean createTenantVDCSourceNatPolicy(String tenantName, String identifier) throws ExecutionException { + return createTenantVDCNatPolicy( + getDnForSourceNatPolicy(tenantName), + getNameForSourceNatPolicy(tenantName)); + } + + /* (non-Javadoc) * @see com.cloud.network.resource.CiscoVnmcConnection#createTenantVDCNatPolicySet(java.lang.String) */ @Override @@ -528,11 +514,9 @@ public class CiscoVnmcConnectionImpl implements CiscoVnmcConnection { String xml = VnmcXml.CREATE_NAT_POLICY_SET.getXml(); String service = VnmcXml.CREATE_NAT_POLICY_SET.getService(); xml = replaceXmlValue(xml, "cookie", _cookie); - //xml = replaceXmlValue(xml, "descr", "Nat Policy Set for Tenant VDC " + tenantName); - xml = replaceXmlValue(xml, "natpolicyname", getNameForSourceNatPolicy(tenantName)); + xml = replaceXmlValue(xml, "descr", "NAT policy set for Tenant VDC " + tenantName); xml = replaceXmlValue(xml, "natpolicysetname", getNameForNatPolicySet(tenantName)); xml = replaceXmlValue(xml, "natpolicysetdn", getDnForNatPolicySet(tenantName)); - xml = replaceXmlValue(xml, "natpolicyrefdn", getDnForNatPolicyRef(tenantName)); String response = sendRequest(service, xml); @@ -560,7 +544,7 @@ public class CiscoVnmcConnectionImpl implements CiscoVnmcConnection { } private String getNameForAclPolicySet(String tenantName, boolean ingress) { - return (ingress ? "Ingress-" : "Egress-") + "ACL-Policy-Set-" + tenantName; + return (ingress ? "Ingress-" : "Egress-") + "ACL-PolicySet-" + tenantName; } private String getDnForAclPolicySet(String tenantName, boolean ingress) { @@ -568,7 +552,7 @@ public class CiscoVnmcConnectionImpl implements CiscoVnmcConnection { } private String getNameForAclPolicy(String tenantName, String identifier) { - return "Policy-" + tenantName + "-" + identifier; + return "ACL-" + tenantName + "-" + identifier; } private String getDnForAclPolicy(String tenantName, String identifier) { @@ -588,14 +572,13 @@ public class CiscoVnmcConnectionImpl implements CiscoVnmcConnection { } /* (non-Javadoc) - * @see com.cloud.network.resource.CiscoVnmcConnection#createTenantVDCAclPolicy(java.lang.String) + * @see com.cloud.network.resource.CiscoVnmcConnection#createTenantVDCAclPolicy(java.lang.String, java.lang.String, boolean) */ @Override public boolean createTenantVDCAclPolicy(String tenantName, String identifier, boolean ingress) throws ExecutionException { String xml = VnmcXml.CREATE_ACL_POLICY.getXml(); String service = VnmcXml.CREATE_ACL_POLICY.getService(); xml = replaceXmlValue(xml, "cookie", _cookie); - //xml = replaceXmlValue(xml, "descr", "ACL Policy for Tenant VDC " + tenantName); xml = replaceXmlValue(xml, "aclpolicyname", getNameForAclPolicy(tenantName, identifier)); xml = replaceXmlValue(xml, "aclpolicydn", getDnForAclPolicy(tenantName, identifier)); xml = replaceXmlValue(xml, "aclpolicyrefdn", getDnForAclPolicyRef(tenantName, identifier, ingress)); @@ -606,7 +589,7 @@ public class CiscoVnmcConnectionImpl implements CiscoVnmcConnection { } /* (non-Javadoc) - * @see com.cloud.network.resource.CiscoVnmcConnection#deleteTenantVDCAclPolicy(java.lang.String) + * @see com.cloud.network.resource.CiscoVnmcConnection#deleteTenantVDCAclPolicy(java.lang.String, java.lang.String) */ @Override public boolean deleteTenantVDCAclPolicy(String tenantName, String identifier) throws ExecutionException { @@ -622,7 +605,7 @@ public class CiscoVnmcConnectionImpl implements CiscoVnmcConnection { } /* (non-Javadoc) - * @see com.cloud.network.resource.CiscoVnmcConnection#createTenantVDCAclPolicySet(java.lang.String) + * @see com.cloud.network.resource.CiscoVnmcConnection#createTenantVDCAclPolicyRef(java.lang.String, java.lang.String, boolean) */ @Override public boolean createTenantVDCAclPolicyRef(String tenantName, String identifier, boolean ingress) throws ExecutionException { @@ -639,14 +622,14 @@ public class CiscoVnmcConnectionImpl implements CiscoVnmcConnection { } /* (non-Javadoc) - * @see com.cloud.network.resource.CiscoVnmcConnection#createTenantVDCAclPolicySet(java.lang.String) + * @see com.cloud.network.resource.CiscoVnmcConnection#createTenantVDCAclPolicySet(java.lang.String, boolean) */ @Override public boolean createTenantVDCAclPolicySet(String tenantName, boolean ingress) throws ExecutionException { String xml = VnmcXml.CREATE_ACL_POLICY_SET.getXml(); String service = VnmcXml.CREATE_ACL_POLICY_SET.getService(); xml = replaceXmlValue(xml, "cookie", _cookie); - //xml = replaceXmlValue(xml, "descr", "ACL Policy Set for Tenant VDC " + tenantName); + //xml = replaceXmlValue(xml, "descr", "ACL policy set for Tenant VDC " + tenantName); xml = replaceXmlValue(xml, "aclpolicysetname", getNameForAclPolicySet(tenantName, ingress)); xml = replaceXmlValue(xml, "aclpolicysetdn", getDnForAclPolicySet(tenantName, ingress)); @@ -677,7 +660,7 @@ public class CiscoVnmcConnectionImpl implements CiscoVnmcConnection { } /* (non-Javadoc) - * @see com.cloud.network.resource.CiscoVnmcConnection#createIngressAclRule(java.lang.String) + * @see com.cloud.network.resource.CiscoVnmcConnection#createIngressAclRule(java.lang.String, java.lang.String, java.lang.String, java.lang.String, java.lang.String, java.lang.String, java.lang.String, java.lang.String, java.lang.String) */ @Override public boolean createIngressAclRule(String tenantName, @@ -687,7 +670,7 @@ public class CiscoVnmcConnectionImpl implements CiscoVnmcConnection { String xml = VnmcXml.CREATE_INGRESS_ACL_RULE.getXml(); String service = VnmcXml.CREATE_INGRESS_ACL_RULE.getService(); xml = replaceXmlValue(xml, "cookie", _cookie); - //xml = replaceXmlValue(xml, "descr", "Ingress ACL Policy for Tenant VDC" + tenantName); + //xml = replaceXmlValue(xml, "descr", "Ingress ACL policy for Tenant VDC" + tenantName); xml = replaceXmlValue(xml, "aclruledn", getDnForAclRule(tenantName, identifier, policyIdentifier)); xml = replaceXmlValue(xml, "aclrulename", getNameForAclRule(tenantName, identifier)); xml = replaceXmlValue(xml, "actiontype", "permit"); @@ -704,7 +687,7 @@ public class CiscoVnmcConnectionImpl implements CiscoVnmcConnection { } /* (non-Javadoc) - * @see com.cloud.network.resource.CiscoVnmcConnection#deleteAclRule(java.lang.String) + * @see com.cloud.network.resource.CiscoVnmcConnection#deleteAclRule(java.lang.String, java.lang.String, java.lang.String) */ @Override public boolean deleteAclRule(String tenantName, String identifier, String policyIdentifier) throws ExecutionException { @@ -719,6 +702,212 @@ public class CiscoVnmcConnectionImpl implements CiscoVnmcConnection { return verifySuccess(response); } + private String getNameForDNatPortPool(String tenantName, String identifier) { + return "Port-" + tenantName + "-" + identifier; + } + + private String getDnForDNatPortPool(String tenantName, String identifier) { + return getDnForTenantVDC(tenantName) + "/objgrp-" + getNameForDNatPortPool(tenantName, identifier); + } + + private String getNameForDNatIpPool(String tenantName, String identifier) { + return "Ip-" + tenantName + "-" + identifier; + } + + private String getDnForDNatIpPool(String tenantName, String identifier) { + return getDnForTenantVDC(tenantName) + "/objgrp-" + getNameForDNatIpPool(tenantName, identifier); + } + + private boolean createTenantVDCPortPool(String poolDn, String name, + String description, String startPort, String endPort) throws ExecutionException { + String xml = VnmcXml.CREATE_PORT_POOL.getXml(); + String service = VnmcXml.CREATE_PORT_POOL.getService(); + xml = replaceXmlValue(xml, "cookie", _cookie); + xml = replaceXmlValue(xml, "portpooldn", poolDn); + xml = replaceXmlValue(xml, "portpoolname", name); + xml = replaceXmlValue(xml, "descr", description); + xml = replaceXmlValue(xml, "startport", startPort); + xml = replaceXmlValue(xml, "endport", endPort); + + String response = sendRequest(service, xml); + + return verifySuccess(response); + } + + private boolean createTenantVDCIpPool(String poolDn, String name, + String description, String ipAddress) throws ExecutionException { + String xml = VnmcXml.CREATE_IP_POOL.getXml(); + String service = VnmcXml.CREATE_IP_POOL.getService(); + xml = replaceXmlValue(xml, "cookie", _cookie); + xml = replaceXmlValue(xml, "ippooldn", poolDn); + xml = replaceXmlValue(xml, "ippoolname", name); + xml = replaceXmlValue(xml, "descr", description); + xml = replaceXmlValue(xml, "ipvalue", ipAddress); + + String response = sendRequest(service, xml); + + return verifySuccess(response); + } + + private boolean createTenantVDCNatPolicyRef(String policyRefDn, String name, String tenantName) throws ExecutionException { + String xml = VnmcXml.CREATE_NAT_POLICY_REF.getXml(); + String service = VnmcXml.CREATE_NAT_POLICY_REF.getService(); + xml = replaceXmlValue(xml, "cookie", _cookie); + xml = replaceXmlValue(xml, "natpolicyrefdn", policyRefDn); + xml = replaceXmlValue(xml, "natpolicyname", name); + + List<String> policies = listNatPolicies(tenantName); + int order = 100; + if (policies != null) { + order += policies.size(); + } + xml = replaceXmlValue(xml, "order", Integer.toString(order)); + + String response = sendRequest(service, xml); + + return verifySuccess(response); + } + + private boolean createTenantVDCNatPolicy(String policyDn, String name) throws ExecutionException { + String xml = VnmcXml.CREATE_NAT_POLICY.getXml(); + String service = VnmcXml.CREATE_NAT_POLICY.getService(); + xml = replaceXmlValue(xml, "cookie", _cookie); + xml = replaceXmlValue(xml, "natpolicydn", policyDn); + xml = replaceXmlValue(xml, "natpolicyname", name); + + String response = sendRequest(service, xml); + + return verifySuccess(response); + } + + private boolean deleteTenantVDCNatPolicy(String policyDn, String name) throws ExecutionException { + String xml = VnmcXml.DELETE_NAT_POLICY.getXml(); + String service = VnmcXml.DELETE_NAT_POLICY.getService(); + xml = replaceXmlValue(xml, "cookie", _cookie); + xml = replaceXmlValue(xml, "natpolicydn", policyDn); + xml = replaceXmlValue(xml, "natpolicyname", name); + + String response = sendRequest(service, xml); + + return verifySuccess(response); + } + + private List<String> listNatPolicies(String tenantName) throws ExecutionException { + + String xml = VnmcXml.LIST_NAT_POLICIES.getXml(); + String service = VnmcXml.LIST_NAT_POLICIES.getService(); + xml = replaceXmlValue(xml, "cookie", _cookie); + xml = replaceXmlValue(xml, "vdcdn", getDnForTenantVDC(tenantName)); + + String response = sendRequest(service, xml); + + List<String> result = new ArrayList<String>(); + Document xmlDoc = getDocument(response); + xmlDoc.normalize(); + NodeList policyList = xmlDoc.getElementsByTagName("pair"); + for (int i=0; i < policyList.getLength(); i++) { + Node policyNode = policyList.item(i); + result.add(policyNode.getAttributes().getNamedItem("key").getNodeValue()); + } + + return result; + + } + + /* (non-Javadoc) + * @see com.cloud.network.resource.CiscoVnmcConnection#createTenantVDCDNatPortPool(java.lang.String, java.lang.String, java.lang.String, java.lang.String) + */ + @Override + public boolean createTenantVDCDNatPortPool(String tenantName, String identifier, + String startPort, String endPort) throws ExecutionException { + return createTenantVDCPortPool( + getDnForDNatPortPool(tenantName, identifier), getNameForDNatPortPool(tenantName, identifier), + "DNAT port pool for " + getNameForDNatPortPool(tenantName, identifier), startPort, endPort); + } + /* (non-Javadoc) + * @see com.cloud.network.resource.CiscoVnmcConnection#createTenantVDCDNatIpPool(java.lang.String, java.lang.String, java.lang.String) + */ + @Override + public boolean createTenantVDCDNatIpPool(String tenantName, String identifier, + String ipAddress) throws ExecutionException { + return createTenantVDCIpPool( + getDnForDNatIpPool(tenantName, identifier), getNameForDNatIpPool(tenantName, identifier), + "DNAT ip pool for " + getNameForDNatIpPool(tenantName, identifier), ipAddress); + } + + private String getNameForDNatPolicy(String tenantName, String identifier) { + return "DNAT-" + tenantName + "-" + identifier; + } + + private String getDnForDNatPolicy(String tenantName, String identifier) { + return getDnForTenantVDC(tenantName) + "/natpol-" + getNameForDNatPolicy(tenantName, identifier); + } + + private String getDnForDNatPolicyRef(String tenantName, String identifier) { + return getDnForNatPolicySet(tenantName) + "/polref-" + getNameForDNatPolicy(tenantName, identifier); + } + + /* (non-Javadoc) + * @see com.cloud.network.resource.CiscoVnmcConnection#createTenantVDCDNatPolicyRef(java.lang.String, java.lang.String) + */ + public boolean createTenantVDCDNatPolicyRef(String tenantName, String identifier) throws ExecutionException { + return createTenantVDCNatPolicyRef( + getDnForDNatPolicyRef(tenantName, identifier), + getNameForDNatPolicy(tenantName, identifier), + tenantName); + } + + /* (non-Javadoc) + * @see com.cloud.network.resource.CiscoVnmcConnection#createTenantVDCDNatPolicy(java.lang.String, java.lang.String) + */ + public boolean createTenantVDCDNatPolicy(String tenantName, String identifier) throws ExecutionException { + return createTenantVDCNatPolicy( + getDnForDNatPolicy(tenantName, identifier), + getNameForDNatPolicy(tenantName, identifier)); + } + + /* (non-Javadoc) + * @see com.cloud.network.resource.CiscoVnmcConnection#deleteTenantVDCDNatPolicy(java.lang.String, java.lang.String) + */ + public boolean deleteTenantVDCDNatPolicy(String tenantName, String identifier) throws ExecutionException { + return deleteTenantVDCNatPolicy( + getDnForDNatPolicy(tenantName, identifier), + getNameForDNatPolicy(tenantName, identifier)); + } + + private String getNameForDNatRule(String tenantName, String identifier) { + return "Rule-" + tenantName + "-" + identifier; + } + + private String getDnForDNatRule(String tenantName, String identifier, String policyIdentifier) { + return getDnForDNatPolicy(tenantName, policyIdentifier) + "/rule-" + getNameForDNatRule(tenantName, identifier); + } + + /* (non-Javadoc) + * @see com.cloud.network.resource.CiscoVnmcConnection#createTenantVDCDNatRule(java.lang.String, java.lang.String, java.lang.String, java.lang.String, java.lang.String, java.lang.String, java.lang.String) + */ + public boolean createTenantVDCDNatRule(String tenantName, + String identifier, String policyIdentifier, + String protocol, String sourceIp, + String startSourcePort, String endSourcePort) throws ExecutionException { + String xml = VnmcXml.CREATE_DNAT_RULE.getXml(); + String service = VnmcXml.CREATE_DNAT_RULE.getService(); + xml = replaceXmlValue(xml, "cookie", _cookie); + xml = replaceXmlValue(xml, "natruledn", getDnForDNatRule(tenantName, identifier, policyIdentifier)); + xml = replaceXmlValue(xml, "natrulename", getNameForDNatRule(tenantName, identifier)); + xml = replaceXmlValue(xml, "descr", "DNAT rule for Tenant VDC " + tenantName); + xml = replaceXmlValue(xml, "ippoolname", getNameForDNatIpPool(tenantName, policyIdentifier + "-" + identifier)); + xml = replaceXmlValue(xml, "portpoolname", getNameForDNatPortPool(tenantName, policyIdentifier + "-" + identifier)); + xml = replaceXmlValue(xml, "srcip", sourceIp); + xml = replaceXmlValue(xml, "srcportstart", startSourcePort); + xml = replaceXmlValue(xml, "srcportend", endSourcePort); + xml = replaceXmlValue(xml, "protocolvalue", protocol); + + String response = sendRequest(service, xml); + + return verifySuccess(response); + } + private String getNameForEdgeFirewall(String tenantName) { return "ASA-1000v-" + tenantName; } http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/5d986867/plugins/network-elements/cisco-vnmc/src/com/cloud/network/resource/CiscoVnmcResource.java ---------------------------------------------------------------------- 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 85188c8..63911de 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 @@ -48,6 +48,7 @@ import com.cloud.agent.api.routing.SetPortForwardingRulesCommand; import com.cloud.agent.api.routing.SetSourceNatCommand; import com.cloud.agent.api.routing.SetStaticNatRulesCommand; import com.cloud.agent.api.to.FirewallRuleTO; +import com.cloud.agent.api.to.PortForwardingRuleTO; import com.cloud.host.Host; import com.cloud.network.cisco.CiscoVnmcConnectionImpl; import com.cloud.resource.ServerResource; @@ -274,29 +275,33 @@ public class CiscoVnmcResource implements ServerResource{ private Answer execute(SetSourceNatCommand cmd, int numRetries) { String vlanId = cmd.getContextParam(NetworkElementCommand.GUEST_VLAN_TAG); String tenant = "vlan-" + vlanId; + String policyIdentifier = cmd.getIpAddress().getPublicIp().replace('.', '-'); try { - // create-nat-policy-set if (!_connection.createTenantVDCNatPolicySet(tenant)) { throw new Exception("Failed to create NAT policy set in VNMC for guest network with vlan " + vlanId); } - // create-source-nat-pool - if (!_connection.createTenantVDCSourceNATPool(tenant, cmd.getIpAddress().getPublicIp())) { - throw new Exception("Failed to create source NAT pool in VNMC for guest network with vlan " + vlanId); + if (!_connection.createTenantVDCSourceNatPolicy(tenant, policyIdentifier)) { + throw new Exception("Failed to create source NAT policy in VNMC for guest network with vlan " + vlanId); + } + if (!_connection.createTenantVDCSourceNatPolicyRef(tenant, policyIdentifier)) { + throw new Exception("Failed to associate source NAT policy with NAT policy set in VNMC for guest network with vlan " + vlanId); + } + + if (!_connection.createTenantVDCSourceNatIpPool(tenant, policyIdentifier, cmd.getIpAddress().getPublicIp())) { + throw new Exception("Failed to create source NAT ip pool in VNMC for guest network with vlan " + vlanId); } - // create-source-nat-policy String cidr = cmd.getContextParam(NetworkElementCommand.GUEST_NETWORK_CIDR); String[] result = cidr.split("\\/"); assert (result.length == 2) : "Something is wrong with guest cidr " + cidr; long size = Long.valueOf(result[1]); String startIp = NetUtils.getIpRangeStartIpFromCidr(result[0], size); String endIp = NetUtils.getIpRangeEndIpFromCidr(result[0], size); - if (!_connection.createTenantVDCSourceNATPolicy(tenant, startIp, endIp)) { - throw new Exception("Failed to create source NAT policy in VNMC for guest network with vlan " + vlanId); + if (!_connection.createTenantVDCSourceNatRule(tenant, policyIdentifier, startIp, endIp)) { + throw new Exception("Failed to create source NAT rule in VNMC for guest network with vlan " + vlanId); } - // associate-nat-policy-set if (!_connection.associateNatPolicySet(tenant)) { throw new Exception("Failed to associate source NAT policy set with edge security profile in VNMC for guest network with vlan " + vlanId); } @@ -333,24 +338,29 @@ public class CiscoVnmcResource implements ServerResource{ } try { - // create-acl-policy-set for ingress - _connection.createTenantVDCAclPolicySet(tenant, true); - // create-acl-policy-set for egress + if (!_connection.createTenantVDCAclPolicySet(tenant, true)) { + throw new Exception("Failed to create ACL ingress policy set in VNMC for guest network with vlan " + vlanId); + } + // TODO for egress for (String publicIp : publicIpRulesMap.keySet()) { String policyIdentifier = publicIp.replace('.', '-'); - // delete-acl-policy for ingress - _connection.deleteTenantVDCAclPolicy(tenant, policyIdentifier); - // delete-acl-policy for egress - // create-acl-policy for ingress - _connection.createTenantVDCAclPolicy(tenant, policyIdentifier, true); - _connection.createTenantVDCAclPolicyRef(tenant, policyIdentifier, true); - // create-acl-policy for egress + if (!_connection.deleteTenantVDCAclPolicy(tenant, policyIdentifier)) { + throw new Exception("Failed to delete ACL ingress policy in VNMC for guest network with vlan " + vlanId); + } + // TODO for egress + + if (!_connection.createTenantVDCAclPolicy(tenant, policyIdentifier, true)) { + throw new Exception("Failed to create ACL ingress policy in VNMC for guest network with vlan " + vlanId); + } + if (!_connection.createTenantVDCAclPolicyRef(tenant, policyIdentifier, true)) { + throw new Exception("Failed to associate ACL ingress policy with ACL ingress policy set in VNMC for guest network with vlan " + vlanId); + } + // TODO for egress for (FirewallRuleTO rule : publicIpRulesMap.get(publicIp)) { if (rule.revoked()) { - // delete-acl-rule //_connection.deleteAclRule(tenant, Long.toString(rule.getId()), publicIp); } else { String cidr = rule.getSourceCidrList().get(0); @@ -359,16 +369,21 @@ public class CiscoVnmcResource implements ServerResource{ long size = Long.valueOf(result[1]); String externalStartIp = NetUtils.getIpRangeStartIpFromCidr(result[0], size); String externalEndIp = NetUtils.getIpRangeEndIpFromCidr(result[0], size); - // create-ingress-acl-rule - _connection.createIngressAclRule(tenant, + + if (!_connection.createIngressAclRule(tenant, Long.toString(rule.getId()), policyIdentifier, rule.getProtocol().toUpperCase(), externalStartIp, externalEndIp, - Integer.toString(rule.getSrcPortRange()[0]), Integer.toString(rule.getSrcPortRange()[1]), publicIp); + Integer.toString(rule.getSrcPortRange()[0]), Integer.toString(rule.getSrcPortRange()[1]), publicIp)) { + throw new Exception("Failed to create ACL ingress rule in VNMC for guest network with vlan " + vlanId); + } } + // TODO for egress } } - // associate-acl-policy-set - _connection.associateAclPolicySet(tenant); + + if (!_connection.associateAclPolicySet(tenant)) { + throw new Exception("Failed to associate ACL policy set with edge security profile in VNMC for guest network with vlan " + vlanId); + } } catch (Throwable e) { String msg = "SetFirewallRulesCommand failed due to " + e.getMessage(); s_logger.error(msg, e); @@ -399,7 +414,72 @@ public class CiscoVnmcResource implements ServerResource{ } private Answer execute(SetPortForwardingRulesCommand cmd, int numRetries) { - return new Answer(cmd); + String vlanId = cmd.getContextParam(NetworkElementCommand.GUEST_VLAN_TAG); + String tenant = "vlan-" + vlanId; + + PortForwardingRuleTO[] rules = cmd.getRules(); + Map<String, List<PortForwardingRuleTO>> publicIpRulesMap = new HashMap<String, List<PortForwardingRuleTO>>(); + for (PortForwardingRuleTO rule : rules) { + String publicIp = rule.getSrcIp(); + if (!publicIpRulesMap.containsKey(publicIp)) { + List<PortForwardingRuleTO> publicIpRulesList = new ArrayList<PortForwardingRuleTO>(); + publicIpRulesMap.put(publicIp, publicIpRulesList); + } + publicIpRulesMap.get(publicIp).add(rule); + } + + try { + if (!_connection.createTenantVDCNatPolicySet(tenant)) { + throw new Exception("Failed to create NAT policy set in VNMC for guest network with vlan " + vlanId); + } + + for (String publicIp : publicIpRulesMap.keySet()) { + String policyIdentifier = publicIp.replace('.', '-'); + + if (!_connection.deleteTenantVDCDNatPolicy(tenant, policyIdentifier)) { + throw new Exception("Failed to delete ACL ingress policy in VNMC for guest network with vlan " + vlanId); + } + + if (!_connection.createTenantVDCDNatPolicy(tenant, policyIdentifier)) { + throw new Exception("Failed to create DNAT policy in VNMC for guest network with vlan " + vlanId); + } + if (!_connection.createTenantVDCDNatPolicyRef(tenant, policyIdentifier)) { + throw new Exception("Failed to associate DNAT policy with NAT policy set in VNMC for guest network with vlan " + vlanId); + } + + for (PortForwardingRuleTO rule : publicIpRulesMap.get(publicIp)) { + if (rule.revoked()) { + //_connection.deleteDNatRule(tenant, Long.toString(rule.getId()), publicIp); + } else { + if (!_connection.createTenantVDCDNatIpPool(tenant, policyIdentifier + "-" + rule.getId(), rule.getDstIp())) { + throw new Exception("Failed to create DNAT ip pool in VNMC for guest network with vlan " + vlanId); + } + + if (!_connection.createTenantVDCDNatPortPool(tenant, policyIdentifier + "-" + rule.getId(), + Integer.toString(rule.getDstPortRange()[0]), Integer.toString(rule.getDstPortRange()[1]))) { + throw new Exception("Failed to create DNAT port pool in VNMC for guest network with vlan " + vlanId); + } + + if (!_connection.createTenantVDCDNatRule(tenant, + Long.toString(rule.getId()), policyIdentifier, + rule.getProtocol().toUpperCase(), rule.getSrcIp(), + Integer.toString(rule.getSrcPortRange()[0]), Integer.toString(rule.getSrcPortRange()[1]))) { + throw new Exception("Failed to create DNAT rule in VNMC for guest network with vlan " + vlanId); + } + } + } + } + + if (!_connection.associateNatPolicySet(tenant)) { + throw new Exception("Failed to associate source NAT policy set with edge security profile in VNMC for guest network with vlan " + vlanId); + } + } catch (Throwable e) { + String msg = "SetSourceNatCommand failed due to " + e.getMessage(); + s_logger.error(msg, e); + return new Answer(cmd, false, msg); + } + + return new Answer(cmd, true, "Success"); } /* http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/5d986867/plugins/network-elements/cisco-vnmc/test/com/cloud/network/cisco/CiscoVnmcConnectionTest.java ---------------------------------------------------------------------- diff --git a/plugins/network-elements/cisco-vnmc/test/com/cloud/network/cisco/CiscoVnmcConnectionTest.java b/plugins/network-elements/cisco-vnmc/test/com/cloud/network/cisco/CiscoVnmcConnectionTest.java index 9325951..2e3a8a8 100644 --- a/plugins/network-elements/cisco-vnmc/test/com/cloud/network/cisco/CiscoVnmcConnectionTest.java +++ b/plugins/network-elements/cisco-vnmc/test/com/cloud/network/cisco/CiscoVnmcConnectionTest.java @@ -110,7 +110,7 @@ public class CiscoVnmcConnectionTest { @Test public void testCreateTenantVDCEdgeDeviceRoute() { try { - boolean response = connection.createTenantVDCEdgeStaticRoute(tenantName, + boolean response = connection.createTenantVDCEdgeStaticRoute(tenantName, "10.223.136.1", "Edge_Outside", "0.0.0.0", "0.0.0.0"); assertTrue(response); } catch (ExecutionException e) { @@ -122,7 +122,7 @@ public class CiscoVnmcConnectionTest { @Test public void testAssociateRoutePolicyWithEdgeProfile() { try { - boolean response = connection.associateTenantVDCEdgeStaticRoutePolicy(tenantName); + boolean response = connection.associateTenantVDCEdgeStaticRoutePolicy(tenantName); assertTrue(response); } catch (ExecutionException e) { // TODO Auto-generated catch block @@ -133,7 +133,7 @@ public class CiscoVnmcConnectionTest { @Test public void testAssociateTenantVDCEdgeDhcpPolicy() { try { - boolean response = connection.associateTenantVDCEdgeDhcpPolicy(tenantName, "Edge_Inside"); + boolean response = connection.associateTenantVDCEdgeDhcpPolicy(tenantName, "Edge_Inside"); assertTrue(response); } catch (ExecutionException e) { // TODO Auto-generated catch block @@ -144,8 +144,8 @@ public class CiscoVnmcConnectionTest { @Test public void testCreateTenantVDCEdgeDhcpPolicy() { try { - boolean response = connection.createTenantVDCEdgeDhcpPolicy(tenantName, - "10.1.1.2", "10.1.1.254", "255.255.255.0","4.4.4.4", tenantName+ ".net"); + boolean response = connection.createTenantVDCEdgeDhcpPolicy(tenantName, + "10.1.1.2", "10.1.1.254", "255.255.255.0","4.4.4.4", tenantName+ ".net"); assertTrue(response); } catch (ExecutionException e) { // TODO Auto-generated catch block @@ -156,7 +156,7 @@ public class CiscoVnmcConnectionTest { @Test public void testCreateTenantVDCEdgeSecurityProfile() { try { - boolean response = connection.createTenantVDCEdgeSecurityProfile(tenantName); + boolean response = connection.createTenantVDCEdgeSecurityProfile(tenantName); assertTrue(response); } catch (ExecutionException e) { // TODO Auto-generated catch block @@ -165,9 +165,9 @@ public class CiscoVnmcConnectionTest { } @Test - public void testCreateTenantVDCSourceNATPool() { + public void testCreateTenantVDCSourceNatIpPool() { try { - boolean response = connection.createTenantVDCSourceNATPool(tenantName, "10.223.136.10"); + boolean response = connection.createTenantVDCSourceNatIpPool(tenantName, "1", "10.223.136.10"); assertTrue(response); } catch (ExecutionException e) { // TODO Auto-generated catch block @@ -176,9 +176,13 @@ public class CiscoVnmcConnectionTest { } @Test - public void testCreateTenantVDCSourceNATPolicy() { + public void testCreateTenantVDCSourceNatPolicy() { try { - boolean response = connection.createTenantVDCSourceNATPolicy(tenantName, "10.1.1.2", "10.1.1.254"); + boolean response = connection.createTenantVDCSourceNatPolicy(tenantName, "1"); + assertTrue(response); + response = connection.createTenantVDCSourceNatPolicyRef(tenantName, "1"); + assertTrue(response); + response = connection.createTenantVDCSourceNatRule(tenantName, "1", "10.1.1.2", "10.1.1.254"); assertTrue(response); } catch (ExecutionException e) { // TODO Auto-generated catch block @@ -189,7 +193,7 @@ public class CiscoVnmcConnectionTest { @Test public void testCreateTenantVDCNatPolicySet() { try { - boolean response = connection.createTenantVDCNatPolicySet(tenantName); + boolean response = connection.createTenantVDCNatPolicySet(tenantName); assertTrue(response); } catch (ExecutionException e) { // TODO Auto-generated catch block @@ -200,7 +204,7 @@ public class CiscoVnmcConnectionTest { @Test public void testAssociateNatPolicySet() { try { - boolean response = connection.associateNatPolicySet(tenantName); + boolean response = connection.associateNatPolicySet(tenantName); assertTrue(response); } catch (ExecutionException e) { // TODO Auto-generated catch block @@ -211,8 +215,8 @@ public class CiscoVnmcConnectionTest { @Test public void testCreateEdgeFirewall() { try { - boolean response = connection.createEdgeFirewall(tenantName, - "44.44.44.44", "192.168.1.1", "255.255.255.0", "255.255.255.192"); + boolean response = connection.createEdgeFirewall(tenantName, + "44.44.44.44", "192.168.1.1", "255.255.255.0", "255.255.255.192"); assertTrue(response); } catch (ExecutionException e) { e.printStackTrace(); @@ -222,7 +226,7 @@ public class CiscoVnmcConnectionTest { @Test public void testListUnassocAsa1000v() { try { - Map<String, String> response = connection.listUnAssocAsa1000v(); + Map<String, String> response = connection.listUnAssocAsa1000v(); assertTrue(response.size() >=0); fwDns = response; } catch (ExecutionException e) { @@ -234,7 +238,7 @@ public class CiscoVnmcConnectionTest { @Test public void assocAsa1000v() { try { - boolean result = connection.assocAsa1000v(tenantName, fwDns.get(0)); + boolean result = connection.assocAsa1000v(tenantName, fwDns.get(0)); assertTrue(result); } catch (ExecutionException e) { // TODO Auto-generated catch block
