9. Community Update
(Carol Chen)
● Last Week in ManageIQ
○ http://manageiq.org/blog/2017/03/yet-another-move-by-euwe/ by Libor Pichler
○ http://manageiq.org/blog/2017/03/pontificatory-requestiveous/ by Drew Bomhof
● Upcoming Events
○ KubeCon/CloudNativeCon EU, Mar 29-30 in Berlin https://kubecon.io
○ Barcamp, April 4 in Warsaw https://osec.pl/barcamp/barcamp-kwiecien-2017
○ Open House, April 5 in Brno https://openhousecz.redhat.com/
○ ManageIQ Meetup, April 12 in Amsterdam
https://www.meetup.com/ManageIQ-CloudForms-User-group-Netherlands/events/238409424/
○ FOSS-North, April 26 in Gothenburg http://foss-north.se/
● Event recaps
○ PyCon Pune http://manageiq.org/blog/2017/03/pycon-pune-2017/
○ FOSSASIA https://www.youtube.com/watch?v=cnugrzCS7zk
10. Classic UI
(Harpreet Kataria)
● PRs merged (113)
○ Bugs (60)
○ Enhancements (30)
○ Tech Debt / Refactoring (17)
○ Backported to EUWE (13)
● Bug Fixes
○ API Error handling in JS fixed
○ Fixed bug on non-explorer compare screens caused by show partial
refactoring
○ Fixed/Added RBAC check on selected records before performing task.
○ Added missing Container Volume tagging
11. Classic UI
● Technical Debt/Refactoring
○ More tests added for middleware controllers
○ Deleted dead code from compare module and non-angular Provider forms
○ Filter substitution mixin moved from core to UI repo
○ Configuration & MiqAeCustomization controllers changed to use GenericSessionMixin
○ Cleanup of tree_Select method in vm_common
○ Cleanup of C&U performance chart related methods
● Enhancements
○ Added Retired Service node in Services explorer
○ Ansible Repositories CRUD (Demo by Zita Nemeckova)
○ Ansible Credentials CRUD (Demo by Milan Zazrivec)
○ Copy from Provisioning button on Ansible Catalog Items form
○ Ansible Service summary screen updates
○ SSL support added for Hawkular Providers
○ Clear Object Storage Containers support added for Cloud Object Store Containers
○ Support to only allow operations on mutable middleware servers was added.
○ Filter options added on Container Provider ad-hoc metrics screen
○ Dynamic support for provisioning of new cloud volumes(OpenStack Cinder and Amazon EBS)
12. Classic UI - PRs by Area of UI
(Harpreet Kataria)
24. Service UI
(Chris Kacerguis)
“Behind the Scenes” Features
- RBAC added to all tabs (except for Service details)
- Temporarily removed “Templates” / “Dialog Editor” tabs
- Added ability to restore snapshots to VM’s
- Framework for Reports viewer.
- Ability to view reports next sprint!
26. Service UI
(Chris Kacerguis)
- Bug Fixes (10)
- Unable to delete a new tab in dialog
- Empty page during Breadcrumb navigation on Dialogs page
- Hover text is hiding Download button on Template Summary page
- Hand pointer without clickable link on power state icon on Service page
- Catalog Edit :Either of Cancel and "Do not Save" should be there
- Service dialog dynamic code does not work
- Fix obscene expanded row view
- Tags not sorted while tagging services
- Hand pointer without clickable link on SSUI Template page
- Disabled vm resource actions shouldn't be executed
29. Hawkular provider
● Hawkular provider/endpoint connection enhancements:
○ Added SSL support when connecting to hawkular endpoint
○ Default security protocol is non ssl
○ Security protocol field moved to be before port, to autofill the
default port automatically (for all the providers)
● Allow operations only on mutable servers (for example, not in a
container)
● Added more tests
● Fixed navigation issues in entities pages
● Use hawkular_metric_id from the inventory instead of building a
metric id. (because Metric id format is configurable)
30. Amazon and Ansible
Map AWS tags to MIQ tags during refresh
Dynamic Cloud Volume modifications
Mostly “Fine” fixes
Much more in UI and Automate/Control
34. Automate
(Greg McCullough)
Services
● Change default behavior of Service Retirement to retain
Service instance (Instead of delete)
(PR manageiq-content #76)
○ Aligns with UI changes to display retired service in separate node
○ Aligns with other resources, like VMs
○ Easily modified (reverted) by overriding the Automate retirement
state-machine class or instance
36. Automate
(Greg McCullough)
Provisioning
● Cloud-Init customization template
○ New example template that sets host name, root
password and IP address in oVirt.
Fix
● Policy: Corrected request_vm_scan event logic to abort
on Action "Prevent current event from proceeding"
37. Automate
(Greg McCullough)
Ansible Integration
● Automate modeling for Ansible Events
○ / ManageIQ / System / Event / EmsEvent / EmbeddedAnsible
● Generic Service State Machine - new retirement instances
● Associate job_plays to job
● Ansible Job retirement support
● Accept format parameter to get stdout (txt, json, html)
● Remove Playbook metadata during Catalog Item deletion
● Send ‘manageiq' extra_var on Playbook launch
○ Pass service action: Provision, Retirement
○ Pass event_target and event_name from Control
38. Automate
(Madhu Kanoor)
Reference objects in VMDB using partial hrefs (slugs).
Combines class name and id into a single value. e.g.
providers/10
- Extra vars for ansible can contain partial hrefs
- Dynamic Dialogs can use slugs as identifiers instead of
ids
- Service Model method
- href_slug
Example: vm.href_slug # => "vms/3539"
39. Automate
(Madhu Kanoor)
Extra vars being passed into ansible playbook
Name Example Description
manageiq.api_url https://172.16.207.160 The URL used to access our REST Server
from a playbook
manageiq.api_token d64b517842d54c6bd781c2ec8d
9c9b1a
Ephemeral authentication token used to
access the REST Server in lieu of userid
and password
manageiq.service services/1000000000001 The ManageIQ service that launched the
ansible job template
manageiq.user users/1000000000001 The user that is running this job template
manageiq.action Provision The current service action
Provision|Reconfigure|Retirement
manageiq.event_target instances/1000000000029 The vm,host, cluster that generated the
event (optionally during Control)
manageiq.event_name assigned_company_tag The ManageIQ Policy event name
(optionally during Control)
42. Platform
● Enhancements - General
○ Log any exceptions when trying to validate apache
configurations
● Enhancements - Embedded Ansible
○ Raise a notification when the embedded ansible server
starts (screenshot)
○ Create initial tower objects on first start of the worker
○ Add a concern for storing and accessing embedded
ansible object ids
○ Add embedded_ansible to roles that require apache
○ Use the new setup script argument types
47. Platform
● Bug Fixes
○ Remove MiqQueue rows containing a class removed in Rails 5
○ If we can't update_attributes on a queue row, set state to error
○ Add balancer members after configs have been written
○ Support dots and slashes in virtual custom attributes
○ Exclude chargeback lookup tables
○ MiqApache::Conf.create_balancer_config expects a :lbmethod key
○ Add NE to the ansible api rewrite rule
○ Support systems without network
○ Fixed bug in vm_scan introduced by removing agent_class
48. ● Technical Debt/Refactoring/Tests
○ Added test coverage for JobProxyDispatcher#do_dispatch
○ Link jobs and miq_server tables (make job belongs_to miq_server)
○ Drop 'jobs.agent_class’ column
○ Drop 'jobs.agent_state' column
○ Do not use Job.agent_class attribute
○ Refactor/DRY logging for job
○ Do not use Job.agent_state attribute
○ Remove caching of apache config files
○ Drop FilterSubstMixin, it was moved to ui-classic
○ Specs: check that counts match for headers and col_order for charts
○ Remove uncalled miq_server lets
Platform
49. API
(Alberto Bellotti)
● Added CRUD support for authentications (Jillian T.)
POST /api/authentications
{
“name” : “A Credential”,
“description” : “Credential Description”,
“manager_resource” : { “href” : “http://localhost:3000/api/providers/5” },
“type” : “ManageIQ::Providers::AnsibleTower::AutomationManager::Credential”,
“related” : {}
}
● Also create as subcollection resource of a provider:
manager_resource is not needed in this payload
POST /api/providers/:id/authentications
50. API
POST /api/authentications/:id - action “edit”
PUT /api/authentications/:id
PATCH /api/authentications/:id
POST /api/authentications - bulk action “edit”
DELETE /api/authentications/:id
POST /api/authentications/:id - action “delete”
POST /api/authentications - bulk action “delete”
● Enhanced OPTIONS /api/authentications (Jillian T.)
○ Return different credential types and related attributes to assist the UI
51. API
● Added CRUD support for configuration script sources (Jillian T.)
POST /api/configuration_script_sources
{
“name” : “Test Project”,
“description” : “Test Description”,
“manager_resource” : { “href” : “http://localhost:3000/api/providers/5” },
“related” : {}
}
POST /api/configuration_script_sources/:id - action “edit”
PUT /api/configuration_script_sources/:id
PATCH /api/configuration_script_sources/:id
POST /api/configuration_script_sources - bulk action “edit”
DELETE /api/configuration_script_sources/:id
POST /api/configuration_script_sources/:id - action “delete”
POST /api/configuration_script_sources - bulk action “delete”
53. API
● Enhanced services to support add_resource action (Jillian T.)
○ Currently supports adding VMs to services. Other types can be added in the
future using the same API signature.
POST /api/services/:id
{
“action” : “add_resource”,
“resource” : {
{ “resource” : { “href” : “http://localhost:3000/api/vms/11” } }
}
}
POST /api/services
{
"action" : "add_resource",
"resources" : [
{ "href" : "http://localhost:3000/api/services/3", "resource" : { "href" : … } },
{ "href" : "http://localhost:3000/api/services/3", "resource" : { "href" : … } },
{ "href" : "http://localhost:3000/api/services/4", "resource" : { "href" : … } },
{ "href" : "http://localhost:3000/api/services/5", "resource" : { "href" : … } },
…
]
}
54. API
● Exposed Cloud Volumes as a primary collection (Aparna K.)
New collection /api/cloud_volumes
GET /api/cloud_volumes
GET /api/cloud_volumes/:id
POST /api/cloud_volumes - Bulk “query” action
{
“action” : “query”,
“resources” : [
{ “href” : “http://localhost:3000/api/cloud_volumes/101” },
{ “href” : “http://localhost:3000/api/cloud_volumes/102” },
{ “id” : 103 },
...
]
}
55. API
● Exposed Orchestration stacks as subcollection of services (Jillian T.)
GET /api/services/:id/orchestration_stacks
GET /api/services/:id?expand=orchestration_stacks
GET /api/services?expand=resources,orchestration_stacks
56. API
● href_slug now accessible for all resources
○ Unique identifier for a resource
○ Accessible as a virtual attribute
GET /api/vms/166?attributes=href_slug,name,vendor
{
“href” : “http://localhost:3000/api/vms/166”,
“id” : 166,
“href_slug” : “vms/166”,
“name” : “test-vm”,
“vendor” : “redhat”,
}
57. API
● Support accessing stdout attribute of orchestration stacks
GET /api/services/:id/orchestration_stacks/:os_id?attributes=stdout
GET /api/services/:id/orchestration_stacks
?expand=resources&attributes=stdout
● Support optional attribute format parameter, honored for the stdout attribute
GET /api/services/:id/orchestration_stacks
?expand=resources&attributes=stdout
&format_attributes=stdout=txt
58. API
● Enhanced provider refresh actions now return a task
POST /api/providers/2
{
“action” : “refresh”
}
{
“success” : “true”,
“message” : “Provider id:2 name:’rhev2’ refreshing”,
“task_id” : 55,
“task_href” : “http://localhost:3000/api/tasks/55”,
“href” : “http://localhost:3000/api/providers/2”
}
Caveat: for providers with multiple managers, only the task for the first manager’s
refresh is returned. RFE Issue #14404
59. Quality Engineering
Ansible Testing Progress:
● 80% implemented
○ Confirming 20% de-scoped
● Status on implemented:
○ 83% confirmed working
○ 8% testing in progress
○ 9% not working properly
● Overall, things are in much better shape now
○ Incoming issue rate trending down somewhat
61. Quality Engineering
In the last 2 weeks:
● We have modified our test parallelizer to be less prone to
getting stuck and use less CPU
● A couple of Widgetastic (object modeling library)
conversions
● Lots of test fixes for changes in the application