ManageIQ Automate Domain of shared utilities to be used by other ManageIQ domains.
- miq-Utilities
- Table of Contents
- Features
- Automate
- Automate StdLib
- Automate Settings
- Install
- Unit Testing
- Branches and Tags
- Contributors
The high level features of this ManageIQ extension.
- Infrastructure
- VM
- set custom attributes
- set tags
- start
- VMWare DRS cluster best fit with scope placement
- VMWare customized folder placement
- Providers / Clusters / Hosts
- Dynamic dialog methods and instances for getting the LANs for the selected object and for tagging those LANs
- Method for determining templated based on a selected location tag on providers and OS tag on templates
- VM
- Service
- Thread safe (multiple simultaneous provisions) set VM names method with user provided prefix for use with service provisoning state machine
Infrastructure/VM/Provisioning/Naming/vmname
implementation with support for variable suffix counter length and specified domain name- Provision complete email with hostname ands IPs
- Provision new VM(s) to an existing service
- Resize primary VM disk
- Add additional disks to VM
- System
- Dynamic Diaglog methods and instances for getting tags and tag categories
- Methods for adding and removing tags from LANs
- Logging helpers
Information on the provided Automate.
Instances where this domain overrides defaults provided in ManageIQ
Infrastructure/VM/Provisioning/Email
(Schema)- Override default schema values
Infrastructure/VM/Provisioning/Email/MiqProvision
* (Instances)- Override all instances to change
method
toMiqProvision_Update
rather then event specific methods
- Override all instances to change
Infrastructure/VM/Provisioning/Naming/vmname
(Method)- Override to add handling for fully qualified names with prefixes on the short name
Infrastructure/VM/Provisioning/StateMachines/Methods/PostProvision
(Instance)- Override
common_meth1
to callprocess_telemetry_data
- Override
Infrastructure/VM/Provisioning/StateMachines/ProvisionRequestApproval/Default
(Instance)- Override
max_vms
to 10
- Override
Infrastructure/VM/Provisioning/StateMachines/VMProvision_VM/update_provision_status
(Method)- Override to send email on error update
- Override to be able to send email on any update
- Override to collect Telemetry data on every invocation based on current step name and
ae_status_step
Infrastructure/VM/Retirement/Email/
* (Instances)- Override all instances attributes to be cleaner
Infrastructure/VM/Retirement/Email/vm_retirement_emails
(Method)- Override to make retirment email prettier
Infrastructure/VM/Retirement/StateMachines/Methods/check_pre_retirement
- Override to remove
unknown
from list of power states to stop looping for
- Override to remove
Infrastructure/VM/Retirement/StateMachines/Methods/check_removed_from_provider
(Method)- Override to add debug loggin
Service/Provisioning/Email/
* (Instances)- Override all instances to change
method1
toServiceProvision_Update
rather then event specific methods
- Override all instances to change
Service/Provisioning/StateMachines/ServiceProvision_Template/CatalogItemInitialization
(Instance)- Override
post5
step to call/Service/Provisioning/StateMachines/Methods/ProcessTelemetryData
- Override
Service/Provisioning/StateMachines/ServiceProvision_Template/update_serviceprovision_status
(Method)- Override to send email on error update
- Override to be able to send email on any update
- Override to collect Telemetry data on every invocation based on current step name and
ae_status_step
This namespace serves as a "standard library" of CloudForms (ManageIQ) Automation code. The goal is for common methods to be collected here, and to be suitbale for inclusion as "Embedded Methods".
See: https://cloudformsblog.redhat.com/2018/04/17/embedded-methods/ for conceptual background.
This project now includes a new mechanism for storing and accessing configuration settings. This has some advantages over traditional processes for configuration (instance variables or constants within a method). The settings can all be stored in one location, and being code, edited in something more featureful than a text box. The settings values can be any ruby data structure directly, and do not require juggling between yaml or json as commonly happens. Additionally, as the settings are grouped into global/default/region, then one can configure common and region-specific settings in a single place, for multi region deployments, useful for either a replication setup, or a dev/prod envionment split, pulling code from one git source.
/StdLib/Settings/settings provides the core lookup functionality. /StdLib/Settings/settingsstore holds setting values.
To leverage your own custom settings, one can simply copy settings.rb up to a top priority domain, and edit it per norm. However, to isolate out ones own domain's settings, there is a mechanism ot merge in settings from different files.
Using the commented code in settings.rb as a template, create a new (ruby) class that extends RedHatConsulting_Utilities::StdLib::Core::Settings and has a PRIORITY and SETTINGS class values.
Copy our settings.rb to a high priority domain. Configure it to have embedded methods of all other settings.rb you wish to include (but not the one from this project). Ordered inclusion is impossible to guarantee with the UX currently, the PRIORITY setting, however, is honoured in merging the hashes. In practice, you are going to want to use non-overlapping key values, or manually reconcile the desired values in the settings.rb in the high priority domain.
miq_provision_redhat_dialogs_template_no_required_fields
- a clone of
miq_provision_redhat_dialogs_template
only with all required fields set to not required. This is useful when callingcreate_provision_request
and not wanting to pass in all fields and rather determining them later. For example determining thevlan
bassed on placement rather then before callingcreate_provision_request
.
- a clone of
- miq_provision_vmware_dialogs_template_no_required_fields.yaml
- a clone of
miq_provision_vmware_dialogs_template
only with all required fields set to not required. This is useful when callingcreate_provision_request
and not wanting to pass in all fields and rather determining them later. For example determining thevlan
bassed on placement rather then before callingcreate_provision_request
.
- a clone of
- Install dependencies
- Automate -> Import/Export
- Import Datastore via git
- Git URL:
https://github.com/rhtconsulting/miq-Utilities.git
- Submit
- Select Branch/Tag to synchronize with
- Submit
To run the test suite, you first require a functional ManageIQ development environment, specifically, able to run the test suite of https://github.com/ManageIQ/manageiq-content/ . Link in this project to that, per
manageiq-content/content/automate/RedHatConsulting_Utilities -> miq-Utilities/Automate/RedHatConsulting_Utilities manageiq-content/spec/content/automate/RedHatConsulting_Utilities -> miq-Utilities/UnitTests/spec/content/RedHatConsulting_Utilities manageiq-content/spec/factories/RedHatConsulting_Utilities -> miq-Utilities/UnitTests/spec/factories/RedHatConsulting_Utilities
and then run $ bundle exec rake or, e.g., $ bundle exec rspec --format documentation --pattern spec/content/automate/RedHatConsulting_Utilities/**/*_spec.rb
The master branch of this repository will aim to support the current CloudForms release. If breaking changes for previous CloudForms versions are introduced in Master, version specific branches and tags will be created for those previous versions, as long as those releases are still supported by Red Hat. The version-specific release branches will be no longer be maintained once that version of CloudForms is end of life.
CloudForms Product Lifecycle Information:
https://github.com/RedHatOfficial/miq-Utilities/graphs/contributors