X-Git-Url: https://code.grnet.gr/git/ganeti-local/blobdiff_plain/efb8da026075374e806374127046a53dc87cf55d..2d6db53aea63533829fa60ae30c574bcdb7fad3b:/lib/opcodes.py diff --git a/lib/opcodes.py b/lib/opcodes.py index 77497fc..a08549c 100644 --- a/lib/opcodes.py +++ b/lib/opcodes.py @@ -170,6 +170,17 @@ class OpCode(BaseOpCode): # cluster opcodes +class OpPostInitCluster(OpCode): + """Post cluster initialization. + + This opcode does not touch the cluster at all. Its purpose is to run hooks + after the cluster has been initialized. + + """ + OP_ID = "OP_CLUSTER_POST_INIT" + __slots__ = OpCode.__slots__ + [] + + class OpDestroyCluster(OpCode): """Destroy the cluster. @@ -226,6 +237,26 @@ class OpVerifyDisks(OpCode): __slots__ = OpCode.__slots__ + [] +class OpRepairDiskSizes(OpCode): + """Verify the disk sizes of the instances and fixes configuration + mimatches. + + Parameters: optional instances list, in case we want to restrict the + checks to only a subset of the instances. + + Result: a list of tuples, (instance, disk, new-size) for changed + configurations. + + In normal operation, the list should be empty. + + @type instances: list + @ivar instances: the list of instances to check, or empty for all instances + + """ + OP_ID = "OP_CLUSTER_REPAIR_DISK_SIZES" + __slots__ = ["instances"] + + class OpQueryConfigValues(OpCode): """Query cluster configuration values.""" OP_ID = "OP_CLUSTER_CONFIG_QUERY" @@ -350,6 +381,17 @@ class OpModifyNodeStorage(OpCode): ] +class OpRepairNodeStorage(OpCode): + """Repairs the volume group on a node.""" + OP_ID = "OP_REPAIR_NODE_STORAGE" + OP_DSC_FIELD = "node_name" + __slots__ = OpCode.__slots__ + [ + "node_name", + "storage_type", + "name", + ] + + class OpSetNodeParams(OpCode): """Change the parameters of a node.""" OP_ID = "OP_NODE_SET_PARAMS" @@ -499,7 +541,7 @@ class OpActivateInstanceDisks(OpCode): """Activate an instance's disks.""" OP_ID = "OP_INSTANCE_ACTIVATE_DISKS" OP_DSC_FIELD = "instance_name" - __slots__ = OpCode.__slots__ + ["instance_name"] + __slots__ = OpCode.__slots__ + ["instance_name", "ignore_size"] class OpDeactivateInstanceDisks(OpCode): @@ -509,6 +551,13 @@ class OpDeactivateInstanceDisks(OpCode): __slots__ = OpCode.__slots__ + ["instance_name"] +class OpRecreateInstanceDisks(OpCode): + """Deactivate an instance's disks.""" + OP_ID = "OP_INSTANCE_RECREATE_DISKS" + OP_DSC_FIELD = "instance_name" + __slots__ = OpCode.__slots__ + ["instance_name", "disks"] + + class OpQueryInstances(OpCode): """Compute the list of instances.""" OP_ID = "OP_INSTANCE_QUERY" @@ -642,6 +691,7 @@ class OpTestAllocator(OpCode): "os", "tags", "nics", "vcpus", "hypervisor", ] + OP_MAPPING = dict([(v.OP_ID, v) for v in globals().values() if (isinstance(v, type) and issubclass(v, OpCode) and hasattr(v, "OP_ID"))])