Exemple #1
0
def change_type(sysadmin, key, newtype):
    existing = sysadmin.get(key)
    if existing.status == sysadminctl_pb2.KEY_NOT_FOUND:
        print("Key {} must exist to have it's type changed".format(key))
        return
    oldtype = str(existing.get.kvs[0].value.WhichOneof("value"))
    value = UnpackFromProto(existing.get.kvs[0].value)
    if "list" in oldtype and "list" not in newtype:
        if len(getattr(existing.get.kvs[0].value, oldtype).list) > 1:
            print("Can't type convert a list larger than one element")
            return
        value = value[0]
    # sysadmin's type system requires that we remove the old value
    # completely before being able to set it with a new type
    cloneClient = SysAdminClient(sysadmin.ip, sysadmin.port, 10)
    cloneClient.erase(key)
    cloneClient.commit(sysadminctl_pb2.NO_HOOKS)
    sysadmin.set(key, value, newtype)
Exemple #2
0
 def test_erase(self):
     client = SysAdminClient("127.0.0.1", 4000)
     client.set("wireless.wl0.psk", "password")
     client.set("wireless.wl0.channel", 40)
     client.set("wireless.wl0.enabled", True)
     client.set("wireless.wl0.frequencies", [1, 2, 3])
     client.commit()
     self.assertEqual(
         "password",
         UnpackFromProto(client.get("wireless.wl0.psk").get.kvs[0].value))
     client.erase("wireless.wl0.psk")
     self.assertEqual(
         "password",
         UnpackFromProto(client.get("wireless.wl0.psk").get.kvs[0].value))
     client.erase("not.a.key")
     client.commit()
     self.assertEqual(sysadminctl_pb2.KEY_NOT_FOUND,
                      client.get("wireless.wl0.psk").status)