{"action":"created","comment":{"url":"https://api.github.com/repos/ManageIQ/manageiq/pulls/comments/82827520","pull_request_review_id":3707345,"id":82827520,"diff_hunk":"@@ -6,454 +6,494 @@ All notable changes to this project will be documented in this file.\n \n ## Added\n \n-- Automate\n-  - Import Rake task `OVERWRITE` argument: Setting  `OVERWRITE=true` removes the target domain prior to import\n-  - New `extend_retires_on` method: Used by Automate methods to set a retirement date to specified number of days from today, or from a future date.\n-  - Service model updates\n-    - MiqAeServiceHardware\n-    - MiqAeServicePartition\n-    - MiqAeServiceVolume\n+### Automate\n+\n+- New methods\n+  - `extend_retires_on` method: Used by Automate methods to set a retirement date to specified number of days from today, or from a future date.\n+  - `taggable?` to programmatically determine if a Service Model class or instance is taggable.\n+- Service model updates\n+  - MiqAeServiceHardware\n+  - MiqAeServicePartition\n+  - MiqAeServiceVolume\n+- Generic Objects: Model updates\n+  - Associations\n+  - Tagging\n+  - Service Methods: `add_to_service / remove_from_service`\n+  - Service models created for GenericObject and GenericObjectDefinition\n+  - Process Generic Object method call via automate\n+  - Methods content stored in Automate\n+  - Generic Object Definition model contains the method name only (Parameters defined in automate)\n+  - Methods can return data to caller\n+  - Methods can be overridden by domain ordering\n+- Git Automate support\n+  - Branch/Tag support\n+  - Contents are locked and can be copied to other domains for editing\n+  - Editable properties\n+    - Enabled/Disabled\n+    - Priority\n+    - Removal of Domain\n+    - Dedicated Server Role to store the repository\n+-  Import Rake task `OVERWRITE` argument: Setting  `OVERWRITE=true` removes the target domain prior to import\n+- Added /System/Process/MiqEvent instance\n+- Added Provider refresh call to Amazon retire state machine in Pre-Retirement state\n+- Class Schema allows for EMS, Host, Policy, Provision, Request, Server, Storage, and VM(or Template) datatypes\n+  - Value is id of the objects\n+  - If object is not found, the attribute is not defined.\n+- Null Coalescing Operator\n+  - Multiple String values separated by “||”\n+  - Evaluated on new attribute data type “Null Coalescing”\n+  - Order dependent, left to right evaluation\n+  - First non-blank value is used\n+  - Skip and warn about missing objects\n+- Service Dialogs\n+  - Added ‘Visible’ flag to all dialog fields\n+  - Support for “visible” flag for dynamic fields\n+- Expose Compliance and ComplianceDetail models\n+- New associations on VmOrTemplate and Host models:\n+  - `expose :compliances`\n+  - `expose :last_compliance`\n+- New Service Models\n+  - Compliance: `expose :compliance_details`\n+  - ComplianceDetail: `expose :compliance`, `expose :miq_policy`\n+  - Service Model: Expose provision_priority value\n+- Engine: Allow arguments in method calls during substitution\n+   operation\n+- Retirement\n+  - Restored retirement logic to verify that VM was provisioned or contains Lifecycle tag before processing\n+  - Built-in policy to prevent retired VM from starting on a resume power\n+- Added lifecycle tag as a default tag\n+- Provisioning\n+  - Service Provisioning: Exposed number_of_vms when building the provision request for a service\n+  - Filter networks and floating_ips for OpenStack provisioning\n+  - Added Google pre and post provisioning methods\n+  - Enabled support for vApp provisioning service\n+  - Backend support to enable VMware provisioning through selection of a DRS-enabled cluster instead of a host\n+  - Set VM storage profile in provisioning\n   - Enhanced messaging for provisioning: Displayed elements\n     - ManageIQ Server name\n     - Name of VM/Service being provisioned\n     - Current Automate state machine step\n     - Status message\n     - Provision Task Message\n     - Retry count (when applicable)\n-  - New method `taggable?` to programmatically determine if a Service Model class or instance is taggable.\n-  - Generic Objects: Model updates\n-    - Associations\n-    - Tagging\n-    - Service Methods: `add_to_service / remove_from_service`\n-    - Service models created for GenericObject and GenericObjectDefinition\n-    - Process Generic Object method call via automate\n-    - Methods content stored in Automate\n-    - Generic Object Definition model contains the method name only (Parameters defined in automate)\n-    - Methods can return data to caller\n-    - Methods can be overridden by domain ordering\n-  - Git Automate support\n-    - Branch/Tag support\n-    - Contents are locked and can be copied to other domains for editing\n-    - Editable properties\n-      - Enabled/Disabled\n-      - Priority\n-      - Removal of Domain\n-      - Dedicated Server Role to store the repository\n+- Services\n   - Service resolution based on Provision Order\n-  - Added /System/Process/MiqEvent instance\n-  - Added Provider refresh call to Amazon retire state machine in Pre-Retirement state\n-  - Service Dialogs: Added ‘Visible’ flag to all dialog fields\n-  - Class Schema allows for EMS, Host, Policy, Provision, Request, Server, Storage, and VM(or Template) datatypes\n-    - Value is id of the objects\n-    - If object is not found, the attribute is not defined.\n-  - Null Coalescing Operator\n-    - Multiple String values separated by “||”\n-    - Evaluated on new attribute data type “Null Coalescing”\n-    - Order dependent, left to right evaluation\n-    - First non-blank value is used\n-    - Skip and warn about missing objects\n-  - Service Provisioning: Exposed number_of_vms when building the provision request for a service\n-  - Service Dialogs: Support for “visible” flag for dynamic fields\n-  - Expose Compliance and ComplianceDetail models\n-  - New associations on VmOrTemplate and Host models:\n-    - `expose :compliances`\n-    - `expose :last_compliance`\n-  - New Service Models\n-    - Compliance: `expose :compliance_details`\n-    - ComplianceDetail: `expose :compliance`, `expose :miq_policy`\n-  - Engine: Allow arguments in method calls during substitution\n-  - Policy: Built-in policy to prevent retired VM from starting on a resume power operation\n-  - Service Model: Expose provision_priority value\n-  - Retirement: Restored retirement logic to verify that VM was provisioned or contains Lifecycle tag before processing\n-  - Added lifecycle tag as a default tag\n-  - Provisioning\n-    - Filter networks and floating_ips for OpenStack provisioning\n-    - Added Google pre and post provisioning methods\n-    -  Enabled support for vApp provisioning service\n-    - Backend support to enable VMware provisioning through selection of a DRS-enabled cluster instead of a host\n-    - Set VM storage profile in provisioning\n-  - Services\n-    - Log properly dynamic dialog field script error\n-    - Back-end support for Power Operations on Services\n-      - Service Items: Pass start/stop commands to associated resources.\n-      - Service Bundles: Honor bundle resource configuration for start/stop actions\n-  - Added top_level_namespace to miq_ae_namespace model to support filtering for pluggable providers\n-  - Created service_connections table to support connecting services together along with metadata\n-- Platform\n-  - Centralized Administration\n-    - Server to server authentication\n-    - Invoke tasks on remote regions\n-    - Leverage new API client (WIP)\n-    - VM power operations\n-    - VM retirement\n-    - Leverages new ManageIQ API Client gem\n-  - Chargeback\n-    - Support for generating chargeback for services\n-    - Will be used in Service UI for showing the cost of a service\n-    - Generate monthly report for a Service\n-    - Instance method on Service class\n-    - Daily schedule generates report for each Service\n-    - Enables SUI display of Service costs over last 30 days\n-    - Containers\n-      - Added image tag names for Containers in vim performance state.\n-      - Added a 'fixed_compute_metric' column to chargeback\n-      - Added rate assigning by tags to container images\n-      - Chargeback vm group by tag\n-   - Notifications\n-     - Dynamic substitution in notification messages\n-     - Generate for Lifecycle events\n-  - Database Maintenance\n-    - Hourly reindex: High Churn Tables\n-    - Periodic full vacuum\n-    - Configure in appliance console\n-  - Notification Backend\n-    - Model for asynchronous notifications\n-    - Authentication token generation for web sockets\n-    - API for notification drawer\n-  - PostgreSQL High Availability\n-    - Added [repmgr](http://repmgr.org/)  to support automatic failover\n-        - Maintain list of active standby database servers\n-        - Added [pg-dsn_parser](https://github.com/ManageIQ/pg-dsn_parser) for converting DSN to a hash\n-    - DB Cluster - Primary, Standbys\n-    - Uses [repmgr](http://www.repmgr.org/) (replication)\n-    - Failover\n-      - Primary to Standby\n-      - Appliance connects to new primary DB\n-      - Primary/Standby DB config in Appliance Console\n-      - Database-only appliance config in Appliance Console\n-      - Failover Monitor\n-  - Tenancy \n-    - Post refresh hook on OpenStack provider\n-    - Create provider base tenant under a root tenant\n-    - Cloud Tenant tree generated under provider base tenant\n-    - Create / Update / Delete\n-    - PostgreSQL High Availability\n-    - Groundwork in preparation for supporting multiple entitlements\n-    - ApplicationHelper#role_allows and User#role_allows? combined and moved to RBAC\n-    - Post refresh hook to queue mapping of Cloud Tenants\n-    - Added parent_id to CloudTenant as prerequisite for mapping OpenStack tenants to ManageIQ tenants\n-    - Mapping Cloud Tenants to ManageIQ Tenants\n-      - Prevent deleting mapped tenants from cloud provider\n-      - Added checkbox \"Tenant Mapping Enabled\" to Openstack Manager\n-   - Ad hoc sharing of resources across tenants\n-      - Backend modeling completed\n-      - Implementation in progress\n-  - Database maintenance scripts added to appliance\n-  - Watermark reports updated to be based on max of daily max value instead of max of average value\n-  - Nice values added to worker processes\n-  - Custom attributes support in reporting and expressions\n-    - Selectable as a column\n-    - Usable in report filters and charts\n-  - Appliance Console\n-    - Limited menu when running inside a container\n-    - Removed menu items that are not applicable when running inside a container\n-- Providers\n-  - Core\n-    - Override default http proxy\n-    - Default reasons for supported features\n-    - Known features are discoverable\n-    - Every known feature is unsupported by default\n-    - `supports :reboot_guest`\n-  - Generate a csv of features supported across all models\n-  - Amazon: Public Images Filter\n-  - Ansible Tower\n-      - Collect Job parameters during Provider Refresh\n-      - Log Ansible Tower Job output when deployment fails\n+  - Log properly dynamic dialog field script error\n+  - Back-end support for Power Operations on Services\n+    - Service Items: Pass start/stop commands to associated resources.\n+    - Service Bundles: Honor bundle resource configuration for start/stop actions\n+    - Created service_connections table to support connecting services together along with metadata\n+- Added top_level_namespace to miq_ae_namespace model to support filtering for pluggable providers\n+\n+### Platform\n+\n+- Centralized Administration\n+  - Server to server authentication\n+  - Invoke tasks on remote regions\n+  - Leverage new API client (WIP)\n+  - VM power operations\n+  - VM retirement\n+  - Leverages new ManageIQ API Client gem\n+- Chargeback\n+  - Support for generating chargeback for services\n+  - Will be used in Service UI for showing the cost of a service\n+  - Generate monthly report for a Service\n+  - Instance method on Service class\n+  - Daily schedule generates report for each Service\n+  - Enables SUI display of Service costs over last 30 days\n   - Containers\n-    - Reports: Pods for images per project, Pods per node\n-    - Deployment wizard\n-    - Models for container deployments\n-    - Limit number of concurrent SmartState Analyses\n-    - Allow policies to prevent Container image scans\n-    - Chargeback rates based on container image tags\n-    - Keep pod-container relationship after disconnection\n-  - Google Compute Engine\n-    - Provision Preemptible VMs\n-    - Preemptible Instances\n-    - Retirement support\n-    - Metrics\n-    - Load Balancer refresh\n-  - Middleware (Hawkular)  \n-    - JMS support (entities, topology)\n-    - Reports for Transactions (in App servers)\n-    - Support micro-lifecycle for Middleware-deployments\n-    - Middleware provider now uses restful routes\n-    - Alerts\n-      - Link miq alerts and hawkular events on the provider\n-      - Convert ManageIQ alerts/profiles to hawkular group triggers/members of group triggers\n-      - Sync the provider when ManageIQ alerts and alert profiles are created/updated\n-    - Added entities: Domains and Server Groups including their visualization in topology\n-    - Datasource entity now has deletion operation\n-    - Support more event types for datasource and deployment\n-    - Cross linking to VMs added to topology\n-    - Operations: Add Deployment, Start/stop deployment\n-    - Performance reports for datasources\n-    - Collect more metrics for datasource\n-    - Deployment entity operations: Undeploy, redeploy\n-    - Server operations: Reload, suspend, resume\n-    - Live metrics for datasources and transactions\n-    - Performance reports for middleware servers\n-    - Support for alert profiles and alert automated expressions for middleware server\n-    - Crosslink middleware servers with RHEV VMs\n-    - Collect and display deployment status\n-    - Datasources topology view\n-    - Added missing fields in UI to improve user experience\n-    - Middleware as top level menu item\n-    - Default view for Middleware is datasource\n-    - Change labels in middleware topology\n-    - Added \"Server State\" into Middleware Server Details\n-    - Enabled search for Middleware entities\n-    - Users can add Middleware Datasources and JDBC Drivers\n-    - Metrics for JMS Topics and Queues\n-  - Kubernetes: Cross-linking with OpenStack instances\n-  - Microsoft Cloud (Azure)\n-    - Handle new events: Create Security Group, VM Capture\n-    - Provider-specific logging\n-    - Added memory and disk utilization metrics\n-    - Support floating IPs during provisioning\n-    - Load Balancer inventory collection for Azure\n-    - Pagination support in armrest gem\n-  - Microsoft Infrastructure (SCVMM): Set CPU sockets and cores per socket\n-  - Networking\n-    - Allow port ranges for Load Balancers\n-    - Load Balancer user interface\n-    - Separate Google Network Manager\n-    - NFV: VNFD Templates and VNF Stacks\n-    - Nuage: Inventory of Managed Cloud Subnets\n-    -  Nuage policy groups added\n+    - Added image tag names for Containers in vim performance state.\n+    - Added a 'fixed_compute_metric' column to chargeback\n+    - Added rate assigning by tags to container images\n+    - Chargeback vm group by tag\n+  - Notifications\n+    - Dynamic substitution in notification messages\n+    - Generate for Lifecycle events\n+- Database Maintenance\n+  - Hourly reindex: High Churn Tables\n+  - Periodic full vacuum\n+  - Configure in appliance console\n+- Notification Backend\n+  - Model for asynchronous notifications\n+  - Authentication token generation for web sockets\n+  - API for notification drawer\n+- PostgreSQL High Availability\n+  - Added [repmgr](http://repmgr.org/)  to support automatic failover\n+    - Maintain list of active standby database servers\n+    - Added [pg-dsn_parser](https://github.com/ManageIQ/pg-dsn_parser) for converting DSN to a hash\n+  - DB Cluster - Primary, Standbys\n+  - Uses [repmgr](http://www.repmgr.org/) (replication)\n+  - Failover\n+    - Primary to Standby\n+    - Appliance connects to new primary DB\n+    - Primary/Standby DB config in Appliance Console\n+    - Database-only appliance config in Appliance Console\n+    - Failover Monitor\n+- Tenancy\n+  - Post refresh hook on OpenStack provider\n+  - Create provider base tenant under a root tenant\n+  - Cloud Tenant tree generated under provider base tenant\n+  - Create / Update / Delete\n+  - PostgreSQL High Availability\n+  - Groundwork in preparation for supporting multiple entitlements\n+  - ApplicationHelper#role_allows and User#role_allows? combined and moved to RBAC\n+  - Post refresh hook to queue mapping of Cloud Tenants\n+  - Added parent_id to CloudTenant as prerequisite for mapping OpenStack tenants to ManageIQ tenants\n+  - Mapping Cloud Tenants to ManageIQ Tenants\n+    - Prevent deleting mapped tenants from cloud provider\n+    - Added checkbox \"Tenant Mapping Enabled\" to Openstack Manager\n+  - Ad hoc sharing of resources across tenants\n+    - Backend modeling completed\n+    - Implementation in progress\n+- Database maintenance scripts added to appliance\n+- Watermark reports updated to be based on max of daily max value instead of max of average value\n+- Nice values added to worker processes\n+- Custom attributes support in reporting and expressions\n+  - Selectable as a column\n+  - Usable in report filters and charts\n+- Appliance Console\n+  - Limited menu when running inside a container\n+  - Removed menu items that are not applicable when running inside a container\n+\n+### Providers\n+\n+- Core\n+  - Override default http proxy\n+  - Default reasons for supported features\n+  - Known features are discoverable\n+  - Every known feature is unsupported by default\n+  - `supports :reboot_guest`\n+- Generate a csv of features supported across all models\n+- Amazon: Public Images Filter\n+- Ansible Tower\n+  - Collect Job parameters during Provider Refresh\n+  - Log Ansible Tower Job output when deployment fails\n+- Containers\n+  - Reports: Pods for images per project, Pods per node\n+  - Deployment wizard\n+  - Models for container deployments\n+  - Limit number of concurrent SmartState Analyses\n+  - Allow policies to prevent Container image scans\n+  - Chargeback rates based on container image tags\n+  - Keep pod-container relationship after disconnection\n+- Google Compute Engine\n+  - Provision Preemptible VMs\n+  - Preemptible Instances\n+  - Retirement support\n+  - Metrics\n+  - Load Balancer refresh\n+- Middleware (Hawkular)  \n+  - JMS support (entities, topology)\n+  - Reports for Transactions (in App servers)\n+  - Support micro-lifecycle for Middleware-deployments\n+  - Middleware provider now uses restful routes\n+  - Alerts\n+    - Link miq alerts and hawkular events on the provider\n+    - Convert ManageIQ alerts/profiles to hawkular group triggers/members of group triggers\n+    - Sync the provider when ManageIQ alerts and alert profiles are created/updated\n+  - Added entities: Domains and Server Groups including their visualization in topology\n+  - Datasource entity now has deletion operation\n+  - Support more event types for datasource and deployment\n+  - Cross linking to VMs added to topology\n+  - Operations: Add Deployment, Start/stop deployment\n+  - Performance reports for datasources\n+  - Collect more metrics for datasource\n+  - Deployment entity operations: Undeploy, redeploy\n+  - Server operations: Reload, suspend, resume\n+  - Live metrics for datasources and transactions\n+  - Performance reports for middleware servers\n+  - Support for alert profiles and alert automated expressions for middleware server\n+  - Crosslink middleware servers with RHEV VMs\n+  - Collect and display deployment status\n+  - Datasources topology view\n+  - Added missing fields in UI to improve user experience\n+  - Middleware as top level menu item\n+  - Default view for Middleware is datasource\n+  - Change labels in middleware topology\n+  - Added \"Server State\" into Middleware Server Details\n+  - Enabled search for Middleware entities\n+  - Users can add Middleware Datasources and JDBC Drivers\n+  - Metrics for JMS Topics and Queues\n+- Kubernetes: Cross-linking with OpenStack instances\n+- Microsoft Cloud (Azure)\n+  - Handle new events: Create Security Group, VM Capture\n+  - Provider-specific logging\n+  - Added memory and disk utilization metrics\n+  - Support floating IPs during provisioning\n+  - Load Balancer inventory collection for Azure\n+  - Pagination support in armrest gem\n+- Microsoft Infrastructure (SCVMM): Set CPU sockets and cores per socket\n+- Networking\n+  - Allow port ranges for Load Balancers\n+  - Load Balancer user interface\n+  - Separate Google Network Manager\n+  - NFV: VNFD Templates and VNF Stacks\n+  - Nuage: Inventory of Managed Cloud Subnets\n+  - Nuage policy groups added\n     - Load balancer service type actions for reconfigure, retirement, provisioning\n-    - UI for creating subnets\n-  - OpenStack\n-    - Collect inventory for cloud volume backups\n-    - Show topology for undercloud\n-    - Associate/Disassociate Floating IPs\n-    - Host Aggregates\n-    - Region Support\n-    - Cleanup of Nova services after scale down\n-    - Prevent retired instances from starting\n-    - Add hardware state for Hosts\n-    -Map Flavors to Cloud Tenants during Openstack Cloud refresh\n-    -Cinder backup/restore actions added to model\n-    - UI to register Ironic nodes through Mistral\n-  - Red Hat Enterprise Virtualization\n-    - Get Host OS version and type\n-    - Disk Management in VM Reconfigure\n-    - Snapshot support\n-    - Report manufacturer and product info for RHEVM hosts\n-  - Storage\n-    - New Swift Storage Manager\n-    -  New Cinder Storage Manager\n-    -  Initial User Interface support for Storage Managers\n-  - VMware vSphere\n-    - Storage profiles\n-    - Storage Profiles modeling and inventory\n-    - Datastores are filtered by Storage Profiles in provisioning\n-  - vCloud\n-    - Collect status of vCloud Orchestration Stacks\n-    - Add Network Manager\n-    - Collect networking inventory\n-    - Cloud orchestration stack operation: Create and delete stack\n-    -Collect virtual datacenters as availability zones\n-    -Event Catcher\n-- REST API\n-  - Token manager supports for web sockets\n-  - Added querying for cockpit support\n-  - Added support for Bulk queries\n-  - Added support for UI notification drawer\n-  - API entrypoint returns details about the appliance via server_info\n-  - Blueprint updates now supports removal of the Service Catalog or Service Dialog from a Blueprint\n-  - Support for compressed ids in inbound requests\n-  - CRUD support for Arbitration Rules\n-  - Added GET role identifiers\n-  - Support for arbitrary resource paths\n-  - Work started on [ManageIQ API Client](https://github.com/ManageIQ/manageiq-api-client)\n-  - Support for Arbitration Profiles\n-  - Support for Cloud Networks queries\n-  - Support for Arbitration Settings\n-  - Updated /api/users to support edits of user settings\n-  - Support for report schedules\n-  - Support for approving or denying service requests\n-  - Support for OpenShift Container Deployments\n-  - Support for Virtual Templates\n-  - Version bumped to 2.3.0 in preparation for Euwe release\n-  - New /api/automate primary collection\n-   - Enhanced to return additional product information for the About modal\n-   - Bulk queries now support referencing resources by attributes\n-   - Added ability to delete one’s own notifications\n-   - Publish Blueprint API\n-   - Update Blueprint API to store bundle info in ui_properties\n-   - CRUD for Service create and orchestration template\n-   - Api for refreshing automate domain from git\n-   - Allow compressed IDs in resource references\n-- Service Broker: Service UI (name change from Self Service UI)\n-  - Renamed due to expanding number of use cases\n-  - Adding in Arbitration Rules UI\n-  - Service Designer: Blueprint API\n-    - Arbitration Profiles\n-      - Collection of pre-defined settings\n-      - Work in conjunction with the Arbitration Engine\n-   - Rules Engine: API\n-  - Added datastore for the default settings for resourceless servers\n-  - Create picture\n-  -  Generic requests OPTION method\n-  -  Delete dialogs API\n-  -  Updated the “update” API for blueprints to be more efficient\n-  - Cockpit integration\n-  -  Added About modal\n-- SmartState\n-  - Deployed new MiqDiskCache module for use with Microsoft Azure\n-    - Scan time reduced from >20 minutes to <5 minutes\n-    - Microsoft Azure backed read requests reduced from >7000 requests to <1000\n-  - Generalized disk LRU caching module\n-    - Caching module can be used by any disk module, eliminating duplication.\n-    - Can be inserted “higher” in the IO path.\n-    - Configurable caching parameters (memory vs performance)\n-    - Will be employed to address Azure performance and throttling issues.\n-    - Other disk modules converted over time.\n-  - Containers: Settings for proxy environment variables\n-- User Interface\n-  - Added mandatory Subscription field to Microsoft Azure Discovery screen\n-  - Added Notifications Drawer and Toast Notifications List\n-  - Added support for vSphere Distributed Switches\n-  - Added support to show child/parent relations of Orchestration Stacks\n-  - Added Middleware Messaging entities to topology chart\n-  - I18n support for UI plugins\n-  - Arbitration Profiles management for Service Broker\n-  - Re-check Authentication button added to Provider list views\n-  - Provisioning button added to the Templates & Images list and summary screens\n-  - Subtype option added to Generic Catalog Items\n-  - About modal added to OPS UI\n-  - Both UIs updated to latest PatternFly and Angular PatternFly\n-  - Self Service UI language selections separated from Operations UI\n-  - Internationalization\n-    - Virtual Columns\n-    - Toolbars\n-    - Removed string interpolation (for better localization)\n-    - Changed to use gettext’s pluralization\n-  - Ansible Tower Jobs moved to the Configuration tab (from Clouds/Stacks)\n-  - Interactivity added to C3 charts on C&U screens  \n-  - Settings moved to top right navigation header\n-  - C3 Charts fully implemented - chart interaction coming soon!\n-  - Tagging for Ansible Tower job templates\n-  - Live Search added to bootstrap selects\n-  - Self Service UI Order History with detail\n-  -  Add GUID validation for certain Azure fields in Cloud Provider screen\n-  - OpenStack: Register new Ironic nodes through Mistral\n-  - Timelines resdesigned\n-  - vSphere Distributed Switches tagging\n-  - Patternfly Labels for OpenSCAP Results\n-  - Operations UI Notifications\n+  - UI for creating subnets\n+- OpenStack\n+  - Collect inventory for cloud volume backups\n+  - Show topology for undercloud\n+  - Associate/Disassociate Floating IPs\n+  - Host Aggregates\n+  - Region Support\n+  - Cleanup of Nova services after scale down\n+  - Prevent retired instances from starting\n+  - Add hardware state for Hosts\n+  - Map Flavors to Cloud Tenants during Openstack Cloud refresh\n+  - Cinder backup/restore actions added to model\n+  - UI to register Ironic nodes through Mistral\n+- Red Hat Enterprise Virtualization\n+  - Get Host OS version and type\n+  - Disk Management in VM Reconfigure\n+  - Snapshot support\n+  - Report manufacturer and product info for RHEVM hosts\n+- Storage\n+  - New Swift Storage Manager\n+  - New Cinder Storage Manager\n+  - Initial User Interface support for Storage Managers\n+- VMware vSphere\n+  - Storage Profiles modeling and inventory\n+  - Datastores are filtered by Storage Profiles in provisioning\n+- vCloud\n+  - Collect status of vCloud Orchestration Stacks\n+  - Add Network Manager\n+  - Collect networking inventory\n+  - Cloud orchestration stack operation: Create and delete stack\n+  -Collect virtual datacenters as availability zones","path":"CHANGELOG.md","position":586,"original_position":586,"commit_id":"b318c1fb130009ed019eed39535c1c0ae0e5b664","original_commit_id":"b318c1fb130009ed019eed39535c1c0ae0e5b664","user":{"login":"mfeifer","id":3800078,"avatar_url":"https://avatars.githubusercontent.com/u/3800078?v=3","gravatar_id":"","url":"https://api.github.com/users/mfeifer","html_url":"https://github.com/mfeifer","followers_url":"https://api.github.com/users/mfeifer/followers","following_url":"https://api.github.com/users/mfeifer/following{/other_user}","gists_url":"https://api.github.com/users/mfeifer/gists{/gist_id}","starred_url":"https://api.github.com/users/mfeifer/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/mfeifer/subscriptions","organizations_url":"https://api.github.com/users/mfeifer/orgs","repos_url":"https://api.github.com/users/mfeifer/repos","events_url":"https://api.github.com/users/mfeifer/events{/privacy}","received_events_url":"https://api.github.com/users/mfeifer/received_events","type":"User","site_admin":false},"body":"👍 ","created_at":"2016-10-11T16:00:58Z","updated_at":"2016-10-11T16:00:58Z","html_url":"https://github.com/ManageIQ/manageiq/pull/11802#discussion_r82827520","pull_request_url":"https://api.github.com/repos/ManageIQ/manageiq/pulls/11802","_links":{"self":{"href":"https://api.github.com/repos/ManageIQ/manageiq/pulls/comments/82827520"},"html":{"href":"https://github.com/ManageIQ/manageiq/pull/11802#discussion_r82827520"},"pull_request":{"href":"https://api.github.com/repos/ManageIQ/manageiq/pulls/11802"}}},"pull_request":{"url":"https://api.github.com/repos/ManageIQ/manageiq/pulls/11802","id":88702135,"html_url":"https://github.com/ManageIQ/manageiq/pull/11802","diff_url":"https://github.com/ManageIQ/manageiq/pull/11802.diff","patch_url":"https://github.com/ManageIQ/manageiq/pull/11802.patch","issue_url":"https://api.github.com/repos/ManageIQ/manageiq/issues/11802","number":11802,"state":"open","locked":false,"title":"[EUWE] Reformat Changelog","user":{"login":"mfeifer","id":3800078,"avatar_url":"https://avatars.githubusercontent.com/u/3800078?v=3","gravatar_id":"","url":"https://api.github.com/users/mfeifer","html_url":"https://github.com/mfeifer","followers_url":"https://api.github.com/users/mfeifer/followers","following_url":"https://api.github.com/users/mfeifer/following{/other_user}","gists_url":"https://api.github.com/users/mfeifer/gists{/gist_id}","starred_url":"https://api.github.com/users/mfeifer/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/mfeifer/subscriptions","organizations_url":"https://api.github.com/users/mfeifer/orgs","repos_url":"https://api.github.com/users/mfeifer/repos","events_url":"https://api.github.com/users/mfeifer/events{/privacy}","received_events_url":"https://api.github.com/users/mfeifer/received_events","type":"User","site_admin":false},"body":"\r\nBrought all bullet points out one level for clarity.\r\nAdded headings for each section.\r\n\r\n[skip ci]","created_at":"2016-10-10T17:34:43Z","updated_at":"2016-10-11T16:00:58Z","closed_at":null,"merged_at":null,"merge_commit_sha":"9aed2a73f358efe7df028413c2273de2698058f9","assignee":{"login":"Fryguy","id":52120,"avatar_url":"https://avatars.githubusercontent.com/u/52120?v=3","gravatar_id":"","url":"https://api.github.com/users/Fryguy","html_url":"https://github.com/Fryguy","followers_url":"https://api.github.com/users/Fryguy/followers","following_url":"https://api.github.com/users/Fryguy/following{/other_user}","gists_url":"https://api.github.com/users/Fryguy/gists{/gist_id}","starred_url":"https://api.github.com/users/Fryguy/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/Fryguy/subscriptions","organizations_url":"https://api.github.com/users/Fryguy/orgs","repos_url":"https://api.github.com/users/Fryguy/repos","events_url":"https://api.github.com/users/Fryguy/events{/privacy}","received_events_url":"https://api.github.com/users/Fryguy/received_events","type":"User","site_admin":false},"assignees":[{"login":"Fryguy","id":52120,"avatar_url":"https://avatars.githubusercontent.com/u/52120?v=3","gravatar_id":"","url":"https://api.github.com/users/Fryguy","html_url":"https://github.com/Fryguy","followers_url":"https://api.github.com/users/Fryguy/followers","following_url":"https://api.github.com/users/Fryguy/following{/other_user}","gists_url":"https://api.github.com/users/Fryguy/gists{/gist_id}","starred_url":"https://api.github.com/users/Fryguy/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/Fryguy/subscriptions","organizations_url":"https://api.github.com/users/Fryguy/orgs","repos_url":"https://api.github.com/users/Fryguy/repos","events_url":"https://api.github.com/users/Fryguy/events{/privacy}","received_events_url":"https://api.github.com/users/Fryguy/received_events","type":"User","site_admin":false},{"login":"chessbyte","id":82161,"avatar_url":"https://avatars.githubusercontent.com/u/82161?v=3","gravatar_id":"","url":"https://api.github.com/users/chessbyte","html_url":"https://github.com/chessbyte","followers_url":"https://api.github.com/users/chessbyte/followers","following_url":"https://api.github.com/users/chessbyte/following{/other_user}","gists_url":"https://api.github.com/users/chessbyte/gists{/gist_id}","starred_url":"https://api.github.com/users/chessbyte/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/chessbyte/subscriptions","organizations_url":"https://api.github.com/users/chessbyte/orgs","repos_url":"https://api.github.com/users/chessbyte/repos","events_url":"https://api.github.com/users/chessbyte/events{/privacy}","received_events_url":"https://api.github.com/users/chessbyte/received_events","type":"User","site_admin":false}],"milestone":null,"commits_url":"https://api.github.com/repos/ManageIQ/manageiq/pulls/11802/commits","review_comments_url":"https://api.github.com/repos/ManageIQ/manageiq/pulls/11802/comments","review_comment_url":"https://api.github.com/repos/ManageIQ/manageiq/pulls/comments{/number}","comments_url":"https://api.github.com/repos/ManageIQ/manageiq/issues/11802/comments","statuses_url":"https://api.github.com/repos/ManageIQ/manageiq/statuses/b318c1fb130009ed019eed39535c1c0ae0e5b664","head":{"label":"mfeifer:euwe","ref":"euwe","sha":"b318c1fb130009ed019eed39535c1c0ae0e5b664","user":{"login":"mfeifer","id":3800078,"avatar_url":"https://avatars.githubusercontent.com/u/3800078?v=3","gravatar_id":"","url":"https://api.github.com/users/mfeifer","html_url":"https://github.com/mfeifer","followers_url":"https://api.github.com/users/mfeifer/followers","following_url":"https://api.github.com/users/mfeifer/following{/other_user}","gists_url":"https://api.github.com/users/mfeifer/gists{/gist_id}","starred_url":"https://api.github.com/users/mfeifer/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/mfeifer/subscriptions","organizations_url":"https://api.github.com/users/mfeifer/orgs","repos_url":"https://api.github.com/users/mfeifer/repos","events_url":"https://api.github.com/users/mfeifer/events{/privacy}","received_events_url":"https://api.github.com/users/mfeifer/received_events","type":"User","site_admin":false},"repo":{"id":45866608,"name":"manageiq","full_name":"mfeifer/manageiq","owner":{"login":"mfeifer","id":3800078,"avatar_url":"https://avatars.githubusercontent.com/u/3800078?v=3","gravatar_id":"","url":"https://api.github.com/users/mfeifer","html_url":"https://github.com/mfeifer","followers_url":"https://api.github.com/users/mfeifer/followers","following_url":"https://api.github.com/users/mfeifer/following{/other_user}","gists_url":"https://api.github.com/users/mfeifer/gists{/gist_id}","starred_url":"https://api.github.com/users/mfeifer/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/mfeifer/subscriptions","organizations_url":"https://api.github.com/users/mfeifer/orgs","repos_url":"https://api.github.com/users/mfeifer/repos","events_url":"https://api.github.com/users/mfeifer/events{/privacy}","received_events_url":"https://api.github.com/users/mfeifer/received_events","type":"User","site_admin":false},"private":false,"html_url":"https://github.com/mfeifer/manageiq","description":"ManageIQ Cloud Management Platform","fork":true,"url":"https://api.github.com/repos/mfeifer/manageiq","forks_url":"https://api.github.com/repos/mfeifer/manageiq/forks","keys_url":"https://api.github.com/repos/mfeifer/manageiq/keys{/key_id}","collaborators_url":"https://api.github.com/repos/mfeifer/manageiq/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/mfeifer/manageiq/teams","hooks_url":"https://api.github.com/repos/mfeifer/manageiq/hooks","issue_events_url":"https://api.github.com/repos/mfeifer/manageiq/issues/events{/number}","events_url":"https://api.github.com/repos/mfeifer/manageiq/events","assignees_url":"https://api.github.com/repos/mfeifer/manageiq/assignees{/user}","branches_url":"https://api.github.com/repos/mfeifer/manageiq/branches{/branch}","tags_url":"https://api.github.com/repos/mfeifer/manageiq/tags","blobs_url":"https://api.github.com/repos/mfeifer/manageiq/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/mfeifer/manageiq/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/mfeifer/manageiq/git/refs{/sha}","trees_url":"https://api.github.com/repos/mfeifer/manageiq/git/trees{/sha}","statuses_url":"https://api.github.com/repos/mfeifer/manageiq/statuses/{sha}","languages_url":"https://api.github.com/repos/mfeifer/manageiq/languages","stargazers_url":"https://api.github.com/repos/mfeifer/manageiq/stargazers","contributors_url":"https://api.github.com/repos/mfeifer/manageiq/contributors","subscribers_url":"https://api.github.com/repos/mfeifer/manageiq/subscribers","subscription_url":"https://api.github.com/repos/mfeifer/manageiq/subscription","commits_url":"https://api.github.com/repos/mfeifer/manageiq/commits{/sha}","git_commits_url":"https://api.github.com/repos/mfeifer/manageiq/git/commits{/sha}","comments_url":"https://api.github.com/repos/mfeifer/manageiq/comments{/number}","issue_comment_url":"https://api.github.com/repos/mfeifer/manageiq/issues/comments{/number}","contents_url":"https://api.github.com/repos/mfeifer/manageiq/contents/{+path}","compare_url":"https://api.github.com/repos/mfeifer/manageiq/compare/{base}...{head}","merges_url":"https://api.github.com/repos/mfeifer/manageiq/merges","archive_url":"https://api.github.com/repos/mfeifer/manageiq/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/mfeifer/manageiq/downloads","issues_url":"https://api.github.com/repos/mfeifer/manageiq/issues{/number}","pulls_url":"https://api.github.com/repos/mfeifer/manageiq/pulls{/number}","milestones_url":"https://api.github.com/repos/mfeifer/manageiq/milestones{/number}","notifications_url":"https://api.github.com/repos/mfeifer/manageiq/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/mfeifer/manageiq/labels{/name}","releases_url":"https://api.github.com/repos/mfeifer/manageiq/releases{/id}","deployments_url":"https://api.github.com/repos/mfeifer/manageiq/deployments","created_at":"2015-11-09T21:03:08Z","updated_at":"2016-01-27T17:27:04Z","pushed_at":"2016-10-10T18:14:00Z","git_url":"git://github.com/mfeifer/manageiq.git","ssh_url":"git@github.com:mfeifer/manageiq.git","clone_url":"https://github.com/mfeifer/manageiq.git","svn_url":"https://github.com/mfeifer/manageiq","homepage":"manageiq.org","size":165684,"stargazers_count":0,"watchers_count":0,"language":"Ruby","has_issues":false,"has_downloads":true,"has_wiki":false,"has_pages":false,"forks_count":0,"mirror_url":null,"open_issues_count":0,"forks":0,"open_issues":0,"watchers":0,"default_branch":"master"}},"base":{"label":"ManageIQ:euwe","ref":"euwe","sha":"5bf341ff8fa5bc79a9608a94d7f11ba2767cfd84","user":{"login":"ManageIQ","id":1125575,"avatar_url":"https://avatars.githubusercontent.com/u/1125575?v=3","gravatar_id":"","url":"https://api.github.com/users/ManageIQ","html_url":"https://github.com/ManageIQ","followers_url":"https://api.github.com/users/ManageIQ/followers","following_url":"https://api.github.com/users/ManageIQ/following{/other_user}","gists_url":"https://api.github.com/users/ManageIQ/gists{/gist_id}","starred_url":"https://api.github.com/users/ManageIQ/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/ManageIQ/subscriptions","organizations_url":"https://api.github.com/users/ManageIQ/orgs","repos_url":"https://api.github.com/users/ManageIQ/repos","events_url":"https://api.github.com/users/ManageIQ/events{/privacy}","received_events_url":"https://api.github.com/users/ManageIQ/received_events","type":"Organization","site_admin":false},"repo":{"id":20789757,"name":"manageiq","full_name":"ManageIQ/manageiq","owner":{"login":"ManageIQ","id":1125575,"avatar_url":"https://avatars.githubusercontent.com/u/1125575?v=3","gravatar_id":"","url":"https://api.github.com/users/ManageIQ","html_url":"https://github.com/ManageIQ","followers_url":"https://api.github.com/users/ManageIQ/followers","following_url":"https://api.github.com/users/ManageIQ/following{/other_user}","gists_url":"https://api.github.com/users/ManageIQ/gists{/gist_id}","starred_url":"https://api.github.com/users/ManageIQ/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/ManageIQ/subscriptions","organizations_url":"https://api.github.com/users/ManageIQ/orgs","repos_url":"https://api.github.com/users/ManageIQ/repos","events_url":"https://api.github.com/users/ManageIQ/events{/privacy}","received_events_url":"https://api.github.com/users/ManageIQ/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/ManageIQ/manageiq","description":"ManageIQ Open-Source Management Platform","fork":false,"url":"https://api.github.com/repos/ManageIQ/manageiq","forks_url":"https://api.github.com/repos/ManageIQ/manageiq/forks","keys_url":"https://api.github.com/repos/ManageIQ/manageiq/keys{/key_id}","collaborators_url":"https://api.github.com/repos/ManageIQ/manageiq/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/ManageIQ/manageiq/teams","hooks_url":"https://api.github.com/repos/ManageIQ/manageiq/hooks","issue_events_url":"https://api.github.com/repos/ManageIQ/manageiq/issues/events{/number}","events_url":"https://api.github.com/repos/ManageIQ/manageiq/events","assignees_url":"https://api.github.com/repos/ManageIQ/manageiq/assignees{/user}","branches_url":"https://api.github.com/repos/ManageIQ/manageiq/branches{/branch}","tags_url":"https://api.github.com/repos/ManageIQ/manageiq/tags","blobs_url":"https://api.github.com/repos/ManageIQ/manageiq/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/ManageIQ/manageiq/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/ManageIQ/manageiq/git/refs{/sha}","trees_url":"https://api.github.com/repos/ManageIQ/manageiq/git/trees{/sha}","statuses_url":"https://api.github.com/repos/ManageIQ/manageiq/statuses/{sha}","languages_url":"https://api.github.com/repos/ManageIQ/manageiq/languages","stargazers_url":"https://api.github.com/repos/ManageIQ/manageiq/stargazers","contributors_url":"https://api.github.com/repos/ManageIQ/manageiq/contributors","subscribers_url":"https://api.github.com/repos/ManageIQ/manageiq/subscribers","subscription_url":"https://api.github.com/repos/ManageIQ/manageiq/subscription","commits_url":"https://api.github.com/repos/ManageIQ/manageiq/commits{/sha}","git_commits_url":"https://api.github.com/repos/ManageIQ/manageiq/git/commits{/sha}","comments_url":"https://api.github.com/repos/ManageIQ/manageiq/comments{/number}","issue_comment_url":"https://api.github.com/repos/ManageIQ/manageiq/issues/comments{/number}","contents_url":"https://api.github.com/repos/ManageIQ/manageiq/contents/{+path}","compare_url":"https://api.github.com/repos/ManageIQ/manageiq/compare/{base}...{head}","merges_url":"https://api.github.com/repos/ManageIQ/manageiq/merges","archive_url":"https://api.github.com/repos/ManageIQ/manageiq/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/ManageIQ/manageiq/downloads","issues_url":"https://api.github.com/repos/ManageIQ/manageiq/issues{/number}","pulls_url":"https://api.github.com/repos/ManageIQ/manageiq/pulls{/number}","milestones_url":"https://api.github.com/repos/ManageIQ/manageiq/milestones{/number}","notifications_url":"https://api.github.com/repos/ManageIQ/manageiq/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/ManageIQ/manageiq/labels{/name}","releases_url":"https://api.github.com/repos/ManageIQ/manageiq/releases{/id}","deployments_url":"https://api.github.com/repos/ManageIQ/manageiq/deployments","created_at":"2014-06-13T02:31:26Z","updated_at":"2016-10-07T20:22:27Z","pushed_at":"2016-10-11T15:17:37Z","git_url":"git://github.com/ManageIQ/manageiq.git","ssh_url":"git@github.com:ManageIQ/manageiq.git","clone_url":"https://github.com/ManageIQ/manageiq.git","svn_url":"https://github.com/ManageIQ/manageiq","homepage":"manageiq.org","size":210390,"stargazers_count":335,"watchers_count":335,"language":"Ruby","has_issues":true,"has_downloads":true,"has_wiki":false,"has_pages":false,"forks_count":363,"mirror_url":null,"open_issues_count":836,"forks":363,"open_issues":836,"watchers":335,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/ManageIQ/manageiq/pulls/11802"},"html":{"href":"https://github.com/ManageIQ/manageiq/pull/11802"},"issue":{"href":"https://api.github.com/repos/ManageIQ/manageiq/issues/11802"},"comments":{"href":"https://api.github.com/repos/ManageIQ/manageiq/issues/11802/comments"},"review_comments":{"href":"https://api.github.com/repos/ManageIQ/manageiq/pulls/11802/comments"},"review_comment":{"href":"https://api.github.com/repos/ManageIQ/manageiq/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/ManageIQ/manageiq/pulls/11802/commits"},"statuses":{"href":"https://api.github.com/repos/ManageIQ/manageiq/statuses/b318c1fb130009ed019eed39535c1c0ae0e5b664"}}}}
{"actor":{"display_login":"mfeifer"}}