def __init__(self, conn): self.conn = conn self.cursor = Table_cursor(self.conn, 'machines') self.cursor.set_table('machines') self.kernels = Table_cursor(self.conn, 'kernels') self.mtype = MachineTypeHandler(self.conn) self.filesystems = Table_cursor(self.conn, 'filesystems') self.mounts = Table_cursor(self.conn, 'mounts') self.fsmounts = Table_cursor(self.conn, 'filesystem_mounts') self.disks = Table_cursor(self.conn, 'disks') self.partitions = Table_cursor(self.conn, 'partitions') self.current = None
class BaseMachineHandler(object): def __init__(self, conn): self.conn = conn self.cursor = Table_cursor(self.conn, 'machines') self.cursor.set_table('machines') self.kernels = Table_cursor(self.conn, 'kernels') self.mtype = MachineTypeHandler(self.conn) self.filesystems = Table_cursor(self.conn, 'filesystems') self.mounts = Table_cursor(self.conn, 'mounts') self.fsmounts = Table_cursor(self.conn, 'filesystem_mounts') self.disks = Table_cursor(self.conn, 'disks') self.partitions = Table_cursor(self.conn, 'partitions') self.current = None def set_machine(self, machine): self._machine_clause_ = Eq('machine', machine) self.current = self.cursor.select_row(clause=self._machine_clause_) mtype = self.current.machine_type self.mtype.set_machine_type(mtype) def approve_machine_ids(self): machine = self.current.machine table = 'current_environment' clause = "name like 'hwaddr_%'" + " and value='%s'" % machine fields = ["'machines' as section", 'name as option', 'value'] rows = self.cursor.select(fields=fields, table=table, clause=clause) for row in rows: self.cursor.insert(table='default_environment', data=row) def set_autoinstall(self, auto=True): if auto: value = 'True' else: value = 'False' machine = self.current.machine table = 'default_environment' data = dict(section='autoinstall', option=machine, value=value) clause = Eq('section', 'autoinstall') & Eq('option', machine) rows = self.cursor.select(table=table, clause=clause) if not len(rows): self.cursor.insert(table=table, data=data) elif len(rows) == 1: self.cursor.update(table=table, data=dict(value=value), clause=clause) else: raise Error, 'too many rows for this machine: %s' % machine def _update_field_(self, name, value): self.cursor.update(data={name:value}, clause=self._machine_clause_) self.set_machine(self.current.machine) def set_profile(self, profile): self._update_field_('profile', profile) def set_kernel(self, kernel): kernels = [r.kernel for r in self.kernels.select()] if kernel not in kernels: self.kernels.insert(data={'kernel' : kernel}) self._update_field_('kernel', kernel) def set_machine_type(self, mtype): self._update_field_('machine_type', mtype) self.set_machine(self.current.machine) def rename_machine(self, newname): self._update_field_('machine', newname) self.set_machine(newname) def get_disk_devices(self): return self.mtype.get_disk_devices()
class BaseMachineHandler(object): def __init__(self, conn): self.conn = conn self.cursor = Table_cursor(self.conn, 'machines') self.cursor.set_table('machines') self.kernels = Table_cursor(self.conn, 'kernels') self.mtype = MachineTypeHandler(self.conn) self.filesystems = Table_cursor(self.conn, 'filesystems') self.mounts = Table_cursor(self.conn, 'mounts') self.fsmounts = Table_cursor(self.conn, 'filesystem_mounts') self.disks = Table_cursor(self.conn, 'disks') self.partitions = Table_cursor(self.conn, 'partitions') self.current = None def set_machine(self, machine): self._machine_clause_ = Eq('machine', machine) self.current = self.cursor.select_row(clause=self._machine_clause_) mtype = self.current.machine_type self.mtype.set_machine_type(mtype) def approve_machine_ids(self): machine = self.current.machine table = 'current_environment' clause = "name like 'hwaddr_%'" + " and value='%s'" % machine fields = ["'machines' as section", 'name as option', 'value'] rows = self.cursor.select(fields=fields, table=table, clause=clause) for row in rows: self.cursor.insert(table='default_environment', data=row) def set_autoinstall(self, auto=True): if auto: value = 'True' else: value = 'False' machine = self.current.machine table = 'default_environment' data = dict(section='autoinstall', option=machine, value=value) clause = Eq('section', 'autoinstall') & Eq('option', machine) rows = self.cursor.select(table=table, clause=clause) if not len(rows): self.cursor.insert(table=table, data=data) elif len(rows) == 1: self.cursor.update(table=table, data=dict(value=value), clause=clause) else: raise Error, 'too many rows for this machine: %s' % machine def _update_field_(self, name, value): self.cursor.update(data={name: value}, clause=self._machine_clause_) self.set_machine(self.current.machine) def set_profile(self, profile): self._update_field_('profile', profile) def set_kernel(self, kernel): kernels = [r.kernel for r in self.kernels.select()] if kernel not in kernels: self.kernels.insert(data={'kernel': kernel}) self._update_field_('kernel', kernel) def set_machine_type(self, mtype): self._update_field_('machine_type', mtype) self.set_machine(self.current.machine) def rename_machine(self, newname): self._update_field_('machine', newname) self.set_machine(newname) def get_disk_devices(self): return self.mtype.get_disk_devices()