diff --git a/agent-simulator/src/com/cloud/agent/manager/MockVmManagerImpl.java b/agent-simulator/src/com/cloud/agent/manager/MockVmManagerImpl.java index 21a9cb1f5b3..023bd399b44 100644 --- a/agent-simulator/src/com/cloud/agent/manager/MockVmManagerImpl.java +++ b/agent-simulator/src/com/cloud/agent/manager/MockVmManagerImpl.java @@ -78,7 +78,7 @@ public class MockVmManagerImpl implements MockVmManager { @Inject MockAgentManager _mockAgentMgr = null; @Inject MockHostDao _mockHostDao = null; @Inject MockSecurityRulesDao _mockSecurityDao = null; - private Map>> _securityRules = new ConcurrentHashMap>>(); + private Map>> _securityRules = new ConcurrentHashMap>>(); public MockVmManagerImpl() { } @@ -357,25 +357,27 @@ public class MockVmManagerImpl implements MockVmManager { @Override public SecurityIngressRuleAnswer AddSecurityIngressRules(SecurityIngressRulesCmd cmd, String hostGuid) { - logSecurityGroupAction(cmd); - List> rules = _securityRules.get(hostGuid); + + Map> rules = _securityRules.get(hostGuid); + if (rules == null) { - rules = new ArrayList>(); - rules.add(new Ternary(cmd.getVmName(), cmd.getVmId(), cmd.getSeqNum())); + logSecurityGroupAction(cmd, null); + rules = new ConcurrentHashMap>(); + rules.put(cmd.getVmName(), new Ternary(cmd.getSignature(), cmd.getVmId(), cmd.getSeqNum())); _securityRules.put(hostGuid, rules); } else { - rules.add(new Ternary(cmd.getVmName(), cmd.getVmId(), cmd.getSeqNum())); + logSecurityGroupAction(cmd, rules.get(cmd.getVmName())); + rules.put(cmd.getVmName(), new Ternary(cmd.getSignature(), cmd.getVmId(), cmd.getSeqNum())); } return new SecurityIngressRuleAnswer(cmd); } - private boolean logSecurityGroupAction(SecurityIngressRulesCmd cmd) { + private boolean logSecurityGroupAction(SecurityIngressRulesCmd cmd, Ternary rule) { String action = ", do nothing"; String reason = ", reason="; - MockSecurityRulesVO rule = _mockSecurityDao.findByVmId(cmd.getVmId()); - Long currSeqnum = rule == null? null: rule.getSeqNum(); - String currSig = rule == null? null: rule.getSignature(); + Long currSeqnum = rule == null? null: rule.third(); + String currSig = rule == null? null: rule.first(); boolean updateSeqnoAndSig = false; if (currSeqnum != null) { if (cmd.getSeqNum() > currSeqnum) { @@ -429,12 +431,12 @@ public class MockVmManagerImpl implements MockVmManager { public HashMap> syncNetworkGroups(String hostGuid) { HashMap> maps = new HashMap>(); - List> rules = _securityRules.get(hostGuid); + Map> rules = _securityRules.get(hostGuid); if (rules == null) { return maps; } - for (Ternary rule : rules) { - maps.put(rule.first(), new Pair(rule.second(), rule.third())); + for (Map.Entry> rule : rules.entrySet()) { + maps.put(rule.getKey(), new Pair(rule.getValue().second(), rule.getValue().third())); } return maps; }