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))
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))
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)
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)
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)
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
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)
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
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')
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')
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)
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')
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)
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)
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)
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')
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)
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
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")
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)
def get_ssh_to_remote(self, ip): return SSHClient(ip, username='******', password='******', private_keys=self.get_private_keys())
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())
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)