bug 11336: compression to allow number of cidrs to scale beyond 8k

This commit is contained in:
Chiradeep Vittal 2011-10-06 11:56:34 -07:00
parent dbaf14d9e1
commit 1c5adc7714
3 changed files with 1224 additions and 3 deletions

View File

@ -4762,7 +4762,8 @@ public abstract class CitrixResourceBase implements ServerResource, HypervisorRe
"vmID", Long.toString(cmd.getVmId()),
"signature", cmd.getSignature(),
"seqno", Long.toString(cmd.getSeqNum()),
"rules", cmd.stringifyRules());
"deflated", "true",
"rules", cmd.compressStringifiedRules());
if (result == null || result.isEmpty() || !Boolean.parseBoolean(result)) {
s_logger.warn("Failed to program network rules for vm " + cmd.getVmName());

View File

@ -1,6 +1,6 @@
#!/usr/bin/python
# Version 2.2.8.2011-08-18T08:15:52Z
#
# Version @VERSION@
#
# A plugin for executing script needed by vmops cloud
import os, sys, time
@ -13,6 +13,7 @@ import stat
import tempfile
import util
import subprocess
import zlib
from util import CommandException
def echo(fn):
@ -1015,6 +1016,10 @@ def remove_rule_log_for_vm(vmName):
return result
@echo
def inflate_rules (zipped):
return zlib.decompress(base64.b64decode(zipped))
@echo
def network_rules(session, args):
try:
@ -1023,6 +1028,10 @@ def network_rules(session, args):
vm_id = args.get('vmID')
signature = args.pop('signature')
seqno = args.pop('seqno')
deflated = 'false'
if 'deflated' in args:
deflated = args.pop('deflated')
try:
vm = session.xenapi.VM.get_by_name_label(vm_name)
if len(vm) != 1:
@ -1071,6 +1080,9 @@ def network_rules(session, args):
reason = 'domid_change'
rules = args.pop('rules')
if deflated.lower() == 'true':
rules = inflate_rules (rules)
lines = rules.split(' ')
util.SMlog("Programming network rules for vm %s seqno=%s numrules=%s signature=%s guestIp=%s,"\

File diff suppressed because it is too large Load Diff