def tempest_config_folsom(self, image_ref, image_ref_alt, path_to_private_key, compute_db_uri='mysql://*****:*****@localhost/nova'): sample = load( root('fuel_test', 'config', 'tempest.conf.folsom.sample')) config = sample % { 'IDENTITY_USE_SSL': 'false', 'IDENTITY_HOST': self.public_ip, 'IDENTITY_PORT': '5000', 'IDENTITY_API_VERSION': 'v2.0', 'IDENTITY_PATH': 'tokens', 'IDENTITY_STRATEGY': 'keystone', 'COMPUTE_ALLOW_TENANT_ISOLATION': 'true', 'COMPUTE_ALLOW_TENANT_REUSE': 'true', 'USERNAME': '******', 'PASSWORD': '******', 'TENANT_NAME': 'tenant1', 'ALT_USERNAME': '******', 'ALT_PASSWORD': '******', 'ALT_TENANT_NAME': 'tenant2', 'IMAGE_ID': image_ref, 'IMAGE_ID_ALT': image_ref_alt, 'FLAVOR_REF': '1', 'FLAVOR_REF_ALT': '2', 'COMPUTE_BUILD_INTERVAL': '10', 'COMPUTE_BUILD_TIMEOUT': '600', 'RUN_SSH': 'false', 'NETWORK_FOR_SSH': 'novanetwork', 'COMPUTE_CATALOG_TYPE': 'compute', 'COMPUTE_CREATE_IMAGE_ENABLED': 'true', 'COMPUTE_RESIZE_AVAILABLE': 'true', 'COMPUTE_CHANGE_PASSWORD_AVAILABLE': 'false', 'COMPUTE_LOG_LEVEL': 'DEBUG', 'COMPUTE_WHITEBOX_ENABLED': 'true', 'COMPUTE_SOURCE_DIR': '/opt/stack/nova', 'COMPUTE_CONFIG_PATH': '/etc/nova/nova.conf', 'COMPUTE_BIN_DIR': '/usr/local/bin', 'COMPUTE_PATH_TO_PRIVATE_KEY': path_to_private_key, 'COMPUTE_DB_URI': compute_db_uri, 'IMAGE_CATALOG_TYPE': 'image', 'IMAGE_API_VERSION': '1', 'IMAGE_HOST': self.public_ip, 'IMAGE_PORT': '9292', 'IMAGE_USERNAME': '******', 'IMAGE_PASSWORD': '******', 'IMAGE_TENANT_NAME': 'tenant1', 'COMPUTE_ADMIN_USERNAME': ADMIN_USERNAME, 'COMPUTE_ADMIN_PASSWORD': ADMIN_PASSWORD, 'COMPUTE_ADMIN_TENANT_NAME': ADMIN_TENANT_FOLSOM, 'IDENTITY_ADMIN_USERNAME': ADMIN_USERNAME, 'IDENTITY_ADMIN_PASSWORD': ADMIN_PASSWORD, 'IDENTITY_ADMIN_TENANT_NAME': ADMIN_TENANT_FOLSOM, 'VOLUME_CATALOG_TYPE': 'volume', 'VOLUME_BUILD_INTERVAL': '10', 'VOLUME_BUILD_TIMEOUT': '300', 'NETWORK_CATALOG_TYPE': 'network', 'NETWORK_API_VERSION': 'v2.0', } return config
def setup_agent_nodes(self, nodes): agent_config = load(root("fuel_test", "config", "puppet.agent.config")) for node in nodes: if node.name != "master": remote = node.remote("public", login="******", password="******") self.add_nodes_to_hosts(remote, self.environment().nodes) setup_puppet_client(remote) write_config(remote, "/etc/puppet/puppet.conf", agent_config) request_cerificate(remote)
def setup_agent_nodes(self, nodes): agent_config = load(root('fuel_test', 'config', 'puppet.agent.config')) for node in nodes: if node.name != 'master': remote = node.remote('public', login='******', password='******') self.add_nodes_to_hosts(remote, self.environment().nodes) setup_puppet_client(remote) write_config(remote, '/etc/puppet/puppet.conf', agent_config) request_cerificate(remote)
def prepare_tempest_folsom(self): image_ref, image_ref_alt = self.make_tempest_objects() self.tempest_write_config( self.tempest_config_folsom( image_ref=image_ref, image_ref_alt=image_ref_alt, path_to_private_key=root('fuel_test', 'config', 'ssh_keys', 'openstack'), compute_db_uri='mysql://*****:*****@%s/nova' % self.ci().internal_virtual_ip() ))
def generate_swift_manifest(self, controllers, proxies=None): template = Template( root('deployment', 'puppet', 'swift', 'examples', 'site.pp')) template.replace( swift_proxy_address=proxies[0].get_ip_address_by_network_name( 'internal'), controller_node_public=controllers[0]. get_ip_address_by_network_name('public'), ) return template
def setup_agent_nodes(self, nodes): agent_config = load( root('fuel_test', 'config', 'puppet.agent.config')) for node in nodes: if node.name != 'master': remote = node.remote('public', login='******', password='******') self.add_nodes_to_hosts(remote, self.environment().nodes) setup_puppet_client(remote) write_config(remote, '/etc/puppet/puppet.conf', agent_config) request_cerificate(remote)
def prepare_tempest_grizzly_simple(self): image_ref, image_ref_alt, net_id, router_id = self.make_tempest_objects() self.tempest_write_config( self.tempest_config_grizzly( image_ref=image_ref, image_ref_alt=image_ref_alt, public_network_id=net_id, public_router_id=router_id, path_to_private_key=root('fuel_test', 'config', 'ssh_keys', 'openstack'), compute_db_uri='mysql://*****:*****@%s/nova' % self.internal_ip ))
def generate_swift_manifest(self, controllers, proxies=None): template = Template( root('deployment', 'puppet', 'swift', 'examples', 'site.pp')) template.replace( swift_proxy_address=proxies[0].get_ip_address_by_network_name( 'internal'), controller_node_public=controllers[ 0].get_ip_address_by_network_name( 'public'), ) return template
def generate_cobbler_manifest(self, ci, cobblers): site_pp = Template(root('deployment', 'puppet', 'cobbler', 'examples', 'server_site.pp')) cobbler = cobblers[0] cobbler_address = cobbler.get_ip_address_by_network_name('internal') network = IPNetwork(ci.environment().network_by_name('internal').ip_network) self.replace = site_pp.replace(server=cobbler_address, name_server=cobbler_address, next_server=cobbler_address, dhcp_start_address=network[5], dhcp_end_address=network[-1], dhcp_netmask=network.netmask, dhcp_gateway=network[1], pxetimeout='3000', mirror_type=self.mirror_type(), )
def tempest_config_essex(self, image_ref, image_ref_alt): sample = load( root('fuel_test', 'config', 'tempest.conf.essex.sample')) config = sample % { 'HOST': self.public_ip, 'USERNAME': '******', 'PASSWORD': '******', 'TENANT_NAME': 'tenant1', 'ALT_USERNAME': '******', 'ALT_PASSWORD': '******', 'ALT_TENANT_NAME': 'tenant2', 'IMAGE_ID': image_ref, 'IMAGE_ID_ALT': image_ref_alt, 'ADMIN_USERNAME': ADMIN_USERNAME, 'ADMIN_PASSWORD': ADMIN_PASSWORD, 'ADMIN_TENANT_NAME': ADMIN_TENANT_ESSEX, } return config
def generate_cobbler_manifest(self, ci, cobblers): site_pp = Template( root('deployment', 'puppet', 'cobbler', 'examples', 'server_site.pp')) cobbler = cobblers[0] cobbler_address = cobbler.get_ip_address_by_network_name('internal') network = IPNetwork( ci.environment().network_by_name('internal').ip_network) self.replace = site_pp.replace( server=cobbler_address, name_server=cobbler_address, next_server=cobbler_address, dhcp_start_address=network[5], dhcp_end_address=network[-1], dhcp_netmask=network.netmask, dhcp_gateway=network[1], pxetimeout='3000', mirror_type=self.mirror_type(), )
def write_openstack_single_manifest(self, remote, ci, use_syslog=True, quantum=True, cinder=True): template = Template( root( 'deployment', 'puppet', 'openstack', 'examples', 'site_openstack_single.pp')).replace( floating_range=self.floating_network(ci, quantum), fixed_range=self.fixed_network(ci, quantum), public_interface=self.public_interface(), private_interface=self.private_interface(), mirror_type=self.mirror_type(), use_syslog=use_syslog, cinder=cinder, ntp_servers=['pool.ntp.org',ci.internal_router()], quantum=quantum, enable_test_repo = TEST_REPO, ) self.write_manifest(remote, template)
def write_openstack_simple_manifest(self, remote, ci, controllers, use_syslog=True, quantum=True, cinder=True, cinder_on_computes=False): template = Template( root( 'deployment', 'puppet', 'openstack', 'examples', 'site_openstack_simple.pp')).replace( floating_range=self.floating_network(ci, quantum), fixed_range=self.fixed_network(ci, quantum), public_interface=self.public_interface(), internal_interface=self.internal_interface(), private_interface=self.private_interface(), mirror_type=self.mirror_type(), #controller_node_address=controllers[0].get_ip_address_by_network_name('internal'), #controller_node_public=controllers[0].get_ip_address_by_network_name('public'), cinder=cinder, cinder_on_computes=cinder_on_computes, nv_physical_volume=self.physical_volumes(), nagios_master = controllers[0].name + '.your-domain-name.com', external_ipinfo=self.external_ip_info(ci, controllers), nodes=self.generate_nodes_configs_list(ci), dns_nameservers=self.generate_dns_nameservers_list(ci), ntp_servers=['pool.ntp.org',ci.internal_router()], default_gateway=ci.public_router(), enable_test_repo=TEST_REPO, deployment_id = self.deployment_id(ci), use_syslog=use_syslog, public_netmask = ci.public_net_mask(), internal_netmask = ci.internal_net_mask(), ) if is_not_essex(): template.replace( quantum=quantum, quantum_netnode_on_cnt=quantum, ) self.write_manifest(remote, template)
def tempest_config_grizzly(self, image_ref, image_ref_alt, public_network_id, public_router_id, path_to_private_key, compute_db_uri='mysql://*****:*****@localhost/nova'): sample = load( root('fuel_test', 'config', 'tempest.conf.grizzly.sample')) config = sample % { 'IDENTITY_CATALOG_TYPE': 'identity', 'IDENTITY_DISABLE_SSL_CHECK': 'true', 'IDENTITY_USE_SSL': 'false', 'IDENTITY_URI': 'http://%s:5000/v2.0/' % self.public_ip, 'IDENTITY_REGION': 'RegionOne', 'IDENTITY_HOST': self.public_ip, 'IDENTITY_PORT': '5000', 'IDENTITY_API_VERSION': 'v2.0', 'IDENTITY_PATH': 'tokens', 'IDENTITY_STRATEGY': 'keystone', 'COMPUTE_ALLOW_TENANT_ISOLATION': 'true', 'COMPUTE_ALLOW_TENANT_REUSE': 'true', 'USERNAME': '******', 'PASSWORD': '******', 'TENANT_NAME': 'tenant1', 'ALT_USERNAME': '******', 'ALT_PASSWORD': '******', 'ALT_TENANT_NAME': 'tenant2', 'IMAGE_ID': image_ref, 'IMAGE_ID_ALT': image_ref_alt, 'FLAVOR_REF': '1', 'FLAVOR_REF_ALT': '1', # skip flavor '2' which provides 20Gb ephemerals and lots of RAM... 'COMPUTE_BUILD_INTERVAL': '10', 'COMPUTE_BUILD_TIMEOUT': '600', 'RUN_SSH': 'true', 'NETWORK_FOR_SSH': 'net04', # todo use private instead of floating? 'SSH_USER': '******', 'LIVE_MIGRATION': 'true', 'USE_BLOCKMIG_FOR_LIVEMIG' : 'true', 'COMPUTE_CATALOG_TYPE': 'compute', 'COMPUTE_CREATE_IMAGE_ENABLED': 'true', 'COMPUTE_RESIZE_AVAILABLE': 'false', # not supported with QEMU... 'COMPUTE_CHANGE_PASSWORD_AVAILABLE': 'false', 'COMPUTE_LOG_LEVEL': 'ERROR', 'COMPUTE_WHITEBOX_ENABLED': 'true', 'COMPUTE_SOURCE_DIR': '/opt/stack/nova', 'COMPUTE_CONFIG_PATH': '/etc/nova/nova.conf', 'COMPUTE_BIN_DIR': '/usr/local/bin', 'COMPUTE_PATH_TO_PRIVATE_KEY': path_to_private_key, 'COMPUTE_DB_URI': compute_db_uri, 'IMAGE_CATALOG_TYPE': 'image', 'IMAGE_API_VERSION': '1', 'IMAGE_HOST': self.public_ip, 'IMAGE_PORT': '9292', 'IMAGE_USERNAME': '******', 'IMAGE_PASSWORD': '******', 'IMAGE_TENANT_NAME': 'tenant1', 'ADMIN_USER_NAME': ADMIN_USERNAME, 'ADMIN_PASSWORD': ADMIN_PASSWORD, 'ADMIN_TENANT_NAME': ADMIN_TENANT_FOLSOM, 'IDENTITY_ADMIN_USERNAME': ADMIN_USERNAME, 'IDENTITY_ADMIN_PASSWORD': ADMIN_PASSWORD, 'IDENTITY_ADMIN_TENANT_NAME': ADMIN_TENANT_FOLSOM, 'COMPUTE_ADMIN_USERNAME': ADMIN_USERNAME, 'COMPUTE_ADMIN_PASSWORD': ADMIN_PASSWORD, 'COMPUTE_ADMIN_TENANT_NAME': ADMIN_TENANT_FOLSOM, 'IDENTITY_ADMIN_USERNAME': ADMIN_USERNAME, 'IDENTITY_ADMIN_PASSWORD': ADMIN_PASSWORD, 'IDENTITY_ADMIN_TENANT_NAME': ADMIN_TENANT_FOLSOM, 'VOLUME_CATALOG_TYPE': 'volume', 'VOLUME_BUILD_INTERVAL': '15', 'VOLUME_BUILD_TIMEOUT': '400', 'NETWORK_CATALOG_TYPE': 'network', 'NETWORK_API_VERSION': 'v2.0', 'QUANTUM': 'true', 'TENANT_NETS_REACHABLE': 'false', 'TENANT_NETWORK_CIDR': '192.168.112.0/24', # choose do not overlap with 'net04' 'TENANT_NETWORK_MASK_BITS': '28', # 29 is too less to test quantum quotas (at least 50 ips needed) 'PUBLIC_NETWORK_ID': public_network_id, 'PUBLIC_ROUTER_ID': public_router_id, } return config
def stomp(cls): return cls(root('deployment', 'puppet', 'mcollective', 'examples', 'site.pp'))
def compact(cls): return cls(root('deployment', 'puppet', 'openstack', 'examples', 'site_openstack_ha_compact.pp'), deployment_mode='ha_compact')
def stomp(cls): return cls( root('deployment', 'puppet', 'mcollective', 'examples', 'site.pp'))
def nagios(cls): return cls( root('deployment', 'puppet', 'nagios', 'examples', 'master.pp'))
def full(cls): return cls(root('deployment', 'puppet', 'openstack', 'examples', 'site_openstack_ha_full.pp'), deployment_mode='ha_full')
def single(cls): return cls( root('deployment', 'puppet', 'openstack', 'examples', 'site_openstack_single.pp'))
def tempest_write_config(self, config): with open(root('..', 'tempest.conf'), 'w') as f: f.write(config)
def prepare_tempest_folsom_minimal(self): self.make_shared_storage() template = root("fuel_test", "config", "tempest.conf.folsom.sample") self.prepare.prepare_tempest_folsom(template)
def prepare_tempest_essex_minimal(self): self.make_shared_storage() template = root("fuel_test", "config", "tempest.conf.essex.sample") self.prepare.prepare_tempest_essex(template)
def prepare_tempest_folsom_minimal(self): self.make_shared_storage() template = root('fuel_test', 'config', 'tempest.conf.folsom.sample') self.prepare.prepare_tempest_folsom(template)
def nagios(cls): return cls(root('deployment', 'puppet', 'nagios', 'examples', 'master.pp'))
def minimal(cls): return cls(root('deployment', 'puppet', 'openstack', 'examples', 'site_openstack_ha_minimal.pp'))
def single(cls): return cls( root( 'deployment', 'puppet', 'openstack', 'examples', 'site_openstack_single.pp'))
def prepare_tempest_essex_minimal(self): self.make_shared_storage() template = root('fuel_test', 'config', 'tempest.conf.essex.sample') self.prepare.prepare_tempest_essex(template)