CLOUDSTACK-2585: Failed to apply new PF rules after deleting the existing PF Rule with Cisco VNMC Provider

Each rule created in VNMC under a policy object needs to have an unique order value. Rules are evaluated based on this value.
Eariler order was computed based on the rule count under a policy object. This resulted in duplicate order value when rules get
deleted and recreated. Changed the logic to compute order based on the CS db id of the rule which is unique.
This commit is contained in:
Koushik Das 2013-05-22 14:49:48 +05:30
parent 5d3e6bd397
commit 83f84adda2
4 changed files with 77 additions and 99 deletions

View File

@ -74,16 +74,16 @@ public interface CiscoVnmcConnection {
String ipAddress) throws ExecutionException;
public boolean createTenantVDCDNatRule(String tenantName,
String identifier, String policyIdentifier,
long ruleId, String policyIdentifier,
String publicIp)
throws ExecutionException;
public boolean deleteTenantVDCDNatRule(String tenantName,
String identifier, String policyIdentifier)
long ruleId, String policyIdentifier)
throws ExecutionException;
public boolean createTenantVDCAclRuleForDNat(String tenantName,
String identifier, String policyIdentifier,
long ruleId, String policyIdentifier,
String ipAddress)
throws ExecutionException;
@ -104,17 +104,17 @@ public interface CiscoVnmcConnection {
String ipAddress) throws ExecutionException;
public boolean createTenantVDCPFRule(String tenantName,
String identifier, String policyIdentifier,
long ruleId, String policyIdentifier,
String protocol, String publicIp,
String startPort, String endPort)
throws ExecutionException;
public boolean deleteTenantVDCPFRule(String tenantName,
String identifier, String policyIdentifier)
long ruleId, String policyIdentifier)
throws ExecutionException;
public boolean createTenantVDCAclRuleForPF(String tenantName,
String identifier, String policyIdentifier,
long ruleId, String policyIdentifier,
String protocol, String ipAddress,
String startPort, String endPort)
throws ExecutionException;
@ -138,29 +138,29 @@ public interface CiscoVnmcConnection {
throws ExecutionException;
public boolean createTenantVDCIngressAclRule(String tenantName,
String identifier, String policyIdentifier,
long ruleId, String policyIdentifier,
String protocol, String sourceStartIp, String sourceEndIp,
String destStartPort, String destEndPort)
throws ExecutionException;
public boolean createTenantVDCIngressAclRule(String tenantName,
String identifier, String policyIdentifier,
long ruleId, String policyIdentifier,
String protocol, String sourceStartIp, String sourceEndIp)
throws ExecutionException;
public boolean createTenantVDCEgressAclRule(String tenantName,
String identifier, String policyIdentifier,
long ruleId, String policyIdentifier,
String protocol, String sourceStartIp, String sourceEndIp,
String destStartPort, String destEndPort)
throws ExecutionException;
public boolean createTenantVDCEgressAclRule(String tenantName,
String identifier, String policyIdentifier,
long ruleId, String policyIdentifier,
String protocol, String sourceStartIp, String sourceEndIp)
throws ExecutionException;
public boolean deleteTenantVDCAclRule(String tenantName,
String identifier, String policyIdentifier) throws ExecutionException;
long ruleId, String policyIdentifier) throws ExecutionException;
public boolean createTenantVDCAclPolicy(String tenantName,
String identifier) throws ExecutionException;

View File

@ -490,12 +490,8 @@ public class CiscoVnmcConnectionImpl implements CiscoVnmcConnection {
xml = replaceXmlValue(xml, "srcendip", endSourceIp);
xml = replaceXmlValue(xml, "ippoolname", getNameForSourceNatIpPool(tenantName));
List<String> rules = listChildren(getDnForSourceNatPolicy(tenantName));
int order = 100;
if (rules != null) {
order += rules.size();
}
xml = replaceXmlValue(xml, "order", Integer.toString(order));
long order = 100;
xml = replaceXmlValue(xml, "order", Long.toString(order));
String response = sendRequest(service, xml);
return verifySuccess(response);
@ -671,12 +667,13 @@ public class CiscoVnmcConnectionImpl implements CiscoVnmcConnection {
@Override
public boolean createTenantVDCIngressAclRule(String tenantName,
String identifier, String policyIdentifier,
long ruleId, String policyIdentifier,
String protocol, String sourceStartIp, String sourceEndIp,
String destStartPort, String destEndPort) throws ExecutionException {
String xml = VnmcXml.CREATE_INGRESS_ACL_RULE.getXml();
String service = VnmcXml.CREATE_INGRESS_ACL_RULE.getService();
String identifier = Long.toString(ruleId);
xml = replaceXmlValue(xml, "cookie", _cookie);
xml = replaceXmlValue(xml, "aclruledn", getDnForAclRule(tenantName, identifier, policyIdentifier));
xml = replaceXmlValue(xml, "aclrulename", getNameForAclRule(tenantName, identifier));
@ -688,12 +685,8 @@ public class CiscoVnmcConnectionImpl implements CiscoVnmcConnection {
xml = replaceXmlValue(xml, "deststartport", destStartPort);
xml = replaceXmlValue(xml, "destendport", destEndPort);
List<String> rules = listChildren(getDnForAclPolicy(tenantName, policyIdentifier));
int order = 100;
if (rules != null) {
order += rules.size();
}
xml = replaceXmlValue(xml, "order", Integer.toString(order));
long order = 100 + ruleId;
xml = replaceXmlValue(xml, "order", Long.toString(order));
String response = sendRequest(service, xml);
return verifySuccess(response);
@ -701,11 +694,12 @@ public class CiscoVnmcConnectionImpl implements CiscoVnmcConnection {
@Override
public boolean createTenantVDCIngressAclRule(String tenantName,
String identifier, String policyIdentifier,
long ruleId, String policyIdentifier,
String protocol, String sourceStartIp, String sourceEndIp) throws ExecutionException {
String xml = VnmcXml.CREATE_GENERIC_INGRESS_ACL_RULE.getXml();
String service = VnmcXml.CREATE_GENERIC_INGRESS_ACL_RULE.getService();
String identifier = Long.toString(ruleId);
xml = replaceXmlValue(xml, "cookie", _cookie);
xml = replaceXmlValue(xml, "aclruledn", getDnForAclRule(tenantName, identifier, policyIdentifier));
xml = replaceXmlValue(xml, "aclrulename", getNameForAclRule(tenantName, identifier));
@ -715,12 +709,8 @@ public class CiscoVnmcConnectionImpl implements CiscoVnmcConnection {
xml = replaceXmlValue(xml, "sourcestartip", sourceStartIp);
xml = replaceXmlValue(xml, "sourceendip", sourceEndIp);
List<String> rules = listChildren(getDnForAclPolicy(tenantName, policyIdentifier));
int order = 100;
if (rules != null) {
order += rules.size();
}
xml = replaceXmlValue(xml, "order", Integer.toString(order));
long order = 100 + ruleId;
xml = replaceXmlValue(xml, "order", Long.toString(order));
String response = sendRequest(service, xml);
return verifySuccess(response);
@ -728,12 +718,13 @@ public class CiscoVnmcConnectionImpl implements CiscoVnmcConnection {
@Override
public boolean createTenantVDCEgressAclRule(String tenantName,
String identifier, String policyIdentifier,
long ruleId, String policyIdentifier,
String protocol, String sourceStartIp, String sourceEndIp,
String destStartPort, String destEndPort) throws ExecutionException {
String xml = VnmcXml.CREATE_EGRESS_ACL_RULE.getXml();
String service = VnmcXml.CREATE_EGRESS_ACL_RULE.getService();
String identifier = Long.toString(ruleId);
xml = replaceXmlValue(xml, "cookie", _cookie);
xml = replaceXmlValue(xml, "aclruledn", getDnForAclRule(tenantName, identifier, policyIdentifier));
xml = replaceXmlValue(xml, "aclrulename", getNameForAclRule(tenantName, identifier));
@ -745,12 +736,8 @@ public class CiscoVnmcConnectionImpl implements CiscoVnmcConnection {
xml = replaceXmlValue(xml, "deststartport", destStartPort);
xml = replaceXmlValue(xml, "destendport", destEndPort);
List<String> rules = listChildren(getDnForAclPolicy(tenantName, policyIdentifier));
int order = 100;
if (rules != null) {
order += rules.size();
}
xml = replaceXmlValue(xml, "order", Integer.toString(order));
long order = 100 + ruleId;
xml = replaceXmlValue(xml, "order", Long.toString(order));
String response = sendRequest(service, xml);
return verifySuccess(response);
@ -758,7 +745,7 @@ public class CiscoVnmcConnectionImpl implements CiscoVnmcConnection {
@Override
public boolean createTenantVDCEgressAclRule(String tenantName,
String identifier, String policyIdentifier,
long ruleId, String policyIdentifier,
String protocol, String sourceStartIp, String sourceEndIp) throws ExecutionException {
String xml = VnmcXml.CREATE_GENERIC_EGRESS_ACL_RULE.getXml();
String service = VnmcXml.CREATE_GENERIC_EGRESS_ACL_RULE.getService();
@ -768,6 +755,8 @@ public class CiscoVnmcConnectionImpl implements CiscoVnmcConnection {
} else { // specific protocol
xml = replaceXmlValue(xml, "protocolvalue", protocol);
}
String identifier = Long.toString(ruleId);
xml = replaceXmlValue(xml, "cookie", _cookie);
xml = replaceXmlValue(xml, "aclruledn", getDnForAclRule(tenantName, identifier, policyIdentifier));
xml = replaceXmlValue(xml, "aclrulename", getNameForAclRule(tenantName, identifier));
@ -776,19 +765,16 @@ public class CiscoVnmcConnectionImpl implements CiscoVnmcConnection {
xml = replaceXmlValue(xml, "sourcestartip", sourceStartIp);
xml = replaceXmlValue(xml, "sourceendip", sourceEndIp);
List<String> rules = listChildren(getDnForAclPolicy(tenantName, policyIdentifier));
int order = 100;
if (rules != null) {
order += rules.size();
}
xml = replaceXmlValue(xml, "order", Integer.toString(order));
long order = 100 + ruleId;
xml = replaceXmlValue(xml, "order", Long.toString(order));
String response = sendRequest(service, xml);
return verifySuccess(response);
}
@Override
public boolean deleteTenantVDCAclRule(String tenantName, String identifier, String policyIdentifier) throws ExecutionException {
public boolean deleteTenantVDCAclRule(String tenantName, long ruleId, String policyIdentifier) throws ExecutionException {
String identifier = Long.toString(ruleId);
return deleteTenantVDCRule(
getDnForAclRule(tenantName, identifier, policyIdentifier),
getNameForAclRule(tenantName, identifier));
@ -1001,11 +987,13 @@ public class CiscoVnmcConnectionImpl implements CiscoVnmcConnection {
@Override
public boolean createTenantVDCPFRule(String tenantName,
String identifier, String policyIdentifier,
long ruleId, String policyIdentifier,
String protocol, String publicIp,
String startPort, String endPort) throws ExecutionException {
String xml = VnmcXml.CREATE_PF_RULE.getXml();
String service = VnmcXml.CREATE_PF_RULE.getService();
String identifier = Long.toString(ruleId);
xml = replaceXmlValue(xml, "cookie", _cookie);
xml = replaceXmlValue(xml, "natruledn", getDnForPFRule(tenantName, identifier, policyIdentifier));
xml = replaceXmlValue(xml, "natrulename", getNameForPFRule(tenantName, identifier));
@ -1017,20 +1005,16 @@ public class CiscoVnmcConnectionImpl implements CiscoVnmcConnection {
xml = replaceXmlValue(xml, "endport", endPort);
xml = replaceXmlValue(xml, "protocolvalue", protocol);
List<String> rules = listChildren(getDnForPFPolicy(tenantName, policyIdentifier));
int order = 100;
if (rules != null) {
order += rules.size();
}
xml = replaceXmlValue(xml, "order", Integer.toString(order));
long order = 100 + ruleId;
xml = replaceXmlValue(xml, "order", Long.toString(order));
String response = sendRequest(service, xml);
return verifySuccess(response);
}
@Override
public boolean deleteTenantVDCPFRule(String tenantName, String identifier,
String policyIdentifier) throws ExecutionException {
public boolean deleteTenantVDCPFRule(String tenantName, long ruleId, String policyIdentifier) throws ExecutionException {
String identifier = Long.toString(ruleId);
return deleteTenantVDCRule(
getDnForPFRule(tenantName, identifier, policyIdentifier),
getNameForPFRule(tenantName, identifier));
@ -1038,11 +1022,13 @@ public class CiscoVnmcConnectionImpl implements CiscoVnmcConnection {
@Override
public boolean createTenantVDCAclRuleForPF(String tenantName,
String identifier, String policyIdentifier, String protocol,
long ruleId, String policyIdentifier, String protocol,
String ipAddress, String startPort, String endPort)
throws ExecutionException {
String xml = VnmcXml.CREATE_ACL_RULE_FOR_PF.getXml();
String service = VnmcXml.CREATE_ACL_RULE_FOR_PF.getService();
String identifier = Long.toString(ruleId);
xml = replaceXmlValue(xml, "cookie", _cookie);
xml = replaceXmlValue(xml, "aclruledn", getDnForAclRule(tenantName, identifier, policyIdentifier));
xml = replaceXmlValue(xml, "aclrulename", getNameForAclRule(tenantName, identifier));
@ -1053,12 +1039,8 @@ public class CiscoVnmcConnectionImpl implements CiscoVnmcConnection {
xml = replaceXmlValue(xml, "startport", startPort);
xml = replaceXmlValue(xml, "endport", endPort);
List<String> rules = listChildren(getDnForAclPolicy(tenantName, policyIdentifier));
int order = 100;
if (rules != null) {
order += rules.size();
}
xml = replaceXmlValue(xml, "order", Integer.toString(order));
long order = 100 + ruleId;
xml = replaceXmlValue(xml, "order", Long.toString(order));
String response = sendRequest(service, xml);
return verifySuccess(response);
@ -1127,10 +1109,12 @@ public class CiscoVnmcConnectionImpl implements CiscoVnmcConnection {
@Override
public boolean createTenantVDCDNatRule(String tenantName,
String identifier, String policyIdentifier, String publicIp)
long ruleId, String policyIdentifier, String publicIp)
throws ExecutionException {
String xml = VnmcXml.CREATE_DNAT_RULE.getXml();
String service = VnmcXml.CREATE_DNAT_RULE.getService();
String identifier = Long.toString(ruleId);
xml = replaceXmlValue(xml, "cookie", _cookie);
xml = replaceXmlValue(xml, "natruledn", getDnForDNatRule(tenantName, identifier, policyIdentifier));
xml = replaceXmlValue(xml, "natrulename", getNameForDNatRule(tenantName, identifier));
@ -1138,21 +1122,17 @@ public class CiscoVnmcConnectionImpl implements CiscoVnmcConnection {
xml = replaceXmlValue(xml, "ippoolname", getNameForDNatIpPool(tenantName, identifier));
xml = replaceXmlValue(xml, "ip", publicIp);
List<String> rules = listChildren(getDnForDNatPolicy(tenantName, policyIdentifier));
int order = 100;
if (rules != null) {
order += rules.size();
}
xml = replaceXmlValue(xml, "order", Integer.toString(order));
long order = 100 + ruleId;
xml = replaceXmlValue(xml, "order", Long.toString(order));
String response = sendRequest(service, xml);
return verifySuccess(response);
}
@Override
public boolean deleteTenantVDCDNatRule(String tenantName,
String identifier, String policyIdentifier)
public boolean deleteTenantVDCDNatRule(String tenantName, long ruleId, String policyIdentifier)
throws ExecutionException {
String identifier = Long.toString(ruleId);
return deleteTenantVDCRule(
getDnForDNatRule(tenantName, identifier, policyIdentifier),
getNameForDNatRule(tenantName, identifier));
@ -1160,10 +1140,12 @@ public class CiscoVnmcConnectionImpl implements CiscoVnmcConnection {
@Override
public boolean createTenantVDCAclRuleForDNat(String tenantName,
String identifier, String policyIdentifier, String ipAddress)
long ruleId, String policyIdentifier, String ipAddress)
throws ExecutionException {
String xml = VnmcXml.CREATE_ACL_RULE_FOR_DNAT.getXml();
String service = VnmcXml.CREATE_ACL_RULE_FOR_DNAT.getService();
String identifier = Long.toString(ruleId);
xml = replaceXmlValue(xml, "cookie", _cookie);
xml = replaceXmlValue(xml, "aclruledn", getDnForAclRule(tenantName, identifier, policyIdentifier));
xml = replaceXmlValue(xml, "aclrulename", getNameForAclRule(tenantName, identifier));
@ -1171,12 +1153,8 @@ public class CiscoVnmcConnectionImpl implements CiscoVnmcConnection {
xml = replaceXmlValue(xml, "actiontype", "permit");
xml = replaceXmlValue(xml, "ip", ipAddress);
List<String> rules = listChildren(getDnForAclPolicy(tenantName, policyIdentifier));
int order = 100;
if (rules != null) {
order += rules.size();
}
xml = replaceXmlValue(xml, "order", Integer.toString(order));
long order = 100 + ruleId;
xml = replaceXmlValue(xml, "order", Long.toString(order));
String response = sendRequest(service, xml);
return verifySuccess(response);

View File

@ -174,7 +174,7 @@ public class CiscoVnmcResource implements ServerResource {
cmd.setPod("");
cmd.setPrivateIpAddress(_ip);
cmd.setStorageIpAddress("");
cmd.setVersion("");
cmd.setVersion(CiscoVnmcResource.class.getPackage().getImplementationVersion());
cmd.setGuid(_guid);
return new StartupCommand[] { cmd };
}
@ -359,7 +359,7 @@ public class CiscoVnmcResource implements ServerResource {
for (FirewallRuleTO rule : publicIpRulesMap.get(publicIp)) {
if (rule.revoked()) {
if (!_connection.deleteTenantVDCAclRule(tenant, Long.toString(rule.getId()), policyIdentifier)) {
if (!_connection.deleteTenantVDCAclRule(tenant, rule.getId(), policyIdentifier)) {
throw new ExecutionException("Failed to delete ACL rule in VNMC for guest network with vlan " + vlanId);
}
} else {
@ -368,14 +368,14 @@ public class CiscoVnmcResource implements ServerResource {
if (!rule.getProtocol().equalsIgnoreCase("icmp")
&& rule.getSrcPortRange() != null) {
if (!_connection.createTenantVDCIngressAclRule(tenant,
Long.toString(rule.getId()), policyIdentifier,
rule.getId(), policyIdentifier,
rule.getProtocol().toUpperCase(), externalIpRange[0], externalIpRange[1],
Integer.toString(rule.getSrcPortRange()[0]), Integer.toString(rule.getSrcPortRange()[1]))) {
throw new ExecutionException("Failed to create ACL ingress rule in VNMC for guest network with vlan " + vlanId);
}
} else {
if (!_connection.createTenantVDCIngressAclRule(tenant,
Long.toString(rule.getId()), policyIdentifier,
rule.getId(), policyIdentifier,
rule.getProtocol().toUpperCase(), externalIpRange[0], externalIpRange[1])) {
throw new ExecutionException("Failed to create ACL ingress rule in VNMC for guest network with vlan " + vlanId);
}
@ -384,7 +384,7 @@ public class CiscoVnmcResource implements ServerResource {
if ((rule.getProtocol().equalsIgnoreCase("tcp") || rule.getProtocol().equalsIgnoreCase("udp"))
&& rule.getSrcPortRange() != null) {
if (!_connection.createTenantVDCEgressAclRule(tenant,
Long.toString(rule.getId()), policyIdentifier,
rule.getId(), policyIdentifier,
rule.getProtocol().toUpperCase(),
externalIpRange[0], externalIpRange[1],
Integer.toString(rule.getSrcPortRange()[0]), Integer.toString(rule.getSrcPortRange()[1]))) {
@ -392,7 +392,7 @@ public class CiscoVnmcResource implements ServerResource {
}
} else {
if (!_connection.createTenantVDCEgressAclRule(tenant,
Long.toString(rule.getId()), policyIdentifier,
rule.getId(), policyIdentifier,
rule.getProtocol().toUpperCase(), externalIpRange[0], externalIpRange[1])) {
throw new ExecutionException("Failed to create ACL egress rule in VNMC for guest network with vlan " + vlanId);
}
@ -472,7 +472,7 @@ public class CiscoVnmcResource implements ServerResource {
for (StaticNatRuleTO rule : publicIpRulesMap.get(publicIp)) {
if (rule.revoked()) {
if (!_connection.deleteTenantVDCDNatRule(tenant, Long.toString(rule.getId()), policyIdentifier)) {
if (!_connection.deleteTenantVDCDNatRule(tenant, rule.getId(), policyIdentifier)) {
throw new ExecutionException("Failed to delete DNAT rule in VNMC for guest network with vlan " + vlanId);
}
} else {
@ -481,7 +481,7 @@ public class CiscoVnmcResource implements ServerResource {
}
if (!_connection.createTenantVDCDNatRule(tenant,
Long.toString(rule.getId()), policyIdentifier, rule.getSrcIp())) {
rule.getId(), policyIdentifier, rule.getSrcIp())) {
throw new ExecutionException("Failed to create DNAT rule in VNMC for guest network with vlan " + vlanId);
}
}
@ -558,7 +558,7 @@ public class CiscoVnmcResource implements ServerResource {
for (PortForwardingRuleTO rule : publicIpRulesMap.get(publicIp)) {
if (rule.revoked()) {
if (!_connection.deleteTenantVDCPFRule(tenant, Long.toString(rule.getId()), policyIdentifier)) {
if (!_connection.deleteTenantVDCPFRule(tenant, rule.getId(), policyIdentifier)) {
throw new ExecutionException("Failed to delete PF rule in VNMC for guest network with vlan " + vlanId);
}
} else {
@ -571,7 +571,7 @@ public class CiscoVnmcResource implements ServerResource {
}
if (!_connection.createTenantVDCPFRule(tenant,
Long.toString(rule.getId()), policyIdentifier,
rule.getId(), policyIdentifier,
rule.getProtocol().toUpperCase(), rule.getSrcIp(),
Integer.toString(rule.getSrcPortRange()[0]), Integer.toString(rule.getSrcPortRange()[1]))) {
throw new ExecutionException("Failed to create PF rule in VNMC for guest network with vlan " + vlanId);

View File

@ -163,13 +163,13 @@ public class CiscoVnmcResourceTest {
when(_connection.createTenantVDCAclPolicySet(anyString(), anyBoolean())).thenReturn(true);
when(_connection.createTenantVDCAclPolicy(anyString(), anyString())).thenReturn(true);
when(_connection.createTenantVDCAclPolicyRef(anyString(), anyString(), anyBoolean())).thenReturn(true);
when(_connection.deleteTenantVDCAclRule(anyString(), anyString(), anyString())).thenReturn(true);
when(_connection.deleteTenantVDCAclRule(anyString(), anyLong(), anyString())).thenReturn(true);
when(_connection.createTenantVDCIngressAclRule(
anyString(), anyString(), anyString(),
anyString(), anyLong(), anyString(),
anyString(), anyString(), anyString(),
anyString(), anyString())).thenReturn(true);
when(_connection.createTenantVDCEgressAclRule(
anyString(), anyString(), anyString(),
anyString(), anyLong(), anyString(),
anyString(), anyString(), anyString(),
anyString(), anyString())).thenReturn(true);
when(_connection.associateAclPolicySet(anyString())).thenReturn(true);
@ -201,13 +201,13 @@ public class CiscoVnmcResourceTest {
when(_connection.createTenantVDCDNatPolicyRef(anyString(), anyString())).thenReturn(true);
when(_connection.createTenantVDCAclPolicy(anyString(), anyString())).thenReturn(true);
when(_connection.createTenantVDCAclPolicyRef(anyString(), anyString(), anyBoolean())).thenReturn(true);
when(_connection.deleteTenantVDCDNatRule(anyString(), anyString(), anyString())).thenReturn(true);
when(_connection.deleteTenantVDCAclRule(anyString(), anyString(), anyString())).thenReturn(true);
when(_connection.deleteTenantVDCDNatRule(anyString(), anyLong(), anyString())).thenReturn(true);
when(_connection.deleteTenantVDCAclRule(anyString(), anyLong(), anyString())).thenReturn(true);
when(_connection.createTenantVDCDNatIpPool(anyString(), anyString(), anyString())).thenReturn(true);
when(_connection.createTenantVDCDNatRule(anyString(),
anyString(), anyString(), anyString())).thenReturn(true);
anyLong(), anyString(), anyString())).thenReturn(true);
when(_connection.createTenantVDCAclRuleForDNat(anyString(),
anyString(), anyString(), anyString())).thenReturn(true);
anyLong(), anyString(), anyString())).thenReturn(true);
when(_connection.associateAclPolicySet(anyString())).thenReturn(true);
Answer answer = _resource.executeRequest(cmd);
@ -237,15 +237,15 @@ public class CiscoVnmcResourceTest {
when(_connection.createTenantVDCPFPolicyRef(anyString(), anyString())).thenReturn(true);
when(_connection.createTenantVDCAclPolicy(anyString(), anyString())).thenReturn(true);
when(_connection.createTenantVDCAclPolicyRef(anyString(), anyString(), anyBoolean())).thenReturn(true);
when(_connection.deleteTenantVDCPFRule(anyString(), anyString(), anyString())).thenReturn(true);
when(_connection.deleteTenantVDCAclRule(anyString(), anyString(), anyString())).thenReturn(true);
when(_connection.deleteTenantVDCPFRule(anyString(), anyLong(), anyString())).thenReturn(true);
when(_connection.deleteTenantVDCAclRule(anyString(), anyLong(), anyString())).thenReturn(true);
when(_connection.createTenantVDCPFIpPool(anyString(), anyString(), anyString())).thenReturn(true);
when(_connection.createTenantVDCPFPortPool(anyString(), anyString(), anyString(), anyString())).thenReturn(true);
when(_connection.createTenantVDCPFRule(anyString(),
anyString(), anyString(), anyString(),
anyLong(), anyString(), anyString(),
anyString(), anyString(), anyString())).thenReturn(true);
when(_connection.createTenantVDCAclRuleForPF(anyString(),
anyString(), anyString(), anyString(),
anyLong(), anyString(), anyString(),
anyString(), anyString(), anyString())).thenReturn(true);
when(_connection.associateAclPolicySet(anyString())).thenReturn(true);