Пример #1
0
 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
Пример #2
0
 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
Пример #3
0
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()
Пример #4
0
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()