{"id":31581172,"url":"https://github.com/pierluigi-vitiello/autoscaler_interattivo_plugin_devstack","last_synced_at":"2025-10-05T21:54:22.248Z","repository":{"id":314707039,"uuid":"1056193525","full_name":"pierluigi-vitiello/Autoscaler_Interattivo_Plugin_Devstack","owner":"pierluigi-vitiello","description":"Interactive autoscaler plugin for DevStack/OpenStack that allows scaling a VM between flavors with a simple CLI menu.","archived":false,"fork":false,"pushed_at":"2025-09-14T08:25:48.000Z","size":164,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2025-09-14T09:20:47.187Z","etag":null,"topics":["autoscaler","bash-script","cloud","cloud-computing","devstart","interactive","openstack","python","ubuntu","vm","vm-scaleset","vmware","vmware-workstation"],"latest_commit_sha":null,"homepage":"https://github.com/pierluigi-vitiello/Autoscaler_Interattivo_Plugin_Devstack","language":"Shell","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/pierluigi-vitiello.png","metadata":{"files":{"readme":"README-ENG.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,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2025-09-13T15:28:41.000Z","updated_at":"2025-09-14T08:25:51.000Z","dependencies_parsed_at":"2025-09-14T09:20:49.679Z","dependency_job_id":"fb849164-0e28-4851-9749-67b5677afc16","html_url":"https://github.com/pierluigi-vitiello/Autoscaler_Interattivo_Plugin_Devstack","commit_stats":null,"previous_names":["pierluigi-vitiello/autoscaler_interattivo_plugin_devstack"],"tags_count":1,"template":false,"template_full_name":null,"purl":"pkg:github/pierluigi-vitiello/Autoscaler_Interattivo_Plugin_Devstack","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pierluigi-vitiello%2FAutoscaler_Interattivo_Plugin_Devstack","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pierluigi-vitiello%2FAutoscaler_Interattivo_Plugin_Devstack/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pierluigi-vitiello%2FAutoscaler_Interattivo_Plugin_Devstack/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pierluigi-vitiello%2FAutoscaler_Interattivo_Plugin_Devstack/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/pierluigi-vitiello","download_url":"https://codeload.github.com/pierluigi-vitiello/Autoscaler_Interattivo_Plugin_Devstack/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pierluigi-vitiello%2FAutoscaler_Interattivo_Plugin_Devstack/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":278526245,"owners_count":26001326,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-10-05T02:00:06.059Z","response_time":54,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"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":["autoscaler","bash-script","cloud","cloud-computing","devstart","interactive","openstack","python","ubuntu","vm","vm-scaleset","vmware","vmware-workstation"],"created_at":"2025-10-05T21:54:21.238Z","updated_at":"2025-10-05T21:54:22.237Z","avatar_url":"https://github.com/pierluigi-vitiello.png","language":"Shell","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Interactive Autoscaler – DevStack Plugin\n\nDevStack plugin + interactive tools to **resize an OpenStack VM** (e.g., `as.small` ⇄ `as.medium`) via a **colored, one‑key TUI** and an optional **demo mode**.\n\n## Key Features\n\n- Flavor **UP/DOWN** resizing for a target VM.\n- **Status** check (flavor, IP, power, task, etc.).\n- **Demo loop** toggling resize every *n* seconds.\n- **Auto‑skip** if the VM already matches the desired flavor.\n- Scripts tailored for **DevStack** (user `stack`).\n\n---\n\n## Requirements\n\n- Ubuntu 22.04 / 24.04 recommended, with DevStack.\n- `stack` user with `NOPASSWD` sudo.\n- **OpenStackClient** available as `openstack` in `PATH`.\n- Working network + Internet access (for GitHub installation).\n- A **Cirros** image in Glance (e.g., `cirros-0.6.3-x86_64-disk`).\n- Test flavors: `as.small`, `as.medium` (the plugin handles/validates them).\n\n\u003e Suggested: VM with ≥ 8 GB RAM and ≥ 40 GB disk for smoother tests.\n\n---\n\n## Installation (A) – From GitHub (recommended)\n\n1. **Prepare DevStack** (if not already present):\n   ```bash\n   # as root (or via sudo)\n   adduser --disabled-password --gecos \"\" stack || true\n   echo \"stack ALL=(ALL) NOPASSWD:ALL\" \u003e/etc/sudoers.d/stack\n   chmod 440 /etc/sudoers.d/stack\n\n   apt update \u0026\u0026 apt -y install git vim curl\n   mkdir -p /opt/stack \u0026\u0026 chown -R stack:stack /opt/stack\n   su - stack\n\n   # Clone DevStack\n   cd /opt/stack\n   git clone https://opendev.org/openstack/devstack.git\n   cd devstack\n   ```\n\n2. **Create `local.conf`** with the plugin enabled (GitHub):\n   ```ini\n   [[local|localrc]]\n   ADMIN_PASSWORD=admin\n   DATABASE_PASSWORD=$ADMIN_PASSWORD\n   RABBIT_PASSWORD=$ADMIN_PASSWORD\n   SERVICE_PASSWORD=$ADMIN_PASSWORD\n   SERVICE_TOKEN=$ADMIN_PASSWORD\n   HOST_IP=YOUR_HOST_IP\n   OS_IDENTITY_API_VERSION=3\n\n   # Enable the plugin from GitHub repository\n   enable_plugin autoscaler-interattivo-plugin https://github.com/pierluigi-vitiello/Autoscaler_Interattivo_Plugin_Devstack.git\n\n   # Customizable plugin variables (override defaults)\n   AUTOSCALER_SERVER_NAME=auto-vm-1\n   AUTOSCALER_IMAGE_NAME=cirros-0.6.3-x86_64-disk\n   AUTOSCALER_FLAVOR_SMALL=as.small\n   AUTOSCALER_FLAVOR_MEDIUM=as.medium\n   ```\n\n3. **Bring DevStack up**:\n   ```bash\n   cd /opt/stack/devstack\n   ./stack.sh\n   ```\n\n4. **Run the tool**:\n   ```bash\n   # credentials (admin/admin) – adapt to your env\n   source /opt/stack/devstack/openrc admin admin\n\n   # launch interactive TUI\n   /opt/stack/autoscaler-interattivo-plugin/bin/run_autoscaler_interactive.sh\n   ```\n\n---\n\n## Installation (B) – Local sources (folder or ZIP)\n\n1. **Copy the plugin into `/opt/stack`**:\n   ```bash\n   sudo rm -rf /opt/stack/autoscaler-interattivo-plugin\n   sudo cp -a /path/to/your/autoscaler-interattivo-plugin /opt/stack/\n   sudo chown -R stack:stack /opt/stack/autoscaler-interattivo-plugin\n   ```\n\n2. **Configure `local.conf`** to use the local path:\n   ```ini\n   [[local|localrc]]\n   ADMIN_PASSWORD=admin\n   DATABASE_PASSWORD=$ADMIN_PASSWORD\n   RABBIT_PASSWORD=$ADMIN_PASSWORD\n   SERVICE_PASSWORD=$ADMIN_PASSWORD\n   SERVICE_TOKEN=$ADMIN_PASSWORD\n   HOST_IP=YOUR_HOST_IP\n   OS_IDENTITY_API_VERSION=3\n\n   # Enable the plugin from local folder\n   enable_plugin autoscaler-interattivo-plugin file:///opt/stack/autoscaler-interattivo-plugin\n\n   # Customizable variables\n   AUTOSCALER_SERVER_NAME=auto-vm-1\n   AUTOSCALER_IMAGE_NAME=cirros-0.6.3-x86_64-disk\n   AUTOSCALER_FLAVOR_SMALL=as.small\n   AUTOSCALER_FLAVOR_MEDIUM=as.medium\n   ```\n\n3. **Rebuild DevStack** (if already installed):\n   ```bash\n   cd /opt/stack/devstack\n   ./unstack.sh || true\n   ./clean.sh   || true\n   ./stack.sh\n   ```\n\n4. **Launch**:\n   ```bash\n   source /opt/stack/devstack/openrc admin admin\n   /opt/stack/autoscaler-interattivo-plugin/bin/run_autoscaler_interactive.sh\n   ```\n\n---\n\n## Repository layout\n\n```\nautoscaler-interattivo-plugin/\n├─ devstack/\n│  ├─ plugin.sh\n│  └─ settings\n├─ bin/\n│  ├─ run_autoscaler_interactive.sh\n│  ├─ demo_body.sh\n│  └─ check_flavor.py\n├─ openrc.autoscaler   # (optional) dedicated creds\n└─ README, INSTALL, etc.\n```\n\n- `devstack/plugin.sh` and `devstack/settings` wire the plugin into DevStack phases.\n- `bin/run_autoscaler_interactive.sh` launches the TUI.\n- `bin/demo_body.sh` toggles up/down resizes (demo).\n- `bin/check_flavor.py` queries current VM flavor.\n\n---\n\n## Credentials \u0026 Environment (`OS_*`)\n\nEnsure your `OS_` variables are set (typical example):\n```bash\nexport OS_AUTH_URL=http://\u003cHOST_IP\u003e/identity/v3\nexport OS_USERNAME=admin\nexport OS_PASSWORD=admin\nexport OS_PROJECT_NAME=admin\nexport OS_USER_DOMAIN_NAME=Default\nexport OS_PROJECT_DOMAIN_NAME=Default\nexport OS_REGION_NAME=RegionOne\nexport OS_INTERFACE=public\nexport OS_IDENTITY_API_VERSION=3\n```\n\nIf available, you can `source openrc.autoscaler` or DevStack’s `openrc`.\n\n---\n\n## Quick commands\n\n- **Token**: `openstack token issue`\n- **Flavors**: `openstack flavor list`\n- **Images**: `openstack image list`\n- **Servers**: `openstack server list`\n\n---\n\n## Troubleshooting\n\n- **Keystone v3**: always use `/identity/v3`.\n- **Missing Cirros**: import a valid image or update `AUTOSCALER_IMAGE_NAME`.\n- **Missing flavors**: create `as.small`/`as.medium` or adjust variable names.\n- **CLI not found**: ensure `openstack` is in the user’s `PATH`.\n- **Rerun**: try `./unstack.sh \u0026\u0026 ./clean.sh \u0026\u0026 ./stack.sh` when in doubt.\n- **Permissions**: run scripts as `stack` (not root).\n\n---\n\n## Uninstall\n\n- Remove the `enable_plugin ...` line from `local.conf`.\n- Run `./unstack.sh \u0026\u0026 ./clean.sh \u0026\u0026 ./stack.sh` to rebuild without the plugin.\n\n---\n\n## License\n\nSee LICENSE if present in this repository.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpierluigi-vitiello%2Fautoscaler_interattivo_plugin_devstack","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fpierluigi-vitiello%2Fautoscaler_interattivo_plugin_devstack","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpierluigi-vitiello%2Fautoscaler_interattivo_plugin_devstack/lists"}