Esempio n. 1
0
File: plan.py Progetto: mbr/remand
    def execute(self, objective=None):
        # executes the objective
        if objective is None:
            if len(self.objectives) != 1:
                raise ValueError('No objective given, but plan {} has {} '
                                 'objectives'.format(self,
                                                     len(self.objectives)))

            obj = self.objectives.values()[0]
        else:
            obj = self.objectives.get(objective)

            if obj is None:
                raise ValueError(
                    'Objective {!r} not found. Valid objectives are {}'.format(
                        objective, ', '.join(
                            repr(o.__name__)
                            for o in self.objectives.values())))

        # got our objective, now run it

        try:
            return obj()
        except RebootNeeded as e:
            log.warning('A reboot has been request on behalf of {}'.format(e))

            if config.get_bool('auto_reboot'):
                delay = int(config['reboot_delay'])
                log.warning(
                    'Rebooting, will reconnect after {} seconds'.format(delay))
                posix.reboot()
                time.sleep(delay)
                raise ReconnectNeeded(obj)
            else:
                log.error('Automatic reboots disabled, cannot continue.')
Esempio n. 2
0
File: plan.py Progetto: mbr/remand
    def execute(self, objective=None):
        # executes the objective
        if objective is None:
            if len(self.objectives) != 1:
                raise ValueError('No objective given, but plan {} has {} '
                                 'objectives'.format(self, len(
                                     self.objectives)))

            objective = self.objectives.values()[0]
        else:
            objective = self.objectives[objective]

        # got our objective, now run it

        try:
            return objective()
        except RebootNeeded as e:
            log.warning('A reboot has been request on behalf of {}'.format(e))

            if config.get_bool('auto_reboot'):
                delay = int(config['reboot_delay'])
                log.warning(
                    'Rebooting, will reconnect after {} seconds'.format(delay))
                posix.reboot()
                time.sleep(delay)
                raise ReconnectNeeded(objective)
            else:
                log.error('Automatic reboots disabled, cannot continue.')
Esempio n. 3
0
def init_jessie():
    needs_reboot = False

    # first, expand the filesystem
    needs_reboot |= expand_root_fs().changed

    if needs_reboot:
        posix.reboot()

    # then, initialize the rng
    enable_hwrng()
Esempio n. 4
0
def run():
    needs_reboot = False

    with proc.sudo():
        ssh.set_authorized_keys([PUB_KEY], 'root')
        disable_raspi_config()

        needs_reboot |= expand_root_fs().changed
        needs_reboot |= enable_systemd().changed

        posix.userdel('pi', remove_home=True, force=True)

        if needs_reboot:
            posix.reboot()