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")
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")