#!/usr/bin/env python
# -*- coding: utf-8 -*-
from models import Config
from models import Guest
__author__ = 'James Iter'
__date__ = '2017/3/25'
__contact__ = 'james.iter.cn@gmail.com'
__copyright__ = '(c) 2017 by James Iter.'
class GuestXML(object):
"""
10v022
16
64
hvm
"""
def __init__(self, guest=None, disks=None, g_config=None):
assert isinstance(guest, Guest)
assert isinstance(disks, list)
assert isinstance(g_config, Config)
self.guest = guest
self.disks = disks
self.g_config = g_config
def get_domain(self):
return """
{0}
{1}
{2}
{3}
{4}
{5}
""".format(self.get_features(), self.get_name(), self.get_vcpu(), self.get_memory(), self.get_os(),
self.get_devices())
@staticmethod
def get_features():
return """
"""
def get_name(self):
return """{0}""".format(self.guest.name)
def get_vcpu(self):
return """{0}""".format(self.guest.cpu.__str__())
def get_memory(self):
return """{0}""".format(self.guest.memory.__str__())
@staticmethod
def get_os():
return """
hvm
"""
def get_devices(self):
return """
{0}
{1}
{2}
{3}
""".format(self.get_interface(), self.get_disks(), self.get_graphics(), self.get_console())
def get_interface(self):
return """
""".format(self.guest.network)
def get_disks(self):
disks = []
dev_table = ['vda', 'vdb', 'vdc', 'vdd']
for i, disk in self.disks:
disks.append("""
""".format(self.g_config.glusterfs_volume, self.guest.name, disk['label'], disk['format'], dev_table[i]))
return ''.join(disks)
def get_graphics(self):
return """
""".format(self.guest.vnc_password, self.guest.vnc_port, self.guest.manage_network)
@staticmethod
def get_console():
return """
"""