Source code for esg_setup

import os
import socket
import logging
import platform
import sys

import yaml
from esgf_utilities import pybash

logger = logging.getLogger("esgf_logger" +"."+ __name__)

with open(os.path.join(os.path.dirname(__file__), os.pardir, 'esg_config.yaml'), 'r') as config_file:
    config = yaml.load(config_file)

[docs]def exit_on_false(assertion, err_msg): ''' Exit if the assertion fails ''' try: assert assertion, err_msg except AssertionError: logger.error(err_msg) raise
[docs]def check_if_root(): '''Check to see if the user has root privileges''' print "Checking for root privileges..." err_msg = "This program must be run with root privileges" exit_on_false(os.geteuid() == 0, err_msg) logger.debug("Root privileges found") return True
[docs]def check_os(): ''' Check if the operating system on server is Redhat or CentOS ''' print "Checking operating system..." print " {}".format(platform.platform()) machine = platform.machine() req_machines = ['x86_64'] err_msg = "Accepted machine types: {}, Found: {}".format(req_machines, machine) exit_on_false(machine in req_machines, err_msg) dist = platform.linux_distribution(full_distribution_name=0) name = dist[0].lower() req_names = ['rhel', 'redhat', 'centos', 'scientific'] err_msg = "Accepted distributions: {}, Found: {}".format(req_names, name or "None") exit_on_false(name in req_names, err_msg) major = dist[1].split('.')[0] req_major = ['6'] err_msg = "Accepted versions: {}, Found: {}".format(req_major, major or "None") exit_on_false(major in req_major, err_msg) logger.debug("dist: %s", dist) return True
[docs]def check_prerequisites(): ''' A check for what is expected to be on the system a-priori that we are not going to install or be responsible for. ''' # checking for OS, architecture, distribution and version print "Checking prerequisites..." check_os() check_if_root() return True
[docs]def create_esg_directories(): '''Create directories to hold ESGF scripts, config files, and logs''' directories_to_check = [ config["scripts_dir"], config["esg_backup_dir"], config["esg_tools_dir"], config["esg_log_dir"], config["esg_config_dir"], config["esg_etc_dir"], config["tomcat_conf_dir"] ] for directory in directories_to_check: if not os.path.isdir(directory): pybash.mkdir_p(directory) os.chmod(config["esg_etc_dir"], 0777) return True