Provider Ecosystem & Integration
Relevant source files
The following files were used as context for generating this wiki page:
ManageIQ is designed as a modular platform that integrates with a wide variety of external management systems (EMS) including cloud, infrastructure, container, and storage platforms. This integration is achieved through a robust provider ecosystem where specific technologies (e.g., Amazon EC2, VMware vCenter, OpenStack) are implemented as plugins that extend the core management capabilities.
The ecosystem enables unified discovery, monitoring, automation, and provisioning across hybrid IT environments. By standardizing the interface through which ManageIQ interacts with external APIs, the platform provides a consistent user experience regardless of the underlying infrastructure provider.
Sources: README.md:1-20, app/models/ext_management_system.rb:1-15
Core Architecture
The provider architecture relies on a strict class hierarchy and a plugin-based discovery mechanism. The base of every integration is the ExtManagementSystem model, which defines the standard behavior for communication, authentication, and resource management.
Class Hierarchy and Manager Types
ManageIQ categorizes integrations into specific manager types based on the resources they handle. These types are used by generators to scaffold new provider plugins.
The diagram above represents the high-level inheritance structure where specific technology implementations (e.g., ManageIQ::Providers::Amazon::CloudManager) inherit from these base manager classes.
Sources: app/models/ext_management_system.rb:1-50, lib/generators/manageiq/provider/provider_generator.rb:7-20
Manager Categories
New providers are typically scaffolded with one or more of the following manager types:
| Manager Type | Internal Class Name | Purpose |
|---|---|---|
| Automation | AutomationManager | Integration with tools like Ansible Tower or AWX. |
| Cloud | CloudManager | Public/Private cloud instances and orchestration. |
| Configuration | ConfigurationManager | Lifecycle and configuration management (e.g., Foreman). |
| Container | ContainerManager | Orchestration platforms like Kubernetes and OpenShift. |
| Infra | InfraManager | Traditional virtualization (VMware, Red Hat Virtualization). |
| Network | NetworkManager | Software-defined networking and cloud VPCs. |
| Storage | StorageManager | Block and object storage systems. |
Sources: lib/generators/manageiq/provider/provider_generator.rb:7-20
Connection and Authentication
ManageIQ manages connections to external systems through a flexible system of endpoints and authentications. An EMS can have multiple endpoints, each assigned a specific role (e.g., default, amqp, hawkular).
Connection Configuration Flow
The following sequence illustrates how ManageIQ establishes and verifies a connection to a provider.
Security and Validation
- Hostname Uniqueness: ManageIQ validates that hostnames are unique per provider type within a tenant to prevent duplicate integrations.
- SSL Verification: Providers support configurable SSL verification levels (
VERIFY_PEERorVERIFY_NONE). - Maintenance Mode: The
pause!method moves a provider to a maintenance zone and disables its workers to prevent queue flooding during outages or updates.
Sources: app/models/ext_management_system.rb:190-210, app/models/ext_management_system.rb:430-455
Provisioning Workflows
Provisioning integration is handled via the ProvisionWorkflow classes. These classes manage the complex logic of filtering valid targets (networks, storage, flavors) based on the source image and the selected provider.
Target Filtering Logic
When a user initiates a provision, the workflow dynamically filters options:
- Availability Zones: Filtered by the source VM's EMS.
- Cloud Networks: Filtered based on the selected Availability Zone or Tenant.
- Floating IPs: Only those marked as "available" in the network manager are presented.
Inventory Refresh and Persistence
The "Refresh" process is critical for maintaining an accurate view of the external environment. It utilizes a Persister and Builder pattern to map external API data to the internal ManageIQ database schema.
Inventory Collection Features
- Targeted Refresh: Allows refreshing only specific components (e.g., a single VM) rather than the entire provider.
- Disconnected Inventory: ManageIQ can retain records for resources that have been deleted or archived in the provider for historical analysis.
- Reconnect Logic: The
INVENTORY_RECONNECT_BLOCKhandles logic for matching existing internal records with refreshed data based on persistent identifiers likeguidorems_ref.
Sources: app/models/manageiq/providers/inventory/persister/builder/shared.rb:5-40, app/models/ext_management_system.rb:900-910
Summary
The Provider Ecosystem in ManageIQ provides a scalable framework for hybrid multi-cloud management. By abstracting provider-specific complexities into standard manager types (CloudManager, InfraManager, etc.) and utilizing a plugin-based architecture for discovery and workflows, ManageIQ ensures that internal automation and reporting features remain technology-agnostic while still providing deep technical integration with every supported platform.
Sources: app/models/ext_management_system.rb:1-30, lib/vmdb/plugins.rb:110-120