Hi forks,

I'm working on CS + XCP. I have a question:

When starting VM, Async job "startvm" is sent to XCP Host via xapi. Then we
have to wait until xapi task responses.  This code here:

    void startVM(Connection conn, Host host, VM vm, String vmName) throws
XmlRpcException {
        Task task = null;
        try {
           * task = vm.startOnAsync(conn, host, false, true);*
            try {
                //poll every 1 seconds , timeout after 10 minutes
                *waitForTask(conn, task, 1000, 10 * 60 * 1000);*
                *checkForSuccess(conn, task);*
            } catch (Types.HandleInvalid e) {
                if (vm.getPowerState(conn) == Types.VmPowerState.RUNNING) {
                    task = null;
                    return;
                }
                throw new CloudRuntimeException("Shutdown VM catch
HandleInvalid and VM is not in RUNNING state");
            }
        } catch (XenAPIException e) {
            String msg = "Unable to start VM(" + vmName + ") on host(" +
_host.uuid +") due to " + e.toString();
            s_logger.warn(msg, e);
            throw new CloudRuntimeException(msg);
        }finally {
            if( task != null) {
                try {
                    task.destroy(conn);
                } catch (Exception e1) {
                    s_logger.debug("unable to destroy task(" +
task.toString() + ") on host(" + _host.uuid +") due to " + e1.toString());
                }
            }
        }
    }

Can you explain how xapi task work? How xapi queue work? When its task
responses?

Thanks,

-- 

N.g.U.y.e.N.A.n.H.t.U

Reply via email to