diff --git a/api/src/com/cloud/agent/api/SecurityIngressRulesCmd.java b/api/src/com/cloud/agent/api/SecurityIngressRulesCmd.java index 9c2589b97b8..97adc3aa74a 100644 --- a/api/src/com/cloud/agent/api/SecurityIngressRulesCmd.java +++ b/api/src/com/cloud/agent/api/SecurityIngressRulesCmd.java @@ -17,6 +17,8 @@ */ package com.cloud.agent.api; +import org.apache.commons.codec.digest.DigestUtils; + import com.cloud.agent.api.LogLevel.Log4jLevel; @@ -84,6 +86,10 @@ public class SecurityIngressRulesCmd extends Command { this.signature = signature; this.seqNum = seqNum; this.vmId = vmId; + if (signature == null) { + String stringified = stringifyRules(); + this.signature = DigestUtils.md5Hex(stringified); + } } diff --git a/server/src/com/cloud/network/security/SecurityGroupManagerImpl2.java b/server/src/com/cloud/network/security/SecurityGroupManagerImpl2.java index 3df6371f69c..c02783fe0a6 100644 --- a/server/src/com/cloud/network/security/SecurityGroupManagerImpl2.java +++ b/server/src/com/cloud/network/security/SecurityGroupManagerImpl2.java @@ -88,6 +88,7 @@ public class SecurityGroupManagerImpl2 extends SecurityGroupManagerImpl { } Set workItems = new TreeSet(); workItems.addAll(affectedVms); + if (s_logger.isTraceEnabled()) { s_logger.trace("Security Group Mgr v2: scheduling ruleset updates for " + affectedVms.size() + " vms " + " (unique=" + workItems.size() + "), current queue size=" + _workQueue.size()); } @@ -158,11 +159,11 @@ public class SecurityGroupManagerImpl2 extends SecurityGroupManagerImpl { Long agentId = vm.getHostId(); if (agentId != null) { SecurityIngressRulesCmd cmd = generateRulesetCmd(vm.getInstanceName(), vm.getPrivateIpAddress(), - vm.getPrivateMacAddress(), vm.getId(), generateRulesetSignature(rules), + vm.getPrivateMacAddress(), vm.getId(), null, work.getLogsequenceNumber(), rules); if (s_logger.isTraceEnabled()) { s_logger.trace("SecurityGroupManager v2: sending ruleset update for vm " + vm.getInstanceName() + - ": num rules=" + cmd.getRuleSet().length + " num cidrs=" + cmd.getTotalNumCidrs()); + ": num rules=" + cmd.getRuleSet().length + " num cidrs=" + cmd.getTotalNumCidrs() + " sig=" + cmd.getSignature()); } Commands cmds = new Commands(cmd); try {