logger = logging.getLogger("nitsi.machine")
-class machine():
+class Machine():
def __init__(self, libvirt_con, vm_xml_file, snapshot_xml_file, image, root_uid, username, password):
self.log = logger.getChild(os.path.basename(vm_xml_file))
self.con = libvirt_con
# self.snapshot should be also at least None
self.snapshot = None
+ self.serial_con = None
try:
with open(vm_xml_file) as fobj:
self.log.error("No such file: {}".format(self.image))
self.root_uid = root_uid
- self.disk = disk.disk(image)
+ self.disk = disk.Disk(image)
self.username = username
self.password = password
return elem.text
def check_is_booted_up(self):
- serial_con = serial_connection.serial_connection(self.get_serial_device())
+ serial_con = serial_connection.SerialConnection(self.get_serial_device())
serial_con.write("\n")
# This will block till the domain is booted up
#serial_con.close()
- def login(self, log_file, log_start_time=None, longest_machine_name=10):
+ # This function should initialize the serial connection
+ def serial_init(self, log_file=None, log_start_time=None, longest_machine_name=10):
try:
- self.serial_con = serial_connection.serial_connection(self.get_serial_device(),
- username=self.username,
- log_file=log_file,
- log_start_time=log_start_time,
- name=self.name,
- longest_machine_name=longest_machine_name)
- self.serial_con.login(self.password)
+ self.serial_con = serial_connection.SerialConnection(self.get_serial_device(),
+ username=self.username,
+ password= self.password,
+ log_file=log_file,
+ log_start_time=log_start_time,
+ name=self.name,
+ longest_machine_name=longest_machine_name)
+ except BaseException as e:
+ self.log.error("Could initialize the serial console")
+ self.log.exception(e)
+ raise e
+
+
+ # This function should create a ready to use serial connection for this serial domain
+ def serial_connect(self):
+ try:
+ # Do the real connect
+ self.serial_con.connect()
except BaseException as e:
self.log.error("Could not connect to the domain via serial console")
self.log.exception(e)
raise e
+ def serial_disconnect(self):
+ try:
+ self.serial_con.disconnect()
+ except BaseException as e:
+ self.log.error("Could not disconnect from the serial console")
+ self.log.exception(e)
+ raise e
+
def cmd(self, cmd):
return self.serial_con.command(cmd)
def copy_in(self, fr, to):
try:
- self.disk.mount(self.root_uid, "/")
+ self.disk.inspect()
+ self.disk.mount()
self.disk.copy_in(fr, to)
except BaseException as e:
self.log.error(e)
finally:
- self.disk.umount("/")
+ self.disk.umount()
self.disk.close()