Pluggable Providers - Greg Blomquist - ManageIQ Design Summit 2016

Preview:

Citation preview

Greg Blomquist

June, 2016

Pluggable ProvidersOverview and Plan

Special thanks

John Hardy@jonnyfiveiq

Marianne Feifer

@mfeifer

Greg Blomquist@blomquisg

Goal

ManageIQ Providers should be owned, maintained and

released by the provider author

NamespaceAsk, don’t assumeGemifyGenerator

Namespace - DoneAsk, don’t assume - In ProgressGemify - In ProgressGenerator - Not Started

Namespacing

Past

!Pasta

vmdb/app/models(anand release)

Present

ManageIQ::Providers::Openstack::CloudManager

ManageIQ::Providers::Openstack::CloudManager

ManageIQ::Providers::Openstack::CloudManager

Namespacing

Ask, don’t assume

if @ems.kind_of?(ManageIQ::Providers::Openstack::CloudManager) || @ems.kind_of?(ManageIQ::Providers::Openstack::InfraManager) # Special behavior for Openstack @edit[:protocols] = retrieve_openstack_security_protocolselse @edit[:protocols] = [[‘Basic (SSL)’, ‘ssl’], [‘Kerberos’, ‘kerberos’]]end

@edit[:protocols] = @ems.class.security_protocols

Ask, don’t assume

Gemify

Why Gemify?

ManageIQ Providers should be owned, maintained and

released by the provider author

Gemify

Generator

Life without a generator

module MiqServer::WorkerManagement::Monitor::ClassNames extend ActiveSupport::Concern

MONITOR_CLASS_NAMES = %w( ManageIQ::Providers::Azure::CloudManager::MetricsCollectorWorker ManageIQ::Providers::Amazon::CloudManager::MetricsCollectorWorker ManageIQ::Providers::Redhat::InfraManager::MetricsCollectorWorker ManageIQ::Providers::Kubernetes::ContainerManager::MetricsCollectorWorker ManageIQ::Providers::Openshift::ContainerManager::MetricsCollectorWorker ManageIQ::Providers::Atomic::ContainerManager::MetricsCollectorWorker ManageIQ::Providers::OpenshiftEnterprise::ContainerManager::MetricsCollectorWorker ManageIQ::Providers::AtomicEnterprise::ContainerManager::MetricsCollectorWorker ManageIQ::Providers::Vmware::InfraManager::MetricsCollectorWorker … ).freeze

MONITOR_CLASS_NAMES_IN_KILL_ORDER = %w( ManageIQ::Providers::Azure::CloudManager::MetricsCollectorWorker ManageIQ::Providers::Amazon::CloudManager::MetricsCollectorWorker ManageIQ::Providers::Redhat::InfraManager::MetricsCollectorWorker ManageIQ::Providers::Kubernetes::ContainerManager::MetricsCollectorWorker ManageIQ::Providers::Openshift::ContainerManager::MetricsCollectorWorker ManageIQ::Providers::Atomic::ContainerManager::MetricsCollectorWorker ManageIQ::Providers::OpenshiftEnterprise::ContainerManager::MetricsCollectorWorker ManageIQ::Providers::AtomicEnterprise::ContainerManager::MetricsCollectorWorker ManageIQ::Providers::Vmware::InfraManager::MetricsCollectorWorker … ).freeze

end

config/settings.yml?

Workers and runners?

require_nested everything?

Click here to start your provider

rails generate provider ProviderName ManagerType ...

Generate boilerplate code for the specified ManagerTypes.

rails generate provider MyProvider CloudManager NetworkManager

Generator

Changing the conversation

Provider Types

ManagerTypes

Provider

Manager Manager

OpenStackProvider

Cloud ComputeManager

Cloud NetworkManager

Cloud InfraManager

Virtual Infrastructure

Cloud Compute

Cloud Networking

Configuration Containers

VMware vSphere

Microsoft Azure Microsoft Azure Puppet Kubernetes

Red Hat Virtualization

Amazon EC2 Amazon EC2 Ansible Red Hat Atomic

MicrosoftSCVMM

Google Compute

Google Compute

Red Hat Satellite

Red Hat OpenShift

OpenStack Director

OpenStack OpenStack

Manager Types

Questions?

Recommended