def handle(self, namespace): m=re.match("(?P<key>\w+)=(?P<value>.+)", namespace.keyvalue) if m: key=m.group('key').lower() value=m.group('value').lower() else: key=namespace.keyvalue.lower() value='' keyid=checkKey(key) for host in namespace.host: hostid=getHost(host) if not hostid: raise HostinfoException("Unknown host: %s" % host) if value: kvlist=KeyValue.objects.filter(hostid=hostid, keyid=keyid, value=value) else: kvlist=KeyValue.objects.filter(hostid=hostid, keyid=keyid) if not kvlist: raise HostinfoException("Host %s doesn't have key %s" % (host, key)) else: for kv in kvlist: try: kv.delete(readonlychange=namespace.readonlyupdate) except ReadonlyValueException: raise HostinfoException("Cannot delete a readonly value") return None,0
def handle(self, namespace): m=re.match("(?P<key>\w+)=(?P<value>.+)", namespace.keyvalue[0]) if not m: raise HostinfoException("Must be specified in key=value format, not %s" % namespace.keyvalue[0]) key=m.group('key').lower() value=m.group('value').lower() keyid=checkKey(key) if not namespace.hosts and not namespace.all: raise HostinfoException("Must specify a list of hosts or the --all flag") kvlist=KeyValue.objects.filter(keyid=keyid, value=value) for kv in kvlist: if (namespace.hosts and kv.hostid.hostname in namespace.hosts) or not namespace.hosts: if not namespace.kidding: kv.value=namespace.newvalue[0] kv.save() else: sys.stderr.write("Would replace %s=%s with %s on %s\n" % (kv.keyid, kv.value, namespace.newvalue[0], kv.hostid)) return None,0