Commit 2effde8d authored by Michael Hanselmann's avatar Michael Hanselmann
Browse files

rpc: Convert instance-related calls


Signed-off-by: default avatarMichael Hanselmann <hansmi@google.com>
Reviewed-by: default avatarIustin Pop <iustin@google.com>
parent 0436da49
......@@ -343,5 +343,5 @@ _MISC_CALLS = [
CALLS = {
"RpcClientDefault": (_IMPEXP_CALLS + _X509_CALLS + _OS_CALLS + _NODE_CALLS +
_FILE_STORAGE_CALLS + _MISC_CALLS),
_FILE_STORAGE_CALLS + _MISC_CALLS + _INSTANCE_CALLS),
}
......@@ -674,140 +674,6 @@ class RpcRunner(_generated_rpc.RpcClientDefault):
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.
......@@ -819,76 +685,6 @@ class RpcRunner(_generated_rpc.RpcClientDefault):
[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])
@classmethod
@_RpcTimeout(_TMO_FAST)
def call_node_start_master_daemons(cls, node, no_voting):
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment