예제 #1
0
 def check_role_file(self, nodes_dict):
     for node, role in self.get_nailgun_node_roles(nodes_dict):
         remote = SSHClient(
             node['ip'], username='******', password='******',
             private_keys=self.get_private_keys())
         if role != "cinder":
             self.assertTrue(remote.isfile('/tmp/%s-file' % role))
예제 #2
0
 def check_role_file(self, nodes_dict):
     for node, role in self.get_nailgun_node_roles(nodes_dict):
         remote = SSHClient(node['ip'],
                            username='******',
                            password='******',
                            private_keys=self.get_private_keys())
         if role != "cinder":
             self.assertTrue(remote.isfile('/tmp/%s-file' % role))
예제 #3
0
 def get_cluster_floating_list(self, ip):
     remote = SSHClient(ip,
                        username='******',
                        password='******',
                        private_keys=self.get_private_keys())
     ret = remote.check_call('/usr/bin/nova-manage floating list')
     ret_str = ''.join(ret['stdout'])
     return re.findall('(\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3})', ret_str)
예제 #4
0
 def get_ssh_to_remote_by_key(self, ip, keyfile):
     try:
         with open(keyfile) as f:
             keys = [RSAKey.from_private_key(f)]
             return SSHClient(ip, private_keys=keys)
     except IOError:
         logger.warning('Loading of SSH key from file failed. Trying to use'
                        ' SSH agent ...')
         keys = Agent().get_keys()
         return SSHClient(ip, private_keys=keys)
예제 #5
0
    def assert_savanna_service(self, node_name):
        ip = self.get_node_by_devops_node(
            self.ci().environment().node_by_name(node_name))['ip']
        remote = SSHClient(
            ip, username='******', password='******',
            private_keys=self.get_private_keys())
        ps_output = remote.execute('ps ax')['stdout']

        savanna_api = filter(lambda x: 'savanna-api' in x, ps_output)
        self.assertEquals(len(savanna_api), 1)
예제 #6
0
 def wrapper(*args, **kwargs):
     result = func(*args, **kwargs)
     try:
         if settings.UPLOAD_PATCHSET:
             if not settings.GERRIT_REFSPEC:
                 raise ValueError('REFSPEC should be set for CI tests.')
             logger.info("Uploading new patchset from {0}"
                         .format(settings.GERRIT_REFSPEC))
             remote = SSHClient(args[0].admin_node_ip,
                                username='******',
                                password='******')
             remote.upload(settings.PATCH_PATH.rstrip('/'),
                           '/tmp/fuel-ostf')
             remote.execute('source /opt/fuel_plugins/ostf/bin/activate; '
                            'cd /tmp/fuel-ostf; python setup.py develop')
             remote.execute('/etc/init.d/supervisord restart')
             helpers.wait(
                 lambda: "RUNNING" in
                 remote.execute("supervisorctl status ostf | awk\
                                '{print $2}'")['stdout'][0],
                 timeout=60)
             logger.info("OSTF status: RUNNING")
     except Exception as e:
         logger.error("Could not upload patch set {e}".format(e=e))
         raise
     return result
예제 #7
0
    def assert_savanna_service(self, node_name):
        ip = self.get_node_by_devops_node(
            self.ci().environment().node_by_name(node_name))['ip']
        remote = SSHClient(ip,
                           username='******',
                           password='******',
                           private_keys=self.get_private_keys())
        ps_output = remote.execute('ps ax')['stdout']

        savanna_api = filter(lambda x: 'savanna-api' in x, ps_output)
        self.assertEquals(len(savanna_api), 1)
예제 #8
0
 def wrapper(*args, **kwargs):
     result = func(*args, **kwargs)
     try:
         if settings.UPLOAD_PATCHSET:
             if not settings.GERRIT_REFSPEC:
                 raise ValueError('REFSPEC should be set for CI tests.')
             logger.info("Uploading new patchset from {0}"
                         .format(settings.GERRIT_REFSPEC))
             remote = SSHClient(args[0].admin_node_ip,
                                username='******',
                                password='******')
             remote.upload(settings.PATCH_PATH.rstrip('/'),
                           '/tmp/fuel-ostf')
             remote.execute('source /opt/fuel_plugins/ostf/bin/activate; '
                            'cd /tmp/fuel-ostf; python setup.py develop')
             remote.execute('/etc/init.d/supervisord restart')
             helpers.wait(
                 lambda: "RUNNING" in
                 remote.execute("supervisorctl status ostf | awk\
                                '{print $2}'")['stdout'][0],
                 timeout=60)
             logger.info("OSTF status: RUNNING")
     except Exception as e:
         logger.error("Could not upload patch set {e}".format(e=e))
         raise
     return result
예제 #9
0
파일: cdrom.py 프로젝트: toby82/fuel-devops
def one():
    environment = Environment.create('cdrom')
    internal_pool = Network.create_network_pool(
        networks=[IPNetwork('10.108.0.0/16')], prefix=24)
    private_pool = Network.create_network_pool(
        networks=[IPNetwork('10.108.0.0/16')], prefix=24)
    external_pool = Network.create_network_pool(
        networks=[IPNetwork('172.18.95.0/24')], prefix=27)
    internal = Network.network_create(environment=environment,
                                      name='internal',
                                      pool=internal_pool)
    external = Network.network_create(environment=environment,
                                      name='external',
                                      pool=external_pool,
                                      forward='nat')
    private = Network.network_create(environment=environment,
                                     name='private',
                                     pool=private_pool)
    for i in range(1, 2):
        node = Node.node_create(name='test_node' + str(i),
                                environment=environment)
        Interface.interface_create(node=node, network=internal)
        Interface.interface_create(node=node, network=external)
        Interface.interface_create(node=node, network=private)
        volume = Volume.volume_get_predefined(
            '/var/lib/libvirt/images/centos63-cobbler-base.qcow2')
        v3 = Volume.volume_create_child('test_vp895' + str(i),
                                        backing_store=volume,
                                        environment=environment)
        v4 = Volume.volume_create_child('test_vp896' + str(i),
                                        backing_store=volume,
                                        environment=environment)
        DiskDevice.node_attach_volume(node=node, volume=v3)
        DiskDevice.node_attach_volume(node, v4)
        DiskDevice.node_attach_volume(
            node,
            Volume.volume_get_predefined(
                '/var/lib/libvirt/images/fuel-centos-6.3-x86_64.iso'),
            device='cdrom',
            bus='sata')
    environment.define()
    environment.start()
    remotes = []
    for node in environment.get_nodes():
        node. await ('internal')
        node.remote('internal', 'root', 'r00tme').check_stderr('ls -la',
                                                               verbose=True)
        remotes.append(node.remote('internal', 'root', 'r00tme'))
    SSHClient.execute_together(remotes, 'ls -la')
예제 #10
0
파일: cdrom.py 프로젝트: mrasskazov/devops
def one(manager):
    environment = manager.environment_create('cdrom')
    internal_pool = manager.create_network_pool(
        networks=[ipaddr.IPNetwork('10.108.0.0/16')], prefix=24
    )
    private_pool = manager.create_network_pool(
        networks=[ipaddr.IPNetwork('10.108.0.0/16')], prefix=24
    )
    external_pool = manager.create_network_pool(
        networks=[ipaddr.IPNetwork('172.18.95.0/24')], prefix=27
    )
    internal = manager.network_create(
        environment=environment, name='internal', pool=internal_pool)
    external = manager.network_create(
        environment=environment, name='external', pool=external_pool,
        forward='nat')
    private = manager.network_create(
        environment=environment, name='private', pool=private_pool)
    for i in range(1, 2):
        node = manager.node_create(
            name='test_node' + str(i), environment=environment)
        manager.interface_create(node=node, network=internal)
        manager.interface_create(node=node, network=external)
        manager.interface_create(node=node, network=private)
        volume = manager.volume_get_predefined(
            '/var/lib/libvirt/images/centos63-cobbler-base.qcow2')
        v3 = manager.volume_create_child(
            'test_vp895' + str(i), backing_store=volume,
            environment=environment)
        v4 = manager.volume_create_child(
            'test_vp896' + str(i), backing_store=volume,
            environment=environment)
        manager.node_attach_volume(node=node, volume=v3)
        manager.node_attach_volume(node, v4)
        manager.node_attach_volume(
            node,
            manager.volume_get_predefined(
                '/var/lib/libvirt/images/fuel-centos-6.3-x86_64.iso'),
            device='cdrom', bus='sata')
    environment.define()
    environment.start()
    remotes = []
    for node in environment.nodes:
        node.await('internal')
        node.remote('internal', 'root', 'r00tme').check_stderr(
            'ls -la', verbose=True)
        remotes.append(node.remote('internal', 'root', 'r00tme'))
    SSHClient.execute_together(remotes, 'ls -la')
예제 #11
0
 def assertNetworkConfiguration(self, node):
     remote = SSHClient(node['ip'],
                        username='******',
                        password='******',
                        private_keys=self.get_private_keys())
     for interface in node['network_data']:
         if interface.get('vlan') is None:
             continue  # todo excess check fix interface json format
         interface_name = "%s.%s@%s" % (interface['dev'], interface['vlan'],
                                        interface['dev'])
         interface_short_name = "%s.%s" % (interface['dev'],
                                           interface['vlan'])
         interface_description = self.get_interface_description(
             remote, interface_short_name)
         self.assertIn(interface_name, interface_description)
         if interface.get('name') == 'floating':
             continue
         if interface.get('ip'):
             self.assertIn("inet %s" % interface.get('ip'),
                           interface_description)
         else:
             self.assertNotIn("inet ", interface_description)
         if interface.get('brd'):
             self.assertIn("brd %s" % interface['brd'],
                           interface_description)
예제 #12
0
파일: one.py 프로젝트: TracyHe/fuel-devops
def one():
    environment = Environment.create('test_env7')
    internal_pool = Network.create_network_pool(
        networks=[IPNetwork('10.108.0.0/16')], prefix=24
    )
    private_pool = Network.create_network_pool(
        networks=[IPNetwork('10.108.0.0/16')], prefix=24
    )
    external_pool = Network.create_network_pool(
        networks=[IPNetwork('172.18.95.0/24')], prefix=27
    )
    internal = Network.network_create(
        environment=environment, name='internal', pool=internal_pool)
    external = Network.network_create(
        environment=environment, name='external', pool=external_pool,
        forward='nat')
    private = Network.network_create(
        environment=environment, name='private', pool=private_pool)
    for i in range(0, 15):
        node = Node.node_create(
            name='test_node' + str(i),
            environment=environment)
        Interface.interface_create(node=node, network=internal)
        Interface.interface_create(node=node, network=external)
        Interface.interface_create(node=node, network=private)
        volume = Volume.volume_get_predefined(
            '/var/lib/libvirt/images/centos63-cobbler-base.qcow2')
        v3 = Volume.volume_create_child(
            'test_vp895' + str(i),
            backing_store=volume,
            environment=environment)
        v4 = Volume.volume_create_child(
            'test_vp896' + str(i),
            backing_store=volume,
            environment=environment)
        DiskDevice.node_attach_volume(node=node, volume=v3)
        DiskDevice.node_attach_volume(node, v4)
    environment.define()
    environment.start()
    remotes = []
    for node in environment.get_nodes():
        node.await('internal')
        node.remote('internal', 'root', 'r00tme').check_stderr(
            'ls -la', verbose=True)
        remotes.append(node.remote('internal', 'root', 'r00tme'))
    SSHClient.execute_together(remotes, 'ls -la')
예제 #13
0
 def remote(self, network_name, login, password=None, private_keys=None):
     """
     :rtype : SSHClient
     """
     return SSHClient(self.get_ip_address_by_network_name(network_name),
                      username=login,
                      password=password,
                      private_keys=private_keys)
예제 #14
0
 def get_cluster_status(self, ip, smiles_count, networks_count=1):
     remote = SSHClient(ip,
                        username='******',
                        password='******',
                        private_keys=self.get_private_keys())
     self.assert_service_list(remote, smiles_count)
     self.assert_glance_index(remote)
     self.assert_network_list(networks_count, remote)
예제 #15
0
 def assert_node_service_list(self, node_name, smiles_count):
     ip = self.get_node_by_devops_node(
         self.ci().environment().node_by_name(node_name))['ip']
     remote = SSHClient(ip,
                        username='******',
                        password='******',
                        private_keys=self.get_private_keys())
     return self.assert_service_list(remote, smiles_count)
예제 #16
0
def one(manager):
    environment = manager.environment_create('test_env7')
    internal_pool = manager.create_network_pool(
        networks=[ipaddr.IPNetwork('10.108.0.0/16')], prefix=24)
    private_pool = manager.create_network_pool(
        networks=[ipaddr.IPNetwork('10.108.0.0/16')], prefix=24)
    external_pool = manager.create_network_pool(
        networks=[ipaddr.IPNetwork('172.18.95.0/24')], prefix=27)
    internal = manager.network_create(environment=environment,
                                      name='internal',
                                      pool=internal_pool)
    external = manager.network_create(environment=environment,
                                      name='external',
                                      pool=external_pool,
                                      forward='nat')
    private = manager.network_create(environment=environment,
                                     name='private',
                                     pool=private_pool)
    for i in range(0, 15):
        node = manager.node_create(name='test_node' + str(i),
                                   environment=environment)
        manager.interface_create(node=node, network=internal)
        manager.interface_create(node=node, network=external)
        manager.interface_create(node=node, network=private)
        volume = manager.volume_get_predefined(
            '/var/lib/libvirt/images/centos63-cobbler-base.qcow2')
        v3 = manager.volume_create_child('test_vp895' + str(i),
                                         backing_store=volume,
                                         environment=environment)
        v4 = manager.volume_create_child('test_vp896' + str(i),
                                         backing_store=volume,
                                         environment=environment)
        manager.node_attach_volume(node=node, volume=v3)
        manager.node_attach_volume(node, v4)
    environment.define()
    environment.start()
    remotes = []
    for node in environment.nodes:
        node. await ('internal')
        node.remote('internal', 'root', 'r00tme').check_stderr('ls -la',
                                                               verbose=True)
        remotes.append(node.remote('internal', 'root', 'r00tme'))
    SSHClient.execute_together(remotes, 'ls -la')
예제 #17
0
    def get_ssh_to_remote(self, ip):
        keys = []
        for key_string in ['/root/.ssh/id_rsa', '/root/.ssh/bootstrap.rsa']:
            with self.get_admin_remote().open(key_string) as f:
                keys.append(RSAKey.from_private_key(f))

        return SSHClient(ip,
                         username=settings.SSH_CREDENTIALS['login'],
                         password=settings.SSH_CREDENTIALS['password'],
                         private_keys=keys)
예제 #18
0
 def wrapper(*args, **kwargs):
     result = func(*args, **kwargs)
     try:
         if UPLOAD_MANIFESTS:
             logging.info("Uploading new manifests from %s" %
                          UPLOAD_MANIFESTS_PATH)
             remote = SSHClient(args[0].get_admin_node_ip(),
                                username='******',
                                password='******')
             remote.execute('rm -rf /etc/puppet/modules/*')
             remote.upload(UPLOAD_MANIFESTS_PATH, '/etc/puppet/modules/')
             logging.info("Copying new site.pp from %s" %
                          SITEPP_FOR_UPLOAD)
             remote.execute("cp %s /etc/puppet/manifests" %
                            SITEPP_FOR_UPLOAD)
     except:
         logging.error("Could not upload manifests")
         raise
     return result
예제 #19
0
    def prepare_release(self):
        """Prepare master node

        Scenario:
            1. Revert snapshot "empty"
            2. Download the release if needed. Uploads custom manifest.

        Snapshot: ready

        """
        self.check_run("ready")
        self.env.revert_snapshot("empty")

        if OPENSTACK_RELEASE == OPENSTACK_RELEASE_REDHAT:
            self.fuel_web.update_redhat_credentials()
            self.fuel_web.assert_release_state(
                OPENSTACK_RELEASE_REDHAT,
                state='available'
            )

        try:
            if UPLOAD_MANIFESTS:
                logging.info("Uploading new manifests from %s" %
                             UPLOAD_MANIFESTS_PATH)
                remote = SSHClient(self.env.get_admin_node_ip(),
                                   username='******',
                                   password='******')
                remote.execute('rm -rf /etc/puppet/modules/*')
                remote.upload(UPLOAD_MANIFESTS_PATH, '/etc/puppet/modules/')
                logging.info("Copying new site.pp from %s" %
                             SITEPP_FOR_UPLOAD)
                remote.execute("cp %s /etc/puppet/manifests" %
                               SITEPP_FOR_UPLOAD)
        except:
            logging.error("Could not upload manifests")
            raise
        self.env.make_snapshot("ready")
예제 #20
0
 def get_ssh_to_remote_by_key(self, ip, keyfile):
     with open(keyfile) as f:
         keys = [RSAKey.from_private_key(f)]
         return SSHClient(ip, private_keys=keys)
예제 #21
0
 def get_ssh_to_remote(self, ip):
     return SSHClient(ip,
                      username='******',
                      password='******',
                      private_keys=self.get_private_keys())
예제 #22
0
 def get_ssh_to_remote(self, ip):
     return SSHClient(ip,
                      username=settings.SSH_CREDENTIALS['login'],
                      password=settings.SSH_CREDENTIALS['password'],
                      private_keys=self.get_private_keys())
예제 #23
0
 def get_cluster_floating_list(self, ip):
     remote = SSHClient(ip, username='******', password='******',
                        private_keys=self.get_private_keys())
     ret = remote.check_call('/usr/bin/nova-manage floating list')
     ret_str = ''.join(ret['stdout'])
     return re.findall('(\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3})', ret_str)