コード例 #1
0
ファイル: main.py プロジェクト: paegun/dcos-autoscaler
def main(provider_name, timer, scale_up_cap, scale_down_cap, scale_max,
         scale_min, azure_subscription_id, azure_tenant_id, azure_client_id,
         azure_client_secret, azure_location, azure_resource_group,
         azure_vmss_name, verbose):
    #Logger settings
    logger_handler = logging.StreamHandler(sys.stderr)
    logger_handler.setFormatter(
        logging.Formatter(
            '%(asctime)s - %(name)s - %(levelname)s - %(message)s'))
    logger.addHandler(logger_handler)
    logger.setLevel(DEBUG_LOGGING_MAP.get(verbose, logging.CRITICAL))

    logger.debug("Debug mode activated")

    if not provider_name:
        logger.error("Provider not specified, ex : --provider Azure")
        sys.exit(1)

    logger.debug("Provider Name : " + provider_name)
    logger.debug("Timer : " + str(timer))
    logger.debug("Scale Up Cap : " + str(scale_up_cap))
    logger.debug("Scale Down Cap : " + str(scale_down_cap))
    logger.debug("Maximum Nodes : " + str(scale_max))
    logger.debug("Minimum Nodes : " + str(scale_min))
    logger.debug("Azure Subscription ID : " + azure_subscription_id)
    logger.debug("Azure Tenant ID : " + azure_tenant_id)
    logger.debug("Azure Client ID : " + azure_client_id)
    logger.debug("Azure Client Secret : " + azure_client_secret)
    logger.debug("Azure Resource Group : " + azure_resource_group)
    logger.debug("Azure Location : " + azure_location)
    logger.debug("Azure VMSS Targeted : " + azure_vmss_name)

    logger.info("DC/OS Autoscaler Started")

    cluster = Cluster(provider_name=provider_name,
                      scale_up_cap=scale_up_cap,
                      scale_down_cap=scale_down_cap,
                      scale_max=scale_max,
                      scale_min=scale_min,
                      azure_subscription_id=azure_subscription_id,
                      azure_tenant_id=azure_tenant_id,
                      azure_client_id=azure_client_id,
                      azure_client_secret=azure_client_secret,
                      azure_location=azure_location,
                      azure_resource_group=azure_resource_group,
                      azure_vmss_name=azure_vmss_name)
    while True:
        cluster.check_health()
        cluster.decide_to_scale()
        time.sleep(timer)

    logger.info("DC/OS Autoscaler Stopped")
コード例 #2
0
ファイル: main.py プロジェクト: makbn/dcos-autoscaler
def main(provider_name, timer, scale_up_cap, scale_down_cap, scale_max,
         scale_min, endpoint_path, azure_subscription_id, azure_tenant_id,
         azure_client_id, azure_client_secret, azure_location,
         azure_resource_group, azure_vmss_name, verbose):
    #Logger settings
    logger_handler = logging.StreamHandler(sys.stderr)
    loginformater = '%(asctime)s - %(name)s - %(levelname)s - %(message)s'
    logger_handler.setFormatter(logging.Formatter(loginformater))
    LOGGER.addHandler(logger_handler)
    LOGGER.setLevel(DEBUG_LOGGING_MAP.get(verbose, logging.CRITICAL))

    LOGGER.debug("Debug mode activated")

    #os.environ.get('DATABASE_NAME', '')

    if not os.environ.get('AS_PROVIDER_NAME', provider_name):
        LOGGER.error("Provider not specified, ex : --provider-name Azure")
        sys.exit(1)

    LOGGER.debug("Provider Name : " +
                 str(os.environ.get('AS_PROVIDER_NAME', provider_name)))
    LOGGER.debug("Timer : " + str(os.environ.get('AS_TIMER', timer)))
    LOGGER.debug("Scale Up Cap : " +
                 str(os.environ.get('AS_SCALE_UP_MAX', scale_up_cap)))
    LOGGER.debug("Scale Down Cap : " +
                 str(os.environ.get('AS_SCALE_DOWN_MAX', scale_down_cap)))
    LOGGER.debug("Maximum Nodes : " +
                 str(os.environ.get('AS_SCALE_MAX', scale_max)))
    LOGGER.debug("Minimum Nodes : " +
                 str(os.environ.get('AS_SCALE_MIN', scale_min)))
    LOGGER.debug("EndPoint Path : " +
                 str(os.environ.get('AS_ENDPOINT', endpoint_path)))
    LOGGER.debug(
        "Azure Subscription ID : " +
        str(os.environ.get('AZURE_SUBSCRIPTION_ID', azure_subscription_id)))
    LOGGER.debug("Azure Tenant ID : " +
                 str(os.environ.get('AZURE_TENANT_ID', azure_tenant_id)))
    LOGGER.debug("Azure Client ID : " +
                 str(os.environ.get('AZURE_CLIENT_ID', azure_client_id)))
    LOGGER.debug(
        "Azure Client Secret : " +
        str(os.environ.get('AZURE_CLIENT_SECRET', azure_client_secret)))
    LOGGER.debug("Azure Resource Group : " +
                 str(os.environ.get('AZURE_RG', azure_resource_group)))
    LOGGER.debug("Azure Location : " +
                 str(os.environ.get('AZURE_LOCATION', azure_location)))
    LOGGER.debug("Azure VMSS Targeted : " +
                 str(os.environ.get('AZURE_VMSS', azure_vmss_name)))

    LOGGER.info("DC/OS Autoscaler Started")

    cluster = Cluster(
        provider_name=os.environ.get('AS_PROVIDER_NAME', provider_name),
        scale_up_cap=os.environ.get('AS_SCALE_UP_MAX', scale_up_cap),
        scale_down_cap=os.environ.get('AS_SCALE_DOWN_MAX', scale_down_cap),
        scale_max=os.environ.get('AS_SCALE_MAX', scale_max),
        scale_min=os.environ.get('AS_SCALE_MIN', scale_min),
        endpoint_path=os.environ.get('AS_ENDPOINT', endpoint_path),
        azure_subscription_id=os.environ.get('AZURE_SUBSCRIPTION_ID',
                                             azure_subscription_id),
        azure_tenant_id=os.environ.get('AZURE_TENANT_ID', azure_tenant_id),
        azure_client_id=os.environ.get('AZURE_CLIENT_ID', azure_client_id),
        azure_client_secret=os.environ.get('AZURE_CLIENT_SECRET',
                                           azure_client_secret),
        azure_location=os.environ.get('AZURE_LOCATION', azure_location),
        azure_resource_group=os.environ.get('AZURE_RG', azure_resource_group),
        azure_vmss_name=os.environ.get('AZURE_VMSS', azure_vmss_name))
    while True:
        metrics = {
            "totalCPU": 0,
            "totalMEM": 0,
            "usedCPU": 0,
            "usedMEM": 0,
            "ratioCPU": 0,
            "ratioMEM": 0,
            "nbNodes": 0
        }
        cluster.check_health(metrics)
        LOGGER.info("Total Cluster CPU = " + str(metrics["totalCPU"]) +
                    " - Total Cluster CPU = " + str(metrics["totalMEM"]))
        LOGGER.info("Total Used CPU = " + str(metrics["usedCPU"]) +
                    " - Total Cluster MEM = " + str(metrics["usedMEM"]))
        LOGGER.info("Ratio CPU = " + str(metrics["ratioCPU"]) +
                    "% - Ratio MEM = " + str(metrics["ratioMEM"]) + "%")
        if cluster.decide_to_scale(metrics) == 1:
            LOGGER.info("Scale Up Kicked ... In Progress")
            cluster.scale_cluster_up(metrics)
        if cluster.decide_to_scale(metrics) == -1:
            LOGGER.info("Scale Down Kicked... In Progress")
            cluster.scale_cluster_down(metrics)
        time.sleep(timer)

    LOGGER.info("DC/OS Autoscaler Stopped")