├── locale └── .keep ├── bundler.d └── .keep ├── .github ├── CODEOWNERS └── workflows │ ├── ci.yaml │ └── instance_types.yaml ├── .whitesource ├── systemd ├── manageiq-providers-amazon_agent_coordinator.target ├── manageiq-providers-amazon_cloud_manager_refresh.target ├── manageiq-providers-amazon_cloud_manager_event_catcher.target ├── manageiq-providers-amazon_container_manager_refresh.target ├── manageiq-providers-amazon_storage_manager_s3_refresh.target ├── manageiq-providers-amazon_cloud_manager_metrics_collector.target ├── manageiq-providers-amazon_container_manager_event_catcher.target ├── manageiq-providers-amazon_agent_coordinator@.service ├── manageiq-providers-amazon_cloud_manager_refresh@.service ├── manageiq-providers-amazon_container_manager_refresh@.service ├── manageiq-providers-amazon_cloud_manager_event_catcher@.service ├── manageiq-providers-amazon_storage_manager_s3_refresh@.service ├── manageiq-providers-amazon_container_manager_event_catcher@.service └── manageiq-providers-amazon_cloud_manager_metrics_collector@.service ├── .rubocop.yml ├── lib ├── manageiq │ └── providers │ │ ├── amazon.rb │ │ └── amazon │ │ ├── version.rb │ │ └── engine.rb ├── tasks │ ├── amazon.rake │ └── README.md └── tasks_private │ ├── spec.rake │ ├── database_types.rake │ ├── release.rake │ └── regions.rake ├── app └── models │ └── manageiq │ └── providers │ └── amazon │ ├── cloud_manager │ ├── scanning.rb │ ├── service_instance.rb │ ├── service_offering.rb │ ├── availability_zone.rb │ ├── cloud_database_flavor.rb │ ├── service_parameters_set.rb │ ├── event_catcher.rb │ ├── refresh_worker │ │ └── runner.rb │ ├── vm_or_template_shared.rb │ ├── metrics_collector_worker │ │ └── runner.rb │ ├── provision.rb │ ├── refresh_worker.rb │ ├── metrics_collector_worker.rb │ ├── provision │ │ ├── state_machine.rb │ │ └── configuration.rb │ ├── flavor.rb │ ├── orchestration_stack │ │ └── status.rb │ ├── vm │ │ ├── operations.rb │ │ └── operations │ │ │ ├── guest.rb │ │ │ └── power.rb │ ├── template.rb │ ├── refresher.rb │ ├── auth_key_pair.rb │ ├── event_catcher │ │ └── runner.rb │ ├── vm.rb │ └── orchestration_service_option_converter.rb │ ├── network_manager │ ├── load_balancer_pool.rb │ ├── load_balancer_listener.rb │ ├── load_balancer_health_check.rb │ ├── load_balancer_pool_member.rb │ ├── refresher.rb │ ├── floating_ip.rb │ ├── cloud_subnet.rb │ ├── network_port.rb │ ├── cloud_network.rb │ ├── load_balancer.rb │ ├── network_router.rb │ └── security_group.rb │ ├── container_manager │ ├── event_parser.rb │ ├── refresher.rb │ ├── refresh_worker │ │ ├── runner.rb │ │ └── watch_thread.rb │ ├── event_catcher.rb │ ├── refresh_worker.rb │ ├── container.rb │ ├── event_catcher │ │ └── runner.rb │ ├── container_node.rb │ ├── container_group.rb │ ├── service_instance.rb │ ├── service_offering.rb │ ├── container_project.rb │ ├── container_template.rb │ └── service_parameters_set.rb │ ├── storage_manager │ ├── s3 │ │ ├── refresher.rb │ │ ├── refresh_worker │ │ │ └── runner.rb │ │ ├── refresh_worker.rb │ │ └── cloud_object_store_object.rb │ ├── ebs │ │ └── refresher.rb │ ├── s3.rb │ └── ebs.rb │ ├── inventory │ ├── parser │ │ ├── container_manager.rb │ │ └── container_manager │ │ │ └── watch_notice.rb │ ├── collector │ │ ├── container_manager.rb │ │ ├── container_manager │ │ │ └── watch_notice.rb │ │ ├── storage_manager │ │ │ ├── ebs.rb │ │ │ └── s3.rb │ │ └── network_manager.rb │ ├── persister │ │ ├── container_manager.rb │ │ ├── container_manager │ │ │ └── watch_notice.rb │ │ ├── cloud_manager.rb │ │ ├── storage_manager │ │ │ ├── s3.rb │ │ │ └── ebs.rb │ │ ├── network_manager.rb │ │ ├── target_collection.rb │ │ └── definitions │ │ │ ├── cloud_collections.rb │ │ │ └── network_collections.rb │ ├── persister.rb │ ├── parser.rb │ └── hash_collection.rb │ ├── regions.rb │ ├── database_types.rb │ ├── agent_coordinator_worker.rb │ ├── inventory.rb │ ├── network_manager.rb │ ├── instance_types.rb │ └── parser_helper_methods.rb ├── .rspec ├── .rubocop_local.yml ├── .rspec_ci ├── renovate.json ├── spec ├── factories │ ├── cloud_database.rb │ ├── service_parameters_set.rb │ ├── cloud_network.rb │ ├── floating_ip.rb │ ├── cloud_volume_snapshot.rb │ ├── cloud_object_store.rb │ ├── cloud_volume.rb │ ├── orchestration_template.rb │ └── ext_management_system.rb ├── models │ ├── manageiq │ │ └── providers │ │ │ └── amazon │ │ │ ├── network_manager │ │ │ └── floating_ip_spec.rb │ │ │ ├── aws_helper.rb │ │ │ ├── cloud_manager │ │ │ ├── provision │ │ │ │ └── configuration_spec.rb │ │ │ └── event_catcher │ │ │ │ ├── cloud_watch │ │ │ │ ├── EC2_Instance_State_change_Notification_stopping.json │ │ │ │ ├── EC2_Instance_State_change_Notification_pending.json │ │ │ │ ├── EC2_Instance_State_change_Notification_running.json │ │ │ │ ├── EC2_Instance_State_change_Notification_stopped.json │ │ │ │ ├── EC2_Instance_State_change_Notification_terminated.json │ │ │ │ ├── EC2_Instance_State_change_Notification_shutting-down.json │ │ │ │ ├── AWS_ALARM_awselb-EmSRefreshSpecVPCELB-Unhealthy-Hosts.json │ │ │ │ ├── AWS_API_CALL_SignalResource.json │ │ │ │ ├── AWS_API_CALL_DeleteTags.json │ │ │ │ ├── AWS_API_CALL_AssociateAddress.json │ │ │ │ ├── AWS_API_CALL_DeleteVpc.json │ │ │ │ ├── AWS_API_CALL_CreateTags.json │ │ │ │ ├── AWS_API_CALL_DeleteSubnet.json │ │ │ │ ├── AWS_API_CALL_ReleaseAddress.json │ │ │ │ ├── AWS_API_CALL_DeleteProduct.json │ │ │ │ ├── AWS_API_CALL_DeleteRouteTable.json │ │ │ │ ├── AWS_API_CALL_EnableVpcClassicLink.json │ │ │ │ ├── AWS_API_CALL_ModifyNetworkInterfaceAttribute.json │ │ │ │ ├── AWS_API_CALL_DeleteInternetGateway.json │ │ │ │ ├── AWS_API_CALL_DeregisterInstancesFromLoadBalancer.json │ │ │ │ ├── AWS_API_CALL_DisassociateAddress.json │ │ │ │ ├── AWS_API_CALL_DeleteNetworkInterface.json │ │ │ │ ├── AWS_API_CALL_DetachNetworkInterface.json │ │ │ │ ├── AWS_API_CALL_DisassociateRouteTable.json │ │ │ │ ├── AWS_API_CALL_AllocateAddress.json │ │ │ │ ├── AWS_API_CALL_DeleteRoute.json │ │ │ │ ├── AWS_API_CALL_DeleteSecurityGroup.json │ │ │ │ ├── AWS_API_CALL_AssociateDhcpOptions.json │ │ │ │ ├── AWS_API_CALL_ModifyVpcAttribute.json │ │ │ │ ├── AWS_API_CALL_RebootInstances.json │ │ │ │ ├── AWS_API_CALL_TerminateInstances.json │ │ │ │ ├── AWS_API_CALL_AttachInternetGateway.json │ │ │ │ ├── AWS_API_CALL_DetachInternetGateway.json │ │ │ │ ├── AWS_API_CALL_DeleteKeyPair.json │ │ │ │ ├── AWS_API_CALL_RegisterInstancesWithLoadBalancer.json │ │ │ │ ├── AWS_API_CALL_CreateInternetGateway.json │ │ │ │ ├── AWS_API_CALL_AssociateRouteTable.json │ │ │ │ ├── AWS_API_CALL_AssociateProductWithPortfolio.json │ │ │ │ ├── AWS_API_CALL_DeleteProvisioningArtifact.json │ │ │ │ ├── AWS_API_CALL_DeleteStack.json │ │ │ │ ├── AWS_API_CALL_DisassociateProductFromPortfolio.json │ │ │ │ ├── AWS_API_CALL_ReplaceRouteTableAssociation.json │ │ │ │ ├── AWS_API_CALL_DeregisterImage.json │ │ │ │ ├── AWS_API_CALL_UnassignPrivateIpAddresses.json │ │ │ │ ├── AWS_API_CALL_DeleteLoadBalancer.json │ │ │ │ ├── AWS_API_CALL_AssignPrivateIpAddresses.json │ │ │ │ ├── AWS_API_CALL_CreateSecurityGroup.json │ │ │ │ ├── AWS_API_CALL_CreateStack.json │ │ │ │ ├── AWS_API_CALL_CopyProduct.json │ │ │ │ └── AWS_API_CALL_AttachNetworkInterface.json │ │ │ │ └── config │ │ │ │ ├── EBS_Snapshot_Notification.json │ │ │ │ ├── AWS_EC2_VPC_DELETE.json │ │ │ │ ├── AWS_EC2_Subnet_DELETE.json │ │ │ │ ├── AWS_EC2_Volume_DELETE.json │ │ │ │ ├── AWS_EC2_InternetGateway_DELETE.json │ │ │ │ ├── AWS_EC2_InternetGateway_CREATE.json │ │ │ │ └── AWS_EC2_EIP_CREATE.json │ │ │ ├── container_manager_spec.rb │ │ │ ├── network_manager_spec.rb │ │ │ ├── storage_manager │ │ │ └── ebs │ │ │ │ └── cloud_volume_snapshot_spec.rb │ │ │ └── agent_coordinator_worker_spec.rb │ ├── authenticator_spec.rb │ └── dialog │ │ └── orchestration_template_amazon_service_dialog_spec.rb ├── config │ └── secrets.defaults.yml └── spec_helper.rb ├── .yamllint ├── bin ├── setup ├── update ├── rails └── before_install ├── .gitignore ├── Rakefile ├── Gemfile ├── README.md └── manageiq-providers-amazon.gemspec /locale/.keep: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /bundler.d/.keep: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /.github/CODEOWNERS: -------------------------------------------------------------------------------- 1 | * @agrare @Fryguy 2 | -------------------------------------------------------------------------------- /.whitesource: -------------------------------------------------------------------------------- 1 | { 2 | "settingsInheritedFrom": "ManageIQ/whitesource-config@master" 3 | } 4 | -------------------------------------------------------------------------------- /systemd/manageiq-providers-amazon_agent_coordinator.target: -------------------------------------------------------------------------------- 1 | [Unit] 2 | PartOf=manageiq.target 3 | -------------------------------------------------------------------------------- /systemd/manageiq-providers-amazon_cloud_manager_refresh.target: -------------------------------------------------------------------------------- 1 | [Unit] 2 | PartOf=manageiq.target 3 | -------------------------------------------------------------------------------- /systemd/manageiq-providers-amazon_cloud_manager_event_catcher.target: -------------------------------------------------------------------------------- 1 | [Unit] 2 | PartOf=manageiq.target 3 | -------------------------------------------------------------------------------- /systemd/manageiq-providers-amazon_container_manager_refresh.target: -------------------------------------------------------------------------------- 1 | [Unit] 2 | PartOf=manageiq.target 3 | -------------------------------------------------------------------------------- /systemd/manageiq-providers-amazon_storage_manager_s3_refresh.target: -------------------------------------------------------------------------------- 1 | [Unit] 2 | PartOf=manageiq.target 3 | -------------------------------------------------------------------------------- /systemd/manageiq-providers-amazon_cloud_manager_metrics_collector.target: -------------------------------------------------------------------------------- 1 | [Unit] 2 | PartOf=manageiq.target 3 | -------------------------------------------------------------------------------- /systemd/manageiq-providers-amazon_container_manager_event_catcher.target: -------------------------------------------------------------------------------- 1 | [Unit] 2 | PartOf=manageiq.target 3 | -------------------------------------------------------------------------------- /.rubocop.yml: -------------------------------------------------------------------------------- 1 | inherit_gem: 2 | manageiq-style: ".rubocop_base.yml" 3 | inherit_from: 4 | - ".rubocop_local.yml" 5 | -------------------------------------------------------------------------------- /lib/manageiq/providers/amazon.rb: -------------------------------------------------------------------------------- 1 | require "manageiq/providers/amazon/engine" 2 | require "manageiq/providers/amazon/version" 3 | -------------------------------------------------------------------------------- /app/models/manageiq/providers/amazon/cloud_manager/scanning.rb: -------------------------------------------------------------------------------- 1 | class ManageIQ::Providers::Amazon::CloudManager::Scanning 2 | end 3 | -------------------------------------------------------------------------------- /.rspec: -------------------------------------------------------------------------------- 1 | --require manageiq/spec/spec_helper 2 | --require spec_helper 3 | --color 4 | --order random 5 | --exclude-pattern "spec/manageiq/**/*_spec.rb" 6 | -------------------------------------------------------------------------------- /.rubocop_local.yml: -------------------------------------------------------------------------------- 1 | Style/GlobalVars: 2 | AllowedVariables: 3 | # Loggers 4 | - $aws_log 5 | - $log 6 | Lint/RescueException: 7 | Enabled: false 8 | -------------------------------------------------------------------------------- /app/models/manageiq/providers/amazon/cloud_manager/service_instance.rb: -------------------------------------------------------------------------------- 1 | class ManageIQ::Providers::Amazon::CloudManager::ServiceInstance < ::ServiceInstance 2 | end 3 | -------------------------------------------------------------------------------- /app/models/manageiq/providers/amazon/cloud_manager/service_offering.rb: -------------------------------------------------------------------------------- 1 | class ManageIQ::Providers::Amazon::CloudManager::ServiceOffering < ::ServiceOffering 2 | end 3 | -------------------------------------------------------------------------------- /app/models/manageiq/providers/amazon/cloud_manager/availability_zone.rb: -------------------------------------------------------------------------------- 1 | class ManageIQ::Providers::Amazon::CloudManager::AvailabilityZone < ::AvailabilityZone 2 | end 3 | -------------------------------------------------------------------------------- /lib/manageiq/providers/amazon/version.rb: -------------------------------------------------------------------------------- 1 | module ManageIQ 2 | module Providers 3 | module Amazon 4 | VERSION = '0.1.0'.freeze 5 | end 6 | end 7 | end 8 | -------------------------------------------------------------------------------- /.rspec_ci: -------------------------------------------------------------------------------- 1 | --require manageiq/spec/spec_helper 2 | --require spec_helper 3 | --color 4 | --order random 5 | --profile 25 6 | --exclude-pattern "spec/manageiq/**/*_spec.rb" 7 | -------------------------------------------------------------------------------- /app/models/manageiq/providers/amazon/network_manager/load_balancer_pool.rb: -------------------------------------------------------------------------------- 1 | class ManageIQ::Providers::Amazon::NetworkManager::LoadBalancerPool < ::LoadBalancerPool 2 | end 3 | -------------------------------------------------------------------------------- /app/models/manageiq/providers/amazon/cloud_manager/cloud_database_flavor.rb: -------------------------------------------------------------------------------- 1 | class ManageIQ::Providers::Amazon::CloudManager::CloudDatabaseFlavor < ::CloudDatabaseFlavor 2 | end 3 | -------------------------------------------------------------------------------- /app/models/manageiq/providers/amazon/cloud_manager/service_parameters_set.rb: -------------------------------------------------------------------------------- 1 | class ManageIQ::Providers::Amazon::CloudManager::ServiceParametersSet < ::ServiceParametersSet 2 | end 3 | -------------------------------------------------------------------------------- /renovate.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "https://docs.renovatebot.com/renovate-schema.json", 3 | "inheritConfig": true, 4 | "inheritConfigRepoName": "manageiq/renovate-config" 5 | } 6 | -------------------------------------------------------------------------------- /app/models/manageiq/providers/amazon/network_manager/load_balancer_listener.rb: -------------------------------------------------------------------------------- 1 | class ManageIQ::Providers::Amazon::NetworkManager::LoadBalancerListener < ::LoadBalancerListener 2 | end 3 | -------------------------------------------------------------------------------- /spec/factories/cloud_database.rb: -------------------------------------------------------------------------------- 1 | FactoryBot.define do 2 | factory :cloud_database_amazon, 3 | :class => "ManageIQ::Providers::Amazon::CloudManager::CloudDatabase" 4 | end 5 | -------------------------------------------------------------------------------- /app/models/manageiq/providers/amazon/cloud_manager/event_catcher.rb: -------------------------------------------------------------------------------- 1 | class ManageIQ::Providers::Amazon::CloudManager::EventCatcher < ManageIQ::Providers::BaseManager::EventCatcher 2 | end 3 | -------------------------------------------------------------------------------- /app/models/manageiq/providers/amazon/network_manager/load_balancer_health_check.rb: -------------------------------------------------------------------------------- 1 | class ManageIQ::Providers::Amazon::NetworkManager::LoadBalancerHealthCheck < ::LoadBalancerHealthCheck 2 | end 3 | -------------------------------------------------------------------------------- /app/models/manageiq/providers/amazon/network_manager/load_balancer_pool_member.rb: -------------------------------------------------------------------------------- 1 | class ManageIQ::Providers::Amazon::NetworkManager::LoadBalancerPoolMember < ::LoadBalancerPoolMember 2 | end 3 | -------------------------------------------------------------------------------- /spec/factories/service_parameters_set.rb: -------------------------------------------------------------------------------- 1 | FactoryBot.define do 2 | factory :service_parameters_set_amazon, :class => "ManageIQ::Providers::Amazon::CloudManager::ServiceParametersSet" 3 | end 4 | -------------------------------------------------------------------------------- /spec/models/manageiq/providers/amazon/network_manager/floating_ip_spec.rb: -------------------------------------------------------------------------------- 1 | describe ManageIQ::Providers::Amazon::NetworkManager::FloatingIp do 2 | include_examples :floating_ip, 'amazon' 3 | end 4 | -------------------------------------------------------------------------------- /app/models/manageiq/providers/amazon/container_manager/event_parser.rb: -------------------------------------------------------------------------------- 1 | class ManageIQ::Providers::Amazon::ContainerManager::EventParser < ManageIQ::Providers::Kubernetes::ContainerManager::EventParser 2 | end 3 | -------------------------------------------------------------------------------- /app/models/manageiq/providers/amazon/storage_manager/s3/refresher.rb: -------------------------------------------------------------------------------- 1 | module ManageIQ::Providers 2 | class Amazon::StorageManager::S3::Refresher < ManageIQ::Providers::BaseManager::Refresher 3 | end 4 | end 5 | -------------------------------------------------------------------------------- /app/models/manageiq/providers/amazon/cloud_manager/refresh_worker/runner.rb: -------------------------------------------------------------------------------- 1 | class ManageIQ::Providers::Amazon::CloudManager::RefreshWorker::Runner < ManageIQ::Providers::BaseManager::RefreshWorker::Runner 2 | end 3 | -------------------------------------------------------------------------------- /app/models/manageiq/providers/amazon/cloud_manager/vm_or_template_shared.rb: -------------------------------------------------------------------------------- 1 | module ManageIQ::Providers::Amazon::CloudManager::VmOrTemplateShared 2 | extend ActiveSupport::Concern 3 | include Scanning 4 | end 5 | -------------------------------------------------------------------------------- /app/models/manageiq/providers/amazon/storage_manager/ebs/refresher.rb: -------------------------------------------------------------------------------- 1 | module ManageIQ::Providers 2 | class Amazon::StorageManager::Ebs::Refresher < ManageIQ::Providers::BaseManager::Refresher 3 | end 4 | end 5 | -------------------------------------------------------------------------------- /app/models/manageiq/providers/amazon/inventory/parser/container_manager.rb: -------------------------------------------------------------------------------- 1 | class ManageIQ::Providers::Amazon::Inventory::Parser::ContainerManager < ManageIQ::Providers::Kubernetes::Inventory::Parser::ContainerManager 2 | end 3 | -------------------------------------------------------------------------------- /spec/factories/cloud_network.rb: -------------------------------------------------------------------------------- 1 | FactoryBot.define do 2 | factory :cloud_network_amazon, 3 | :class => "ManageIQ::Providers::Amazon::NetworkManager::CloudNetwork", 4 | :parent => :cloud_network 5 | end 6 | -------------------------------------------------------------------------------- /spec/factories/floating_ip.rb: -------------------------------------------------------------------------------- 1 | FactoryBot.define do 2 | factory :floating_ip_amazon, :parent => :floating_ip, 3 | :class => "ManageIQ::Providers::Amazon::NetworkManager::FloatingIp" 4 | end 5 | -------------------------------------------------------------------------------- /app/models/manageiq/providers/amazon/storage_manager/s3/refresh_worker/runner.rb: -------------------------------------------------------------------------------- 1 | class ManageIQ::Providers::Amazon::StorageManager::S3::RefreshWorker::Runner < 2 | ManageIQ::Providers::BaseManager::RefreshWorker::Runner 3 | end 4 | -------------------------------------------------------------------------------- /app/models/manageiq/providers/amazon/container_manager/refresher.rb: -------------------------------------------------------------------------------- 1 | module ManageIQ::Providers 2 | module Amazon 3 | class ContainerManager::Refresher < ManageIQ::Providers::BaseManager::Refresher 4 | end 5 | end 6 | end 7 | -------------------------------------------------------------------------------- /app/models/manageiq/providers/amazon/inventory/collector/container_manager.rb: -------------------------------------------------------------------------------- 1 | class ManageIQ::Providers::Amazon::Inventory::Collector::ContainerManager < ManageIQ::Providers::Kubernetes::Inventory::Collector::ContainerManager 2 | end 3 | -------------------------------------------------------------------------------- /app/models/manageiq/providers/amazon/inventory/persister/container_manager.rb: -------------------------------------------------------------------------------- 1 | class ManageIQ::Providers::Amazon::Inventory::Persister::ContainerManager < ManageIQ::Providers::Kubernetes::Inventory::Persister::ContainerManager 2 | end 3 | -------------------------------------------------------------------------------- /app/models/manageiq/providers/amazon/container_manager/refresh_worker/runner.rb: -------------------------------------------------------------------------------- 1 | class ManageIQ::Providers::Amazon::ContainerManager::RefreshWorker::Runner < ManageIQ::Providers::Kubernetes::ContainerManager::RefreshWorker::Runner 2 | end 3 | -------------------------------------------------------------------------------- /app/models/manageiq/providers/amazon/cloud_manager/metrics_collector_worker/runner.rb: -------------------------------------------------------------------------------- 1 | class ManageIQ::Providers::Amazon::CloudManager::MetricsCollectorWorker::Runner < ManageIQ::Providers::BaseManager::MetricsCollectorWorker::Runner 2 | end 3 | -------------------------------------------------------------------------------- /spec/models/authenticator_spec.rb: -------------------------------------------------------------------------------- 1 | describe Authenticator do 2 | describe '.for' do 3 | it "instantiates the matching class" do 4 | expect(Authenticator.for(:mode => 'amazon')).to be_a(Authenticator::Amazon) 5 | end 6 | end 7 | end 8 | -------------------------------------------------------------------------------- /app/models/manageiq/providers/amazon/cloud_manager/provision.rb: -------------------------------------------------------------------------------- 1 | class ManageIQ::Providers::Amazon::CloudManager::Provision < ManageIQ::Providers::CloudManager::Provision 2 | include Cloning 3 | include StateMachine 4 | include Configuration 5 | end 6 | -------------------------------------------------------------------------------- /app/models/manageiq/providers/amazon/container_manager/refresh_worker/watch_thread.rb: -------------------------------------------------------------------------------- 1 | class ManageIQ::Providers::Amazon::ContainerManager::RefreshWorker::WatchThread < ManageIQ::Providers::Kubernetes::ContainerManager::RefreshWorker::WatchThread 2 | end 3 | -------------------------------------------------------------------------------- /app/models/manageiq/providers/amazon/storage_manager/s3/refresh_worker.rb: -------------------------------------------------------------------------------- 1 | class ManageIQ::Providers::Amazon::StorageManager::S3::RefreshWorker < ::MiqEmsRefreshWorker 2 | def self.settings_name 3 | :ems_refresh_worker_amazon_s3 4 | end 5 | end 6 | -------------------------------------------------------------------------------- /app/models/manageiq/providers/amazon/inventory/parser/container_manager/watch_notice.rb: -------------------------------------------------------------------------------- 1 | class ManageIQ::Providers::Amazon::Inventory::Parser::ContainerManager::WatchNotice < ManageIQ::Providers::Kubernetes::Inventory::Parser::ContainerManager::WatchNotice 2 | end 3 | -------------------------------------------------------------------------------- /app/models/manageiq/providers/amazon/container_manager/event_catcher.rb: -------------------------------------------------------------------------------- 1 | class ManageIQ::Providers::Amazon::ContainerManager::EventCatcher < ManageIQ::Providers::BaseManager::EventCatcher 2 | def self.settings_name 3 | :event_catcher_amazon_eks 4 | end 5 | end 6 | -------------------------------------------------------------------------------- /app/models/manageiq/providers/amazon/network_manager/refresher.rb: -------------------------------------------------------------------------------- 1 | module ManageIQ::Providers 2 | class Amazon::NetworkManager::Refresher < ManageIQ::Providers::BaseManager::Refresher 3 | def post_process_refresh_classes 4 | [] 5 | end 6 | end 7 | end 8 | -------------------------------------------------------------------------------- /app/models/manageiq/providers/amazon/inventory/collector/container_manager/watch_notice.rb: -------------------------------------------------------------------------------- 1 | class ManageIQ::Providers::Amazon::Inventory::Collector::ContainerManager::WatchNotice < ManageIQ::Providers::Kubernetes::Inventory::Collector::ContainerManager::WatchNotice 2 | end 3 | -------------------------------------------------------------------------------- /app/models/manageiq/providers/amazon/inventory/persister/container_manager/watch_notice.rb: -------------------------------------------------------------------------------- 1 | class ManageIQ::Providers::Amazon::Inventory::Persister::ContainerManager::WatchNotice < ManageIQ::Providers::Kubernetes::Inventory::Persister::ContainerManager::WatchNotice 2 | end 3 | -------------------------------------------------------------------------------- /app/models/manageiq/providers/amazon/network_manager/floating_ip.rb: -------------------------------------------------------------------------------- 1 | class ManageIQ::Providers::Amazon::NetworkManager::FloatingIp < ::FloatingIp 2 | def self.display_name(number = 1) 3 | n_('Floating IP (Amazon)', 'Floating IPs (Amazon)', number) 4 | end 5 | end 6 | -------------------------------------------------------------------------------- /lib/tasks/amazon.rake: -------------------------------------------------------------------------------- 1 | #namespace :manageiq do 2 | # namespace :providers do 3 | # namespace :amazon do 4 | # desc "Explaining what the task does" 5 | # task :your_task do 6 | # # Task goes here 7 | # end 8 | # end 9 | # end 10 | #end 11 | -------------------------------------------------------------------------------- /app/models/manageiq/providers/amazon/container_manager/refresh_worker.rb: -------------------------------------------------------------------------------- 1 | class ManageIQ::Providers::Amazon::ContainerManager::RefreshWorker < ManageIQ::Providers::BaseManager::RefreshWorker 2 | def self.settings_name 3 | :ems_refresh_worker_amazon_eks 4 | end 5 | end 6 | -------------------------------------------------------------------------------- /app/models/manageiq/providers/amazon/network_manager/cloud_subnet.rb: -------------------------------------------------------------------------------- 1 | class ManageIQ::Providers::Amazon::NetworkManager::CloudSubnet < ::CloudSubnet 2 | def self.display_name(number = 1) 3 | n_('Cloud Subnet (Amazon)', 'Cloud Subnets (Amazon)', number) 4 | end 5 | end 6 | -------------------------------------------------------------------------------- /app/models/manageiq/providers/amazon/network_manager/network_port.rb: -------------------------------------------------------------------------------- 1 | class ManageIQ::Providers::Amazon::NetworkManager::NetworkPort < ::NetworkPort 2 | def self.display_name(number = 1) 3 | n_('Network Port (Amazon)', 'Network Ports (Amazon)', number) 4 | end 5 | end 6 | -------------------------------------------------------------------------------- /spec/factories/cloud_volume_snapshot.rb: -------------------------------------------------------------------------------- 1 | FactoryBot.define do 2 | factory :cloud_volume_snapshot_amazon, :parent => :cloud_volume_snapshot, 3 | :class => "ManageIQ::Providers::Amazon::StorageManager::Ebs::CloudVolumeSnapshot" 4 | end 5 | -------------------------------------------------------------------------------- /.yamllint: -------------------------------------------------------------------------------- 1 | --- 2 | ignore: | 3 | /vendor/** 4 | /spec/manageiq/** 5 | /spec/vcr_cassettes/** 6 | /db/fixtures/aws_instance_types.yml 7 | 8 | extends: relaxed 9 | 10 | rules: 11 | indentation: 12 | indent-sequences: false 13 | line-length: 14 | max: 120 15 | -------------------------------------------------------------------------------- /app/models/manageiq/providers/amazon/network_manager/cloud_network.rb: -------------------------------------------------------------------------------- 1 | class ManageIQ::Providers::Amazon::NetworkManager::CloudNetwork < ::CloudNetwork 2 | def self.display_name(number = 1) 3 | n_('Cloud Network (Amazon)', 'Cloud Networks (Amazon)', number) 4 | end 5 | end 6 | -------------------------------------------------------------------------------- /app/models/manageiq/providers/amazon/network_manager/load_balancer.rb: -------------------------------------------------------------------------------- 1 | class ManageIQ::Providers::Amazon::NetworkManager::LoadBalancer < ::LoadBalancer 2 | def self.display_name(number = 1) 3 | n_('Load Balancer (Amazon)', 'Load Balancers (Amazon)', number) 4 | end 5 | end 6 | -------------------------------------------------------------------------------- /app/models/manageiq/providers/amazon/network_manager/network_router.rb: -------------------------------------------------------------------------------- 1 | class ManageIQ::Providers::Amazon::NetworkManager::NetworkRouter < ::NetworkRouter 2 | def self.display_name(number = 1) 3 | n_('Network Router (Amazon)', 'Network Routers (Amazon)', number) 4 | end 5 | end 6 | -------------------------------------------------------------------------------- /app/models/manageiq/providers/amazon/network_manager/security_group.rb: -------------------------------------------------------------------------------- 1 | class ManageIQ::Providers::Amazon::NetworkManager::SecurityGroup < ::SecurityGroup 2 | def self.display_name(number = 1) 3 | n_('Security Group (Amazon)', 'Security Groups (Amazon)', number) 4 | end 5 | end 6 | -------------------------------------------------------------------------------- /spec/config/secrets.defaults.yml: -------------------------------------------------------------------------------- 1 | --- 2 | amazon: 3 | client_id: AMAZON_CLIENT_ID 4 | client_secret: AMAZON_CLIENT_SECRET 5 | amazon_eks: 6 | hostname: amazonhostname 7 | cluster_name: CLUSTER_NAME 8 | client_id: AMAZON_CLIENT_ID 9 | client_secret: AMAZON_CLIENT_SECRET 10 | -------------------------------------------------------------------------------- /app/models/manageiq/providers/amazon/container_manager/container.rb: -------------------------------------------------------------------------------- 1 | ManageIQ::Providers::Kubernetes::ContainerManager::Container.include(ActsAsStiLeafClass) 2 | 3 | class ManageIQ::Providers::Amazon::ContainerManager::Container < ManageIQ::Providers::Kubernetes::ContainerManager::Container 4 | end 5 | -------------------------------------------------------------------------------- /app/models/manageiq/providers/amazon/regions.rb: -------------------------------------------------------------------------------- 1 | # frozen_string_literal: true 2 | 3 | # NOTE: use 'aws:extract:regions' rake task to renew the list 4 | 5 | module ManageIQ 6 | module Providers::Amazon 7 | class Regions < ManageIQ::Providers::Regions 8 | end 9 | end 10 | end 11 | -------------------------------------------------------------------------------- /app/models/manageiq/providers/amazon/container_manager/event_catcher/runner.rb: -------------------------------------------------------------------------------- 1 | class ManageIQ::Providers::Amazon::ContainerManager::EventCatcher::Runner < ManageIQ::Providers::BaseManager::EventCatcher::Runner 2 | include ManageIQ::Providers::Kubernetes::ContainerManager::EventCatcherMixin 3 | end 4 | -------------------------------------------------------------------------------- /app/models/manageiq/providers/amazon/inventory/persister.rb: -------------------------------------------------------------------------------- 1 | class ManageIQ::Providers::Amazon::Inventory::Persister < ManageIQ::Providers::Inventory::Persister 2 | # TODO(lsmola) figure out a way to pass collector info, probably via target, then remove the below 3 | attr_reader :collector 4 | end 5 | -------------------------------------------------------------------------------- /bin/setup: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env ruby 2 | 3 | require "pathname" 4 | 5 | gem_root = Pathname.new(__dir__).join("..") 6 | system(gem_root.join("bin/before_install").to_s) 7 | 8 | require gem_root.join("spec/manageiq/lib/manageiq/environment") 9 | ManageIQ::Environment.manageiq_plugin_setup(gem_root) 10 | -------------------------------------------------------------------------------- /app/models/manageiq/providers/amazon/container_manager/container_node.rb: -------------------------------------------------------------------------------- 1 | ManageIQ::Providers::Kubernetes::ContainerManager::ContainerNode.include(ActsAsStiLeafClass) 2 | 3 | class ManageIQ::Providers::Amazon::ContainerManager::ContainerNode < ManageIQ::Providers::Kubernetes::ContainerManager::ContainerNode 4 | end 5 | -------------------------------------------------------------------------------- /app/models/manageiq/providers/amazon/container_manager/container_group.rb: -------------------------------------------------------------------------------- 1 | ManageIQ::Providers::Kubernetes::ContainerManager::ContainerGroup.include(ActsAsStiLeafClass) 2 | 3 | class ManageIQ::Providers::Amazon::ContainerManager::ContainerGroup < ManageIQ::Providers::Kubernetes::ContainerManager::ContainerGroup 4 | end 5 | -------------------------------------------------------------------------------- /app/models/manageiq/providers/amazon/container_manager/service_instance.rb: -------------------------------------------------------------------------------- 1 | ManageIQ::Providers::Kubernetes::ContainerManager::ServiceInstance.include(ActsAsStiLeafClass) 2 | 3 | class ManageIQ::Providers::Amazon::ContainerManager::ServiceInstance < ManageIQ::Providers::Kubernetes::ContainerManager::ServiceInstance 4 | end 5 | -------------------------------------------------------------------------------- /app/models/manageiq/providers/amazon/container_manager/service_offering.rb: -------------------------------------------------------------------------------- 1 | ManageIQ::Providers::Kubernetes::ContainerManager::ServiceOffering.include(ActsAsStiLeafClass) 2 | 3 | class ManageIQ::Providers::Amazon::ContainerManager::ServiceOffering < ManageIQ::Providers::Kubernetes::ContainerManager::ServiceOffering 4 | end 5 | -------------------------------------------------------------------------------- /lib/tasks_private/spec.rake: -------------------------------------------------------------------------------- 1 | namespace :spec do 2 | desc "Setup environment specs" 3 | task :setup => ["app:test:vmdb:setup"] 4 | end 5 | 6 | desc "Run all specs" 7 | RSpec::Core::RakeTask.new(:spec => ['app:test:spec_deps', 'app:test:providers_common']) do |t| 8 | EvmTestHelper.init_rspec_task(t) 9 | end 10 | -------------------------------------------------------------------------------- /app/models/manageiq/providers/amazon/cloud_manager/refresh_worker.rb: -------------------------------------------------------------------------------- 1 | class ManageIQ::Providers::Amazon::CloudManager::RefreshWorker < ManageIQ::Providers::BaseManager::RefreshWorker 2 | def self.combined_managers(ems) 3 | super.reject { |e| e.kind_of?(ManageIQ::Providers::Amazon::StorageManager::S3) } 4 | end 5 | end 6 | -------------------------------------------------------------------------------- /app/models/manageiq/providers/amazon/container_manager/container_project.rb: -------------------------------------------------------------------------------- 1 | ManageIQ::Providers::Kubernetes::ContainerManager::ContainerProject.include(ActsAsStiLeafClass) 2 | 3 | class ManageIQ::Providers::Amazon::ContainerManager::ContainerProject < ManageIQ::Providers::Kubernetes::ContainerManager::ContainerProject 4 | end 5 | -------------------------------------------------------------------------------- /app/models/manageiq/providers/amazon/container_manager/container_template.rb: -------------------------------------------------------------------------------- 1 | ManageIQ::Providers::Kubernetes::ContainerManager::ContainerTemplate.include(ActsAsStiLeafClass) 2 | 3 | class ManageIQ::Providers::Amazon::ContainerManager::ContainerTemplate < ManageIQ::Providers::Kubernetes::ContainerManager::ContainerTemplate 4 | end 5 | -------------------------------------------------------------------------------- /app/models/manageiq/providers/amazon/container_manager/service_parameters_set.rb: -------------------------------------------------------------------------------- 1 | ManageIQ::Providers::Kubernetes::ContainerManager::ServiceParametersSet.include(ActsAsStiLeafClass) 2 | 3 | class ManageIQ::Providers::Amazon::ContainerManager::ServiceParametersSet < ManageIQ::Providers::Kubernetes::ContainerManager::ServiceParametersSet 4 | end 5 | -------------------------------------------------------------------------------- /app/models/manageiq/providers/amazon/cloud_manager/metrics_collector_worker.rb: -------------------------------------------------------------------------------- 1 | class ManageIQ::Providers::Amazon::CloudManager::MetricsCollectorWorker < ManageIQ::Providers::BaseManager::MetricsCollectorWorker 2 | self.default_queue_name = "amazon" 3 | 4 | def friendly_name 5 | @friendly_name ||= "C&U Metrics Collector for Amazon" 6 | end 7 | end 8 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | /.bundle/ 2 | /.yardoc 3 | /Gemfile.lock 4 | /_yardoc/ 5 | /coverage/ 6 | /doc/ 7 | /pkg/ 8 | /spec/reports/ 9 | /tmp/ 10 | /vendor/bundle 11 | 12 | .rubocop-* 13 | /bundler.d/* 14 | !/bundler.d/.keep 15 | /config/settings.local.yml 16 | /config/settings/*.local.yml 17 | /config/environments/*.local.yml 18 | /spec/config/secrets.yml 19 | /spec/manageiq 20 | -------------------------------------------------------------------------------- /Rakefile: -------------------------------------------------------------------------------- 1 | require 'bundler/setup' 2 | 3 | begin 4 | require 'rspec/core/rake_task' 5 | 6 | APP_RAKEFILE = File.expand_path("spec/manageiq/Rakefile", __dir__) 7 | load 'rails/tasks/engine.rake' 8 | load 'rails/tasks/statistics.rake' 9 | rescue LoadError 10 | end 11 | 12 | require 'bundler/gem_tasks' 13 | 14 | FileList['lib/tasks_private/**/*.rake'].each { |r| load r } 15 | 16 | task :default => :spec 17 | -------------------------------------------------------------------------------- /app/models/manageiq/providers/amazon/database_types.rb: -------------------------------------------------------------------------------- 1 | # frozen_string_literal: true 2 | 3 | module ManageIQ::Providers::Amazon::DatabaseTypes 4 | ALL_TYPES = YAML.load_file( 5 | ManageIQ::Providers::Amazon::Engine.root.join('db/fixtures/aws_database_types.yml') 6 | ) 7 | 8 | def self.database_types 9 | ALL_TYPES 10 | end 11 | 12 | def self.all 13 | database_types.values 14 | end 15 | end 16 | -------------------------------------------------------------------------------- /app/models/manageiq/providers/amazon/inventory/persister/cloud_manager.rb: -------------------------------------------------------------------------------- 1 | class ManageIQ::Providers::Amazon::Inventory::Persister::CloudManager < ManageIQ::Providers::Amazon::Inventory::Persister 2 | include ManageIQ::Providers::Amazon::Inventory::Persister::Definitions::CloudCollections 3 | 4 | def initialize_inventory_collections 5 | initialize_tag_mapper 6 | 7 | initialize_cloud_inventory_collections 8 | end 9 | end 10 | -------------------------------------------------------------------------------- /app/models/manageiq/providers/amazon/inventory/collector/storage_manager/ebs.rb: -------------------------------------------------------------------------------- 1 | class ManageIQ::Providers::Amazon::Inventory::Collector::StorageManager::Ebs < ManageIQ::Providers::Amazon::Inventory::Collector 2 | def cloud_volumes 3 | hash_collection.new(aws_ec2.client.describe_volumes.flat_map(&:volumes)) 4 | end 5 | 6 | def cloud_volume_snapshots 7 | hash_collection.new(aws_ec2.client.describe_snapshots(:owner_ids => [:self]).flat_map(&:snapshots)) 8 | end 9 | end 10 | -------------------------------------------------------------------------------- /app/models/manageiq/providers/amazon/cloud_manager/provision/state_machine.rb: -------------------------------------------------------------------------------- 1 | module ManageIQ::Providers::Amazon::CloudManager::Provision::StateMachine 2 | def customize_destination 3 | message = "Setting New #{destination_type} Name" 4 | _log.info("#{message} #{for_destination}") 5 | update_and_notify_parent(:message => message) 6 | 7 | destination.set_custom_field("Name", dest_name) 8 | destination.update(:name => dest_name) 9 | 10 | super 11 | end 12 | end 13 | -------------------------------------------------------------------------------- /bin/update: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env ruby 2 | require 'pathname' 3 | 4 | gem_root = Pathname.new(__dir__).join("..") 5 | 6 | if gem_root.join("spec/manageiq").symlink? 7 | puts "== SKIPPING update of spec/manageiq because it is symlinked ==" 8 | else 9 | puts "== Updating manageiq sample app ==" 10 | system("git pull", :chdir => gem_root.join("spec/manageiq")) 11 | end 12 | 13 | require gem_root.join("spec/manageiq/lib/manageiq/environment").to_s 14 | ManageIQ::Environment.manageiq_plugin_update(gem_root) 15 | -------------------------------------------------------------------------------- /app/models/manageiq/providers/amazon/cloud_manager/flavor.rb: -------------------------------------------------------------------------------- 1 | class ManageIQ::Providers::Amazon::CloudManager::Flavor < ::Flavor 2 | virtual_column :supports_instance_store, :type => :boolean 3 | virtual_column :supports_ebs, :type => :boolean 4 | 5 | def supports_instance_store? 6 | !block_storage_based_only? 7 | end 8 | 9 | def supports_ebs? 10 | block_storage_based_only? 11 | end 12 | 13 | def self.display_name(number = 1) 14 | n_('Flavor (Amazon)', 'Flavors (Amazon)', number) 15 | end 16 | end 17 | -------------------------------------------------------------------------------- /app/models/manageiq/providers/amazon/inventory/persister/storage_manager/s3.rb: -------------------------------------------------------------------------------- 1 | class ManageIQ::Providers::Amazon::Inventory::Persister::StorageManager::S3 < ManageIQ::Providers::Amazon::Inventory::Persister 2 | include ManageIQ::Providers::Amazon::Inventory::Persister::Definitions::StorageCollections 3 | 4 | def initialize_inventory_collections 5 | initialize_storage_inventory_collections 6 | end 7 | 8 | def initialize_storage_inventory_collections 9 | add_cloud_object_store_containers 10 | 11 | add_cloud_object_store_objects 12 | end 13 | end 14 | -------------------------------------------------------------------------------- /app/models/manageiq/providers/amazon/inventory/parser.rb: -------------------------------------------------------------------------------- 1 | class ManageIQ::Providers::Amazon::Inventory::Parser < ManageIQ::Providers::Inventory::Parser 2 | include ManageIQ::Providers::Amazon::ParserHelperMethods 3 | 4 | # Overridden helper methods, we should put them in helper once we get rid of old refresh 5 | def get_from_tags(resource, tag_name) 6 | tag_name = tag_name.to_s.downcase 7 | tags = resource['tags'].to_a.concat(resource['tag_set'].to_a) 8 | Array.wrap(tags).detect { |tag, _| tag['key'].downcase == tag_name }.try(:[], 'value').presence 9 | end 10 | end 11 | -------------------------------------------------------------------------------- /systemd/manageiq-providers-amazon_agent_coordinator@.service: -------------------------------------------------------------------------------- 1 | [Unit] 2 | PartOf=amazon_agent_coordinator.target 3 | [Install] 4 | WantedBy=amazon_agent_coordinator.target 5 | [Service] 6 | WorkingDirectory=/var/www/miq/vmdb 7 | Environment=BUNDLER_GROUPS=manageiq_default,ui_dependencies 8 | EnvironmentFile=/etc/default/manageiq*.properties 9 | ExecStart=/usr/bin/ruby lib/workers/bin/run_single_worker.rb ManageIQ::Providers::Amazon::AgentCoordinatorWorker --heartbeat --guid=%i 10 | User=manageiq 11 | Restart=no 12 | Type=notify 13 | Slice=manageiq-providers-amazon_agent_coordinator.slice 14 | -------------------------------------------------------------------------------- /app/models/manageiq/providers/amazon/cloud_manager/orchestration_stack/status.rb: -------------------------------------------------------------------------------- 1 | class ManageIQ::Providers::Amazon::CloudManager::OrchestrationStack::Status < ::OrchestrationStack::Status 2 | def succeeded? 3 | status.downcase == "create_complete" 4 | end 5 | 6 | def failed? 7 | status.downcase =~ /failed$/ 8 | end 9 | 10 | def rolled_back? 11 | status.downcase == "rollback_complete" 12 | end 13 | 14 | def deleted? 15 | status.downcase == "delete_complete" 16 | end 17 | 18 | def updated? 19 | status.downcase == "update_complete" 20 | end 21 | end 22 | -------------------------------------------------------------------------------- /app/models/manageiq/providers/amazon/cloud_manager/vm/operations.rb: -------------------------------------------------------------------------------- 1 | module ManageIQ::Providers::Amazon::CloudManager::Vm::Operations 2 | extend ActiveSupport::Concern 3 | include Guest 4 | include Power 5 | 6 | included do 7 | supports :terminate do 8 | unsupported_reason(:control) 9 | end 10 | end 11 | 12 | def raw_destroy 13 | raise "VM has no #{ui_lookup(:table => "ext_management_systems")}, unable to destroy VM" unless ext_management_system 14 | with_provider_object(&:terminate) 15 | update!(:raw_power_state => "shutting-down") 16 | end 17 | end 18 | -------------------------------------------------------------------------------- /systemd/manageiq-providers-amazon_cloud_manager_refresh@.service: -------------------------------------------------------------------------------- 1 | [Unit] 2 | PartOf=amazon_cloud_manager_refresh.target 3 | [Install] 4 | WantedBy=amazon_cloud_manager_refresh.target 5 | [Service] 6 | WorkingDirectory=/var/www/miq/vmdb 7 | Environment=BUNDLER_GROUPS=manageiq_default,ui_dependencies 8 | EnvironmentFile=/etc/default/manageiq*.properties 9 | ExecStart=/usr/bin/ruby lib/workers/bin/run_single_worker.rb ManageIQ::Providers::Amazon::CloudManager::RefreshWorker --heartbeat --guid=%i 10 | User=manageiq 11 | Restart=no 12 | Type=notify 13 | Slice=manageiq-providers-amazon_cloud_manager_refresh.slice 14 | -------------------------------------------------------------------------------- /systemd/manageiq-providers-amazon_container_manager_refresh@.service: -------------------------------------------------------------------------------- 1 | [Unit] 2 | PartOf=amazon_container_manager_refresh.target 3 | [Install] 4 | WantedBy=amazon_container_manager_refresh.target 5 | [Service] 6 | WorkingDirectory=/var/www/miq/vmdb 7 | Environment=BUNDLER_GROUPS=manageiq_default,ui_dependencies 8 | EnvironmentFile=/etc/default/manageiq*.properties 9 | ExecStart=/usr/bin/ruby lib/workers/bin/run_single_worker.rb ManageIQ::Providers::Amazon::ContainerManager::RefreshWorker --heartbeat --guid=%i 10 | User=manageiq 11 | Restart=no 12 | Type=notify 13 | Slice=manageiq-providers-amazon_container_manager_refresh.slice 14 | -------------------------------------------------------------------------------- /systemd/manageiq-providers-amazon_cloud_manager_event_catcher@.service: -------------------------------------------------------------------------------- 1 | [Unit] 2 | PartOf=amazon_cloud_manager_event_catcher.target 3 | [Install] 4 | WantedBy=amazon_cloud_manager_event_catcher.target 5 | [Service] 6 | WorkingDirectory=/var/www/miq/vmdb 7 | Environment=BUNDLER_GROUPS=manageiq_default,ui_dependencies 8 | EnvironmentFile=/etc/default/manageiq*.properties 9 | ExecStart=/usr/bin/ruby lib/workers/bin/run_single_worker.rb ManageIQ::Providers::Amazon::CloudManager::EventCatcher --heartbeat --guid=%i 10 | User=manageiq 11 | Restart=no 12 | Type=notify 13 | Slice=manageiq-providers-amazon_cloud_manager_event_catcher.slice 14 | -------------------------------------------------------------------------------- /systemd/manageiq-providers-amazon_storage_manager_s3_refresh@.service: -------------------------------------------------------------------------------- 1 | [Unit] 2 | PartOf=amazon_storage_manager_s3_refresh.target 3 | [Install] 4 | WantedBy=amazon_storage_manager_s3_refresh.target 5 | [Service] 6 | WorkingDirectory=/var/www/miq/vmdb 7 | Environment=BUNDLER_GROUPS=manageiq_default,ui_dependencies 8 | EnvironmentFile=/etc/default/manageiq*.properties 9 | ExecStart=/usr/bin/ruby lib/workers/bin/run_single_worker.rb ManageIQ::Providers::Amazon::StorageManager::S3::RefreshWorker --heartbeat --guid=%i 10 | User=manageiq 11 | Restart=no 12 | Type=notify 13 | Slice=manageiq-providers-amazon_storage_manager_s3_refresh.slice 14 | -------------------------------------------------------------------------------- /spec/models/manageiq/providers/amazon/aws_helper.rb: -------------------------------------------------------------------------------- 1 | def with_aws_stubbed(stub_responses_per_service) 2 | require "aws-sdk-core" 3 | stub_responses_per_service.each do |service, stub_responses| 4 | if Aws.config.dig(service, :stub_responses).present? 5 | raise "Aws.config[#{service}][:stub_responses] already set" 6 | else 7 | require "aws-sdk-#{service.to_s.downcase}" 8 | (Aws.config[service] ||= {})[:stub_responses] = stub_responses 9 | end 10 | end 11 | yield 12 | ensure 13 | stub_responses_per_service.keys.each do |service| 14 | Aws.config[service].delete(:stub_responses) 15 | end 16 | end 17 | -------------------------------------------------------------------------------- /spec/spec_helper.rb: -------------------------------------------------------------------------------- 1 | if ENV['CI'] 2 | require 'simplecov' 3 | SimpleCov.start 4 | end 5 | 6 | Dir[Rails.root.join("spec/shared/**/*.rb")].each { |f| require f } 7 | Dir[File.join(__dir__, "support/**/*.rb")].each { |f| require f } 8 | 9 | require "manageiq/providers/amazon" 10 | 11 | VCR.configure do |config| 12 | config.ignore_hosts 'codeclimate.com' if ENV['CI'] 13 | config.cassette_library_dir = File.join(ManageIQ::Providers::Amazon::Engine.root, 'spec/vcr_cassettes') 14 | 15 | VcrSecrets.define_all_cassette_placeholders(config, :amazon) 16 | VcrSecrets.define_all_cassette_placeholders(config, :amazon_eks) 17 | end 18 | -------------------------------------------------------------------------------- /app/models/manageiq/providers/amazon/cloud_manager/vm/operations/guest.rb: -------------------------------------------------------------------------------- 1 | module ManageIQ::Providers::Amazon::CloudManager::Vm::Operations::Guest 2 | extend ActiveSupport::Concern 3 | 4 | included do 5 | supports :reboot_guest do 6 | if current_state != "on" 7 | _("The VM is not powered on") 8 | else 9 | unsupported_reason(:control) 10 | end 11 | end 12 | end 13 | 14 | def raw_reboot_guest 15 | with_provider_object(&:reboot) 16 | # Temporarily update state for quick UI response until refresh comes along 17 | self.update!(:raw_power_state => "shutting_down") 18 | end 19 | end 20 | -------------------------------------------------------------------------------- /lib/tasks/README.md: -------------------------------------------------------------------------------- 1 | Tasks (.rake files) in this directory will be available as public tasks in the main 2 | ManageIQ app. They can be executed in the plugin gem via the app: namespace 3 | 4 | ```shell 5 | bin/rails app: 6 | ``` 7 | 8 | Since these tasks are public, please namespace them, as in the following example: 9 | 10 | ```ruby 11 | namespace "manageiq:providers:amazon" do 12 | desc "Explaining what the task does" 13 | task :your_task do 14 | # Task goes here 15 | end 16 | end 17 | ``` 18 | 19 | Tasks places in the lib/tasks_private directory will be private to the plugin 20 | and not available in the ManageIQ app. 21 | -------------------------------------------------------------------------------- /Gemfile: -------------------------------------------------------------------------------- 1 | # Declare your gem's dependencies in manageiq-providers-amazon.gemspec. 2 | # Bundler will treat runtime dependencies like base dependencies, and 3 | # development dependencies will be added by default to the :development group. 4 | gemspec 5 | 6 | # Declare any dependencies that are still in development here instead of in 7 | # your gemspec. These might include edge Rails or gems from your path or 8 | # Git. Remember to move these dependencies to your gemspec before releasing 9 | # your gem to rubygems.org. 10 | 11 | # Load Gemfile with dependencies from manageiq 12 | eval_gemfile(File.expand_path("spec/manageiq/Gemfile", __dir__)) 13 | -------------------------------------------------------------------------------- /bin/rails: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env ruby 2 | # This command will automatically be run when you run "rails" with Rails gems 3 | # installed from the root of your application. 4 | 5 | ENGINE_ROOT = File.expand_path('../..', __FILE__) 6 | ENGINE_PATH = File.expand_path('../../lib/manageiq/providers/amazon/engine', __FILE__) 7 | APP_PATH = File.expand_path('../../spec/manageiq/config/application', __FILE__) 8 | 9 | # Set up gems listed in the Gemfile. 10 | ENV['BUNDLE_GEMFILE'] ||= File.expand_path('../../Gemfile', __FILE__) 11 | require 'bundler/setup' if File.exist?(ENV['BUNDLE_GEMFILE']) 12 | 13 | require 'rails/all' 14 | require 'rails/engine/commands' 15 | -------------------------------------------------------------------------------- /systemd/manageiq-providers-amazon_container_manager_event_catcher@.service: -------------------------------------------------------------------------------- 1 | [Unit] 2 | PartOf=amazon_container_manager_event_catcher.target 3 | [Install] 4 | WantedBy=amazon_container_manager_event_catcher.target 5 | [Service] 6 | WorkingDirectory=/var/www/miq/vmdb 7 | Environment=BUNDLER_GROUPS=manageiq_default,ui_dependencies 8 | EnvironmentFile=/etc/default/manageiq*.properties 9 | ExecStart=/usr/bin/ruby lib/workers/bin/run_single_worker.rb ManageIQ::Providers::Amazon::ContainerManager::EventCatcher --heartbeat --guid=%i 10 | User=manageiq 11 | Restart=no 12 | Type=notify 13 | Slice=manageiq-providers-amazon_container_manager_event_catcher.slice 14 | -------------------------------------------------------------------------------- /systemd/manageiq-providers-amazon_cloud_manager_metrics_collector@.service: -------------------------------------------------------------------------------- 1 | [Unit] 2 | PartOf=amazon_cloud_manager_metrics_collector.target 3 | [Install] 4 | WantedBy=amazon_cloud_manager_metrics_collector.target 5 | [Service] 6 | WorkingDirectory=/var/www/miq/vmdb 7 | Environment=BUNDLER_GROUPS=manageiq_default,ui_dependencies 8 | EnvironmentFile=/etc/default/manageiq*.properties 9 | ExecStart=/usr/bin/ruby lib/workers/bin/run_single_worker.rb ManageIQ::Providers::Amazon::CloudManager::MetricsCollectorWorker --heartbeat --guid=%i 10 | User=manageiq 11 | Restart=no 12 | Type=notify 13 | Slice=manageiq-providers-amazon_cloud_manager_metrics_collector.slice 14 | -------------------------------------------------------------------------------- /spec/models/manageiq/providers/amazon/cloud_manager/provision/configuration_spec.rb: -------------------------------------------------------------------------------- 1 | require_relative "../../aws_helper" 2 | 3 | describe ManageIQ::Providers::Amazon::CloudManager::Provision::Configuration do 4 | it "#userdata_payload is Base64 encoded" do 5 | template = FactoryBot.build(:customization_template, :script => "#cloud-init") 6 | provision = ManageIQ::Providers::Amazon::CloudManager::Provision.new 7 | allow(provision).to receive(:customization_template).and_return(template) 8 | allow(provision).to receive(:post_install_callback_url).and_return("") 9 | expect(Base64.decode64(provision.userdata_payload)).to eq(template.script) 10 | end 11 | end 12 | -------------------------------------------------------------------------------- /app/models/manageiq/providers/amazon/agent_coordinator_worker.rb: -------------------------------------------------------------------------------- 1 | class ManageIQ::Providers::Amazon::AgentCoordinatorWorker < MiqWorker 2 | include ProviderWorkerMixin 3 | include MiqWorker::ReplicaPerWorker 4 | 5 | self.required_roles = ['smartproxy'] 6 | self.workers = 1 7 | 8 | def self.has_required_role? 9 | super && all_valid_ems_in_zone.any? 10 | end 11 | 12 | def self.ems_class 13 | ManageIQ::Providers::Amazon::CloudManager 14 | end 15 | 16 | def self.kill_priority 17 | MiqWorkerType::KILL_PRIORITY_REFRESH_WORKERS 18 | end 19 | 20 | def self.service_base_name 21 | "manageiq-providers-#{minimal_class_name.underscore.tr("/", "_")}" 22 | end 23 | end 24 | -------------------------------------------------------------------------------- /bin/before_install: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | if [ -n "$CI" ]; then 4 | echo "== Installing system packages ==" 5 | sudo apt-get update 6 | sudo apt-get install -y libcurl4-openssl-dev 7 | echo 8 | fi 9 | 10 | gem_root="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." &>/dev/null && pwd)" 11 | spec_manageiq="$gem_root/spec/manageiq" 12 | 13 | if [ -n "$MANAGEIQ_REPO" ]; then 14 | echo "== Symlinking spec/manageiq to $MANAGEIQ_REPO ==" 15 | rm -rf "$spec_manageiq" 16 | ln -s "$(cd "$MANAGEIQ_REPO" &>/dev/null && pwd)" "$spec_manageiq" 17 | elif [ ! -d "$spec_manageiq" ]; then 18 | echo "== Cloning manageiq sample app ==" 19 | git clone https://github.com/ManageIQ/manageiq.git --branch master --depth 1 "$spec_manageiq" 20 | fi 21 | -------------------------------------------------------------------------------- /lib/manageiq/providers/amazon/engine.rb: -------------------------------------------------------------------------------- 1 | module ManageIQ 2 | module Providers 3 | module Amazon 4 | class Engine < ::Rails::Engine 5 | isolate_namespace ManageIQ::Providers::Amazon 6 | 7 | config.autoload_paths << root.join('lib') 8 | 9 | def self.vmdb_plugin? 10 | true 11 | end 12 | 13 | def self.plugin_name 14 | _('Amazon Provider') 15 | end 16 | 17 | def self.init_loggers 18 | $aws_log ||= Vmdb::Loggers.create_logger("aws.log") 19 | end 20 | 21 | def self.apply_logger_config(config) 22 | Vmdb::Loggers.apply_config_value(config, $aws_log, :level_aws) 23 | end 24 | end 25 | end 26 | end 27 | end 28 | -------------------------------------------------------------------------------- /app/models/manageiq/providers/amazon/inventory.rb: -------------------------------------------------------------------------------- 1 | class ManageIQ::Providers::Amazon::Inventory < ManageIQ::Providers::Inventory 2 | # Default manager for building collector/parser/persister classes 3 | # when failed to get class name from refresh target automatically 4 | def self.default_manager_name 5 | "CloudManager" 6 | end 7 | 8 | def self.parser_classes_for(ems, target) 9 | case target 10 | when InventoryRefresh::TargetCollection 11 | [ManageIQ::Providers::Amazon::Inventory::Parser::CloudManager, 12 | ManageIQ::Providers::Amazon::Inventory::Parser::NetworkManager, 13 | ManageIQ::Providers::Amazon::Inventory::Parser::StorageManager::Ebs] 14 | else 15 | super 16 | end 17 | end 18 | 19 | end 20 | -------------------------------------------------------------------------------- /spec/factories/cloud_object_store.rb: -------------------------------------------------------------------------------- 1 | FactoryBot.define do 2 | factory :aws_object, :class => ManageIQ::Providers::Amazon::StorageManager::S3::CloudObjectStoreObject.name do |object| 3 | object.sequence(:key) { |n| "object-key-#{n}" } 4 | end 5 | 6 | factory :aws_bucket_with_objects, 7 | :class => ManageIQ::Providers::Amazon::StorageManager::S3::CloudObjectStoreContainer.name do |bucket| 8 | bucket.sequence(:name) { |n| "stubbed-name-#{n}" } 9 | bucket.sequence(:ems_ref) { |n| "stubbed-ems-ref-#{n}" } 10 | 11 | after(:create) do |bucket| 12 | bucket.cloud_object_store_objects = FactoryBot.create_list( 13 | :aws_object, 5, :ext_management_system => bucket.ext_management_system 14 | ) 15 | end 16 | end 17 | end 18 | -------------------------------------------------------------------------------- /spec/models/manageiq/providers/amazon/container_manager_spec.rb: -------------------------------------------------------------------------------- 1 | describe ManageIQ::Providers::Amazon::ContainerManager do 2 | it ".ems_type" do 3 | expect(described_class.ems_type).to eq('eks') 4 | end 5 | 6 | it ".description" do 7 | expect(described_class.description).to eq('Amazon EKS') 8 | end 9 | 10 | context "#pause!" do 11 | let(:zone) { FactoryBot.create(:zone) } 12 | let(:ems) { FactoryBot.create(:ems_amazon, :zone => zone) } 13 | 14 | include_examples "ExtManagementSystem#pause!" 15 | end 16 | 17 | context "#resume!" do 18 | let(:zone) { FactoryBot.create(:zone) } 19 | let(:ems) { FactoryBot.create(:ems_amazon, :zone => zone) } 20 | 21 | include_examples "ExtManagementSystem#resume!" 22 | end 23 | end 24 | -------------------------------------------------------------------------------- /app/models/manageiq/providers/amazon/cloud_manager/vm/operations/power.rb: -------------------------------------------------------------------------------- 1 | module ManageIQ::Providers::Amazon::CloudManager::Vm::Operations::Power 2 | extend ActiveSupport::Concern 3 | included do 4 | supports_not :pause, :reason => "Pause Operation is not available for Amazon Web Service (AWS) Instances." 5 | supports_not :suspend 6 | end 7 | 8 | def raw_start 9 | with_provider_object(&:start) 10 | # Temporarily update state for quick UI response until refresh comes along 11 | self.update!(:raw_power_state => "powering_up") 12 | end 13 | 14 | def raw_stop 15 | with_provider_object(&:stop) 16 | # Temporarily update state for quick UI response until refresh comes along 17 | self.update!(:raw_power_state => "shutting_down") 18 | end 19 | end 20 | -------------------------------------------------------------------------------- /app/models/manageiq/providers/amazon/cloud_manager/provision/configuration.rb: -------------------------------------------------------------------------------- 1 | module ManageIQ::Providers::Amazon::CloudManager::Provision::Configuration 2 | def associate_floating_ip(ip_address) 3 | # TODO(lsmola) this should be moved to FloatingIp model 4 | destination.with_provider_object do |instance| 5 | if ip_address.cloud_network_only? 6 | instance.client.associate_address(:instance_id => instance.instance_id, :allocation_id => ip_address.ems_ref) 7 | else 8 | instance.client.associate_address(:instance_id => instance.instance_id, :public_ip => ip_address.address) 9 | end 10 | end 11 | end 12 | 13 | def userdata_payload 14 | raw_script = super 15 | return unless raw_script 16 | Base64.encode64(raw_script) 17 | end 18 | end 19 | -------------------------------------------------------------------------------- /app/models/manageiq/providers/amazon/cloud_manager/template.rb: -------------------------------------------------------------------------------- 1 | class ManageIQ::Providers::Amazon::CloudManager::Template < ManageIQ::Providers::CloudManager::Template 2 | include ManageIQ::Providers::Amazon::CloudManager::VmOrTemplateShared 3 | 4 | supports :provisioning do 5 | if !ext_management_system 6 | _("not connected to ems") 7 | else 8 | ext_management_system.unsupported_reason(:provisioning) 9 | end 10 | end 11 | 12 | def provider_object(connection = nil) 13 | connection ||= ext_management_system.connect 14 | connection.image(ems_ref) 15 | end 16 | 17 | def proxies4job(_job = nil) 18 | { 19 | :proxies => [MiqServer.my_server], 20 | :message => 'Perform SmartState Analysis on this Image' 21 | } 22 | end 23 | 24 | def self.display_name(number = 1) 25 | n_('Image (Amazon)', 'Images (Amazon)', number) 26 | end 27 | end 28 | -------------------------------------------------------------------------------- /app/models/manageiq/providers/amazon/inventory/hash_collection.rb: -------------------------------------------------------------------------------- 1 | class ManageIQ::Providers::Amazon::Inventory::HashCollection 2 | attr_reader :collection 3 | 4 | def initialize(collection) 5 | @collection = collection 6 | end 7 | 8 | def each 9 | collection.each { |item| yield(transform(item)) } 10 | end 11 | 12 | def all 13 | collection.each_with_object([]) { |item, obj| obj << transform(item) } 14 | end 15 | 16 | delegate :count, to: :all 17 | alias size count 18 | 19 | private 20 | def transform(item) 21 | transform_keys(item.respond_to?(:to_hash) ? item.to_hash : item.data.to_hash) 22 | end 23 | 24 | def transform_keys(value) 25 | case value 26 | when Array 27 | value.map { |x| transform_keys(x) } 28 | when Hash 29 | Hash[value.map { |k, v| [k.to_s.underscore, transform_keys(v)] }] 30 | else 31 | value 32 | end 33 | end 34 | end 35 | -------------------------------------------------------------------------------- /spec/factories/cloud_volume.rb: -------------------------------------------------------------------------------- 1 | FactoryBot.define do 2 | factory :cloud_volume_amazon, :parent => :cloud_volume, 3 | :class => "ManageIQ::Providers::Amazon::StorageManager::Ebs::CloudVolume" 4 | factory :cloud_volume_amazon_standard, 5 | :parent => :cloud_volume, 6 | :class => "ManageIQ::Providers::Amazon::StorageManager::Ebs::CloudVolume" do 7 | size { 1.gigabyte } 8 | volume_type { 'standard' } 9 | end 10 | 11 | factory :cloud_volume_amazon_gp2, 12 | :parent => :cloud_volume, 13 | :class => "ManageIQ::Providers::Amazon::StorageManager::Ebs::CloudVolume" do 14 | size { 1.gigabyte } 15 | volume_type { 'gp2' } 16 | end 17 | 18 | factory :cloud_volume_amazon_io1, 19 | :parent => :cloud_volume, 20 | :class => "ManageIQ::Providers::Amazon::StorageManager::Ebs::CloudVolume" do 21 | size { 4.gigabytes } 22 | volume_type { 'io1' } 23 | end 24 | end 25 | -------------------------------------------------------------------------------- /app/models/manageiq/providers/amazon/inventory/persister/network_manager.rb: -------------------------------------------------------------------------------- 1 | class ManageIQ::Providers::Amazon::Inventory::Persister::NetworkManager < ManageIQ::Providers::Amazon::Inventory::Persister 2 | include ManageIQ::Providers::Amazon::Inventory::Persister::Definitions::CloudCollections 3 | include ManageIQ::Providers::Amazon::Inventory::Persister::Definitions::NetworkCollections 4 | 5 | def initialize_inventory_collections 6 | initialize_network_inventory_collections 7 | 8 | initialize_cloud_inventory_collections 9 | end 10 | 11 | def initialize_network_inventory_collections 12 | super 13 | 14 | add_network_collection(:network_routers) 15 | end 16 | 17 | def initialize_cloud_inventory_collections 18 | %i(availability_zones 19 | orchestration_stacks 20 | vms).each do |name| 21 | 22 | add_cloud_collection(name) do |builder| 23 | builder.add_properties(:strategy => :local_db_cache_all) 24 | end 25 | end 26 | end 27 | end 28 | -------------------------------------------------------------------------------- /app/models/manageiq/providers/amazon/cloud_manager/refresher.rb: -------------------------------------------------------------------------------- 1 | class ManageIQ::Providers::Amazon::CloudManager::Refresher < ManageIQ::Providers::BaseManager::Refresher 2 | # Saves the inventory to the DB 3 | # 4 | # @param ems [ManageIQ::Providers::BaseManager] Manager owning the refresh 5 | # @param target [ManageIQ::Providers::BaseManager or InventoryRefresh::Target or InventoryRefresh::TargetCollection] 6 | # Target we are refreshing 7 | # @param _hashes_or_persister [Array or ManageIQ::Providers::Inventory::Persister] Used in superclass 8 | def save_inventory(ems, target, _hashes_or_persister) 9 | super 10 | 11 | EmsRefresh.queue_refresh(ems.network_manager) if target.kind_of?(ManageIQ::Providers::BaseManager) 12 | EmsRefresh.queue_refresh(ems.ebs_storage_manager) if target.kind_of?(ManageIQ::Providers::BaseManager) 13 | end 14 | 15 | # List classes that will have post process method invoked 16 | def post_process_refresh_classes 17 | [::Vm] 18 | end 19 | end 20 | -------------------------------------------------------------------------------- /spec/factories/orchestration_template.rb: -------------------------------------------------------------------------------- 1 | FactoryBot.define do 2 | factory :orchestration_template_amazon, 3 | :parent => :orchestration_template, 4 | :class => "ManageIQ::Providers::Amazon::CloudManager::OrchestrationTemplate" do 5 | sequence(:content) { |n| "{\"AWSTemplateFormatVersion\" : \"version(#{seq_padded_for_sorting(n)})\"}" } 6 | end 7 | 8 | factory :orchestration_template_amazon_with_stacks, :parent => :orchestration_template_amazon do 9 | stacks { [FactoryBot.create(:orchestration_stack)] } 10 | end 11 | 12 | factory :orchestration_template_amazon_in_json, :parent => :orchestration_template_amazon do 13 | content { File.read(ManageIQ::Providers::Amazon::Engine.root.join(*%w(spec fixtures orchestration_templates cfn_parameters.json))) } 14 | end 15 | 16 | factory :orchestration_template_amazon_in_yaml, :parent => :orchestration_template_amazon do 17 | content { File.read(ManageIQ::Providers::Amazon::Engine.root.join(*%w(spec fixtures orchestration_templates cfn_parameters.yaml))) } 18 | end 19 | end 20 | -------------------------------------------------------------------------------- /app/models/manageiq/providers/amazon/storage_manager/s3/cloud_object_store_object.rb: -------------------------------------------------------------------------------- 1 | class ManageIQ::Providers::Amazon::StorageManager::S3::CloudObjectStoreObject < ::CloudObjectStoreObject 2 | supports :delete do 3 | if !ext_management_system 4 | _("The Storage Object is not connected to an active %{table}") % { 5 | :table => ui_lookup(:table => "ext_management_systems") 6 | } 7 | elsif !cloud_object_store_container 8 | _("The Storage Object is not connected to an active %{table}") % { 9 | :table => ui_lookup(:table => "cloud_object_store_containers") 10 | } 11 | end 12 | end 13 | 14 | def provider_object(connection = nil) 15 | cloud_object_store_container.provider_object(connection).object(key) 16 | end 17 | 18 | def raw_delete 19 | if key.end_with? "/" # delete object with subobjects (aka. folder) 20 | cloud_object_store_container.provider_object.objects(:prefix => key).batch_delete! 21 | else # delete single object 22 | with_provider_object(&:delete) 23 | end 24 | end 25 | end 26 | -------------------------------------------------------------------------------- /app/models/manageiq/providers/amazon/inventory/persister/storage_manager/ebs.rb: -------------------------------------------------------------------------------- 1 | class ManageIQ::Providers::Amazon::Inventory::Persister::StorageManager::Ebs < ManageIQ::Providers::Amazon::Inventory::Persister 2 | include ManageIQ::Providers::Amazon::Inventory::Persister::Definitions::CloudCollections 3 | include ManageIQ::Providers::Amazon::Inventory::Persister::Definitions::StorageCollections 4 | 5 | def initialize_inventory_collections 6 | initialize_storage_inventory_collections 7 | 8 | initialize_cloud_inventory_collections 9 | end 10 | 11 | def initialize_storage_inventory_collections 12 | add_cloud_volumes 13 | 14 | add_cloud_volume_snapshots 15 | end 16 | 17 | def initialize_cloud_inventory_collections 18 | %i(availability_zones 19 | hardwares 20 | vms 21 | disks).each do |name| 22 | 23 | add_cloud_collection(name) do |builder| 24 | builder.add_properties(:update_only => true) if name == :disks 25 | builder.add_properties(:strategy => :local_db_cache_all) unless name == :disks 26 | end 27 | end 28 | end 29 | end 30 | -------------------------------------------------------------------------------- /spec/models/manageiq/providers/amazon/network_manager_spec.rb: -------------------------------------------------------------------------------- 1 | require_relative 'aws_helper' 2 | 3 | describe ManageIQ::Providers::Amazon::NetworkManager do 4 | context "ems" do 5 | it "does not support network creation" do 6 | ems = described_class.new 7 | expect(ems.supports?(:update)).to eq(false) 8 | end 9 | end 10 | 11 | context "singleton methods" do 12 | it "returns the expected value for the description method" do 13 | expect(described_class.description).to eq('Amazon EC2 Network') 14 | end 15 | 16 | it "returns the expected value for the ems_type method" do 17 | expect(described_class.ems_type).to eq('ec2_network') 18 | end 19 | 20 | it "returns the expected value for the hostname_required? method" do 21 | expect(described_class.hostname_required?).to eq(false) 22 | end 23 | 24 | it "returns the expected value for the display_name method" do 25 | expect(described_class.display_name).to eq('Network Provider (Amazon)') 26 | expect(described_class.display_name(2)).to eq('Network Providers (Amazon)') 27 | end 28 | end 29 | end 30 | -------------------------------------------------------------------------------- /app/models/manageiq/providers/amazon/cloud_manager/auth_key_pair.rb: -------------------------------------------------------------------------------- 1 | class ManageIQ::Providers::Amazon::CloudManager::AuthKeyPair < ManageIQ::Providers::CloudManager::AuthKeyPair 2 | supports :create 3 | supports :delete 4 | 5 | def self.raw_create_key_pair(ext_management_system, create_options) 6 | ec2 = ext_management_system.connect 7 | kp = if create_options["public_key"].blank? 8 | ec2.create_key_pair(:key_name => create_options["name"]) 9 | else 10 | ec2.import_key_pair(:key_name => create_options["name"], :public_key_material => create_options["public_key"]) 11 | end 12 | 13 | {:name => kp.name, :fingerprint => kp.key_fingerprint, :auth_key => kp.try(:key_material)} 14 | rescue => err 15 | _log.error "keypair=[#{name}], error: #{err}" 16 | raise MiqException::Error, err.to_s, err.backtrace 17 | end 18 | 19 | def raw_delete_key_pair 20 | ec2 = resource.connect 21 | kp = ec2.key_pair(name) 22 | kp.delete 23 | rescue => err 24 | _log.error "keypair=[#{name}], error: #{err}" 25 | raise MiqException::Error, err.to_s, err.backtrace 26 | end 27 | end 28 | -------------------------------------------------------------------------------- /app/models/manageiq/providers/amazon/inventory/persister/target_collection.rb: -------------------------------------------------------------------------------- 1 | class ManageIQ::Providers::Amazon::Inventory::Persister::TargetCollection < ManageIQ::Providers::Amazon::Inventory::Persister 2 | include ManageIQ::Providers::Amazon::Inventory::Persister::Definitions::CloudCollections 3 | include ManageIQ::Providers::Amazon::Inventory::Persister::Definitions::NetworkCollections 4 | include ManageIQ::Providers::Amazon::Inventory::Persister::Definitions::StorageCollections 5 | 6 | def targeted? 7 | true 8 | end 9 | 10 | def initialize_inventory_collections 11 | initialize_tag_mapper 12 | 13 | initialize_cloud_inventory_collections 14 | 15 | initialize_network_inventory_collections 16 | 17 | initialize_storage_inventory_collections 18 | end 19 | 20 | private 21 | 22 | # Top level models with direct references for Network 23 | def initialize_storage_inventory_collections 24 | add_cloud_volumes 25 | 26 | add_cloud_volume_snapshots 27 | 28 | if manager.s3_storage_manager 29 | add_cloud_object_store_containers 30 | 31 | add_cloud_object_store_objects 32 | end 33 | end 34 | end 35 | -------------------------------------------------------------------------------- /app/models/manageiq/providers/amazon/storage_manager/s3.rb: -------------------------------------------------------------------------------- 1 | class ManageIQ::Providers::Amazon::StorageManager::S3 < ManageIQ::Providers::StorageManager 2 | supports :object_storage 3 | 4 | include ManageIQ::Providers::Amazon::ManagerMixin 5 | 6 | delegate :authentication_check, 7 | :authentication_status, 8 | :authentications, 9 | :authentication_for_summary, 10 | :verify_credentials, 11 | :address, 12 | :ip_address, 13 | :hostname, 14 | :default_endpoint, 15 | :endpoints, 16 | :to => :parent_manager, 17 | :allow_nil => true 18 | 19 | virtual_has_many :cloud_tenants, :through => :parent_manager 20 | virtual_has_many :volume_availability_zones, :through => :parent_manager, :class_name => "AvailabilityZone" 21 | 22 | def self.ems_type 23 | @ems_type ||= "s3".freeze 24 | end 25 | 26 | def self.description 27 | @description ||= "Amazon S3".freeze 28 | end 29 | 30 | def self.hostname_required? 31 | false 32 | end 33 | 34 | def connect(options = {}) 35 | options[:service] = :S3 36 | parent_manager.connect options 37 | end 38 | end 39 | -------------------------------------------------------------------------------- /spec/factories/ext_management_system.rb: -------------------------------------------------------------------------------- 1 | FactoryBot.define do 2 | factory :ems_amazon_ebs, 3 | :aliases => ["manageiq/providers/amazon/storage_manager/ebs"], 4 | :class => "ManageIQ::Providers::Amazon::StorageManager::Ebs", 5 | :parent => :ems_storage do 6 | provider_region { "us-east-1" } 7 | end 8 | 9 | factory :ems_amazon_with_vcr_authentication, :parent => :ems_amazon do 10 | zone do 11 | _guid, _server, zone = EvmSpecHelper.create_guid_miq_server_zone 12 | zone 13 | end 14 | after(:create) do |ems| 15 | client_id = VcrSecrets.amazon.client_id 16 | client_key = VcrSecrets.amazon.client_secret 17 | 18 | cred = { 19 | :userid => client_id, 20 | :password => client_key 21 | } 22 | 23 | ems.authentications << FactoryBot.create(:authentication, cred) 24 | end 25 | end 26 | 27 | factory :ems_amazon_eks, 28 | :aliases => ["manageiq/providers/amazon/container_manager"], 29 | :class => "ManageIQ::Providers::Amazon::ContainerManager", 30 | :parent => :ems_container do 31 | provider_region { "us-east-1" } 32 | security_protocol { "ssl-without-validation" } 33 | port { 443 } 34 | end 35 | end 36 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # ManageIQ::Providers::Amazon 2 | 3 | [![CI](https://github.com/ManageIQ/manageiq-providers-amazon/actions/workflows/ci.yaml/badge.svg?branch=master)](https://github.com/ManageIQ/manageiq-providers-amazon/actions/workflows/ci.yaml) 4 | 5 | [![Chat](https://badges.gitter.im/Join%20Chat.svg)](https://gitter.im/ManageIQ/manageiq-providers-amazon?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge) 6 | 7 | ManageIQ plugin for the Amazon provider. 8 | 9 | ## Development 10 | 11 | See the section on plugins in the [ManageIQ Developer Setup](http://manageiq.org/docs/guides/developer_setup/plugins) 12 | 13 | For quick local setup run `bin/setup`, which will clone the core ManageIQ repository under the *spec* directory and setup necessary config files. If you have already cloned it, you can run `bin/update` to bring the core ManageIQ code up to date. 14 | 15 | ## License 16 | 17 | The gem is available as open source under the terms of the [Apache License 2.0](http://www.apache.org/licenses/LICENSE-2.0). 18 | 19 | ## Contributing 20 | 21 | 1. Fork it 22 | 2. Create your feature branch (`git checkout -b my-new-feature`) 23 | 3. Commit your changes (`git commit -am 'Add some feature'`) 24 | 4. Push to the branch (`git push origin my-new-feature`) 25 | 5. Create new Pull Request 26 | -------------------------------------------------------------------------------- /app/models/manageiq/providers/amazon/network_manager.rb: -------------------------------------------------------------------------------- 1 | class ManageIQ::Providers::Amazon::NetworkManager < ManageIQ::Providers::NetworkManager 2 | include ManageIQ::Providers::Amazon::ManagerMixin 3 | 4 | # Auth and endpoints delegations, editing of this type of manager must be disabled 5 | delegate :authentication_check, 6 | :authentication_status, 7 | :authentication_status_ok?, 8 | :authentications, 9 | :authentication_for_summary, 10 | :connect, 11 | :verify_credentials, 12 | :with_provider_connection, 13 | :address, 14 | :ip_address, 15 | :hostname, 16 | :default_endpoint, 17 | :endpoints, 18 | :to => :parent_manager, 19 | :allow_nil => true 20 | 21 | class << self 22 | delegate :refresh_ems, :to => ManageIQ::Providers::Amazon::CloudManager 23 | end 24 | 25 | def self.ems_type 26 | @ems_type ||= "ec2_network".freeze 27 | end 28 | 29 | def self.description 30 | @description ||= "Amazon EC2 Network".freeze 31 | end 32 | 33 | def self.hostname_required? 34 | false 35 | end 36 | 37 | def self.display_name(number = 1) 38 | n_('Network Provider (Amazon)', 'Network Providers (Amazon)', number) 39 | end 40 | end 41 | -------------------------------------------------------------------------------- /app/models/manageiq/providers/amazon/instance_types.rb: -------------------------------------------------------------------------------- 1 | # frozen_string_literal: true 2 | 3 | module ManageIQ::Providers::Amazon::InstanceTypes 4 | ALL_TYPES = YAML.load_file( 5 | ManageIQ::Providers::Amazon::Engine.root.join('db/fixtures/aws_instance_types.yml') 6 | ) 7 | 8 | # Types that are still advertised, but not recommended for new instances. 9 | DEPRECATED_TYPES = ALL_TYPES.select do |_, attrs| 10 | attrs[:deprecated] && !attrs[:discontinued] 11 | end.to_h 12 | 13 | # Types that are no longer advertised 14 | DISCONTINUED_TYPES = ALL_TYPES.select do |_, attrs| 15 | !attrs[:deprecated] && attrs[:discontinued] 16 | end.to_h 17 | 18 | # Types that are currently advertised for use 19 | AVAILABLE_TYPES = ALL_TYPES.except(*(DEPRECATED_TYPES.keys + DISCONTINUED_TYPES.keys)) 20 | 21 | def self.instance_types 22 | additional = Hash(Settings.ems.ems_amazon.try!(:additional_instance_types)).stringify_keys 23 | disabled = Array(Settings.ems.ems_amazon.try!(:disabled_instance_types)) 24 | 25 | instance_types = ALL_TYPES.merge(additional).except(*disabled) 26 | instance_types.default = ALL_TYPES["unknown"] 27 | instance_types 28 | end 29 | 30 | def self.all 31 | instance_types.values 32 | end 33 | 34 | def self.names 35 | instance_types.keys 36 | end 37 | end 38 | -------------------------------------------------------------------------------- /lib/tasks_private/database_types.rake: -------------------------------------------------------------------------------- 1 | namespace 'aws:extract' do 2 | desc 'Get / refresh database_types' 3 | task :database_types do 4 | require 'open-uri' 5 | 6 | instances = URI.open("https://instances.vantage.sh/rds/instances.json") do |io| 7 | JSON.parse(io.read) 8 | end 9 | 10 | results = instances.map do |instance| 11 | network_performance = instance["networkPerformance"] 12 | 13 | network_performance = network_performance.match?(/(\d+ [Gg]igabit)|(\d+ Gbps)|(\d+ Mbps)/) ? :very_high : network_performance.downcase.tr(' ', '_').to_sym if network_performance 14 | 15 | result = { 16 | :name => instance["instanceType"], 17 | :family => instance["instanceFamily"], 18 | :vcpu => instance["vcpu"].to_i, 19 | :memory => instance["memory"].to_f * 1.gigabyte, 20 | :ebs_optimized => instance["dedicatedEbsThroughput"].present?, 21 | :deprecated => instance["currentGeneration"] != "Yes", 22 | :network_performance => network_performance 23 | } 24 | 25 | [result[:name], result.sort.to_h] 26 | end.to_h 27 | 28 | File.write(ManageIQ::Providers::Amazon::Engine.root.join("db/fixtures/aws_database_types.yml"), results.sort.to_h.to_yaml) 29 | end 30 | end 31 | -------------------------------------------------------------------------------- /.github/workflows/ci.yaml: -------------------------------------------------------------------------------- 1 | name: CI 2 | on: 3 | pull_request: 4 | push: 5 | branches-ignore: 6 | - dependabot/* 7 | - renovate/* 8 | schedule: 9 | - cron: 0 0 * * * 10 | workflow_dispatch: 11 | concurrency: 12 | group: "${{ github.workflow }}-${{ github.ref }}" 13 | cancel-in-progress: true 14 | permissions: 15 | contents: read 16 | jobs: 17 | ci: 18 | runs-on: ubuntu-latest 19 | strategy: 20 | matrix: 21 | ruby-version: 22 | - '3.3' 23 | services: 24 | postgres: 25 | image: manageiq/postgresql:13 26 | env: 27 | POSTGRESQL_USER: root 28 | POSTGRESQL_PASSWORD: smartvm 29 | POSTGRESQL_DATABASE: vmdb_test 30 | options: "--health-cmd pg_isready --health-interval 2s --health-timeout 5s --health-retries 5" 31 | ports: 32 | - 5432:5432 33 | env: 34 | PGHOST: localhost 35 | PGPASSWORD: smartvm 36 | steps: 37 | - uses: actions/checkout@v6 38 | - name: Set up system 39 | run: bin/before_install 40 | - name: Set up Ruby 41 | uses: ruby/setup-ruby@v1 42 | with: 43 | ruby-version: "${{ matrix.ruby-version }}" 44 | bundler-cache: true 45 | timeout-minutes: 30 46 | - name: Prepare tests 47 | run: bin/setup 48 | - name: Run tests 49 | run: bundle exec rake 50 | -------------------------------------------------------------------------------- /lib/tasks_private/release.rake: -------------------------------------------------------------------------------- 1 | namespace :release do 2 | desc "Tasks to run on a new branch when a new branch is created" 3 | task :new_branch do 4 | require 'pathname' 5 | 6 | branch = ENV["RELEASE_BRANCH"] 7 | if branch.nil? || branch.empty? 8 | STDERR.puts "ERROR: You must set the env var RELEASE_BRANCH to the proper value." 9 | exit 1 10 | end 11 | 12 | current_branch = `git rev-parse --abbrev-ref HEAD`.chomp 13 | if current_branch == "master" 14 | STDERR.puts "ERROR: You cannot do new branch tasks from the master branch." 15 | exit 1 16 | end 17 | 18 | root = Pathname.new(__dir__).join("../..") 19 | 20 | # Modify settings.yml 21 | settings = root.join("config", "settings.yml") 22 | content = settings.read 23 | settings.write(content.gsub(%r{(:docker_image: manageiq/amazon-smartstate:).+$}, "\\1latest-#{branch}")) 24 | 25 | # Commit 26 | files_to_update = [settings] 27 | exit $?.exitstatus unless system("git add #{files_to_update.join(" ")}") 28 | exit $?.exitstatus unless system("git commit -m 'Changes for new branch #{branch}'") 29 | 30 | puts 31 | puts "The commit on #{current_branch} has been created." 32 | puts "Run the following to push to the upstream remote:" 33 | puts 34 | puts "\tgit push upstream #{current_branch}" 35 | puts 36 | end 37 | end 38 | -------------------------------------------------------------------------------- /spec/models/manageiq/providers/amazon/cloud_manager/event_catcher/cloud_watch/EC2_Instance_State_change_Notification_stopping.json: -------------------------------------------------------------------------------- 1 | { 2 | "Type" : "Notification", 3 | "MessageId" : "688a91c0-af72-50d1-9805-c3ea89909541", 4 | "TopicArn" : "arn:aws:sns:us-east-1:200278856672:AWSConfig_topic", 5 | "Message" : "{\"version\":\"0\",\"id\":\"5c188d83-385b-9b5b-89fa-cd222339f096\",\"detail-type\":\"EC2 Instance State-change Notification\",\"source\":\"aws.ec2\",\"account\":\"200278856672\",\"time\":\"2017-09-06T16:38:57Z\",\"region\":\"us-east-1\",\"resources\":[\"arn:aws:ec2:us-east-1:200278856672:instance/i-02975d4eb8e53bafd\"],\"detail\":{\"instance-id\":\"i-02975d4eb8e53bafd\",\"state\":\"stopping\"}}", 6 | "Timestamp" : "2017-09-06T16:38:58.203Z", 7 | "SignatureVersion" : "1", 8 | "Signature" : "VuuCEPOkYt2cGZ3hzLFzcDxDBxrwP465X9x41ZJhSVdsNmboT2Hge7sXuqe5GCOltdFtbgquZrDzYgwZcfNlyK9Mmk3FZb2KdDOY0sijTEhho3pzeborz/FyfvQ3m0YHnBnCz9vyUYPUuQCXpbP7XmmTqxHyh7ApThxpJ+2OMwmWV6x+ehG5O6iQYT/eRjPFCIL6p5Zsm9bWArlDTqRSUsDl38Dc93gjyVnycpqrJslxNxRxWmS843cMEoulwZanlXuyfSMLrBe6/ss/d0NJYyHkqethOGYRmqyTu/u6BsB+Ejk/jCpNVf/0SIHtRtmDlC48u6lJ3STjTzxhGnqw0A==", 9 | "SigningCertURL" : "https://sns.us-east-1.amazonaws.com/SimpleNotificationService-433026a4050d206028891664da859041.pem", 10 | "UnsubscribeURL" : "https://sns.us-east-1.amazonaws.com/?Action=Unsubscribe&SubscriptionArn=arn:aws:sns:us-east-1:200278856672:AWSConfig_topic:9fefb8fe-9bd0-4624-9281-a279994ed2b9" 11 | } -------------------------------------------------------------------------------- /spec/models/manageiq/providers/amazon/cloud_manager/event_catcher/cloud_watch/EC2_Instance_State_change_Notification_pending.json: -------------------------------------------------------------------------------- 1 | { 2 | "Type" : "Notification", 3 | "MessageId" : "4dafbb73-41f9-53a9-b455-ea79f4678cdb", 4 | "TopicArn" : "arn:aws:sns:us-east-1:200278856672:AWSConfig_topic", 5 | "Message" : "{\"version\":\"0\",\"id\":\"f6d70449-ef3a-4276-8af4-f324e2aaf808\",\"detail-type\":\"EC2 Instance State-change Notification\",\"source\":\"aws.ec2\",\"account\":\"200278856672\",\"time\":\"2017-01-31T15:55:09Z\",\"region\":\"us-east-1\",\"resources\":[\"arn:aws:ec2:us-east-1:200278856672:instance/i-0aeefa44d61669849\"],\"detail\":{\"instance-id\":\"i-0aeefa44d61669849\",\"state\":\"pending\"}}", 6 | "Timestamp" : "2017-01-31T15:55:10.938Z", 7 | "SignatureVersion" : "1", 8 | "Signature" : "cPngeMxZUzp5IHPoCzMxf+iaFXt/r/lcmGgEwD0bEwWT4+J1iezE79ZH6+ZXNTWHk8A11yAp8Rt9qBKeAh+MJgIwGpRQ+hmvzxvvQ+AnJn6m+H5KEO9mI1hOQgrIQishZaIUx3qexnf9R0cx7I4pqbc0w3plgr/5kvzgaVxOq6L4ZlNnf0f539iHFv0lcX4UFOhEAF6nJOhKCQ8L7OYBRO/n0vOQ3jJa5vqEAssncrLNcs0PJXfJQjEF576xMcrLIals3JQ3aoP2z8Y6HgZo/ZIvkTb6kkBXnd8S+hRYBIzf1V9a53049f2yzSIPnGp8qFmpp1dWUdYzY241DayG0g==", 9 | "SigningCertURL" : "https://sns.us-east-1.amazonaws.com/SimpleNotificationService-b95095beb82e8f6a046b3aafc7f4149a.pem", 10 | "UnsubscribeURL" : "https://sns.us-east-1.amazonaws.com/?Action=Unsubscribe&SubscriptionArn=arn:aws:sns:us-east-1:200278856672:AWSConfig_topic:001cf2a7-34a1-4ec0-b52f-e443bc5f52f8" 11 | } 12 | -------------------------------------------------------------------------------- /spec/models/manageiq/providers/amazon/cloud_manager/event_catcher/cloud_watch/EC2_Instance_State_change_Notification_running.json: -------------------------------------------------------------------------------- 1 | { 2 | "Type" : "Notification", 3 | "MessageId" : "3ddd299e-6d76-51f5-bd11-7894d8cde926", 4 | "TopicArn" : "arn:aws:sns:us-east-1:200278856672:AWSConfig_topic", 5 | "Message" : "{\"version\":\"0\",\"id\":\"65670a99-8d49-4031-9973-00efd2bc5557\",\"detail-type\":\"EC2 Instance State-change Notification\",\"source\":\"aws.ec2\",\"account\":\"200278856672\",\"time\":\"2017-01-31T15:55:38Z\",\"region\":\"us-east-1\",\"resources\":[\"arn:aws:ec2:us-east-1:200278856672:instance/i-0aeefa44d61669849\"],\"detail\":{\"instance-id\":\"i-0aeefa44d61669849\",\"state\":\"running\"}}", 6 | "Timestamp" : "2017-01-31T15:55:39.260Z", 7 | "SignatureVersion" : "1", 8 | "Signature" : "Ua49CTNIBx3gntLCwTMWD5ZmXbrVDyvQwrZbDlcda6/Frt4JKY6pvdfvETEsT6r0kS8nAoL+mHwmcNqKln3I85u52H1A0Z952piP67FvIaIiPMPXSg4oRvRfiDDS4JJNhbsxCG6+haYwG/fAJFdHfWgW6QYJKwDqTop9+D779ETHjGCLfoQOxWA3cKunm2Nu1FZPpxPY4CLaO+7TBzMtI8LiXP0MNNodHiFGRDEFZ90G+tcF2oVnAqOGSkEIW0PBJuSeb1FK6nRKy3h97zpT9qXMYtDYluySaBF4NOr51eK+Ds6+Au9Zb2xPZFsWNUdsLN0p0TnxVAzcuB4hNBJ58w==", 9 | "SigningCertURL" : "https://sns.us-east-1.amazonaws.com/SimpleNotificationService-b95095beb82e8f6a046b3aafc7f4149a.pem", 10 | "UnsubscribeURL" : "https://sns.us-east-1.amazonaws.com/?Action=Unsubscribe&SubscriptionArn=arn:aws:sns:us-east-1:200278856672:AWSConfig_topic:001cf2a7-34a1-4ec0-b52f-e443bc5f52f8" 11 | } 12 | -------------------------------------------------------------------------------- /spec/models/manageiq/providers/amazon/cloud_manager/event_catcher/cloud_watch/EC2_Instance_State_change_Notification_stopped.json: -------------------------------------------------------------------------------- 1 | { 2 | "Type" : "Notification", 3 | "MessageId" : "12e08214-c0ce-53bd-a025-d31e75cc86a6", 4 | "TopicArn" : "arn:aws:sns:us-east-1:200278856672:AWSConfig_topic", 5 | "Message" : "{\"version\":\"0\",\"id\":\"33a2f598-657d-4e11-bd94-c45de5eaa626\",\"detail-type\":\"EC2 Instance State-change Notification\",\"source\":\"aws.ec2\",\"account\":\"200278856672\",\"time\":\"2017-01-31T15:52:32Z\",\"region\":\"us-east-1\",\"resources\":[\"arn:aws:ec2:us-east-1:200278856672:instance/i-0aeefa44d61669849\"],\"detail\":{\"instance-id\":\"i-0aeefa44d61669849\",\"state\":\"stopped\"}}", 6 | "Timestamp" : "2017-01-31T15:52:34.208Z", 7 | "SignatureVersion" : "1", 8 | "Signature" : "JmPsgmLwdyZ9RxKX88bZUwk8kTLJTzpR99VNiznHe9QWsxEmnR+vCyo+Mwh02BESpUfZkuqnYbL2jdftqLhZuPL+go/2/u9S7Qo4szXpxOZZilxq/ZjCsWXl8oODGplEGTQiIUjzrHDCnICy5j8koBQFaIwRsCZ5OYd/31pV5YNsEL5j+rHmPS8YHYv2npgoo0ckNsqBuQaUeiFaV0c3GWwMsIy+udR17SPIGaGrWsNA1tnrAnW1vSi9BE4zpjSdza/qAfQW4o6pc+nbeTJNMFpOe4P/0NV4sxED3j3qNveRuzcY73ZSODY5887ZN/Xwr0ErJ2beifKrE0EEB/4m9w==", 9 | "SigningCertURL" : "https://sns.us-east-1.amazonaws.com/SimpleNotificationService-b95095beb82e8f6a046b3aafc7f4149a.pem", 10 | "UnsubscribeURL" : "https://sns.us-east-1.amazonaws.com/?Action=Unsubscribe&SubscriptionArn=arn:aws:sns:us-east-1:200278856672:AWSConfig_topic:001cf2a7-34a1-4ec0-b52f-e443bc5f52f8" 11 | } 12 | -------------------------------------------------------------------------------- /spec/models/manageiq/providers/amazon/cloud_manager/event_catcher/cloud_watch/EC2_Instance_State_change_Notification_terminated.json: -------------------------------------------------------------------------------- 1 | { 2 | "Type" : "Notification", 3 | "MessageId" : "49aa4ab5-2c2d-5255-b15c-189e1d61d619", 4 | "TopicArn" : "arn:aws:sns:us-east-1:200278856672:AWSConfig_topic", 5 | "Message" : "{\"version\":\"0\",\"id\":\"fe86da29-830c-6253-1e2d-b1ee491f14dc\",\"detail-type\":\"EC2 Instance State-change Notification\",\"source\":\"aws.ec2\",\"account\":\"200278856672\",\"time\":\"2017-09-07T11:35:39Z\",\"region\":\"us-east-1\",\"resources\":[\"arn:aws:ec2:us-east-1:200278856672:instance/i-04863b664ebf1facf\"],\"detail\":{\"instance-id\":\"i-04863b664ebf1facf\",\"state\":\"terminated\"}}", 6 | "Timestamp" : "2017-09-07T11:35:40.528Z", 7 | "SignatureVersion" : "1", 8 | "Signature" : "M43kZsjb4vV1sYKXVsyqTYvJpiLLLuyvqbKkpJYoqknysB8+sFA3reMzzIOp9nbTkK0nVk0a/J/bPpvj8AMIdWnA53hA1LShEaAbIv/I0yt3qDDkzpbv5NyHdTzrTqMLyWlpECasZZwJ0vy6JRAlwDluAGPYXENnMGU80433CyW3sgzCPzyG7rY5wCpav7Zx3VfDS41hxHYWhy62MROPP8fwsLZzKlvB/1JFPP6f7zo5dIUdcFWyvywj/LV+snni26832u/u5mu27p5pk0D2FYXjlp8tFiO8l7DzRju2wqv0NB7J/8SYjVi07QLAmkyh5oWR73fNVJnldgBQ9pOuog==", 9 | "SigningCertURL" : "https://sns.us-east-1.amazonaws.com/SimpleNotificationService-433026a4050d206028891664da859041.pem", 10 | "UnsubscribeURL" : "https://sns.us-east-1.amazonaws.com/?Action=Unsubscribe&SubscriptionArn=arn:aws:sns:us-east-1:200278856672:AWSConfig_topic:61d4ffc8-72e3-41a7-b28d-86e700532cd1" 11 | } -------------------------------------------------------------------------------- /spec/models/manageiq/providers/amazon/cloud_manager/event_catcher/cloud_watch/EC2_Instance_State_change_Notification_shutting-down.json: -------------------------------------------------------------------------------- 1 | { 2 | "Type" : "Notification", 3 | "MessageId" : "741d3115-a3bd-5d71-ab03-633e92941845", 4 | "TopicArn" : "arn:aws:sns:us-east-1:200278856672:AWSConfig_topic", 5 | "Message" : "{\"version\":\"0\",\"id\":\"2867aa6c-b98e-735d-c257-66d8aa89eb72\",\"detail-type\":\"EC2 Instance State-change Notification\",\"source\":\"aws.ec2\",\"account\":\"200278856672\",\"time\":\"2017-09-07T11:35:04Z\",\"region\":\"us-east-1\",\"resources\":[\"arn:aws:ec2:us-east-1:200278856672:instance/i-04863b664ebf1facf\"],\"detail\":{\"instance-id\":\"i-04863b664ebf1facf\",\"state\":\"shutting-down\"}}", 6 | "Timestamp" : "2017-09-07T11:35:05.853Z", 7 | "SignatureVersion" : "1", 8 | "Signature" : "O5aV7LgsrgebU6VCjQdwkM1iLjrFaFb3yIkZXlRNGBm06pdGE6TljA8YDisRTVSi5AeRHsrTgJhWrlkrLaD+oN3a92/B5qu3grs7hICYoZLzBa0IuqZjxCDDGJ5Kpts22AzkXo/H4NcmwUSa9/JIatqAhJr6FTkZijZwGemKsl6cn8MHHxCZrx1btXGtrfammsBQfJwmg7W2qH1wK2e7ch97o/ihCqvV92IuoE6Af0RByAhu/ES0ULNKTEGHfVUKWN07tFWla+cgmrqe7do0NWlpa3BEEcdmgaoNnGHOnjeqitMaUDQDsAD/Nj9R9K1BIapwOwCVqvvPSK6g3gXS+w==", 9 | "SigningCertURL" : "https://sns.us-east-1.amazonaws.com/SimpleNotificationService-433026a4050d206028891664da859041.pem", 10 | "UnsubscribeURL" : "https://sns.us-east-1.amazonaws.com/?Action=Unsubscribe&SubscriptionArn=arn:aws:sns:us-east-1:200278856672:AWSConfig_topic:61d4ffc8-72e3-41a7-b28d-86e700532cd1" 11 | } -------------------------------------------------------------------------------- /app/models/manageiq/providers/amazon/inventory/collector/storage_manager/s3.rb: -------------------------------------------------------------------------------- 1 | class ManageIQ::Providers::Amazon::Inventory::Collector::StorageManager::S3 < 2 | ManageIQ::Providers::Amazon::Inventory::Collector 3 | 4 | def cloud_object_store_containers 5 | hash_collection.new(aws_s3.client.list_buckets.flat_map(&:buckets)) 6 | end 7 | 8 | def cloud_object_store_objects(options = {}) 9 | options[:token] ||= nil 10 | # S3 bucket accessible only for API client with same region 11 | regional_client = aws_s3_regional(options[:region]).client 12 | response = regional_client.list_objects_v2( 13 | :bucket => options[:bucket], 14 | :continuation_token => options[:token] 15 | ) 16 | token = response.next_continuation_token if response.is_truncated 17 | return hash_collection.new(response.contents), token 18 | rescue => e 19 | log_header = "MIQ(#{self.class.name}.#{__method__}) Collecting data for EMS name: [#{manager.name}] id: [#{manager.id}]" 20 | $aws_log.warn("#{log_header}: Unable to collect S3 objects in a bucket #{options[:bucket]}, Message: #{e.message}") 21 | $aws_log.warn(e.backtrace.join("\n")) 22 | return [], nil 23 | end 24 | 25 | private 26 | 27 | def aws_s3_regional(region) 28 | if !region || region == manager.provider_region 29 | aws_s3 30 | else 31 | @regional_resources ||= {} 32 | @regional_resources[region] ||= manager.connect(:service => :S3, :region => region) 33 | end 34 | end 35 | end 36 | -------------------------------------------------------------------------------- /app/models/manageiq/providers/amazon/storage_manager/ebs.rb: -------------------------------------------------------------------------------- 1 | class ManageIQ::Providers::Amazon::StorageManager::Ebs < ManageIQ::Providers::StorageManager 2 | include ManageIQ::Providers::Amazon::ManagerMixin 3 | 4 | delegate :availability_zones, 5 | :authentication_check, 6 | :authentication_status, 7 | :authentications, 8 | :authentication_for_summary, 9 | :connect, 10 | :verify_credentials, 11 | :with_provider_connection, 12 | :address, 13 | :ip_address, 14 | :hostname, 15 | :default_endpoint, 16 | :endpoints, 17 | :to => :parent_manager, 18 | :allow_nil => true 19 | 20 | virtual_has_many :cloud_tenants, :through => :parent_manager 21 | virtual_has_many :volume_availability_zones, :through => :parent_manager, :class_name => "AvailabilityZone" 22 | 23 | supports :block_storage 24 | supports :cloud_volume 25 | supports :cloud_volume_create 26 | 27 | class << self 28 | delegate :refresh_ems, :to => ManageIQ::Providers::Amazon::CloudManager 29 | end 30 | 31 | def self.ems_type 32 | @ems_type ||= "ec2_ebs_storage".freeze 33 | end 34 | 35 | def self.description 36 | @description ||= "Amazon EBS".freeze 37 | end 38 | 39 | def self.hostname_required? 40 | false 41 | end 42 | 43 | def self.display_name(number = 1) 44 | n_('Elastic Block Storage Manager (Amazon)', 'Elastic Block Storage Managers (Amazon)', number) 45 | end 46 | end 47 | -------------------------------------------------------------------------------- /app/models/manageiq/providers/amazon/cloud_manager/event_catcher/runner.rb: -------------------------------------------------------------------------------- 1 | class ManageIQ::Providers::Amazon::CloudManager::EventCatcher::Runner < ManageIQ::Providers::BaseManager::EventCatcher::Runner 2 | def stop_event_monitor 3 | @event_monitor_handle.try!(:stop) 4 | ensure 5 | reset_event_monitor_handle 6 | end 7 | 8 | def monitor_events 9 | event_monitor_running 10 | event_monitor_handle.poll do |event| 11 | _log.debug { "#{log_prefix} Received event #{event["messageId"]}" } 12 | @queue.enq event 13 | end 14 | ensure 15 | stop_event_monitor 16 | end 17 | 18 | def process_event(event) 19 | if filtered?(event) 20 | _log.info "#{log_prefix} Skipping filtered Amazon event [#{event["messageId"]}]" 21 | else 22 | _log.info "#{log_prefix} Caught event [#{event["messageId"]}]" 23 | event_hash = ManageIQ::Providers::Amazon::CloudManager::EventParser.event_to_hash(event, @cfg[:ems_id]) 24 | EmsEvent.add_queue('add', @cfg[:ems_id], event_hash) 25 | end 26 | end 27 | 28 | private 29 | 30 | def filtered?(event) 31 | @ems.filtered_event_names.include?(event["eventType"]) 32 | end 33 | 34 | def event_monitor_handle 35 | @event_monitor_handle ||= begin 36 | stream = ManageIQ::Providers::Amazon::CloudManager::EventCatcher::Stream.new(@ems) 37 | stream.before_poll do 38 | heartbeat 39 | end 40 | stream 41 | end 42 | end 43 | 44 | def reset_event_monitor_handle 45 | @event_monitor_handle = nil 46 | end 47 | end 48 | -------------------------------------------------------------------------------- /lib/tasks_private/regions.rake: -------------------------------------------------------------------------------- 1 | # frozen_string_literal: true 2 | 3 | namespace 'aws:extract' do 4 | desc 'Get / renew regions list from online source of AWS gem' 5 | task :regions do 6 | require 'uri' 7 | require 'set' 8 | require 'json' 9 | require 'yaml' 10 | require 'net/http' 11 | 12 | engine_root = ManageIQ::Providers::Amazon::Engine.root 13 | 14 | # path valid for aws-sdk v3 gem's source 15 | uri = URI('https://raw.githubusercontent.com/aws/aws-sdk-ruby/master/gems/aws-partitions/partitions.json') 16 | out_file = engine_root.join('config/regions.yml') 17 | service_name = 'ec2' 18 | 19 | default_partition_name = 'aws' 20 | 21 | response = Net::HTTP.get_response(uri) 22 | data = JSON.parse(response.body) 23 | 24 | regions = data['partitions'].each_with_object({}) do |partition, memo| 25 | dns_suffix = partition['dnsSuffix'] 26 | regions_info = partition['regions'] 27 | 28 | endpoints = partition.dig("services", service_name, "endpoints") 29 | next if endpoints.nil? 30 | 31 | endpoints.each_key do |region_name| 32 | raise "Repetitive region name: #{region_name}" if memo.key?(region_name) 33 | 34 | memo[region_name] = { 35 | :name => region_name, 36 | :hostname => "#{service_name}.#{region_name}.#{dns_suffix}", 37 | :description => regions_info.dig(region_name, "description") || region_name 38 | }.freeze 39 | end 40 | end 41 | 42 | out_file.write(regions.to_yaml) 43 | end 44 | end 45 | -------------------------------------------------------------------------------- /spec/models/manageiq/providers/amazon/storage_manager/ebs/cloud_volume_snapshot_spec.rb: -------------------------------------------------------------------------------- 1 | require_relative "../../aws_helper" 2 | 3 | describe ManageIQ::Providers::Amazon::StorageManager::Ebs::CloudVolumeSnapshot do 4 | before { NotificationType.seed } 5 | let(:amazon) { FactoryBot.create(:ems_amazon_with_authentication) } 6 | let(:ems) { FactoryBot.create(:ems_amazon_ebs, :parent_ems_id => amazon.id) } 7 | let(:cloud_volume_snapshot) { FactoryBot.create(:cloud_volume_snapshot_amazon, :ext_management_system => ems, :ems_ref => "snapshot_1") } 8 | 9 | describe "cloud volume operations" do 10 | context "#delete_snapshot" do 11 | it "deletes the cloud volume snapshot" do 12 | stubbed_responses = { :ec2 => { :delete_snapshot => {} } } 13 | allow(EmsRefresh).to receive(:queue_refresh) 14 | 15 | with_aws_stubbed(stubbed_responses) do 16 | expect { cloud_volume_snapshot.delete_snapshot }.to_not raise_error 17 | expect(cloud_volume_snapshot.status).to eq('deleting') 18 | expect(EmsRefresh).to have_received(:queue_refresh) 19 | end 20 | end 21 | 22 | it "catches error from the provider" do 23 | stubbed_responses = { 24 | :ec2 => { 25 | :delete_snapshot => "UnauthorizedOperation" 26 | } 27 | } 28 | 29 | with_aws_stubbed(stubbed_responses) do 30 | expect do 31 | cloud_volume_snapshot.delete_snapshot 32 | end.to raise_error(MiqException::MiqVolumeSnapshotDeleteError) 33 | end 34 | end 35 | end 36 | end 37 | end 38 | -------------------------------------------------------------------------------- /app/models/manageiq/providers/amazon/inventory/collector/network_manager.rb: -------------------------------------------------------------------------------- 1 | class ManageIQ::Providers::Amazon::Inventory::Collector::NetworkManager < ManageIQ::Providers::Amazon::Inventory::Collector 2 | def cloud_networks 3 | hash_collection.new(aws_ec2.client.describe_vpcs.flat_map(&:vpcs)) 4 | end 5 | 6 | def cloud_subnets 7 | hash_collection.new(aws_ec2.client.describe_subnets.flat_map(&:subnets)) 8 | end 9 | 10 | def security_groups 11 | hash_collection.new(aws_ec2.security_groups) 12 | end 13 | 14 | def network_ports 15 | hash_collection.new(aws_ec2.client.describe_network_interfaces.flat_map(&:network_interfaces)) 16 | end 17 | 18 | def load_balancers 19 | hash_collection.new(aws_elb.client.describe_load_balancers.flat_map(&:load_balancer_descriptions)) 20 | rescue 21 | # ELB is an optional service and failures shouldn't prevent the rest 22 | # of the refresh from succeeding 23 | [] 24 | end 25 | 26 | def health_check_members(load_balancer_name) 27 | hash_collection.new(aws_elb.client.describe_instance_health( 28 | :load_balancer_name => load_balancer_name 29 | ).flat_map(&:instance_states)) 30 | rescue 31 | # ELB is an optional service and failures shouldn't prevent the rest 32 | # of the refresh from succeeding 33 | [] 34 | end 35 | 36 | def floating_ips 37 | hash_collection.new(aws_ec2.client.describe_addresses.flat_map(&:addresses)) 38 | end 39 | 40 | def instances 41 | hash_collection.new(aws_ec2.instances) 42 | end 43 | 44 | def network_routers 45 | hash_collection.new(aws_ec2.route_tables) 46 | end 47 | end 48 | -------------------------------------------------------------------------------- /app/models/manageiq/providers/amazon/inventory/persister/definitions/cloud_collections.rb: -------------------------------------------------------------------------------- 1 | module ManageIQ::Providers::Amazon::Inventory::Persister::Definitions::CloudCollections 2 | extend ActiveSupport::Concern 3 | 4 | def initialize_cloud_inventory_collections 5 | %i(auth_key_pairs 6 | availability_zones 7 | disks 8 | flavors 9 | hardwares 10 | networks 11 | operating_systems 12 | vm_and_template_labels 13 | vm_and_template_taggings 14 | vms 15 | miq_templates 16 | cloud_databases 17 | service_instances 18 | service_offerings 19 | service_parameters_sets).each do |name| 20 | 21 | add_cloud_collection(name) 22 | end 23 | 24 | add_cloud_database_flavors 25 | 26 | %i(orchestration_stacks 27 | orchestration_stacks_resources 28 | orchestration_stacks_outputs 29 | orchestration_stacks_parameters 30 | orchestration_templates).each do |name| 31 | 32 | add_cloud_collection(name) 33 | end 34 | 35 | # Custom processing of Ancestry 36 | %i(vm_and_miq_template_ancestry 37 | orchestration_stack_ancestry).each do |name| 38 | 39 | add_cloud_collection(name) 40 | end 41 | end 42 | 43 | # ------ IC provider specific definitions ------------------------- 44 | 45 | def add_cloud_database_flavors(extra_properties = {}) 46 | add_cloud_collection(:cloud_database_flavors, extra_properties) do |builder| 47 | # Model we take just from a DB, there is no flavors API 48 | builder.add_properties(:strategy => :local_db_find_references) if targeted? 49 | end 50 | end 51 | end 52 | -------------------------------------------------------------------------------- /spec/models/manageiq/providers/amazon/cloud_manager/event_catcher/config/EBS_Snapshot_Notification.json: -------------------------------------------------------------------------------- 1 | { 2 | "Type" : "Notification", 3 | "MessageId" : "38a41df6-c96f-52fe-86b5-4e93f8ca43e1", 4 | "TopicArn" : "arn:aws:sns:eu-central-1:200278856672:AWSConfig_topic", 5 | "Message" : "{\"version\":\"0\",\"id\":\"29df4485-86c1-db72-78d1-e0ecdbdd3021\",\"detail-type\":\"EBS Snapshot Notification\",\"source\":\"aws.ec2\",\"account\":\"200278856672\",\"time\":\"2018-05-03T15:48:52Z\",\"region\":\"eu-central-1\",\"resources\":[\"arn:aws:ec2::eu-central-1:snapshot/snap-0089df02c4373d7a0\"],\"detail\":{\"event\":\"createSnapshot\",\"result\":\"succeeded\",\"cause\":\"\",\"request-id\":\"\",\"snapshot_id\":\"arn:aws:ec2::eu-central-1:snapshot/snap-0089df02c4373d7a0\",\"source\":\"arn:aws:ec2::eu-central-1:volume/vol-006e52cf74d8f3e7c\",\"startTime\":\"2018-05-03T15:48:26.000Z\",\"endTime\":\"2018-05-03T15:48:52.883Z\"}}", 6 | "Timestamp" : "2018-05-03T15:48:53.716Z", 7 | "SignatureVersion" : "1", 8 | "Signature" : "A1pihqCuih3CEAqzej6OZLjUQw3UVjmvucSKZu90Rqak/pKH1gbiLOzz5hEEm6scFt/RAhSZ/tQpjs5tWyKylDWgawUFr9KZlir5uqZnjAA/8PVdtSG4h7Rz6mM6T9aZliXDdx/NfrOX6rgDM6PomzqDkAAM1M2bQkq6wLRr+OUjKjutJP0otLNwl834QHRNOf9SCdBuCK7I6Rr0LtS304jo/grcodc8DROMfunihjSItbamtEudSSS1DlcQBbcc/me7r1u3nzLHxFXyijUxTr4lqPqPE7Do51/TMcT9QzVyMyl3TNfemR+7cwiPPa4fdmaxZ8ySVkn9s/1nVhsIBg==", 9 | "SigningCertURL" : "https://sns.eu-central-1.amazonaws.com/SimpleNotificationService-ac565b8b1a6c5d002d285f9598aa1d9b.pem", 10 | "UnsubscribeURL" : "https://sns.eu-central-1.amazonaws.com/?Action=Unsubscribe&SubscriptionArn=arn:aws:sns:eu-central-1:200278856672:AWSConfig_topic:fb3aae8a-78bd-45c2-aeb7-75097bd230d9" 11 | } 12 | -------------------------------------------------------------------------------- /.github/workflows/instance_types.yaml: -------------------------------------------------------------------------------- 1 | name: Update Instance Types 2 | on: 3 | schedule: 4 | - cron: 0 0 * * 0 5 | workflow_dispatch: 6 | concurrency: 7 | group: "${{ github.workflow }}-${{ github.ref }}" 8 | cancel-in-progress: true 9 | permissions: 10 | contents: read 11 | jobs: 12 | update-instance-types: 13 | runs-on: ubuntu-latest 14 | steps: 15 | - uses: actions/checkout@v6 16 | - name: Set up system 17 | run: bin/before_install 18 | - name: Set up Ruby 19 | uses: ruby/setup-ruby@v1 20 | with: 21 | ruby-version: '3.3' 22 | bundler-cache: true 23 | - name: Update regions 24 | run: bundle exec rake aws:extract:regions 25 | - name: Update ec2 instance types 26 | run: bundle exec rake aws:extract:instance_types 27 | - name: Update rds db instance types 28 | run: bundle exec rake aws:extract:database_types 29 | - name: Create Pull Request 30 | uses: peter-evans/create-pull-request@v8 31 | with: 32 | add-paths: | 33 | config/regions.yml 34 | db/fixtures/aws_instance_types.yml 35 | db/fixtures/aws_database_types.yml 36 | commit-message: Update AWS instance_types 37 | branch: update_aws_instance_types 38 | author: ManageIQ Bot 39 | committer: ManageIQ Bot 40 | assignees: agrare 41 | delete-branch: true 42 | labels: enhancement 43 | push-to-fork: miq-bot/manageiq-providers-amazon 44 | title: Update AWS instance_types 45 | body: Update the saved list of AWS instance_types from https://instances.vantage.sh/instances.json 46 | token: "${{ secrets.PR_TOKEN }}" 47 | -------------------------------------------------------------------------------- /app/models/manageiq/providers/amazon/parser_helper_methods.rb: -------------------------------------------------------------------------------- 1 | module ManageIQ::Providers::Amazon::ParserHelperMethods 2 | extend ActiveSupport::Concern 3 | 4 | # 5 | # Helper methods 6 | # 7 | def filter_unused_disabled_flavors 8 | to_delete = @data[:flavors].reject { |f| f[:enabled] || @known_flavors.include?(f[:ems_ref]) } 9 | to_delete.each do |f| 10 | @data_index[:flavors].delete(f[:ems_ref]) 11 | @data[:flavors].delete(f) 12 | end 13 | end 14 | 15 | ARCHITECTURE_TO_BITNESS = { 16 | :i386 => 32, 17 | :x86_64 => 64, 18 | }.freeze 19 | 20 | def architecture_to_bitness(arch) 21 | ARCHITECTURE_TO_BITNESS[arch.to_sym] 22 | end 23 | 24 | def get_from_tags(resource, tag_name) 25 | tag_name = tag_name.to_s.downcase 26 | resource.tags.detect { |tag, _| tag.key.downcase == tag_name }.try(:value).presence 27 | end 28 | 29 | def add_instance_disk(disks, size, location, name, controller_type = "amazon") 30 | if size >= 0 31 | disk = { 32 | :device_name => name, 33 | :device_type => "disk", 34 | :controller_type => controller_type, 35 | :location => location, 36 | :size => size 37 | } 38 | disks << disk 39 | return disk 40 | end 41 | nil 42 | end 43 | 44 | def add_block_device_disk(disks, name, location) 45 | disk = { 46 | :device_name => name, 47 | :device_type => "disk", 48 | :controller_type => "amazon", 49 | :location => location, 50 | } 51 | disks << disk 52 | disk 53 | end 54 | 55 | # Compose an ems_ref combining some existing keys 56 | def compose_ems_ref(*keys) 57 | keys.join('_') 58 | end 59 | end 60 | -------------------------------------------------------------------------------- /spec/models/manageiq/providers/amazon/agent_coordinator_worker_spec.rb: -------------------------------------------------------------------------------- 1 | describe ManageIQ::Providers::Amazon::AgentCoordinatorWorker do 2 | describe ".ems_class" do 3 | it "is the cloud manager" do 4 | expect(described_class.ems_class).to eq(ManageIQ::Providers::Amazon::CloudManager) 5 | end 6 | end 7 | 8 | describe ".has_required_role?" do 9 | before { ServerRole.seed } 10 | let!(:server) { EvmSpecHelper.create_guid_miq_server_zone[1] } 11 | let(:zone) { server.zone } 12 | 13 | it "returns an empty array if no providers are created" do 14 | expect(described_class.has_required_role?).to be_falsy 15 | end 16 | 17 | context "with an ems" do 18 | before do 19 | FactoryBot.create(:ems_amazon_with_authentication, :zone => zone) 20 | end 21 | 22 | context "with smartproxy role disabled" do 23 | it "returns false" do 24 | expect(described_class.has_required_role?).to be_falsy 25 | end 26 | end 27 | 28 | context "with smartproxy role enabled" do 29 | before do 30 | server.update(:has_vix_disk_lib => true) 31 | server.role = "smartproxy" 32 | server.assigned_server_roles.update(:active => true) 33 | end 34 | 35 | it "returns true" do 36 | expect(described_class.has_required_role?).to be_truthy 37 | end 38 | 39 | it "returns true with multiple emss" do 40 | FactoryBot.create(:ems_amazon_with_authentication, :zone => zone) 41 | FactoryBot.create(:ems_amazon_with_authentication, :zone => zone) 42 | FactoryBot.create(:ems_amazon_with_authentication, :zone => zone) 43 | 44 | expect(described_class.has_required_role?).to be_truthy 45 | end 46 | end 47 | end 48 | end 49 | end 50 | -------------------------------------------------------------------------------- /manageiq-providers-amazon.gemspec: -------------------------------------------------------------------------------- 1 | # coding: utf-8 2 | lib = File.expand_path('../lib', __FILE__) 3 | $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib) 4 | require 'manageiq/providers/amazon/version' 5 | 6 | Gem::Specification.new do |spec| 7 | spec.name = "manageiq-providers-amazon" 8 | spec.version = ManageIQ::Providers::Amazon::VERSION 9 | spec.authors = ["ManageIQ Authors"] 10 | 11 | spec.summary = "ManageIQ plugin for the Amazon provider." 12 | spec.description = "ManageIQ plugin for the Amazon provider." 13 | spec.homepage = "https://github.com/ManageIQ/manageiq-providers-amazon" 14 | spec.license = "Apache-2.0" 15 | 16 | spec.files = `git ls-files -z`.split("\x0").reject { |f| f.match(%r{^(test|spec|features)/}) } 17 | spec.bindir = "exe" 18 | spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) } 19 | spec.require_paths = ["lib"] 20 | 21 | spec.add_dependency "aws-sdk-core", "~> 3.114" 22 | spec.add_dependency "aws-sdk-cloudformation", "~> 1.0" 23 | spec.add_dependency "aws-sdk-cloudwatch", "~> 1.0" 24 | spec.add_dependency "aws-sdk-ec2", "~> 1.0" 25 | spec.add_dependency "aws-sdk-elasticloadbalancing", "~> 1.0" 26 | spec.add_dependency "aws-sdk-iam", "~> 1.0" 27 | spec.add_dependency "aws-sdk-rds", "~> 1.0" 28 | spec.add_dependency "aws-sdk-s3", "~> 1.0", ">= 1.96.1" 29 | spec.add_dependency "aws-sdk-servicecatalog", "~> 1.0" 30 | spec.add_dependency "aws-sdk-sns", "~> 1.0" 31 | spec.add_dependency "aws-sdk-sqs", "~> 1.0" 32 | spec.add_dependency "net-scp", ">= 1.2", "<5" 33 | 34 | spec.add_development_dependency "manageiq-style" 35 | spec.add_development_dependency "simplecov", ">= 0.21.2" 36 | end 37 | -------------------------------------------------------------------------------- /spec/models/manageiq/providers/amazon/cloud_manager/event_catcher/config/AWS_EC2_VPC_DELETE.json: -------------------------------------------------------------------------------- 1 | { 2 | "Type" : "Notification", 3 | "MessageId" : "759553b1-1ce2-5789-aaef-01366ee745b0", 4 | "TopicArn" : "arn:aws:sns:us-east-1:200278856672:AWSConfig_topic", 5 | "Subject" : "[AWS Config:us-east-1] AWS::EC2::VPC vpc-4d73fc35 Deleted in Account 200278856672", 6 | "Message" : "{\"configurationItemDiff\":{\"changedProperties\":{},\"changeType\":\"DELETE\"},\"configurationItem\":{\"relatedEvents\":[\"655a6823-583e-4af4-b881-c6f5549bfff5\"],\"relationships\":[],\"configuration\":null,\"supplementaryConfiguration\":{},\"tags\":{},\"configurationItemVersion\":\"1.2\",\"configurationItemCaptureTime\":\"2017-11-16T11:00:21.536Z\",\"configurationStateId\":1510830021536,\"awsAccountId\":\"200278856672\",\"configurationItemStatus\":\"ResourceDeleted\",\"resourceType\":\"AWS::EC2::VPC\",\"resourceId\":\"vpc-4d73fc35\",\"resourceName\":null,\"ARN\":null,\"awsRegion\":\"us-east-1\",\"availabilityZone\":null,\"configurationStateMd5Hash\":\"d9bb09e40bb1fa815b164ed1a3434e26\",\"resourceCreationTime\":null},\"notificationCreationTime\":\"2017-11-16T11:00:21.641Z\",\"messageType\":\"ConfigurationItemChangeNotification\",\"recordVersion\":\"1.2\"}", 7 | "Timestamp" : "2017-11-16T11:00:21.727Z", 8 | "SignatureVersion" : "1", 9 | "Signature" : "Gy8sMAnQzsQb2d2YXhMeFTCAaezuRCexr2kBItSRTPDfh8/Vf0VDpz/VI1xoThj9BaL8DiXG9uZGEXZ+wvL81BnWIyqdZ9fDdhVcfnfHsewOFi6P2D2qYQ5WkNa+QjRYfZT76gof0AU/0pAoL9YsUeYlVYM65sbPOYu+U18xMaO1a5lakmHukxu8XcDNVUuJDGZgStb/olew8bGjDM4VMIMzIDRiEeAljtWTB8jFaTab87c/91Zh/qy4S6PIEu77TS+r2oQPC0PWYMfsdXSPd2qrJZnzEAkRBic9ylYRCl1c2sX3nvvhbynReYtsT7WZAqBvwZKWzMmk1wu4oQ2g1Q==", 10 | "SigningCertURL" : "https://sns.us-east-1.amazonaws.com/SimpleNotificationService-433026a4050d206028891664da859041.pem", 11 | "UnsubscribeURL" : "https://sns.us-east-1.amazonaws.com/?Action=Unsubscribe&SubscriptionArn=arn:aws:sns:us-east-1:200278856672:AWSConfig_topic:515bacb7-efef-41f8-9266-7765b9afe39d" 12 | } -------------------------------------------------------------------------------- /spec/models/manageiq/providers/amazon/cloud_manager/event_catcher/cloud_watch/AWS_ALARM_awselb-EmSRefreshSpecVPCELB-Unhealthy-Hosts.json: -------------------------------------------------------------------------------- 1 | { 2 | "Type" : "Notification", 3 | "MessageId" : "3874b853-67bd-52ef-992e-e9743e1fcbde", 4 | "TopicArn" : "arn:aws:sns:us-east-1:200278856672:AWSConfig_topic", 5 | "Subject" : "ALARM: \"awselb-EmSRefreshSpecVPCELB-Unhealthy-Hosts\" in US East - N. Virginia", 6 | "Message" : "{\"AlarmName\":\"awselb-EmSRefreshSpecVPCELB-Unhealthy-Hosts\",\"AlarmDescription\":\"Created from EC2 Console\",\"AWSAccountId\":\"200278856672\",\"NewStateValue\":\"ALARM\",\"NewStateReason\":\"Threshold Crossed: 1 datapoint (1.0) was greater than or equal to the threshold (1.0).\",\"StateChangeTime\":\"2017-02-22T09:18:26.916+0000\",\"Region\":\"US East - N. Virginia\",\"OldStateValue\":\"INSUFFICIENT_DATA\",\"Trigger\":{\"MetricName\":\"UnHealthyHostCount\",\"Namespace\":\"AWS/ELB\",\"StatisticType\":\"Statistic\",\"Statistic\":\"AVERAGE\",\"Unit\":null,\"Dimensions\":[{\"name\":\"LoadBalancerName\",\"value\":\"EmSRefreshSpecVPCELB\"}],\"Period\":60,\"EvaluationPeriods\":1,\"ComparisonOperator\":\"GreaterThanOrEqualToThreshold\",\"Threshold\":1.0,\"TreatMissingData\":\"\",\"EvaluateLowSampleCountPercentile\":\"\"}}", 7 | "Timestamp" : "2017-02-22T09:18:26.949Z", 8 | "SignatureVersion" : "1", 9 | "Signature" : "bc/L1xnXccww0qeB7WuIQLjF6aiBElzR2+bUngMf5IlkrX8w03HNZbSD4qZs/sSAc2KZAtAjcn7CJLQ0bjRWZ3OZggXC+0+D1IDJ1Vs6tcDD+NAax3hF7nwjhbogN/Qp0LLW26WqXKLxXoTVhuo99C6vIIquertB6nd3aJKegZxn7VdwsamlLa3uPsmcizP7scY8nHHSMoAqDn98OJSJo6kLTQEEWs8iJ+3mBHFKdBVFsCY2aBxVRl/zn9iQVp4blLpv45ekFEtZvk2RLyKIyqcV7L+901xtXpXAzlIXYUmiwCPrD2cqtEZkjKPe8thwsk4aYF7Hkl+nFgMB0XIjzw==", 10 | "SigningCertURL" : "https://sns.us-east-1.amazonaws.com/SimpleNotificationService-b95095beb82e8f6a046b3aafc7f4149a.pem", 11 | "UnsubscribeURL" : "https://sns.us-east-1.amazonaws.com/?Action=Unsubscribe&SubscriptionArn=arn:aws:sns:us-east-1:200278856672:AWSConfig_topic:9d586985-cd22-4a24-a4ee-3f7b3d503a91" 12 | } 13 | -------------------------------------------------------------------------------- /spec/models/manageiq/providers/amazon/cloud_manager/event_catcher/config/AWS_EC2_Subnet_DELETE.json: -------------------------------------------------------------------------------- 1 | { 2 | "Type" : "Notification", 3 | "MessageId" : "c0f165b3-de7f-52aa-8541-3799c9ce82f0", 4 | "TopicArn" : "arn:aws:sns:us-east-1:200278856672:AWSConfig_topic", 5 | "Subject" : "[AWS Config:us-east-1] AWS::EC2::Subnet subnet-84055dde Deleted in Account 200278856672", 6 | "Message" : "{\"configurationItemDiff\":{\"changedProperties\":{},\"changeType\":\"DELETE\"},\"configurationItem\":{\"relatedEvents\":[\"5a0515d3-1b98-4cf3-b5da-bc4814877695\"],\"relationships\":[],\"configuration\":null,\"supplementaryConfiguration\":{},\"tags\":{},\"configurationItemVersion\":\"1.2\",\"configurationItemCaptureTime\":\"2017-09-06T15:34:07.735Z\",\"configurationStateId\":1504712047735,\"awsAccountId\":\"200278856672\",\"configurationItemStatus\":\"ResourceDeleted\",\"resourceType\":\"AWS::EC2::Subnet\",\"resourceId\":\"subnet-84055dde\",\"resourceName\":null,\"ARN\":null,\"awsRegion\":\"us-east-1\",\"availabilityZone\":null,\"configurationStateMd5Hash\":\"7d04f08c3ab0a489456b6f7845fc1e28\",\"resourceCreationTime\":null},\"notificationCreationTime\":\"2017-09-06T15:34:08.796Z\",\"messageType\":\"ConfigurationItemChangeNotification\",\"recordVersion\":\"1.2\"}", 7 | "Timestamp" : "2017-09-06T15:34:09.374Z", 8 | "SignatureVersion" : "1", 9 | "Signature" : "fJr62p1/c56LN+i26Evl8QcyKmAtaxfIHLE/jg96WgCOi3gC6sNa5RqDQbtUsq26mI3NDkG3U0dsu1RKj+GpI1vPBmpX55ZcLHMqLRP3N7e6WTgtCPBV4sqPmeDBZZy47kgapULyQ31+F4daSDmrG7PV/+sbqsULVenfh8ENn1xVkfRRJVpP+/eSmzZg6i70wlIX5uh4qUogf7MW56hhtJn/mhAFxSVXh2OrAck2X0+OoPnVghRaU6MQS3I5K9ZbBIZi7CrVfM/a4dfpmY34BGg74p3VkfxKPFWsFr4Oic1xy3gJJmsTWZ8hIrTwiiTGM+WYkVBsLRDgGZg74AB9mA==", 10 | "SigningCertURL" : "https://sns.us-east-1.amazonaws.com/SimpleNotificationService-433026a4050d206028891664da859041.pem", 11 | "UnsubscribeURL" : "https://sns.us-east-1.amazonaws.com/?Action=Unsubscribe&SubscriptionArn=arn:aws:sns:us-east-1:200278856672:AWSConfig_topic:9fefb8fe-9bd0-4624-9281-a279994ed2b9" 12 | } -------------------------------------------------------------------------------- /spec/models/manageiq/providers/amazon/cloud_manager/event_catcher/cloud_watch/AWS_API_CALL_SignalResource.json: -------------------------------------------------------------------------------- 1 | { 2 | "Type" : "Notification", 3 | "MessageId" : "f1f5a3bf-4e09-5479-a41c-f19479bdb437", 4 | "TopicArn" : "arn:aws:sns:us-east-1:200278856672:AWSConfig_topic", 5 | "Message" : "{\"version\":\"0\",\"id\":\"c524cc71-1ece-b6ae-da0b-e65995c22bd5\",\"detail-type\":\"AWS API Call via CloudTrail\",\"source\":\"aws.cloudformation\",\"account\":\"200278856672\",\"time\":\"2017-09-07T12:02:13Z\",\"region\":\"us-east-1\",\"resources\":[],\"detail\":{\"eventVersion\":\"1.05\",\"userIdentity\":{\"type\":\"Unknown\",\"principalId\":\"\",\"arn\":\"\",\"accountId\":\"200278856672\",\"accessKeyId\":\"\",\"userName\":\"\"},\"eventTime\":\"2017-09-07T12:02:13Z\",\"eventSource\":\"cloudformation.amazonaws.com\",\"eventName\":\"SignalResource\",\"awsRegion\":\"us-east-1\",\"sourceIPAddress\":\"75.101.188.78\",\"userAgent\":\"CloudFormation Tools\",\"requestParameters\":{\"uniqueId\":\"i-00945be3d7c07ec6c\",\"status\":\"SUCCESS\",\"logicalResourceId\":\"WebServerGroup\",\"stackName\":\"ladas-test31\"},\"responseElements\":null,\"requestID\":\"62ba2992-93c4-11e7-abdd-d5bce0e15f22\",\"eventID\":\"dbffa6c7-222c-4209-85aa-7afcdc4227f5\",\"eventType\":\"AwsApiCall\"}}", 6 | "Timestamp" : "2017-09-07T12:03:00.103Z", 7 | "SignatureVersion" : "1", 8 | "Signature" : "ek8eGlv4tzBQT5EyI/nI1uztX2m/ssBlCQhZsC6f6OXdkGaL/LtKrR71HcmSQ00W5yMh6UE1WQvE4jzlL4TIoPMlnRby7nfozh2fEo4nChUycCYn7ZLc5XpeRoyQqiIOl2hqE4WQxjSrNQzM3zwvvZF+3F3ZkkdZ41+qSKC/vYfz8+CiYTkXzqiqLc/fsmEcF2T5TUUzXuKq7Mj60PIRtAfYS1PeDqLl7ExRQghHbA3anhZpuT/9LhaKExl6s6Ffagnm3nN0+D6Y6wNr+MIzhyHDD9Jba+u7SE3f7T1Fo2Mv4Q9EXjPzrPrDu0Uy9u2uM9h99ecpJRlk1SzLUh0IDA==", 9 | "SigningCertURL" : "https://sns.us-east-1.amazonaws.com/SimpleNotificationService-433026a4050d206028891664da859041.pem", 10 | "UnsubscribeURL" : "https://sns.us-east-1.amazonaws.com/?Action=Unsubscribe&SubscriptionArn=arn:aws:sns:us-east-1:200278856672:AWSConfig_topic:61d4ffc8-72e3-41a7-b28d-86e700532cd1" 11 | } -------------------------------------------------------------------------------- /spec/models/manageiq/providers/amazon/cloud_manager/event_catcher/config/AWS_EC2_Volume_DELETE.json: -------------------------------------------------------------------------------- 1 | { 2 | "Type" : "Notification", 3 | "MessageId" : "f3428caa-9e34-5440-a53c-de80ff859a62", 4 | "TopicArn" : "arn:aws:sns:us-east-1:200278856672:AWSConfig_topic", 5 | "Subject" : "[AWS Config:us-east-1] AWS::EC2::Volume vol-0f0e3e1c4a2f2d285 Deleted in Account 200278856672", 6 | "Message" : "{\"configurationItemDiff\":{\"changedProperties\":{},\"changeType\":\"DELETE\"},\"configurationItem\":{\"relatedEvents\":[\"563e9d7e-4169-4670-8a1e-afd603d839ad\"],\"relationships\":[],\"configuration\":null,\"supplementaryConfiguration\":{},\"tags\":{},\"configurationItemVersion\":\"1.2\",\"configurationItemCaptureTime\":\"2017-09-06T20:49:52.771Z\",\"configurationStateId\":1504730992771,\"awsAccountId\":\"200278856672\",\"configurationItemStatus\":\"ResourceDeleted\",\"resourceType\":\"AWS::EC2::Volume\",\"resourceId\":\"vol-0f0e3e1c4a2f2d285\",\"resourceName\":null,\"ARN\":null,\"awsRegion\":\"us-east-1\",\"availabilityZone\":null,\"configurationStateMd5Hash\":\"63d6a33784e2ff3659370cd6c19a9853\",\"resourceCreationTime\":null},\"notificationCreationTime\":\"2017-09-06T20:49:52.951Z\",\"messageType\":\"ConfigurationItemChangeNotification\",\"recordVersion\":\"1.2\"}", 7 | "Timestamp" : "2017-09-06T20:49:53.092Z", 8 | "SignatureVersion" : "1", 9 | "Signature" : "S0TSCMHol9+AelskxvOnkvOMRbHn6bnha2M9MFGGnn5lwfkFWG+6BMtZ8IgKQ5WyFs+Bv1VypeFBumt0gZH8zAUB9fqgTuWyPTIbn+rvdhmSlAfEwe8sTR8bCV0Hs9oboWQHKcFozAmvrf8MsvMEHhFu+gSOVUeCxpL2JP7fkOrpFcHglqxqN8XXs9nqxEUej/ee9hcTt4jhYk0OJFeRDUbzduVH/NxA7SNo2nAG9kZzCXiUoEQKULHS5lYZdVXgbKqM0Clm5j40kj2B9amEDkccxPeA6L7AFqWZPE/bClm0Z5gOHSEnJwwKUMSdCI0tbh2H8CkZWD3d8GKMAeB6uw==", 10 | "SigningCertURL" : "https://sns.us-east-1.amazonaws.com/SimpleNotificationService-433026a4050d206028891664da859041.pem", 11 | "UnsubscribeURL" : "https://sns.us-east-1.amazonaws.com/?Action=Unsubscribe&SubscriptionArn=arn:aws:sns:us-east-1:200278856672:AWSConfig_topic:9fefb8fe-9bd0-4624-9281-a279994ed2b9" 12 | } -------------------------------------------------------------------------------- /app/models/manageiq/providers/amazon/cloud_manager/vm.rb: -------------------------------------------------------------------------------- 1 | class ManageIQ::Providers::Amazon::CloudManager::Vm < ManageIQ::Providers::CloudManager::Vm 2 | include Operations 3 | include ManageIQ::Providers::Amazon::CloudManager::VmOrTemplateShared 4 | 5 | supports :capture 6 | 7 | POWER_STATES = { 8 | "running" => "on", 9 | "powering_up" => "powering_up", 10 | "shutting_down" => "powering_down", 11 | "shutting-down" => "powering_down", 12 | "stopping" => "powering_down", 13 | "pending" => "suspended", 14 | "terminated" => "terminated", 15 | "stopped" => "off", 16 | "off" => "off", 17 | # 'unknown' will be set by #disconnect_ems - which means 'terminated' in our case 18 | "unknown" => "terminated", 19 | }.freeze 20 | 21 | def provider_object(connection = nil) 22 | connection ||= ext_management_system.connect 23 | connection.instance(ems_ref) 24 | end 25 | 26 | def memory_mb_available? 27 | true 28 | end 29 | 30 | # 31 | # Relationship methods 32 | # 33 | 34 | def disconnect_inv 35 | super 36 | 37 | # Mark all instances no longer found as unknown 38 | self.raw_power_state = "unknown" 39 | save 40 | end 41 | 42 | # 43 | # EC2 interactions 44 | # 45 | 46 | def set_custom_field(key, value) 47 | with_provider_object do |instance| 48 | tags = instance.create_tags({ 49 | tags: [ 50 | { 51 | key: key, 52 | value: value, 53 | }, 54 | ], 55 | }) 56 | tags.find{|tag| tag.key == key}.value == value 57 | end 58 | end 59 | 60 | def self.calculate_power_state(raw_power_state) 61 | # http://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_InstanceState.html 62 | POWER_STATES[raw_power_state.to_s] || "terminated" 63 | end 64 | 65 | def self.display_name(number = 1) 66 | n_('Instance (Amazon)', 'Instances (Amazon)', number) 67 | end 68 | end 69 | -------------------------------------------------------------------------------- /spec/models/manageiq/providers/amazon/cloud_manager/event_catcher/config/AWS_EC2_InternetGateway_DELETE.json: -------------------------------------------------------------------------------- 1 | { 2 | "Type" : "Notification", 3 | "MessageId" : "785e6c7a-1622-5647-bb1f-3efd67342c56", 4 | "TopicArn" : "arn:aws:sns:us-east-1:200278856672:AWSConfig_topic", 5 | "Subject" : "[AWS Config:us-east-1] AWS::EC2::InternetGateway igw-2300955a Deleted in Account 200278856672", 6 | "Message" : "{\"configurationItemDiff\":{\"changedProperties\":{},\"changeType\":\"DELETE\"},\"configurationItem\":{\"relatedEvents\":[\"f7bc0b5f-5932-4e15-a348-8255877b908b\"],\"relationships\":[],\"configuration\":null,\"supplementaryConfiguration\":{},\"tags\":{},\"configurationItemVersion\":\"1.2\",\"configurationItemCaptureTime\":\"2017-11-16T10:56:22.390Z\",\"configurationStateId\":1510829782390,\"awsAccountId\":\"200278856672\",\"configurationItemStatus\":\"ResourceDeleted\",\"resourceType\":\"AWS::EC2::InternetGateway\",\"resourceId\":\"igw-2300955a\",\"resourceName\":null,\"ARN\":null,\"awsRegion\":\"us-east-1\",\"availabilityZone\":null,\"configurationStateMd5Hash\":\"b9fa2a2640654fbe0026efb3a4bb6a02\",\"resourceCreationTime\":null},\"notificationCreationTime\":\"2017-11-16T10:56:22.464Z\",\"messageType\":\"ConfigurationItemChangeNotification\",\"recordVersion\":\"1.2\"}", 7 | "Timestamp" : "2017-11-16T10:56:22.772Z", 8 | "SignatureVersion" : "1", 9 | "Signature" : "GjKd2ywyFJlnNIhmx4yDQ1wnrwi7kzwJtdCIE2eb3F4l/eIpLP/q//0gAc/quVDl8d2WlCWJfdmrLFyeshK5yZKGOxwH8de6mHv6Kk+CQhSUTWEJb9PjB5fPGUk2zn2PhGvXuBwK02AJfvOM7om3gsUM9a1r4+ZsiN28JEcvXEFDUiO+Ih6nTvljMfV2W3mLM+bsFvIFDhE+BVJogYB5PhDbMJc7xmiKF5IKFjV9DrNAykbDO73jfIi5iGBZeH70ZGhR2/ReMs3I5WURWnqfmwumhIxOb8wAhzWmvZ2GELZYO/mfLbi0b/CVwlZrfYhKEQeoSBukjve9SZIWoaw0HQ==", 10 | "SigningCertURL" : "https://sns.us-east-1.amazonaws.com/SimpleNotificationService-433026a4050d206028891664da859041.pem", 11 | "UnsubscribeURL" : "https://sns.us-east-1.amazonaws.com/?Action=Unsubscribe&SubscriptionArn=arn:aws:sns:us-east-1:200278856672:AWSConfig_topic:515bacb7-efef-41f8-9266-7765b9afe39d" 12 | } -------------------------------------------------------------------------------- /app/models/manageiq/providers/amazon/inventory/persister/definitions/network_collections.rb: -------------------------------------------------------------------------------- 1 | module ManageIQ::Providers::Amazon::Inventory::Persister::Definitions::NetworkCollections 2 | extend ActiveSupport::Concern 3 | 4 | def initialize_network_inventory_collections 5 | %i(cloud_networks 6 | cloud_subnets 7 | security_groups 8 | load_balancers 9 | load_balancer_pools 10 | load_balancer_pool_members 11 | load_balancer_pool_member_pools 12 | load_balancer_listeners 13 | load_balancer_listener_pools 14 | load_balancer_health_checks 15 | load_balancer_health_check_members).each do |name| 16 | add_network_collection(name) 17 | end 18 | 19 | add_cloud_subnet_network_ports 20 | 21 | add_firewall_rules 22 | 23 | add_floating_ips 24 | 25 | add_network_ports 26 | end 27 | 28 | # ------ IC provider specific definitions ------------------------- 29 | 30 | def add_network_ports(extra_properties = {}) 31 | add_network_collection(:network_ports, extra_properties) do |builder| 32 | if targeted? 33 | builder.add_properties(:manager_uuids => references(:vms) + references(:network_ports) + references(:load_balancers)) 34 | end 35 | end 36 | end 37 | 38 | def add_floating_ips(extra_properties = {}) 39 | add_network_collection(:floating_ips, extra_properties) do |builder| 40 | if targeted? 41 | builder.add_properties(:manager_uuids => references(:floating_ips) + references(:load_balancers)) 42 | end 43 | end 44 | end 45 | 46 | def add_cloud_subnet_network_ports(extra_properties = {}) 47 | add_network_collection(:cloud_subnet_network_ports, extra_properties) do |builder| 48 | builder.add_properties(:manager_ref_allowed_nil => %i(cloud_subnet)) 49 | end 50 | end 51 | 52 | def add_firewall_rules(extra_properties = {}) 53 | add_network_collection(:firewall_rules, extra_properties) do |builder| 54 | builder.add_properties(:manager_ref_allowed_nil => %i(source_security_group)) 55 | end 56 | end 57 | end 58 | -------------------------------------------------------------------------------- /spec/models/manageiq/providers/amazon/cloud_manager/event_catcher/cloud_watch/AWS_API_CALL_DeleteTags.json: -------------------------------------------------------------------------------- 1 | { 2 | "Type" : "Notification", 3 | "MessageId" : "ccbaee23-e4dc-59cf-a146-bc09f21f7e4f", 4 | "TopicArn" : "arn:aws:sns:us-east-1:200278856672:AWSConfig_topic", 5 | "Message" : "{\"version\":\"0\",\"id\":\"77744ac8-c47c-c8a9-5ab0-e8a0fc798fb8\",\"detail-type\":\"AWS API Call via CloudTrail\",\"source\":\"aws.ec2\",\"account\":\"200278856672\",\"time\":\"2017-09-06T15:29:38Z\",\"region\":\"us-east-1\",\"resources\":[],\"detail\":{\"eventVersion\":\"1.05\",\"userIdentity\":{\"type\":\"Root\",\"principalId\":\"200278856672\",\"arn\":\"arn:aws:iam::200278856672:root\",\"accountId\":\"200278856672\",\"invokedBy\":\"autoscaling.amazonaws.com\"},\"eventTime\":\"2017-09-06T15:29:38Z\",\"eventSource\":\"ec2.amazonaws.com\",\"eventName\":\"DeleteTags\",\"awsRegion\":\"us-east-1\",\"sourceIPAddress\":\"autoscaling.amazonaws.com\",\"userAgent\":\"autoscaling.amazonaws.com\",\"requestParameters\":{\"resourcesSet\":{\"items\":[{\"resourceId\":\"i-099e794cfa830e9be\"}]},\"tagSet\":{\"items\":[{\"key\":\"aws:autoscaling:groupName\",\"value\":\"default-scaling-group\"}]}},\"responseElements\":{\"_return\":true},\"requestID\":\"30bc4b42-d20c-4fab-b5b6-07b04cabc935\",\"eventID\":\"323ee66e-b451-4aa2-917f-d45775047285\",\"eventType\":\"AwsApiCall\"}}", 6 | "Timestamp" : "2017-09-06T15:30:11.512Z", 7 | "SignatureVersion" : "1", 8 | "Signature" : "KZOOGECo6Gn41YSgxRqOErOL700EGYpbESr50KEe6w9JzKK3ats7+jjuXeVRAY1XRmjalH7/AkgNuYGonOhuj6uqldWy3sQ/6S1yGCkvdWdbDLIjdHQCyHNZAklA4rtPgeGSW/ua12VDc2z275YElgeJ1DubDg9pbnWg4cIsr8Lp9A6vh+yt68YQ66p4Lk/C8RuFQIw4lLjlCNd5hPemtdz+WlXmtyOyP5AHQZnZeKYcnvp8kAZoXLG1ErBmjC79KlPL32nSliVwrywyT/fpLOV9XQs16d3ukGMpckN9d0WJ6j3lHtYa1mMm3J25MCJWBus9MIXH/1jpo1pWvjsduQ==", 9 | "SigningCertURL" : "https://sns.us-east-1.amazonaws.com/SimpleNotificationService-433026a4050d206028891664da859041.pem", 10 | "UnsubscribeURL" : "https://sns.us-east-1.amazonaws.com/?Action=Unsubscribe&SubscriptionArn=arn:aws:sns:us-east-1:200278856672:AWSConfig_topic:9fefb8fe-9bd0-4624-9281-a279994ed2b9" 11 | } -------------------------------------------------------------------------------- /spec/models/manageiq/providers/amazon/cloud_manager/event_catcher/cloud_watch/AWS_API_CALL_AssociateAddress.json: -------------------------------------------------------------------------------- 1 | { 2 | "Type" : "Notification", 3 | "MessageId" : "fa8e5721-1dc2-57e2-b53d-050a212fe456", 4 | "TopicArn" : "arn:aws:sns:us-east-1:200278856672:AWSConfig_topic", 5 | "Message" : "{\"version\":\"0\",\"id\":\"9ddd3903-cd7c-ddb5-c173-69aa681a7d07\",\"detail-type\":\"AWS API Call via CloudTrail\",\"source\":\"aws.ec2\",\"account\":\"200278856672\",\"time\":\"2017-09-07T12:24:34Z\",\"region\":\"us-east-1\",\"resources\":[],\"detail\":{\"eventVersion\":\"1.05\",\"userIdentity\":{\"type\":\"IAMUser\",\"principalId\":\"AIDAI37PIOA5B6VMIJRUU\",\"arn\":\"arn:aws:iam::200278856672:user/ladas\",\"accountId\":\"200278856672\",\"accessKeyId\":\"AKIAJS5P4A2TYQUXGZYQ\",\"userName\":\"ladas\"},\"eventTime\":\"2017-09-07T12:24:34Z\",\"eventSource\":\"ec2.amazonaws.com\",\"eventName\":\"AssociateAddress\",\"awsRegion\":\"us-east-1\",\"sourceIPAddress\":\"213.175.37.10\",\"userAgent\":\"aws-sdk-ruby2/2.9.44 ruby/2.3.0 x86_64-linux resources\",\"requestParameters\":{\"instanceId\":\"i-0b72e0b70e7fae3c9\",\"allocationId\":\"eipalloc-3d8a720f\"},\"responseElements\":{\"_return\":true,\"associationId\":\"eipassoc-54289160\"},\"requestID\":\"0d6bd068-1c95-4757-b202-d60d31dfaac7\",\"eventID\":\"acc16b73-43d6-4406-8749-c94526dbafb6\",\"eventType\":\"AwsApiCall\"}}", 6 | "Timestamp" : "2017-09-07T12:25:17.053Z", 7 | "SignatureVersion" : "1", 8 | "Signature" : "fbNvRS/FuwSer56JNhUh/T7WBLGqGG/2wWA5sVgabkue0jxTJK7IVtwcbko773fYbLY+fCYgMrZIDyLfCwGk06tpnjwHqkBCdaSaIUXYSpz3ZOHub26FH+G92xmdqFXgyeE5Hrn4lU5e0Uj7d8MXbzZYdP/zYnLglPRdPxgNU+66LLneDm2u5NI1b7iAZzrouVTP0j5gSBURmPWgDEEe2yy+oKLnIXSCRVt5eMRqvTmScnxf5kckfne9lMfNO/JZPEwYfs3/rvJxSObIJPi6xBIWgVON/Jnhi+lw8vPNmw2FzQ+lmntiQyI3wEuAGWoNmeir5hLRG+E81ltLpfaoug==", 9 | "SigningCertURL" : "https://sns.us-east-1.amazonaws.com/SimpleNotificationService-433026a4050d206028891664da859041.pem", 10 | "UnsubscribeURL" : "https://sns.us-east-1.amazonaws.com/?Action=Unsubscribe&SubscriptionArn=arn:aws:sns:us-east-1:200278856672:AWSConfig_topic:61d4ffc8-72e3-41a7-b28d-86e700532cd1" 11 | } -------------------------------------------------------------------------------- /spec/models/manageiq/providers/amazon/cloud_manager/event_catcher/cloud_watch/AWS_API_CALL_DeleteVpc.json: -------------------------------------------------------------------------------- 1 | { 2 | "Type" : "Notification", 3 | "MessageId" : "45147477-8475-5cc4-96da-26f0ec49589b", 4 | "TopicArn" : "arn:aws:sns:us-east-1:200278856672:AWSConfig_topic", 5 | "Message" : "{\"version\":\"0\",\"id\":\"6ae702a2-162a-1ee9-068a-c3e88d51dcca\",\"detail-type\":\"AWS API Call via CloudTrail\",\"source\":\"aws.ec2\",\"account\":\"200278856672\",\"time\":\"2017-11-16T10:18:15Z\",\"region\":\"us-east-1\",\"resources\":[],\"detail\":{\"eventVersion\":\"1.05\",\"userIdentity\":{\"type\":\"IAMUser\",\"principalId\":\"AIDAI37PIOA5B6VMIJRUU\",\"arn\":\"arn:aws:iam::200278856672:user/ladas\",\"accountId\":\"200278856672\",\"accessKeyId\":\"ASIAIXA4NYJIDT6VVBPA\",\"userName\":\"ladas\",\"sessionContext\":{\"attributes\":{\"mfaAuthenticated\":\"false\",\"creationDate\":\"2017-11-16T08:35:35Z\"}},\"invokedBy\":\"signin.amazonaws.com\"},\"eventTime\":\"2017-11-16T10:18:15Z\",\"eventSource\":\"ec2.amazonaws.com\",\"eventName\":\"DeleteVpc\",\"awsRegion\":\"us-east-1\",\"sourceIPAddress\":\"213.175.37.10\",\"userAgent\":\"signin.amazonaws.com\",\"requestParameters\":{\"vpcId\":\"vpc-a06de3c5\"},\"responseElements\":{\"_return\":true},\"requestID\":\"1a879c62-37f5-4ce2-8310-39d7bdeb70a2\",\"eventID\":\"c25b3cec-7de3-4e09-aff5-d863c89e43f0\",\"eventType\":\"AwsApiCall\"}}", 6 | "Timestamp" : "2017-11-16T10:18:36.463Z", 7 | "SignatureVersion" : "1", 8 | "Signature" : "O9MfRI13wbJbZEFT2dutt5SshwzaVYjpAkoG6AQMETg2g16c9iFScqSNiPYsRdJ00xp8W7R4n6cwFbZ8FdQTfuUyh3mGmc7bXr2LMnYeEmWitgI1EF+UXcWrRb7q7ypn/hiTsvSaxWVEh6dQ+DkXuuNllKmLs7ISbIQtRL+ZDWCGU0mW548dP5qlKTjWJqvHxK5YNlBTdp2kyZoaELq0ZAV+E3gNrh+szMW7//YZt7PaPkL1XYfwzNIlR6AbHGR5RUyw9QL8VUTmCeWWr7a2QQyaDBg2z/X9KNhvVLMiWcMxfxGPFu6GsKiV9OpmNgGxww0jmgLBbhjs2k6G0kDffw==", 9 | "SigningCertURL" : "https://sns.us-east-1.amazonaws.com/SimpleNotificationService-433026a4050d206028891664da859041.pem", 10 | "UnsubscribeURL" : "https://sns.us-east-1.amazonaws.com/?Action=Unsubscribe&SubscriptionArn=arn:aws:sns:us-east-1:200278856672:AWSConfig_topic:515bacb7-efef-41f8-9266-7765b9afe39d" 11 | } -------------------------------------------------------------------------------- /spec/models/manageiq/providers/amazon/cloud_manager/event_catcher/cloud_watch/AWS_API_CALL_CreateTags.json: -------------------------------------------------------------------------------- 1 | { 2 | "Type" : "Notification", 3 | "MessageId" : "8fbf9ff4-22a1-5348-9c6c-cddf1e4c5312", 4 | "TopicArn" : "arn:aws:sns:us-east-1:200278856672:AWSConfig_topic", 5 | "Message" : "{\"version\":\"0\",\"id\":\"4f478388-0b4a-e447-c3a0-d0ef40db778c\",\"detail-type\":\"AWS API Call via CloudTrail\",\"source\":\"aws.ec2\",\"account\":\"200278856672\",\"time\":\"2017-09-07T12:24:33Z\",\"region\":\"us-east-1\",\"resources\":[],\"detail\":{\"eventVersion\":\"1.05\",\"userIdentity\":{\"type\":\"IAMUser\",\"principalId\":\"AIDAI37PIOA5B6VMIJRUU\",\"arn\":\"arn:aws:iam::200278856672:user/ladas\",\"accountId\":\"200278856672\",\"accessKeyId\":\"AKIAJS5P4A2TYQUXGZYQ\",\"userName\":\"ladas\"},\"eventTime\":\"2017-09-07T12:24:33Z\",\"eventSource\":\"ec2.amazonaws.com\",\"eventName\":\"CreateTags\",\"awsRegion\":\"us-east-1\",\"sourceIPAddress\":\"213.175.37.10\",\"userAgent\":\"aws-sdk-ruby2/2.9.44 ruby/2.3.0 x86_64-linux resources\",\"requestParameters\":{\"resourcesSet\":{\"items\":[{\"resourceId\":\"i-0b72e0b70e7fae3c9\"}]},\"tagSet\":{\"items\":[{\"key\":\"Name\",\"value\":\"ladas_test_40\"}]}},\"responseElements\":{\"_return\":true},\"requestID\":\"4e4477f0-6847-4b5b-a0eb-af8db155e4d5\",\"eventID\":\"b4523ed4-fce1-47f6-82fb-611656d6f660\",\"eventType\":\"AwsApiCall\"}}", 6 | "Timestamp" : "2017-09-07T12:25:17.345Z", 7 | "SignatureVersion" : "1", 8 | "Signature" : "Hg+PclcbhazZPHi7pmmK6o2V+i4fEaAbdbehaBWRt4rzwjC3/9BSGsp7DNnc34h1l5QDIDFsPDspGDa5qRzWEV0EoNbR3GrYIx6DydCFWoKB8RU8TD93s/KCNFVMgZ5Y6m0A2LzK74BXkDsTm+mfjdN2R7Zr9fhV2TDgjK0XLWNZgSaQQqnUiSotj6ByY0jLbYPYg0KA4S/xwEf6qLifnzjNgFDB0XMHh4lvnIWS0FJTvBbWsdvEY5EpoLaYliYYMHysb6a6qbfMqQOr1rXF7C6xApLjPbUU9n4ppgx70NHoFd6uD3yziN8p6CS6i7NqxSFKVst/tz8T8EJh85E+YQ==", 9 | "SigningCertURL" : "https://sns.us-east-1.amazonaws.com/SimpleNotificationService-433026a4050d206028891664da859041.pem", 10 | "UnsubscribeURL" : "https://sns.us-east-1.amazonaws.com/?Action=Unsubscribe&SubscriptionArn=arn:aws:sns:us-east-1:200278856672:AWSConfig_topic:61d4ffc8-72e3-41a7-b28d-86e700532cd1" 11 | } -------------------------------------------------------------------------------- /spec/models/manageiq/providers/amazon/cloud_manager/event_catcher/cloud_watch/AWS_API_CALL_DeleteSubnet.json: -------------------------------------------------------------------------------- 1 | { 2 | "Type" : "Notification", 3 | "MessageId" : "9ff8dc55-e6c4-522a-8a91-8e7ff1f1e347", 4 | "TopicArn" : "arn:aws:sns:us-east-1:200278856672:AWSConfig_topic", 5 | "Message" : "{\"version\":\"0\",\"id\":\"8c8083e9-ca2c-b76a-8310-e1ac5816adef\",\"detail-type\":\"AWS API Call via CloudTrail\",\"source\":\"aws.ec2\",\"account\":\"200278856672\",\"time\":\"2017-09-06T15:31:47Z\",\"region\":\"us-east-1\",\"resources\":[],\"detail\":{\"eventVersion\":\"1.05\",\"userIdentity\":{\"type\":\"IAMUser\",\"principalId\":\"AIDAI37PIOA5B6VMIJRUU\",\"arn\":\"arn:aws:iam::200278856672:user/ladas\",\"accountId\":\"200278856672\",\"accessKeyId\":\"ASIAJQN5DDY7EVUBTSCQ\",\"userName\":\"ladas\",\"sessionContext\":{\"attributes\":{\"mfaAuthenticated\":\"false\",\"creationDate\":\"2017-09-06T06:37:24Z\"}},\"invokedBy\":\"signin.amazonaws.com\"},\"eventTime\":\"2017-09-06T15:31:47Z\",\"eventSource\":\"ec2.amazonaws.com\",\"eventName\":\"DeleteSubnet\",\"awsRegion\":\"us-east-1\",\"sourceIPAddress\":\"213.175.37.10\",\"userAgent\":\"signin.amazonaws.com\",\"requestParameters\":{\"subnetId\":\"subnet-84055dde\"},\"responseElements\":{\"_return\":true},\"requestID\":\"b485fbd7-56bf-4994-b49a-6a28b8bb4195\",\"eventID\":\"7a00c5f6-e173-482b-a419-a9e09ca407ef\",\"eventType\":\"AwsApiCall\"}}", 6 | "Timestamp" : "2017-09-06T15:32:05.095Z", 7 | "SignatureVersion" : "1", 8 | "Signature" : "a3RuoG4mr7M6vMJjsqIQ8AmfdMkt6zFW2FJYdTKBzGEjKXTP3+OVQZmf0KA4nX+KPLOFGCTuiSWvZOLJikqJiTDlfIfghb8liMAKnSy9AcziVtuXxvsAK0WMVOwwdWycwdK/U2p5CXFm+u2QA8FMkSNTodrR0hrm4sOxAGmj++eerqGUPgGqMv/bx0+0vtA5ZEJC30tTyhX4TPW5YrO+21+zhcn3UgkINpgQdHIdlb/G5E25JJZYtrQi/nIqS+MhXugdj0CDbn5c9GWwe1rCU2LKiQs1zWbdx4wDIgeQlPhl///chmHrLzUaId/ZKgKpxw8MlM+Slotid264zXyi/Q==", 9 | "SigningCertURL" : "https://sns.us-east-1.amazonaws.com/SimpleNotificationService-433026a4050d206028891664da859041.pem", 10 | "UnsubscribeURL" : "https://sns.us-east-1.amazonaws.com/?Action=Unsubscribe&SubscriptionArn=arn:aws:sns:us-east-1:200278856672:AWSConfig_topic:9fefb8fe-9bd0-4624-9281-a279994ed2b9" 11 | } -------------------------------------------------------------------------------- /spec/models/manageiq/providers/amazon/cloud_manager/event_catcher/cloud_watch/AWS_API_CALL_ReleaseAddress.json: -------------------------------------------------------------------------------- 1 | { 2 | "Type" : "Notification", 3 | "MessageId" : "ffb83f21-75df-5ff7-8d76-6d0b625f7a23", 4 | "TopicArn" : "arn:aws:sns:us-east-1:200278856672:AWSConfig_topic", 5 | "Message" : "{\"version\":\"0\",\"id\":\"05ad1251-6b9f-1095-f4c6-95041e97ee4c\",\"detail-type\":\"AWS API Call via CloudTrail\",\"source\":\"aws.ec2\",\"account\":\"200278856672\",\"time\":\"2017-09-06T15:32:32Z\",\"region\":\"us-east-1\",\"resources\":[],\"detail\":{\"eventVersion\":\"1.05\",\"userIdentity\":{\"type\":\"IAMUser\",\"principalId\":\"AIDAI37PIOA5B6VMIJRUU\",\"arn\":\"arn:aws:iam::200278856672:user/ladas\",\"accountId\":\"200278856672\",\"accessKeyId\":\"ASIAJQN5DDY7EVUBTSCQ\",\"userName\":\"ladas\",\"sessionContext\":{\"attributes\":{\"mfaAuthenticated\":\"false\",\"creationDate\":\"2017-09-06T06:37:24Z\"}},\"invokedBy\":\"signin.amazonaws.com\"},\"eventTime\":\"2017-09-06T15:32:32Z\",\"eventSource\":\"ec2.amazonaws.com\",\"eventName\":\"ReleaseAddress\",\"awsRegion\":\"us-east-1\",\"sourceIPAddress\":\"213.175.37.10\",\"userAgent\":\"signin.amazonaws.com\",\"requestParameters\":{\"publicIp\":\"23.21.100.183\"},\"responseElements\":{\"_return\":true},\"requestID\":\"b12a3f95-3838-4efd-b123-cae4a91e4f9f\",\"eventID\":\"5a0515d3-1b98-4cf3-b5da-bc4814877695\",\"eventType\":\"AwsApiCall\"}}", 6 | "Timestamp" : "2017-09-06T15:33:20.201Z", 7 | "SignatureVersion" : "1", 8 | "Signature" : "MK5x5zSLfJcuDNAGA+xORwe3+YrKtRGrUAXkKQejfCyTPOeyhOn7TeJ+JX01E5MgdiVTU5FXP2oc43ypq6ZGpQjxXY6NuTDn1P/tEeIw9IpGCyDVzQOsgJ24xdUkwxowXWhab5oQXNBsT1kxzt1SH4U6gJJpDMiYKTYvfmo0qoLrUNoYMlm/hoJsAVCaEANPtR+ib3XpbzRo785KXPD8QKS3HtOZjvqesPmoN44havIxyQZKeeOjwKq2S8WkQfmKdY9KXe30On21jZQAM7rJ1B26KbbBbpu4wD/4KagtRxczIKAKqXabxzgOdPOz7WOycxcFlIib/byj7P+R0nEJ3Q==", 9 | "SigningCertURL" : "https://sns.us-east-1.amazonaws.com/SimpleNotificationService-433026a4050d206028891664da859041.pem", 10 | "UnsubscribeURL" : "https://sns.us-east-1.amazonaws.com/?Action=Unsubscribe&SubscriptionArn=arn:aws:sns:us-east-1:200278856672:AWSConfig_topic:9fefb8fe-9bd0-4624-9281-a279994ed2b9" 11 | } -------------------------------------------------------------------------------- /spec/models/manageiq/providers/amazon/cloud_manager/event_catcher/cloud_watch/AWS_API_CALL_DeleteProduct.json: -------------------------------------------------------------------------------- 1 | { 2 | "Type" : "Notification", 3 | "MessageId" : "70f7613f-b58c-5302-ba97-352a2214eaa0", 4 | "TopicArn" : "arn:aws:sns:us-east-1:200278856672:AWSConfig_topic", 5 | "Message" : "{\"version\":\"0\",\"id\":\"a6f45934-58d6-8441-db77-6b5c19421826\",\"detail-type\":\"AWS API Call via CloudTrail\",\"source\":\"aws.servicecatalog\",\"account\":\"200278856672\",\"time\":\"2018-09-14T11:02:19Z\",\"region\":\"us-east-1\",\"resources\":[],\"detail\":{\"eventVersion\":\"1.05\",\"userIdentity\":{\"type\":\"IAMUser\",\"principalId\":\"AIDAI37PIOA5B6VMIJRUU\",\"arn\":\"arn:aws:iam::200278856672:user/ladas\",\"accountId\":\"200278856672\",\"accessKeyId\":\"ASIAS5IMM2PQIGY2QQ7C\",\"userName\":\"ladas\",\"sessionContext\":{\"attributes\":{\"mfaAuthenticated\":\"false\",\"creationDate\":\"2018-09-14T08:05:49Z\"}},\"invokedBy\":\"signin.amazonaws.com\"},\"eventTime\":\"2018-09-14T11:02:19Z\",\"eventSource\":\"servicecatalog.amazonaws.com\",\"eventName\":\"DeleteProduct\",\"awsRegion\":\"us-east-1\",\"sourceIPAddress\":\"213.175.37.10\",\"userAgent\":\"signin.amazonaws.com\",\"requestParameters\":{\"id\":\"prod-q65gfich7xv6e\"},\"responseElements\":null,\"requestID\":\"a6191faf-b80d-11e8-9cba-93655f149ff3\",\"eventID\":\"d83ec806-b4f2-4d53-9cfd-d07392dd7dec\",\"eventType\":\"AwsApiCall\"}}", 6 | "Timestamp" : "2018-09-14T11:02:48.069Z", 7 | "SignatureVersion" : "1", 8 | "Signature" : "bTSi/X3OywEmfDmvY665KI9FmSi0ssmySSnGk2HaRz+WyDqrAK8590EukEM0vFDwbOr5uSV1yProF2i5Yi+q9bj92FLZ9jjdQzm4sgmSuJg5tp17RJfd9aqpuOSA2MGwVazWw9QyPuiR8KDbU0qIHzDffbnLdkV7SIqlpS7OLH+QeC+fDhBqxiGb0DnzL0P2e04iSHTgljc07fRps45c9px8C1e5h93bIDT4vCR0FFHnqMC5Iy65yDzoa6AensA5k04NDoFCxc7sfJgvk7x7pB2HCaGLaSbN4gevv0ARsMVEjI9g7jK6hUadnfPLQe/S0+uNbb2O2GkQKRuaXphgCg==", 9 | "SigningCertURL" : "https://sns.us-east-1.amazonaws.com/SimpleNotificationService-ac565b8b1a6c5d002d285f9598aa1d9b.pem", 10 | "UnsubscribeURL" : "https://sns.us-east-1.amazonaws.com/?Action=Unsubscribe&SubscriptionArn=arn:aws:sns:us-east-1:200278856672:AWSConfig_topic:25411282-5f1f-4379-b2c8-aff6d18dfdea" 11 | } -------------------------------------------------------------------------------- /spec/models/manageiq/providers/amazon/cloud_manager/event_catcher/cloud_watch/AWS_API_CALL_DeleteRouteTable.json: -------------------------------------------------------------------------------- 1 | { 2 | "Type" : "Notification", 3 | "MessageId" : "d9ef3235-34b8-53f2-ac78-60b25bc06e22", 4 | "TopicArn" : "arn:aws:sns:us-east-1:200278856672:AWSConfig_topic", 5 | "Message" : "{\"version\":\"0\",\"id\":\"4ad57195-6868-f2b7-a05c-5e8b510e4b32\",\"detail-type\":\"AWS API Call via CloudTrail\",\"source\":\"aws.ec2\",\"account\":\"200278856672\",\"time\":\"2017-11-16T10:48:39Z\",\"region\":\"us-east-1\",\"resources\":[],\"detail\":{\"eventVersion\":\"1.05\",\"userIdentity\":{\"type\":\"IAMUser\",\"principalId\":\"AIDAI37PIOA5B6VMIJRUU\",\"arn\":\"arn:aws:iam::200278856672:user/ladas\",\"accountId\":\"200278856672\",\"accessKeyId\":\"ASIAIXA4NYJIDT6VVBPA\",\"userName\":\"ladas\",\"sessionContext\":{\"attributes\":{\"mfaAuthenticated\":\"false\",\"creationDate\":\"2017-11-16T08:35:35Z\"}},\"invokedBy\":\"signin.amazonaws.com\"},\"eventTime\":\"2017-11-16T10:48:39Z\",\"eventSource\":\"ec2.amazonaws.com\",\"eventName\":\"DeleteRouteTable\",\"awsRegion\":\"us-east-1\",\"sourceIPAddress\":\"213.175.37.10\",\"userAgent\":\"signin.amazonaws.com\",\"requestParameters\":{\"routeTableId\":\"rtb-c18ca4bb\"},\"responseElements\":{\"_return\":true},\"requestID\":\"0e70085f-ffe0-45d7-85c6-848030fe4b71\",\"eventID\":\"58df13fd-f2fe-47f6-bf6d-3713d4664d1c\",\"eventType\":\"AwsApiCall\"}}", 6 | "Timestamp" : "2017-11-16T10:49:28.713Z", 7 | "SignatureVersion" : "1", 8 | "Signature" : "WEd4vtRRdZqo3DszR0JBn827SGr+AiQiBRD4dt0vYo3ZlzF6jU1mqAI3Ya/9V7HWZm8oekwpLNTQnh89i2zUQszZm7b6iw51l+jBenvpUZ6wWKL4qU2xWPAruwzjHjOySFIDMr0GGWdm3H1UAzS2IfqbNAma8pHwxaKqJdBUOmJgDmbWeUqCfpf6YP74v1NTOUamL6mFInGnoTuDEGXBUSnrgTE3G7f7whEuSwZQcLZcszbG0F5+3BkfrKVYlwlS9mYUq/9ZsqU6lCuyyflfKR7ai9aEIDgnp65POL1GAKjc3zhlBQucxKVUyP2j6BEFp9RNLkhW+JIxp2KioyFyjA==", 9 | "SigningCertURL" : "https://sns.us-east-1.amazonaws.com/SimpleNotificationService-433026a4050d206028891664da859041.pem", 10 | "UnsubscribeURL" : "https://sns.us-east-1.amazonaws.com/?Action=Unsubscribe&SubscriptionArn=arn:aws:sns:us-east-1:200278856672:AWSConfig_topic:515bacb7-efef-41f8-9266-7765b9afe39d" 11 | } -------------------------------------------------------------------------------- /spec/models/manageiq/providers/amazon/cloud_manager/event_catcher/cloud_watch/AWS_API_CALL_EnableVpcClassicLink.json: -------------------------------------------------------------------------------- 1 | { 2 | "Type" : "Notification", 3 | "MessageId" : "0726e527-e8e8-5332-9bab-b7a082c0b244", 4 | "TopicArn" : "arn:aws:sns:us-east-1:200278856672:AWSConfig_topic", 5 | "Message" : "{\"version\":\"0\",\"id\":\"fd7e8e4a-78eb-c7f4-0868-7b99c09146e1\",\"detail-type\":\"AWS API Call via CloudTrail\",\"source\":\"aws.ec2\",\"account\":\"200278856672\",\"time\":\"2017-11-16T10:26:29Z\",\"region\":\"us-east-1\",\"resources\":[],\"detail\":{\"eventVersion\":\"1.05\",\"userIdentity\":{\"type\":\"IAMUser\",\"principalId\":\"AIDAI37PIOA5B6VMIJRUU\",\"arn\":\"arn:aws:iam::200278856672:user/ladas\",\"accountId\":\"200278856672\",\"accessKeyId\":\"ASIAIXA4NYJIDT6VVBPA\",\"userName\":\"ladas\",\"sessionContext\":{\"attributes\":{\"mfaAuthenticated\":\"false\",\"creationDate\":\"2017-11-16T08:35:35Z\"}},\"invokedBy\":\"signin.amazonaws.com\"},\"eventTime\":\"2017-11-16T10:26:29Z\",\"eventSource\":\"ec2.amazonaws.com\",\"eventName\":\"EnableVpcClassicLink\",\"awsRegion\":\"us-east-1\",\"sourceIPAddress\":\"213.175.37.10\",\"userAgent\":\"signin.amazonaws.com\",\"requestParameters\":{\"vpcId\":\"vpc-d87ff0a0\"},\"responseElements\":{\"_return\":true},\"requestID\":\"124f81fa-a466-4356-bc8c-ffbc0051e69e\",\"eventID\":\"c08f4534-349a-4cc5-908f-ae7b445d9701\",\"eventType\":\"AwsApiCall\"}}", 6 | "Timestamp" : "2017-11-16T10:26:48.557Z", 7 | "SignatureVersion" : "1", 8 | "Signature" : "AbPGtMmwf4a2YL4Y5LETZvz11y43QJpTM6kNUVUiyQM0jBUV92d19Lqtw349MIbam/twiqEABTRlZx4n9grX8A2O/s5ahv4NAueyHOMccmH4enK6ninfjmiF4p30eF7rRBPubf4vKIEHV80+Z8cODJwK16HpB8/6gdtFGZ//7KeYdCbfyai1Ltkbjc/cvKT7mTnnzDoMUX8G255BjVvbCbq+TSetB1bBAAyefZ8T1vQ0OTP2zzkJqG5bTNbktwAsl3NbUH9DrBfqoNagB9PczOo076A2rwGk4NY/o3+kVgqsWkdSl9B9bmQUcwLQHUz1sjaWIpGh64Z/cP1p/n3f3w==", 9 | "SigningCertURL" : "https://sns.us-east-1.amazonaws.com/SimpleNotificationService-433026a4050d206028891664da859041.pem", 10 | "UnsubscribeURL" : "https://sns.us-east-1.amazonaws.com/?Action=Unsubscribe&SubscriptionArn=arn:aws:sns:us-east-1:200278856672:AWSConfig_topic:515bacb7-efef-41f8-9266-7765b9afe39d" 11 | } -------------------------------------------------------------------------------- /spec/models/manageiq/providers/amazon/cloud_manager/event_catcher/cloud_watch/AWS_API_CALL_ModifyNetworkInterfaceAttribute.json: -------------------------------------------------------------------------------- 1 | { 2 | "Type" : "Notification", 3 | "MessageId" : "baa8d2e5-fa3b-57af-8f86-80cfe7abce19", 4 | "TopicArn" : "arn:aws:sns:us-east-1:200278856672:AWSConfig_topic", 5 | "Message" : "{\"version\":\"0\",\"id\":\"2ff05bf6-4384-59ec-a833-f80fde41c8a3\",\"detail-type\":\"AWS API Call via CloudTrail\",\"source\":\"aws.ec2\",\"account\":\"200278856672\",\"time\":\"2017-09-06T15:58:24Z\",\"region\":\"us-east-1\",\"resources\":[],\"detail\":{\"eventVersion\":\"1.05\",\"userIdentity\":{\"type\":\"Root\",\"principalId\":\"200278856672\",\"arn\":\"arn:aws:iam::200278856672:root\",\"accountId\":\"200278856672\",\"invokedBy\":\"elasticloadbalancing.amazonaws.com\"},\"eventTime\":\"2017-09-06T15:58:24Z\",\"eventSource\":\"ec2.amazonaws.com\",\"eventName\":\"ModifyNetworkInterfaceAttribute\",\"awsRegion\":\"us-east-1\",\"sourceIPAddress\":\"elasticloadbalancing.amazonaws.com\",\"userAgent\":\"elasticloadbalancing.amazonaws.com\",\"requestParameters\":{\"networkInterfaceId\":\"eni-fd35bd0e\",\"groupSet\":{\"items\":[{\"groupId\":\"sg-734efc0f\"},{\"groupId\":\"sg-0d2cd677\"},{\"groupId\":\"sg-da58eaa6\"}]}},\"responseElements\":{\"_return\":true},\"requestID\":\"7cb5e9a7-19bf-496e-82ae-ce832c988537\",\"eventID\":\"552d765c-44c6-40d1-b59a-cb15633fa22e\",\"eventType\":\"AwsApiCall\"}}", 6 | "Timestamp" : "2017-09-06T15:59:12.208Z", 7 | "SignatureVersion" : "1", 8 | "Signature" : "RfjkaahQumMSNEic7cUpixrrHYzy1H7euZeiNsWr1VoTAERTWI8/jrrduuZMVWSOG5yoQr/LTlmPYvLg3ogZHoPW8gieVhcCh4x9wAqD5F+xQcEdHYnJ1pZfm2V70Z5ZPH/cUroDcsNM+B3BWD4fVsvm4yso1nkPoOxiEpaGipfEH5jvMo8rfOC3pBZ6qxR7suNq8b82AFdyTOtAp1OEnkJvr9+H7rlRe9x3fDqcM11swerrCnEuQklxpUJDx/FJSbHTZ0+mnM84X1HObkJuBfzSAK/nXiO3AGSwq6VWNlO9WLcowgOSrtenW3JwU9uOzfYUrzagEJW0Aj2E3xRQtg==", 9 | "SigningCertURL" : "https://sns.us-east-1.amazonaws.com/SimpleNotificationService-433026a4050d206028891664da859041.pem", 10 | "UnsubscribeURL" : "https://sns.us-east-1.amazonaws.com/?Action=Unsubscribe&SubscriptionArn=arn:aws:sns:us-east-1:200278856672:AWSConfig_topic:9fefb8fe-9bd0-4624-9281-a279994ed2b9" 11 | } -------------------------------------------------------------------------------- /spec/models/manageiq/providers/amazon/cloud_manager/event_catcher/cloud_watch/AWS_API_CALL_DeleteInternetGateway.json: -------------------------------------------------------------------------------- 1 | { 2 | "Type" : "Notification", 3 | "MessageId" : "a2832658-22c3-5f6d-8364-74df45602e39", 4 | "TopicArn" : "arn:aws:sns:us-east-1:200278856672:AWSConfig_topic", 5 | "Message" : "{\"version\":\"0\",\"id\":\"c7637893-022b-4fbf-9565-a8b5b64b45dc\",\"detail-type\":\"AWS API Call via CloudTrail\",\"source\":\"aws.ec2\",\"account\":\"200278856672\",\"time\":\"2017-11-16T10:15:34Z\",\"region\":\"us-east-1\",\"resources\":[],\"detail\":{\"eventVersion\":\"1.05\",\"userIdentity\":{\"type\":\"IAMUser\",\"principalId\":\"AIDAI37PIOA5B6VMIJRUU\",\"arn\":\"arn:aws:iam::200278856672:user/ladas\",\"accountId\":\"200278856672\",\"accessKeyId\":\"ASIAIXA4NYJIDT6VVBPA\",\"userName\":\"ladas\",\"sessionContext\":{\"attributes\":{\"mfaAuthenticated\":\"false\",\"creationDate\":\"2017-11-16T08:35:35Z\"}},\"invokedBy\":\"signin.amazonaws.com\"},\"eventTime\":\"2017-11-16T10:15:34Z\",\"eventSource\":\"ec2.amazonaws.com\",\"eventName\":\"DeleteInternetGateway\",\"awsRegion\":\"us-east-1\",\"sourceIPAddress\":\"213.175.37.10\",\"userAgent\":\"signin.amazonaws.com\",\"requestParameters\":{\"internetGatewayId\":\"igw-1e943f7b\"},\"responseElements\":{\"_return\":true},\"requestID\":\"0d5f138c-9938-47c4-a767-ad6a3e64a52c\",\"eventID\":\"cb23bfd5-f598-47f2-8abd-f9691919e811\",\"eventType\":\"AwsApiCall\"}}", 6 | "Timestamp" : "2017-11-16T10:16:03.904Z", 7 | "SignatureVersion" : "1", 8 | "Signature" : "GcRmIeIwjgIw6xqVtDBbHBndUe1BmcQnK3QPDIsgdt8pBqEvYKjYzggYoyS+uEmYvB4ToyTmBIFqw86vr2tQXK0BPOd2EVd1kAxpLG21VnpGVyEvyaHDwlNuau10XL7GF+D1C/ggL7/27avfInfPUBVKPfrBfmm5OSfaXoDSM2auIw6jjTQZVT/4z2gobhQTzbeTRXz0pDTFiFALRKu4xuVc36tfEd4IHTfTxUfelG+t9sTHpxa5YKmJopkxGzGXZp7l9VSRj1bXJUrAClo9bvkouoswXc9iiWy3jWG6ryrWFomNuTGQW8JFBfzrSrBhQ+1JxVwQYrLJaTZ9KdHRfw==", 9 | "SigningCertURL" : "https://sns.us-east-1.amazonaws.com/SimpleNotificationService-433026a4050d206028891664da859041.pem", 10 | "UnsubscribeURL" : "https://sns.us-east-1.amazonaws.com/?Action=Unsubscribe&SubscriptionArn=arn:aws:sns:us-east-1:200278856672:AWSConfig_topic:515bacb7-efef-41f8-9266-7765b9afe39d" 11 | } -------------------------------------------------------------------------------- /spec/models/manageiq/providers/amazon/cloud_manager/event_catcher/cloud_watch/AWS_API_CALL_DeregisterInstancesFromLoadBalancer.json: -------------------------------------------------------------------------------- 1 | { 2 | "Type" : "Notification", 3 | "MessageId" : "66a0d62c-da9b-5f6e-be64-8407ebc84e7b", 4 | "TopicArn" : "arn:aws:sns:us-east-1:200278856672:AWSConfig_topic", 5 | "Message" : "{\"version\":\"0\",\"id\":\"9125174e-e19f-895e-26ea-538f6132a4d3\",\"detail-type\":\"AWS API Call via CloudTrail\",\"source\":\"aws.elasticloadbalancing\",\"account\":\"200278856672\",\"time\":\"2017-09-07T11:35:02Z\",\"region\":\"us-east-1\",\"resources\":[],\"detail\":{\"eventVersion\":\"1.04\",\"userIdentity\":{\"type\":\"Root\",\"principalId\":\"200278856672\",\"arn\":\"arn:aws:iam::200278856672:root\",\"accountId\":\"200278856672\",\"invokedBy\":\"autoscaling.amazonaws.com\"},\"eventTime\":\"2017-09-07T11:35:02Z\",\"eventSource\":\"elasticloadbalancing.amazonaws.com\",\"eventName\":\"DeregisterInstancesFromLoadBalancer\",\"awsRegion\":\"us-east-1\",\"sourceIPAddress\":\"autoscaling.amazonaws.com\",\"userAgent\":\"autoscaling.amazonaws.com\",\"requestParameters\":{\"instances\":[{\"instanceId\":\"i-04863b664ebf1facf\"}],\"loadBalancerName\":\"ladas-tes-ElasticL-19VL2K06WQ7KI\"},\"responseElements\":{\"instances\":[]},\"requestID\":\"961cc13d-93c0-11e7-b0db-c557527b502e\",\"eventID\":\"55a8b05c-2d9e-44a4-bf73-bb54d7b3b534\",\"eventType\":\"AwsApiCall\",\"apiVersion\":\"2012-06-01\"}}", 6 | "Timestamp" : "2017-09-07T11:35:47.961Z", 7 | "SignatureVersion" : "1", 8 | "Signature" : "ULNVmy2ZRJnnSsIIexRdN+SlgCmiftOywuDGDjMxnmhxcUewBsTYNeTIKjy4jgvCh1zi90agzY6A0DVjmh+9iafGEoMTUsKTzY765MtnGZCk+EEXA//z5QeYHyH++V4tBTihRHQVc5kmz8FuO8hdURejAvfgAqn+JJksOpItZGJUnIvt5AWwDoX0VBUzgVHvYYL9ymkS2wnkPL9wLiKt80NG+WKRSbQ8khVUJp3ykRTqqmarNeXn373/zYBgTuiEhQboGA2YpZ9Q2qncjgv3SidyiWlVpc7ExjTFzMXrzNnmTr7DzaKuvy+pkfdg2exBzi6OVqiSbmI9qXfou5Q4IQ==", 9 | "SigningCertURL" : "https://sns.us-east-1.amazonaws.com/SimpleNotificationService-433026a4050d206028891664da859041.pem", 10 | "UnsubscribeURL" : "https://sns.us-east-1.amazonaws.com/?Action=Unsubscribe&SubscriptionArn=arn:aws:sns:us-east-1:200278856672:AWSConfig_topic:61d4ffc8-72e3-41a7-b28d-86e700532cd1" 11 | } -------------------------------------------------------------------------------- /spec/models/manageiq/providers/amazon/cloud_manager/event_catcher/cloud_watch/AWS_API_CALL_DisassociateAddress.json: -------------------------------------------------------------------------------- 1 | { 2 | "Type" : "Notification", 3 | "MessageId" : "06b387a7-730b-5016-ba27-d58d7b05b281", 4 | "TopicArn" : "arn:aws:sns:us-east-1:200278856672:AWSConfig_topic", 5 | "Message" : "{\"version\":\"0\",\"id\":\"4b5f0a59-b399-b5b4-e4b2-c12427004168\",\"detail-type\":\"AWS API Call via CloudTrail\",\"source\":\"aws.ec2\",\"account\":\"200278856672\",\"time\":\"2017-09-06T14:26:52Z\",\"region\":\"us-east-1\",\"resources\":[],\"detail\":{\"eventVersion\":\"1.05\",\"userIdentity\":{\"type\":\"IAMUser\",\"principalId\":\"AIDAI37PIOA5B6VMIJRUU\",\"arn\":\"arn:aws:iam::200278856672:user/ladas\",\"accountId\":\"200278856672\",\"accessKeyId\":\"ASIAJ2ZOO4EOXK7MYBZQ\",\"userName\":\"ladas\",\"sessionContext\":{\"attributes\":{\"mfaAuthenticated\":\"false\",\"creationDate\":\"2017-09-06T06:37:24Z\"}},\"invokedBy\":\"signin.amazonaws.com\"},\"eventTime\":\"2017-09-06T14:26:52Z\",\"eventSource\":\"ec2.amazonaws.com\",\"eventName\":\"DisassociateAddress\",\"awsRegion\":\"us-east-1\",\"sourceIPAddress\":\"213.175.37.10\",\"userAgent\":\"signin.amazonaws.com\",\"requestParameters\":{\"associationId\":\"eipassoc-2f8a391b\"},\"responseElements\":{\"_return\":true},\"requestID\":\"0ea1d8a5-5085-4e38-95ba-fd84dece4429\",\"eventID\":\"b7c490c7-e65d-4fae-a961-3f98718ce456\",\"eventType\":\"AwsApiCall\"}}", 6 | "Timestamp" : "2017-09-06T14:27:26.209Z", 7 | "SignatureVersion" : "1", 8 | "Signature" : "M6/D/H7OjMdLSSR1iwITPUjV733PF4Ce3e0P/lHS6jZOfcsSQujVxQz80WZWf/5QGiwV6XhGYA9IG/tCDDMZkOgW2dZp5apR09D7m0qQhuz0CoVctL6UrMD7UxzplXXjNv9TJcjM1r65OBapBH5j71xbmFPNGzyh/YQyF+UsnXhBZTpHcvB3pxYPWu4EkVfC1Xkrs7aAKBO1+OHFT89Nr9AN8BlJpPHo7UVqq0y2HDa+4ZrP/WFFo34X0iN4xWl/iRcRjXSKvRTDw2AFQtVJpQSeSocJEseTIPrTiDMDaECKu2KJ4Evrx7CyKfTFhW3uyontJWxMsBG0G7RfYeqChQ==", 9 | "SigningCertURL" : "https://sns.us-east-1.amazonaws.com/SimpleNotificationService-433026a4050d206028891664da859041.pem", 10 | "UnsubscribeURL" : "https://sns.us-east-1.amazonaws.com/?Action=Unsubscribe&SubscriptionArn=arn:aws:sns:us-east-1:200278856672:AWSConfig_topic:9fefb8fe-9bd0-4624-9281-a279994ed2b9" 11 | } -------------------------------------------------------------------------------- /spec/models/manageiq/providers/amazon/cloud_manager/event_catcher/cloud_watch/AWS_API_CALL_DeleteNetworkInterface.json: -------------------------------------------------------------------------------- 1 | { 2 | "Type" : "Notification", 3 | "MessageId" : "f4e8ce04-e71d-54b2-9bf0-9c8380a048d8", 4 | "TopicArn" : "arn:aws:sns:us-east-1:200278856672:AWSConfig_topic", 5 | "Message" : "{\"version\":\"0\",\"id\":\"400ac3fa-1942-3096-1217-5d7e9dd58c08\",\"detail-type\":\"AWS API Call via CloudTrail\",\"source\":\"aws.ec2\",\"account\":\"200278856672\",\"time\":\"2017-11-16T10:15:37Z\",\"region\":\"us-east-1\",\"resources\":[],\"detail\":{\"eventVersion\":\"1.05\",\"userIdentity\":{\"type\":\"IAMUser\",\"principalId\":\"AIDAI37PIOA5B6VMIJRUU\",\"arn\":\"arn:aws:iam::200278856672:user/ladas\",\"accountId\":\"200278856672\",\"accessKeyId\":\"ASIAIXA4NYJIDT6VVBPA\",\"userName\":\"ladas\",\"sessionContext\":{\"attributes\":{\"mfaAuthenticated\":\"false\",\"creationDate\":\"2017-11-16T08:35:35Z\"}},\"invokedBy\":\"signin.amazonaws.com\"},\"eventTime\":\"2017-11-16T10:15:37Z\",\"eventSource\":\"ec2.amazonaws.com\",\"eventName\":\"DeleteNetworkInterface\",\"awsRegion\":\"us-east-1\",\"sourceIPAddress\":\"213.175.37.10\",\"userAgent\":\"signin.amazonaws.com\",\"requestParameters\":{\"networkInterfaceId\":\"eni-3f67fd15\"},\"responseElements\":{\"_return\":true},\"requestID\":\"bd6cb880-0da4-43ca-8e0b-0042b0d826ed\",\"eventID\":\"3de1b766-abb7-4cd3-8423-f9c4f76d5729\",\"eventType\":\"AwsApiCall\"}}", 6 | "Timestamp" : "2017-11-16T10:16:29.946Z", 7 | "SignatureVersion" : "1", 8 | "Signature" : "Ll56pri9QE7PjBohdGt2kiRZCmbVQ50OFcfWPZWJfsQ8NjyJvYcKm3Moq+bUpmNFrXrWBYlKmgEfFpGNB2/yp77JN4L0MgNfuV41gs13LRT44QsrdaylmSiZNFhih8lhq5IQMRk4Q29Qh31+0eU71Mcn5b1JyYigmd22fGhVph/f4Qvlh7HWZC5Cz8kVOxhFDJbIdv2Ip+PdtG5r+Gf3Yz+ugG3Kal05CbRI3w/Stviq+dXDehD5oYrZ6voeQEB5zSxohaSlOB+2iRQoz9Iy3TJS+weC5EHtcEZa5xs8TVVroLEXfbW40klWTsStkjamd6YSPZE0jdFX5EcTzXSx2Q==", 9 | "SigningCertURL" : "https://sns.us-east-1.amazonaws.com/SimpleNotificationService-433026a4050d206028891664da859041.pem", 10 | "UnsubscribeURL" : "https://sns.us-east-1.amazonaws.com/?Action=Unsubscribe&SubscriptionArn=arn:aws:sns:us-east-1:200278856672:AWSConfig_topic:515bacb7-efef-41f8-9266-7765b9afe39d" 11 | } -------------------------------------------------------------------------------- /spec/models/manageiq/providers/amazon/cloud_manager/event_catcher/cloud_watch/AWS_API_CALL_DetachNetworkInterface.json: -------------------------------------------------------------------------------- 1 | { 2 | "Type" : "Notification", 3 | "MessageId" : "0ede56f0-28b8-534a-9374-04da23b15298", 4 | "TopicArn" : "arn:aws:sns:us-east-1:200278856672:AWSConfig_topic", 5 | "Message" : "{\"version\":\"0\",\"id\":\"300b8d02-8105-d684-f10f-cce8718098d0\",\"detail-type\":\"AWS API Call via CloudTrail\",\"source\":\"aws.ec2\",\"account\":\"200278856672\",\"time\":\"2017-09-06T14:39:12Z\",\"region\":\"us-east-1\",\"resources\":[],\"detail\":{\"eventVersion\":\"1.05\",\"userIdentity\":{\"type\":\"IAMUser\",\"principalId\":\"AIDAI37PIOA5B6VMIJRUU\",\"arn\":\"arn:aws:iam::200278856672:user/ladas\",\"accountId\":\"200278856672\",\"accessKeyId\":\"ASIAJ2ZOO4EOXK7MYBZQ\",\"userName\":\"ladas\",\"sessionContext\":{\"attributes\":{\"mfaAuthenticated\":\"false\",\"creationDate\":\"2017-09-06T06:37:24Z\"}},\"invokedBy\":\"signin.amazonaws.com\"},\"eventTime\":\"2017-09-06T14:39:12Z\",\"eventSource\":\"ec2.amazonaws.com\",\"eventName\":\"DetachNetworkInterface\",\"awsRegion\":\"us-east-1\",\"sourceIPAddress\":\"213.175.37.10\",\"userAgent\":\"signin.amazonaws.com\",\"requestParameters\":{\"attachmentId\":\"eni-attach-010bacf4\"},\"responseElements\":{\"_return\":true},\"requestID\":\"6a53aed6-e69b-4353-bab4-3ee7d4e666ec\",\"eventID\":\"0bcd6a8f-b228-431d-aff7-7cd9ef209e0d\",\"eventType\":\"AwsApiCall\"}}", 6 | "Timestamp" : "2017-09-06T14:40:09.391Z", 7 | "SignatureVersion" : "1", 8 | "Signature" : "TXHYU5aKQu6TeDd6IJNAjXXtmC8ygkxJRU/pBQI6q/7l9fK9FOePiqS3PYnelArqfnuQ+zPO7XCAYpVmGbqUNhufdKhoRNpYxdv/LyOARM6jvSTTUWwss6to+RsaiV6uPPajwIBvvQYgmvphwo9dCpc97aNaeOHo7xkUnO6pVKx3x1TWWv1Y4j+N8oNJUPiDsc/p9i9NG3E/P0k00g50nUp26JrDlCjbO2q3gChZUYKBYSrVs2MACMBlm+wdGIENSav1aS1yXu/oQKYvlZ4k7MP2Os5TzbZDat8X4tV7BksHTlXM0NdVOHeft6EAMVBQzexQQMBzXsG2NSDM89e2AA==", 9 | "SigningCertURL" : "https://sns.us-east-1.amazonaws.com/SimpleNotificationService-433026a4050d206028891664da859041.pem", 10 | "UnsubscribeURL" : "https://sns.us-east-1.amazonaws.com/?Action=Unsubscribe&SubscriptionArn=arn:aws:sns:us-east-1:200278856672:AWSConfig_topic:9fefb8fe-9bd0-4624-9281-a279994ed2b9" 11 | } -------------------------------------------------------------------------------- /spec/models/manageiq/providers/amazon/cloud_manager/event_catcher/cloud_watch/AWS_API_CALL_DisassociateRouteTable.json: -------------------------------------------------------------------------------- 1 | { 2 | "Type" : "Notification", 3 | "MessageId" : "1c385176-4158-5016-8b34-03f12e42a222", 4 | "TopicArn" : "arn:aws:sns:us-east-1:200278856672:AWSConfig_topic", 5 | "Message" : "{\"version\":\"0\",\"id\":\"c57594ec-ee59-fd34-f726-9bef423e97ab\",\"detail-type\":\"AWS API Call via CloudTrail\",\"source\":\"aws.ec2\",\"account\":\"200278856672\",\"time\":\"2017-11-16T10:47:47Z\",\"region\":\"us-east-1\",\"resources\":[],\"detail\":{\"eventVersion\":\"1.05\",\"userIdentity\":{\"type\":\"IAMUser\",\"principalId\":\"AIDAI37PIOA5B6VMIJRUU\",\"arn\":\"arn:aws:iam::200278856672:user/ladas\",\"accountId\":\"200278856672\",\"accessKeyId\":\"ASIAIXA4NYJIDT6VVBPA\",\"userName\":\"ladas\",\"sessionContext\":{\"attributes\":{\"mfaAuthenticated\":\"false\",\"creationDate\":\"2017-11-16T08:35:35Z\"}},\"invokedBy\":\"signin.amazonaws.com\"},\"eventTime\":\"2017-11-16T10:47:47Z\",\"eventSource\":\"ec2.amazonaws.com\",\"eventName\":\"DisassociateRouteTable\",\"awsRegion\":\"us-east-1\",\"sourceIPAddress\":\"213.175.37.10\",\"userAgent\":\"signin.amazonaws.com\",\"requestParameters\":{\"associationId\":\"rtbassoc-cd75ecb0\"},\"responseElements\":{\"_return\":true},\"requestID\":\"ae42c23c-16df-4c7f-ba2e-c9d293dc56b7\",\"eventID\":\"b6f99901-96ec-439f-a04d-a62edf01202b\",\"eventType\":\"AwsApiCall\"}}", 6 | "Timestamp" : "2017-11-16T10:47:54.723Z", 7 | "SignatureVersion" : "1", 8 | "Signature" : "ZJKM9DHjlEOfym3ZRzDXpWQaGMuHeUQGeseo41eIroboeJHwDVplXo1juurEMQLDE3MUmpYFqGGLhYEcWaz//9hZVlkUMq3MOJmfn9wLMKgur1lEPxqC2rM/k5oY8y4F/1ktUYbfCoSJlXmaChURIlBM3lnyL+uc0qZcxiM/dDYCBFXAUSvueTjpJZuHOd+q44VnYe3+5JnZf+2C+lIRYAcrmdgctIG+FqqRRqSClR4ISzp//5plCVpm/eH7y3e4BEf9mC0xhS4pS+A6CUQkM1DdNoANXewCn5/yKh/plKOHG7lMCb+ZDv4wJqJoZWwAuIPbIMcw/7leXO2Tb49RvA==", 9 | "SigningCertURL" : "https://sns.us-east-1.amazonaws.com/SimpleNotificationService-433026a4050d206028891664da859041.pem", 10 | "UnsubscribeURL" : "https://sns.us-east-1.amazonaws.com/?Action=Unsubscribe&SubscriptionArn=arn:aws:sns:us-east-1:200278856672:AWSConfig_topic:515bacb7-efef-41f8-9266-7765b9afe39d" 11 | } -------------------------------------------------------------------------------- /spec/models/manageiq/providers/amazon/cloud_manager/event_catcher/cloud_watch/AWS_API_CALL_AllocateAddress.json: -------------------------------------------------------------------------------- 1 | { 2 | "Type" : "Notification", 3 | "MessageId" : "2f600ff2-321b-5f4b-a444-5dd82597e495", 4 | "TopicArn" : "arn:aws:sns:us-east-1:200278856672:AWSConfig_topic", 5 | "Message" : "{\"version\":\"0\",\"id\":\"741e87b9-a177-2e79-c06f-1fc3c213fc24\",\"detail-type\":\"AWS API Call via CloudTrail\",\"source\":\"aws.ec2\",\"account\":\"200278856672\",\"time\":\"2017-09-06T15:32:38Z\",\"region\":\"us-east-1\",\"resources\":[],\"detail\":{\"eventVersion\":\"1.05\",\"userIdentity\":{\"type\":\"IAMUser\",\"principalId\":\"AIDAI37PIOA5B6VMIJRUU\",\"arn\":\"arn:aws:iam::200278856672:user/ladas\",\"accountId\":\"200278856672\",\"accessKeyId\":\"ASIAJQN5DDY7EVUBTSCQ\",\"userName\":\"ladas\",\"sessionContext\":{\"attributes\":{\"mfaAuthenticated\":\"false\",\"creationDate\":\"2017-09-06T06:37:24Z\"}},\"invokedBy\":\"signin.amazonaws.com\"},\"eventTime\":\"2017-09-06T15:32:38Z\",\"eventSource\":\"ec2.amazonaws.com\",\"eventName\":\"AllocateAddress\",\"awsRegion\":\"us-east-1\",\"sourceIPAddress\":\"213.175.37.10\",\"userAgent\":\"signin.amazonaws.com\",\"requestParameters\":{\"domain\":\"standard\"},\"responseElements\":{\"publicIp\":\"23.23.209.146\",\"domain\":\"standard\"},\"requestID\":\"5acb12a7-13cd-4ad4-a2e4-40f4c4c4323b\",\"eventID\":\"e1092798-b275-4f8c-a0c7-22f8ca4eed46\",\"eventType\":\"AwsApiCall\"}}", 6 | "Timestamp" : "2017-09-06T15:33:32.725Z", 7 | "SignatureVersion" : "1", 8 | "Signature" : "TVQevx7nX7HOukV1X3UDVH4TIHCxBTl2OiBD6i47yIENOi4lLJimRtLRPbYX0U2d6H2+5R4OJD334Cyb4XrkwXUaYZoldsULMZ1E6TcnVXujudRNyIT0+QNvRN+1fx2GUTOjMQ6shGH8mjVPFhGtGp2av0zgQTAJkcfTKwGON1Wt8xYNWu0pPXNPim6ZHGGqbl21yfpEIwRqB85w/7ZcilyxRZS2SPDoN0fo32pcJLxB5vyuVS2vGD0ObcZUKjw28UkG/dxyzTAvnfd8VVQrwY9o/Lp+BDIhaXJZPhfBAvbzTh/gIvy9KXnipeDtRZTNugW7wHV9pCwOOuMCnvS63A==", 9 | "SigningCertURL" : "https://sns.us-east-1.amazonaws.com/SimpleNotificationService-433026a4050d206028891664da859041.pem", 10 | "UnsubscribeURL" : "https://sns.us-east-1.amazonaws.com/?Action=Unsubscribe&SubscriptionArn=arn:aws:sns:us-east-1:200278856672:AWSConfig_topic:9fefb8fe-9bd0-4624-9281-a279994ed2b9" 11 | } -------------------------------------------------------------------------------- /spec/models/manageiq/providers/amazon/cloud_manager/event_catcher/cloud_watch/AWS_API_CALL_DeleteRoute.json: -------------------------------------------------------------------------------- 1 | { 2 | "Type" : "Notification", 3 | "MessageId" : "94a7f1b1-9378-5172-a828-a336e202d3c6", 4 | "TopicArn" : "arn:aws:sns:us-east-1:200278856672:AWSConfig_topic", 5 | "Message" : "{\"version\":\"0\",\"id\":\"8f8abc53-c868-2a9c-5b91-29891d3794e1\",\"detail-type\":\"AWS API Call via CloudTrail\",\"source\":\"aws.ec2\",\"account\":\"200278856672\",\"time\":\"2017-11-16T10:57:11Z\",\"region\":\"us-east-1\",\"resources\":[],\"detail\":{\"eventVersion\":\"1.05\",\"userIdentity\":{\"type\":\"IAMUser\",\"principalId\":\"AIDAI37PIOA5B6VMIJRUU\",\"arn\":\"arn:aws:iam::200278856672:user/ladas\",\"accountId\":\"200278856672\",\"accessKeyId\":\"ASIAIXA4NYJIDT6VVBPA\",\"userName\":\"ladas\",\"sessionContext\":{\"attributes\":{\"mfaAuthenticated\":\"false\",\"creationDate\":\"2017-11-16T08:35:35Z\"}},\"invokedBy\":\"signin.amazonaws.com\"},\"eventTime\":\"2017-11-16T10:57:11Z\",\"eventSource\":\"ec2.amazonaws.com\",\"eventName\":\"DeleteRoute\",\"awsRegion\":\"us-east-1\",\"sourceIPAddress\":\"213.175.37.10\",\"userAgent\":\"signin.amazonaws.com\",\"requestParameters\":{\"routeTableId\":\"rtb-d37690ab\",\"destinationCidrBlock\":\"0.0.0.0/0\"},\"responseElements\":{\"_return\":true},\"requestID\":\"54c7a84f-86fc-495d-b7ac-6784c5ca8063\",\"eventID\":\"bf94ff91-d531-418a-94f5-e706bf12d488\",\"eventType\":\"AwsApiCall\"}}", 6 | "Timestamp" : "2017-11-16T10:58:02.929Z", 7 | "SignatureVersion" : "1", 8 | "Signature" : "AEuWJZobQzlRZfSX4sdwkTh/iPRqwJYwhBfiXO6d/2la14bGActfojN+1S9VV2b82NnRBWdfK8enHLSxd53omPaoITmNZyu1o3Q7z8QQpkmUJt8fppHZwS6Sa77FiNwjx8pDqqixOOdRv556Yn01oM+Q5RLo1/nqToFKmcw+kf/kFUgnF3gWvuEzSs71lMobfzAk+qFPTH/2fP+ATOzhvAVH5bzKZwabPEPeI4fu1FKOkh5A8Rf7b6XwZln6pB7Zacb5yQjYXVACXwtki4iU1FxmDCdLB7lv5WCfqsYYHtRD+b5IGk1RhUhe7RRticH7TpeovecjW+C5PXN6nPsGCQ==", 9 | "SigningCertURL" : "https://sns.us-east-1.amazonaws.com/SimpleNotificationService-433026a4050d206028891664da859041.pem", 10 | "UnsubscribeURL" : "https://sns.us-east-1.amazonaws.com/?Action=Unsubscribe&SubscriptionArn=arn:aws:sns:us-east-1:200278856672:AWSConfig_topic:515bacb7-efef-41f8-9266-7765b9afe39d" 11 | } -------------------------------------------------------------------------------- /spec/models/manageiq/providers/amazon/cloud_manager/event_catcher/cloud_watch/AWS_API_CALL_DeleteSecurityGroup.json: -------------------------------------------------------------------------------- 1 | { 2 | "Type" : "Notification", 3 | "MessageId" : "ef555e49-609e-5d40-9c4e-0c62510d186c", 4 | "TopicArn" : "arn:aws:sns:us-east-1:200278856672:AWSConfig_topic", 5 | "Message" : "{\"version\":\"0\",\"id\":\"21db91c2-370b-d063-a999-3213ee4e8892\",\"detail-type\":\"AWS API Call via CloudTrail\",\"source\":\"aws.ec2\",\"account\":\"200278856672\",\"time\":\"2017-09-07T11:36:15Z\",\"region\":\"us-east-1\",\"resources\":[],\"detail\":{\"eventVersion\":\"1.05\",\"userIdentity\":{\"type\":\"IAMUser\",\"principalId\":\"AIDAI37PIOA5B6VMIJRUU\",\"arn\":\"arn:aws:iam::200278856672:user/ladas\",\"accountId\":\"200278856672\",\"userName\":\"ladas\",\"sessionContext\":{\"attributes\":{\"mfaAuthenticated\":\"false\",\"creationDate\":\"2017-09-07T09:20:25Z\"}},\"invokedBy\":\"cloudformation.amazonaws.com\"},\"eventTime\":\"2017-09-07T11:36:15Z\",\"eventSource\":\"ec2.amazonaws.com\",\"eventName\":\"DeleteSecurityGroup\",\"awsRegion\":\"us-east-1\",\"sourceIPAddress\":\"cloudformation.amazonaws.com\",\"userAgent\":\"cloudformation.amazonaws.com\",\"requestParameters\":{\"groupName\":\"ladas-test-22-InstanceSecurityGroup-1SG39VFG1U29M\"},\"responseElements\":{\"_return\":true},\"requestID\":\"8757d094-e7e8-43e9-8279-748e5be7f513\",\"eventID\":\"19a0621f-1cd6-45f8-8f46-bd6c103d2dfc\",\"eventType\":\"AwsApiCall\"}}", 6 | "Timestamp" : "2017-09-07T11:36:51.257Z", 7 | "SignatureVersion" : "1", 8 | "Signature" : "VtvzLjezCj3juUBAnZ10AyvV0RRv2DMdKniM57kcGugmbAk9OXUFTA3YuFATuuM4dXU5jfYaJPCQLcmthvYc/mlPwiSFNXxSJtr9wO6S6lBq9ByvMybcVsJIjpLwQMa4Ptu9z1XLkRgx+M9pg+3vwiWaNNMMMgKdKBG6jMb3qfVWweoCvIuRKaZFIbxl2xO7zW3XxUyqtLBum/k9c8ojv1jXE1XFBcpI645g6ZAgS++XEvCp5PikMO1ZILEe4x0zMUamcUzdM9PZzXCaUWWcVGVlYjbEzZqZrfkMQSWMYnW7SMZPhjwSzWaQKrwJa/r0d/+q3JZNcWxLf7hax199tw==", 9 | "SigningCertURL" : "https://sns.us-east-1.amazonaws.com/SimpleNotificationService-433026a4050d206028891664da859041.pem", 10 | "UnsubscribeURL" : "https://sns.us-east-1.amazonaws.com/?Action=Unsubscribe&SubscriptionArn=arn:aws:sns:us-east-1:200278856672:AWSConfig_topic:61d4ffc8-72e3-41a7-b28d-86e700532cd1" 11 | } -------------------------------------------------------------------------------- /spec/models/manageiq/providers/amazon/cloud_manager/event_catcher/cloud_watch/AWS_API_CALL_AssociateDhcpOptions.json: -------------------------------------------------------------------------------- 1 | { 2 | "Type" : "Notification", 3 | "MessageId" : "2d78bee6-d589-5b91-b173-ec61bc1bc43d", 4 | "TopicArn" : "arn:aws:sns:us-east-1:200278856672:AWSConfig_topic", 5 | "Message" : "{\"version\":\"0\",\"id\":\"3e4e3740-5745-49bb-5c37-b2334a357a1d\",\"detail-type\":\"AWS API Call via CloudTrail\",\"source\":\"aws.ec2\",\"account\":\"200278856672\",\"time\":\"2017-11-16T10:24:09Z\",\"region\":\"us-east-1\",\"resources\":[],\"detail\":{\"eventVersion\":\"1.05\",\"userIdentity\":{\"type\":\"IAMUser\",\"principalId\":\"AIDAI37PIOA5B6VMIJRUU\",\"arn\":\"arn:aws:iam::200278856672:user/ladas\",\"accountId\":\"200278856672\",\"accessKeyId\":\"ASIAIXA4NYJIDT6VVBPA\",\"userName\":\"ladas\",\"sessionContext\":{\"attributes\":{\"mfaAuthenticated\":\"false\",\"creationDate\":\"2017-11-16T08:35:35Z\"}},\"invokedBy\":\"signin.amazonaws.com\"},\"eventTime\":\"2017-11-16T10:24:09Z\",\"eventSource\":\"ec2.amazonaws.com\",\"eventName\":\"AssociateDhcpOptions\",\"awsRegion\":\"us-east-1\",\"sourceIPAddress\":\"213.175.37.10\",\"userAgent\":\"signin.amazonaws.com\",\"requestParameters\":{\"dhcpOptionsId\":\"default\",\"vpcId\":\"vpc-d87ff0a0\"},\"responseElements\":{\"_return\":true},\"requestID\":\"0012c5b7-162e-4d6f-b095-920d935658a5\",\"eventID\":\"87cf35ec-1e0b-424a-a54e-eaf5c7f58a56\",\"eventType\":\"AwsApiCall\"}}", 6 | "Timestamp" : "2017-11-16T10:24:18.884Z", 7 | "SignatureVersion" : "1", 8 | "Signature" : "TxgIaZwmZe7B0PMp3y5kJGFvsW+T2s3TMoq39BLNF1CI5x1nQGqcdkWQ3xuB0TXipcW1WtMKuNatflbuprc0zuQUvpHyv8VWDfohAfxd3zF/G1/RLfPqbh+SPEJY71Ypd5YokT+QNWBbRWB4nh+yovmDf0Ev/4ORMWtJV3DaOMyoXx9v8vXfGuteuw4DNBoYv3UGnbrz6YPsQeZR6gbJ2UnyDEpHFTvzxwJE0+0Ob/zifrbUMgBAfp7sStY+e2jNxaRZ1P92a3w+9Ur2IP3IvaFaGD19s3+HXM4a250jYV3aCUqUZoLLspO4U7/D9Nsz/kgJ6SxTqcQAcQUHBb5UGA==", 9 | "SigningCertURL" : "https://sns.us-east-1.amazonaws.com/SimpleNotificationService-433026a4050d206028891664da859041.pem", 10 | "UnsubscribeURL" : "https://sns.us-east-1.amazonaws.com/?Action=Unsubscribe&SubscriptionArn=arn:aws:sns:us-east-1:200278856672:AWSConfig_topic:515bacb7-efef-41f8-9266-7765b9afe39d" 11 | } -------------------------------------------------------------------------------- /spec/models/manageiq/providers/amazon/cloud_manager/event_catcher/cloud_watch/AWS_API_CALL_ModifyVpcAttribute.json: -------------------------------------------------------------------------------- 1 | { 2 | "Type" : "Notification", 3 | "MessageId" : "016ece18-a18e-5840-bd52-9c9fcbdc480f", 4 | "TopicArn" : "arn:aws:sns:us-east-1:200278856672:AWSConfig_topic", 5 | "Message" : "{\"version\":\"0\",\"id\":\"e5958dc0-4cdd-9f48-8439-cd6faf38690c\",\"detail-type\":\"AWS API Call via CloudTrail\",\"source\":\"aws.ec2\",\"account\":\"200278856672\",\"time\":\"2017-11-16T10:26:37Z\",\"region\":\"us-east-1\",\"resources\":[],\"detail\":{\"eventVersion\":\"1.05\",\"userIdentity\":{\"type\":\"IAMUser\",\"principalId\":\"AIDAI37PIOA5B6VMIJRUU\",\"arn\":\"arn:aws:iam::200278856672:user/ladas\",\"accountId\":\"200278856672\",\"accessKeyId\":\"ASIAIXA4NYJIDT6VVBPA\",\"userName\":\"ladas\",\"sessionContext\":{\"attributes\":{\"mfaAuthenticated\":\"false\",\"creationDate\":\"2017-11-16T08:35:35Z\"}},\"invokedBy\":\"signin.amazonaws.com\"},\"eventTime\":\"2017-11-16T10:26:37Z\",\"eventSource\":\"ec2.amazonaws.com\",\"eventName\":\"ModifyVpcAttribute\",\"awsRegion\":\"us-east-1\",\"sourceIPAddress\":\"213.175.37.10\",\"userAgent\":\"signin.amazonaws.com\",\"requestParameters\":{\"vpcId\":\"vpc-d87ff0a0\",\"enableDnsSupport\":{\"value\":false}},\"responseElements\":{\"_return\":true},\"requestID\":\"70b8f20a-696b-4011-be4d-04823e3eacf4\",\"eventID\":\"c6518d4c-6ecd-45dc-a079-8057675e5055\",\"eventType\":\"AwsApiCall\"}}", 6 | "Timestamp" : "2017-11-16T10:27:30.884Z", 7 | "SignatureVersion" : "1", 8 | "Signature" : "i/HtVHLq1nrlBosU3Up++Is3louw8e24jXSFdy/TZNKTuLzJKNBCGDX5/abYq7VSFO2QHqYloi+GkTOBaQWnTeVbejEu+WPq/qtEcHc42Sic6XFaTbgSS80jyxXA5fC9ScumsTBLz+Z9aMcgq8hVn69esGaynW8vMoG5M7ojs9YXiWcY70WC+ugMMAZckXY4qzkwfRlPsstnFI3nAfr29wi4dOH8nzgjGBt4+u/yos8pmNwMbVe44VkNsZQqRQhtRxNh8xdTbhOcTYl6zrHV/tQy1PuB+wmiYxfrUkVu+/Rf/OO0iqhsN9mrVx+wOKE8pc9cymwCrCayDJ55U2WCVg==", 9 | "SigningCertURL" : "https://sns.us-east-1.amazonaws.com/SimpleNotificationService-433026a4050d206028891664da859041.pem", 10 | "UnsubscribeURL" : "https://sns.us-east-1.amazonaws.com/?Action=Unsubscribe&SubscriptionArn=arn:aws:sns:us-east-1:200278856672:AWSConfig_topic:515bacb7-efef-41f8-9266-7765b9afe39d" 11 | } -------------------------------------------------------------------------------- /spec/models/manageiq/providers/amazon/cloud_manager/event_catcher/cloud_watch/AWS_API_CALL_RebootInstances.json: -------------------------------------------------------------------------------- 1 | { 2 | "Type" : "Notification", 3 | "MessageId" : "9d62b779-0ff7-5ac5-b6a8-e55e11e06959", 4 | "TopicArn" : "arn:aws:sns:us-east-1:200278856672:AWSConfig_topic", 5 | "Message" : "{\"version\":\"0\",\"id\":\"b6f5fd50-3b83-001c-2025-f016c7971063\",\"detail-type\":\"AWS API Call via CloudTrail\",\"source\":\"aws.ec2\",\"account\":\"200278856672\",\"time\":\"2017-09-04T09:23:58Z\",\"region\":\"us-east-1\",\"resources\":[],\"detail\":{\"eventVersion\":\"1.05\",\"userIdentity\":{\"type\":\"IAMUser\",\"principalId\":\"AIDAI37PIOA5B6VMIJRUU\",\"arn\":\"arn:aws:iam::200278856672:user/ladas\",\"accountId\":\"200278856672\",\"accessKeyId\":\"ASIAIJN7TO6BZM7LX5GQ\",\"userName\":\"ladas\",\"sessionContext\":{\"attributes\":{\"mfaAuthenticated\":\"false\",\"creationDate\":\"2017-09-04T08:49:07Z\"}},\"invokedBy\":\"signin.amazonaws.com\"},\"eventTime\":\"2017-09-04T09:23:58Z\",\"eventSource\":\"ec2.amazonaws.com\",\"eventName\":\"RebootInstances\",\"awsRegion\":\"us-east-1\",\"sourceIPAddress\":\"213.175.37.10\",\"userAgent\":\"signin.amazonaws.com\",\"requestParameters\":{\"instancesSet\":{\"items\":[{\"instanceId\":\"i-0a83d1c42220da9a1\"}]}},\"responseElements\":{\"_return\":true},\"requestID\":\"d098f6d0-566d-474f-9536-631559e10dd2\",\"eventID\":\"0e7c1e7b-0f74-4d87-9312-f1b87e5a7014\",\"eventType\":\"AwsApiCall\"}}", 6 | "Timestamp" : "2017-09-04T09:24:39.797Z", 7 | "SignatureVersion" : "1", 8 | "Signature" : "Fs3t/t4oL+KDpRv1+J2y+S83EWYDeJGYHpsC+HqEDqDfDH+LggKHqyXDIoNhic1W7R8eh+J4e/Xx8x60yVvJtMoI5+4aGkndealHUsnjuCtjOfIEIWvDIlRnaBFVxwAcPCXVc8GY/sezajfFW4hquwxvblv3YmoDB3lGuRw7SlozsVUIMCOScwMQNXFHVmdPXTN/HxfTeO9F3hqBm2wsWytSPmp3czyAByVVNoE+jaCok/L80lnHkviuQZQQFpF6YJV0lNSruIcQC/yOYs1hBiAtsR5c6Fx3qMhFCxc92kGAuLHw091srQftgqF4CmxV7Cw/v9FtQH4ZIyWTtE/HYw==", 9 | "SigningCertURL" : "https://sns.us-east-1.amazonaws.com/SimpleNotificationService-433026a4050d206028891664da859041.pem", 10 | "UnsubscribeURL" : "https://sns.us-east-1.amazonaws.com/?Action=Unsubscribe&SubscriptionArn=arn:aws:sns:us-east-1:200278856672:AWSConfig_topic:9fefb8fe-9bd0-4624-9281-a279994ed2b9" 11 | } -------------------------------------------------------------------------------- /spec/models/manageiq/providers/amazon/cloud_manager/event_catcher/cloud_watch/AWS_API_CALL_TerminateInstances.json: -------------------------------------------------------------------------------- 1 | { 2 | "Type" : "Notification", 3 | "MessageId" : "3762f706-5d8b-5b15-8d57-a52d6cee2466", 4 | "TopicArn" : "arn:aws:sns:us-east-1:200278856672:AWSConfig_topic", 5 | "Message" : "{\"version\":\"0\",\"id\":\"271b2503-82d7-ce59-fd92-5fbea9af8420\",\"detail-type\":\"AWS API Call via CloudTrail\",\"source\":\"aws.ec2\",\"account\":\"200278856672\",\"time\":\"2017-09-07T11:35:04Z\",\"region\":\"us-east-1\",\"resources\":[],\"detail\":{\"eventVersion\":\"1.05\",\"userIdentity\":{\"type\":\"Root\",\"principalId\":\"200278856672\",\"arn\":\"arn:aws:iam::200278856672:root\",\"accountId\":\"200278856672\",\"invokedBy\":\"autoscaling.amazonaws.com\"},\"eventTime\":\"2017-09-07T11:35:04Z\",\"eventSource\":\"ec2.amazonaws.com\",\"eventName\":\"TerminateInstances\",\"awsRegion\":\"us-east-1\",\"sourceIPAddress\":\"autoscaling.amazonaws.com\",\"userAgent\":\"autoscaling.amazonaws.com\",\"requestParameters\":{\"instancesSet\":{\"items\":[{\"instanceId\":\"i-04863b664ebf1facf\"}]}},\"responseElements\":{\"instancesSet\":{\"items\":[{\"instanceId\":\"i-04863b664ebf1facf\",\"currentState\":{\"code\":32,\"name\":\"shutting-down\"},\"previousState\":{\"code\":16,\"name\":\"running\"}}]}},\"requestID\":\"26f30ec9-3d80-4e10-b051-d2c5364e0eba\",\"eventID\":\"6144f18f-e61f-4eea-b59d-ac2c24b1f2a8\",\"eventType\":\"AwsApiCall\"}}", 6 | "Timestamp" : "2017-09-07T11:36:05.278Z", 7 | "SignatureVersion" : "1", 8 | "Signature" : "bAmLDXSUHqhUteyvhFy16SV7SLvbCtZyAf6dvuN4mFcG/u4ZFE8+2SJoa/V4XUgTd9nMFFCn1h7ZO9vx6he3ZnRPrQRZYAhkMOA4HDhzWezqth4ioudZEPZZyxkJp/VjQl/vyJqPXT8MhYenM0bUdgJSSJ3083yMHPkAC3dRMuk8Ys2VMvmD2HyZ2Zr9pR1w09m6gFD+dkj6yNmj3w0OcI+IrAEFVlplCRIQHxMSKMC/49gYyS9/6T6ArlaiEYSvMR7IWupsE844Pc19kknB7cnEZvu9QhuAz4HtKbvmJm2t3uOGfH+8tUAiSPBDOG3gC9uYQSa6oxwvGpyUqtAuAA==", 9 | "SigningCertURL" : "https://sns.us-east-1.amazonaws.com/SimpleNotificationService-433026a4050d206028891664da859041.pem", 10 | "UnsubscribeURL" : "https://sns.us-east-1.amazonaws.com/?Action=Unsubscribe&SubscriptionArn=arn:aws:sns:us-east-1:200278856672:AWSConfig_topic:61d4ffc8-72e3-41a7-b28d-86e700532cd1" 11 | } -------------------------------------------------------------------------------- /spec/models/manageiq/providers/amazon/cloud_manager/event_catcher/cloud_watch/AWS_API_CALL_AttachInternetGateway.json: -------------------------------------------------------------------------------- 1 | { 2 | "Type" : "Notification", 3 | "MessageId" : "9a3efe01-0d02-5ff0-afd2-ac86600dec60", 4 | "TopicArn" : "arn:aws:sns:us-east-1:200278856672:AWSConfig_topic", 5 | "Message" : "{\"version\":\"0\",\"id\":\"987232e2-4ccf-82be-ac2d-d6ac08ab907f\",\"detail-type\":\"AWS API Call via CloudTrail\",\"source\":\"aws.ec2\",\"account\":\"200278856672\",\"time\":\"2017-11-16T10:38:19Z\",\"region\":\"us-east-1\",\"resources\":[],\"detail\":{\"eventVersion\":\"1.05\",\"userIdentity\":{\"type\":\"IAMUser\",\"principalId\":\"AIDAI37PIOA5B6VMIJRUU\",\"arn\":\"arn:aws:iam::200278856672:user/ladas\",\"accountId\":\"200278856672\",\"accessKeyId\":\"ASIAIXA4NYJIDT6VVBPA\",\"userName\":\"ladas\",\"sessionContext\":{\"attributes\":{\"mfaAuthenticated\":\"false\",\"creationDate\":\"2017-11-16T08:35:35Z\"}},\"invokedBy\":\"signin.amazonaws.com\"},\"eventTime\":\"2017-11-16T10:38:19Z\",\"eventSource\":\"ec2.amazonaws.com\",\"eventName\":\"AttachInternetGateway\",\"awsRegion\":\"us-east-1\",\"sourceIPAddress\":\"213.175.37.10\",\"userAgent\":\"signin.amazonaws.com\",\"requestParameters\":{\"internetGatewayId\":\"igw-e207929b\",\"vpcId\":\"vpc-2e7df256\"},\"responseElements\":{\"_return\":true},\"requestID\":\"a55caf40-f9ef-4428-a4a6-e3bbaeee7460\",\"eventID\":\"16a03e52-ce44-4a4d-8922-324ca56e18a6\",\"eventType\":\"AwsApiCall\"}}", 6 | "Timestamp" : "2017-11-16T10:39:11.148Z", 7 | "SignatureVersion" : "1", 8 | "Signature" : "NaT09WqM/rx8LCviUX3AlC5ZOlPFB2jOPvUI+zqMH2OJIYrAzxKDmUrgRyWwEroww42lrhBQLBbnb5yIIK7LjskPkttOG1YlHup9Ud/sFVmzqo/SO8qKIbGUUwkfqvxziTezElJlfRs9KNMkZlUx8qhDDcRfwGwnNfMmMfXOoGYhjDh/2FCK15AK56H74Ymr+9UtlHX3sxJPCH8HSrXJlqqAzPsapK/dTBVW8eNzcgmpi28QXdNlS6bawoKaS4Hp7FGqP+43ugW7PLIltUIJ62ihrfJnF1LNjMt2ISIaHiR+GUvkjtYZ8NNgpkE+rryikZCxAbeTJYR4JBksYYLPAA==", 9 | "SigningCertURL" : "https://sns.us-east-1.amazonaws.com/SimpleNotificationService-433026a4050d206028891664da859041.pem", 10 | "UnsubscribeURL" : "https://sns.us-east-1.amazonaws.com/?Action=Unsubscribe&SubscriptionArn=arn:aws:sns:us-east-1:200278856672:AWSConfig_topic:515bacb7-efef-41f8-9266-7765b9afe39d" 11 | } -------------------------------------------------------------------------------- /spec/models/manageiq/providers/amazon/cloud_manager/event_catcher/cloud_watch/AWS_API_CALL_DetachInternetGateway.json: -------------------------------------------------------------------------------- 1 | { 2 | "Type" : "Notification", 3 | "MessageId" : "6bfd369f-bfda-5fbf-8af3-6418d874e047", 4 | "TopicArn" : "arn:aws:sns:us-east-1:200278856672:AWSConfig_topic", 5 | "Message" : "{\"version\":\"0\",\"id\":\"8de20bb5-f61d-1fe7-ca76-0fbf5e928dd6\",\"detail-type\":\"AWS API Call via CloudTrail\",\"source\":\"aws.ec2\",\"account\":\"200278856672\",\"time\":\"2017-11-16T10:15:33Z\",\"region\":\"us-east-1\",\"resources\":[],\"detail\":{\"eventVersion\":\"1.05\",\"userIdentity\":{\"type\":\"IAMUser\",\"principalId\":\"AIDAI37PIOA5B6VMIJRUU\",\"arn\":\"arn:aws:iam::200278856672:user/ladas\",\"accountId\":\"200278856672\",\"accessKeyId\":\"ASIAIXA4NYJIDT6VVBPA\",\"userName\":\"ladas\",\"sessionContext\":{\"attributes\":{\"mfaAuthenticated\":\"false\",\"creationDate\":\"2017-11-16T08:35:35Z\"}},\"invokedBy\":\"signin.amazonaws.com\"},\"eventTime\":\"2017-11-16T10:15:33Z\",\"eventSource\":\"ec2.amazonaws.com\",\"eventName\":\"DetachInternetGateway\",\"awsRegion\":\"us-east-1\",\"sourceIPAddress\":\"213.175.37.10\",\"userAgent\":\"signin.amazonaws.com\",\"requestParameters\":{\"internetGatewayId\":\"igw-1e943f7b\",\"vpcId\":\"vpc-a06de3c5\"},\"responseElements\":{\"_return\":true},\"requestID\":\"f46a3191-4507-4a2c-89f6-19163b97537c\",\"eventID\":\"732d878e-6d83-4e16-b885-01646a915523\",\"eventType\":\"AwsApiCall\"}}", 6 | "Timestamp" : "2017-11-16T10:16:14.151Z", 7 | "SignatureVersion" : "1", 8 | "Signature" : "WhP9rDiK+7U5Qx5g8r8mJoGenOTSEW8Yv0dByY9eu+a8SGZ+E2f52pmhjI+Lk4oSlSJWNyz2TA2xyb1r6pdScTlKB/7O4CpJDYTg8dUDz4dAzVtvq99aSPJWd/RsLjfu5yuap36XlRVLpobBqadCCc88c1wD4pxQ07VlLluRGZjVZpbb6008L0eglIUdEac/3TJoiXyEMt8stuJOS4J+zKX5UUtbHvkQZoBhuEDXhkZO+ZZs1kNMdbzl+SPpKS6DvZ+lOSl+n9H01F/itSxWGGWCOZRgjrrOw48ReXmen9CGtgo2gg/zHbDsOrmuT8ws8M+UscF0oPNLoEP3/8P93g==", 9 | "SigningCertURL" : "https://sns.us-east-1.amazonaws.com/SimpleNotificationService-433026a4050d206028891664da859041.pem", 10 | "UnsubscribeURL" : "https://sns.us-east-1.amazonaws.com/?Action=Unsubscribe&SubscriptionArn=arn:aws:sns:us-east-1:200278856672:AWSConfig_topic:515bacb7-efef-41f8-9266-7765b9afe39d" 11 | } -------------------------------------------------------------------------------- /spec/models/manageiq/providers/amazon/cloud_manager/event_catcher/cloud_watch/AWS_API_CALL_DeleteKeyPair.json: -------------------------------------------------------------------------------- 1 | { 2 | "Type" : "Notification", 3 | "MessageId" : "efbc4609-a790-59c0-80ae-145e72f1932e", 4 | "TopicArn" : "arn:aws:sns:us-east-1:200278856672:AWSConfig_topic", 5 | "Message" : "{\"version\":\"0\",\"id\":\"f7e2347e-d06f-a1aa-d60b-825dd298e4ce\",\"detail-type\":\"AWS API Call via CloudTrail\",\"source\":\"aws.ec2\",\"account\":\"200278856672\",\"time\":\"2017-10-11T08:14:44Z\",\"region\":\"us-east-1\",\"resources\":[],\"detail\":{\"eventVersion\":\"1.05\",\"userIdentity\":{\"type\":\"IAMUser\",\"principalId\":\"AIDAI37PIOA5B6VMIJRUU\",\"arn\":\"arn:aws:iam::200278856672:user/ladas\",\"accountId\":\"200278856672\",\"accessKeyId\":\"ASIAJ3NKA2PG2HI7IG7A\",\"userName\":\"ladas\",\"sessionContext\":{\"attributes\":{\"mfaAuthenticated\":\"false\",\"creationDate\":\"2017-10-11T08:13:01Z\"}},\"invokedBy\":\"signin.amazonaws.com\"},\"eventTime\":\"2017-10-11T08:14:44Z\",\"eventSource\":\"ec2.amazonaws.com\",\"eventName\":\"DeleteKeyPair\",\"awsRegion\":\"us-east-1\",\"sourceIPAddress\":\"78.102.117.102\",\"userAgent\":\"signin.amazonaws.com\",\"requestParameters\":{\"keyName\":\"test_vcr_key_pair\"},\"responseElements\":{\"requestId\":\"7c126624-edde-47a4-89b4-0842e72d2e83\",\"_return\":true},\"requestID\":\"7c126624-edde-47a4-89b4-0842e72d2e83\",\"eventID\":\"7acd38b9-927c-4235-85ab-c0737b76e912\",\"eventType\":\"AwsApiCall\"}}", 6 | "Timestamp" : "2017-10-11T08:15:29.083Z", 7 | "SignatureVersion" : "1", 8 | "Signature" : "cJ1ndYVJ1+sZRYHizb4xf6ooAp3BNyGuOlxIrjIpXo8xPuqfYKUQDWwHrXVj5Q4y7lPbc/FovWCWNa8OhGMwhj4oRSdhbyMYi/3Hs030AIrbz0ql8VrplbCmY7d9awLC4hPLx7Dv/NOglXWQ8gmVIomlucPrk22/J3R70XLPzcWk4ce8xS2XRGvtH9t4V1v8YTlI4fyo5/O3XwbPr0i33drxK4Kzfqc/msc79yUmLxQqB+9q5d34gKVGW85pgYH9pTEP3qhzA+sqCPTZ+npdS7w6uCU6Gt/EqDtWxoYjPhxEyBjU9CcptBrlCkXJr6nXuJXHkAylpYGxQKmqhWnzPA==", 9 | "SigningCertURL" : "https://sns.us-east-1.amazonaws.com/SimpleNotificationService-433026a4050d206028891664da859041.pem", 10 | "UnsubscribeURL" : "https://sns.us-east-1.amazonaws.com/?Action=Unsubscribe&SubscriptionArn=arn:aws:sns:us-east-1:200278856672:AWSConfig_topic:61d4ffc8-72e3-41a7-b28d-86e700532cd1" 11 | } -------------------------------------------------------------------------------- /spec/models/manageiq/providers/amazon/cloud_manager/event_catcher/cloud_watch/AWS_API_CALL_RegisterInstancesWithLoadBalancer.json: -------------------------------------------------------------------------------- 1 | { 2 | "Type" : "Notification", 3 | "MessageId" : "5535f3b5-1fed-55d5-8fa0-a19e288793fe", 4 | "TopicArn" : "arn:aws:sns:us-east-1:200278856672:AWSConfig_topic", 5 | "Message" : "{\"version\":\"0\",\"id\":\"ccc49fb5-80d1-7cbb-8368-be3e842e77eb\",\"detail-type\":\"AWS API Call via CloudTrail\",\"source\":\"aws.elasticloadbalancing\",\"account\":\"200278856672\",\"time\":\"2017-09-07T12:00:53Z\",\"region\":\"us-east-1\",\"resources\":[],\"detail\":{\"eventVersion\":\"1.04\",\"userIdentity\":{\"type\":\"Root\",\"principalId\":\"200278856672\",\"arn\":\"arn:aws:iam::200278856672:root\",\"accountId\":\"200278856672\",\"invokedBy\":\"autoscaling.amazonaws.com\"},\"eventTime\":\"2017-09-07T12:00:53Z\",\"eventSource\":\"elasticloadbalancing.amazonaws.com\",\"eventName\":\"RegisterInstancesWithLoadBalancer\",\"awsRegion\":\"us-east-1\",\"sourceIPAddress\":\"autoscaling.amazonaws.com\",\"userAgent\":\"autoscaling.amazonaws.com\",\"requestParameters\":{\"loadBalancerName\":\"ladas-tes-ElasticL-1TF5KASVJA6TN\",\"instances\":[{\"instanceId\":\"i-00945be3d7c07ec6c\"}]},\"responseElements\":{\"instances\":[{\"instanceId\":\"i-00945be3d7c07ec6c\"}]},\"requestID\":\"32d93c5a-93c4-11e7-8483-b3faeeb73c87\",\"eventID\":\"020b6d6e-5a04-4d09-99c9-fb0874b97a93\",\"eventType\":\"AwsApiCall\",\"apiVersion\":\"2012-06-01\"}}", 6 | "Timestamp" : "2017-09-07T12:01:46.042Z", 7 | "SignatureVersion" : "1", 8 | "Signature" : "WGycoJ05pIUgK1H0/hImYTNa93oJqf6XW1GP7U28YxiPbEzjUqJuKyXpVIAZfykqhkytWZCRwAlW286+o05ECrG65BctxscflO/ACZptk/jwlbVxgedExD0TUZzZIccRerUOpslxGxxNxOO/37tFjp565PZr3NZ/W2owxs+CLLaSmzm9w1iforJv+sa/hiH4dtp7xbeEAuDGS17cOUZFSB5i0E4KXJp+OAyPWIw0vsoS2KVso5lJz+awk5Wz+HvN8dALlPMahY3UUEglDP0BtLeZsNL7TbOhaD5hrAj41DtRcAjZ4Em3WEnmR1/MoMAnHLIe5MXSQD3hKORcZlSB6g==", 9 | "SigningCertURL" : "https://sns.us-east-1.amazonaws.com/SimpleNotificationService-433026a4050d206028891664da859041.pem", 10 | "UnsubscribeURL" : "https://sns.us-east-1.amazonaws.com/?Action=Unsubscribe&SubscriptionArn=arn:aws:sns:us-east-1:200278856672:AWSConfig_topic:61d4ffc8-72e3-41a7-b28d-86e700532cd1" 11 | } -------------------------------------------------------------------------------- /spec/models/manageiq/providers/amazon/cloud_manager/event_catcher/cloud_watch/AWS_API_CALL_CreateInternetGateway.json: -------------------------------------------------------------------------------- 1 | { 2 | "Type" : "Notification", 3 | "MessageId" : "284bd4ba-3829-563e-a806-863d55217927", 4 | "TopicArn" : "arn:aws:sns:us-east-1:200278856672:AWSConfig_topic", 5 | "Message" : "{\"version\":\"0\",\"id\":\"f7bc4ae3-2384-a1e9-8644-6087f55f4668\",\"detail-type\":\"AWS API Call via CloudTrail\",\"source\":\"aws.ec2\",\"account\":\"200278856672\",\"time\":\"2017-11-16T10:38:06Z\",\"region\":\"us-east-1\",\"resources\":[],\"detail\":{\"eventVersion\":\"1.05\",\"userIdentity\":{\"type\":\"IAMUser\",\"principalId\":\"AIDAI37PIOA5B6VMIJRUU\",\"arn\":\"arn:aws:iam::200278856672:user/ladas\",\"accountId\":\"200278856672\",\"accessKeyId\":\"ASIAIXA4NYJIDT6VVBPA\",\"userName\":\"ladas\",\"sessionContext\":{\"attributes\":{\"mfaAuthenticated\":\"false\",\"creationDate\":\"2017-11-16T08:35:35Z\"}},\"invokedBy\":\"signin.amazonaws.com\"},\"eventTime\":\"2017-11-16T10:38:06Z\",\"eventSource\":\"ec2.amazonaws.com\",\"eventName\":\"CreateInternetGateway\",\"awsRegion\":\"us-east-1\",\"sourceIPAddress\":\"213.175.37.10\",\"userAgent\":\"signin.amazonaws.com\",\"requestParameters\":null,\"responseElements\":{\"internetGateway\":{\"internetGatewayId\":\"igw-e207929b\",\"attachmentSet\":{},\"tagSet\":{}}},\"requestID\":\"c5d1257f-8ccc-4564-8869-3bfddd0191e8\",\"eventID\":\"eea2bbac-a312-4e47-9353-113136088499\",\"eventType\":\"AwsApiCall\"}}", 6 | "Timestamp" : "2017-11-16T10:39:04.640Z", 7 | "SignatureVersion" : "1", 8 | "Signature" : "g/pr39OUEbcM8tM+YOnHa3IRblJHsd+4Q9EnZ/v/wOeVCufWLaDQuXy9+8rVLi+4WCR74YZFo70ypzorRULqZbu1FbbkwePWlEQz5iwTzYX2KyH8hshPOl99tdyxC2RcAioAf/yD6lNOzxdMg3Jv04tSMg9ar31Old/w69BdRxQEV2OaeupHQ2kGldC/O+uPicJ2hZgrTYUo2atX/SItPpoqwfXNNKQZ9v4Mzk6j/a6U+9NBDhNZmmBQ13cXkVhplCQsqC2tNFxGuzjROwryKfc6dwIx9GH8eVRhReCYedCdy+BWflZz2wK83MAsCLKAX5yo03EMuTCFpXvWzmXKbg==", 9 | "SigningCertURL" : "https://sns.us-east-1.amazonaws.com/SimpleNotificationService-433026a4050d206028891664da859041.pem", 10 | "UnsubscribeURL" : "https://sns.us-east-1.amazonaws.com/?Action=Unsubscribe&SubscriptionArn=arn:aws:sns:us-east-1:200278856672:AWSConfig_topic:515bacb7-efef-41f8-9266-7765b9afe39d" 11 | } -------------------------------------------------------------------------------- /spec/models/manageiq/providers/amazon/cloud_manager/event_catcher/cloud_watch/AWS_API_CALL_AssociateRouteTable.json: -------------------------------------------------------------------------------- 1 | { 2 | "Type" : "Notification", 3 | "MessageId" : "c75a6020-2e8b-579d-ae81-32a74041e855", 4 | "TopicArn" : "arn:aws:sns:us-east-1:200278856672:AWSConfig_topic", 5 | "Message" : "{\"version\":\"0\",\"id\":\"7e32f15d-3337-e437-29bf-170aeb693ad1\",\"detail-type\":\"AWS API Call via CloudTrail\",\"source\":\"aws.ec2\",\"account\":\"200278856672\",\"time\":\"2017-11-16T10:46:24Z\",\"region\":\"us-east-1\",\"resources\":[],\"detail\":{\"eventVersion\":\"1.05\",\"userIdentity\":{\"type\":\"IAMUser\",\"principalId\":\"AIDAI37PIOA5B6VMIJRUU\",\"arn\":\"arn:aws:iam::200278856672:user/ladas\",\"accountId\":\"200278856672\",\"accessKeyId\":\"ASIAIXA4NYJIDT6VVBPA\",\"userName\":\"ladas\",\"sessionContext\":{\"attributes\":{\"mfaAuthenticated\":\"false\",\"creationDate\":\"2017-11-16T08:35:35Z\"}},\"invokedBy\":\"signin.amazonaws.com\"},\"eventTime\":\"2017-11-16T10:46:24Z\",\"eventSource\":\"ec2.amazonaws.com\",\"eventName\":\"AssociateRouteTable\",\"awsRegion\":\"us-east-1\",\"sourceIPAddress\":\"213.175.37.10\",\"userAgent\":\"signin.amazonaws.com\",\"requestParameters\":{\"routeTableId\":\"rtb-d98ba3a3\",\"subnetId\":\"subnet-43992b7c\"},\"responseElements\":{\"associationId\":\"rtbassoc-cd75ecb0\"},\"requestID\":\"9210c31f-dd06-430c-abe1-e9b890dce36e\",\"eventID\":\"30701364-86eb-4434-b6a8-08de794732be\",\"eventType\":\"AwsApiCall\"}}", 6 | "Timestamp" : "2017-11-16T10:46:34.961Z", 7 | "SignatureVersion" : "1", 8 | "Signature" : "dpTGeGOGKwkodYSDfhZGme3Bd/PWP40jaq/qluNdwxS0xWy+197KnC/HhvWOzy/K9v9XohS9qUJ53M+gLTsjO1LrTc1PQy4g24GeLS9zuSXoyr9YUK8qmstSl06fvQcB8V9qYLBfl9m0If6LXrcp5ABZRydLHXPxliDLSLxyrfxSxQbWt16qqZKSWPJNeWQkmQAP4pYt3fP5J4J2jqwHf9auVRj6hnUmeschmkvkpNVr+n5KTuN3djJoUw9HlfqtAH0hnNuPDbHozo5mrVjdyHIp23oS18Ni05Mrz0rPMhuhzmnXq4O1RV+S7fqCmSjYNeEVP9zuCswVSCaed9jvcA==", 9 | "SigningCertURL" : "https://sns.us-east-1.amazonaws.com/SimpleNotificationService-433026a4050d206028891664da859041.pem", 10 | "UnsubscribeURL" : "https://sns.us-east-1.amazonaws.com/?Action=Unsubscribe&SubscriptionArn=arn:aws:sns:us-east-1:200278856672:AWSConfig_topic:515bacb7-efef-41f8-9266-7765b9afe39d" 11 | } -------------------------------------------------------------------------------- /spec/models/dialog/orchestration_template_amazon_service_dialog_spec.rb: -------------------------------------------------------------------------------- 1 | describe "OrchestrationTemplateServiceDialog for Amazon" do 2 | let(:dialog_service) { Dialog::OrchestrationTemplateServiceDialog.new } 3 | let(:template_amazon) { FactoryBot.create(:orchestration_template_amazon_in_json) } 4 | 5 | describe "#create_dialog" do 6 | it "creates a dialog from CloudFormation template with stack basic info and parameters" do 7 | dialog = dialog_service.create_dialog("test", template_amazon) 8 | 9 | tabs = dialog.dialog_tabs 10 | assert_stack_group(tabs[0].dialog_groups[0]) 11 | end 12 | end 13 | 14 | def assert_stack_group(group) 15 | expect(group).to have_attributes( 16 | :label => "Options", 17 | :display => "edit", 18 | ) 19 | 20 | fields = group.dialog_fields 21 | expect(fields.size).to eq(9) 22 | 23 | assert_field(fields[0], DialogFieldTextBox, :name => 'stack_name', :validator_rule => '^[A-Za-z][A-Za-z0-9\-]*$') 24 | assert_field(fields[1], DialogFieldDropDownList, :name => 'stack_onfailure', :values => [%w(DELETE Delete\ stack), %w(DO_NOTHING Do\ nothing), %w(ROLLBACK Rollback)]) 25 | assert_field(fields[2], DialogFieldTextBox, :name => 'stack_timeout', :data_type => 'integer') 26 | assert_field(fields[3], DialogFieldTextAreaBox, :name => 'stack_notifications', :data_type => 'string') 27 | assert_field(fields[4], DialogFieldDropDownList, :name => 'stack_capabilities', :values => [[nil, ''], ['CAPABILITY_IAM'] * 2, ['CAPABILITY_NAMED_IAM'] * 2]) 28 | assert_field(fields[5], DialogFieldTextBox, :name => 'stack_resource_types', :data_type => 'string') 29 | assert_field(fields[6], DialogFieldTextBox, :name => 'stack_role', :data_type => 'string') 30 | assert_field(fields[7], DialogFieldTextBox, :name => 'stack_tags', :data_type => 'string') 31 | assert_field(fields[8], DialogFieldTextBox, :name => 'stack_policy', :data_type => 'string') 32 | end 33 | 34 | def assert_field(field, clss, attributes) 35 | expect(field).to be_kind_of clss 36 | expect(field).to have_attributes(attributes) 37 | end 38 | end 39 | -------------------------------------------------------------------------------- /spec/models/manageiq/providers/amazon/cloud_manager/event_catcher/cloud_watch/AWS_API_CALL_AssociateProductWithPortfolio.json: -------------------------------------------------------------------------------- 1 | { 2 | "Type" : "Notification", 3 | "MessageId" : "5b25ef41-62ad-55bb-8c79-bb54f5efc40a", 4 | "TopicArn" : "arn:aws:sns:us-east-1:200278856672:AWSConfig_topic", 5 | "Message" : "{\"version\":\"0\",\"id\":\"4070333e-542a-fed1-8128-fada37205503\",\"detail-type\":\"AWS API Call via CloudTrail\",\"source\":\"aws.servicecatalog\",\"account\":\"200278856672\",\"time\":\"2018-09-14T11:00:31Z\",\"region\":\"us-east-1\",\"resources\":[],\"detail\":{\"eventVersion\":\"1.05\",\"userIdentity\":{\"type\":\"IAMUser\",\"principalId\":\"AIDAI37PIOA5B6VMIJRUU\",\"arn\":\"arn:aws:iam::200278856672:user/ladas\",\"accountId\":\"200278856672\",\"accessKeyId\":\"ASIAS5IMM2PQIGY2QQ7C\",\"userName\":\"ladas\",\"sessionContext\":{\"attributes\":{\"mfaAuthenticated\":\"false\",\"creationDate\":\"2018-09-14T08:05:49Z\"}},\"invokedBy\":\"signin.amazonaws.com\"},\"eventTime\":\"2018-09-14T11:00:31Z\",\"eventSource\":\"servicecatalog.amazonaws.com\",\"eventName\":\"AssociateProductWithPortfolio\",\"awsRegion\":\"us-east-1\",\"sourceIPAddress\":\"213.175.37.10\",\"userAgent\":\"signin.amazonaws.com\",\"requestParameters\":{\"portfolioId\":\"port-dg3wqzbxza75m\",\"productId\":\"prod-7eznvu5zer2ye\"},\"responseElements\":null,\"requestID\":\"6574a953-b80d-11e8-b007-07c4793f0b9d\",\"eventID\":\"285a7591-80de-41e3-a607-175c27cff8df\",\"eventType\":\"AwsApiCall\"}}", 6 | "Timestamp" : "2018-09-14T11:01:22.768Z", 7 | "SignatureVersion" : "1", 8 | "Signature" : "Po/cNhHmRqLQNAU7M13ZZMGY4PmWHfvjo9t757A78zR07frYp8H9s8ejm8MjVEjdFLcSXftve69eAaakTPec3VQO5I+G22hpLJGJg0NEzuKcTxYAmD1FeNeBMYLoBt3aB5kJa1JRa+Tx68UYwfl9qDnCvwolVgjUqIPR/lB1ERT1NYjcfeKuy8TTUzILfTKPSKHugTDGg2Tsif6e6MBN8zCuJQYU3j5u/m44VL8MTZvIpjKReiHqlo7VKmrGlvR6EWg2nIYSTzur3EwPJA3ZL7DPebr1659vkkmP4YnWtSy/TCTiYtOv43y5RMH7ZUQ5iydtdopz4gfKYKncjRFcXA==", 9 | "SigningCertURL" : "https://sns.us-east-1.amazonaws.com/SimpleNotificationService-ac565b8b1a6c5d002d285f9598aa1d9b.pem", 10 | "UnsubscribeURL" : "https://sns.us-east-1.amazonaws.com/?Action=Unsubscribe&SubscriptionArn=arn:aws:sns:us-east-1:200278856672:AWSConfig_topic:25411282-5f1f-4379-b2c8-aff6d18dfdea" 11 | } -------------------------------------------------------------------------------- /spec/models/manageiq/providers/amazon/cloud_manager/event_catcher/cloud_watch/AWS_API_CALL_DeleteProvisioningArtifact.json: -------------------------------------------------------------------------------- 1 | { 2 | "Type" : "Notification", 3 | "MessageId" : "9c32e504-ab8b-5635-b48f-b11133aa9fe6", 4 | "TopicArn" : "arn:aws:sns:us-east-1:200278856672:AWSConfig_topic", 5 | "Message" : "{\"version\":\"0\",\"id\":\"7bf1df30-406b-87c4-700a-0eaf2fa310b0\",\"detail-type\":\"AWS API Call via CloudTrail\",\"source\":\"aws.servicecatalog\",\"account\":\"200278856672\",\"time\":\"2018-09-14T11:04:10Z\",\"region\":\"us-east-1\",\"resources\":[],\"detail\":{\"eventVersion\":\"1.05\",\"userIdentity\":{\"type\":\"IAMUser\",\"principalId\":\"AIDAI37PIOA5B6VMIJRUU\",\"arn\":\"arn:aws:iam::200278856672:user/ladas\",\"accountId\":\"200278856672\",\"accessKeyId\":\"ASIAS5IMM2PQIGY2QQ7C\",\"userName\":\"ladas\",\"sessionContext\":{\"attributes\":{\"mfaAuthenticated\":\"false\",\"creationDate\":\"2018-09-14T08:05:49Z\"}},\"invokedBy\":\"signin.amazonaws.com\"},\"eventTime\":\"2018-09-14T11:04:10Z\",\"eventSource\":\"servicecatalog.amazonaws.com\",\"eventName\":\"DeleteProvisioningArtifact\",\"awsRegion\":\"us-east-1\",\"sourceIPAddress\":\"213.175.37.10\",\"userAgent\":\"signin.amazonaws.com\",\"requestParameters\":{\"provisioningArtifactId\":\"pa-dvbgfygbagcn6\",\"productId\":\"prod-h7p6ruq5qgrga\"},\"responseElements\":null,\"requestID\":\"e7d8f094-b80d-11e8-854c-9da05d19b3e2\",\"eventID\":\"e052ac77-fa9d-4086-bd15-47ce30b7eace\",\"eventType\":\"AwsApiCall\"}}", 6 | "Timestamp" : "2018-09-14T11:05:05.767Z", 7 | "SignatureVersion" : "1", 8 | "Signature" : "mDFzCj0uEbv4+o+PA/wjuJj7aZx3wyCihZcLGmz5JLlUPcHt3l2yE8/B52jQUc5I6L5pJ7uGuUMmNprAVrxnG/6ROo3eW4UpWryQjYd4orvqmh2skMHLE5OQaDgVP6ddGd+TfJ9ZiOjaIPqJ+L4uypH8fsUkR16lUdLIiw0TbGL3GC7cw4kjq1VmuRnIdc0qhPG5jEbL1d9434B2K9175ywvACewJv1X3ClMV10J0nGWZVgxAT8u2AkmvZT/MZGLEYoGtyBT6SZmBZhZtLkQ0jJBHvOHf7MqmSOjYuM0ogswvjivG/ZKEhpiwTc98jihcA0tiGw2QPodEfi0cncpmQ==", 9 | "SigningCertURL" : "https://sns.us-east-1.amazonaws.com/SimpleNotificationService-ac565b8b1a6c5d002d285f9598aa1d9b.pem", 10 | "UnsubscribeURL" : "https://sns.us-east-1.amazonaws.com/?Action=Unsubscribe&SubscriptionArn=arn:aws:sns:us-east-1:200278856672:AWSConfig_topic:25411282-5f1f-4379-b2c8-aff6d18dfdea" 11 | } -------------------------------------------------------------------------------- /spec/models/manageiq/providers/amazon/cloud_manager/event_catcher/cloud_watch/AWS_API_CALL_DeleteStack.json: -------------------------------------------------------------------------------- 1 | { 2 | "Type" : "Notification", 3 | "MessageId" : "b0f52dda-1728-50ed-a743-7ff1261ffac4", 4 | "TopicArn" : "arn:aws:sns:us-east-1:200278856672:AWSConfig_topic", 5 | "Message" : "{\"version\":\"0\",\"id\":\"2a5fc27c-d654-c239-0d6f-b3342bc8dd36\",\"detail-type\":\"AWS API Call via CloudTrail\",\"source\":\"aws.cloudformation\",\"account\":\"200278856672\",\"time\":\"2017-09-07T11:34:36Z\",\"region\":\"us-east-1\",\"resources\":[],\"detail\":{\"eventVersion\":\"1.05\",\"userIdentity\":{\"type\":\"IAMUser\",\"principalId\":\"AIDAI37PIOA5B6VMIJRUU\",\"arn\":\"arn:aws:iam::200278856672:user/ladas\",\"accountId\":\"200278856672\",\"accessKeyId\":\"ASIAIRGEBWGGQPJ32XXQ\",\"userName\":\"ladas\",\"sessionContext\":{\"attributes\":{\"mfaAuthenticated\":\"false\",\"creationDate\":\"2017-09-07T09:20:25Z\"}},\"invokedBy\":\"signin.amazonaws.com\"},\"eventTime\":\"2017-09-07T11:34:36Z\",\"eventSource\":\"cloudformation.amazonaws.com\",\"eventName\":\"DeleteStack\",\"awsRegion\":\"us-east-1\",\"sourceIPAddress\":\"213.175.37.10\",\"userAgent\":\"signin.amazonaws.com\",\"requestParameters\":{\"stackName\":\"arn:aws:cloudformation:us-east-1:200278856672:stack/ladas-test-22/ec875e20-93a9-11e7-b549-500c28b23699\"},\"responseElements\":null,\"requestID\":\"86b60892-93c0-11e7-a189-73b1c399fb21\",\"eventID\":\"edd0c431-978d-43aa-8aed-0a24897dcd7d\",\"eventType\":\"AwsApiCall\"}}", 6 | "Timestamp" : "2017-09-07T11:35:19.537Z", 7 | "SignatureVersion" : "1", 8 | "Signature" : "KNytEgHKAHwQrQdynYy62q6+HhLWxN7kdwtnDCcx/8N5JuaYijnoJqRm4q++l/P+OG609TiKDIozzsSh5NoxQ+jcfknYiFD/lfEsTH9pSon8eeDkDITUx3b2YKlcEGKoZ2T8uMNcgudrK2jccjqJtoY/Q+3bKC2hPPAw4Ipe34IeT6rXo6v6nRZQOVsF0Bu4eKGIBXOzT53072F94V07Ik1xQEJucGvpuI/dxfArd8s/fJl1Nau0f8BXXjEiR+ZgmNh9vsORhOUnHoGtVT3MZad+YW374Zj52Sm7VUUlfqLvF/TXLbeRxYhArhU71XtZCMkVusDP7TiYPmW4UF4xiQ==", 9 | "SigningCertURL" : "https://sns.us-east-1.amazonaws.com/SimpleNotificationService-433026a4050d206028891664da859041.pem", 10 | "UnsubscribeURL" : "https://sns.us-east-1.amazonaws.com/?Action=Unsubscribe&SubscriptionArn=arn:aws:sns:us-east-1:200278856672:AWSConfig_topic:61d4ffc8-72e3-41a7-b28d-86e700532cd1" 11 | } -------------------------------------------------------------------------------- /spec/models/manageiq/providers/amazon/cloud_manager/event_catcher/cloud_watch/AWS_API_CALL_DisassociateProductFromPortfolio.json: -------------------------------------------------------------------------------- 1 | { 2 | "Type" : "Notification", 3 | "MessageId" : "7f89472f-4820-538b-87c9-133adf46ed24", 4 | "TopicArn" : "arn:aws:sns:us-east-1:200278856672:AWSConfig_topic", 5 | "Message" : "{\"version\":\"0\",\"id\":\"96ea6fe9-1418-42d1-9952-01439c863e3a\",\"detail-type\":\"AWS API Call via CloudTrail\",\"source\":\"aws.servicecatalog\",\"account\":\"200278856672\",\"time\":\"2018-09-14T11:00:59Z\",\"region\":\"us-east-1\",\"resources\":[],\"detail\":{\"eventVersion\":\"1.05\",\"userIdentity\":{\"type\":\"IAMUser\",\"principalId\":\"AIDAI37PIOA5B6VMIJRUU\",\"arn\":\"arn:aws:iam::200278856672:user/ladas\",\"accountId\":\"200278856672\",\"accessKeyId\":\"ASIAS5IMM2PQIGY2QQ7C\",\"userName\":\"ladas\",\"sessionContext\":{\"attributes\":{\"mfaAuthenticated\":\"false\",\"creationDate\":\"2018-09-14T08:05:49Z\"}},\"invokedBy\":\"signin.amazonaws.com\"},\"eventTime\":\"2018-09-14T11:00:59Z\",\"eventSource\":\"servicecatalog.amazonaws.com\",\"eventName\":\"DisassociateProductFromPortfolio\",\"awsRegion\":\"us-east-1\",\"sourceIPAddress\":\"213.175.37.10\",\"userAgent\":\"signin.amazonaws.com\",\"requestParameters\":{\"productId\":\"prod-7eznvu5zer2ye\",\"portfolioId\":\"port-dg3wqzbxza75m\"},\"responseElements\":null,\"requestID\":\"766339c8-b80d-11e8-9cba-93655f149ff3\",\"eventID\":\"6747fc7c-506c-4b50-baca-c881a6f7c74f\",\"eventType\":\"AwsApiCall\"}}", 6 | "Timestamp" : "2018-09-14T11:01:58.241Z", 7 | "SignatureVersion" : "1", 8 | "Signature" : "P/xWn/6YgDCWqA/VM5JFXtVdhuUmgubvyc7KpLNLk66Fahpz/3drOrt4MIbiupv6qHkkkZYVdQK0odYQSXHy37YW30yr1WXnLzMK3Zeq+m/RvHnnvvqrchuuQSWSH68DgBOozGcYogrH1tz15bOaPnCjRMyh9m+JpGJ8ZsobgA1+In4Mj2O+4beGxEfwJ4KlkaCjV941+iQIF+rArX/I1SVr27YWIAdS9rSky2u9Ua6R3yLTKc3b8+Nr1htttKvBHQ+CXYDXTSUrJsUVUHKkURmKrmOjYYxobnmqkw9X9N8EY/KxFcxfUKCC81xiZNvwd86SDaBXar1Fu5Ihw7Lq8A==", 9 | "SigningCertURL" : "https://sns.us-east-1.amazonaws.com/SimpleNotificationService-ac565b8b1a6c5d002d285f9598aa1d9b.pem", 10 | "UnsubscribeURL" : "https://sns.us-east-1.amazonaws.com/?Action=Unsubscribe&SubscriptionArn=arn:aws:sns:us-east-1:200278856672:AWSConfig_topic:25411282-5f1f-4379-b2c8-aff6d18dfdea" 11 | } -------------------------------------------------------------------------------- /spec/models/manageiq/providers/amazon/cloud_manager/event_catcher/cloud_watch/AWS_API_CALL_ReplaceRouteTableAssociation.json: -------------------------------------------------------------------------------- 1 | { 2 | "Type" : "Notification", 3 | "MessageId" : "30fac236-1261-5fa1-bba1-90b17c51e613", 4 | "TopicArn" : "arn:aws:sns:us-east-1:200278856672:AWSConfig_topic", 5 | "Message" : "{\"version\":\"0\",\"id\":\"45aef776-cdc6-4b14-4996-03e3e4339c9a\",\"detail-type\":\"AWS API Call via CloudTrail\",\"source\":\"aws.ec2\",\"account\":\"200278856672\",\"time\":\"2017-11-16T10:43:19Z\",\"region\":\"us-east-1\",\"resources\":[],\"detail\":{\"eventVersion\":\"1.05\",\"userIdentity\":{\"type\":\"IAMUser\",\"principalId\":\"AIDAI37PIOA5B6VMIJRUU\",\"arn\":\"arn:aws:iam::200278856672:user/ladas\",\"accountId\":\"200278856672\",\"accessKeyId\":\"ASIAIXA4NYJIDT6VVBPA\",\"userName\":\"ladas\",\"sessionContext\":{\"attributes\":{\"mfaAuthenticated\":\"false\",\"creationDate\":\"2017-11-16T08:35:35Z\"}},\"invokedBy\":\"signin.amazonaws.com\"},\"eventTime\":\"2017-11-16T10:43:19Z\",\"eventSource\":\"ec2.amazonaws.com\",\"eventName\":\"ReplaceRouteTableAssociation\",\"awsRegion\":\"us-east-1\",\"sourceIPAddress\":\"213.175.37.10\",\"userAgent\":\"signin.amazonaws.com\",\"requestParameters\":{\"associationId\":\"rtbassoc-c771e8ba\",\"routeTableId\":\"rtb-d98ba3a3\"},\"responseElements\":{\"newAssociationId\":\"rtbassoc-d27ee7af\"},\"requestID\":\"1859d818-b46b-44c4-96d9-1e395bdcde04\",\"eventID\":\"40202a62-0dbb-44ee-9f12-c65701613a7b\",\"eventType\":\"AwsApiCall\"}}", 6 | "Timestamp" : "2017-11-16T10:44:00.535Z", 7 | "SignatureVersion" : "1", 8 | "Signature" : "HuGBbtU6XZa244SrL+BXWmm5a8MNpsaKZqOGkzX8mjK30HcKzG5uTvSnx0lKtTduR29YSX18pkgIgcmcER9b3lmPkAgii+0ilN3tnvhD0PGSwPuWslrxWvV+tJ5JRHMmtj1D7QteSD3rwWWuHgw9uKc95g1MiufjBEoiJKPPzaQ6onJfkz5VvL6SjB7QXIh+pkw+dCv08hHM5gjPRiEuT+Egv+XudKyDbbyVTN6+i/cqaw+pdjvtfPoqrNkKdgmE9mreh8JX628K3qty88CIqJBfTDvnHKej2hfnDME1SYgYZ+EA4tMsvhssxEKaGs1cfKo19ttAboIUF1AQx+hwrg==", 9 | "SigningCertURL" : "https://sns.us-east-1.amazonaws.com/SimpleNotificationService-433026a4050d206028891664da859041.pem", 10 | "UnsubscribeURL" : "https://sns.us-east-1.amazonaws.com/?Action=Unsubscribe&SubscriptionArn=arn:aws:sns:us-east-1:200278856672:AWSConfig_topic:515bacb7-efef-41f8-9266-7765b9afe39d" 11 | } -------------------------------------------------------------------------------- /spec/models/manageiq/providers/amazon/cloud_manager/event_catcher/cloud_watch/AWS_API_CALL_DeregisterImage.json: -------------------------------------------------------------------------------- 1 | { 2 | "Type" : "Notification", 3 | "MessageId" : "788a1301-7548-5e0d-a2dd-41860bf7caa0", 4 | "TopicArn" : "arn:aws:sns:us-east-1:200278856672:AWSConfig_topic", 5 | "Message" : "{\"version\":\"0\",\"id\":\"95309fd9-c388-67a1-e715-a77e19bd607d\",\"detail-type\":\"AWS API Call via CloudTrail\",\"source\":\"aws.ec2\",\"account\":\"200278856672\",\"time\":\"2017-11-16T11:54:23Z\",\"region\":\"us-east-1\",\"resources\":[],\"detail\":{\"eventVersion\":\"1.05\",\"userIdentity\":{\"type\":\"IAMUser\",\"principalId\":\"AIDAI37PIOA5B6VMIJRUU\",\"arn\":\"arn:aws:iam::200278856672:user/ladas\",\"accountId\":\"200278856672\",\"accessKeyId\":\"ASIAI6JCUU3S6M256HAA\",\"userName\":\"ladas\",\"sessionContext\":{\"attributes\":{\"mfaAuthenticated\":\"false\",\"creationDate\":\"2017-11-16T08:35:35Z\"}},\"invokedBy\":\"signin.amazonaws.com\"},\"eventTime\":\"2017-11-16T11:54:23Z\",\"eventSource\":\"ec2.amazonaws.com\",\"eventName\":\"DeregisterImage\",\"awsRegion\":\"us-east-1\",\"sourceIPAddress\":\"213.175.37.10\",\"userAgent\":\"signin.amazonaws.com\",\"errorCode\":\"Client.InvalidAMIID.Unavailable\",\"errorMessage\":\"The image ID 'ami-a944c4d3' is no longer available\",\"requestParameters\":{\"imageId\":\"ami-a944c4d3\"},\"responseElements\":null,\"requestID\":\"98415cb0-c168-4f28-b996-30ecc2a8d0d0\",\"eventID\":\"e758d9db-79a9-4ae3-9cb6-47c85acfc2f9\",\"eventType\":\"AwsApiCall\"}}", 6 | "Timestamp" : "2017-11-16T11:54:39.824Z", 7 | "SignatureVersion" : "1", 8 | "Signature" : "LSQ5FojUgw4d5bvMnrdp/3WBrBXx7SpzbNHlX1zWiX3Nrg+qoWkvqKJ0u7O4SfcmA9qXe6248q9m4Rzbemsj1sdY7w+ePGHFm8ky+ob7ynNfQjgLhlUdAgh0eaqmuLjCNhJSstziuEAlJn2NVa9xUSS4/rbO8+73ffqnWQFRPxVyEX4j7a82UqwkVHcMwfOyR8DPY6LHME5YojrxDo4K/MsYVrrXeOt6tnZ7J4HW+pTHxl9sUeuUUywvqH7UwLb9qS5Ij4bfkNsliQ/aHQgn3OKHxr7n6MxcUBw59ynCbvGhdQgRhPbEfqWZE5Nj+v/urHgb0wUI/CUEcsUfrxEIoQ==", 9 | "SigningCertURL" : "https://sns.us-east-1.amazonaws.com/SimpleNotificationService-433026a4050d206028891664da859041.pem", 10 | "UnsubscribeURL" : "https://sns.us-east-1.amazonaws.com/?Action=Unsubscribe&SubscriptionArn=arn:aws:sns:us-east-1:200278856672:AWSConfig_topic:515bacb7-efef-41f8-9266-7765b9afe39d" 11 | } -------------------------------------------------------------------------------- /spec/models/manageiq/providers/amazon/cloud_manager/event_catcher/cloud_watch/AWS_API_CALL_UnassignPrivateIpAddresses.json: -------------------------------------------------------------------------------- 1 | { 2 | "Type" : "Notification", 3 | "MessageId" : "34c8df21-aafa-5b78-8d59-8d0bae82874e", 4 | "TopicArn" : "arn:aws:sns:us-east-1:200278856672:AWSConfig_topic", 5 | "Message" : "{\"version\":\"0\",\"id\":\"8058324f-52b0-9995-f773-6f61b78afba8\",\"detail-type\":\"AWS API Call via CloudTrail\",\"source\":\"aws.ec2\",\"account\":\"200278856672\",\"time\":\"2017-09-06T14:11:35Z\",\"region\":\"us-east-1\",\"resources\":[],\"detail\":{\"eventVersion\":\"1.05\",\"userIdentity\":{\"type\":\"IAMUser\",\"principalId\":\"AIDAI37PIOA5B6VMIJRUU\",\"arn\":\"arn:aws:iam::200278856672:user/ladas\",\"accountId\":\"200278856672\",\"accessKeyId\":\"ASIAJ2ZOO4EOXK7MYBZQ\",\"userName\":\"ladas\",\"sessionContext\":{\"attributes\":{\"mfaAuthenticated\":\"false\",\"creationDate\":\"2017-09-06T06:37:24Z\"}},\"invokedBy\":\"signin.amazonaws.com\"},\"eventTime\":\"2017-09-06T14:11:35Z\",\"eventSource\":\"ec2.amazonaws.com\",\"eventName\":\"UnassignPrivateIpAddresses\",\"awsRegion\":\"us-east-1\",\"sourceIPAddress\":\"213.175.37.10\",\"userAgent\":\"signin.amazonaws.com\",\"requestParameters\":{\"networkInterfaceId\":\"eni-6933e6c9\",\"privateIpAddressesSet\":{\"items\":[{\"privateIpAddress\":\"10.0.0.231\"}]}},\"responseElements\":{\"_return\":true},\"requestID\":\"12d20807-71cd-4423-ab8e-f6da819fadb0\",\"eventID\":\"dd67ba07-cada-45a3-aa32-f66e77b4ec43\",\"eventType\":\"AwsApiCall\"}}", 6 | "Timestamp" : "2017-09-06T14:12:08.671Z", 7 | "SignatureVersion" : "1", 8 | "Signature" : "NMX80ANZmJTcB625WJNUYPVKZOofOyrR6cuNTTb5v1muMgdNJs0d2l9eVjdAZso8G0IH1G5JgCI+eGRalTeLx7OTUbSV27Vw08nBB1fNEzB4EFlpCNY5dyW8/eBl7G+tuGRKa8vUneuKsJYUOek4SllGcPF4p9sootgOh95wMbl+jdg3RgcIu61yv47kFMxRTeAj8KnwAXbJtCIpWD7gUsmX31zo3HJh2sAt+i1dAh1QGBacueQti3xCWFNkXXuhpmECvIEfXXp9Xx5O1Bi0CNxI4dMsf9R6sGzA3ggqm/4/pUxxzRkqtOnNnr3xBXz+CdvnFi9dSfcy1moGnqFzEw==", 9 | "SigningCertURL" : "https://sns.us-east-1.amazonaws.com/SimpleNotificationService-433026a4050d206028891664da859041.pem", 10 | "UnsubscribeURL" : "https://sns.us-east-1.amazonaws.com/?Action=Unsubscribe&SubscriptionArn=arn:aws:sns:us-east-1:200278856672:AWSConfig_topic:9fefb8fe-9bd0-4624-9281-a279994ed2b9" 11 | } -------------------------------------------------------------------------------- /spec/models/manageiq/providers/amazon/cloud_manager/event_catcher/cloud_watch/AWS_API_CALL_DeleteLoadBalancer.json: -------------------------------------------------------------------------------- 1 | { 2 | "Type" : "Notification", 3 | "MessageId" : "dbfd0979-8a81-5ee8-800c-5b52bb101127", 4 | "TopicArn" : "arn:aws:sns:us-east-1:200278856672:AWSConfig_topic", 5 | "Message" : "{\"version\":\"0\",\"id\":\"1ec59d34-a837-b60f-bdcf-169155f1478a\",\"detail-type\":\"AWS API Call via CloudTrail\",\"source\":\"aws.elasticloadbalancing\",\"account\":\"200278856672\",\"time\":\"2017-09-07T11:36:18Z\",\"region\":\"us-east-1\",\"resources\":[],\"detail\":{\"eventVersion\":\"1.04\",\"userIdentity\":{\"type\":\"IAMUser\",\"principalId\":\"AIDAI37PIOA5B6VMIJRUU\",\"arn\":\"arn:aws:iam::200278856672:user/ladas\",\"accountId\":\"200278856672\",\"accessKeyId\":\"ASIAJ7LCCTYLMNITJZEA\",\"userName\":\"ladas\",\"sessionContext\":{\"attributes\":{\"mfaAuthenticated\":\"false\",\"creationDate\":\"2017-09-07T09:20:25Z\"}},\"invokedBy\":\"cloudformation.amazonaws.com\"},\"eventTime\":\"2017-09-07T11:36:18Z\",\"eventSource\":\"elasticloadbalancing.amazonaws.com\",\"eventName\":\"DeleteLoadBalancer\",\"awsRegion\":\"us-east-1\",\"sourceIPAddress\":\"cloudformation.amazonaws.com\",\"userAgent\":\"cloudformation.amazonaws.com\",\"requestParameters\":{\"loadBalancerName\":\"ladas-tes-ElasticL-19VL2K06WQ7KI\"},\"responseElements\":null,\"requestID\":\"c3e57c7e-93c0-11e7-8d31-19fa6a7e5d4a\",\"eventID\":\"2674b48b-8369-4fbe-ab31-02eaf94643be\",\"eventType\":\"AwsApiCall\",\"apiVersion\":\"2012-06-01\"}}", 6 | "Timestamp" : "2017-09-07T11:36:49.476Z", 7 | "SignatureVersion" : "1", 8 | "Signature" : "AHb6tXSWnfaRZ18aBqJHdlN4XLaiTRHU+e/FiVghL5AqLpfxGPUj2nVvzWQR7q+wLEH/aelZ7k8AA48qaHoarl1bfkeg0jIWHCMgUc8VESnkty7ZZkJDyhq6HEpX2DA2YQ14BNHRugz2L2al+10PRTaZeVUr0UE68VF7ltq3XX7Lxh/l+6nKB74T2yaF1jZbW5/vLPUDeGurm9IA/XBG7PodPGHv0FuFLTs8M4e+0ZWAAdCO+XVMZEKegnOC30i/VhAW8pNCxuUDWldkzaNBJCuumsmgWq5hhDr6t6x0zsG1RxSl9n+hqHhRZe8PlDTY4EuAOZ9x9QUUconWK4//UA==", 9 | "SigningCertURL" : "https://sns.us-east-1.amazonaws.com/SimpleNotificationService-433026a4050d206028891664da859041.pem", 10 | "UnsubscribeURL" : "https://sns.us-east-1.amazonaws.com/?Action=Unsubscribe&SubscriptionArn=arn:aws:sns:us-east-1:200278856672:AWSConfig_topic:61d4ffc8-72e3-41a7-b28d-86e700532cd1" 11 | } -------------------------------------------------------------------------------- /spec/models/manageiq/providers/amazon/cloud_manager/event_catcher/config/AWS_EC2_InternetGateway_CREATE.json: -------------------------------------------------------------------------------- 1 | { 2 | "Type" : "Notification", 3 | "MessageId" : "239e8f11-579e-52c6-8cc2-dd9625fde55c", 4 | "TopicArn" : "arn:aws:sns:us-east-1:200278856672:AWSConfig_topic", 5 | "Subject" : "[AWS Config:us-east-1] AWS::EC2::InternetGateway igw-d90194a0 Created in Account 200278856672", 6 | "Message" : "{\"configurationItemDiff\":{\"changedProperties\":{},\"changeType\":\"CREATE\"},\"configurationItem\":{\"relatedEvents\":[\"c8554bec-0791-4815-a383-9fb5f8ec6832\"],\"relationships\":[],\"configuration\":{\"attachments\":[],\"internetGatewayId\":\"igw-d90194a0\",\"tags\":[{\"key\":\"Name\",\"value\":\"LadasTest\"}]},\"supplementaryConfiguration\":{},\"tags\":{\"Name\":\"LadasTest\"},\"configurationItemVersion\":\"1.2\",\"configurationItemCaptureTime\":\"2017-11-16T11:01:55.074Z\",\"configurationStateId\":1510830115074,\"awsAccountId\":\"200278856672\",\"configurationItemStatus\":\"ResourceDiscovered\",\"resourceType\":\"AWS::EC2::InternetGateway\",\"resourceId\":\"igw-d90194a0\",\"resourceName\":null,\"ARN\":\"arn:aws:ec2:us-east-1:200278856672:internet-gateway/igw-d90194a0\",\"awsRegion\":\"us-east-1\",\"availabilityZone\":\"Multiple Availability Zones\",\"configurationStateMd5Hash\":\"ffd5cd8ccb217300f3278676adc201c2\",\"resourceCreationTime\":null},\"notificationCreationTime\":\"2017-11-16T11:01:55.289Z\",\"messageType\":\"ConfigurationItemChangeNotification\",\"recordVersion\":\"1.2\"}", 7 | "Timestamp" : "2017-11-16T11:01:55.470Z", 8 | "SignatureVersion" : "1", 9 | "Signature" : "OOCxJjrZALcqXeJCR6ySELVuQ/qdo5ux5dKQyKsOQt4aJtbYby+N0NK0NQfz+ELmrn5IyPHFfcj1il0S+vl7O0ziWf2Szw9c711I10auyUV26Ew38d7bCUk39E6wA2ULHzZgRu6xv2Bhm72r4CTvfTrz+B9olOVyevRozsNpx9Pvgep8oIgq/lzEvSZZy4YKJ99QzRkB268N/gFfHngVU3JTCi2f1UMg/cYbVNRGZcgI7tzRyo31bXLkaihWA0XmQEHnSn4hMHmP0MEZZ38mgG/BnF2hHUjSazsityURftv48FaWTk8aRbh6UBzDhCPfiRnAprvH1JoZrJzRZvj+UQ==", 10 | "SigningCertURL" : "https://sns.us-east-1.amazonaws.com/SimpleNotificationService-433026a4050d206028891664da859041.pem", 11 | "UnsubscribeURL" : "https://sns.us-east-1.amazonaws.com/?Action=Unsubscribe&SubscriptionArn=arn:aws:sns:us-east-1:200278856672:AWSConfig_topic:515bacb7-efef-41f8-9266-7765b9afe39d" 12 | } -------------------------------------------------------------------------------- /spec/models/manageiq/providers/amazon/cloud_manager/event_catcher/cloud_watch/AWS_API_CALL_AssignPrivateIpAddresses.json: -------------------------------------------------------------------------------- 1 | { 2 | "Type" : "Notification", 3 | "MessageId" : "7562324c-5690-59b7-8568-606651dea1ac", 4 | "TopicArn" : "arn:aws:sns:us-east-1:200278856672:AWSConfig_topic", 5 | "Message" : "{\"version\":\"0\",\"id\":\"132662f0-af8f-0713-6d84-c973d7169c62\",\"detail-type\":\"AWS API Call via CloudTrail\",\"source\":\"aws.ec2\",\"account\":\"200278856672\",\"time\":\"2017-09-06T14:23:19Z\",\"region\":\"us-east-1\",\"resources\":[],\"detail\":{\"eventVersion\":\"1.05\",\"userIdentity\":{\"type\":\"IAMUser\",\"principalId\":\"AIDAI37PIOA5B6VMIJRUU\",\"arn\":\"arn:aws:iam::200278856672:user/ladas\",\"accountId\":\"200278856672\",\"accessKeyId\":\"ASIAJ2ZOO4EOXK7MYBZQ\",\"userName\":\"ladas\",\"sessionContext\":{\"attributes\":{\"mfaAuthenticated\":\"false\",\"creationDate\":\"2017-09-06T06:37:24Z\"}},\"invokedBy\":\"signin.amazonaws.com\"},\"eventTime\":\"2017-09-06T14:23:19Z\",\"eventSource\":\"ec2.amazonaws.com\",\"eventName\":\"AssignPrivateIpAddresses\",\"awsRegion\":\"us-east-1\",\"sourceIPAddress\":\"213.175.37.10\",\"userAgent\":\"signin.amazonaws.com\",\"requestParameters\":{\"networkInterfaceId\":\"eni-6933e6c9\",\"privateIpAddressesSet\":{},\"secondaryPrivateIpAddressCount\":1,\"allowReassignment\":false},\"responseElements\":{\"_return\":true},\"requestID\":\"e8b4bde8-e161-47df-a898-c1d21e56d48b\",\"eventID\":\"65e112e5-23ef-4f79-990b-daed2aa3f864\",\"eventType\":\"AwsApiCall\"}}", 6 | "Timestamp" : "2017-09-06T14:24:14.155Z", 7 | "SignatureVersion" : "1", 8 | "Signature" : "UdGII2+j3XawoP5OG5awDL6Xd2PChW5157i7naUxFCbdAUjadpQ6D/bWlNeWsZ1K079VAAqf8Yf00eTTyOcpRP8rZHHDcYO/+y+YKEdlxKA8baJ0+lzR5K9VhXXKJ5z7HAjemKICv/eKfrTZ527tcwxYTEnbCBVilDjM1kR9mphf4Shplqky7lf6tAUa3g8Upa+um9vzSM7YeqM/EGPMRi7YMafHUD7VEr4pNbpTK5eKhDRzi7IuxfQMYHEUbrEnuV+NFouROOjD2oirF8HToLpDsN27o/fofzNxeFVT/f/Wf7mcjWed9/wvTtZyjGx2dwdFxLGkqkCg9FwJyu8cSg==", 9 | "SigningCertURL" : "https://sns.us-east-1.amazonaws.com/SimpleNotificationService-433026a4050d206028891664da859041.pem", 10 | "UnsubscribeURL" : "https://sns.us-east-1.amazonaws.com/?Action=Unsubscribe&SubscriptionArn=arn:aws:sns:us-east-1:200278856672:AWSConfig_topic:9fefb8fe-9bd0-4624-9281-a279994ed2b9" 11 | } -------------------------------------------------------------------------------- /spec/models/manageiq/providers/amazon/cloud_manager/event_catcher/cloud_watch/AWS_API_CALL_CreateSecurityGroup.json: -------------------------------------------------------------------------------- 1 | { 2 | "Type" : "Notification", 3 | "MessageId" : "7806efba-90bd-51b9-bd5f-bd91a7ff192c", 4 | "TopicArn" : "arn:aws:sns:us-east-1:200278856672:AWSConfig_topic", 5 | "Message" : "{\"version\":\"0\",\"id\":\"52a4ee51-d2b1-4186-94b0-e0a7c673b9ff\",\"detail-type\":\"AWS API Call via CloudTrail\",\"source\":\"aws.ec2\",\"account\":\"200278856672\",\"time\":\"2017-09-07T12:00:05Z\",\"region\":\"us-east-1\",\"resources\":[],\"detail\":{\"eventVersion\":\"1.05\",\"userIdentity\":{\"type\":\"IAMUser\",\"principalId\":\"AIDAI37PIOA5B6VMIJRUU\",\"arn\":\"arn:aws:iam::200278856672:user/ladas\",\"accountId\":\"200278856672\",\"userName\":\"ladas\",\"sessionContext\":{\"attributes\":{\"mfaAuthenticated\":\"false\",\"creationDate\":\"2017-09-07T11:59:54Z\"}},\"invokedBy\":\"cloudformation.amazonaws.com\"},\"eventTime\":\"2017-09-07T12:00:05Z\",\"eventSource\":\"ec2.amazonaws.com\",\"eventName\":\"CreateSecurityGroup\",\"awsRegion\":\"us-east-1\",\"sourceIPAddress\":\"cloudformation.amazonaws.com\",\"userAgent\":\"cloudformation.amazonaws.com\",\"requestParameters\":{\"groupName\":\"ladas-test31-InstanceSecurityGroup-WB54OMZ9Y46R\",\"groupDescription\":\"Enable SSH access and HTTP access on the inbound port\"},\"responseElements\":{\"_return\":true,\"groupId\":\"sg-aaa85e3c\"},\"requestID\":\"92040cb3-65d4-43af-ad7c-162e84eb76ea\",\"eventID\":\"c2ec62be-0cd2-4f51-8c67-62d1fdd0b853\",\"eventType\":\"AwsApiCall\"}}", 6 | "Timestamp" : "2017-09-07T12:01:06.869Z", 7 | "SignatureVersion" : "1", 8 | "Signature" : "csf180vWX4JIbVZFuiSHuSeBJDPc2iase0DeQicg/ueowWk5m2tW9tlO8HfJyNBFxjQkZpnRISm83BOGNWy+3m8jk5ZCpJwpmNGVZOCxvlIqhlq/lNVHnUhbKXoECzrn77EAsbxuKmgSMesbeBuZxNPg7p3wEDXFoBxf/4gDWt+0gil5jxu/9+RP9b8mIu3kksINCgG7D+KS2Z8Us6c0QblIpklMVvjgJBt9zXYQeZMEpgtkqfaCdVmwGwJNCA2HkKfBtTGFTYYtvx6KsfmKPAerQV9wAh7BuyboOYLeCcEd676taIKx41GyHwrxbNmWeEimmwaYUEpRt53/imLNsA==", 9 | "SigningCertURL" : "https://sns.us-east-1.amazonaws.com/SimpleNotificationService-433026a4050d206028891664da859041.pem", 10 | "UnsubscribeURL" : "https://sns.us-east-1.amazonaws.com/?Action=Unsubscribe&SubscriptionArn=arn:aws:sns:us-east-1:200278856672:AWSConfig_topic:61d4ffc8-72e3-41a7-b28d-86e700532cd1" 11 | } -------------------------------------------------------------------------------- /spec/models/manageiq/providers/amazon/cloud_manager/event_catcher/cloud_watch/AWS_API_CALL_CreateStack.json: -------------------------------------------------------------------------------- 1 | { 2 | "Type" : "Notification", 3 | "MessageId" : "1c881b2c-2a63-55b8-ad4b-49071d77eed6", 4 | "TopicArn" : "arn:aws:sns:us-east-1:200278856672:AWSConfig_topic", 5 | "Message" : "{\"version\":\"0\",\"id\":\"862c8516-a820-dd4c-9edd-6ba4404c9f47\",\"detail-type\":\"AWS API Call via CloudTrail\",\"source\":\"aws.cloudformation\",\"account\":\"200278856672\",\"time\":\"2017-09-07T11:59:54Z\",\"region\":\"us-east-1\",\"resources\":[],\"detail\":{\"eventVersion\":\"1.05\",\"userIdentity\":{\"type\":\"IAMUser\",\"principalId\":\"AIDAI37PIOA5B6VMIJRUU\",\"arn\":\"arn:aws:iam::200278856672:user/ladas\",\"accountId\":\"200278856672\",\"accessKeyId\":\"AKIAJS5P4A2TYQUXGZYQ\",\"userName\":\"ladas\"},\"eventTime\":\"2017-09-07T11:59:54Z\",\"eventSource\":\"cloudformation.amazonaws.com\",\"eventName\":\"CreateStack\",\"awsRegion\":\"us-east-1\",\"sourceIPAddress\":\"213.175.37.10\",\"userAgent\":\"aws-sdk-ruby2/2.9.44 ruby/2.3.0 x86_64-linux resources\",\"requestParameters\":{\"onFailure\":\"ROLLBACK\",\"parameters\":[{\"parameterKey\":\"InstanceType\"},{\"parameterKey\":\"KeyName\"},{\"parameterKey\":\"SSHLocation\"}],\"stackName\":\"ladas-test31\"},\"responseElements\":{\"stackId\":\"arn:aws:cloudformation:us-east-1:200278856672:stack/ladas-test31/0fb199a0-93c4-11e7-998e-500c217b4a62\"},\"requestID\":\"0f85a7d1-93c4-11e7-aa60-d740c414ad51\",\"eventID\":\"ff36a517-0eb1-43dd-8c66-1c556b30f555\",\"eventType\":\"AwsApiCall\"}}", 6 | "Timestamp" : "2017-09-07T12:00:20.116Z", 7 | "SignatureVersion" : "1", 8 | "Signature" : "aCym1TLx/AXok2tQmjc2Mt4/xw3qLHdvrjnBqBTG3hhysqSe0nJeWv1Jf0RWZcWN8l2oXY4OWj1g+pOflGEOrnLsqeX3JPXmlIJNztOZSmNNtWKElQxaCPWnoKEepF9sZeN4shtb0hpXLv+a80zuOB/BGlvOLin1iauaFC+G6TsRtFnsyxVa7v26LhG4hcNT5Mn4YApdq1o8181KY8886kyyaknSAlbM95hpdAP1C+cPTf4pOvZtKw/4/6BawI4EKsFrlyNEo2u/fsngm/s/dO4q5aIMyi9v2f89G/m0rco4kHs5M5AnYyJyEixBM+Asx8stXF8rr5wV7I1NhzsyCQ==", 9 | "SigningCertURL" : "https://sns.us-east-1.amazonaws.com/SimpleNotificationService-433026a4050d206028891664da859041.pem", 10 | "UnsubscribeURL" : "https://sns.us-east-1.amazonaws.com/?Action=Unsubscribe&SubscriptionArn=arn:aws:sns:us-east-1:200278856672:AWSConfig_topic:61d4ffc8-72e3-41a7-b28d-86e700532cd1" 11 | } -------------------------------------------------------------------------------- /app/models/manageiq/providers/amazon/cloud_manager/orchestration_service_option_converter.rb: -------------------------------------------------------------------------------- 1 | class ManageIQ::Providers::Amazon::CloudManager::OrchestrationServiceOptionConverter < ::ServiceOrchestration::OptionConverter 2 | REGEX_TAGS = /([^(=>)\n ]+)[(=>) ]+([^(=>)\n ]+)[ \n]*/ 3 | private_constant :REGEX_TAGS, :REGEX_TAGS 4 | 5 | def stack_create_options 6 | timeout = @dialog_options['dialog_stack_timeout'].to_i 7 | policy_body, policy_url = parse_policy(@dialog_options['dialog_stack_policy']) 8 | 9 | stack_options = { 10 | :parameters => stack_parameters, 11 | :on_failure => @dialog_options['dialog_stack_onfailure'], 12 | :timeout_in_minutes => timeout.positive? ? timeout : nil, 13 | :notification_arns => parse_multiple_lines(@dialog_options['dialog_stack_notifications']), 14 | :capabilities => parse_capacities(@dialog_options['dialog_stack_capabilities']), 15 | :resource_types => parse_multiple_lines(@dialog_options['dialog_stack_resource_types']), 16 | :role_arn => @dialog_options['dialog_stack_role'], 17 | :stack_policy_body => policy_body, 18 | :stack_policy_url => policy_url, 19 | :tags => parse_tags(@dialog_options['dialog_stack_tags']) 20 | } 21 | 22 | stack_options.select { |_k, v| v.present? } 23 | end 24 | 25 | private 26 | 27 | def parse_capacities(input) 28 | return input if input.blank? || input.kind_of?(Array) 29 | 30 | # currently the dropdown cannot be multi-selected, but it will be enabled soon 31 | [input] 32 | end 33 | 34 | def parse_multiple_lines(input) 35 | return if input.blank? 36 | 37 | input.split("\n").collect(&:strip).select(&:present?) 38 | end 39 | 40 | def parse_tags(input) 41 | return if input.blank? 42 | 43 | # input example: "tag_key1 => tag_val1\n tag_key2 => tag_val2" 44 | input.scan(REGEX_TAGS).each_with_object([]) { |tag, arr| arr.push({:key => tag.first, :value => tag.last}) } 45 | end 46 | 47 | def parse_policy(input) 48 | return unless input 49 | 50 | begin 51 | JSON.parse(input) 52 | policy_body = input 53 | rescue JSON::ParserError 54 | policy_url = input 55 | end 56 | [policy_body, policy_url] 57 | end 58 | end 59 | -------------------------------------------------------------------------------- /spec/models/manageiq/providers/amazon/cloud_manager/event_catcher/config/AWS_EC2_EIP_CREATE.json: -------------------------------------------------------------------------------- 1 | { 2 | "Type" : "Notification", 3 | "MessageId" : "5451ecdd-5b7a-5e80-9a81-bef74ccb4eda", 4 | "TopicArn" : "arn:aws:sns:us-east-1:200278856672:AWSConfig_topic", 5 | "Subject" : "[AWS Config:us-east-1] AWS::EC2::EIP 52.70.78.137 Created in Account 200278856672", 6 | "Message" : "{\"configurationItemDiff\":{\"changedProperties\":{},\"changeType\":\"CREATE\"},\"configurationItem\":{\"relatedEvents\":[\"5a0515d3-1b98-4cf3-b5da-bc4814877695\"],\"relationships\":[],\"configuration\":{\"instanceId\":null,\"publicIp\":\"52.70.78.137\",\"allocationId\":\"eipalloc-3d8a720f\",\"associationId\":null,\"domain\":\"vpc\",\"networkInterfaceId\":null,\"networkInterfaceOwnerId\":null,\"privateIpAddress\":null},\"supplementaryConfiguration\":{},\"tags\":{},\"configurationItemVersion\":\"1.2\",\"configurationItemCaptureTime\":\"2017-09-06T15:34:07.574Z\",\"configurationStateId\":1504712047574,\"awsAccountId\":\"200278856672\",\"configurationItemStatus\":\"ResourceDiscovered\",\"resourceType\":\"AWS::EC2::EIP\",\"resourceId\":\"eipalloc-3d8a720f\",\"resourceName\":\"52.70.78.137\",\"ARN\":\"arn:aws:ec2:us-east-1:200278856672:eip-allocation/eipalloc-3d8a720f\",\"awsRegion\":\"us-east-1\",\"availabilityZone\":\"Not Applicable\",\"configurationStateMd5Hash\":\"0e7d153d03e3679d0417bae3ca7662b2\",\"resourceCreationTime\":null},\"notificationCreationTime\":\"2017-09-06T15:34:08.745Z\",\"messageType\":\"ConfigurationItemChangeNotification\",\"recordVersion\":\"1.2\"}", 7 | "Timestamp" : "2017-09-06T15:34:09.329Z", 8 | "SignatureVersion" : "1", 9 | "Signature" : "aBH11Pv7+g7EpZvH3r7GXYZ10w/ohXWwkdW23sJk6+AqOsJIszZC3LZKCYsFTj13+ClzkzyhXTEQ7e0bLeJ8vr95JLqZB7/Z5LiTad2UJuqXilgoX7VJiHO/K+5BDmHd9uQ2pREh9NUuv5RZDmmXJNCNBuDaaE+2sfRtl3+TgdzUMF2V+RDrigUHNgdcoYD9X84iF6AbwOkc1ViAjhsagDNESEUQO0ajg2TqWl78KEJOaFjUMHkq4LHzX9Lfchd56Uw2SGNGYMgB+uC/8qJXjhSzWzr7X/zZG7cK0FkdgmP7XW6UrvyV5/AhscYZC6w3APRpXkYO0vzs86dgwivdbg==", 10 | "SigningCertURL" : "https://sns.us-east-1.amazonaws.com/SimpleNotificationService-433026a4050d206028891664da859041.pem", 11 | "UnsubscribeURL" : "https://sns.us-east-1.amazonaws.com/?Action=Unsubscribe&SubscriptionArn=arn:aws:sns:us-east-1:200278856672:AWSConfig_topic:9fefb8fe-9bd0-4624-9281-a279994ed2b9" 12 | } -------------------------------------------------------------------------------- /spec/models/manageiq/providers/amazon/cloud_manager/event_catcher/cloud_watch/AWS_API_CALL_CopyProduct.json: -------------------------------------------------------------------------------- 1 | { 2 | "Type" : "Notification", 3 | "MessageId" : "b486b061-9b12-578a-925a-e4740c3e86a1", 4 | "TopicArn" : "arn:aws:sns:us-east-1:200278856672:AWSConfig_topic", 5 | "Message" : "{\"version\":\"0\",\"id\":\"6d5f7e3c-fbb0-292d-49ec-493e916255b1\",\"detail-type\":\"AWS API Call via CloudTrail\",\"source\":\"aws.servicecatalog\",\"account\":\"200278856672\",\"time\":\"2018-09-14T11:00:15Z\",\"region\":\"us-east-1\",\"resources\":[],\"detail\":{\"eventVersion\":\"1.05\",\"userIdentity\":{\"type\":\"IAMUser\",\"principalId\":\"AIDAI37PIOA5B6VMIJRUU\",\"arn\":\"arn:aws:iam::200278856672:user/ladas\",\"accountId\":\"200278856672\",\"accessKeyId\":\"ASIAS5IMM2PQIGY2QQ7C\",\"userName\":\"ladas\",\"sessionContext\":{\"attributes\":{\"mfaAuthenticated\":\"false\",\"creationDate\":\"2018-09-14T08:05:49Z\"}},\"invokedBy\":\"signin.amazonaws.com\"},\"eventTime\":\"2018-09-14T11:00:15Z\",\"eventSource\":\"servicecatalog.amazonaws.com\",\"eventName\":\"CopyProduct\",\"awsRegion\":\"us-east-1\",\"sourceIPAddress\":\"213.175.37.10\",\"userAgent\":\"signin.amazonaws.com\",\"requestParameters\":{\"idempotencyToken\":\"k24opnl6pn-jehy1hulx6n\",\"sourceProductArn\":\"arn:aws:catalog:us-east-1:200278856672:product/prod-7eznvu5zer2ye\",\"copyOptions\":[]},\"responseElements\":{\"copyProductToken\":\"copyproduct-sgr4qxwgtgapm\"},\"requestID\":\"5c2c900e-b80d-11e8-b007-07c4793f0b9d\",\"eventID\":\"d2c91c8b-fc42-41dc-8519-7f0e9075a6ea\",\"eventType\":\"AwsApiCall\"}}", 6 | "Timestamp" : "2018-09-14T11:01:00.491Z", 7 | "SignatureVersion" : "1", 8 | "Signature" : "jud7RhhnTrl1ri1+SsiYYWtOIfPgZ90ea2vpfr8uolARkQoUG586IKfBrDJz93h/VV7TX8pHsKshWnwYARYiNDw3YS1TFNV66gKjvYRYVc3DALopRqXh6jhr5NLuEprxTTs4gqCNzJVOKmbhg6YTyebni0wNvqYihGNwQ7FrJwI/bL+et1h/hNF3zVbuQS/eXifW4wYnxSPhMoNolbw/zgDxWK6m2Wkf0NimNRxuxGIZXdeaufccyhCZQdsVWuETE345kxTomuyLDCymfe4tudpe11rB/1vmhPWI1nT14qgbCL2koHSh8U9fLGucwQ0ejWm196P8g1rlNSunUT1ANA==", 9 | "SigningCertURL" : "https://sns.us-east-1.amazonaws.com/SimpleNotificationService-ac565b8b1a6c5d002d285f9598aa1d9b.pem", 10 | "UnsubscribeURL" : "https://sns.us-east-1.amazonaws.com/?Action=Unsubscribe&SubscriptionArn=arn:aws:sns:us-east-1:200278856672:AWSConfig_topic:25411282-5f1f-4379-b2c8-aff6d18dfdea" 11 | } -------------------------------------------------------------------------------- /spec/models/manageiq/providers/amazon/cloud_manager/event_catcher/cloud_watch/AWS_API_CALL_AttachNetworkInterface.json: -------------------------------------------------------------------------------- 1 | { 2 | "Type" : "Notification", 3 | "MessageId" : "295d51c4-9b8d-5672-b627-03ee914d18a5", 4 | "TopicArn" : "arn:aws:sns:us-east-1:200278856672:AWSConfig_topic", 5 | "Message" : "{\"version\":\"0\",\"id\":\"daf72ae6-7e98-629f-18d6-02f538a217bf\",\"detail-type\":\"AWS API Call via CloudTrail\",\"source\":\"aws.ec2\",\"account\":\"200278856672\",\"time\":\"2017-09-06T14:38:01Z\",\"region\":\"us-east-1\",\"resources\":[],\"detail\":{\"eventVersion\":\"1.05\",\"userIdentity\":{\"type\":\"IAMUser\",\"principalId\":\"AIDAI37PIOA5B6VMIJRUU\",\"arn\":\"arn:aws:iam::200278856672:user/ladas\",\"accountId\":\"200278856672\",\"accessKeyId\":\"ASIAJ2ZOO4EOXK7MYBZQ\",\"userName\":\"ladas\",\"sessionContext\":{\"attributes\":{\"mfaAuthenticated\":\"false\",\"creationDate\":\"2017-09-06T06:37:24Z\"}},\"invokedBy\":\"signin.amazonaws.com\"},\"eventTime\":\"2017-09-06T14:38:01Z\",\"eventSource\":\"ec2.amazonaws.com\",\"eventName\":\"AttachNetworkInterface\",\"awsRegion\":\"us-east-1\",\"sourceIPAddress\":\"213.175.37.10\",\"userAgent\":\"signin.amazonaws.com\",\"errorCode\":\"Client.AttachmentLimitExceeded\",\"errorMessage\":\"Interface count 3 exceeds the limit for t2.micro\",\"requestParameters\":{\"networkInterfaceId\":\"eni-83fc5323\",\"instanceId\":\"i-099e794cfa830e9be\",\"deviceIndex\":2},\"responseElements\":null,\"requestID\":\"03ade627-5b39-475d-9a8c-6cd432eff5d9\",\"eventID\":\"a8f7eec4-ba0e-4b18-98c4-be864fec51fc\",\"eventType\":\"AwsApiCall\"}}", 6 | "Timestamp" : "2017-09-06T14:38:56.916Z", 7 | "SignatureVersion" : "1", 8 | "Signature" : "fHOamtKBAheZuXLitSBAAcyt+IKJ8XenPj4K1A4G+4Hsp9VfLigSY3bMqYzo4/i6ngyPa9pn9nplLELHsVzmJRceXdzIF6osFgvviUnXzlUgnJ4wpudRP6/EL6vmQpJ6i4FCr7bUoqezyLbpEcnWk0N5HQerhtOWCSwj3mY2ywjgo/d2t6tbnUz/4HAw4KaT35ZgWbVpsYDMCokrnJLZKZFd2d86N/WlvueRIuQIB7W7Lhjiwjm2S64hdIhMm5X77PYw0E2zh0OlDRJs6VQ7xV9lvheD3k2fuzczSs7ubIZ9qGr5gBh1wQsi4uotHVXd2N5hhev8W6BuTdulNStF4g==", 9 | "SigningCertURL" : "https://sns.us-east-1.amazonaws.com/SimpleNotificationService-433026a4050d206028891664da859041.pem", 10 | "UnsubscribeURL" : "https://sns.us-east-1.amazonaws.com/?Action=Unsubscribe&SubscriptionArn=arn:aws:sns:us-east-1:200278856672:AWSConfig_topic:9fefb8fe-9bd0-4624-9281-a279994ed2b9" 11 | } --------------------------------------------------------------------------------