def create_slave(self, **kwargs): site = self.site provider = self.provider fuel_version = self.master_fuel_version current_release = self.current_release meta_info = FUEL_META_INFO[fuel_version] slave_os = meta_info['releases'][current_release]['os'] config = self.config.copy() config.update(utils.filter_kwargs(kwargs)) slave_cpu = config['slave_cpu'] slave_ram = config['slave_ram'] slave_disk = config['slave_disk'] node_id = provider.get_max_node_id(site) + 1 node_name = 'node-' + str(node_id) network_list = provider.get_networks(site) try: print('Creating {0} on site {1}... '.format(node_name, site), end='') sys.stdout.flush() provider.install_vm_node(site, node_name, slave_cpu, slave_ram, boot='pxe', disk_size=slave_disk, networks=network_list, os_variant=slave_os, persistent_boot=True) print('OK') finally: pass
def create_master(self, **kwargs): site = self.site provider = self.provider config = self.config.copy() config.update(utils.filter_kwargs(kwargs)) base_iso = self.base_iso fuel_version = self.iso_fuel_version meta_info = FUEL_META_INFO[fuel_version] master_os = meta_info['master']['os'] vm_install_wait = config['vm_install_wait'] search_domain = config['search_domain'] admin_net = self.__get_admin_network() admin_cidr = admin_net['cidr'] admin_gw = admin_net['gateway'] admin_mask = admin_net['netmask'] public_net = self.__get_public_network() public_net_id = self.public_net_id public_cidr = public_net['cidr'] public_gw = public_net['gateway'] public_mask = public_net['netmask'] master_ip = self.master_ip public_ip = self.public_master_ip master_hostname = config['master_hostname'] master_name = config['master_name'] master_user = config['master_user'] master_pass = config['master_pass'] master_prompt = config['master_prompt'] master_cpu = config['master_cpu'] master_ram = config['master_ram'] master_disk = config['master_disk'] disable_public = config['disable_public'] disable_snapshot = config['disable_snapshot'] iso_image = None try: print('Cleaning up... ', end='') sys.stdout.flush() provider.clean_vm_nodes(site) provider.clean_networks(site) print('OK') print('Creating virtual networks... ', end='') sys.stdout.flush() network_list = provider.create_networks(site, self.networks) print('OK') print('Making the custom ISO image... ', end='') sys.stdout.flush() iso_image = utils.make_custom_iso_image(base_iso, site, data_dir=IMAGE_DIR, ipaddr=master_ip, gateway=admin_gw, dns=admin_gw, netmask=admin_mask, hostname=master_hostname) print('OK') print('Installing Fuel Master node... ', end='') sys.stdout.flush() provider.install_vm_node(site, master_name, vcpus=master_cpu, ram=master_ram, iso_image=iso_image, disk_size=master_disk, networks=network_list, os_variant=master_os, wait=vm_install_wait, delete_media=True) print('OK') self.wait_for_product_vm(45*60) self.disable_master_public = disable_public if not disable_public: print('Enabling outbound network/internet access for the product VM... ', end='') sys.stdout.flush() self.run_remote_script(ENABLE_VM_NETWORK_SCRIPT, public_net_id, public_ip, public_mask, public_gw, public_gw, search_domain, public_cidr) print('OK') print('Setting up Fuel Master VM... ', end='') sys.stdout.flush() self.run_remote_script(SETUP_FUEL_SCRIPT) print('OK') if not disable_snapshot: self.shutdown_master() print('Creating snapshot for Fuel Master recovery... ', end='') sys.stdout.flush() provider.create_vm_snapshot(site, master_name, 'fuel_recovery', 'snapshot for fuel recovery') print('OK') self.start_master() self.wait_for_product_vm() finally: if iso_image and os.path.exists(iso_image): try: os.remove(iso_image) except Exception, e: print(str(e)) print('Warning: ISO image {0} still exists!'.format(iso_image))