mcp-openstack-ops 3.5.9__tar.gz → 3.6.1__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.
- {mcp_openstack_ops-3.5.9 → mcp_openstack_ops-3.6.1}/.env.example +3 -2
- mcp_openstack_ops-3.6.1/.github/workflows/tests.yml +28 -0
- {mcp_openstack_ops-3.5.9 → mcp_openstack_ops-3.6.1}/.gitignore +4 -1
- mcp_openstack_ops-3.6.1/AGENTS.md +42 -0
- {mcp_openstack_ops-3.5.9 → mcp_openstack_ops-3.6.1}/PKG-INFO +252 -131
- {mcp_openstack_ops-3.5.9 → mcp_openstack_ops-3.6.1}/README.md +251 -130
- mcp_openstack_ops-3.6.1/docs/expanded-validation-fixes-2026-11-02.json +18906 -0
- mcp_openstack_ops-3.6.1/docs/expanded-validation-fixes-2026-11-02.md +205 -0
- mcp_openstack_ops-3.6.1/docs/main-live-retest-2026-10-30.json +2342 -0
- mcp_openstack_ops-3.6.1/docs/main-live-retest-2026-10-30.md +268 -0
- mcp_openstack_ops-3.6.1/docs/main-live-validation-2026-10-30.json +2745 -0
- mcp_openstack_ops-3.6.1/docs/main-live-validation-2026-10-30.md +315 -0
- mcp_openstack_ops-3.6.1/docs/multi-user-phase1.md +300 -0
- {mcp_openstack_ops-3.5.9 → mcp_openstack_ops-3.6.1}/src/mcp_openstack_ops/connection.py +6 -2
- {mcp_openstack_ops-3.5.9 → mcp_openstack_ops-3.6.1}/src/mcp_openstack_ops/mcp_main.py +29 -2
- {mcp_openstack_ops-3.5.9 → mcp_openstack_ops-3.6.1}/src/mcp_openstack_ops/prompt_template.md +21 -21
- {mcp_openstack_ops-3.5.9 → mcp_openstack_ops-3.6.1}/src/mcp_openstack_ops/services/compute.py +163 -75
- {mcp_openstack_ops-3.5.9 → mcp_openstack_ops-3.6.1}/src/mcp_openstack_ops/services/core.py +26 -18
- {mcp_openstack_ops-3.5.9 → mcp_openstack_ops-3.6.1}/src/mcp_openstack_ops/services/identity.py +2 -7
- {mcp_openstack_ops-3.5.9 → mcp_openstack_ops-3.6.1}/src/mcp_openstack_ops/services/monitoring.py +20 -2
- {mcp_openstack_ops-3.5.9 → mcp_openstack_ops-3.6.1}/src/mcp_openstack_ops/services/network.py +37 -26
- {mcp_openstack_ops-3.5.9 → mcp_openstack_ops-3.6.1}/src/mcp_openstack_ops/services/orchestration.py +2 -2
- {mcp_openstack_ops-3.5.9 → mcp_openstack_ops-3.6.1}/src/mcp_openstack_ops/services/storage.py +47 -81
- {mcp_openstack_ops-3.5.9 → mcp_openstack_ops-3.6.1}/src/mcp_openstack_ops/tools/get_instance.py +26 -13
- {mcp_openstack_ops-3.5.9 → mcp_openstack_ops-3.6.1}/src/mcp_openstack_ops/tools/get_instance_details.py +8 -4
- {mcp_openstack_ops-3.5.9 → mcp_openstack_ops-3.6.1}/src/mcp_openstack_ops/tools/get_instances_by_status.py +10 -5
- {mcp_openstack_ops-3.5.9 → mcp_openstack_ops-3.6.1}/src/mcp_openstack_ops/tools/get_keypair_list.py +5 -4
- {mcp_openstack_ops-3.5.9 → mcp_openstack_ops-3.6.1}/src/mcp_openstack_ops/tools/get_load_balancer_health_monitors.py +1 -1
- {mcp_openstack_ops-3.5.9 → mcp_openstack_ops-3.6.1}/src/mcp_openstack_ops/tools/get_load_balancer_pool_members.py +1 -1
- {mcp_openstack_ops-3.5.9 → mcp_openstack_ops-3.6.1}/src/mcp_openstack_ops/tools/get_network_details.py +10 -5
- {mcp_openstack_ops-3.5.9 → mcp_openstack_ops-3.6.1}/src/mcp_openstack_ops/tools/get_routers.py +5 -4
- {mcp_openstack_ops-3.5.9 → mcp_openstack_ops-3.6.1}/src/mcp_openstack_ops/tools/get_security_groups.py +5 -1
- {mcp_openstack_ops-3.5.9 → mcp_openstack_ops-3.6.1}/src/mcp_openstack_ops/tools/get_user_list.py +5 -4
- {mcp_openstack_ops-3.5.9 → mcp_openstack_ops-3.6.1}/src/mcp_openstack_ops/tools/get_volume_list.py +10 -5
- {mcp_openstack_ops-3.5.9 → mcp_openstack_ops-3.6.1}/src/mcp_openstack_ops/tools/get_volume_snapshots.py +5 -4
- {mcp_openstack_ops-3.5.9 → mcp_openstack_ops-3.6.1}/src/mcp_openstack_ops/tools/search_instances.py +16 -11
- {mcp_openstack_ops-3.5.9 → mcp_openstack_ops-3.6.1}/src/mcp_openstack_ops/tools/set_heat_stack.py +0 -1
- {mcp_openstack_ops-3.5.9 → mcp_openstack_ops-3.6.1}/src/mcp_openstack_ops/tools/set_image.py +0 -1
- {mcp_openstack_ops-3.5.9 → mcp_openstack_ops-3.6.1}/src/mcp_openstack_ops/tools/set_load_balancer_pool.py +1 -1
- {mcp_openstack_ops-3.5.9 → mcp_openstack_ops-3.6.1}/src/mcp_openstack_ops/tools/set_load_balancer_pool_member.py +1 -1
- {mcp_openstack_ops-3.5.9 → mcp_openstack_ops-3.6.1}/src/mcp_openstack_ops/tools/set_networks.py +4 -4
- {mcp_openstack_ops-3.5.9 → mcp_openstack_ops-3.6.1}/src/mcp_openstack_ops/tools/set_quota.py +36 -1
- {mcp_openstack_ops-3.5.9 → mcp_openstack_ops-3.6.1}/src/mcp_openstack_ops/tools/set_server_backup.py +2 -2
- {mcp_openstack_ops-3.5.9 → mcp_openstack_ops-3.6.1}/src/mcp_openstack_ops/tools/set_server_properties.py +4 -4
- {mcp_openstack_ops-3.5.9 → mcp_openstack_ops-3.6.1}/src/mcp_openstack_ops/tools/set_volume.py +14 -17
- mcp_openstack_ops-3.6.1/src/mcp_openstack_ops/user_connection.py +313 -0
- {mcp_openstack_ops-3.5.9 → mcp_openstack_ops-3.6.1}/src/mcp_openstack_ops.egg-info/PKG-INFO +252 -131
- {mcp_openstack_ops-3.5.9 → mcp_openstack_ops-3.6.1}/src/mcp_openstack_ops.egg-info/SOURCES.txt +16 -2
- {mcp_openstack_ops-3.5.9 → mcp_openstack_ops-3.6.1}/src/mcp_openstack_ops.egg-info/scm_file_list.json +15 -1
- mcp_openstack_ops-3.6.1/src/mcp_openstack_ops.egg-info/scm_version.json +8 -0
- mcp_openstack_ops-3.6.1/tests/test_expanded_validation_fixes.py +144 -0
- mcp_openstack_ops-3.6.1/tests/test_floating_ip.py +99 -0
- mcp_openstack_ops-3.6.1/tests/test_instance_image.py +108 -0
- mcp_openstack_ops-3.6.1/tests/test_live_regressions.py +242 -0
- mcp_openstack_ops-3.6.1/tests/test_phase1_stabilization.py +190 -0
- mcp_openstack_ops-3.6.1/tests/test_user_connection.py +362 -0
- mcp_openstack_ops-3.5.9/img/screenshot-claude-desktop.png:Zone.Identifier +0 -4
- mcp_openstack_ops-3.5.9/src/mcp_openstack_ops.egg-info/scm_version.json +0 -8
- mcp_openstack_ops-3.5.9/tests/test_floating_ip.py +0 -42
- {mcp_openstack_ops-3.5.9 → mcp_openstack_ops-3.6.1}/.env.test +0 -0
- {mcp_openstack_ops-3.5.9 → mcp_openstack_ops-3.6.1}/.github/FUNDING.yml +0 -0
- {mcp_openstack_ops-3.5.9 → mcp_openstack_ops-3.6.1}/.github/copilot-instructions.md +0 -0
- {mcp_openstack_ops-3.5.9 → mcp_openstack_ops-3.6.1}/.github/dependabot.yml +0 -0
- {mcp_openstack_ops-3.5.9 → mcp_openstack_ops-3.6.1}/.github/workflows/pypi-publish.yml +0 -0
- {mcp_openstack_ops-3.5.9 → mcp_openstack_ops-3.6.1}/.gitleaks.toml +0 -0
- {mcp_openstack_ops-3.5.9 → mcp_openstack_ops-3.6.1}/.pre-commit-config.yaml +0 -0
- {mcp_openstack_ops-3.5.9 → mcp_openstack_ops-3.6.1}/.python-version +0 -0
- {mcp_openstack_ops-3.5.9 → mcp_openstack_ops-3.6.1}/Dockerfile.MCP-Server +0 -0
- {mcp_openstack_ops-3.5.9 → mcp_openstack_ops-3.6.1}/Dockerfile.MCPO-Proxy +0 -0
- {mcp_openstack_ops-3.5.9 → mcp_openstack_ops-3.6.1}/LICENSE +0 -0
- {mcp_openstack_ops-3.5.9 → mcp_openstack_ops-3.6.1}/MANIFEST.in +0 -0
- {mcp_openstack_ops-3.5.9 → mcp_openstack_ops-3.6.1}/build-mcp-server-docker-image.sh +0 -0
- {mcp_openstack_ops-3.5.9 → mcp_openstack_ops-3.6.1}/build-mcpo-server-docker-image.sh +0 -0
- {mcp_openstack_ops-3.5.9 → mcp_openstack_ops-3.6.1}/diagnose_openstack.py +0 -0
- {mcp_openstack_ops-3.5.9 → mcp_openstack_ops-3.6.1}/docker-compose.yml +0 -0
- {mcp_openstack_ops-3.5.9 → mcp_openstack_ops-3.6.1}/docs/integration-validation.md +0 -0
- {mcp_openstack_ops-3.5.9 → mcp_openstack_ops-3.6.1}/img/MCP-Workflow-of-Quickstart-Tutorial.png +0 -0
- {mcp_openstack_ops-3.5.9 → mcp_openstack_ops-3.6.1}/img/screenshot-claude-desktop.png +0 -0
- {mcp_openstack_ops-3.5.9 → mcp_openstack_ops-3.6.1}/img/screenshot-example-cluster-status.png +0 -0
- {mcp_openstack_ops-3.5.9 → mcp_openstack_ops-3.6.1}/img/screenshot-openstack-dashboard.png +0 -0
- {mcp_openstack_ops-3.5.9 → mcp_openstack_ops-3.6.1}/main.py +0 -0
- {mcp_openstack_ops-3.5.9 → mcp_openstack_ops-3.6.1}/mcp-config.json.http +0 -0
- {mcp_openstack_ops-3.5.9 → mcp_openstack_ops-3.6.1}/mcp-config.json.multi-project +0 -0
- {mcp_openstack_ops-3.5.9 → mcp_openstack_ops-3.6.1}/mcp-config.json.stdio +0 -0
- {mcp_openstack_ops-3.5.9 → mcp_openstack_ops-3.6.1}/pyproject.toml +0 -0
- {mcp_openstack_ops-3.5.9 → mcp_openstack_ops-3.6.1}/scripts/check_release.py +0 -0
- {mcp_openstack_ops-3.5.9 → mcp_openstack_ops-3.6.1}/scripts/mcp-server-docker-cmd.sh +0 -0
- {mcp_openstack_ops-3.5.9 → mcp_openstack_ops-3.6.1}/scripts/publish_release.py +0 -0
- {mcp_openstack_ops-3.5.9 → mcp_openstack_ops-3.6.1}/scripts/run-mcp-inspector-local.sh +0 -0
- {mcp_openstack_ops-3.5.9 → mcp_openstack_ops-3.6.1}/scripts/run-mcp-inspector-pypi.sh +0 -0
- {mcp_openstack_ops-3.5.9 → mcp_openstack_ops-3.6.1}/setup.cfg +0 -0
- {mcp_openstack_ops-3.5.9 → mcp_openstack_ops-3.6.1}/src/mcp_openstack_ops/__init__.py +0 -0
- {mcp_openstack_ops-3.5.9 → mcp_openstack_ops-3.6.1}/src/mcp_openstack_ops/__main__.py +0 -0
- {mcp_openstack_ops-3.5.9 → mcp_openstack_ops-3.6.1}/src/mcp_openstack_ops/functions.py +0 -0
- {mcp_openstack_ops-3.5.9 → mcp_openstack_ops-3.6.1}/src/mcp_openstack_ops/services/__init__.py +0 -0
- {mcp_openstack_ops-3.5.9 → mcp_openstack_ops-3.6.1}/src/mcp_openstack_ops/services/alarms.py +0 -0
- {mcp_openstack_ops-3.5.9 → mcp_openstack_ops-3.6.1}/src/mcp_openstack_ops/services/image.py +0 -0
- {mcp_openstack_ops-3.5.9 → mcp_openstack_ops-3.6.1}/src/mcp_openstack_ops/services/load_balancer/__init__.py +0 -0
- {mcp_openstack_ops-3.5.9 → mcp_openstack_ops-3.6.1}/src/mcp_openstack_ops/services/load_balancer/amphorae.py +0 -0
- {mcp_openstack_ops-3.5.9 → mcp_openstack_ops-3.6.1}/src/mcp_openstack_ops/services/load_balancer/core.py +0 -0
- {mcp_openstack_ops-3.5.9 → mcp_openstack_ops-3.6.1}/src/mcp_openstack_ops/services/load_balancer/health_monitors.py +0 -0
- {mcp_openstack_ops-3.5.9 → mcp_openstack_ops-3.6.1}/src/mcp_openstack_ops/services/load_balancer/l7_policies.py +0 -0
- {mcp_openstack_ops-3.5.9 → mcp_openstack_ops-3.6.1}/src/mcp_openstack_ops/services/load_balancer/listeners.py +0 -0
- {mcp_openstack_ops-3.5.9 → mcp_openstack_ops-3.6.1}/src/mcp_openstack_ops/services/load_balancer/management.py +0 -0
- {mcp_openstack_ops-3.5.9 → mcp_openstack_ops-3.6.1}/src/mcp_openstack_ops/services/load_balancer/pools.py +0 -0
- {mcp_openstack_ops-3.5.9 → mcp_openstack_ops-3.6.1}/src/mcp_openstack_ops/tools/__init__.py +0 -0
- {mcp_openstack_ops-3.5.9 → mcp_openstack_ops-3.6.1}/src/mcp_openstack_ops/tools/get_availability_zones.py +0 -0
- {mcp_openstack_ops-3.5.9 → mcp_openstack_ops-3.6.1}/src/mcp_openstack_ops/tools/get_domains.py +0 -0
- {mcp_openstack_ops-3.5.9 → mcp_openstack_ops-3.6.1}/src/mcp_openstack_ops/tools/get_floating_ip_pools.py +0 -0
- {mcp_openstack_ops-3.5.9 → mcp_openstack_ops-3.6.1}/src/mcp_openstack_ops/tools/get_floating_ips.py +0 -0
- {mcp_openstack_ops-3.5.9 → mcp_openstack_ops-3.6.1}/src/mcp_openstack_ops/tools/get_heat_stack_details.py +0 -0
- {mcp_openstack_ops-3.5.9 → mcp_openstack_ops-3.6.1}/src/mcp_openstack_ops/tools/get_heat_stacks.py +0 -0
- {mcp_openstack_ops-3.5.9 → mcp_openstack_ops-3.6.1}/src/mcp_openstack_ops/tools/get_hypervisor_details.py +0 -0
- {mcp_openstack_ops-3.5.9 → mcp_openstack_ops-3.6.1}/src/mcp_openstack_ops/tools/get_identity_groups.py +0 -0
- {mcp_openstack_ops-3.5.9 → mcp_openstack_ops-3.6.1}/src/mcp_openstack_ops/tools/get_image_detail_list.py +0 -0
- {mcp_openstack_ops-3.5.9 → mcp_openstack_ops-3.6.1}/src/mcp_openstack_ops/tools/get_image_members.py +0 -0
- {mcp_openstack_ops-3.5.9 → mcp_openstack_ops-3.6.1}/src/mcp_openstack_ops/tools/get_instance_by_name.py +0 -0
- {mcp_openstack_ops-3.5.9 → mcp_openstack_ops-3.6.1}/src/mcp_openstack_ops/tools/get_load_balancer_amphorae.py +0 -0
- {mcp_openstack_ops-3.5.9 → mcp_openstack_ops-3.6.1}/src/mcp_openstack_ops/tools/get_load_balancer_availability_zones.py +0 -0
- {mcp_openstack_ops-3.5.9 → mcp_openstack_ops-3.6.1}/src/mcp_openstack_ops/tools/get_load_balancer_details.py +0 -0
- {mcp_openstack_ops-3.5.9 → mcp_openstack_ops-3.6.1}/src/mcp_openstack_ops/tools/get_load_balancer_flavors.py +0 -0
- {mcp_openstack_ops-3.5.9 → mcp_openstack_ops-3.6.1}/src/mcp_openstack_ops/tools/get_load_balancer_l7_policies.py +0 -0
- {mcp_openstack_ops-3.5.9 → mcp_openstack_ops-3.6.1}/src/mcp_openstack_ops/tools/get_load_balancer_l7_rules.py +0 -0
- {mcp_openstack_ops-3.5.9 → mcp_openstack_ops-3.6.1}/src/mcp_openstack_ops/tools/get_load_balancer_list.py +0 -0
- {mcp_openstack_ops-3.5.9 → mcp_openstack_ops-3.6.1}/src/mcp_openstack_ops/tools/get_load_balancer_listeners.py +0 -0
- {mcp_openstack_ops-3.5.9 → mcp_openstack_ops-3.6.1}/src/mcp_openstack_ops/tools/get_load_balancer_pools.py +0 -0
- {mcp_openstack_ops-3.5.9 → mcp_openstack_ops-3.6.1}/src/mcp_openstack_ops/tools/get_load_balancer_providers.py +0 -0
- {mcp_openstack_ops-3.5.9 → mcp_openstack_ops-3.6.1}/src/mcp_openstack_ops/tools/get_load_balancer_quotas.py +0 -0
- {mcp_openstack_ops-3.5.9 → mcp_openstack_ops-3.6.1}/src/mcp_openstack_ops/tools/get_network_qos_policies.py +0 -0
- {mcp_openstack_ops-3.5.9 → mcp_openstack_ops-3.6.1}/src/mcp_openstack_ops/tools/get_project_details.py +0 -0
- {mcp_openstack_ops-3.5.9 → mcp_openstack_ops-3.6.1}/src/mcp_openstack_ops/tools/get_quota.py +0 -0
- {mcp_openstack_ops-3.5.9 → mcp_openstack_ops-3.6.1}/src/mcp_openstack_ops/tools/get_resource_monitoring.py +0 -0
- {mcp_openstack_ops-3.5.9 → mcp_openstack_ops-3.6.1}/src/mcp_openstack_ops/tools/get_role_assignments.py +0 -0
- {mcp_openstack_ops-3.5.9 → mcp_openstack_ops-3.6.1}/src/mcp_openstack_ops/tools/get_server_events.py +0 -0
- {mcp_openstack_ops-3.5.9 → mcp_openstack_ops-3.6.1}/src/mcp_openstack_ops/tools/get_server_groups.py +0 -0
- {mcp_openstack_ops-3.5.9 → mcp_openstack_ops-3.6.1}/src/mcp_openstack_ops/tools/get_server_volumes.py +0 -0
- {mcp_openstack_ops-3.5.9 → mcp_openstack_ops-3.6.1}/src/mcp_openstack_ops/tools/get_service_status.py +0 -0
- {mcp_openstack_ops-3.5.9 → mcp_openstack_ops-3.6.1}/src/mcp_openstack_ops/tools/get_usage_statistics.py +0 -0
- {mcp_openstack_ops-3.5.9 → mcp_openstack_ops-3.6.1}/src/mcp_openstack_ops/tools/get_volume_backups.py +0 -0
- {mcp_openstack_ops-3.5.9 → mcp_openstack_ops-3.6.1}/src/mcp_openstack_ops/tools/get_volume_groups.py +0 -0
- {mcp_openstack_ops-3.5.9 → mcp_openstack_ops-3.6.1}/src/mcp_openstack_ops/tools/get_volume_qos.py +0 -0
- {mcp_openstack_ops-3.5.9 → mcp_openstack_ops-3.6.1}/src/mcp_openstack_ops/tools/get_volume_transfers.py +0 -0
- {mcp_openstack_ops-3.5.9 → mcp_openstack_ops-3.6.1}/src/mcp_openstack_ops/tools/get_volume_types.py +0 -0
- {mcp_openstack_ops-3.5.9 → mcp_openstack_ops-3.6.1}/src/mcp_openstack_ops/tools/set_alarms.py +0 -0
- {mcp_openstack_ops-3.5.9 → mcp_openstack_ops-3.6.1}/src/mcp_openstack_ops/tools/set_compute_agents.py +0 -0
- {mcp_openstack_ops-3.5.9 → mcp_openstack_ops-3.6.1}/src/mcp_openstack_ops/tools/set_domains.py +0 -0
- {mcp_openstack_ops-3.5.9 → mcp_openstack_ops-3.6.1}/src/mcp_openstack_ops/tools/set_flavor.py +0 -0
- {mcp_openstack_ops-3.5.9 → mcp_openstack_ops-3.6.1}/src/mcp_openstack_ops/tools/set_floating_ip.py +0 -0
- {mcp_openstack_ops-3.5.9 → mcp_openstack_ops-3.6.1}/src/mcp_openstack_ops/tools/set_floating_ip_port_forwarding.py +0 -0
- {mcp_openstack_ops-3.5.9 → mcp_openstack_ops-3.6.1}/src/mcp_openstack_ops/tools/set_identity_groups.py +0 -0
- {mcp_openstack_ops-3.5.9 → mcp_openstack_ops-3.6.1}/src/mcp_openstack_ops/tools/set_image_members.py +0 -0
- {mcp_openstack_ops-3.5.9 → mcp_openstack_ops-3.6.1}/src/mcp_openstack_ops/tools/set_image_metadata.py +0 -0
- {mcp_openstack_ops-3.5.9 → mcp_openstack_ops-3.6.1}/src/mcp_openstack_ops/tools/set_image_visibility.py +0 -0
- {mcp_openstack_ops-3.5.9 → mcp_openstack_ops-3.6.1}/src/mcp_openstack_ops/tools/set_instance.py +0 -0
- {mcp_openstack_ops-3.5.9 → mcp_openstack_ops-3.6.1}/src/mcp_openstack_ops/tools/set_keypair.py +0 -0
- {mcp_openstack_ops-3.5.9 → mcp_openstack_ops-3.6.1}/src/mcp_openstack_ops/tools/set_load_balancer.py +0 -0
- {mcp_openstack_ops-3.5.9 → mcp_openstack_ops-3.6.1}/src/mcp_openstack_ops/tools/set_load_balancer_amphora.py +0 -0
- {mcp_openstack_ops-3.5.9 → mcp_openstack_ops-3.6.1}/src/mcp_openstack_ops/tools/set_load_balancer_availability_zone.py +0 -0
- {mcp_openstack_ops-3.5.9 → mcp_openstack_ops-3.6.1}/src/mcp_openstack_ops/tools/set_load_balancer_flavor.py +0 -0
- {mcp_openstack_ops-3.5.9 → mcp_openstack_ops-3.6.1}/src/mcp_openstack_ops/tools/set_load_balancer_health_monitor.py +0 -0
- {mcp_openstack_ops-3.5.9 → mcp_openstack_ops-3.6.1}/src/mcp_openstack_ops/tools/set_load_balancer_l7_policy.py +0 -0
- {mcp_openstack_ops-3.5.9 → mcp_openstack_ops-3.6.1}/src/mcp_openstack_ops/tools/set_load_balancer_l7_rule.py +0 -0
- {mcp_openstack_ops-3.5.9 → mcp_openstack_ops-3.6.1}/src/mcp_openstack_ops/tools/set_load_balancer_listener.py +0 -0
- {mcp_openstack_ops-3.5.9 → mcp_openstack_ops-3.6.1}/src/mcp_openstack_ops/tools/set_load_balancer_quota.py +0 -0
- {mcp_openstack_ops-3.5.9 → mcp_openstack_ops-3.6.1}/src/mcp_openstack_ops/tools/set_metrics.py +0 -0
- {mcp_openstack_ops-3.5.9 → mcp_openstack_ops-3.6.1}/src/mcp_openstack_ops/tools/set_network_agents.py +0 -0
- {mcp_openstack_ops-3.5.9 → mcp_openstack_ops-3.6.1}/src/mcp_openstack_ops/tools/set_network_ports.py +0 -0
- {mcp_openstack_ops-3.5.9 → mcp_openstack_ops-3.6.1}/src/mcp_openstack_ops/tools/set_network_qos_policies.py +0 -0
- {mcp_openstack_ops-3.5.9 → mcp_openstack_ops-3.6.1}/src/mcp_openstack_ops/tools/set_project.py +0 -0
- {mcp_openstack_ops-3.5.9 → mcp_openstack_ops-3.6.1}/src/mcp_openstack_ops/tools/set_roles.py +0 -0
- {mcp_openstack_ops-3.5.9 → mcp_openstack_ops-3.6.1}/src/mcp_openstack_ops/tools/set_routers.py +0 -0
- {mcp_openstack_ops-3.5.9 → mcp_openstack_ops-3.6.1}/src/mcp_openstack_ops/tools/set_security_groups.py +0 -0
- {mcp_openstack_ops-3.5.9 → mcp_openstack_ops-3.6.1}/src/mcp_openstack_ops/tools/set_server_dump.py +0 -0
- {mcp_openstack_ops-3.5.9 → mcp_openstack_ops-3.6.1}/src/mcp_openstack_ops/tools/set_server_fixed_ip.py +0 -0
- {mcp_openstack_ops-3.5.9 → mcp_openstack_ops-3.6.1}/src/mcp_openstack_ops/tools/set_server_floating_ip.py +0 -0
- {mcp_openstack_ops-3.5.9 → mcp_openstack_ops-3.6.1}/src/mcp_openstack_ops/tools/set_server_group.py +0 -0
- {mcp_openstack_ops-3.5.9 → mcp_openstack_ops-3.6.1}/src/mcp_openstack_ops/tools/set_server_migration.py +0 -0
- {mcp_openstack_ops-3.5.9 → mcp_openstack_ops-3.6.1}/src/mcp_openstack_ops/tools/set_server_network.py +0 -0
- {mcp_openstack_ops-3.5.9 → mcp_openstack_ops-3.6.1}/src/mcp_openstack_ops/tools/set_server_security_group.py +0 -0
- {mcp_openstack_ops-3.5.9 → mcp_openstack_ops-3.6.1}/src/mcp_openstack_ops/tools/set_server_volume.py +0 -0
- {mcp_openstack_ops-3.5.9 → mcp_openstack_ops-3.6.1}/src/mcp_openstack_ops/tools/set_service_logs.py +0 -0
- {mcp_openstack_ops-3.5.9 → mcp_openstack_ops-3.6.1}/src/mcp_openstack_ops/tools/set_services.py +0 -0
- {mcp_openstack_ops-3.5.9 → mcp_openstack_ops-3.6.1}/src/mcp_openstack_ops/tools/set_snapshot.py +0 -0
- {mcp_openstack_ops-3.5.9 → mcp_openstack_ops-3.6.1}/src/mcp_openstack_ops/tools/set_subnets.py +0 -0
- {mcp_openstack_ops-3.5.9 → mcp_openstack_ops-3.6.1}/src/mcp_openstack_ops/tools/set_users.py +0 -0
- {mcp_openstack_ops-3.5.9 → mcp_openstack_ops-3.6.1}/src/mcp_openstack_ops/tools/set_volume_backups.py +0 -0
- {mcp_openstack_ops-3.5.9 → mcp_openstack_ops-3.6.1}/src/mcp_openstack_ops/tools/set_volume_groups.py +0 -0
- {mcp_openstack_ops-3.5.9 → mcp_openstack_ops-3.6.1}/src/mcp_openstack_ops/tools/set_volume_qos.py +0 -0
- {mcp_openstack_ops-3.5.9 → mcp_openstack_ops-3.6.1}/src/mcp_openstack_ops/tools/set_volume_types.py +0 -0
- {mcp_openstack_ops-3.5.9 → mcp_openstack_ops-3.6.1}/src/mcp_openstack_ops.egg-info/dependency_links.txt +0 -0
- {mcp_openstack_ops-3.5.9 → mcp_openstack_ops-3.6.1}/src/mcp_openstack_ops.egg-info/entry_points.txt +0 -0
- {mcp_openstack_ops-3.5.9 → mcp_openstack_ops-3.6.1}/src/mcp_openstack_ops.egg-info/requires.txt +0 -0
- {mcp_openstack_ops-3.5.9 → mcp_openstack_ops-3.6.1}/src/mcp_openstack_ops.egg-info/top_level.txt +0 -0
- {mcp_openstack_ops-3.5.9 → mcp_openstack_ops-3.6.1}/test_compatibility.sh +0 -0
- {mcp_openstack_ops-3.5.9 → mcp_openstack_ops-3.6.1}/test_project_isolation.py +0 -0
- {mcp_openstack_ops-3.5.9 → mcp_openstack_ops-3.6.1}/tests/test_connection.py +0 -0
- {mcp_openstack_ops-3.5.9 → mcp_openstack_ops-3.6.1}/tests/test_operational_tools.py +0 -0
- {mcp_openstack_ops-3.5.9 → mcp_openstack_ops-3.6.1}/tests/test_publish_release.py +0 -0
- {mcp_openstack_ops-3.5.9 → mcp_openstack_ops-3.6.1}/tests/test_release.py +0 -0
- {mcp_openstack_ops-3.5.9 → mcp_openstack_ops-3.6.1}/tests/test_tool_registration.py +0 -0
- {mcp_openstack_ops-3.5.9 → mcp_openstack_ops-3.6.1}/uv.lock +0 -0
|
@@ -19,8 +19,9 @@ FASTMCP_TYPE=streamable-http
|
|
|
19
19
|
FASTMCP_HOST=0.0.0.0
|
|
20
20
|
FASTMCP_PORT=8000
|
|
21
21
|
|
|
22
|
-
# (Optional) Enable authentication for streamable-http mode
|
|
23
|
-
#
|
|
22
|
+
# (Optional) Enable HTTP Bearer token authentication for streamable-http mode.
|
|
23
|
+
# Clients must send Authorization: Bearer <REMOTE_SECRET_KEY> when enabled.
|
|
24
|
+
# Recommended for production; use a strong, unique REMOTE_SECRET_KEY.
|
|
24
25
|
REMOTE_AUTH_ENABLE=false
|
|
25
26
|
REMOTE_SECRET_KEY=your-secure-secret-key-here
|
|
26
27
|
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
name: Unit tests
|
|
2
|
+
|
|
3
|
+
on:
|
|
4
|
+
push:
|
|
5
|
+
branches: ["main", "feat/73-per-user-connections"]
|
|
6
|
+
pull_request:
|
|
7
|
+
|
|
8
|
+
permissions:
|
|
9
|
+
contents: read
|
|
10
|
+
|
|
11
|
+
jobs:
|
|
12
|
+
test:
|
|
13
|
+
runs-on: ubuntu-latest
|
|
14
|
+
timeout-minutes: 10
|
|
15
|
+
steps:
|
|
16
|
+
- uses: actions/checkout@v7
|
|
17
|
+
with:
|
|
18
|
+
persist-credentials: false
|
|
19
|
+
fetch-depth: 0
|
|
20
|
+
- uses: actions/setup-python@v7
|
|
21
|
+
with:
|
|
22
|
+
python-version: "3.12.x"
|
|
23
|
+
- name: Install uv
|
|
24
|
+
run: pip install uv==0.7.20
|
|
25
|
+
- name: Install locked test dependencies
|
|
26
|
+
run: uv sync --locked --extra dev
|
|
27
|
+
- name: Run unit tests without cloud credentials
|
|
28
|
+
run: uv run --locked --extra dev python -m pytest -q tests
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
# Repository instructions
|
|
2
|
+
|
|
3
|
+
These instructions supplement the user's global guidelines. They do not authorize
|
|
4
|
+
Git writes, external publication, or changes to existing cloud resources.
|
|
5
|
+
|
|
6
|
+
## Maintain the CLI-to-tool mapping and validation snapshot
|
|
7
|
+
|
|
8
|
+
For every improvement or fix, review README.md's **OpenStack CLI vs MCP Tools
|
|
9
|
+
Mapping** section. Keep its summary, tool rows, Status, Notes, and linked evidence
|
|
10
|
+
consistent with the resulting implementation and actual verification.
|
|
11
|
+
|
|
12
|
+
- Update affected rows whenever tools, actions, parameters, prerequisites,
|
|
13
|
+
permissions, limitations, or behavior change. Use registered tool names and
|
|
14
|
+
supported actions; do not advertise missing tools or unimplemented actions.
|
|
15
|
+
- Distinguish implementation from verification. Mark implemented paths without
|
|
16
|
+
successful live validation as **Live unverified**, with the specific reason.
|
|
17
|
+
Missing services/APIs, policy denials, failures, and timeouts are not passes.
|
|
18
|
+
Keep intentional capability limitations and unimplemented actions explicit.
|
|
19
|
+
- Keep **Live tool checks** and **Local unit tests** in separate summary groups.
|
|
20
|
+
Live classifications count unique tools; unit tests count test cases. Multiple
|
|
21
|
+
tests for one tool do not increase the unique-tool count. Keep classification
|
|
22
|
+
totals consistent with the stated inventory and scope.
|
|
23
|
+
- Show unit-test results concisely as `160/160 (100%)`, using the actual results,
|
|
24
|
+
not this example's values. Account for failures and skipped tests separately
|
|
25
|
+
when present; do not count skipped tests as passes. Do not treat unit-test
|
|
26
|
+
success as proof of live service functionality.
|
|
27
|
+
- Run relevant verification after functional changes. Update dates, source
|
|
28
|
+
revision or working-tree identity, counts, percentages, and evidence links only
|
|
29
|
+
from checks actually performed. Do not present an older snapshot as validation
|
|
30
|
+
of newer code. Mark affected paths as unverified or the snapshot as outdated
|
|
31
|
+
when validation cannot be repeated.
|
|
32
|
+
- Replace a complete live summary only after repeating its stated coverage.
|
|
33
|
+
Label targeted retests as partial; do not extrapolate them to the full toolset.
|
|
34
|
+
Document polling limits and distinguish accepted requests from confirmed final
|
|
35
|
+
resource states. Explain changes in test conditions that affect comparisons.
|
|
36
|
+
- Keep dated reports as historical evidence and link the latest applicable
|
|
37
|
+
report from README.md. Reports must state verification limits, observed
|
|
38
|
+
failures, and cleanup results without exposing credentials, private endpoints,
|
|
39
|
+
or sensitive resource data.
|
|
40
|
+
- Before completion, check summary arithmetic, percentages, tool/action names,
|
|
41
|
+
Status/Notes, source identity, and evidence links for agreement. If README.ko.md
|
|
42
|
+
exists, maintain equivalent information in both README files.
|