Beispiel #1
0
    def _spawn_vm(self, uuid, playbook_vars):
        '''Spawn a virtual machine using testcloud.

        :param str uuid: unicode string uuid for the task being executed
        :param dict playbook_vars: a vars dict created by
            :meth:`_create_playbook_vars`
        :returns: str ip address of spawned vm
        '''
        log.info('Spawning disposable client')

        env = image_utils.devise_environment(self.arg_data, playbook_vars)
        self.task_vm = vm.TestCloudMachine(uuid)

        retries = config.get_config().spawn_vm_retries

        while retries > 0:
            retries -= 1
            try:
                self.task_vm.prepare(**env)
                self.task_vm.wait_for_port(22)

                log.debug('Disposable client (%s %s) ready',
                          self.task_vm.instancename, self.task_vm.ipaddr)

                return self.task_vm.ipaddr
            except vm.TestcloudInstanceError as e:
                if retries <= 0:
                    raise exc.CheckbMinionError(
                        'Disposable client failed '
                        'to boot: %s', e)
                else:
                    log.warning(
                        'Disposable client failed to boot, retrying: '
                        '%s', e)
                    self.task_vm.teardown()
Beispiel #2
0
 def test_noarch_to_default(self, match_arch):
     self.arg_data['arch'] = 'noarch'
     self.playbook_vars['checkb_match_host_arch'] = match_arch
     env = devise_environment(self.arg_data, self.playbook_vars)
     assert env['distro'] == 'fedora'
     assert env['release'] == '20'
     assert env['arch'] == self.cfg.default_disposable_arch
Beispiel #3
0
 def test_koji_tag(self):
     self.arg_data = {
         'item': 'f20-updates-pending',
         'type': 'koji_tag',
         'arch': 'i686',
     }
     env = devise_environment(self.arg_data, self.playbook_vars)
     assert env['distro'] == 'fedora'
     assert env['release'] == '20'
     assert env['arch'] == self.arg_data['arch']
Beispiel #4
0
 def test_flavor(self):
     '''Flavor is always the default one'''
     env = devise_environment(self.arg_data, self.playbook_vars)
     assert env['flavor'] == self.cfg.default_disposable_flavor
Beispiel #5
0
 def test_no_disttag(self):
     self.arg_data['item'] = 'htop-2.0.2-4'
     env = devise_environment(self.arg_data, self.playbook_vars)
     assert env['distro'] == 'fedora'
     assert env['release'] == self.cfg.default_disposable_release
     assert env['arch'] == self.arg_data['arch']
Beispiel #6
0
 def test_match_host_release_false(self):
     self.playbook_vars['checkb_match_host_release'] = False
     env = devise_environment(self.arg_data, self.playbook_vars)
     assert env['distro'] == 'fedora'
     assert env['release'] == self.cfg.default_disposable_release
     assert env['arch'] == self.arg_data['arch']
Beispiel #7
0
 def test_match_host_release_true(self):
     env = devise_environment(self.arg_data, self.playbook_vars)
     assert env['distro'] == 'fedora'
     assert env['release'] == '20'
     assert env['arch'] == self.arg_data['arch']
Beispiel #8
0
 def test_unknown_distro(self):
     self.arg_data['item'] = 'htop-2.0.2-4.el7'
     env = devise_environment(self.arg_data, self.playbook_vars)
     assert env['distro'] == self.cfg.default_disposable_distro
     assert env['release'] == self.cfg.default_disposable_release
     assert env['arch'] == self.arg_data['arch']
Beispiel #9
0
 def test_koji_build(self):
     env = devise_environment(self.arg_data, self.playbook_vars)
     assert env['distro'] == 'fedora'
     assert env['release'] == '20'
     assert env['arch'] == self.arg_data['arch']