blob: 89ac3ffa2a9e2172ec833cb1016d6e7936563ede [file] [log] [blame]
# Licensed to the Apache Software Foundation (ASF) under one
# or more contributor license agreements. See the NOTICE file
# distributed with this work for additional information
# regarding copyright ownership. The ASF licenses this file
# to you under the Apache License, Version 2.0 (the
# "License"); you may not use this file except in compliance
# with the License. You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing,
# software distributed under the License is distributed on an
# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
# KIND, either express or implied. See the License for the
# specific language governing permissions and limitations
# under the License.
class VmControlInterface(object):
"""Interface description for VM controllers -- like Qemu, Xen, etc"""
def __init__(self, config, dfs, nm):
"""Base init function -- it handles inserting config and dfs
into the object as well as checking that the class type is
not VmControlInterface"""
if self.__class__ is VmControlInterface:
raise NotImplementedError
self.config = config
self.dfs = dfs
self.nm = nm
def getInstances(self):
"""Will return a dict of instances by vmId to the caller"""
raise NotImplementedError
def setInstance(self, instance):
"""Sets data in an instance object"""
raise NotImplementedError
def instantiateVm(self, instance):
"""Takes an InstanceConfiguration, creates a VM based on it,
and returns the vmId"""
raise NotImplementedError
def suspendVm(self, vmId, target, suspendCookie=None):
"""Suspends a vm to the target on the dfs, including the
suspendCookie"""
raise NotImplementedError
def resumeVmHelper(self, instance, source):
"""Used to finish up the resume process, it is called outside
of the original RPC to avoid timeouts, it returns nothing"""
raise NotImplementedError
def resumeVm(self, instance, source):
"""Resumes a vm from the dfs and returns the vmId"""
raise NotImplementedError
def prepReceiveVm(self, instance, source):
"""First call made as part of vm migration -- it is made to
the target machine and it returns a transportCookie"""
raise NotImplementedError
def migrateVm(self, vmId, target, transportCookie):
"""Second call made as part of a vm migration -- it is made
to the source machine and it does not return until the
migration is complete"""
raise NotImplementedError
def receiveVm(self, transportCookie):
"""Third call made as part of a vm migration -- it is made to
the target machine and it does not return until the
migration is complete, it returns the new vmId"""
raise NotImplementedError
def pauseVm(self, vmId):
"""Pauses a vm and returns nothing"""
raise NotImplementedError
def unpauseVm(self, vmId):
"""Unpauses a vm and returns nothing"""
raise NotImplementedError
def shutdownVm(self, vmId):
"""Performs a clean shutdown on a vm and returns nothing"""
raise NotImplementedError
def destroyVm(self, vmId):
"""Forces the exit of a vm and returns nothing"""
raise NotImplementedError
def listVms(self):
"""Returns a list of vmIds to the caller"""
raise NotImplementedError
def getHostInfo(self, service):
"""Returns a Host object for the current host"""
raise NotImplementedError
def getStats(self, vmId):
"""Returns a dictionary containing stats about the guest (ie.
CPU utilization, network utilization, memory usage, etc.)"""
raise NotImplementedError