ManageIQ
Sprint 17 Report - Sprint End January 5, 2015
January 7, 2015
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)
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”
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
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" },
...
]
}
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”
}
}
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” },
...
]
}
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
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
Change Server Locale
Change User Locale
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
Provider Integrations
● Current Sprint
○ Several bug fixes for this sprint
● Future Work
○ OpenStack Infrastructure Support
○ Kubernetes / Containers
○ Update on Pluggable Providers
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
Dynamic Radio Button Support
● Enhance Radio Buttons to support retrieving
Options/Entries from automate
Dynamic Radio Button Support
Dynamic Radio Button Support
Openstack Provision
● Support booting instance from volume
through clone_options parameter
○ Fog PR #3323 - Fix block device mappings
○ Required changes to Fog gem included in v1.26.0
○ Example Automate script:
prov = $evm.root["miq_provision"]
prov.set_option(:clone_options,
{ :image_ref => nil,
:block_device_mapping_v2 => [{
:boot_index => 0,
:uuid => "133ebbe8-817f-11e4-824a-56847afe9799",
:device_name => "vda",
:source_type => "snapshot",
:destination_type => "volume",
:delete_on_termination => true,
},]
}
)
Foreman Integration
● PR #947 - Modeling
● In progress - Data collection and Refresh
Event Switchboard
● Event routing in automate
● Refactoring ActiveRecord models
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
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
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)
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
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)
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
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
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
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.
Questions?
Sprint Report Schedule:
● 1/7/15
● 1/28/15
● 2/18/15
● 3/11/15
● 4/1/15
● 4/22/15

Sprint 17

  • 1.
    ManageIQ Sprint 17 Report- Sprint End January 5, 2015 January 7, 2015
  • 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 EndedJanuary 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, PluggableUI 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
  • 10.
  • 11.
  • 12.
    Angular Repository Editor Thefirst 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 ● CurrentSprint ○ Several bug fixes for this sprint ● Future Work ○ OpenStack Infrastructure Support ○ Kubernetes / Containers ○ Update on Pluggable Providers
  • 14.
    AWS CloudFormation ● MergedPR #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 ButtonSupport ● Enhance Radio Buttons to support retrieving Options/Entries from automate
  • 16.
  • 17.
  • 18.
    Openstack Provision ● Supportbooting instance from volume through clone_options parameter ○ Fog PR #3323 - Fix block device mappings ○ Required changes to Fog gem included in v1.26.0 ○ Example Automate script: prov = $evm.root["miq_provision"] prov.set_option(:clone_options, { :image_ref => nil, :block_device_mapping_v2 => [{ :boot_index => 0, :uuid => "133ebbe8-817f-11e4-824a-56847afe9799", :device_name => "vda", :source_type => "snapshot", :destination_type => "volume", :delete_on_termination => true, },] } )
  • 19.
    Foreman Integration ● PR#947 - Modeling ● In progress - Data collection and Refresh
  • 20.
    Event Switchboard ● Eventrouting in automate ● Refactoring ActiveRecord models
  • 21.
    Testing Update ● Docker-izedTravis ○ 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 forIPv6 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 forIPv6 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 forIPv6 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 IPv6features ● 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 ProgressSummary ● 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 FleecingProgress ● 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.
  • 30.
    Questions? Sprint Report Schedule: ●1/7/15 ● 1/28/15 ● 2/18/15 ● 3/11/15 ● 4/1/15 ● 4/22/15