{"id":37152198,"url":"https://github.com/vmware-archive/autoscaler","last_synced_at":"2026-01-14T17:58:22.228Z","repository":{"id":31364882,"uuid":"34927814","full_name":"vmware-archive/autoscaler","owner":"vmware-archive","description":"autoscaler prototype in golang","archived":true,"fork":false,"pushed_at":"2020-11-18T17:24:28.000Z","size":177,"stargazers_count":2,"open_issues_count":0,"forks_count":1,"subscribers_count":13,"default_branch":"master","last_synced_at":"2025-09-07T20:47:08.763Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/vmware-archive.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2015-05-01T22:54:13.000Z","updated_at":"2023-01-28T11:49:37.000Z","dependencies_parsed_at":"2022-08-24T14:21:48.076Z","dependency_job_id":null,"html_url":"https://github.com/vmware-archive/autoscaler","commit_stats":null,"previous_names":["cf-platform-eng/autoscaler"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/vmware-archive/autoscaler","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/vmware-archive%2Fautoscaler","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/vmware-archive%2Fautoscaler/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/vmware-archive%2Fautoscaler/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/vmware-archive%2Fautoscaler/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/vmware-archive","download_url":"https://codeload.github.com/vmware-archive/autoscaler/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/vmware-archive%2Fautoscaler/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28429116,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-14T16:38:47.836Z","status":"ssl_error","status_checked_at":"2026-01-14T16:34:59.695Z","response_time":107,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2026-01-14T17:58:21.280Z","updated_at":"2026-01-14T17:58:22.220Z","avatar_url":"https://github.com/vmware-archive.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"# autoscaler is no longer actively maintained by VMware.\n\n# autoscaler\nThis is a experimental prototype of auto scaler functionality to scale the instances that are mapped to a specific target/queue/destination based on some external monitoring engine that would recommend the action to take. \n\nThe monitoring aspect is outside of this autoscaler and its more of a end invoker to change the instance based on request to scale up or down. The monitoring system should poll or monitor the end state actively (resources or queue depth or other constraints) to come up with the decision to scale bnd handling off the scaling action to the autoscaler.\n\nRun \"go get ...\" to install the dependencies and then run \"go install\" to install the autoscaler binary to run locally.\nFor testing on CF, just following the section below.\n\n# Running on CF or Locally\nThere are two ways to test:\n1) Push this as an application to CF \n2) Just run the autoscaler locally with CF \n\nThe autoscaler application would require three environment variables to set for the Application to scale the managed app instances. Check the Credentials page of the Pivotal Elastic Runtime to get the following property (under UAA -\u003e client section):\n```\nSample entry inside the Ops Mgr -\u003e Elastic Runtime Tile -\u003e Credentials tab -\u003e Search for Autoscaling\n\nAutoscale Client Credentials  autoscaling_service / fe20d9a573c60b220a02\n```\n.\n* UAA_CLIENT_ID\n  This should be set to `autoscaling_service`.\n  If its not possible or autoscaling_service client does not exist, please see the check on creating the uaac client tokens\n* UAA_CLIENT_SECRET\n  This should be set to the generated password or associated password for the corresponding client `autoscaling_service`\n* DOMAIN\n  This should be set to the CF's system domain path (without protocol, ex: `10.244.0.34.xip.io` if running against some xip addr or `system.cf-app.com`)\n\nIf running the autoscaler app locally (not inside CF), do exports of the variable\n```\n  export UAA_CLIENT_ID=autoscaling_service\n  export UAA_CLIENT_SECRET=_FILL_ME_\n  export DOMAIN=_FILL_ME_               #Example: 10.244.0.34.xip.io\n```\nIf running the autoscaler app by pushing to CF, use set-env to set the variables before restaging or specify in manifest.yml\n```\n  cf set-env autoscaler UAA_CLIENT_ID autoscaling_service\n  cf set-env autoscaler UAA_CLIENT_SECRET _FILL_ME_\n  cf set-env autoscaler DOMAIN            _FILL_ME_   #Example: 10.244.0.34.xip.io\n```\n\n# Persistence\nIts possible to allow mysql service binding to be used for persisting the app state to survive restarts/crashes. Uncomment the services section inside the manifest and specify the service instance name. Any new registration of apps against targets would be persisted to DB and reloaded on startup.\n\n# Running the appscaler locally\nThe appscaler uses default port of 8080 (which can be overridden via an Env variable PORT that can specify a different port).\nFollowing are the REST style endpoints exposed to take action:\n\n# Exposed Methods:  \n* POST /register  \n Description: Register or update dynamically a single destination/queue with an app (with org and space details) with the Autoscaler.\n JSON Input: ```  ' { \"queue\" : \"RabbitQ\", \"app\" : \"rabbitmq-consumer\", \"org\" : \"Logistics\", \"space\" : \"preprod\" } ' ```\n\n* POST /load  \n Description: Bulk register of multiple destination/queue app sets (with org and space details) with the Autoscaler.  \n JSON Input \n ```\n \"[ { \"queue\" : \"testQ1\", \"app\" : \"eureka-service\", \"org\" : \"platform\", \"space\" : \"josh\" },\n    { \"queue\" : \"testQ2\", \"app\" : \"cf-bg-demo-blue\", \"org\" : \"platform\", \"space\" : \"mine\" }, \n    { \"queue\" : \"testQ5\", \"app\" : \"test-bp\", \"org\" : \"platform\", \"space\" : \"test\" }\n ]\"\n ``` \n\n* DELETE /register/{queueName}  \n Description: Remove the mapping of the destination/queue and app from the Autoscaler.    \n\n* GET /details  \n Description: Dump all data about all registered destinations/queues and associated app instance details    \n JSON Input:\n ```\n \"[{ 'DestinationName' : 'testQ2', 'AppName' : 'cf-bg-demo-blue', 'Instances': '1'}\n   { 'DestinationName' : 'testQ3', 'AppName' : 'my-cgm-green', 'Instances': '1'}\n   { 'DestinationName' : 'testQ4', 'AppName' : 'hystrix-sample', 'Instances': '1'}\n   { 'DestinationName' : 'testQ5', 'AppName' : 'wls-test-bp', 'Instances': '1'}\n   { 'DestinationName' : 'testQ1', 'AppName' : 'eureka-service', 'Instances': '1'}]\"\n  ```\n\n* GET /details/{queueName}  \n Description: Dump data about a registered destination/queue and associated app instance details    \n Sample output: \n ``` { 'DestinationName' : 'testQ4', 'AppName' : 'hystrix-sample', 'Instances': '1'} ```\n\n* PUT /scale/{queueName}/up/{increments}  \n Description: Scale up the mapped app instances associated with the Queue in increments\n\n* PUT /scale/{queueName}/down/{increments}  \n Description: Scale down the mapped app instances associated with the Queue in increments\n\n# To run on CF\n\nAutoscaler needs a UAA Client created ahead of time that has the requisite privileges to change the instance count of any app managed by it.\nIf there is already autoscaling tile installed (part of PCF install), then the same set of client credentials can be used.\n\n# UAA Client Token for managing Autoscaling\nSteps to create the UAA Client with right permissions:\n```\n# setup UAAC, the command line for UAA\ngem install cf-uaac\nuaac target uaa.\u003cyour_domain\u003e\n\n# get a token that is capable of creating your new UAA client\nuaac token client get admin --scope \"clients.read,clients.write\"\n# the admin client secret (client! not admin scim user) is in the CF deployment manifest under uaa properties\n\nuaac client add autoscaler --scope \"openid,cloud_controller.permissions,cloud_controller.read,cloud_controller.write\" --authorized_grant_types \"client_credentials,authorization_code\" --authorities \"cloud_controller.write,cloud_controller.read,cloud_controller.admin notifications.write critical_notifications.write emails.write\" --access_token_validity 3600 --autoapprove true\n# use whatever secret you want\n```\nYou now have a UAA client (UAA_CLIENT_ID environment variable) called *autoscaler* with whatever secret you just chose above. \nYou need to configure the autoscaler app to know the client secret using the UAA_CLIENT_SECRET environment variable\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fvmware-archive%2Fautoscaler","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fvmware-archive%2Fautoscaler","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fvmware-archive%2Fautoscaler/lists"}