remo-cli 1.0.2__tar.gz → 2.0.0rc1__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {remo_cli-1.0.2 → remo_cli-2.0.0rc1}/PKG-INFO +1 -1
- {remo_cli-1.0.2 → remo_cli-2.0.0rc1}/pyproject.toml +1 -1
- {remo_cli-1.0.2 → remo_cli-2.0.0rc1}/src/remo_cli/cli/providers/incus.py +14 -2
- {remo_cli-1.0.2 → remo_cli-2.0.0rc1}/src/remo_cli/cli/providers/proxmox.py +14 -2
- {remo_cli-1.0.2 → remo_cli-2.0.0rc1}/src/remo_cli/providers/incus.py +15 -3
- {remo_cli-1.0.2 → remo_cli-2.0.0rc1}/src/remo_cli/providers/proxmox.py +17 -6
- {remo_cli-1.0.2 → remo_cli-2.0.0rc1}/.claude/commands/speckit.analyze.md +0 -0
- {remo_cli-1.0.2 → remo_cli-2.0.0rc1}/.claude/commands/speckit.checklist.md +0 -0
- {remo_cli-1.0.2 → remo_cli-2.0.0rc1}/.claude/commands/speckit.clarify.md +0 -0
- {remo_cli-1.0.2 → remo_cli-2.0.0rc1}/.claude/commands/speckit.constitution.md +0 -0
- {remo_cli-1.0.2 → remo_cli-2.0.0rc1}/.claude/commands/speckit.implement.md +0 -0
- {remo_cli-1.0.2 → remo_cli-2.0.0rc1}/.claude/commands/speckit.plan.md +0 -0
- {remo_cli-1.0.2 → remo_cli-2.0.0rc1}/.claude/commands/speckit.specify.md +0 -0
- {remo_cli-1.0.2 → remo_cli-2.0.0rc1}/.claude/commands/speckit.tasks.md +0 -0
- {remo_cli-1.0.2 → remo_cli-2.0.0rc1}/.claude/commands/speckit.taskstoissues.md +0 -0
- {remo_cli-1.0.2 → remo_cli-2.0.0rc1}/.devcontainer/devcontainer.json +0 -0
- {remo_cli-1.0.2 → remo_cli-2.0.0rc1}/.dockerignore +0 -0
- {remo_cli-1.0.2 → remo_cli-2.0.0rc1}/.github/dependabot.yml +0 -0
- {remo_cli-1.0.2 → remo_cli-2.0.0rc1}/.github/workflows/ci.yml +0 -0
- {remo_cli-1.0.2 → remo_cli-2.0.0rc1}/.github/workflows/provision.yml +0 -0
- {remo_cli-1.0.2 → remo_cli-2.0.0rc1}/.github/workflows/release.yml +0 -0
- {remo_cli-1.0.2 → remo_cli-2.0.0rc1}/.github/workflows/smoke-test-cleanup.yml +0 -0
- {remo_cli-1.0.2 → remo_cli-2.0.0rc1}/.github/workflows/smoke-test.yml +0 -0
- {remo_cli-1.0.2 → remo_cli-2.0.0rc1}/.github/workflows/teardown.yml +0 -0
- {remo_cli-1.0.2 → remo_cli-2.0.0rc1}/.gitignore +0 -0
- {remo_cli-1.0.2 → remo_cli-2.0.0rc1}/.maverick/checkpoints/feature/implementation_complete.json +0 -0
- {remo_cli-1.0.2 → remo_cli-2.0.0rc1}/.maverick/checkpoints/feature/phase_${{ index }}_complete.json +0 -0
- {remo_cli-1.0.2 → remo_cli-2.0.0rc1}/.maverick/checkpoints/feature/validation_complete.json +0 -0
- {remo_cli-1.0.2 → remo_cli-2.0.0rc1}/.specify/memory/constitution.md +0 -0
- {remo_cli-1.0.2 → remo_cli-2.0.0rc1}/.specify/scripts/bash/check-prerequisites.sh +0 -0
- {remo_cli-1.0.2 → remo_cli-2.0.0rc1}/.specify/scripts/bash/common.sh +0 -0
- {remo_cli-1.0.2 → remo_cli-2.0.0rc1}/.specify/scripts/bash/create-new-feature.sh +0 -0
- {remo_cli-1.0.2 → remo_cli-2.0.0rc1}/.specify/scripts/bash/setup-plan.sh +0 -0
- {remo_cli-1.0.2 → remo_cli-2.0.0rc1}/.specify/scripts/bash/update-agent-context.sh +0 -0
- {remo_cli-1.0.2 → remo_cli-2.0.0rc1}/.specify/templates/agent-file-template.md +0 -0
- {remo_cli-1.0.2 → remo_cli-2.0.0rc1}/.specify/templates/checklist-template.md +0 -0
- {remo_cli-1.0.2 → remo_cli-2.0.0rc1}/.specify/templates/plan-template.md +0 -0
- {remo_cli-1.0.2 → remo_cli-2.0.0rc1}/.specify/templates/spec-template.md +0 -0
- {remo_cli-1.0.2 → remo_cli-2.0.0rc1}/.specify/templates/tasks-template.md +0 -0
- {remo_cli-1.0.2 → remo_cli-2.0.0rc1}/CLAUDE.md +0 -0
- {remo_cli-1.0.2 → remo_cli-2.0.0rc1}/CONTRIBUTING.md +0 -0
- {remo_cli-1.0.2 → remo_cli-2.0.0rc1}/Dockerfile +0 -0
- {remo_cli-1.0.2 → remo_cli-2.0.0rc1}/LICENSE +0 -0
- {remo_cli-1.0.2 → remo_cli-2.0.0rc1}/README.md +0 -0
- {remo_cli-1.0.2 → remo_cli-2.0.0rc1}/ansible/.ansible-lint +0 -0
- {remo_cli-1.0.2 → remo_cli-2.0.0rc1}/ansible/README.md +0 -0
- {remo_cli-1.0.2 → remo_cli-2.0.0rc1}/ansible/ansible.cfg +0 -0
- {remo_cli-1.0.2 → remo_cli-2.0.0rc1}/ansible/aws_configure.yml +0 -0
- {remo_cli-1.0.2 → remo_cli-2.0.0rc1}/ansible/aws_resize.yml +0 -0
- {remo_cli-1.0.2 → remo_cli-2.0.0rc1}/ansible/aws_site.yml +0 -0
- {remo_cli-1.0.2 → remo_cli-2.0.0rc1}/ansible/aws_teardown.yml +0 -0
- {remo_cli-1.0.2 → remo_cli-2.0.0rc1}/ansible/group_vars/all.yml +0 -0
- {remo_cli-1.0.2 → remo_cli-2.0.0rc1}/ansible/group_vars/incus_containers.yml +0 -0
- {remo_cli-1.0.2 → remo_cli-2.0.0rc1}/ansible/group_vars/proxmox_containers.yml +0 -0
- {remo_cli-1.0.2 → remo_cli-2.0.0rc1}/ansible/hetzner_configure.yml +0 -0
- {remo_cli-1.0.2 → remo_cli-2.0.0rc1}/ansible/hetzner_provision.yml +0 -0
- {remo_cli-1.0.2 → remo_cli-2.0.0rc1}/ansible/hetzner_resize.yml +0 -0
- {remo_cli-1.0.2 → remo_cli-2.0.0rc1}/ansible/hetzner_site.yml +0 -0
- {remo_cli-1.0.2 → remo_cli-2.0.0rc1}/ansible/hetzner_teardown.yml +0 -0
- {remo_cli-1.0.2 → remo_cli-2.0.0rc1}/ansible/incus_bootstrap.yml +0 -0
- {remo_cli-1.0.2 → remo_cli-2.0.0rc1}/ansible/incus_configure.yml +0 -0
- {remo_cli-1.0.2 → remo_cli-2.0.0rc1}/ansible/incus_provision.yml +0 -0
- {remo_cli-1.0.2 → remo_cli-2.0.0rc1}/ansible/incus_resize.yml +0 -0
- {remo_cli-1.0.2 → remo_cli-2.0.0rc1}/ansible/incus_site.yml +0 -0
- {remo_cli-1.0.2 → remo_cli-2.0.0rc1}/ansible/incus_teardown.yml +0 -0
- {remo_cli-1.0.2 → remo_cli-2.0.0rc1}/ansible/inventory/hosts.yml +0 -0
- {remo_cli-1.0.2 → remo_cli-2.0.0rc1}/ansible/inventory/incus_containers.yml +0 -0
- {remo_cli-1.0.2 → remo_cli-2.0.0rc1}/ansible/proxmox_bootstrap.yml +0 -0
- {remo_cli-1.0.2 → remo_cli-2.0.0rc1}/ansible/proxmox_configure.yml +0 -0
- {remo_cli-1.0.2 → remo_cli-2.0.0rc1}/ansible/proxmox_provision.yml +0 -0
- {remo_cli-1.0.2 → remo_cli-2.0.0rc1}/ansible/proxmox_resize.yml +0 -0
- {remo_cli-1.0.2 → remo_cli-2.0.0rc1}/ansible/proxmox_site.yml +0 -0
- {remo_cli-1.0.2 → remo_cli-2.0.0rc1}/ansible/proxmox_teardown.yml +0 -0
- {remo_cli-1.0.2 → remo_cli-2.0.0rc1}/ansible/requirements.yml +0 -0
- {remo_cli-1.0.2 → remo_cli-2.0.0rc1}/ansible/roles/aws_server/defaults/main.yml +0 -0
- {remo_cli-1.0.2 → remo_cli-2.0.0rc1}/ansible/roles/aws_server/tasks/ebs.yml +0 -0
- {remo_cli-1.0.2 → remo_cli-2.0.0rc1}/ansible/roles/aws_server/tasks/ec2.yml +0 -0
- {remo_cli-1.0.2 → remo_cli-2.0.0rc1}/ansible/roles/aws_server/tasks/main.yml +0 -0
- {remo_cli-1.0.2 → remo_cli-2.0.0rc1}/ansible/roles/aws_server/tasks/patch_manager.yml +0 -0
- {remo_cli-1.0.2 → remo_cli-2.0.0rc1}/ansible/roles/aws_server/tasks/preflight.yml +0 -0
- {remo_cli-1.0.2 → remo_cli-2.0.0rc1}/ansible/roles/aws_server/tasks/security_group.yml +0 -0
- {remo_cli-1.0.2 → remo_cli-2.0.0rc1}/ansible/roles/devcontainers/tasks/main.yml +0 -0
- {remo_cli-1.0.2 → remo_cli-2.0.0rc1}/ansible/roles/docker/handlers/main.yml +0 -0
- {remo_cli-1.0.2 → remo_cli-2.0.0rc1}/ansible/roles/docker/tasks/main.yml +0 -0
- {remo_cli-1.0.2 → remo_cli-2.0.0rc1}/ansible/roles/fzf/tasks/main.yml +0 -0
- {remo_cli-1.0.2 → remo_cli-2.0.0rc1}/ansible/roles/github_cli/tasks/main.yml +0 -0
- {remo_cli-1.0.2 → remo_cli-2.0.0rc1}/ansible/roles/hetzner_server/defaults/main.yml +0 -0
- {remo_cli-1.0.2 → remo_cli-2.0.0rc1}/ansible/roles/hetzner_server/tasks/main.yml +0 -0
- {remo_cli-1.0.2 → remo_cli-2.0.0rc1}/ansible/roles/incus_bootstrap/defaults/main.yml +0 -0
- {remo_cli-1.0.2 → remo_cli-2.0.0rc1}/ansible/roles/incus_bootstrap/handlers/main.yml +0 -0
- {remo_cli-1.0.2 → remo_cli-2.0.0rc1}/ansible/roles/incus_bootstrap/tasks/main.yml +0 -0
- {remo_cli-1.0.2 → remo_cli-2.0.0rc1}/ansible/roles/incus_container/defaults/main.yml +0 -0
- {remo_cli-1.0.2 → remo_cli-2.0.0rc1}/ansible/roles/incus_container/handlers/main.yml +0 -0
- {remo_cli-1.0.2 → remo_cli-2.0.0rc1}/ansible/roles/incus_container/meta/main.yml +0 -0
- {remo_cli-1.0.2 → remo_cli-2.0.0rc1}/ansible/roles/incus_container/tasks/main.yml +0 -0
- {remo_cli-1.0.2 → remo_cli-2.0.0rc1}/ansible/roles/incus_container/tasks/preflight.yml +0 -0
- {remo_cli-1.0.2 → remo_cli-2.0.0rc1}/ansible/roles/incus_container_teardown/defaults/main.yml +0 -0
- {remo_cli-1.0.2 → remo_cli-2.0.0rc1}/ansible/roles/incus_container_teardown/meta/main.yml +0 -0
- {remo_cli-1.0.2 → remo_cli-2.0.0rc1}/ansible/roles/incus_container_teardown/tasks/main.yml +0 -0
- {remo_cli-1.0.2 → remo_cli-2.0.0rc1}/ansible/roles/nodejs/defaults/main.yml +0 -0
- {remo_cli-1.0.2 → remo_cli-2.0.0rc1}/ansible/roles/nodejs/tasks/main.yml +0 -0
- {remo_cli-1.0.2 → remo_cli-2.0.0rc1}/ansible/roles/proxmox_bootstrap/defaults/main.yml +0 -0
- {remo_cli-1.0.2 → remo_cli-2.0.0rc1}/ansible/roles/proxmox_bootstrap/meta/main.yml +0 -0
- {remo_cli-1.0.2 → remo_cli-2.0.0rc1}/ansible/roles/proxmox_bootstrap/tasks/main.yml +0 -0
- {remo_cli-1.0.2 → remo_cli-2.0.0rc1}/ansible/roles/proxmox_container/defaults/main.yml +0 -0
- {remo_cli-1.0.2 → remo_cli-2.0.0rc1}/ansible/roles/proxmox_container/handlers/main.yml +0 -0
- {remo_cli-1.0.2 → remo_cli-2.0.0rc1}/ansible/roles/proxmox_container/meta/main.yml +0 -0
- {remo_cli-1.0.2 → remo_cli-2.0.0rc1}/ansible/roles/proxmox_container/tasks/main.yml +0 -0
- {remo_cli-1.0.2 → remo_cli-2.0.0rc1}/ansible/roles/proxmox_container/tasks/preflight.yml +0 -0
- {remo_cli-1.0.2 → remo_cli-2.0.0rc1}/ansible/roles/proxmox_container_teardown/defaults/main.yml +0 -0
- {remo_cli-1.0.2 → remo_cli-2.0.0rc1}/ansible/roles/proxmox_container_teardown/meta/main.yml +0 -0
- {remo_cli-1.0.2 → remo_cli-2.0.0rc1}/ansible/roles/proxmox_container_teardown/tasks/main.yml +0 -0
- {remo_cli-1.0.2 → remo_cli-2.0.0rc1}/ansible/roles/user_setup/defaults/main.yml +0 -0
- {remo_cli-1.0.2 → remo_cli-2.0.0rc1}/ansible/roles/user_setup/tasks/main.yml +0 -0
- {remo_cli-1.0.2 → remo_cli-2.0.0rc1}/ansible/roles/user_setup/templates/devshell.sh.j2 +0 -0
- {remo_cli-1.0.2 → remo_cli-2.0.0rc1}/ansible/roles/user_setup/templates/project-menu.sh.j2 +0 -0
- {remo_cli-1.0.2 → remo_cli-2.0.0rc1}/ansible/roles/zellij/defaults/main.yml +0 -0
- {remo_cli-1.0.2 → remo_cli-2.0.0rc1}/ansible/roles/zellij/tasks/main.yml +0 -0
- {remo_cli-1.0.2 → remo_cli-2.0.0rc1}/ansible/roles/zellij/templates/config.kdl.j2 +0 -0
- {remo_cli-1.0.2 → remo_cli-2.0.0rc1}/ansible/roles/zellij/templates/layouts/minimal.kdl.j2 +0 -0
- {remo_cli-1.0.2 → remo_cli-2.0.0rc1}/ansible/tasks/configure_dev_tools.yml +0 -0
- {remo_cli-1.0.2 → remo_cli-2.0.0rc1}/docs/aws.md +0 -0
- {remo_cli-1.0.2 → remo_cli-2.0.0rc1}/docs/hetzner.md +0 -0
- {remo_cli-1.0.2 → remo_cli-2.0.0rc1}/docs/incus.md +0 -0
- {remo_cli-1.0.2 → remo_cli-2.0.0rc1}/docs/install.sh +0 -0
- {remo_cli-1.0.2 → remo_cli-2.0.0rc1}/docs/proxmox.md +0 -0
- {remo_cli-1.0.2 → remo_cli-2.0.0rc1}/install.sh +0 -0
- {remo_cli-1.0.2 → remo_cli-2.0.0rc1}/maverick.yaml +0 -0
- {remo_cli-1.0.2 → remo_cli-2.0.0rc1}/project-menu.sh +0 -0
- {remo_cli-1.0.2 → remo_cli-2.0.0rc1}/remo +0 -0
- {remo_cli-1.0.2 → remo_cli-2.0.0rc1}/run.sh +0 -0
- {remo_cli-1.0.2 → remo_cli-2.0.0rc1}/scripts/setup-aws-oidc.sh +0 -0
- {remo_cli-1.0.2 → remo_cli-2.0.0rc1}/specs/001-bootstrap-incus-host/checklists/requirements.md +0 -0
- {remo_cli-1.0.2 → remo_cli-2.0.0rc1}/specs/001-bootstrap-incus-host/checklists/validation.md +0 -0
- {remo_cli-1.0.2 → remo_cli-2.0.0rc1}/specs/001-bootstrap-incus-host/contracts/playbook-interface.yaml +0 -0
- {remo_cli-1.0.2 → remo_cli-2.0.0rc1}/specs/001-bootstrap-incus-host/contracts/role-interface.yaml +0 -0
- {remo_cli-1.0.2 → remo_cli-2.0.0rc1}/specs/001-bootstrap-incus-host/data-model.md +0 -0
- {remo_cli-1.0.2 → remo_cli-2.0.0rc1}/specs/001-bootstrap-incus-host/plan.md +0 -0
- {remo_cli-1.0.2 → remo_cli-2.0.0rc1}/specs/001-bootstrap-incus-host/quickstart.md +0 -0
- {remo_cli-1.0.2 → remo_cli-2.0.0rc1}/specs/001-bootstrap-incus-host/research.md +0 -0
- {remo_cli-1.0.2 → remo_cli-2.0.0rc1}/specs/001-bootstrap-incus-host/spec.md +0 -0
- {remo_cli-1.0.2 → remo_cli-2.0.0rc1}/specs/001-bootstrap-incus-host/tasks.md +0 -0
- {remo_cli-1.0.2 → remo_cli-2.0.0rc1}/specs/002-incus-container-support/checklists/requirements.md +0 -0
- {remo_cli-1.0.2 → remo_cli-2.0.0rc1}/specs/002-incus-container-support/contracts/playbook-interface.yaml +0 -0
- {remo_cli-1.0.2 → remo_cli-2.0.0rc1}/specs/002-incus-container-support/contracts/role-interface.yaml +0 -0
- {remo_cli-1.0.2 → remo_cli-2.0.0rc1}/specs/002-incus-container-support/data-model.md +0 -0
- {remo_cli-1.0.2 → remo_cli-2.0.0rc1}/specs/002-incus-container-support/plan.md +0 -0
- {remo_cli-1.0.2 → remo_cli-2.0.0rc1}/specs/002-incus-container-support/quickstart.md +0 -0
- {remo_cli-1.0.2 → remo_cli-2.0.0rc1}/specs/002-incus-container-support/research.md +0 -0
- {remo_cli-1.0.2 → remo_cli-2.0.0rc1}/specs/002-incus-container-support/spec.md +0 -0
- {remo_cli-1.0.2 → remo_cli-2.0.0rc1}/specs/002-incus-container-support/tasks.md +0 -0
- {remo_cli-1.0.2 → remo_cli-2.0.0rc1}/specs/003-python-cli-rewrite/checklists/requirements.md +0 -0
- {remo_cli-1.0.2 → remo_cli-2.0.0rc1}/specs/003-python-cli-rewrite/data-model.md +0 -0
- {remo_cli-1.0.2 → remo_cli-2.0.0rc1}/specs/003-python-cli-rewrite/plan.md +0 -0
- {remo_cli-1.0.2 → remo_cli-2.0.0rc1}/specs/003-python-cli-rewrite/quickstart.md +0 -0
- {remo_cli-1.0.2 → remo_cli-2.0.0rc1}/specs/003-python-cli-rewrite/research.md +0 -0
- {remo_cli-1.0.2 → remo_cli-2.0.0rc1}/specs/003-python-cli-rewrite/spec.md +0 -0
- {remo_cli-1.0.2 → remo_cli-2.0.0rc1}/specs/003-python-cli-rewrite/tasks.md +0 -0
- {remo_cli-1.0.2 → remo_cli-2.0.0rc1}/specs/004-proxmox-container-support/spec.md +0 -0
- {remo_cli-1.0.2 → remo_cli-2.0.0rc1}/src/remo_cli/__init__.py +0 -0
- {remo_cli-1.0.2 → remo_cli-2.0.0rc1}/src/remo_cli/__main__.py +0 -0
- {remo_cli-1.0.2 → remo_cli-2.0.0rc1}/src/remo_cli/cli/__init__.py +0 -0
- {remo_cli-1.0.2 → remo_cli-2.0.0rc1}/src/remo_cli/cli/cp.py +0 -0
- {remo_cli-1.0.2 → remo_cli-2.0.0rc1}/src/remo_cli/cli/main.py +0 -0
- {remo_cli-1.0.2 → remo_cli-2.0.0rc1}/src/remo_cli/cli/providers/__init__.py +0 -0
- {remo_cli-1.0.2 → remo_cli-2.0.0rc1}/src/remo_cli/cli/providers/aws.py +0 -0
- {remo_cli-1.0.2 → remo_cli-2.0.0rc1}/src/remo_cli/cli/providers/hetzner.py +0 -0
- {remo_cli-1.0.2 → remo_cli-2.0.0rc1}/src/remo_cli/cli/shell.py +0 -0
- {remo_cli-1.0.2 → remo_cli-2.0.0rc1}/src/remo_cli/core/__init__.py +0 -0
- {remo_cli-1.0.2 → remo_cli-2.0.0rc1}/src/remo_cli/core/ansible_runner.py +0 -0
- {remo_cli-1.0.2 → remo_cli-2.0.0rc1}/src/remo_cli/core/completion.py +0 -0
- {remo_cli-1.0.2 → remo_cli-2.0.0rc1}/src/remo_cli/core/config.py +0 -0
- {remo_cli-1.0.2 → remo_cli-2.0.0rc1}/src/remo_cli/core/known_hosts.py +0 -0
- {remo_cli-1.0.2 → remo_cli-2.0.0rc1}/src/remo_cli/core/output.py +0 -0
- {remo_cli-1.0.2 → remo_cli-2.0.0rc1}/src/remo_cli/core/picker.py +0 -0
- {remo_cli-1.0.2 → remo_cli-2.0.0rc1}/src/remo_cli/core/rsync.py +0 -0
- {remo_cli-1.0.2 → remo_cli-2.0.0rc1}/src/remo_cli/core/ssh.py +0 -0
- {remo_cli-1.0.2 → remo_cli-2.0.0rc1}/src/remo_cli/core/validation.py +0 -0
- {remo_cli-1.0.2 → remo_cli-2.0.0rc1}/src/remo_cli/core/version.py +0 -0
- {remo_cli-1.0.2 → remo_cli-2.0.0rc1}/src/remo_cli/models/__init__.py +0 -0
- {remo_cli-1.0.2 → remo_cli-2.0.0rc1}/src/remo_cli/models/host.py +0 -0
- {remo_cli-1.0.2 → remo_cli-2.0.0rc1}/src/remo_cli/providers/__init__.py +0 -0
- {remo_cli-1.0.2 → remo_cli-2.0.0rc1}/src/remo_cli/providers/aws.py +0 -0
- {remo_cli-1.0.2 → remo_cli-2.0.0rc1}/src/remo_cli/providers/hetzner.py +0 -0
- {remo_cli-1.0.2 → remo_cli-2.0.0rc1}/tests/__init__.py +0 -0
- {remo_cli-1.0.2 → remo_cli-2.0.0rc1}/tests/conftest.py +0 -0
- {remo_cli-1.0.2 → remo_cli-2.0.0rc1}/tests/integration/__init__.py +0 -0
- {remo_cli-1.0.2 → remo_cli-2.0.0rc1}/tests/integration/orbstack-cloud-init.yml +0 -0
- {remo_cli-1.0.2 → remo_cli-2.0.0rc1}/tests/integration/orbstack.sh +0 -0
- {remo_cli-1.0.2 → remo_cli-2.0.0rc1}/tests/unit/__init__.py +0 -0
- {remo_cli-1.0.2 → remo_cli-2.0.0rc1}/tests/unit/cli/__init__.py +0 -0
- {remo_cli-1.0.2 → remo_cli-2.0.0rc1}/tests/unit/cli/test_cp.py +0 -0
- {remo_cli-1.0.2 → remo_cli-2.0.0rc1}/tests/unit/cli/test_main.py +0 -0
- {remo_cli-1.0.2 → remo_cli-2.0.0rc1}/tests/unit/cli/test_shell.py +0 -0
- {remo_cli-1.0.2 → remo_cli-2.0.0rc1}/tests/unit/core/__init__.py +0 -0
- {remo_cli-1.0.2 → remo_cli-2.0.0rc1}/tests/unit/core/test_ansible_runner.py +0 -0
- {remo_cli-1.0.2 → remo_cli-2.0.0rc1}/tests/unit/core/test_config.py +0 -0
- {remo_cli-1.0.2 → remo_cli-2.0.0rc1}/tests/unit/core/test_known_hosts.py +0 -0
- {remo_cli-1.0.2 → remo_cli-2.0.0rc1}/tests/unit/core/test_output.py +0 -0
- {remo_cli-1.0.2 → remo_cli-2.0.0rc1}/tests/unit/core/test_picker.py +0 -0
- {remo_cli-1.0.2 → remo_cli-2.0.0rc1}/tests/unit/core/test_rsync.py +0 -0
- {remo_cli-1.0.2 → remo_cli-2.0.0rc1}/tests/unit/core/test_ssh.py +0 -0
- {remo_cli-1.0.2 → remo_cli-2.0.0rc1}/tests/unit/core/test_validation.py +0 -0
- {remo_cli-1.0.2 → remo_cli-2.0.0rc1}/tests/unit/core/test_version.py +0 -0
- {remo_cli-1.0.2 → remo_cli-2.0.0rc1}/tests/unit/providers/__init__.py +0 -0
- {remo_cli-1.0.2 → remo_cli-2.0.0rc1}/tests/unit/test_host_model.py +0 -0
- {remo_cli-1.0.2 → remo_cli-2.0.0rc1}/uv.lock +0 -0
|
@@ -40,6 +40,11 @@ def incus() -> None:
|
|
|
40
40
|
)
|
|
41
41
|
@click.option("--only", multiple=True, help="Only install these tools.")
|
|
42
42
|
@click.option("--skip", multiple=True, help="Skip these tools.")
|
|
43
|
+
@click.option(
|
|
44
|
+
"--use-ip",
|
|
45
|
+
is_flag=True,
|
|
46
|
+
help="Store the container's IP address in known_hosts instead of its name (for setups without DNS/MagicDNS).",
|
|
47
|
+
)
|
|
43
48
|
@click.option("--yes", "-y", is_flag=True, help="Auto-confirm prompts.")
|
|
44
49
|
@click.option("-v", "--verbose", is_flag=True, help="Verbose output.")
|
|
45
50
|
def create(
|
|
@@ -53,6 +58,7 @@ def create(
|
|
|
53
58
|
memory: int,
|
|
54
59
|
only: tuple[str, ...],
|
|
55
60
|
skip: tuple[str, ...],
|
|
61
|
+
use_ip: bool,
|
|
56
62
|
yes: bool,
|
|
57
63
|
verbose: bool,
|
|
58
64
|
) -> None:
|
|
@@ -68,6 +74,7 @@ def create(
|
|
|
68
74
|
memory=memory,
|
|
69
75
|
tools_only=only,
|
|
70
76
|
tools_skip=skip,
|
|
77
|
+
use_ip=use_ip,
|
|
71
78
|
verbose=verbose,
|
|
72
79
|
)
|
|
73
80
|
sys.exit(rc)
|
|
@@ -173,9 +180,14 @@ def info(name: str, host: str, user: str) -> None:
|
|
|
173
180
|
@incus.command()
|
|
174
181
|
@click.option("--host", default="localhost", help="Incus host (default: localhost).")
|
|
175
182
|
@click.option("--user", default="", help="SSH user for remote Incus host.")
|
|
176
|
-
|
|
183
|
+
@click.option(
|
|
184
|
+
"--use-ip",
|
|
185
|
+
is_flag=True,
|
|
186
|
+
help="Store each container's IP address in known_hosts instead of its name (for setups without DNS/MagicDNS).",
|
|
187
|
+
)
|
|
188
|
+
def sync(host: str, user: str, use_ip: bool) -> None:
|
|
177
189
|
"""Discover containers from an Incus host."""
|
|
178
|
-
providers_incus.sync(host=host, user=user)
|
|
190
|
+
providers_incus.sync(host=host, user=user, use_ip=use_ip)
|
|
179
191
|
|
|
180
192
|
|
|
181
193
|
@incus.command()
|
|
@@ -38,6 +38,11 @@ def proxmox() -> None:
|
|
|
38
38
|
@click.option("--domain", default="", help="Domain name for the container.")
|
|
39
39
|
@click.option("--only", multiple=True, help="Only install these tools.")
|
|
40
40
|
@click.option("--skip", multiple=True, help="Skip these tools.")
|
|
41
|
+
@click.option(
|
|
42
|
+
"--use-ip",
|
|
43
|
+
is_flag=True,
|
|
44
|
+
help="Store the container's IP address in known_hosts instead of its name (for setups without DNS/MagicDNS).",
|
|
45
|
+
)
|
|
41
46
|
@click.option("--yes", "-y", is_flag=True, help="Auto-confirm prompts.")
|
|
42
47
|
@click.option("-v", "--verbose", is_flag=True, help="Verbose output.")
|
|
43
48
|
def create(
|
|
@@ -55,6 +60,7 @@ def create(
|
|
|
55
60
|
domain: str,
|
|
56
61
|
only: tuple[str, ...],
|
|
57
62
|
skip: tuple[str, ...],
|
|
63
|
+
use_ip: bool,
|
|
58
64
|
yes: bool,
|
|
59
65
|
verbose: bool,
|
|
60
66
|
) -> None:
|
|
@@ -74,6 +80,7 @@ def create(
|
|
|
74
80
|
domain=domain,
|
|
75
81
|
tools_only=only,
|
|
76
82
|
tools_skip=skip,
|
|
83
|
+
use_ip=use_ip,
|
|
77
84
|
verbose=verbose,
|
|
78
85
|
)
|
|
79
86
|
sys.exit(rc)
|
|
@@ -179,9 +186,14 @@ def info(name: str, host: str, user: str) -> None:
|
|
|
179
186
|
@proxmox.command()
|
|
180
187
|
@click.option("--host", required=True, help="Proxmox host to scan.")
|
|
181
188
|
@click.option("--user", default="", help="SSH user for the Proxmox host.")
|
|
182
|
-
|
|
189
|
+
@click.option(
|
|
190
|
+
"--use-ip",
|
|
191
|
+
is_flag=True,
|
|
192
|
+
help="Store each container's IP address in known_hosts instead of its name (for setups without DNS/MagicDNS).",
|
|
193
|
+
)
|
|
194
|
+
def sync(host: str, user: str, use_ip: bool) -> None:
|
|
183
195
|
"""Discover containers from a Proxmox host."""
|
|
184
|
-
providers_proxmox.sync(host=host, user=user)
|
|
196
|
+
providers_proxmox.sync(host=host, user=user, use_ip=use_ip)
|
|
185
197
|
|
|
186
198
|
|
|
187
199
|
@proxmox.command()
|
|
@@ -165,6 +165,7 @@ def create(
|
|
|
165
165
|
memory: int = 0,
|
|
166
166
|
tools_only: tuple[str, ...] = (),
|
|
167
167
|
tools_skip: tuple[str, ...] = (),
|
|
168
|
+
use_ip: bool = False,
|
|
168
169
|
verbose: bool = False,
|
|
169
170
|
) -> int:
|
|
170
171
|
"""Create a new Incus container and configure it with dev tools.
|
|
@@ -206,7 +207,10 @@ def create(
|
|
|
206
207
|
rc = run_playbook("incus_site.yml", extra_vars, verbose=verbose)
|
|
207
208
|
|
|
208
209
|
if rc == 0:
|
|
209
|
-
|
|
210
|
+
if use_ip:
|
|
211
|
+
container_host = _resolve_container_ip(name, host, user) or name
|
|
212
|
+
else:
|
|
213
|
+
container_host = name
|
|
210
214
|
save_known_host(
|
|
211
215
|
KnownHost(
|
|
212
216
|
type="incus",
|
|
@@ -483,13 +487,17 @@ def info(name: str, host: str = "", user: str = "") -> int:
|
|
|
483
487
|
return 0
|
|
484
488
|
|
|
485
489
|
|
|
486
|
-
def sync(host: str = "localhost", user: str = "") -> None:
|
|
490
|
+
def sync(host: str = "localhost", user: str = "", use_ip: bool = False) -> None:
|
|
487
491
|
"""Discover Incus containers on *host* and register them in known-hosts.
|
|
488
492
|
|
|
489
493
|
For localhost, runs ``incus list -f csv -c n`` directly. For remote hosts,
|
|
490
494
|
the same command is executed over SSH. All previously registered entries
|
|
491
495
|
for the given host prefix are cleared before the newly discovered
|
|
492
496
|
containers are saved.
|
|
497
|
+
|
|
498
|
+
When *use_ip* is true, each container's eth0 IP is resolved and stored as
|
|
499
|
+
the ``host`` field; otherwise the container name itself is stored (and
|
|
500
|
+
relies on DNS/MagicDNS for resolution at connect time).
|
|
493
501
|
"""
|
|
494
502
|
if host == "localhost":
|
|
495
503
|
result = subprocess.run(
|
|
@@ -523,11 +531,15 @@ def sync(host: str = "localhost", user: str = "") -> None:
|
|
|
523
531
|
clear_known_hosts_by_prefix("incus", f"{host}/")
|
|
524
532
|
|
|
525
533
|
for name in containers:
|
|
534
|
+
if use_ip:
|
|
535
|
+
container_host = _resolve_container_ip(name, host, user) or name
|
|
536
|
+
else:
|
|
537
|
+
container_host = name
|
|
526
538
|
save_known_host(
|
|
527
539
|
KnownHost(
|
|
528
540
|
type="incus",
|
|
529
541
|
name=f"{host}/{name}",
|
|
530
|
-
host=
|
|
542
|
+
host=container_host,
|
|
531
543
|
user="remo",
|
|
532
544
|
instance_id=user,
|
|
533
545
|
access_mode="direct",
|
|
@@ -180,6 +180,7 @@ def create(
|
|
|
180
180
|
domain: str = "",
|
|
181
181
|
tools_only: tuple[str, ...] = (),
|
|
182
182
|
tools_skip: tuple[str, ...] = (),
|
|
183
|
+
use_ip: bool = False,
|
|
183
184
|
verbose: bool = False,
|
|
184
185
|
) -> int:
|
|
185
186
|
"""Create a new Proxmox LXC container and configure dev tools.
|
|
@@ -241,12 +242,15 @@ def create(
|
|
|
241
242
|
|
|
242
243
|
if rc == 0:
|
|
243
244
|
vmid = _resolve_vmid(name, host, user)
|
|
244
|
-
|
|
245
|
+
if use_ip:
|
|
246
|
+
container_host = _resolve_container_ip(name, host, user, vmid=vmid) or name
|
|
247
|
+
else:
|
|
248
|
+
container_host = name
|
|
245
249
|
save_known_host(
|
|
246
250
|
KnownHost(
|
|
247
251
|
type="proxmox",
|
|
248
252
|
name=f"{host}/{name}",
|
|
249
|
-
host=
|
|
253
|
+
host=container_host,
|
|
250
254
|
user="remo",
|
|
251
255
|
instance_id=vmid,
|
|
252
256
|
access_mode="direct",
|
|
@@ -541,11 +545,15 @@ def _parse_pct_config_field(config_text: str, field: str) -> str:
|
|
|
541
545
|
return match.group(1).strip() if match else ""
|
|
542
546
|
|
|
543
547
|
|
|
544
|
-
def sync(host: str, user: str = "") -> None:
|
|
548
|
+
def sync(host: str, user: str = "", use_ip: bool = False) -> None:
|
|
545
549
|
"""Discover Proxmox LXC containers on *host* and register them.
|
|
546
550
|
|
|
547
551
|
Runs ``pct list`` over SSH (or locally if host == "localhost"),
|
|
548
|
-
parses the output, then queries each container for its VMID
|
|
552
|
+
parses the output, then queries each container for its VMID. When
|
|
553
|
+
*use_ip* is true, each container's eth0 IP is also resolved and stored
|
|
554
|
+
as the ``host`` field; otherwise the container name itself is stored
|
|
555
|
+
(and relies on DNS/MagicDNS for resolution at connect time).
|
|
556
|
+
|
|
549
557
|
Existing entries with the host prefix are cleared first.
|
|
550
558
|
"""
|
|
551
559
|
if not host:
|
|
@@ -581,12 +589,15 @@ def sync(host: str, user: str = "") -> None:
|
|
|
581
589
|
clear_known_hosts_by_prefix("proxmox", f"{host}/")
|
|
582
590
|
|
|
583
591
|
for vmid, hostname in containers:
|
|
584
|
-
|
|
592
|
+
if use_ip:
|
|
593
|
+
container_host = _resolve_container_ip(hostname, host, user, vmid=vmid) or hostname
|
|
594
|
+
else:
|
|
595
|
+
container_host = hostname
|
|
585
596
|
save_known_host(
|
|
586
597
|
KnownHost(
|
|
587
598
|
type="proxmox",
|
|
588
599
|
name=f"{host}/{hostname}",
|
|
589
|
-
host=
|
|
600
|
+
host=container_host,
|
|
590
601
|
user="remo",
|
|
591
602
|
instance_id=vmid,
|
|
592
603
|
access_mode="direct",
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{remo_cli-1.0.2 → remo_cli-2.0.0rc1}/.maverick/checkpoints/feature/implementation_complete.json
RENAMED
|
File without changes
|
{remo_cli-1.0.2 → remo_cli-2.0.0rc1}/.maverick/checkpoints/feature/phase_${{ index }}_complete.json
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{remo_cli-1.0.2 → remo_cli-2.0.0rc1}/ansible/roles/incus_container_teardown/defaults/main.yml
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{remo_cli-1.0.2 → remo_cli-2.0.0rc1}/ansible/roles/proxmox_container_teardown/defaults/main.yml
RENAMED
|
File without changes
|
|
File without changes
|
{remo_cli-1.0.2 → remo_cli-2.0.0rc1}/ansible/roles/proxmox_container_teardown/tasks/main.yml
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{remo_cli-1.0.2 → remo_cli-2.0.0rc1}/specs/001-bootstrap-incus-host/checklists/requirements.md
RENAMED
|
File without changes
|
{remo_cli-1.0.2 → remo_cli-2.0.0rc1}/specs/001-bootstrap-incus-host/checklists/validation.md
RENAMED
|
File without changes
|
|
File without changes
|
{remo_cli-1.0.2 → remo_cli-2.0.0rc1}/specs/001-bootstrap-incus-host/contracts/role-interface.yaml
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{remo_cli-1.0.2 → remo_cli-2.0.0rc1}/specs/002-incus-container-support/checklists/requirements.md
RENAMED
|
File without changes
|
|
File without changes
|
{remo_cli-1.0.2 → remo_cli-2.0.0rc1}/specs/002-incus-container-support/contracts/role-interface.yaml
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{remo_cli-1.0.2 → remo_cli-2.0.0rc1}/specs/003-python-cli-rewrite/checklists/requirements.md
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|