vmware-aria 2.2.0__tar.gz → 2.3.0__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.
- {vmware_aria-2.2.0 → vmware_aria-2.3.0}/.claude-plugin/plugin.json +2 -2
- {vmware_aria-2.2.0 → vmware_aria-2.3.0}/.mcp.json +1 -1
- {vmware_aria-2.2.0 → vmware_aria-2.3.0}/PKG-INFO +65 -5
- {vmware_aria-2.2.0 → vmware_aria-2.3.0}/README-CN.md +61 -3
- {vmware_aria-2.2.0 → vmware_aria-2.3.0}/README.md +63 -3
- {vmware_aria-2.2.0 → vmware_aria-2.3.0}/RELEASE_NOTES.md +32 -0
- {vmware_aria-2.2.0 → vmware_aria-2.3.0}/SECURITY.md +3 -1
- {vmware_aria-2.2.0 → vmware_aria-2.3.0}/openclaw.plugin.json +2 -2
- {vmware_aria-2.2.0 → vmware_aria-2.3.0}/package.json +2 -2
- {vmware_aria-2.2.0 → vmware_aria-2.3.0}/pyproject.toml +2 -2
- {vmware_aria-2.2.0 → vmware_aria-2.3.0}/server.json +3 -3
- {vmware_aria-2.2.0 → vmware_aria-2.3.0}/skills/vmware-aria/SKILL.md +21 -15
- {vmware_aria-2.2.0 → vmware_aria-2.3.0}/skills/vmware-aria/references/capabilities.md +11 -3
- {vmware_aria-2.2.0 → vmware_aria-2.3.0}/skills/vmware-aria/references/cli-reference.md +37 -0
- {vmware_aria-2.2.0 → vmware_aria-2.3.0}/skills/vmware-aria/references/setup-guide.md +33 -4
- {vmware_aria-2.2.0 → vmware_aria-2.3.0}/tests/eval/regression/test_aria_spec_conformance.py +2 -2
- {vmware_aria-2.2.0 → vmware_aria-2.3.0}/tests/eval/regression/test_aria_specific.py +7 -4
- {vmware_aria-2.2.0 → vmware_aria-2.3.0}/tests/eval/regression/test_fleet_rows_survive_the_container_key.py +1 -1
- {vmware_aria-2.2.0 → vmware_aria-2.3.0}/tests/eval/regression/test_mcp_parity.py +5 -3
- {vmware_aria-2.2.0 → vmware_aria-2.3.0}/tests/eval/regression/test_vcf91_fleet_spec.py +2 -2
- {vmware_aria-2.2.0 → vmware_aria-2.3.0}/tests/eval/regression/test_version_gated_calls_declare_their_floor.py +1 -1
- vmware_aria-2.3.0/tests/test_api_escape.py +193 -0
- vmware_aria-2.3.0/tests/test_session_pool.py +212 -0
- {vmware_aria-2.2.0 → vmware_aria-2.3.0}/uv.lock +5 -5
- {vmware_aria-2.2.0 → vmware_aria-2.3.0}/vmware_aria/__init__.py +1 -1
- {vmware_aria-2.2.0 → vmware_aria-2.3.0}/vmware_aria/cli.py +2 -0
- vmware_aria-2.3.0/vmware_aria/cli_api.py +81 -0
- {vmware_aria-2.2.0 → vmware_aria-2.3.0}/vmware_aria/connection.py +34 -23
- {vmware_aria-2.2.0 → vmware_aria-2.3.0}/vmware_aria/mcp_server/_shared.py +20 -7
- {vmware_aria-2.2.0 → vmware_aria-2.3.0}/vmware_aria/mcp_server/server.py +13 -1
- vmware_aria-2.3.0/vmware_aria/mcp_server/tools/api.py +70 -0
- vmware_aria-2.3.0/vmware_aria/ops/api_escape.py +269 -0
- {vmware_aria-2.2.0 → vmware_aria-2.3.0}/vmware_aria/ops/fleet.py +3 -3
- {vmware_aria-2.2.0 → vmware_aria-2.3.0}/vmware_aria/ops/gate_measures.py +1 -1
- {vmware_aria-2.2.0 → vmware_aria-2.3.0}/vmware_aria/ops/promql.py +2 -2
- {vmware_aria-2.2.0 → vmware_aria-2.3.0}/vmware_aria/ops/reports.py +1 -1
- {vmware_aria-2.2.0 → vmware_aria-2.3.0}/.clawhubignore +0 -0
- {vmware_aria-2.2.0 → vmware_aria-2.3.0}/.env.example +0 -0
- {vmware_aria-2.2.0 → vmware_aria-2.3.0}/.gitignore +0 -0
- {vmware_aria-2.2.0 → vmware_aria-2.3.0}/Dockerfile +0 -0
- {vmware_aria-2.2.0 → vmware_aria-2.3.0}/config.example.yaml +0 -0
- {vmware_aria-2.2.0 → vmware_aria-2.3.0}/docker-compose.yml +0 -0
- {vmware_aria-2.2.0 → vmware_aria-2.3.0}/examples/mcp-configs/claude-code.json +0 -0
- {vmware_aria-2.2.0 → vmware_aria-2.3.0}/examples/mcp-configs/cursor.json +0 -0
- {vmware_aria-2.2.0 → vmware_aria-2.3.0}/examples/mcp-configs/goose.json +0 -0
- {vmware_aria-2.2.0 → vmware_aria-2.3.0}/skills/vmware-aria/evals/evals.json +0 -0
- {vmware_aria-2.2.0 → vmware_aria-2.3.0}/skills/vmware-aria/references/agent-guardrails.md +0 -0
- {vmware_aria-2.2.0 → vmware_aria-2.3.0}/skills/vmware-aria/references/investigation-protocol.md +0 -0
- {vmware_aria-2.2.0 → vmware_aria-2.3.0}/skills/vmware-aria/references/ops-playbooks.md +0 -0
- {vmware_aria-2.2.0 → vmware_aria-2.3.0}/smithery.yaml +0 -0
- {vmware_aria-2.2.0 → vmware_aria-2.3.0}/tests/__init__.py +0 -0
- {vmware_aria-2.2.0 → vmware_aria-2.3.0}/tests/conftest.py +0 -0
- {vmware_aria-2.2.0 → vmware_aria-2.3.0}/tests/eval/__init__.py +0 -0
- {vmware_aria-2.2.0 → vmware_aria-2.3.0}/tests/eval/capability/__init__.py +0 -0
- {vmware_aria-2.2.0 → vmware_aria-2.3.0}/tests/eval/capability/_family.py +0 -0
- {vmware_aria-2.2.0 → vmware_aria-2.3.0}/tests/eval/capability/_scores.json +0 -0
- {vmware_aria-2.2.0 → vmware_aria-2.3.0}/tests/eval/capability/_scoring.py +0 -0
- {vmware_aria-2.2.0 → vmware_aria-2.3.0}/tests/eval/capability/_skill.py +0 -0
- {vmware_aria-2.2.0 → vmware_aria-2.3.0}/tests/eval/capability/conftest.py +0 -0
- {vmware_aria-2.2.0 → vmware_aria-2.3.0}/tests/eval/capability/test_entity_reachability.py +0 -0
- {vmware_aria-2.2.0 → vmware_aria-2.3.0}/tests/eval/capability/test_error_actionability.py +0 -0
- {vmware_aria-2.2.0 → vmware_aria-2.3.0}/tests/eval/capability/test_tool_description_quality.py +0 -0
- {vmware_aria-2.2.0 → vmware_aria-2.3.0}/tests/eval/capability/test_tool_manifest_budget.py +0 -0
- {vmware_aria-2.2.0 → vmware_aria-2.3.0}/tests/eval/fixtures/aria_8187/alert_adapter_childs_no_data.json +0 -0
- {vmware_aria-2.2.0 → vmware_aria-2.3.0}/tests/eval/fixtures/aria_8187/alert_notes_404.json +0 -0
- {vmware_aria-2.2.0 → vmware_aria-2.3.0}/tests/eval/fixtures/aria_8187/alert_notes_empty.json +0 -0
- {vmware_aria-2.2.0 → vmware_aria-2.3.0}/tests/eval/fixtures/aria_8187/alert_vcapp_health.json +0 -0
- {vmware_aria-2.2.0 → vmware_aria-2.3.0}/tests/eval/fixtures/aria_8187/alertdefinition_adapter_childs_no_data.json +0 -0
- {vmware_aria-2.2.0 → vmware_aria-2.3.0}/tests/eval/fixtures/aria_8187/alertdefinition_vcapp_health.json +0 -0
- {vmware_aria-2.2.0 → vmware_aria-2.3.0}/tests/eval/fixtures/aria_8187/contributingsymptoms_vcapp_health.json +0 -0
- {vmware_aria-2.2.0 → vmware_aria-2.3.0}/tests/eval/fixtures/aria_8187/host_relationships_all.json +0 -0
- {vmware_aria-2.2.0 → vmware_aria-2.3.0}/tests/eval/fixtures/aria_8187/host_relationships_child.json +0 -0
- {vmware_aria-2.2.0 → vmware_aria-2.3.0}/tests/eval/fixtures/aria_8187/host_relationships_parent.json +0 -0
- {vmware_aria-2.2.0 → vmware_aria-2.3.0}/tests/eval/fixtures/aria_8187/host_statkey_definitions.json +0 -0
- {vmware_aria-2.2.0 → vmware_aria-2.3.0}/tests/eval/fixtures/aria_8187/maintenanceschedules_empty.json +0 -0
- {vmware_aria-2.2.0 → vmware_aria-2.3.0}/tests/eval/fixtures/aria_8187/node_status_503.json +0 -0
- {vmware_aria-2.2.0 → vmware_aria-2.3.0}/tests/eval/fixtures/aria_8187/platform_adapters.json +0 -0
- {vmware_aria-2.2.0 → vmware_aria-2.3.0}/tests/eval/fixtures/aria_8187/platform_node_statkey_definitions.json +0 -0
- {vmware_aria-2.2.0 → vmware_aria-2.3.0}/tests/eval/fixtures/aria_8187/platform_node_statkeys.json +0 -0
- {vmware_aria-2.2.0 → vmware_aria-2.3.0}/tests/eval/fixtures/aria_8187/platform_resources_node.json +0 -0
- {vmware_aria-2.2.0 → vmware_aria-2.3.0}/tests/eval/fixtures/aria_8187/platform_resources_watchdog.json +0 -0
- {vmware_aria-2.2.0 → vmware_aria-2.3.0}/tests/eval/fixtures/aria_8187/platform_stats_latest.json +0 -0
- {vmware_aria-2.2.0 → vmware_aria-2.3.0}/tests/eval/fixtures/aria_8187/platform_stats_query.json +0 -0
- {vmware_aria-2.2.0 → vmware_aria-2.3.0}/tests/eval/fixtures/aria_8187/platform_watchdog_statkey_definitions.json +0 -0
- {vmware_aria-2.2.0 → vmware_aria-2.3.0}/tests/eval/fixtures/aria_8187/platform_watchdog_statkeys.json +0 -0
- {vmware_aria-2.2.0 → vmware_aria-2.3.0}/tests/eval/fixtures/aria_8187/properties_bulk_vcapp_services.json +0 -0
- {vmware_aria-2.2.0 → vmware_aria-2.3.0}/tests/eval/fixtures/aria_8187/recommendation_404.json +0 -0
- {vmware_aria-2.2.0 → vmware_aria-2.3.0}/tests/eval/fixtures/aria_8187/recommendations_by_id_adapter_childs.json +0 -0
- {vmware_aria-2.2.0 → vmware_aria-2.3.0}/tests/eval/fixtures/aria_8187/recommendations_by_id_vcapp.json +0 -0
- {vmware_aria-2.2.0 → vmware_aria-2.3.0}/tests/eval/fixtures/aria_8187/resource_test_llm.json +0 -0
- {vmware_aria-2.2.0 → vmware_aria-2.3.0}/tests/eval/fixtures/aria_8187/service_resource_mem.json +0 -0
- {vmware_aria-2.2.0 → vmware_aria-2.3.0}/tests/eval/fixtures/aria_8187/services_info.json +0 -0
- {vmware_aria-2.2.0 → vmware_aria-2.3.0}/tests/eval/fixtures/aria_8187/stats_query_mixed.json +0 -0
- {vmware_aria-2.2.0 → vmware_aria-2.3.0}/tests/eval/fixtures/aria_8187/stats_query_no_values.json +0 -0
- {vmware_aria-2.2.0 → vmware_aria-2.3.0}/tests/eval/fixtures/aria_8187/symptoms_ignores_id_filter.json +0 -0
- {vmware_aria-2.2.0 → vmware_aria-2.3.0}/tests/eval/fixtures/aria_8187/topn_no_groups.json +0 -0
- {vmware_aria-2.2.0 → vmware_aria-2.3.0}/tests/eval/fixtures/aria_8187/vcapp_children.json +0 -0
- {vmware_aria-2.2.0 → vmware_aria-2.3.0}/tests/eval/fixtures/aria_8187/versions_current.json +0 -0
- {vmware_aria-2.2.0 → vmware_aria-2.3.0}/tests/eval/fixtures/aria_8187/vm_properties.json +0 -0
- {vmware_aria-2.2.0 → vmware_aria-2.3.0}/tests/eval/fixtures/aria_8187/vm_relationships_all.json +0 -0
- {vmware_aria-2.2.0 → vmware_aria-2.3.0}/tests/eval/fixtures/aria_8187/vm_relationships_child.json +0 -0
- {vmware_aria-2.2.0 → vmware_aria-2.3.0}/tests/eval/fixtures/aria_8187/vm_relationships_parent.json +0 -0
- {vmware_aria-2.2.0 → vmware_aria-2.3.0}/tests/eval/fixtures/aria_8187/vm_resource_test_llm.json +0 -0
- {vmware_aria-2.2.0 → vmware_aria-2.3.0}/tests/eval/fixtures/aria_8187/vm_statkey_definitions.json +0 -0
- {vmware_aria-2.2.0 → vmware_aria-2.3.0}/tests/eval/fixtures/aria_8187/vm_statkey_definitions_full.json +0 -0
- {vmware_aria-2.2.0 → vmware_aria-2.3.0}/tests/eval/fixtures/aria_8187/vm_statkeys.json +0 -0
- {vmware_aria-2.2.0 → vmware_aria-2.3.0}/tests/eval/fixtures/aria_8187/vm_statkeys_180.json +0 -0
- {vmware_aria-2.2.0 → vmware_aria-2.3.0}/tests/eval/regression/__init__.py +0 -0
- {vmware_aria-2.2.0 → vmware_aria-2.3.0}/tests/eval/regression/_live_8187.py +0 -0
- {vmware_aria-2.2.0 → vmware_aria-2.3.0}/tests/eval/regression/fixtures/aria_8187_alerts.json +0 -0
- {vmware_aria-2.2.0 → vmware_aria-2.3.0}/tests/eval/regression/fixtures/aria_8187_rightsizing.json +0 -0
- {vmware_aria-2.2.0 → vmware_aria-2.3.0}/tests/eval/regression/test_a_9x_only_404_is_not_a_bad_id.py +0 -0
- {vmware_aria-2.2.0 → vmware_aria-2.3.0}/tests/eval/regression/test_alert_ids_are_pasteable_and_times_readable.py +0 -0
- {vmware_aria-2.2.0 → vmware_aria-2.3.0}/tests/eval/regression/test_alert_notes.py +0 -0
- {vmware_aria-2.2.0 → vmware_aria-2.3.0}/tests/eval/regression/test_alert_recommendations.py +0 -0
- {vmware_aria-2.2.0 → vmware_aria-2.3.0}/tests/eval/regression/test_anomaly_count_is_total_anomalies.py +0 -0
- {vmware_aria-2.2.0 → vmware_aria-2.3.0}/tests/eval/regression/test_anomaly_limit_bounds_the_answer.py +0 -0
- {vmware_aria-2.2.0 → vmware_aria-2.3.0}/tests/eval/regression/test_aria_spec_shapes.py +0 -0
- {vmware_aria-2.2.0 → vmware_aria-2.3.0}/tests/eval/regression/test_cached_loader_agrees_with_the_resolver.py +0 -0
- {vmware_aria-2.2.0 → vmware_aria-2.3.0}/tests/eval/regression/test_capability_grader.py +0 -0
- {vmware_aria-2.2.0 → vmware_aria-2.3.0}/tests/eval/regression/test_cli_value_errors_are_usage_errors.py +0 -0
- {vmware_aria-2.2.0 → vmware_aria-2.3.0}/tests/eval/regression/test_cli_writes_guarded.py +0 -0
- {vmware_aria-2.2.0 → vmware_aria-2.3.0}/tests/eval/regression/test_credential_env_override.py +0 -0
- {vmware_aria-2.2.0 → vmware_aria-2.3.0}/tests/eval/regression/test_destructive_cli_asks_twice.py +0 -0
- {vmware_aria-2.2.0 → vmware_aria-2.3.0}/tests/eval/regression/test_doctor_does_not_send_you_to_doctor.py +0 -0
- {vmware_aria-2.2.0 → vmware_aria-2.3.0}/tests/eval/regression/test_doctor_uses_the_config_the_tools_use.py +0 -0
- {vmware_aria-2.2.0 → vmware_aria-2.3.0}/tests/eval/regression/test_documented_metric_keys_exist.py +0 -0
- {vmware_aria-2.2.0 → vmware_aria-2.3.0}/tests/eval/regression/test_empty_metrics_say_why.py +0 -0
- {vmware_aria-2.2.0 → vmware_aria-2.3.0}/tests/eval/regression/test_empty_vs_unrecognized.py +0 -0
- {vmware_aria-2.2.0 → vmware_aria-2.3.0}/tests/eval/regression/test_env_secret_obfuscation.py +0 -0
- {vmware_aria-2.2.0 → vmware_aria-2.3.0}/tests/eval/regression/test_health_degraded_is_not_down.py +0 -0
- {vmware_aria-2.2.0 → vmware_aria-2.3.0}/tests/eval/regression/test_health_says_what_it_observed.py +0 -0
- {vmware_aria-2.2.0 → vmware_aria-2.3.0}/tests/eval/regression/test_ids_must_be_uuid_shaped.py +0 -0
- {vmware_aria-2.2.0 → vmware_aria-2.3.0}/tests/eval/regression/test_instructions_name_targets.py +0 -0
- {vmware_aria-2.2.0 → vmware_aria-2.3.0}/tests/eval/regression/test_live_8187_alert_names.py +0 -0
- {vmware_aria-2.2.0 → vmware_aria-2.3.0}/tests/eval/regression/test_maintenance_mode.py +0 -0
- {vmware_aria-2.2.0 → vmware_aria-2.3.0}/tests/eval/regression/test_maintenance_schedules.py +0 -0
- {vmware_aria-2.2.0 → vmware_aria-2.3.0}/tests/eval/regression/test_metrics_interval.py +0 -0
- {vmware_aria-2.2.0 → vmware_aria-2.3.0}/tests/eval/regression/test_metrics_summary.py +0 -0
- {vmware_aria-2.2.0 → vmware_aria-2.3.0}/tests/eval/regression/test_paging_loop_terminates.py +0 -0
- {vmware_aria-2.2.0 → vmware_aria-2.3.0}/tests/eval/regression/test_platform_adapters.py +0 -0
- {vmware_aria-2.2.0 → vmware_aria-2.3.0}/tests/eval/regression/test_platform_node_resources.py +0 -0
- {vmware_aria-2.2.0 → vmware_aria-2.3.0}/tests/eval/regression/test_platform_surfaces.py +0 -0
- {vmware_aria-2.2.0 → vmware_aria-2.3.0}/tests/eval/regression/test_product_version_is_read_and_parseable.py +0 -0
- {vmware_aria-2.2.0 → vmware_aria-2.3.0}/tests/eval/regression/test_release_blockers.py +0 -0
- {vmware_aria-2.2.0 → vmware_aria-2.3.0}/tests/eval/regression/test_report_fields_do_not_lie.py +0 -0
- {vmware_aria-2.2.0 → vmware_aria-2.3.0}/tests/eval/regression/test_resource_catalog.py +0 -0
- {vmware_aria-2.2.0 → vmware_aria-2.3.0}/tests/eval/regression/test_resource_list_says_which_objects_stopped_reporting.py +0 -0
- {vmware_aria-2.2.0 → vmware_aria-2.3.0}/tests/eval/regression/test_result_envelope.py +0 -0
- {vmware_aria-2.2.0 → vmware_aria-2.3.0}/tests/eval/regression/test_rightsizing_live_8187.py +0 -0
- {vmware_aria-2.2.0 → vmware_aria-2.3.0}/tests/eval/regression/test_rightsizing_recommendation_history.py +0 -0
- {vmware_aria-2.2.0 → vmware_aria-2.3.0}/tests/eval/regression/test_service_health_is_not_the_badge.py +0 -0
- {vmware_aria-2.2.0 → vmware_aria-2.3.0}/tests/eval/regression/test_stats_n1.py +0 -0
- {vmware_aria-2.2.0 → vmware_aria-2.3.0}/tests/eval/regression/test_text_io_declares_encoding.py +0 -0
- {vmware_aria-2.2.0 → vmware_aria-2.3.0}/tests/eval/regression/test_top_consumers_value_is_the_ranking.py +0 -0
- {vmware_aria-2.2.0 → vmware_aria-2.3.0}/tests/eval/regression/test_vcapp_symptoms_name_their_resources.py +0 -0
- {vmware_aria-2.2.0 → vmware_aria-2.3.0}/tests/eval/regression/test_verify_ssl_false_needs_no_urllib3.py +0 -0
- {vmware_aria-2.2.0 → vmware_aria-2.3.0}/tests/test_config.py +0 -0
- {vmware_aria-2.2.0 → vmware_aria-2.3.0}/tests/test_gated_writes.py +0 -0
- {vmware_aria-2.2.0 → vmware_aria-2.3.0}/tests/test_init_and_onboarding.py +0 -0
- {vmware_aria-2.2.0 → vmware_aria-2.3.0}/tests/test_investigate.py +0 -0
- {vmware_aria-2.2.0 → vmware_aria-2.3.0}/tests/test_no_destructive_ops.py +0 -0
- {vmware_aria-2.2.0 → vmware_aria-2.3.0}/tests/test_safe_error_passthrough.py +0 -0
- {vmware_aria-2.2.0/tests/eval/spec → vmware_aria-2.3.0/vmware_aria/api_spec}/vcf91_fleet_operations.json +0 -0
- {vmware_aria-2.2.0/tests/eval/spec → vmware_aria-2.3.0/vmware_aria/api_spec}/vcfops91_operations.json +0 -0
- {vmware_aria-2.2.0/tests/eval/spec → vmware_aria-2.3.0/vmware_aria/api_spec}/vrops86_operations.json +0 -0
- {vmware_aria-2.2.0 → vmware_aria-2.3.0}/vmware_aria/cli_catalog.py +0 -0
- {vmware_aria-2.2.0 → vmware_aria-2.3.0}/vmware_aria/cli_platform.py +0 -0
- {vmware_aria-2.2.0 → vmware_aria-2.3.0}/vmware_aria/cli_workflow.py +0 -0
- {vmware_aria-2.2.0 → vmware_aria-2.3.0}/vmware_aria/config.py +0 -0
- {vmware_aria-2.2.0 → vmware_aria-2.3.0}/vmware_aria/doctor.py +0 -0
- {vmware_aria-2.2.0 → vmware_aria-2.3.0}/vmware_aria/init_wizard.py +0 -0
- {vmware_aria-2.2.0 → vmware_aria-2.3.0}/vmware_aria/mcp_server/__init__.py +0 -0
- {vmware_aria-2.2.0 → vmware_aria-2.3.0}/vmware_aria/mcp_server/__main__.py +0 -0
- {vmware_aria-2.2.0 → vmware_aria-2.3.0}/vmware_aria/mcp_server/tools/__init__.py +0 -0
- {vmware_aria-2.2.0 → vmware_aria-2.3.0}/vmware_aria/mcp_server/tools/alert_definitions.py +0 -0
- {vmware_aria-2.2.0 → vmware_aria-2.3.0}/vmware_aria/mcp_server/tools/alert_workflow.py +0 -0
- {vmware_aria-2.2.0 → vmware_aria-2.3.0}/vmware_aria/mcp_server/tools/alerts.py +0 -0
- {vmware_aria-2.2.0 → vmware_aria-2.3.0}/vmware_aria/mcp_server/tools/anomaly.py +0 -0
- {vmware_aria-2.2.0 → vmware_aria-2.3.0}/vmware_aria/mcp_server/tools/capacity.py +0 -0
- {vmware_aria-2.2.0 → vmware_aria-2.3.0}/vmware_aria/mcp_server/tools/catalog.py +0 -0
- {vmware_aria-2.2.0 → vmware_aria-2.3.0}/vmware_aria/mcp_server/tools/fleet.py +0 -0
- {vmware_aria-2.2.0 → vmware_aria-2.3.0}/vmware_aria/mcp_server/tools/health.py +0 -0
- {vmware_aria-2.2.0 → vmware_aria-2.3.0}/vmware_aria/mcp_server/tools/maintenance.py +0 -0
- {vmware_aria-2.2.0 → vmware_aria-2.3.0}/vmware_aria/mcp_server/tools/reports.py +0 -0
- {vmware_aria-2.2.0 → vmware_aria-2.3.0}/vmware_aria/mcp_server/tools/resources.py +0 -0
- {vmware_aria-2.2.0 → vmware_aria-2.3.0}/vmware_aria/notify/__init__.py +0 -0
- {vmware_aria-2.2.0 → vmware_aria-2.3.0}/vmware_aria/notify/audit.py +0 -0
- {vmware_aria-2.2.0 → vmware_aria-2.3.0}/vmware_aria/ops/__init__.py +0 -0
- {vmware_aria-2.2.0 → vmware_aria-2.3.0}/vmware_aria/ops/_collection.py +0 -0
- {vmware_aria-2.2.0 → vmware_aria-2.3.0}/vmware_aria/ops/_ids.py +0 -0
- {vmware_aria-2.2.0 → vmware_aria-2.3.0}/vmware_aria/ops/_paging.py +0 -0
- {vmware_aria-2.2.0 → vmware_aria-2.3.0}/vmware_aria/ops/alert_notes.py +0 -0
- {vmware_aria-2.2.0 → vmware_aria-2.3.0}/vmware_aria/ops/alert_recommendations.py +0 -0
- {vmware_aria-2.2.0 → vmware_aria-2.3.0}/vmware_aria/ops/alerts.py +0 -0
- {vmware_aria-2.2.0 → vmware_aria-2.3.0}/vmware_aria/ops/anomaly.py +0 -0
- {vmware_aria-2.2.0 → vmware_aria-2.3.0}/vmware_aria/ops/capacity.py +0 -0
- {vmware_aria-2.2.0 → vmware_aria-2.3.0}/vmware_aria/ops/catalog.py +0 -0
- {vmware_aria-2.2.0 → vmware_aria-2.3.0}/vmware_aria/ops/health.py +0 -0
- {vmware_aria-2.2.0 → vmware_aria-2.3.0}/vmware_aria/ops/investigate.py +0 -0
- {vmware_aria-2.2.0 → vmware_aria-2.3.0}/vmware_aria/ops/maintenance.py +0 -0
- {vmware_aria-2.2.0 → vmware_aria-2.3.0}/vmware_aria/ops/metric_summary.py +0 -0
- {vmware_aria-2.2.0 → vmware_aria-2.3.0}/vmware_aria/ops/platform.py +0 -0
- {vmware_aria-2.2.0 → vmware_aria-2.3.0}/vmware_aria/ops/resources.py +0 -0
- {vmware_aria-2.2.0 → vmware_aria-2.3.0}/vmware_aria/ops/service_state.py +0 -0
- {vmware_aria-2.2.0 → vmware_aria-2.3.0}/vmware_aria/ops/symptom_resources.py +0 -0
- {vmware_aria-2.2.0 → vmware_aria-2.3.0}/vmware_aria/ops/write_gate.py +0 -0
- {vmware_aria-2.2.0 → vmware_aria-2.3.0}/vmware_aria/policy_environment.py +0 -0
|
@@ -2,8 +2,8 @@
|
|
|
2
2
|
"$schema": "https://anthropic.com/claude-code/plugin.schema.json",
|
|
3
3
|
"name": "vmware-aria",
|
|
4
4
|
"displayName": "VMware Aria",
|
|
5
|
-
"version": "2.
|
|
6
|
-
"description": "VMware Aria Operations: metrics, alerts, capacity, anomaly detection —
|
|
5
|
+
"version": "2.3.0",
|
|
6
|
+
"description": "VMware Aria Operations: metrics, alerts, capacity, anomaly detection — 46 MCP tools.",
|
|
7
7
|
"author": {
|
|
8
8
|
"name": "Wei Zhou",
|
|
9
9
|
"email": "zhouwei008@gmail.com",
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.5
|
|
2
2
|
Name: vmware-aria
|
|
3
|
-
Version: 2.
|
|
3
|
+
Version: 2.3.0
|
|
4
4
|
Summary: VMware Aria Operations (vRealize Operations) monitoring, alerting, and capacity planning
|
|
5
5
|
Project-URL: Homepage, https://github.com/vmware-skills/VMware-Aria
|
|
6
6
|
Project-URL: Repository, https://github.com/vmware-skills/VMware-Aria
|
|
@@ -20,7 +20,7 @@ Requires-Dist: python-dotenv<2.0,>=1.0
|
|
|
20
20
|
Requires-Dist: pyyaml<7.0,>=6.0
|
|
21
21
|
Requires-Dist: rich<15.0,>=13.0
|
|
22
22
|
Requires-Dist: typer<1.0,>=0.12
|
|
23
|
-
Requires-Dist: vmware-policy<2.0,>=1.
|
|
23
|
+
Requires-Dist: vmware-policy<2.0,>=1.22.0
|
|
24
24
|
Description-Content-Type: text/markdown
|
|
25
25
|
|
|
26
26
|
<!-- mcp-name: io.github.vmware-skills/vmware-aria -->
|
|
@@ -39,7 +39,7 @@ AI-assisted monitoring and capacity planning for VMware Aria Operations (vRealiz
|
|
|
39
39
|
|
|
40
40
|
## Upgrading to 2.0
|
|
41
41
|
|
|
42
|
-
2.0 renames 4 of its
|
|
42
|
+
2.0 renames 4 of its MCP tools so every name starts with a verb (e.g. `findings_list` → `list_findings`, `fleet_certificate_list` → `list_fleet_certificates`, `fleet_domain_list` → `list_fleet_domains`). The full old → new table is in
|
|
43
43
|
[RELEASE_NOTES.md](RELEASE_NOTES.md#v200--mcp-tools-renamed-verb-first). Nothing else changes: same tools, parameters,
|
|
44
44
|
safety gates and CLI commands. If an agent prompt, script or `~/.vmware/rules.yaml` names a tool, update it — though deny
|
|
45
45
|
rules written with the old names keep working with vmware-policy ≥ 1.18 (`vmware-audit policy` lists any rule the
|
|
@@ -49,7 +49,7 @@ against both the old and the new name, so one file serves both.
|
|
|
49
49
|
|
|
50
50
|
## Overview
|
|
51
51
|
|
|
52
|
-
`vmware-aria` exposes
|
|
52
|
+
`vmware-aria` exposes 46 MCP tools for interacting with Aria Operations through natural language AI agents (Claude Code, Cursor, Goose, etc.):
|
|
53
53
|
|
|
54
54
|
| Category | Tools | Type |
|
|
55
55
|
|----------|-------|------|
|
|
@@ -62,8 +62,9 @@ against both the old and the new name, so one file serves both.
|
|
|
62
62
|
| **Health** | platform health, collector groups, Aria node memory/swap/heap, adapter collection state | Read-only (4) |
|
|
63
63
|
| **Maintenance** | start / end resource maintenance, maintenance schedules | Read + 2 Write (3) |
|
|
64
64
|
| **Fleet / PromQL** (VCF Ops 9.1) | fleet certificates, password accounts, VCF domains, diagnostic findings, real-time PromQL query | Read-only (5) |
|
|
65
|
+
| **Raw API** | search the API operation index, GET one indexed path — for reads no tool above covers | Read-only (2) |
|
|
65
66
|
|
|
66
|
-
**Total**:
|
|
67
|
+
**Total**: 46 tools — 36 read-only, 10 write
|
|
67
68
|
|
|
68
69
|
## Quick Start
|
|
69
70
|
|
|
@@ -248,6 +249,65 @@ VMs / Hosts / Clusters / Alerts / Capacity
|
|
|
248
249
|
- **SDKs**: <https://developer.broadcom.com/sdks> — VCF Python SDK
|
|
249
250
|
- **CLI Tools**: <https://developer.broadcom.com/tools> — PowerCLI 9.1 includes "VCF Operations (formerly vRealize Operations Manager)" cmdlets
|
|
250
251
|
|
|
252
|
+
<!-- usage: remote-and-exposure -->
|
|
253
|
+
## Remote access (HTTPS) and limiting tools
|
|
254
|
+
|
|
255
|
+
By default `vmware-aria mcp` speaks stdio to one local client and offers every tool. Two options change that
|
|
256
|
+
(vmware-policy ≥ 1.21.0).
|
|
257
|
+
|
|
258
|
+
**Serve over HTTPS** so clients on other machines can connect. Every caller needs a bearer token:
|
|
259
|
+
|
|
260
|
+
```bash
|
|
261
|
+
vmware-audit token create alice # prints the token once; give it to alice
|
|
262
|
+
vmware-audit token list # names only
|
|
263
|
+
vmware-audit token revoke alice # refused from its next request, no restart
|
|
264
|
+
vmware-aria mcp --transport https --host 0.0.0.0 --port 8443 \
|
|
265
|
+
--cert /etc/vmware-mcp/server.pem --key /etc/vmware-mcp/server-key.pem \
|
|
266
|
+
--public-name mcp.example.com
|
|
267
|
+
```
|
|
268
|
+
|
|
269
|
+
Connect a client (Claude Code shown; any MCP client that supports streamable HTTP and custom headers works):
|
|
270
|
+
|
|
271
|
+
```bash
|
|
272
|
+
claude mcp add --transport http vmware-aria https://mcp.example.com:8443/mcp \
|
|
273
|
+
--header "Authorization: Bearer $VMWARE_MCP_TOKEN"
|
|
274
|
+
```
|
|
275
|
+
|
|
276
|
+
```json
|
|
277
|
+
{
|
|
278
|
+
"mcpServers": {
|
|
279
|
+
"vmware-aria": {
|
|
280
|
+
"type": "http",
|
|
281
|
+
"url": "https://mcp.example.com:8443/mcp",
|
|
282
|
+
"headers": { "Authorization": "Bearer ${VMWARE_MCP_TOKEN}" }
|
|
283
|
+
}
|
|
284
|
+
}
|
|
285
|
+
}
|
|
286
|
+
```
|
|
287
|
+
|
|
288
|
+
- The server will not start without a token, refuses Host/Origin values outside `--public-name`, and checks
|
|
289
|
+
before it binds that unauthenticated requests get 401. Use a certificate your clients trust for those names.
|
|
290
|
+
- Behind a TLS-terminating reverse proxy on the same machine use `--transport http --host 127.0.0.1
|
|
291
|
+
--public-name mcp.example.com` and pass the `Authorization` header through.
|
|
292
|
+
- The audit log records each caller as `token:<name>`. Calls run side by side: each holds its own session to a
|
|
293
|
+
target, up to `VMWARE_MCP_POOL_SIZE` (default 2) sessions per target. Each session is a login on the target; a
|
|
294
|
+
call waits at most 300 s for a free one.
|
|
295
|
+
- **Everyone who can reach the endpoint acts with this server's account.** Tokens identify callers; they grant
|
|
296
|
+
nothing on the platform. Run one endpoint per privilege level.
|
|
297
|
+
|
|
298
|
+
**Offer only read tools, plus the writes you choose:**
|
|
299
|
+
|
|
300
|
+
```bash
|
|
301
|
+
vmware-aria mcp --expose read --allow-write acknowledge_alert
|
|
302
|
+
# or: VMWARE_ARIA_MCP_EXPOSE=read VMWARE_ARIA_MCP_ALLOW_WRITE=acknowledge_alert vmware-aria mcp
|
|
303
|
+
```
|
|
304
|
+
|
|
305
|
+
Tools not offered do not appear in the client's tool list. A bad value or an unknown write tool stops the server
|
|
306
|
+
(exit 2). This limits what clients are offered; it is not authorization, so the account itself should be
|
|
307
|
+
least-privilege.
|
|
308
|
+
|
|
309
|
+
Details: `skills/vmware-aria/references/setup-guide.md` ("Serving MCP over HTTPS", "Limiting which tools are offered").
|
|
310
|
+
|
|
251
311
|
## License
|
|
252
312
|
|
|
253
313
|
MIT — see [LICENSE](LICENSE)
|
|
@@ -9,7 +9,7 @@
|
|
|
9
9
|
|
|
10
10
|
## 升级到 2.0
|
|
11
11
|
|
|
12
|
-
2.0 把
|
|
12
|
+
2.0 把 MCP 工具名改成动词在前(共改名 4 处)(例如 `findings_list` → `list_findings`, `fleet_certificate_list` → `list_fleet_certificates`, `fleet_domain_list` → `list_fleet_domains`),完整的新旧名对照表见
|
|
13
13
|
[RELEASE_NOTES.md](RELEASE_NOTES.md#v200--mcp-tools-renamed-verb-first)。其他都不变:工具、参数、安全确认门和 CLI 命令都一样。
|
|
14
14
|
如果 agent 提示词、脚本或 `~/.vmware/rules.yaml` 里写了工具名,请改成新名——不过用旧名写的 deny 规则在
|
|
15
15
|
vmware-policy ≥ 1.18 下仍然生效(`vmware-audit policy` 会列出因改名而多匹配的规则),vmware-pilot ≥ 1.13 也会自动转换已保存工作流里的旧名。
|
|
@@ -17,7 +17,7 @@ vmware-policy ≥ 1.18 下仍然生效(`vmware-audit policy` 会列出因改
|
|
|
17
17
|
|
|
18
18
|
## 概述
|
|
19
19
|
|
|
20
|
-
`vmware-aria` 提供
|
|
20
|
+
`vmware-aria` 提供 46 个 MCP 工具,支持通过自然语言 AI Agent(Claude Code、Cursor、Goose 等)与 Aria Operations 交互:
|
|
21
21
|
|
|
22
22
|
| 类别 | 工具 | 类型 |
|
|
23
23
|
|------|------|------|
|
|
@@ -30,8 +30,9 @@ vmware-policy ≥ 1.18 下仍然生效(`vmware-audit policy` 会列出因改
|
|
|
30
30
|
| **健康** | 平台健康、采集器状态、Aria 节点内存/交换/堆、适配器采集状态 | 只读 (4) |
|
|
31
31
|
| **维护** | 开始 / 结束资源维护模式、维护计划 | 读+2写 (3) |
|
|
32
32
|
| **Fleet / PromQL**(VCF Ops 9.1) | Fleet 证书、密码账户、VCF 域、诊断发现、实时 PromQL 查询 | 只读 (5) |
|
|
33
|
+
| **原始 API** | 搜索 API 操作索引、GET 一个索引内的路径 —— 用于上面工具都覆盖不到的读取 | 只读 (2) |
|
|
33
34
|
|
|
34
|
-
**共
|
|
35
|
+
**共 46 个工具** — 36 只读、10 写操作
|
|
35
36
|
|
|
36
37
|
## 快速开始
|
|
37
38
|
|
|
@@ -202,6 +203,63 @@ Token 为 6 小时滑动有效期(每次调用自动延长,官方规范行
|
|
|
202
203
|
- MCP 的破坏性写操作(告警确认/取消、删除告警定义和报表、开始/结束维护)带 `confirm` 参数(默认 `false`):不传 `confirm=true` 时只返回将改变什么的 `blast_radius`,不做任何修改;遇到阻断项(如资源已在维护中)或有字段读不到时,`confirm=true` 会被拒绝。`confirmed` 为已弃用的别名
|
|
203
204
|
- 默认开启 TLS 校验;私有 CA 请把 `SSL_CERT_FILE` 指向包含你 CA 的证书包(见 setup guide)。`verify_ssl: false` 仅用于隔离的自签名实验环境
|
|
204
205
|
|
|
206
|
+
<!-- usage: remote-and-exposure -->
|
|
207
|
+
## 远程访问(HTTPS)与限制工具
|
|
208
|
+
|
|
209
|
+
默认情况下 `vmware-aria mcp` 通过 stdio 服务一个本地客户端,并提供全部工具。以下两个选项可以改变这一点
|
|
210
|
+
(需 vmware-policy ≥ 1.21.0)。
|
|
211
|
+
|
|
212
|
+
**通过 HTTPS 提供服务**,让其他机器上的客户端连接。每个调用者都需要一个 bearer token:
|
|
213
|
+
|
|
214
|
+
```bash
|
|
215
|
+
vmware-audit token create alice # 只显示一次,交给 alice
|
|
216
|
+
vmware-audit token list # 只列名字
|
|
217
|
+
vmware-audit token revoke alice # 下一个请求起即拒绝,无需重启
|
|
218
|
+
vmware-aria mcp --transport https --host 0.0.0.0 --port 8443 \
|
|
219
|
+
--cert /etc/vmware-mcp/server.pem --key /etc/vmware-mcp/server-key.pem \
|
|
220
|
+
--public-name mcp.example.com
|
|
221
|
+
```
|
|
222
|
+
|
|
223
|
+
连接客户端(以 Claude Code 为例;任何支持 streamable HTTP 和自定义请求头的 MCP 客户端都可以):
|
|
224
|
+
|
|
225
|
+
```bash
|
|
226
|
+
claude mcp add --transport http vmware-aria https://mcp.example.com:8443/mcp \
|
|
227
|
+
--header "Authorization: Bearer $VMWARE_MCP_TOKEN"
|
|
228
|
+
```
|
|
229
|
+
|
|
230
|
+
```json
|
|
231
|
+
{
|
|
232
|
+
"mcpServers": {
|
|
233
|
+
"vmware-aria": {
|
|
234
|
+
"type": "http",
|
|
235
|
+
"url": "https://mcp.example.com:8443/mcp",
|
|
236
|
+
"headers": { "Authorization": "Bearer ${VMWARE_MCP_TOKEN}" }
|
|
237
|
+
}
|
|
238
|
+
}
|
|
239
|
+
}
|
|
240
|
+
```
|
|
241
|
+
|
|
242
|
+
- 没有 token 时服务不会启动;`--public-name` 之外的 Host/Origin 一律拒绝;绑定端口前会自检,确认未认证请求得到 401。
|
|
243
|
+
证书要用客户端信任、且覆盖这些名字的证书。
|
|
244
|
+
- 在同一台机器上由反向代理终结 TLS 时,用 `--transport http --host 127.0.0.1 --public-name mcp.example.com`,
|
|
245
|
+
并让代理透传 `Authorization` 头。
|
|
246
|
+
- 审计日志把每个调用者记为 `token:<名字>`。调用并行执行:每个调用独占一个到 target 的会话,每个 target 最多
|
|
247
|
+
`VMWARE_MCP_POOL_SIZE`(默认 2)个会话。每个会话都是在 target 上的一次登录;调用最多等待 300 秒拿到空闲会话。
|
|
248
|
+
- **能连到这个端点的人,都以该 server 配置的账号操作。** token 只用来识别调用者,不在平台上授予任何权限。
|
|
249
|
+
每个权限级别单独起一个端点。
|
|
250
|
+
|
|
251
|
+
**只提供读工具,加上你选定的写工具:**
|
|
252
|
+
|
|
253
|
+
```bash
|
|
254
|
+
vmware-aria mcp --expose read --allow-write acknowledge_alert
|
|
255
|
+
# 或:VMWARE_ARIA_MCP_EXPOSE=read VMWARE_ARIA_MCP_ALLOW_WRITE=acknowledge_alert vmware-aria mcp
|
|
256
|
+
```
|
|
257
|
+
|
|
258
|
+
未提供的工具不会出现在客户端的工具列表里。取值错误或写工具名不存在时服务直接退出(exit 2)。
|
|
259
|
+
这只限制提供给客户端的工具,不是授权;账号本身仍应遵循最小权限。
|
|
260
|
+
|
|
261
|
+
详见 `skills/vmware-aria/references/setup-guide.md`("Serving MCP over HTTPS"、"Limiting which tools are offered")。
|
|
262
|
+
|
|
205
263
|
## 许可证
|
|
206
264
|
|
|
207
265
|
MIT
|
|
@@ -14,7 +14,7 @@ AI-assisted monitoring and capacity planning for VMware Aria Operations (vRealiz
|
|
|
14
14
|
|
|
15
15
|
## Upgrading to 2.0
|
|
16
16
|
|
|
17
|
-
2.0 renames 4 of its
|
|
17
|
+
2.0 renames 4 of its MCP tools so every name starts with a verb (e.g. `findings_list` → `list_findings`, `fleet_certificate_list` → `list_fleet_certificates`, `fleet_domain_list` → `list_fleet_domains`). The full old → new table is in
|
|
18
18
|
[RELEASE_NOTES.md](RELEASE_NOTES.md#v200--mcp-tools-renamed-verb-first). Nothing else changes: same tools, parameters,
|
|
19
19
|
safety gates and CLI commands. If an agent prompt, script or `~/.vmware/rules.yaml` names a tool, update it — though deny
|
|
20
20
|
rules written with the old names keep working with vmware-policy ≥ 1.18 (`vmware-audit policy` lists any rule the
|
|
@@ -24,7 +24,7 @@ against both the old and the new name, so one file serves both.
|
|
|
24
24
|
|
|
25
25
|
## Overview
|
|
26
26
|
|
|
27
|
-
`vmware-aria` exposes
|
|
27
|
+
`vmware-aria` exposes 46 MCP tools for interacting with Aria Operations through natural language AI agents (Claude Code, Cursor, Goose, etc.):
|
|
28
28
|
|
|
29
29
|
| Category | Tools | Type |
|
|
30
30
|
|----------|-------|------|
|
|
@@ -37,8 +37,9 @@ against both the old and the new name, so one file serves both.
|
|
|
37
37
|
| **Health** | platform health, collector groups, Aria node memory/swap/heap, adapter collection state | Read-only (4) |
|
|
38
38
|
| **Maintenance** | start / end resource maintenance, maintenance schedules | Read + 2 Write (3) |
|
|
39
39
|
| **Fleet / PromQL** (VCF Ops 9.1) | fleet certificates, password accounts, VCF domains, diagnostic findings, real-time PromQL query | Read-only (5) |
|
|
40
|
+
| **Raw API** | search the API operation index, GET one indexed path — for reads no tool above covers | Read-only (2) |
|
|
40
41
|
|
|
41
|
-
**Total**:
|
|
42
|
+
**Total**: 46 tools — 36 read-only, 10 write
|
|
42
43
|
|
|
43
44
|
## Quick Start
|
|
44
45
|
|
|
@@ -223,6 +224,65 @@ VMs / Hosts / Clusters / Alerts / Capacity
|
|
|
223
224
|
- **SDKs**: <https://developer.broadcom.com/sdks> — VCF Python SDK
|
|
224
225
|
- **CLI Tools**: <https://developer.broadcom.com/tools> — PowerCLI 9.1 includes "VCF Operations (formerly vRealize Operations Manager)" cmdlets
|
|
225
226
|
|
|
227
|
+
<!-- usage: remote-and-exposure -->
|
|
228
|
+
## Remote access (HTTPS) and limiting tools
|
|
229
|
+
|
|
230
|
+
By default `vmware-aria mcp` speaks stdio to one local client and offers every tool. Two options change that
|
|
231
|
+
(vmware-policy ≥ 1.21.0).
|
|
232
|
+
|
|
233
|
+
**Serve over HTTPS** so clients on other machines can connect. Every caller needs a bearer token:
|
|
234
|
+
|
|
235
|
+
```bash
|
|
236
|
+
vmware-audit token create alice # prints the token once; give it to alice
|
|
237
|
+
vmware-audit token list # names only
|
|
238
|
+
vmware-audit token revoke alice # refused from its next request, no restart
|
|
239
|
+
vmware-aria mcp --transport https --host 0.0.0.0 --port 8443 \
|
|
240
|
+
--cert /etc/vmware-mcp/server.pem --key /etc/vmware-mcp/server-key.pem \
|
|
241
|
+
--public-name mcp.example.com
|
|
242
|
+
```
|
|
243
|
+
|
|
244
|
+
Connect a client (Claude Code shown; any MCP client that supports streamable HTTP and custom headers works):
|
|
245
|
+
|
|
246
|
+
```bash
|
|
247
|
+
claude mcp add --transport http vmware-aria https://mcp.example.com:8443/mcp \
|
|
248
|
+
--header "Authorization: Bearer $VMWARE_MCP_TOKEN"
|
|
249
|
+
```
|
|
250
|
+
|
|
251
|
+
```json
|
|
252
|
+
{
|
|
253
|
+
"mcpServers": {
|
|
254
|
+
"vmware-aria": {
|
|
255
|
+
"type": "http",
|
|
256
|
+
"url": "https://mcp.example.com:8443/mcp",
|
|
257
|
+
"headers": { "Authorization": "Bearer ${VMWARE_MCP_TOKEN}" }
|
|
258
|
+
}
|
|
259
|
+
}
|
|
260
|
+
}
|
|
261
|
+
```
|
|
262
|
+
|
|
263
|
+
- The server will not start without a token, refuses Host/Origin values outside `--public-name`, and checks
|
|
264
|
+
before it binds that unauthenticated requests get 401. Use a certificate your clients trust for those names.
|
|
265
|
+
- Behind a TLS-terminating reverse proxy on the same machine use `--transport http --host 127.0.0.1
|
|
266
|
+
--public-name mcp.example.com` and pass the `Authorization` header through.
|
|
267
|
+
- The audit log records each caller as `token:<name>`. Calls run side by side: each holds its own session to a
|
|
268
|
+
target, up to `VMWARE_MCP_POOL_SIZE` (default 2) sessions per target. Each session is a login on the target; a
|
|
269
|
+
call waits at most 300 s for a free one.
|
|
270
|
+
- **Everyone who can reach the endpoint acts with this server's account.** Tokens identify callers; they grant
|
|
271
|
+
nothing on the platform. Run one endpoint per privilege level.
|
|
272
|
+
|
|
273
|
+
**Offer only read tools, plus the writes you choose:**
|
|
274
|
+
|
|
275
|
+
```bash
|
|
276
|
+
vmware-aria mcp --expose read --allow-write acknowledge_alert
|
|
277
|
+
# or: VMWARE_ARIA_MCP_EXPOSE=read VMWARE_ARIA_MCP_ALLOW_WRITE=acknowledge_alert vmware-aria mcp
|
|
278
|
+
```
|
|
279
|
+
|
|
280
|
+
Tools not offered do not appear in the client's tool list. A bad value or an unknown write tool stops the server
|
|
281
|
+
(exit 2). This limits what clients are offered; it is not authorization, so the account itself should be
|
|
282
|
+
least-privilege.
|
|
283
|
+
|
|
284
|
+
Details: `skills/vmware-aria/references/setup-guide.md` ("Serving MCP over HTTPS", "Limiting which tools are offered").
|
|
285
|
+
|
|
226
286
|
## License
|
|
227
287
|
|
|
228
288
|
MIT — see [LICENSE](LICENSE)
|
|
@@ -1,3 +1,26 @@
|
|
|
1
|
+
## v2.3.0 — calls run side by side; read-only raw API escape hatch
|
|
2
|
+
|
|
3
|
+
**Calls no longer wait for each other** (HLD §16 D-13(2), via vmware-policy 1.22.0). When one server serves several
|
|
4
|
+
callers (`--transport https` / `http`), each call now holds its own connection to a target for as long as it runs,
|
|
5
|
+
up to `VMWARE_MCP_POOL_SIZE` (default 2) connections per target. Each connection is a login on Aria Operations with
|
|
6
|
+
its own token, so two calls never share or refresh one token. A call that finds every connection busy waits at most
|
|
7
|
+
300 s, then fails naming the target. The CLI and stdio keep one connection per target, as before.
|
|
8
|
+
|
|
9
|
+
**Two new read tools for questions no tool answers** (HLD §17 D-18; 44 → 46 tools, 36 read / 10 write):
|
|
10
|
+
|
|
11
|
+
* `search_api_operations(query, limit=20)` searches the suite-api operation index now shipped in the package
|
|
12
|
+
(`vmware_aria/api_spec/`: vROps 8.6 and VCF Operations 9.1). It marks which operations are GET and which index
|
|
13
|
+
documents each. It contacts no appliance.
|
|
14
|
+
* `get_api_path(path, params, target)` issues one `GET` through the target's existing client (token, retry, error
|
|
15
|
+
messages). The path must match a GET operation in the index; other methods, unindexed paths, `..`, `//`, `?` or `#`
|
|
16
|
+
in the path, URLs, percent-encoding and non-string params are refused before any request. A 9.x appliance is held to
|
|
17
|
+
the 9.1 index; on 8.x, or when the version cannot be read, either index is accepted. Strings are sanitized; answers
|
|
18
|
+
over 30,000 characters of JSON come back `truncated: true` with `original_size` — page with `pageSize`.
|
|
19
|
+
* CLI: `vmware-aria api search <words>` and `vmware-aria api get <path> [--param NAME=VALUE]`, audited under the same
|
|
20
|
+
tool names.
|
|
21
|
+
|
|
22
|
+
The account's Aria roles still decide what can be read. Requires `vmware-policy>=1.22.0`.
|
|
23
|
+
|
|
1
24
|
## v2.2.0 — serve MCP over HTTPS
|
|
2
25
|
|
|
3
26
|
`vmware-aria mcp` can now serve the network as well as stdio (HLD §16, via vmware-policy 1.21.0):
|
|
@@ -8,6 +31,15 @@ vmware-aria mcp --transport https --host 0.0.0.0 --port 8443 \
|
|
|
8
31
|
--cert server.pem --key server-key.pem --public-name mcp.example.com
|
|
9
32
|
```
|
|
10
33
|
|
|
34
|
+
Connect a client and manage callers (Claude Code shown; any MCP client with streamable HTTP and custom headers works):
|
|
35
|
+
|
|
36
|
+
```bash
|
|
37
|
+
claude mcp add --transport http vmware-aria https://mcp.example.com:8443/mcp \
|
|
38
|
+
--header "Authorization: Bearer $VMWARE_MCP_TOKEN"
|
|
39
|
+
vmware-audit token list # names only
|
|
40
|
+
vmware-audit token revoke alice # refused from its next request, no restart
|
|
41
|
+
```
|
|
42
|
+
|
|
11
43
|
* Every request needs `Authorization: Bearer <token>`; the server will not start without a token, refuses Host or
|
|
12
44
|
Origin values outside `--public-name`, and checks itself (unauthenticated requests must get 401) before it
|
|
13
45
|
binds. `--transport http` binds loopback only, for a TLS-terminating reverse proxy.
|
|
@@ -26,12 +26,14 @@ Do **not** open a public GitHub issue for security vulnerabilities.
|
|
|
26
26
|
|
|
27
27
|
### Read-Heavy Design
|
|
28
28
|
|
|
29
|
-
|
|
29
|
+
36 of 46 MCP tools are read-only. The 10 write operations are limited to:
|
|
30
30
|
- Alert acknowledge, cancel and notes
|
|
31
31
|
- Alert definition create, enable/disable and delete
|
|
32
32
|
- Report generation and deletion
|
|
33
33
|
- Resource maintenance mode start and end
|
|
34
34
|
|
|
35
|
+
`get_api_path` (raw API escape hatch) issues `GET` only, and only for a path that matches a GET operation in the operation index shipped with the package; other methods, unindexed paths, `..`, `//`, query strings in the path and absolute URLs are refused before any request. Its answer is sanitized and capped at 30,000 characters.
|
|
36
|
+
|
|
35
37
|
No VM lifecycle, no networking, no storage operations.
|
|
36
38
|
|
|
37
39
|
### MCP Confirmation Gate
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"id": "vmware-aria",
|
|
3
3
|
"name": "VMware Aria",
|
|
4
|
-
"description": "VMware Aria Operations: metrics, alerts, capacity, anomaly detection —
|
|
4
|
+
"description": "VMware Aria Operations: metrics, alerts, capacity, anomaly detection — 46 MCP tools.",
|
|
5
5
|
"skills": [
|
|
6
6
|
"./skills"
|
|
7
7
|
],
|
|
@@ -11,7 +11,7 @@
|
|
|
11
11
|
"command": "uvx",
|
|
12
12
|
"args": [
|
|
13
13
|
"--from",
|
|
14
|
-
"vmware-aria==2.
|
|
14
|
+
"vmware-aria==2.3.0",
|
|
15
15
|
"vmware-aria-mcp"
|
|
16
16
|
]
|
|
17
17
|
}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@zw008/vmware-aria",
|
|
3
|
-
"version": "2.
|
|
4
|
-
"description": "VMware Aria Operations: metrics, alerts, capacity, anomaly detection —
|
|
3
|
+
"version": "2.3.0",
|
|
4
|
+
"description": "VMware Aria Operations: metrics, alerts, capacity, anomaly detection — 46 MCP tools.",
|
|
5
5
|
"private": true,
|
|
6
6
|
"license": "MIT",
|
|
7
7
|
"homepage": "https://github.com/vmware-skills/VMware-Aria",
|
|
@@ -4,7 +4,7 @@ build-backend = "hatchling.build"
|
|
|
4
4
|
|
|
5
5
|
[project]
|
|
6
6
|
name = "vmware-aria"
|
|
7
|
-
version = "2.
|
|
7
|
+
version = "2.3.0"
|
|
8
8
|
description = "VMware Aria Operations (vRealize Operations) monitoring, alerting, and capacity planning"
|
|
9
9
|
readme = "README.md"
|
|
10
10
|
license = "MIT"
|
|
@@ -24,7 +24,7 @@ dependencies = [
|
|
|
24
24
|
"pyyaml>=6.0,<7.0",
|
|
25
25
|
"python-dotenv>=1.0,<2.0",
|
|
26
26
|
"mcp[cli]>=1.28,<2.0",
|
|
27
|
-
"vmware-policy>=1.
|
|
27
|
+
"vmware-policy>=1.22.0,<2.0",
|
|
28
28
|
]
|
|
29
29
|
|
|
30
30
|
[project.scripts]
|
|
@@ -2,17 +2,17 @@
|
|
|
2
2
|
"$schema": "https://static.modelcontextprotocol.io/schemas/2025-12-11/server.schema.json",
|
|
3
3
|
"name": "io.github.vmware-skills/vmware-aria",
|
|
4
4
|
"title": "VMware Aria Operations",
|
|
5
|
-
"description": "VMware Aria Operations: metrics, alerts, capacity, anomaly detection —
|
|
5
|
+
"description": "VMware Aria Operations: metrics, alerts, capacity, anomaly detection — 46 MCP tools.",
|
|
6
6
|
"repository": {
|
|
7
7
|
"url": "https://github.com/vmware-skills/VMware-Aria",
|
|
8
8
|
"source": "github"
|
|
9
9
|
},
|
|
10
|
-
"version": "2.
|
|
10
|
+
"version": "2.3.0",
|
|
11
11
|
"packages": [
|
|
12
12
|
{
|
|
13
13
|
"registryType": "pypi",
|
|
14
14
|
"identifier": "vmware-aria",
|
|
15
|
-
"version": "2.
|
|
15
|
+
"version": "2.3.0",
|
|
16
16
|
"runtimeHint": "uvx",
|
|
17
17
|
"packageArguments": [
|
|
18
18
|
{
|
|
@@ -15,7 +15,7 @@ metadata: {"openclaw":{"requires":{"anyBins":["vmware-aria","uvx"]},"optional":{
|
|
|
15
15
|
compatibility: >
|
|
16
16
|
vmware-policy auto-installed as Python dependency (provides @vmware_tool decorator and audit logging). All write operations audited to ~/.vmware/audit.db.
|
|
17
17
|
Credentials: Each Aria Operations target requires a per-target password env var in ~/.vmware-aria/.env following the pattern VMWARE_ARIA_<TARGET_NAME_UPPER>_PASSWORD. Passwords are never logged or echoed.
|
|
18
|
-
Read-heavy:
|
|
18
|
+
Read-heavy: 36 of 46 tools are read-only. Write operations limited to alert acknowledge/cancel, alert notes, alert definition management, report management, and resource maintenance start/end.
|
|
19
19
|
No webhooks, no outbound network calls, no guest operations. Local only: stdio MCP + Aria Operations REST API (HTTPS 443).
|
|
20
20
|
Transitive dependencies: Only vmware-policy (audit/policy). No post-install scripts or background services.
|
|
21
21
|
---
|
|
@@ -24,7 +24,7 @@ compatibility: >
|
|
|
24
24
|
|
|
25
25
|
> **Disclaimer**: This is a community-maintained open-source project and is **not affiliated with, endorsed by, or sponsored by VMware, Inc. or Broadcom Inc.** "VMware" and "Aria" are trademarks of Broadcom. Source code is publicly auditable at [github.com/vmware-skills/VMware-Aria](https://github.com/vmware-skills/VMware-Aria) under the MIT license.
|
|
26
26
|
|
|
27
|
-
VMware Aria Operations (vRealize Operations 8.x, VCF Operations 9.x) AI-assisted monitoring —
|
|
27
|
+
VMware Aria Operations (vRealize Operations 8.x, VCF Operations 9.x) AI-assisted monitoring — 46 MCP tools, by category below.
|
|
28
28
|
|
|
29
29
|
> **Know the version first**: `vmware-aria health status` (MCP `get_aria_health`) names the product line. Fleet, findings and PromQL exist only on VCF Operations 9.0+ (PromQL uses the 9.1 VODAP service); on 8.x they return a "requires 9.0 or newer" error, not data.
|
|
30
30
|
> **Companion skills**: vmware-monitor (real-time vSphere), vmware-aiops (VM lifecycle), vmware-nsx (networking), vmware-avi (AVI/ALB/AKO), vmware-harden (compliance), vmware-pilot (approval workflows), vmware-policy (audit/policy).
|
|
@@ -42,13 +42,14 @@ VMware Aria Operations (vRealize Operations 8.x, VCF Operations 9.x) AI-assisted
|
|
|
42
42
|
| **Health** | Aria platform health, collector group status, Aria node memory/swap/heap, adapter collection state | 4 |
|
|
43
43
|
| **Maintenance** | start / end resource maintenance, list maintenance schedules | 3 |
|
|
44
44
|
| **Fleet / PromQL** (VCF Ops 9.1) | fleet certificates, password accounts, VCF domains, diagnostic findings, real-time PromQL query | 5 |
|
|
45
|
+
| **Raw API** | search the API operation index; GET one indexed path (read-only escape hatch) | 2 |
|
|
45
46
|
|
|
46
|
-
**Total**:
|
|
47
|
+
**Total**: 46 tools (36 read-only + 10 write)
|
|
47
48
|
|
|
48
49
|
## Quick Install
|
|
49
50
|
|
|
50
51
|
```bash
|
|
51
|
-
uv tool install vmware-aria==2.
|
|
52
|
+
uv tool install vmware-aria==2.3.0
|
|
52
53
|
vmware-aria init # guided setup: writes config + .env (chmod 600, password grep-safe), then verifies
|
|
53
54
|
vmware-aria doctor
|
|
54
55
|
```
|
|
@@ -61,6 +62,7 @@ vmware-aria doctor
|
|
|
61
62
|
- **Capacity**: cluster headroom, time until full, VM rightsizing
|
|
62
63
|
- **Reports**: generate, poll, download and delete reports
|
|
63
64
|
- **Maintenance**: put a resource in maintenance before planned work (timed or until ended), end it, list maintenance schedules
|
|
65
|
+
- **Anything else the API reads**: when no tool answers, `search_api_operations` then one `get_api_path` (GET of an indexed path only)
|
|
64
66
|
- **Platform**: is Aria Operations itself healthy (DEGRADED vs DOWN, which service), which version and product line, collector groups, whether the Aria node is short of memory, which adapter stopped collecting
|
|
65
67
|
|
|
66
68
|
For VM changes, NSX, vSphere alarms, storage or load balancing, route with the table below.
|
|
@@ -83,7 +85,7 @@ For VM changes, NSX, vSphere alarms, storage or load balancing, route with the t
|
|
|
83
85
|
|
|
84
86
|
> **Troubleshooting paths**: step-by-step playbooks for a DEGRADED platform, alert triage, VM contention, empty metrics, pre-resize checks and planned maintenance — [`references/ops-playbooks.md`](references/ops-playbooks.md).
|
|
85
87
|
>
|
|
86
|
-
> **Diagnostic investigations**:
|
|
88
|
+
> **Diagnostic investigations**: before any "why is X slow / failing / down" report, follow [`references/investigation-protocol.md`](references/investigation-protocol.md) — four root-cause criteria and up to three deepening rounds; never stop at a partial conclusion.
|
|
87
89
|
|
|
88
90
|
### Daily VM Health Check (Proactive Ops)
|
|
89
91
|
|
|
@@ -110,7 +112,7 @@ For VM changes, NSX, vSphere alarms, storage or load balancing, route with the t
|
|
|
110
112
|
|
|
111
113
|
### Post-Incident: Create Detection Alert (RCA Follow-up)
|
|
112
114
|
|
|
113
|
-
After
|
|
115
|
+
After an incident, create an early-warning alert. Alert definition management is **MCP-only**:
|
|
114
116
|
|
|
115
117
|
1. Find matching symptom definitions → MCP `list_symptom_definitions` (filter by `name_filter` / `resource_kind`)
|
|
116
118
|
2. Create alert definition referencing symptoms → MCP `create_alert_definition` with name, resource_kind, symptom_definition_ids, criticality (any one symptom firing triggers the alert)
|
|
@@ -137,7 +139,7 @@ Running vmware-aria with a local or small model? See [`references/agent-guardrai
|
|
|
137
139
|
|
|
138
140
|
Every command accepts `--target <name>` (every MCP tool `target`) to pick the Aria Operations instance.
|
|
139
141
|
|
|
140
|
-
## MCP Tools (
|
|
142
|
+
## MCP Tools (46 — 36 read, 10 write)
|
|
141
143
|
|
|
142
144
|
All MCP tools accept an optional `target`. The six destructive writes take `confirm`: without `confirm=true` they return a `blast_radius` and change nothing — show it to the user first.
|
|
143
145
|
|
|
@@ -187,8 +189,10 @@ All MCP tools accept an optional `target`. The six destructive writes take `conf
|
|
|
187
189
|
| | `list_fleet_domains` | Read | SDDC/workload domains behind one registered VCF integration |
|
|
188
190
|
| | `list_findings` | Read | Operations diagnostic findings (not compliance — see vmware-harden) |
|
|
189
191
|
| | `promql_query` | Read | Real-time PromQL instant query via the VODAP service (base path INFERRED, unverified on real hardware) |
|
|
192
|
+
| Raw API | `search_api_operations` | Read | Search the shipped 8.6 / 9.1 operation index; marks GET operations |
|
|
193
|
+
| | `get_api_path` | Read | GET one indexed path (`{id}` filled in, query in `params`); sanitized, capped at 30,000 chars (`truncated`) |
|
|
190
194
|
|
|
191
|
-
**Read/write split**:
|
|
195
|
+
**Read/write split**: 36 read-only, 10 write. All write operations are audit-logged to `~/.vmware/audit.db` (via vmware-policy).
|
|
192
196
|
|
|
193
197
|
### List results are envelopes — read `truncated` before you summarise
|
|
194
198
|
|
|
@@ -218,9 +222,7 @@ vmware-aria alert notes <alert-id>
|
|
|
218
222
|
vmware-aria alert note-add <alert-id> "Taking this: rebooting esx-03"
|
|
219
223
|
vmware-aria alert recommendations <alert-id>
|
|
220
224
|
|
|
221
|
-
# Alert
|
|
222
|
-
# lookup are MCP-only tools (list_symptom_definitions, create_alert_definition,
|
|
223
|
-
# set_alert_definition_state, delete_alert_definition) — no CLI subcommands.
|
|
225
|
+
# Alert definitions and symptom lookup are MCP-only (no CLI subcommands).
|
|
224
226
|
|
|
225
227
|
# Capacity
|
|
226
228
|
vmware-aria capacity overview <cluster-id>
|
|
@@ -250,6 +252,10 @@ vmware-aria maintenance start <resource-id> --duration 60 # neither --duration
|
|
|
250
252
|
vmware-aria maintenance end <resource-id>
|
|
251
253
|
vmware-aria maintenance schedules [--resource-id <id>]
|
|
252
254
|
|
|
255
|
+
# Raw API (read-only: GET of an indexed path only)
|
|
256
|
+
vmware-aria api search "resource properties" [--limit 20]
|
|
257
|
+
vmware-aria api get /api/resources/<id>/properties [--param pageSize=20]
|
|
258
|
+
|
|
253
259
|
# Diagnostics
|
|
254
260
|
vmware-aria doctor [--skip-auth]
|
|
255
261
|
```
|
|
@@ -277,14 +283,14 @@ VirtualMachine keys and units as defined on Aria Operations 8.18.7; other resour
|
|
|
277
283
|
|
|
278
284
|
### "Token not found" error after setup
|
|
279
285
|
|
|
280
|
-
|
|
286
|
+
Token acquisition failed. Verify:
|
|
281
287
|
1. Aria Ops is reachable: `vmware-aria doctor`
|
|
282
288
|
2. The `auth_source` in config matches your environment (LOCAL, LDAP, AD)
|
|
283
289
|
3. The password env var follows the naming convention: `VMWARE_ARIA_<TARGET>_PASSWORD`
|
|
284
290
|
|
|
285
291
|
### Resources appear missing from list_resources
|
|
286
292
|
|
|
287
|
-
|
|
293
|
+
A collector may be offline: `list_collector_groups` shows DOWN ones. Restart it in the Aria Ops UI (Administration > Collector Groups).
|
|
288
294
|
|
|
289
295
|
### Metrics return empty data
|
|
290
296
|
|
|
@@ -296,11 +302,11 @@ The node flag is OFFLINE whenever any one service is not running. Read `assessme
|
|
|
296
302
|
|
|
297
303
|
### "Password not found" error
|
|
298
304
|
|
|
299
|
-
|
|
305
|
+
Set `VMWARE_ARIA_<TARGET_NAME_UPPER>_PASSWORD` (hyphens become underscores; target `prod` → `VMWARE_ARIA_PROD_PASSWORD`) in `~/.vmware-aria/.env`.
|
|
300
306
|
|
|
301
307
|
### `invalid peer certificate: UnknownIssuer` when running uvx (corporate TLS proxy)
|
|
302
308
|
|
|
303
|
-
`uvx` re-resolves
|
|
309
|
+
`uvx` re-resolves from PyPI on every launch, and a TLS-intercepting proxy breaks that. Run `vmware-aria mcp` after `uv tool install vmware-aria==2.3.0` (no network on launch), or set `UV_NATIVE_TLS=true` to use the system cert store.
|
|
304
310
|
|
|
305
311
|
## Audit & Safety
|
|
306
312
|
|
|
@@ -2,11 +2,11 @@
|
|
|
2
2
|
|
|
3
3
|
## Automation Level Reference
|
|
4
4
|
|
|
5
|
-
Each operation is classified by autonomy level per the Enterprise Harness Engineering framework. **vmware-aria is heavily L1/L2 (
|
|
5
|
+
Each operation is classified by autonomy level per the Enterprise Harness Engineering framework. **vmware-aria is heavily L1/L2 (36 read / 10 write)** — primarily a monitoring and analysis skill.
|
|
6
6
|
|
|
7
7
|
| Level | Meaning | Agent autonomy | Examples in this skill |
|
|
8
8
|
|:-:|---|---|---|
|
|
9
|
-
| **L1** | Read-only, raw data | Always auto-run | `list_resources`, `get_resource`, `get_resource_metrics`, `list_metric_keys`, `get_resource_properties`, `get_resource_relationships`, `list_alerts`, `get_alert`, `list_alert_definitions`, `list_alert_notes`, `list_maintenance_schedules`, `get_aria_node_resources`, `list_adapters`, capacity / badge queries |
|
|
9
|
+
| **L1** | Read-only, raw data | Always auto-run | `list_resources`, `get_resource`, `get_resource_metrics`, `list_metric_keys`, `get_resource_properties`, `get_resource_relationships`, `list_alerts`, `get_alert`, `list_alert_definitions`, `list_alert_notes`, `list_maintenance_schedules`, `get_aria_node_resources`, `list_adapters`, `search_api_operations`, `get_api_path`, capacity / badge queries |
|
|
10
10
|
| **L2** | Read + analysis / recommendation | Always auto-run | `investigate_alert` (alert → confirmed affected resource), `get_alert_recommendations` (alert → definition state → prioritized recommendations), anomaly counts, top-N consumer ranking, capacity trend forecasting, rightsizing recommendations |
|
|
11
11
|
| **L3** | Single write — user must approve | Only after explicit confirmation | `acknowledge_alert` (via takeownership action), `cancel_alert`, `create_alert_definition`, `set_alert_definition_state`, `delete_alert_definition`, `generate_report`, `delete_report`, `start_resource_maintenance`, `end_resource_maintenance`, `add_alert_note` *(the only writes; all auditable. On MCP, `acknowledge_alert`, `cancel_alert`, `delete_alert_definition`, `delete_report`, `start_resource_maintenance` and `end_resource_maintenance` take `confirm` (default false): without `confirm=true` they return a `blast_radius` — what the call would change — and change nothing; `confirm=true` is refused when a blocker is found or a field the radius depends on could not be read. `confirmed` is a deprecated alias. `add_alert_note` is low risk and has no gate — a note changes neither the alert nor monitoring; the CLI still asks once)* |
|
|
12
12
|
| **L4** | Multi-step plan / apply workflow | *N/A currently* | — *(no multi-step orchestration; Aria is observe/analyze, not configure)* |
|
|
@@ -67,6 +67,13 @@ Each operation is classified by autonomy level per the Enterprise Harness Engine
|
|
|
67
67
|
- **Aria node resources**: `get_aria_node_resources` reads Aria's own self-monitoring objects (`vC-Ops-Node`, `vC-Ops-Watchdog`): per node memory (`mem|total`, `mem|used`, `mem|free`, `mem|actualFree`, `mem|actualUsed`), swap, heap overall and per component, and watchdog restarts per service. Each value has `latest`, `unit` (from Aria's statkey definitions, never assumed) and `window` min / avg / max / points over `window_hours` (1–720, default 24) of 5-minute averages. `memory_pressure.level` is an indicator: HIGH when actual free memory is below 10% of total, ELEVATED below 20%, NORMAL at 20% or more, UNKNOWN when the readings do not settle it. A key with no value is in the node's `missing` list (`not_reported` / `no_data` / `undetermined`), never zeroed; `watchdog_restarts: null` is unknown, not zero. On Aria Operations 8.18.7 after a memory upgrade the node read `mem|total` 15.61 GB (was 7.75), actual free 41%, pressure NORMAL, and 9 watchdog services with 0 restarts
|
|
68
68
|
- **Adapter collection state**: `list_adapters` — each adapter instance's kind, collector, monitoring interval, resources and metrics collected, last collected and last heartbeat with ages in seconds, its own message, and `stale`: true when the last collection is older than max(3 × monitoring interval, 15 minutes), false within that, null when the fields cannot support a verdict (`stale_basis` shows the arithmetic). Ages use the appliance clock from node status when it is available (`reference_clock`). An empty or unrecognised answer is an error, never "no adapters". A recent collection does not prove every object behind the adapter receives data. On Aria Operations 8.18.7 all 6 adapters were not stale
|
|
69
69
|
|
|
70
|
+
### Raw API (read-only escape hatch)
|
|
71
|
+
|
|
72
|
+
For a read no tool above covers (HLD §17 D-18). Prefer the dedicated tools: their results are shaped, paginated and explained.
|
|
73
|
+
|
|
74
|
+
- **`search_api_operations(query, limit=20)`**: searches the suite-api operation index shipped in the package (`vmware_aria/api_spec/`: vROps 8.6, 315 operations; VCF Operations 9.1, 504 operations plus the verified fleet subset). Every word must appear in method, path or summary; path matches rank first, then GET. Each row: `method`, `path` template, `summary`, `indexes` (`8.6` / `9.1`) and `callable_with_get_api_path` (true only for GET). `limit` 1–100. Contacts no appliance. Typical response: ~1,500 tokens at the default limit
|
|
75
|
+
- **`get_api_path(path, params=None, target=None)`**: one `GET` through the target's client (its token, retry and error translation). `path` must match a GET operation of the index with every `{name}` replaced by one segment (letters, digits, space, `- . _ ~ : @ + , =`). Refused before any request: other methods, unindexed paths, `..` / `.` / `//`, `?` or `#` in `path` (use `params`), URLs, percent-encoding, non-string `params`. A 9.x appliance (read from `/versions/current`) is held to the 9.1 index; on 8.x, or when the version cannot be read, a path in either index is accepted — the 8.6 index is the only 8.x specification held and 8.18 answers paths it lacks; a path the appliance does not have returns a 404 error. Every string in the answer is sanitized (control/format characters stripped, cut to 500 characters). Answers over 30,000 characters of JSON (about 8k tokens — one resource or one page of a list fits; an unpaged list, 1,000 rows by default, does not) return `truncated: true`, `original_size` and `body_text` (cut, not valid JSON): page with `params` such as `pageSize`. Audited like every call. The account's Aria roles still decide what it can read. Typical response: 500–8,000 tokens
|
|
76
|
+
|
|
70
77
|
---
|
|
71
78
|
|
|
72
79
|
## What vmware-aria Cannot Do
|
|
@@ -132,6 +139,7 @@ All requests carry `Authorization: vRealizeOpsToken <token>`.
|
|
|
132
139
|
| `GET /suite-api/api/deployment/node/services/info` | get_aria_health, doctor (per-service health) |
|
|
133
140
|
| `GET /suite-api/api/versions/current` | get_aria_health, doctor "Aria version" row, and the version shown when a 9.0+ tool (list_fleet_*, list_findings, promql_query) is called on an older appliance |
|
|
134
141
|
| `GET /suite-api/api/collectorgroups` + `GET /suite-api/api/collectors` | list_collector_groups (groups carry member IDs; details enriched from /collectors) |
|
|
142
|
+
| Any `GET` in the shipped index (`vmware_aria/api_spec/`) | get_api_path (GET only; path must match an indexed GET operation) |
|
|
135
143
|
|
|
136
144
|
---
|
|
137
145
|
|
|
@@ -194,4 +202,4 @@ Reading rules for an agent:
|
|
|
194
202
|
| Anomaly detection | 7.5+ |
|
|
195
203
|
| Suite API v2 paths used | 8.0+ |
|
|
196
204
|
|
|
197
|
-
Endpoints are checked against the vROps 8.6 and VCF Operations 9.1 API indexes in `
|
|
205
|
+
Endpoints are checked against the vROps 8.6 and VCF Operations 9.1 API indexes in `vmware_aria/api_spec/`. Live-verified on Aria Operations 8.18.7 (2026-09): resources, metrics, alerts and symptoms, rightsizing, health, doctor, node resources, adapters, alert recommendations, and reads of maintenance schedules and alert notes (none existed).
|