def setUp(self): """unittest standard setUp method Runs before each test_ method """ print "Setting Up: %s" % self.id() # render the template g.render_template(self.template_file, self.template_vars, self.output_file, self.search_path) # read the resulting config file built from template self.output_config = g.load_config(self.output_file) g.show_config(self.output_config)
def main(): """Main function""" args = parse_args() if args.config_list: handle_configs(args.config_list) g.show_config(g.config) output_file = "rendered_template.txt" if args.output_file: output_file = args.output_file if args.template_file: g.render_template(args.template_file, g.config, output_file)
def add_node_to_nfs_ganesha_cluster(servers, node_to_add, vip): """Adds a node to nfs ganesha cluster using gdeploy Args: servers (list): Nodes of existing nfs-ganesha cluster. node_to_add (str): Node to add in existing nfs-ganesha cluster. vip (str): virtual IP of the node mentioned in 'node_to_add' param. Returns: bool : True on successfully adding node to nfs-ganesha cluster. False otherwise Example: add_node_to_nfs_ganesha_cluster(servers, node_to_add, vip) """ conf_file = "add_node_to_nfs_ganesha_cluster.jinja" gdeploy_config_file = GDEPLOY_CONF_DIR + conf_file tmp_gdeploy_config_file = ("/tmp/" + os.path.splitext(conf_file)[0] + ".conf") cluster_nodes = servers hosts = servers + [node_to_add] values_to_substitute_in_template = { 'servers': hosts, 'node_to_add': node_to_add, 'cluster_nodes': cluster_nodes, 'vip': vip } ret = g.render_template(gdeploy_config_file, values_to_substitute_in_template, tmp_gdeploy_config_file) if not ret: g.log.error("Failed to substitute values in %s file" % tmp_gdeploy_config_file) return False cmd = "gdeploy -c " + tmp_gdeploy_config_file retcode, stdout, stderr = g.run_local(cmd) if retcode != 0: g.log.error("Failed to execute gdeploy cmd %s for adding node " "in existing nfs ganesha cluster" % cmd) g.log.error("gdeploy console output for adding node in " "existing nfs-ganesha cluster: %s" % stderr) return False g.log.info("gdeploy output for adding node in existing " "nfs-ganesha cluster: %s" % stdout) # pcs status output _, _, _ = g.run(servers[0], "pcs status") # Removing gdeploy conf file from /tmp os.remove(tmp_gdeploy_config_file) return True
def teardown_nfs_ganesha_cluster(servers, force=False): """Teardown nfs ganesha cluster using gdeploy Args: servers (list): Nodes in nfs-ganesha cluster to teardown entire cluster force (bool): if this option is set to True, then nfs ganesha cluster is teardown using force cleanup Returns: bool : True on successfully teardown nfs-ganesha cluster. False otherwise Example: teardown_nfs_ganesha_cluster(servers) """ conf_file = "teardown_nfs_ganesha_cluster.jinja" gdeploy_config_file = GDEPLOY_CONF_DIR + conf_file tmp_gdeploy_config_file = ("/tmp/" + os.path.splitext(conf_file)[0] + ".conf") values_to_substitute_in_template = {'servers': servers} ret = g.render_template(gdeploy_config_file, values_to_substitute_in_template, tmp_gdeploy_config_file) if not ret: g.log.error("Failed to substitute values in %s file" % tmp_gdeploy_config_file) return False cmd = "gdeploy -c " + tmp_gdeploy_config_file retcode, stdout, stderr = g.run_local(cmd) if retcode != 0: g.log.error("Failed to execute gdeploy cmd %s for teardown nfs " "ganesha cluster" % cmd) g.log.error("gdeploy console output for teardown nfs-ganesha " "cluster: %s" % stderr) return False g.log.info("gdeploy output for teardown nfs-ganesha cluster: %s" % stdout) # Removing gdeploy conf file from /tmp os.remove(tmp_gdeploy_config_file) if force: g.log.info("Executing force cleanup...") for server in servers: cmd = ("/usr/libexec/ganesha/ganesha-ha.sh --teardown " "/var/run/gluster/shared_storage/nfs-ganesha") _, _, _ = g.run(server, cmd) _, _, _ = stop_nfs_ganesha_service(server) return True
def update_volume_export_configuration(mnode, volname, config_to_update): """Updates volume export configuration and runs refresh config for the volume. Args: mnode (str): Node in which refresh config command will be executed. volname (str): volume name config_to_update (str): config lines to update in volume export configuration file. Returns: bool : True on successfully updating export config for nfs-ganesha volume. False otherwise Example: update_volume_export_configuration(mnode, volname, config_to_update) """ conf_file = "nfs_ganesha_update_export_file.jinja" gdeploy_config_file = GDEPLOY_CONF_DIR + conf_file tmp_gdeploy_config_file = ("/tmp/" + os.path.splitext(conf_file)[0] + ".conf") values_to_substitute_in_template = { 'server': mnode, 'volname': volname, 'config_to_update': config_to_update } ret = g.render_template(gdeploy_config_file, values_to_substitute_in_template, tmp_gdeploy_config_file) if not ret: g.log.error("Failed to substitute values in %s file" % tmp_gdeploy_config_file) return False cmd = "gdeploy -c " + tmp_gdeploy_config_file retcode, stdout, stderr = g.run_local(cmd) if retcode != 0: g.log.error("Failed to execute gdeploy cmd %s to update export " "configuration on nfs ganesha volume" % cmd) g.log.error("gdeploy console output to update export " "configuration on nfs ganesha volume: %s" % stderr) return False g.log.info("gdeploy output to update export configuration " "on nfs ganesha volume: %s" % stdout) # Removing the gdeploy conf file from /tmp os.remove(tmp_gdeploy_config_file) return True
def delete_node_from_nfs_ganesha_cluster(servers, node_to_delete): """Deletes a node from existing nfs ganesha cluster using gdeploy Args: servers (list): Nodes of existing nfs-ganesha cluster. node_to_delete (str): Node to delete from existing nfs-ganesha cluster. Returns: bool : True on successfully creating nfs-ganesha cluster. False otherwise Example: delete_node_from_nfs_ganesha_cluster(servers, node_to_delete) """ conf_file = "delete_node_from_nfs_ganesha_cluster.jinja" gdeploy_config_file = GDEPLOY_CONF_DIR + conf_file tmp_gdeploy_config_file = ("/tmp/" + os.path.splitext(conf_file)[0] + ".conf") values_to_substitute_in_template = { 'servers': servers, 'node_to_delete': node_to_delete } ret = g.render_template(gdeploy_config_file, values_to_substitute_in_template, tmp_gdeploy_config_file) if not ret: g.log.error("Failed to substitute values in %s file" % tmp_gdeploy_config_file) return False cmd = "gdeploy -c " + tmp_gdeploy_config_file retcode, stdout, stderr = g.run_local(cmd) if retcode != 0: g.log.error("Failed to execute gdeploy cmd %s for deleting node " "from existing nfs ganesha cluster" % cmd) g.log.error("gdeploy console output for deleting node from " "existing nfs-ganesha cluster: %s" % stderr) return False g.log.info("gdeploy output for deleting node from existing " "nfs-ganesha cluster: %s" % stdout) # pcs status output _, _, _ = g.run(servers[0], "pcs status") # Removing gdeploy conf file from /tmp os.remove(tmp_gdeploy_config_file) return True
def create_nfs_ganesha_cluster(servers, vips): """Creates nfs ganesha cluster using gdeploy Args: servers (list): Nodes in which nfs-ganesha cluster will be created. vips (list): virtual IPs of each servers mentioned in 'servers' param. Returns: bool : True on successfully creating nfs-ganesha cluster. False otherwise Example: create_nfs_ganesha_cluster(servers, vips) """ conf_file = "create_nfs_ganesha_cluster.jinja" gdeploy_config_file = GDEPLOY_CONF_DIR + conf_file tmp_gdeploy_config_file = ("/tmp/" + os.path.splitext(conf_file)[0] + ".conf") values_to_substitute_in_template = {'servers': servers, 'vips': vips} ret = g.render_template(gdeploy_config_file, values_to_substitute_in_template, tmp_gdeploy_config_file) if not ret: g.log.error("Failed to substitute values in %s file" % tmp_gdeploy_config_file) return False cmd = "gdeploy -c " + tmp_gdeploy_config_file retcode, stdout, stderr = g.run_local(cmd) if retcode != 0: g.log.error("Failed to execute gdeploy cmd %s for creating nfs " "ganesha cluster" % cmd) g.log.error("gdeploy console output for creating nfs-ganesha " "cluster: %s" % stderr) return False g.log.info("gdeploy output for creating nfs-ganesha cluster: %s" % stdout) # pcs status output _, _, _ = g.run(servers[0], "pcs status") # Removing the gdeploy conf file from /tmp os.remove(tmp_gdeploy_config_file) return True
def run_refresh_config(mnode, volname): """Runs refresh config on nfs ganesha volume. Args: mnode (str): Node in which refresh config command will be executed. volname (str): volume name Returns: bool : True on successfully running refresh config on nfs-ganesha volume. False otherwise Example: run_refresh_config("abc.com", volname) """ conf_file = "nfs_ganesha_refresh_config.jinja" gdeploy_config_file = GDEPLOY_CONF_DIR + conf_file tmp_gdeploy_config_file = ("/tmp/" + os.path.splitext(conf_file)[0] + ".conf") values_to_substitute_in_template = {'server': mnode, 'volname': volname} ret = g.render_template(gdeploy_config_file, values_to_substitute_in_template, tmp_gdeploy_config_file) if not ret: g.log.error("Failed to substitute values in %s file" % tmp_gdeploy_config_file) return False cmd = "gdeploy -c " + tmp_gdeploy_config_file retcode, stdout, stderr = g.run_local(cmd) if retcode != 0: g.log.error("Failed to execute gdeploy cmd %s for running " "refresh config on nfs ganesha volume" % cmd) g.log.error("gdeploy console output for running refresh config " "on nfs ganesha volume: %s" % stderr) return False g.log.info("gdeploy output for running refresh config " "on nfs ganesha volume: %s" % stdout) # Removing the gdeploy conf file from /tmp os.remove(tmp_gdeploy_config_file) return True
def set_nfs_ganesha_client_configuration(client_nodes): """Sets pre-requisites in the client machines to mount with nfs-ganesha. Args: client_nodes (list): Client nodes in which the prerequisite are done to do nfs-ganesha mount. Returns: bool : True on successfully creating nfs-ganesha cluster. False otherwise Example: set_nfs_ganesha_client_configuration(client_nodes) """ conf_file = "nfs_ganesha_client_configuration.jinja" gdeploy_config_file = GDEPLOY_CONF_DIR + conf_file tmp_gdeploy_config_file = ("/tmp/" + os.path.splitext(conf_file)[0] + ".conf") values_to_substitute_in_template = {'servers': client_nodes} ret = g.render_template(gdeploy_config_file, values_to_substitute_in_template, tmp_gdeploy_config_file) if not ret: g.log.error("Failed to substitute values in %s file" % tmp_gdeploy_config_file) return False cmd = "gdeploy -c " + tmp_gdeploy_config_file retcode, stdout, stderr = g.run_local(cmd) if retcode != 0: g.log.error("Failed to execute gdeploy cmd %s for setting nfs " "ganesha client configuration" % cmd) g.log.error("gdeploy console output for setting nfs-ganesha " "client configuration: %s" % stderr) return False g.log.info("gdeploy output for setting nfs-ganesha client " "configuration: %s" % stdout) # Removing the gdeploy conf file from /tmp os.remove(tmp_gdeploy_config_file) return True
def setUp(self): """unittest standard setUp method Runs before each test_ method """ print "Setting Up: %s" % self.id() # render the template self.returned_template = g.render_template(self.template_file, self.template_vars, self.output_file, self.search_path) # read the resulting config file built from template self.output_config = g.load_config(self.output_file) g.show_config(self.output_config) self.returned_config = g.load_yaml_string(self.returned_template) g.show_config(self.returned_config)