2. Overview
● Sprint Statistics
● Rest API VM Management Actions (A. Bellotti)
● jQuery Conversion, Pluggable UI work (D. Clarizio)
● UI for Locale Changes, Angular Repository Editor (D.
Clarizio)
● Provider Integrations (G. Blomquist)
● AWS CloudFormation (B. Wei)
● Dynamic Radio Button Support (G. McCullough)
● Improved Testing, Provider Architecture (J. Frey)
● IP V6 Scorecard (J. Rafaniello)
● Rails 4 Upgrades (A. Patterson)
● OpenStack Instance Fleecing (R. Oliveri)
3. Sprint 17 Ended January 5
● https://github.com/ManageIQ/manageiq/issues?q=milest
one%3A%22Sprint+17+Ending+Jan+5%2C+2015%22
● 97 Pull Requests Merged
○ 38 issues labeled as “bug”
○ 23 issues labeled as “enhancement”
○ 23 issues labeled as “technical debt”
○ 9 issues labeled as “refactoring”
○ 6 issues labeled as “test”
4. Rest API - VM Management Actions
❖ Closing Gap with SOAP VM management APIs
❖ 9 PRs currently in review
PR Summary SOAP API REST API /api/vms & /api/vms/#
1168 Start a VM EVMSmartStart action start
1176 Stop a VM EVMSmartStop action stop
1180 Suspend a VM EVMSmartSuspend action suspend
1190 Delete a VM EVMDeleteVmbyName action delete & HTTP DELETE verb
1197 Set Owner of a VM VMSetOwner action set_owner
1239 Manage Custom Attributes of a VM VmAddCustomAttribute(s)ByFields
VmDeleteCustomAttribute(s)
/api/vms/#/custom_attributes
actions add, edit, delete
1255 RSOP EVMVmRsop action rsop
1260 Add Event to VM EVMVmEventByProperty action add_event
1262 Add a VM Scan action EVMVmScanByProperty action scan
5. Rest API - VM Management Actions
Examples for VM actions like: start, stop, suspend, delete
❖ Targeting single VM:
POST /api/vms/#
{
“action” : “start”
}
❖ Targeting multiple VMs:
POST /api/vms
{
"action" : "start",
"resources" : [
{ "href" : "https://miq_appliance/api/vms/#1" },
{ "href" : "https://miq_appliance/api/vms/#2" },
...
]
}
6. Rest API - VM Management Actions
❖ As in earlier examples, these actions also support targeting multiple VMs via /api/vms and “resources”
VM action: set_owner
POST /api/vms/#
{
“action” : “set_owner”
“resource” : {
“owner” : “admin”
}
}
VM action: add_event
POST /api/vms
{
“action” : “add_event”
“resource” : {
“property” : “ipaddress”,
“value” : “192.168.200.11”,
“event_type” : … , “event_message” : …
}
}
VM action: delete
DELETE /api/vms/#
POST /api/vms/#
{
“action” : “delete”
}
VM action: rsop
POST /api/vms/#
{
“action” : “rsop”
“resource” : {
“policy” : “test policy”
}
}
VM action: scan
POST /api/vms
{
“action” : “scan”
“resource” : {
“property” : “ipaddress”,
“value” : “192.168.200.12”
}
}
7. Rest API - VM Management Actions
❖ Custom Attributes supported as a VM subcollection, i.e. /api/vms/#/custom_attributes
Querying:
GET /api/vms/#/custom_attributes
GET /api/vms/#/custom_attributes?expand=resources
GET /api/vms/#/custom_attributes/#
GET /api/vms/#?expand=custom_attributes
Adding: supports name, value, source and section
POST /api/vms/#/custom_attributes
{
“action” : “add”
“resources” : [
{ “name” : “name1”, “value” : “value1” },
{ “name” : “name2”, “value” : “value2” },
...
]
}
Updating:
POST /api/vms/#/custom_attributes
{
“action” : “edit”,
“resources” : [
{ “name” : “name1”, “value” : “v1” },
{ “href” : “https://miq/api/vms/#/custom_attributes/#2” , “value” : “v2” },
...
]
}
Deleting:
POST /api/vms/#/custom_attributes
{
“action” : “delete”,
“resources” : [
{ “name” : “name1” },
{ “href” : “https://miq/api/vms/#/custom_attributes/#2” },
...
]
}
8. jQuery Conversion, Pluggable UI
Prototype to jQuery Conversion
● Progress made, hope to finish in the next sprint
● Blocking full implementation of Patternfly
Pluggable UI
● Just getting started, working on prerequisites:
refactoring navigation top right menus, RBAC, etc.
● Will allow UI plugins to be dynamically added to the
Web UI
9. Change Locale (language) in the UI
Can now set the locale: server default and user specific.
● Shows all locales that are present in the
vmdb/config/locales folder
● Existing sample .po files are ready to have translations
added, new locales can be added
● More code and gettext calls still need to be added
● All strings are not yet completed: most flash messages
and any views converted to HAML are done
12. Angular Repository Editor
The first conversion of an editor to use AngularJS.
● Before/after edit variables are no longer stored in the
server’s session object
● All changes are made local in the browser
● Field validation using Angular directives
● Real time validation/error messages
Still to come:
● Field messages to be displayed directly below the fields
Demo
13. Provider Integrations
● Current Sprint
○ Several bug fixes for this sprint
● Future Work
○ OpenStack Infrastructure Support
○ Kubernetes / Containers
○ Update on Pluggable Providers
14. AWS CloudFormation
● Merged PR #919 - Refresh AWS Cloudformation
● UI design is in progress
● Template parameter parsing and dialog generation
○ Merged PR #1212 - Parse parameters from
orchestration template
○ PR #1228 - Orchestration provision dialog
● Created a new service type for orchestration
provisioning (PR pending)
● Video demo
15. Dynamic Radio Button Support
● Enhance Radio Buttons to support retrieving
Options/Entries from automate
21. Testing Update
● Docker-ized Travis
○ Faster startup
● bundle caching
○ Available to Docker-ized Travis runs
○ Caches the bundled gems, so on follow-up runs, it
just downloads the cache and updates
○ rubygems.org is unreliable, S3 isn’t
○ “bundle install” times down to ~1 min from ~5 min
● Total time savings
○ vmdb test suite down to ~13 min from ~26 min
22. Provider Architecture
● https://github.com/ManageIQ/manageiq/issues/1272
● Introduce new layer above ExtManagementSystem
called “Provider” and term the EMS layer “Manager”
● Summary: A “Provider” has many “Manager”s
● Allows for creating completely new provider types and
for expansion of existing providers
○ Foreman
○ OpenStack infrastructure
○ Containers
23. IPV6 Progress
Support for IPv6 literals:
● Libraries may build URIs via:
○ “http://#{host}:#{port}...”
● Problem:
○ Need to wrap IPv6 literals: “[::1]”
■ For URIs: “http://[::1]:80/blah”
■ For http Host header: “[::1]”
○ Need to unwrap literals: “::1” for sockets:
■ TCPSocket.new("::1", 80)
24. IPV6 Progress
Support for IPv6 literals:
● VMware / handsoap / httpclient
○ Complete - ManageIQ PR #1080
● Ovirt / rest-client / net-http
○ Awaiting ruby 2.0 release with merged ruby
bug #10530 (backport #9129)
○ Awaiting rest-client release with merged PRs
332 and 333
25. IPV6 Progress
Support for IPv6 literals:
● Openstack / Fog / excon
○ Merged: Fog PR 3351 - drop ruby < 1.9.3
○ In progress: Excon PR 449, URI building to
handle IPv6 literals in Fog/Excon
● Amazon / aws-sdk
○ Not started
● Microsoft / winrm / httpclient
○ Not started (httpclient works with vmware)
26. IPV6 Progress
Future IPv6 features
● Modeling (insight)
○ Currently support adding both IPv4 and
hostname but it’s not clear to the user what is
used
○ TODO: Allow user input of one of IPv4/IPv6
literal or hostname and change ManageIQ
code to use it
● Discovery
○ IPv6 literal start address and range
27. IPV6 Progress
IPv6 Progress Summary
● Communication - 1 done, 1 nearly done, 1
started, 2 not started
● Modeling - not started
● Discovery - not started
● Provisioning - not started
● Running centos appliance with ipv6 - not
started
● https://trello.com/c/0l9v4UVW/4-13-appliance-ipv6
28. Rails 4 Upgrades
● Updated our preloader patches against Rails
● Updated virtual column / reflection code to
integrate with Rails
● Started moving ActiveRecord 2.3 hash
based finders to Relation based finders
● Backports and refactorings on master for
Rails 4 support
29. Storage and Fleecing Progress
● OpenStack Instance Fleecing (WIP)
○ Glance API not ready, proceeding without it.
○ Sidetracked by other issues.
● SCVMM Fleecing: on hold
● Fleecing Tests next steps (WIP)
○ Define image repository
○ extend fleecing tests - isolation tests of each layer.