Example #1
0
def main(argv):
    req = UpgradeRequest()
    req.process_args(argv)
    logger = setup_engage_logger(__name__)
    upgrade_error_file = os.path.join(req.log_directory, "upgrade_error.json")
    if os.path.exists(upgrade_error_file):
        os.remove(upgrade_error_file)        
    return run(req, logger)
Example #2
0
def main(argv, installer_file_layout=None):
    install_request = InstallRequest()
    install_request.process_args(argv, installer_file_layout)
    logger = log_setup.setup_engage_logger(__name__)
    if os.path.exists(install_request.error_file):
        os.remove(install_request.error_file)
    if os.path.exists(install_request.config_error_file):
        os.remove(install_request.config_error_file)
    try:
        return run(install_request, logger)
    except upgrade_engine.UpgradeRollbackInProgress, e:
        e.write_error_to_file(os.path.join(install_request.installer_file_layout.get_log_directory(), "upgrade_error.json"))
        return 3 # magic number to indicate rollback is in progress
Example #3
0
def main(argv, engage_file_layout=None):
    dr = DeployRequest()
    dr.process_args(argv, engage_file_layout)
    logger = log_setup.setup_engage_logger(__name__)
    if os.path.exists(dr.error_file):
        os.remove(dr.error_file)
    if os.path.exists(dr.config_error_file):
        os.remove(dr.config_error_file)
    try:
        return dr.run(logger)
    except UserError, e:
        if engage_file_layout:
            raise # if called from another script, let that one handle it
        logger.exception("Aborting install due to error.")
        if not os.path.exists(dr.error_file):
            e.write_error_to_file(dr.error_file)
        return 1
Example #4
0
import sys
import tarfile
import os
import os.path
from optparse import OptionParser

import fixup_python_path

from engage.engine.engage_file_layout import get_engine_layout_mgr
from engage.engine.cmdline_script_utils import add_standard_cmdline_options, process_standard_options


from engage.utils.log_setup import setup_engage_logger
logger = setup_engage_logger(__name__)

from engage.utils.system_info_bootstrap import SUPPORTED_PLATFORMS

def _validate_dir_exists(dirname):
    if not os.path.isdir(dirname):
        raise Exception("Directory %s does not exist, your deployment home does not appear to be set up properly" % dirname)

def get_distribution_archive_filename(deployment_home):
    return os.path.join(os.path.join(deployment_home, "engage"), "engage-dist.tar.gz")

def create_distribution_from_deployment_home(deployment_home,
                                             archive_name=None,
                                             include_test_data=False):
    dh = os.path.abspath(os.path.expanduser(deployment_home))
    if not os.path.isdir(dh):
        raise Exception("Deployment home %s does not exist" % dh)
    engage_home = os.path.join(dh, "engage")
Example #5
0
def main():
    parser = OptionParser(usage=usage_msg)
    add_standard_cmdline_options(parser, running_deployment=False,
                                 default_log_level="WARNING")
    parser.add_option("-r", "--resource-file", dest="resource_file", default=None,
                      help="Name of resource file (defaults to <deployment_home>/config/installed_resources.json)")
    parser.add_option("--force", dest='force', default=False,
                      action="store_true",
                      help="If stop or restart, try to force everything to stop")
    parser.add_option("--dry-run", dest="dry_run", default=False,
                      action="store_true",
                      help="If specified, just print what would be done")
    (options, args) = parser.parse_args()

    if len(args)==0:
        parser.print_help()
        sys.exit(0)

    if len(args)<1:
        parser.error("Missing command name. Must be one of %s" % valid_commands)

    (file_layout, deployment_home) = process_standard_options(options, parser, allow_overrides_of_dh=True,
                                                              rotate_logfiles=False)

    if options.resource_file:
        installed_resources_file = os.path.abspath(os.path.expanduser(options.resource_file))
    else:
        installed_resources_file = file_layout.get_installed_resources_file(deployment_home)
    if not os.path.exists(installed_resources_file):
        sys.stderr.write("Error: Installed resources file '%s does not exist\n" %
                         installed_resources_file)
        sys.exit(1)

    logger = setup_engage_logger(__name__)
    
    mgr_pkg_list = get_mgrs_and_pkgs(file_layout, deployment_home, options, installed_resources_file)
    resource_map = {}
    for (mgr, pkg) in mgr_pkg_list:
        resource_map[mgr.id] = mgr

    command = args[0]
    if command not in commands.keys():
        sys.stderr.write("Error: invalid command %s\n" % command)
        parser.print_help()
        sys.exit(1)

    if options.force and command not in ['stop', 'restart']:
        sys.stderr.write("Error: --force option not valid for command %s\n" % command)
        parser.print_help()
        sys.exit(1)

    command_args = args[1:]
    cmd_fn = commands[command]
    try:
        if command in ['stop', 'restart']:
            rc = cmd_fn(command, command_args, mgr_pkg_list, resource_map, logger,
                   options.dry_run, force=options.force)
        else:
            rc = cmd_fn(command, command_args, mgr_pkg_list, resource_map, logger,
                        options.dry_run)
    except CommandError, msg:
        sys.stderr.write("Error: %s\n" % msg)
        sys.exit(1)
Example #6
0
import fixup_python_path

import engage.drivers.service_manager as service_manager
import engage.utils.path as iupath
import engage_utils.process as procutils
import engage.utils.log_setup as log_setup
import engage.utils.file as fileutils
import engage.utils.timeout as iutimeout
from engage.drivers.action import Action, _check_file_exists, check_file_exists, \
                                  sudo_run_program, get_template_subst, \
                                  set_file_mode_bits, ValueAction, \
                                  sudo_run_program, sudo_set_file_perms_by_name
from socket import gethostname

logger = log_setup.setup_engage_logger(__name__)

from engage.utils.user_error import EngageErrInf, UserError, convert_exc_to_user_error

import gettext
_ = gettext.gettext

errors = { }

def define_error(error_code, msg):
    global errors
    error_info = EngageErrInf(__name__, error_code, msg)
    errors[error_info.error_code] = error_info

# error codes
ERR_MYSQL_QUERY          = 1