- return self._MultiNodeCall(node_list, "lv_list", [vg_name])
-
- @_RpcTimeout(_TMO_URGENT)
- def call_vg_list(self, node_list):
- """Gets the volume group list.
-
- This is a multi-node call.
-
- """
- return self._MultiNodeCall(node_list, "vg_list", [])
-
- @_RpcTimeout(_TMO_NORMAL)
- def call_storage_list(self, node_list, su_name, su_args, name, fields):
- """Get list of storage units.
-
- This is a multi-node call.
-
- """
- return self._MultiNodeCall(node_list, "storage_list",
- [su_name, su_args, name, fields])
-
- @_RpcTimeout(_TMO_NORMAL)
- def call_storage_modify(self, node, su_name, su_args, name, changes):
- """Modify a storage unit.
-
- This is a single-node call.
-
- """
- return self._SingleNodeCall(node, "storage_modify",
- [su_name, su_args, name, changes])
-
- @_RpcTimeout(_TMO_NORMAL)
- def call_storage_execute(self, node, su_name, su_args, name, op):
- """Executes an operation on a storage unit.
-
- This is a single-node call.
-
- """
- return self._SingleNodeCall(node, "storage_execute",
- [su_name, su_args, name, op])
-
- @_RpcTimeout(_TMO_URGENT)
- def call_bridges_exist(self, node, bridges_list):
- """Checks if a node has all the bridges given.
-
- This method checks if all bridges given in the bridges_list are
- present on the remote node, so that an instance that uses interfaces
- on those bridges can be started.
-
- This is a single-node call.
-
- """
- return self._SingleNodeCall(node, "bridges_exist", [bridges_list])
-
- @_RpcTimeout(_TMO_NORMAL)
- def call_instance_start(self, node, instance, hvp, bep, startup_paused):
- """Starts an instance.
-
- This is a single-node call.
-
- """
- idict = self._InstDict(instance, hvp=hvp, bep=bep)
- return self._SingleNodeCall(node, "instance_start", [idict, startup_paused])
-
- @_RpcTimeout(_TMO_NORMAL)
- def call_instance_shutdown(self, node, instance, timeout):
- """Stops an instance.
-
- This is a single-node call.
-
- """
- return self._SingleNodeCall(node, "instance_shutdown",
- [self._InstDict(instance), timeout])
-
- @_RpcTimeout(_TMO_NORMAL)
- def call_migration_info(self, node, instance):
- """Gather the information necessary to prepare an instance migration.
-
- This is a single-node call.
-
- @type node: string
- @param node: the node on which the instance is currently running
- @type instance: C{objects.Instance}
- @param instance: the instance definition
-
- """
- return self._SingleNodeCall(node, "migration_info",
- [self._InstDict(instance)])
-
- @_RpcTimeout(_TMO_NORMAL)
- def call_accept_instance(self, node, instance, info, target):
- """Prepare a node to accept an instance.
-
- This is a single-node call.
-
- @type node: string
- @param node: the target node for the migration
- @type instance: C{objects.Instance}
- @param instance: the instance definition
- @type info: opaque/hypervisor specific (string/data)
- @param info: result for the call_migration_info call
- @type target: string
- @param target: target hostname (usually ip address) (on the node itself)
-
- """
- return self._SingleNodeCall(node, "accept_instance",
- [self._InstDict(instance), info, target])
-
- @_RpcTimeout(_TMO_NORMAL)
- def call_instance_finalize_migration_dst(self, node, instance, info, success):
- """Finalize any target-node migration specific operation.
-
- This is called both in case of a successful migration and in case of error
- (in which case it should abort the migration).
-
- This is a single-node call.
-
- @type node: string
- @param node: the target node for the migration
- @type instance: C{objects.Instance}
- @param instance: the instance definition
- @type info: opaque/hypervisor specific (string/data)
- @param info: result for the call_migration_info call
- @type success: boolean
- @param success: whether the migration was a success or a failure
-
- """
- return self._SingleNodeCall(node, "instance_finalize_migration_dst",
- [self._InstDict(instance), info, success])
-
- @_RpcTimeout(_TMO_SLOW)
- def call_instance_migrate(self, node, instance, target, live):
- """Migrate an instance.
-
- This is a single-node call.
-
- @type node: string
- @param node: the node on which the instance is currently running
- @type instance: C{objects.Instance}
- @param instance: the instance definition
- @type target: string
- @param target: the target node name
- @type live: boolean
- @param live: whether the migration should be done live or not (the
- interpretation of this parameter is left to the hypervisor)
-
- """
- return self._SingleNodeCall(node, "instance_migrate",
- [self._InstDict(instance), target, live])
-
- @_RpcTimeout(_TMO_SLOW)
- def call_instance_finalize_migration_src(self, node, instance, success, live):
- """Finalize the instance migration on the source node.
-
- This is a single-node call.
-
- @type instance: L{objects.Instance}
- @param instance: the instance that was migrated
- @type success: bool
- @param success: whether the migration succeeded or not
- @type live: bool
- @param live: whether the user requested a live migration or not
-
- """
- return self._SingleNodeCall(node, "instance_finalize_migration_src",
- [self._InstDict(instance), success, live])
-
- @_RpcTimeout(_TMO_SLOW)
- def call_instance_get_migration_status(self, node, instance):
- """Report migration status.
-
- This is a single-node call that must be executed on the source node.
-
- @type instance: L{objects.Instance}
- @param instance: the instance that is being migrated
- @rtype: L{objects.MigrationStatus}
- @return: the status of the current migration (one of
- L{constants.HV_MIGRATION_VALID_STATUSES}), plus any additional
- progress info that can be retrieved from the hypervisor
-
- """
- result = self._SingleNodeCall(node, "instance_get_migration_status",
- [self._InstDict(instance)])
- if not result.fail_msg and result.payload is not None:
- result.payload = objects.MigrationStatus.FromDict(result.payload)
- return result
-
- @_RpcTimeout(_TMO_NORMAL)
- def call_instance_reboot(self, node, inst, reboot_type, shutdown_timeout):
- """Reboots an instance.
-
- This is a single-node call.
-
- """
- return self._SingleNodeCall(node, "instance_reboot",
- [self._InstDict(inst), reboot_type,
- shutdown_timeout])
-
- @_RpcTimeout(_TMO_1DAY)
- def call_instance_os_add(self, node, inst, reinstall, debug, osparams=None):
- """Installs an OS on the given instance.
-
- This is a single-node call.
-
- """
- return self._SingleNodeCall(node, "instance_os_add",
- [self._InstDict(inst, osp=osparams),
- reinstall, debug])
-
- @_RpcTimeout(_TMO_SLOW)
- def call_instance_run_rename(self, node, inst, old_name, debug):
- """Run the OS rename script for an instance.
-
- This is a single-node call.
-
- """
- return self._SingleNodeCall(node, "instance_run_rename",
- [self._InstDict(inst), old_name, debug])
-
- @_RpcTimeout(_TMO_URGENT)
- def call_instance_info(self, node, instance, hname):
- """Returns information about a single instance.
-
- This is a single-node call.
-
- @type node: list
- @param node: the list of nodes to query
- @type instance: string
- @param instance: the instance name
- @type hname: string
- @param hname: the hypervisor type of the instance
-
- """
- return self._SingleNodeCall(node, "instance_info", [instance, hname])
-
- @_RpcTimeout(_TMO_NORMAL)
- def call_instance_migratable(self, node, instance):
- """Checks whether the given instance can be migrated.
-
- This is a single-node call.
-
- @param node: the node to query
- @type instance: L{objects.Instance}
- @param instance: the instance to check
-
-
- """
- return self._SingleNodeCall(node, "instance_migratable",
- [self._InstDict(instance)])
-
- @_RpcTimeout(_TMO_URGENT)
- def call_all_instances_info(self, node_list, hypervisor_list):
- """Returns information about all instances on the given nodes.
-
- This is a multi-node call.
-
- @type node_list: list
- @param node_list: the list of nodes to query
- @type hypervisor_list: list
- @param hypervisor_list: the hypervisors to query for instances
-
- """
- return self._MultiNodeCall(node_list, "all_instances_info",
- [hypervisor_list])
-
- @_RpcTimeout(_TMO_URGENT)
- def call_instance_list(self, node_list, hypervisor_list):
- """Returns the list of running instances on a given node.
-
- This is a multi-node call.
-
- @type node_list: list
- @param node_list: the list of nodes to query
- @type hypervisor_list: list
- @param hypervisor_list: the hypervisors to query for instances
-
- """
- return self._MultiNodeCall(node_list, "instance_list", [hypervisor_list])
-
- @_RpcTimeout(_TMO_FAST)
- def call_node_has_ip_address(self, node, address):
- """Checks if a node has the given IP address.
-
- This is a single-node call.
-
- """
- return self._SingleNodeCall(node, "node_has_ip_address", [address])
-
- @_RpcTimeout(_TMO_URGENT)
- def call_node_info(self, node_list, vg_name, hypervisor_type):
- """Return node information.
-
- This will return memory information and volume group size and free
- space.
-
- This is a multi-node call.
-
- @type node_list: list
- @param node_list: the list of nodes to query
- @type vg_name: C{string}
- @param vg_name: the name of the volume group to ask for disk space
- information
- @type hypervisor_type: C{str}
- @param hypervisor_type: the name of the hypervisor to ask for
- memory information
-
- """
- return self._MultiNodeCall(node_list, "node_info",
- [vg_name, hypervisor_type])
-
- @_RpcTimeout(_TMO_NORMAL)
- def call_etc_hosts_modify(self, node, mode, name, ip):
- """Modify hosts file with name
-
- @type node: string
- @param node: The node to call
- @type mode: string
- @param mode: The mode to operate. Currently "add" or "remove"
- @type name: string
- @param name: The host name to be modified
- @type ip: string
- @param ip: The ip of the entry (just valid if mode is "add")
-
- """
- return self._SingleNodeCall(node, "etc_hosts_modify", [mode, name, ip])
-
- @_RpcTimeout(_TMO_NORMAL)
- def call_node_verify(self, node_list, checkdict, cluster_name):
- """Request verification of given parameters.