<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
		<id>https://wiki.openstack.org/w/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Vipuls</id>
		<title>OpenStack - User contributions [en]</title>
		<link rel="self" type="application/atom+xml" href="https://wiki.openstack.org/w/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Vipuls"/>
		<link rel="alternate" type="text/html" href="https://wiki.openstack.org/wiki/Special:Contributions/Vipuls"/>
		<updated>2026-06-27T14:00:17Z</updated>
		<subtitle>User contributions</subtitle>
		<generator>MediaWiki 1.28.2</generator>

	<entry>
		<id>https://wiki.openstack.org/w/index.php?title=Design_Summit/Mitaka/Etherpads&amp;diff=94425</id>
		<title>Design Summit/Mitaka/Etherpads</title>
		<link rel="alternate" type="text/html" href="https://wiki.openstack.org/w/index.php?title=Design_Summit/Mitaka/Etherpads&amp;diff=94425"/>
				<updated>2015-10-26T22:54:16Z</updated>
		
		<summary type="html">&lt;p&gt;Vipuls: /* Designate */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Summit]]&lt;br /&gt;
[[Category:Liberty]]&lt;br /&gt;
[[Category:Etherpad]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;column-count:3;-moz-column-count:3;-webkit-column-count:3&amp;quot;&amp;gt;&lt;br /&gt;
__TOC__&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
== Event intro/closure ==&lt;br /&gt;
* Tue 11:15: Design Summit 101 [https://etherpad.openstack.org/p/mitaka-design-summit-101]&lt;br /&gt;
* Fri 12:30: Design Summit feedback [https://etherpad.openstack.org/p/mitaka-design-summit-feedback]&lt;br /&gt;
&lt;br /&gt;
==App Catalog==&lt;br /&gt;
* Wed 14:00: [https://etherpad.openstack.org/p/TYO-ops-delivering-apps Ops: Delivering Apps To Your Users]&lt;br /&gt;
* Thur 14:40: [https://etherpad.openstack.org/p/TYO-app-catalog App Catalog Working Session]&lt;br /&gt;
&lt;br /&gt;
== Barbican ==&lt;br /&gt;
*Fishbowls&lt;br /&gt;
**Fishbowl 1: Wednesday, 12:05pm - Barbican Roadmap and Cross-Project Integration Status&lt;br /&gt;
**Fishbowl 2: Wednesday, 2:00pm - Barbican Key Federation&lt;br /&gt;
*Working Sessions&lt;br /&gt;
**Working Session 1: Wednesday, 4:40pm&lt;br /&gt;
**Working Session 2:  Wednesday, 5:30pm&lt;br /&gt;
**Working Session 3: Thursday, 9:00am &lt;br /&gt;
**Working Session 4: Thursday, 9:50am &lt;br /&gt;
**Working Session 5:Thursday,  11:00am&lt;br /&gt;
**Working Session 6:Thursday,  5:20pm&lt;br /&gt;
*Meetup&lt;br /&gt;
**Contributors Meetup: Friday, 2:00pm&lt;br /&gt;
*Etherpad&lt;br /&gt;
**https://etherpad.openstack.org/p/barbican-m-design-sessions&lt;br /&gt;
&lt;br /&gt;
== Cinder ==&lt;br /&gt;
* Wed 14.00: Will the real Block Storage Service please stand up [https://etherpad.openstack.org/p/mitaka-cinder-direction]&lt;br /&gt;
* Wed 14.50: Availability zones in Cinder [https://etherpad.openstack.org/p/mitaka-cinder-az]&lt;br /&gt;
* Thur 9.00: Experimental APIs and Microversions [https://etherpad.openstack.org/p/mitaka-cinder-experimental-apis]&lt;br /&gt;
* Thur 9.50: Cinder Nova Interaction [https://etherpad.openstack.org/p/mitaka-cinder-nova-interaction]&lt;br /&gt;
* Thur 13.50: Cinder driver interface [https://etherpad.openstack.org/p/mitaka-cinder-driver-interface]&lt;br /&gt;
* Thur 14.40: API Microversions [https://etherpad.openstack.org/p/mitaka-cinder-api-microversions]&lt;br /&gt;
* Thur 15.30: ABC work [https://etherpad.openstack.org/p/mitaka-cinder-abc-work]&lt;br /&gt;
* Thur 15.30: Driver deadlines [https://etherpad.openstack.org/p/mitaka-cinder-driver-deadlines]&lt;br /&gt;
* Thur 16.30: C-Vol Active/Active HA [https://etherpad.openstack.org/p/mitaka-cinder-cvol-aa]&lt;br /&gt;
* Thur 17.20: Volume manager locks [https://etherpad.openstack.org/p/mitaka-cinder-volmgr-locks]&lt;br /&gt;
* Fri: Contributor Meetup [https://etherpad.openstack.org/p/mitaka-cinder-contributor-meetup]&lt;br /&gt;
&lt;br /&gt;
== CloudKitty ==&lt;br /&gt;
* Wed 16.40: Gnocchi support [https://etherpad.openstack.org/p/mitaka-cloudkitty-gnocchi]&lt;br /&gt;
* Thur 14.40: CloudKitty introduction and future perspectives [https://etherpad.openstack.org/p/mitaka-cloudkitty-session]&lt;br /&gt;
&lt;br /&gt;
== Congress ==&lt;br /&gt;
* Wed 2:00: [https://etherpad.openstack.org/p/congress-mitaka-arch Distributed architecture and additional features for Mitaka]&lt;br /&gt;
* Wed 2:50: [https://etherpad.openstack.org/p/congress-mitaka-integrations Integration with other projects: congress gating (murano, nova, neutron, etc.), keystone]&lt;br /&gt;
* Wed 3:40: [https://etherpad.openstack.org/p/congress-mitaka-external Discussions with external teams: OPNFV, Monasca]&lt;br /&gt;
&lt;br /&gt;
== Cross-Project workshops ==&lt;br /&gt;
&lt;br /&gt;
All sessions are on Tuesday 2015-10-27&lt;br /&gt;
&lt;br /&gt;
* 11:15&lt;br /&gt;
** Service Catalog TNG (double session) [https://etherpad.openstack.org/p/mitaka-service-catalog-session]&lt;br /&gt;
** Cycle themes [https://etherpad.openstack.org/p/mitaka-crossproject-themes]&lt;br /&gt;
* 12:05&lt;br /&gt;
** Supporting DefCore and Interoperability Testing [https://etherpad.openstack.org/p/mitaka-crossproject-defcore]&lt;br /&gt;
** Tags today and tomorrow [https://etherpad.openstack.org/p/mitaka-crossproject-next-tags]&lt;br /&gt;
* 14:00&lt;br /&gt;
** Standard Deprecation Policy [https://etherpad.openstack.org/p/mitaka-deprecation-policy]&lt;br /&gt;
* 14:50&lt;br /&gt;
** Role Assignments for Service users [https://etherpad.openstack.org/p/mitaka-cross-project-role-assignment-service-user]&lt;br /&gt;
* 15:40&lt;br /&gt;
** Documenting the OpenStack way [https://etherpad.openstack.org/p/mitaka-crossproject-doc-the-way]&lt;br /&gt;
* 16:40&lt;br /&gt;
** Troubleshooting cross-project comms [https://etherpad.openstack.org/p/mitaka-crossproject-comms]&lt;br /&gt;
* 17:30&lt;br /&gt;
** Serving extreme use cases [https://etherpad.openstack.org/p/mitaka-crossproject-extreme-usecases]&lt;br /&gt;
&lt;br /&gt;
== Ceilometer ==&lt;br /&gt;
* Wednesday, 2015-10-28&lt;br /&gt;
** 11:15 - [https://etherpad.openstack.org/p/mitaka-telemetry-alarms alams]&lt;br /&gt;
** 12:05 - [https://etherpad.openstack.org/p/mitaka-telemetry-ui visualising data]&lt;br /&gt;
** 14:50 - [https://etherpad.openstack.org/p/mitaka-telemetry-upgrades rolling upgrades]&lt;br /&gt;
** 15:40 - [https://etherpad.openstack.org/p/mitaka-telemetry-split componentisation]&lt;br /&gt;
&lt;br /&gt;
* Thursday, 2015-10-29&lt;br /&gt;
** 09:00 - [https://etherpad.openstack.org/p/mitaka-telemetry-testing functional and integration testing]&lt;br /&gt;
** 09ː50 - [https://etherpad.openstack.org/p/mitaka-telemetry-bi business intelligence]&lt;br /&gt;
** 11ː00 - [https://etherpad.openstack.org/p/mitaka-telemetry-polling refined polling]&lt;br /&gt;
** 11ː50 - [https://etherpad.openstack.org/p/mitaka-telemetry-cross-project project data ownership]&lt;br /&gt;
** 13ː50 - [https://etherpad.openstack.org/p/mitaka-telemetry-alarms event alarms]&lt;br /&gt;
&lt;br /&gt;
* Friday, 2015-10-30&lt;br /&gt;
** 09:00 - [https://etherpad.openstack.org/p/mitaka-telemetry-contributors-meetup contributors meetup]&lt;br /&gt;
&lt;br /&gt;
== Cue ==&lt;br /&gt;
&lt;br /&gt;
* Thu 09:00: Cue - Multi Broker Support https://etherpad.openstack.org/p/mitaka-cue-multi-broker&lt;br /&gt;
* Thu 09:50: Cue - Work Session https://etherpad.openstack.org/p/mitaka-cue-work-session&lt;br /&gt;
&lt;br /&gt;
== Designate ==&lt;br /&gt;
&lt;br /&gt;
* Wed 11:15: Roadmap https://etherpad.openstack.org/p/mitaka-designate-summit-roadmap&lt;br /&gt;
* Wed 12:05: Alias Records https://etherpad.openstack.org/p/mitaka-designate-summit-alias&lt;br /&gt;
* Wed 14:00: Batch API Actions https://etherpad.openstack.org/p/mitaka-designate-summit-batch-api&lt;br /&gt;
* Wed 14:50: Embedable Services https://etherpad.openstack.org/p/mitaka-designate-summit-embeddable-services&lt;br /&gt;
* Wed 16:40: Incremental Zone Transfer (IFXR) https://etherpad.openstack.org/p/mitaka-designate-summit-ifxr&lt;br /&gt;
* Fri 14:00: Contributors Meetup https://etherpad.openstack.org/p/mitaka-designate-summit-meetup&lt;br /&gt;
&lt;br /&gt;
== Documentation ==&lt;br /&gt;
&lt;br /&gt;
* Thu 9:00: https://etherpad.openstack.org/p/Mitaka-Docs-IA&lt;br /&gt;
* Thu 9:50: https://etherpad.openstack.org/p/Mitaka-Docs-ContributorGuide&lt;br /&gt;
* Thu 11:00: https://etherpad.openstack.org/p/Mitaka-Docs-Infra&lt;br /&gt;
* Thu 11:50: https://etherpad.openstack.org/p/Mitaka-Docs-API&lt;br /&gt;
* Thu 16:30: https://etherpad.openstack.org/p/Mitaka-Docs-ReleasePlan&lt;br /&gt;
* Thu 17:20: https://etherpad.openstack.org/p/Mitaka-Docs-Process&lt;br /&gt;
* Fri 9:00: https://etherpad.openstack.org/p/Mitaka-Docs-Meetup&lt;br /&gt;
&lt;br /&gt;
== Glance ==&lt;br /&gt;
&lt;br /&gt;
* Wed:&lt;br /&gt;
** 14:00 - 14:40: Trusts implementation (mfedosin) https://etherpad.openstack.org/p/mitaka-glance-trusts&lt;br /&gt;
* Thur:&lt;br /&gt;
** 09:00 - 09:40 (fishbowl): Cross-project image protection (rosmaita) https://etherpad.openstack.org/p/mitaka-glance-xp-property-protections-support&lt;br /&gt;
** 09:50 - 10:30:  Image Signature Verification Improvements (bpoulos) https://etherpad.openstack.org/p/mitaka-glance-image-signing-and-encryption&lt;br /&gt;
** 11:50 - 12:30: Defcore Updates and joint effort (flaper87) https://etherpad.openstack.org/p/mitaka-glance-defcore&lt;br /&gt;
** 14:40 - 15:20 (fishbowl): Glance image import reloaded (rosmaita, mclaren) https://etherpad.openstack.org/p/Mitaka-glance-image-import-reloaded&lt;br /&gt;
** 15:30 - 16:10 (fisbowl): Artifacts Review (ativelkov) https://etherpad.openstack.org/p/mitaka-glance-artifacts-review&lt;br /&gt;
** 16:30 - 17:10: Glance image import (follow-up working session) (flaper87) https://etherpad.openstack.org/p/Mitaka-glance-image-import-reloaded&lt;br /&gt;
** 17:20 - 18:00: Finalize Glance priorities (flaper87)&lt;br /&gt;
&lt;br /&gt;
== Heat ==&lt;br /&gt;
*  The everything etherpad: https://etherpad.openstack.org/p/mitaka-heat-sessions&lt;br /&gt;
'''Wed''' &lt;br /&gt;
*  11:15 - 11:55: [https://etherpad.openstack.org/p/mitaka-heat-documentation (W) Documentation improvements] &lt;br /&gt;
*  12:05 - 12:45: [https://etherpad.openstack.org/p/mitaka-heat-tests (W) Heat tests] &lt;br /&gt;
*  14:00 - 14:40: [https://etherpad.openstack.org/p/mitaka-heat-convergence-migration (W) Tool to migrate stacks to/from convergence] &lt;br /&gt;
*  14:50 - 15:30: [https://etherpad.openstack.org/p/mitaka-heat-large-stacks (F)  Issues from deploying very large stacks]&lt;br /&gt;
*  15:40 - 16:20: [https://etherpad.openstack.org/p/mitaka-heat-user-ops (F)  User/ops session for summit ]&lt;br /&gt;
'''Thu'''&lt;br /&gt;
*  09:00 - 09:40: [https://etherpad.openstack.org/p/mitaka-heat-autoscaling (W) AutoScaling/Group architecture/roadmap]  &lt;br /&gt;
*  09:50 - 10:30: [https://etherpad.openstack.org/p/mitaka-heat-break-stack-barrier (W)  Breaking the stack barrier]  &lt;br /&gt;
*  11:00 - 11:40:  [https://etherpad.openstack.org/p/mitaka-heat-composition-improvements (F)  Composition improvements ] &lt;br /&gt;
*  11:50 - 12:30: [https://etherpad.openstack.org/p/mitaka-heat-openstackclient (F)  Complete heat support in python-openstackclient  ]&lt;br /&gt;
*  13:50 - 14:30: [https://etherpad.openstack.org/p/mitaka-heat-hooks-notifications (W) Hooks &amp;amp; Notifications ]  &lt;br /&gt;
*  14:40 - 15:20: [https://etherpad.openstack.org/p/mitaka-heat-convergence-ph1 (W) Convergence Phase 1 results]  &lt;br /&gt;
*  15:30 - 16:10: [https://etherpad.openstack.org/p/mitaka-heat-convergence-ph2 (W) Convergence Phase 2 start] &lt;br /&gt;
'''Fri'''&lt;br /&gt;
*  09:00 - 12:30:  [https://etherpad.openstack.org/p/mitaka-heat-summit-meetup Contributor Meetup]&lt;br /&gt;
&lt;br /&gt;
== Horizon ==&lt;br /&gt;
[https://etherpad.openstack.org/p/horizon-mitaka-summit Planning etherpad]&lt;br /&gt;
* Wed October 28&lt;br /&gt;
** 16:40-17:20  [https://etherpad.openstack.org/p/mitaka-horizon-plugins Plugins]&lt;br /&gt;
** 17:30-18:10  [https://etherpad.openstack.org/p/mitaka-horizon-theming Theming/UX]&lt;br /&gt;
* Thursday October 29&lt;br /&gt;
** 9:00-9:40 [https://etherpad.openstack.org/p/mitaka-horizon-angular Existential AngularJS]&lt;br /&gt;
** 9:50-10:30 [https://etherpad.openstack.org/p/mitaka-horizon-ops Ops Feedback]&lt;br /&gt;
** 11:00-11:40 [https://etherpad.openstack.org/p/mitaka-horizon-angular-progress AngularJS Plan]&lt;br /&gt;
** 11:50-12:30 [https://etherpad.openstack.org/p/mitaka-horizon-async async]&lt;br /&gt;
** 13:50-14:30 [https://etherpad.openstack.org/p/mitaka-horizon-scale Scale]&lt;br /&gt;
** 14:40-15:20 [https://etherpad.openstack.org/p/mitaka-horizon-identity Identity]&lt;br /&gt;
** 15:30-16:10 [https://etherpad.openstack.org/p/mitaka-horizon-priorities Priorities]&lt;br /&gt;
* Friday October 30&lt;br /&gt;
** 9:00-12:30 &amp;amp; 14:00-17:30 [https://etherpad.openstack.org/p/mitaka-horizon-meetup Contributors Meetup]&lt;br /&gt;
&lt;br /&gt;
== I18N ==&lt;br /&gt;
http://mitakadesignsummit.sched.org/type/I18N&lt;br /&gt;
&lt;br /&gt;
* Fri: 09:00 - 12:30: I18N contributors meetup https://etherpad.openstack.org/p/tokyo-i18n-meetup&lt;br /&gt;
&lt;br /&gt;
== Infrastructure ==&lt;br /&gt;
http://mitakadesignsummit.sched.org/type/Infrastructure&lt;br /&gt;
&lt;br /&gt;
'''Wednesday:'''&lt;br /&gt;
* '''Work Session: Masterless Puppet part I''', Ho-O Room, 11:15am-11:55am (02:15-02:55 UTC)&lt;br /&gt;
** https://etherpad.openstack.org/p/mitaka-infra-masterlesspuppet&lt;br /&gt;
* '''Work Session: Masterless Puppet part II''', Ho-O Room, 12:05pm-12:45pm (03:05-03:45 UTC)&lt;br /&gt;
** https://etherpad.openstack.org/p/mitaka-infra-masterlesspuppet&lt;br /&gt;
* '''Extending Nodepool With Plug-Ins''', Suzuran Room, 5:30pm-6:10pm (08:30-09:10 UTC)&lt;br /&gt;
** https://etherpad.openstack.org/p/mitaka-infra-nodepoolplugins&lt;br /&gt;
&lt;br /&gt;
'''Thursday:'''&lt;br /&gt;
* '''Work Session: Gerrit Planning and Development''', Kinkei Room, 9:00am-9:40am (00:00-00:40 UTC)&lt;br /&gt;
** https://etherpad.openstack.org/p/mitaka-infra-gerritdevelopment&lt;br /&gt;
* '''Work Session: Nodepool Image Workers''', Kinkei Room, 9:50am-10:30am (00:50-01:30 UTC)&lt;br /&gt;
** https://etherpad.openstack.org/p/mitaka-infra-nodepoolimageworkers&lt;br /&gt;
* '''Scaling New Project Creation''', Suzuran Room, 11:00am-11:40am (02:00-02:40 UTC)&lt;br /&gt;
** https://etherpad.openstack.org/p/mitaka-infra-scalingnewprojectcreation&lt;br /&gt;
* '''Task Tracking: Mitaka Edition''', Suzuran Room, 11:50am-12:30pm (02:50-03:30 UTC)&lt;br /&gt;
** https://etherpad.openstack.org/p/mitaka-infra-tasktracking&lt;br /&gt;
&lt;br /&gt;
'''Friday:'''&lt;br /&gt;
* '''Ironic/Infrastructure contributors meetup''', Jako Room, 9:00am-12:30pm (00:00-03:30 UTC)&lt;br /&gt;
** https://etherpad.openstack.org/p/summit-mitaka-ironic-contributors-meetup&lt;br /&gt;
* '''Infra/QA/Release management contributors meetup''', Kusunoki Room, 2:00pm-5:30pm (05:00-08:30 UTC)&lt;br /&gt;
** https://etherpad.openstack.org/p/summit-mitaka-qa-contributors-meetup&lt;br /&gt;
&lt;br /&gt;
== Ironic ==&lt;br /&gt;
* The everything etherpad: https://etherpad.openstack.org/p/summit-mitaka-ironic&lt;br /&gt;
* Wednesday fishbowl DS3 2:00-2:40 https://etherpad.openstack.org/p/summit-mitaka-ironic-third-party-ci&lt;br /&gt;
* Wednesday fishbowl DS3 2:50-3:30 https://etherpad.openstack.org/p/summit-mitaka-ironic-group-management&lt;br /&gt;
* Thursday workroom DS10 9:00-9:40 https://etherpad.openstack.org/p/summit-mitaka-ironic-notifications-bus&lt;br /&gt;
* Thursday workroom DS10 9:50-10:30 https://etherpad.openstack.org/p/summit-mitaka-ironic-driver-composition&lt;br /&gt;
* Thursday fishbowl DS3 11:00-11:40 https://etherpad.openstack.org/p/summit-mitaka-ironic-driver-api&lt;br /&gt;
* Thursday fishbowl DS3 11:50-12:30 https://etherpad.openstack.org/p/summit-mitaka-ironic-nova-driver (joint session with Nova)&lt;br /&gt;
* Thursday workroom DS11 4:30-5:10 https://etherpad.openstack.org/p/summit-mitaka-ironic-lock-manager&lt;br /&gt;
* Thursday workroom DS11 5:20-6:00 https://etherpad.openstack.org/p/summit-mitaka-ironic-gate-improvements&lt;br /&gt;
* Friday workroom DS15 9:00-12:30 https://etherpad.openstack.org/p/summit-mitaka-ironic-contributors-meetup (shared space with Infra)&lt;br /&gt;
&lt;br /&gt;
== Kolla ==&lt;br /&gt;
&lt;br /&gt;
[http://etherpad.openstack.org/kolla-mitaka-all-sessions All Kolla Design Summit Sessions]&lt;br /&gt;
&lt;br /&gt;
Wednesday:&lt;br /&gt;
* 11:15 - 11:55: [http://etherpad.openstack.org/kolla-mitaka-documentation (W) Documentation]&lt;br /&gt;
* 12:05 - 12:45: [http://etherpad.openstack.org/kolla-mitaka-diagnostics (W) Diagnostics]&lt;br /&gt;
* 14:00 - 14:40: [http://etherpad.openstack.org/kolla-mitaka-bare-metal-deployment (W) Bare Metal Deployment]&lt;br /&gt;
* 15:40 - 16:20: [http://etherpad.openstack.org/kolla-mitaka-roadmap (F) Mitaka Roadmap]&lt;br /&gt;
* 16:40 - 17:20: [http://etherpad.openstack.org/kolla-mitaka-operator-requirements-gathering (F) Mitaka Operator Requirements Gathering]&lt;br /&gt;
* 17:40 - 18:20: [http://etherpad.openstack.org/kolla-mitaka-upgrade (F) Integrating Kolla Containers with Third Party Projects]&lt;br /&gt;
&lt;br /&gt;
Thursday&lt;br /&gt;
* 14:40 - 15:20: [http://etherpad.openstack.org/kolla-mitaka-gating (W) Gating Commits]&lt;br /&gt;
* 15:30 - 16:10: [http://etherpad.openstack.org/kolla-mitaka-upgrade (W) Upgrading from Liberty to Mitaka]&lt;br /&gt;
&lt;br /&gt;
== Keystone == &lt;br /&gt;
* Wed 2:50 - 3:30: tokens and tokenless auth https://etherpad.openstack.org/p/keystone-mitaka-summit-tokens&lt;br /&gt;
* Wed 3:40 - 4:20: hierarchical multitenancy  https://etherpad.openstack.org/p/keystone-mitaka-summit-multitenancy&lt;br /&gt;
* Wed 4:40 - 5:20: policy  https://etherpad.openstack.org/p/keystone-mitaka-summit-policy&lt;br /&gt;
* Thu 9:00 - 9:40: deprecations https://etherpad.openstack.org/p/keystone-mitaka-summit-deprecations&lt;br /&gt;
* Thu 9:50 - 10:30: federation https://etherpad.openstack.org/p/keystone-mitaka-summit-federation&lt;br /&gt;
* Thu 11:00 - 11:40: keystone server  https://etherpad.openstack.org/p/keystone-mitaka-summit-server (workshop)&lt;br /&gt;
* Thu 11:50 - 12:30: testing  https://etherpad.openstack.org/p/keystone-mitaka-summit-testing (workshop)&lt;br /&gt;
* Thu 1:50 - 2:30: oslo and doc https://etherpad.openstack.org/p/keystone-mitaka-summit-oslo-and-docs (workshop)&lt;br /&gt;
* Thu 4:30 - 5:10: keystone libraries https://etherpad.openstack.org/p/keystone-mitaka-summit-libraries&lt;br /&gt;
* Thu 5:20 - 6:00: more cross-project  https://etherpad.openstack.org/p/keystone-mitaka-summit-x-project&lt;br /&gt;
&lt;br /&gt;
== Neutron ==&lt;br /&gt;
&lt;br /&gt;
* Wed 11:15 - 11:55: Completing the Liberty backlog https://etherpad.openstack.org/p/mitaka-neutron-core-liberty-backlog&lt;br /&gt;
* Wed 12:05 - 12:45: Cross Project integration: tempest and 3rd party validation https://etherpad.openstack.org/p/mitaka-neutron-core-cross-project-integration&lt;br /&gt;
&lt;br /&gt;
* Wed 15:40 - 16:20: Cross Project integration: devstack, nova, heat, ... https://etherpad.openstack.org/p/mitaka-neutron-core-cross-project-integration&lt;br /&gt;
* Wed 16:40 - 17:20: API and Server extensibility mechanisms https://etherpad.openstack.org/p/mitaka-neutron-core-extensibility&lt;br /&gt;
* Wed 17:30 - 18:10: Plugin and Agent extensibility mechanisms https://etherpad.openstack.org/p/mitaka-neutron-core-extensibility&lt;br /&gt;
&lt;br /&gt;
* Thu 11:00 - 11:40: LBaaS/Octavia/FWaaS https://etherpad.openstack.org/p/mitaka-neutron-next-adv-services&lt;br /&gt;
* Thu 11:50 - 12:30: LBaaS/Octavia/FWaaS https://etherpad.openstack.org/p/mitaka-neutron-next-adv-services&lt;br /&gt;
&lt;br /&gt;
* Thu 13:50 - 14:30: Scalability, operability and reliability pain points https://etherpad.openstack.org/p/mitaka-neutron-next-ops-painpoints&lt;br /&gt;
* Thu 14:40 - 15:20: Extending the existing networking logical model and protocols support https://etherpad.openstack.org/p/mitaka-neutron-next-network-model&lt;br /&gt;
* Thu 15:30 - 16:10: Lightning talks https://etherpad.openstack.org/p/mitaka-neutron-labs-lighting-talks&lt;br /&gt;
* Thu 16:30 - 17:10: NFV foundation elements https://etherpad.openstack.org/p/mitaka-neutron-labs-nfv-foundation&lt;br /&gt;
* Thu 17:20 - 18:00: Integration between orchestration platforms and Neutron https://etherpad.openstack.org/p/mitaka-neutron-labs-orchestration&lt;br /&gt;
&lt;br /&gt;
* Fri 09:00 - 12:30: Neutron contributors meetup https://etherpad.openstack.org/p/mitaka-neutron-unplugged-track&lt;br /&gt;
* 14:00 - 17:30: Neutron contributors meetup https://etherpad.openstack.org/p/mitaka-neutron-unplugged-track&lt;br /&gt;
&lt;br /&gt;
== Nova ==&lt;br /&gt;
&lt;br /&gt;
* Wed 11:15: REST API https://etherpad.openstack.org/p/mitaka-nova-api&lt;br /&gt;
* Wed 12:05: Upgrade https://etherpad.openstack.org/p/mitaka-nova-upgrade&lt;br /&gt;
&lt;br /&gt;
* Wed 14:00: Unconference https://etherpad.openstack.org/p/mitaka-nova-unconference&lt;br /&gt;
* Wed 14:50: OS VIF lib https://etherpad.openstack.org/p/mitaka-nova-os-vif-lib&lt;br /&gt;
* Wed 15:40: Resources and Flavors https://etherpad.openstack.org/p/mitaka-nova-resource-modeling&lt;br /&gt;
* Wed 16:40: Resources and Flavors (continued) https://etherpad.openstack.org/p/mitaka-nova-resource-modeling&lt;br /&gt;
* Wed 17:30: SR-IOV https://etherpad.openstack.org/p/mitaka-nova-sr-iov&lt;br /&gt;
&lt;br /&gt;
* Thurs 09:00: Cells v2 https://etherpad.openstack.org/p/mitaka-nova-cells&lt;br /&gt;
* Thurs 9:50: see Cinder track&lt;br /&gt;
* Thurs 11:00: Scheduler https://etherpad.openstack.org/p/mitaka-nova-scheduler&lt;br /&gt;
* Thurs 11:50: see Ironic track&lt;br /&gt;
&lt;br /&gt;
* Thurs 13:50: Unconference https://etherpad.openstack.org/p/mitaka-nova-unconference&lt;br /&gt;
* Thurs 14:40: Error handling https://etherpad.openstack.org/p/mitaka-nova-error-handling&lt;br /&gt;
* Thurs 15:30: Cross Service issues: Server locking, token refresh, Instance users https://etherpad.openstack.org/p/mitaka-nova-service-users&lt;br /&gt;
* Thurs 16:30: Mitaka Priorities https://etherpad.openstack.org/p/mitaka-nova-priorities&lt;br /&gt;
* Thurs 17:20: Unconference https://etherpad.openstack.org/p/mitaka-nova-unconference&lt;br /&gt;
&lt;br /&gt;
* Fri: 09:00 and 14:00: Nova contributors meetup https://etherpad.openstack.org/p/mitaka-nova-summit-meetup&lt;br /&gt;
&lt;br /&gt;
== Manila ==&lt;br /&gt;
* Wed 11:15 - 11:55: (WS) Migration Improvements https://etherpad.openstack.org/p/mitaka-manila-migration-improvements&lt;br /&gt;
* Wed 12:05 - 12:45: (WS) Access Allow/Deny Driver Interface https://etherpad.openstack.org/p/mitaka-manila-allow-deny&lt;br /&gt;
* Thu 11:00 - 11:40: (FB) Share Replication  https://etherpad.openstack.org/p/mitaka-manila-replication&lt;br /&gt;
* Thu 11:50 - 12:30: (FB) Alternative Snapshot Semantics https://etherpad.openstack.org/p/mitaka-manila-snapshot-semantics&lt;br /&gt;
* Thu 14:40 - 15:20: (WS) Export Location Metadata https://etherpad.openstack.org/p/mitaka-manila-export-location-metadata&lt;br /&gt;
* Thu 15:30 - 16:10: (WS) Interactions Between New Features https://etherpad.openstack.org/p/mitaka-manila-feature-interactions&lt;br /&gt;
* Fri 09:00 - 12:30: (CM) Contributor Meetup https://etherpad.openstack.org/p/mitaka-manila-contributor-meetup&lt;br /&gt;
&lt;br /&gt;
==Murano==&lt;br /&gt;
'''Wed'''&lt;br /&gt;
&lt;br /&gt;
* 11:15am (W) [https://etherpad.openstack.org/p/murano-mitaka-work-session-1 Multi-Region in Murano]&lt;br /&gt;
* 12:05pm (W) [https://etherpad.openstack.org/p/murano-mitaka-work-session-2 Actions]&lt;br /&gt;
&lt;br /&gt;
'''Fri'''&lt;br /&gt;
&lt;br /&gt;
* 9am - 5:30pm [https://etherpad.openstack.org/p/murano-mitaka-contributors-meetup Contributors Meetup]&lt;br /&gt;
&lt;br /&gt;
== OpenStack-Ansible ==&lt;br /&gt;
* [https://etherpad.openstack.org/p/openstack-ansible-mitaka-summit Summary View]&lt;br /&gt;
* Wed 14:50-15:30 : [https://etherpad.openstack.org/p/openstack-ansible-mitaka-image-based-deployment Image-based deployments]&lt;br /&gt;
* Wed 15:40-16:20 : [https://etherpad.openstack.org/p/openstack-ansible-mitaka-upgrades Production-ready Upgrades]&lt;br /&gt;
* Wed 17:30-18:10 : [https://etherpad.openstack.org/p/openstack-ansible-mitaka-inventory Dynamic Inventory Refactor]&lt;br /&gt;
* Fri 14:00-17:00 : [https://etherpad.openstack.org/p/openstack-ansible-mitaka-meetup Contributor's Day]&lt;br /&gt;
&lt;br /&gt;
== OpenStack Chef ==&lt;br /&gt;
* [https://etherpad.openstack.org/p/mitaka-openstack-chef-general general discussion]&lt;br /&gt;
* Thurs 13:00-15:00 : [https://etherpad.openstack.org/p/mitaka-openstack-chef-refactoring defining the refactoring process]&lt;br /&gt;
&lt;br /&gt;
== OpenStackClient ==&lt;br /&gt;
* Wed 16:40 - 17:20: [https://etherpad.openstack.org/p/tokyo-osc-session Near-term Roadmap]&lt;br /&gt;
* Fri 09:00 - 12:30: [https://etherpad.openstack.org/p/tokyo-osc-meetup Meetup]&lt;br /&gt;
&lt;br /&gt;
== Ops ==&lt;br /&gt;
Use https://etherpad.openstack.org/p/TYO-ops-meetup in the meantime.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Oslo ==&lt;br /&gt;
&lt;br /&gt;
* Wed 16:40: Work session: Tasks task tasks tisk-a-task [https://etherpad.openstack.org/p/mitaka-oslo-taskflow]&lt;br /&gt;
* Wed 17:30: Work session: Review recommendations from Security and Logging WG [https://etherpad.openstack.org/p/mitaka-oslo-security-logging]&lt;br /&gt;
* Thu 09:50: Mitaka and beyond - New libraries, drivers in Oslo [https://etherpad.openstack.org/p/mitaka-oslo-new-stuff]&lt;br /&gt;
* Thu 13:50: Work session: Better Developer Documentation [https://etherpad.openstack.org/p/mitaka-oslo-better-documentation]&lt;br /&gt;
* Thu 14:40: Work session: Strategy, CI, Functional testing, Releases, etc. [https://etherpad.openstack.org/p/mitaka-oslo-strategy-ci-functional]&lt;br /&gt;
* Thu 15:30: Work session: oslo.messaging HA, performance, future plans  [https://etherpad.openstack.org/p/mitaka-oslo-mesaging-ha-performance]&lt;br /&gt;
* Thu 16:30: Oslo: Plans/updates to existing libraries [https://etherpad.openstack.org/p/mitaka-oslo-library-updates]&lt;br /&gt;
* Thu 17:20: Oslo: State of oslo.messaging Drivers [https://etherpad.openstack.org/p/mitaka-oslo-messaging-zmq-pika-kafka]&lt;br /&gt;
&lt;br /&gt;
== Puppet OpenStack ==&lt;br /&gt;
* General etherpadː https://etherpad.openstack.org/p/HND-puppet&lt;br /&gt;
*  Wed 2 pm: Code design sessionː https://etherpad.openstack.org/p/HND-puppet-code&lt;br /&gt;
*  Wed 2.50 pm: Code design sessionː https://etherpad.openstack.org/p/HND-puppet-code&lt;br /&gt;
*  Thu 1.50 pm: Community feedbackː https://etherpad.openstack.org/p/HND-puppet-community&lt;br /&gt;
*  Thu 2.40 pm: CI and documentationː https://etherpad.openstack.org/p/HND-puppet-ci and https://etherpad.openstack.org/p/HND-puppet-doc&lt;br /&gt;
*  Thu 4.30 pm: Code design sessionː https://etherpad.openstack.org/p/HND-puppet-code&lt;br /&gt;
&lt;br /&gt;
== QA ==&lt;br /&gt;
* Wed 14:50-15:30:  [https://etherpad.openstack.org/p/mitaka-qa-openstack-health OpenStack Health Dashboard Next Steps]&lt;br /&gt;
* Wed 15:40-16:20:  [https://etherpad.openstack.org/p/mitaka-qa-tempest-microversions Tempest Microversion Support and Testing]&lt;br /&gt;
* Wed 16:40-17:20:  [https://etherpad.openstack.org/p/mitaka-qa-testr-datastore-layering Testr datastore layering and architecture cleanup]&lt;br /&gt;
* Wed 17:30-18:10: [https://etherpad.openstack.org/p/mitaka-qa-tempest-run-cli Tempest command line runner options/enhancements]&lt;br /&gt;
* Thurs 09:00-09:40: [https://etherpad.openstack.org/p/mitaka-qa-tempest-resource-config Tempest Existing Resource Configuration (aka resources.yaml)]&lt;br /&gt;
* Thurs 09:50-10:30:  [https://etherpad.openstack.org/p/mitaka-qa-tempest-lib-service-clients Tempest-lib expansion and service client plugins]&lt;br /&gt;
* Thurs 16:30-17:10:  [https://etherpad.openstack.org/p/mitaka-qa-devstack-roadmap Devstack/Grenade in Mitaka]&lt;br /&gt;
* Thurs 17:20-18:00:  [https://etherpad.openstack.org/p/mitaka-qa-priorities Mitaka QA Priorities]&lt;br /&gt;
&lt;br /&gt;
== Release management ==&lt;br /&gt;
* Thu 15:30: Mitaka process changes [https://etherpad.openstack.org/p/mitaka-relmgt-process-changes]&lt;br /&gt;
* Thu 16:30: Work session: the Mitaka plan [https://etherpad.openstack.org/p/mitaka-relmgt-plan]&lt;br /&gt;
&lt;br /&gt;
== Searchlight ==&lt;br /&gt;
* Thu 4ː30: (Fishbowl) Prioritizing Search Integrations and Capabilities https://etherpad.openstack.org/p/searchlight-mitaka-summit-priorities-integrations&lt;br /&gt;
* Thu 5ː20: Cross Region Searching https://etherpad.openstack.org/p/searchlight-mitaka-summit-multi-region&lt;br /&gt;
&lt;br /&gt;
== Sahara ==&lt;br /&gt;
* Thu 9:00: (Fishbowl) UX improvements http://etherpad.openstack.org/p/sahara-mitaka-ux&lt;br /&gt;
* Thu 9:50: (Fishbowl) Future plugins and EDP jobs https://etherpad.openstack.org/p/sahara-mitaka-future-plugins-edp&lt;br /&gt;
* Thu 11:00: Security https://etherpad.openstack.org/p/sahara-mitaka-security&lt;br /&gt;
* Thu 11:50: UI tech http://etherpad.openstack.org/p/sahara-mitaka-ui&lt;br /&gt;
* Thu 13:50: Image generation http://etherpad.openstack.org/p/sahara-mitaka-images&lt;br /&gt;
* Thu 14:40: Deprecation policies and plugins decoupling https://etherpad.openstack.org/p/sahara-mitaka-deprecation-policies&lt;br /&gt;
* Thu 15:30: Tests http://etherpad.openstack.org/p/sahara-mitaka-tests&lt;br /&gt;
* Fri 14:00-17:30: Contributors Meetup https://etherpad.openstack.org/p/sahara-mitaka-meetup&lt;br /&gt;
&lt;br /&gt;
== Swift ==&lt;br /&gt;
* Wed 11:15am -12:54pm: Work session 1:&lt;br /&gt;
** Production Keymaster: https://etherpad.openstack.org/p/swift_production_keymaster_issues&lt;br /&gt;
** Ouststanding encryption issues: https://etherpad.openstack.org/p/swift_encryption_issues&lt;br /&gt;
&lt;br /&gt;
* Wed 2:00pm - 4:20pm: Work session 2:&lt;br /&gt;
** container sync: https://etherpad.openstack.org/p/tokyo-swift-container-sync&lt;br /&gt;
** hummingbird status and unifying the sync protocol: https://etherpad.openstack.org/p/tokyo-swift-hummingbird&lt;br /&gt;
** global clusters: https://etherpad.openstack.org/p/tokyo-swift-global-clusters&lt;br /&gt;
&lt;br /&gt;
* Wed 4:40pm - 5:20pm: Ops Feedback Session:&lt;br /&gt;
** https://etherpad.openstack.org/p/tokyo-swift-ops-feedback&lt;br /&gt;
&lt;br /&gt;
* Wed 5:30pm - 6:10pm: Inbound cross-project issues:&lt;br /&gt;
** https://etherpad.openstack.org/p/tokyo-swift-cross-project&lt;br /&gt;
&lt;br /&gt;
* Thurs 11:am - 12:30pm: Work session 3:&lt;br /&gt;
** Keystone session in swiftclient: https://etherpad.openstack.org/p/keystone-auth-session&lt;br /&gt;
** swiftclient docs: https://etherpad.openstack.org/p/swiftclient-docs&lt;br /&gt;
** Other issues: https://etherpad.openstack.org/p/tokyo-swiftclient-other&lt;br /&gt;
&lt;br /&gt;
* Thurs 1:50pm - 4:10pm: Work session 4:&lt;br /&gt;
** rings (data placement):&lt;br /&gt;
** EC topics:&lt;br /&gt;
** symlinks: https://etherpad.openstack.org/p/swift_symlinks&lt;br /&gt;
&lt;br /&gt;
* Thurs 4:30pm - 6:00pm: Work session 5:&lt;br /&gt;
** container sharding: https://etherpad.openstack.org/p/tokyo-swift-container-sharding&lt;br /&gt;
** fast-POST: https://etherpad.openstack.org/p/tokyo-swift-fast-post&lt;br /&gt;
&lt;br /&gt;
* Fri all day: Swift contributors meetup:&lt;br /&gt;
** https://etherpad.openstack.org/p/tokyo-swift-contributors-meetup&lt;br /&gt;
&lt;br /&gt;
== TripleO ==&lt;br /&gt;
* Wed 4:40pm - 5:20pm: (Fishbowl) Container Integration https://etherpad.openstack.org/p/tripleo-mitaka-containers&lt;br /&gt;
* Wed 5:30pm - 6:10pm: (Fishbowl) Upgrades https://etherpad.openstack.org/p/tripleo-mitaka-upgrades&lt;br /&gt;
* Thu 5:20pm - 6:00pm: (Workroom)  tripleo-common, REST API https://etherpad.openstack.org/p/tripleo-mitaka-restapi&lt;br /&gt;
* Fri 9:00am - 12:30pm: (meetup) https://etherpad.openstack.org/p/tripleo-mitaka-meetup&lt;br /&gt;
* Fri 2:00pm - 5:30pm: (meetup) https://etherpad.openstack.org/p/tripleo-mitaka-meetup&lt;br /&gt;
&lt;br /&gt;
== Trove ==&lt;br /&gt;
* Wednesday, 2015-08-28&lt;br /&gt;
** 15:40 - [https://etherpad.openstack.org/p/trove-mitaka-multiple-storage-options multiple storage options]&lt;br /&gt;
** 16:40 - [https://etherpad.openstack.org/p/trove-mitaka-managing-trove-upgrades managing trove upgrades]&lt;br /&gt;
&lt;br /&gt;
* Thursday, 2015-08-29&lt;br /&gt;
** 11:00 - [https://etherpad.openstack.org/p/trove-mitaka-user-op-session User Op Session]&lt;br /&gt;
** 11ː50 - [https://etherpad.openstack.org/p/trove-mitaka-toggle-instance-status toggle instance status]&lt;br /&gt;
** 13ː50 - [https://etherpad.openstack.org/p/trove-mitaka-distribution-agnostic distribution agnostic]&lt;br /&gt;
** 14ː40 - [https://etherpad.openstack.org/p/trove-mitaka-building-guest-images building guest images]&lt;br /&gt;
** 15ː30 - [https://etherpad.openstack.org/p/mitaka-nova-service-users Nova Cross Project issues]&lt;br /&gt;
&lt;br /&gt;
* Friday, 2015-08-30&lt;br /&gt;
** 14:00 - [https://etherpad.openstack.org/p/trove-mitaka-contributors-meetiup contributors meetup]&lt;br /&gt;
&lt;br /&gt;
== Watcher ==&lt;br /&gt;
* Tuesday, 2015-10-27&lt;br /&gt;
** 10:45-11:45 - [https://etherpad.openstack.org/p/watcher--mitaka-contributors-meetup contributors meetup]&lt;br /&gt;
&lt;br /&gt;
== Zaqar ==&lt;br /&gt;
* Wed 15:40-16:20 (W) https://etherpad.openstack.org/p/mitaka-zaqar-sahara&lt;br /&gt;
* Wed 17:30-18:10 (F) https://etherpad.openstack.org/p/mitaka-zaqar-on-horizon-and-misc&lt;br /&gt;
* Thu 09:00-9:40 (W) https://etherpad.openstack.org/p/mitaka-zaqar-client&lt;br /&gt;
* Thu 13:50-14:30 (W) https://etherpad.openstack.org/p/mitaka-zaqar-realtime-horizon&lt;/div&gt;</summary>
		<author><name>Vipuls</name></author>	</entry>

	<entry>
		<id>https://wiki.openstack.org/w/index.php?title=Meetings/InfraTeamMeeting&amp;diff=84429</id>
		<title>Meetings/InfraTeamMeeting</title>
		<link rel="alternate" type="text/html" href="https://wiki.openstack.org/w/index.php?title=Meetings/InfraTeamMeeting&amp;diff=84429"/>
				<updated>2015-06-26T22:38:07Z</updated>
		
		<summary type="html">&lt;p&gt;Vipuls: /* Upcoming Project Renames */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
&amp;lt;!-- ## page was renamed from Meetings/CITeamMeeting --&amp;gt;&lt;br /&gt;
{{:Header}}&lt;br /&gt;
&lt;br /&gt;
= Weekly Project Infrastructure team meeting =&lt;br /&gt;
&lt;br /&gt;
The OpenStack Project Infrastructure Team holds public weekly meetings in &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;#openstack-meeting&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;, Tuesdays at 1900 UTC. Everyone interested in infrastructure and process surrounding automated testing and deployment is encouraged to attend.&lt;br /&gt;
&lt;br /&gt;
Please feel free to add agenda items (and your IRC nick in parenthesis).&lt;br /&gt;
&lt;br /&gt;
== Agenda for next meeting ==&lt;br /&gt;
&lt;br /&gt;
* Announcements&lt;br /&gt;
* Actions from last meeting&lt;br /&gt;
* Specs approval&lt;br /&gt;
** RefStack Site Hosting&lt;br /&gt;
*** https://review.openstack.org/#/c/188207/ (hogepodge, davidlenwell)&lt;br /&gt;
* Schedule Project Renames&lt;br /&gt;
* Priority Efforts&lt;br /&gt;
** Swift logs&lt;br /&gt;
** Nodepool DIB&lt;br /&gt;
** Migration to Zanata&lt;br /&gt;
*** Adding infra as Zanata admin [https://review.openstack.org/#/c/193677/ change] is pending, once this lands we'll need to link it to an openstackid (on openstackid-dev for now) account for infra, AFAIK we don't yet have an infra service account on openstackid, how should we handle this?&lt;br /&gt;
** Downstream Puppet&lt;br /&gt;
** Upgrading Gerrit&lt;br /&gt;
** Docs publishing&lt;br /&gt;
*** Holding pattern while Swift logs issues get ironed out&lt;br /&gt;
* Hosting for Manila service image (u_glide, bswartz)&lt;br /&gt;
* Open discussion&lt;br /&gt;
&lt;br /&gt;
== Upcoming Project Renames ==&lt;br /&gt;
* stackforge/puppet-murano -&amp;gt; openstack/puppet-murano, https://review.openstack.org/192730 &lt;br /&gt;
* stackforge/cue -&amp;gt; openstack/cue, https://review.openstack.org/#/c/196268/&lt;br /&gt;
(any additions should mention original-&amp;gt;new full names and link to the corresponding change in Gerrit)&lt;br /&gt;
&lt;br /&gt;
== Previous meetings ==&lt;br /&gt;
Previous meetings, with their notes and logs, can be found at http://eavesdrop.openstack.org/meetings/infra/ and earlier at http://eavesdrop.openstack.org/meetings/ci/&lt;/div&gt;</summary>
		<author><name>Vipuls</name></author>	</entry>

	<entry>
		<id>https://wiki.openstack.org/w/index.php?title=Meetings/Cue&amp;diff=84037</id>
		<title>Meetings/Cue</title>
		<link rel="alternate" type="text/html" href="https://wiki.openstack.org/w/index.php?title=Meetings/Cue&amp;diff=84037"/>
				<updated>2015-06-22T17:44:18Z</updated>
		
		<summary type="html">&lt;p&gt;Vipuls: /* Agenda */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Weekly Cue meeting =&lt;br /&gt;
&lt;br /&gt;
The [https://launchpad.net/cue Cue] project holds a weekly team meeting every Monday at following time/place:&lt;br /&gt;
* [http://www.timeanddate.com/worldclock/fixedtime.html?hour=18&amp;amp;min=0&amp;amp;sec=0%201900%20UTC 18:00 UTC] in &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;#openstack-meeting-alt&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Next meeting ==&lt;br /&gt;
June 22, 2015 - http://www.timeanddate.com/worldclock/fixedtime.html?msg=Cue+Weekly+Meeting&amp;amp;iso=20150615T18&amp;amp;p1=1440&amp;amp;ah=1&lt;br /&gt;
&lt;br /&gt;
==== Agenda ====&lt;br /&gt;
* Action Items&lt;br /&gt;
** http://eavesdrop.openstack.org/meetings/cue/2015/cue.2015-06-15-18.02.html&lt;br /&gt;
* Discussion Topics&lt;br /&gt;
&lt;br /&gt;
* Bugs&lt;br /&gt;
** [https://bugs.launchpad.net/cue/+bugs?field.searchtext=&amp;amp;orderby=-importance&amp;amp;field.status%3Alist=NEW&amp;amp;field.status%3Alist=INCOMPLETE_WITH_RESPONSE&amp;amp;field.status%3Alist=INCOMPLETE_WITHOUT_RESPONSE&amp;amp;field.importance%3Alist=CRITICAL&amp;amp;field.importance%3Alist=HIGH&amp;amp;field.importance%3Alist=MEDIUM&amp;amp;assignee_option=any&amp;amp;field.assignee=&amp;amp;field.bug_reporter=&amp;amp;field.bug_commenter=&amp;amp;field.subscriber=&amp;amp;field.structural_subscriber=&amp;amp;field.tag=&amp;amp;field.tags_combinator=ANY&amp;amp;field.has_cve.used=&amp;amp;field.omit_dupes.used=&amp;amp;field.omit_dupes=on&amp;amp;field.affects_me.used=&amp;amp;field.has_patch.used=&amp;amp;field.has_branches.used=&amp;amp;field.has_branches=on&amp;amp;field.has_no_branches.used=&amp;amp;field.has_no_branches=on&amp;amp;field.has_blueprints.used=&amp;amp;field.has_blueprints=on&amp;amp;field.has_no_blueprints.used=&amp;amp;field.has_no_blueprints=on&amp;amp;search=Search New [Critical | High | Medium&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt; Bugs]&lt;br /&gt;
&lt;br /&gt;
* Open discussion&lt;/div&gt;</summary>
		<author><name>Vipuls</name></author>	</entry>

	<entry>
		<id>https://wiki.openstack.org/w/index.php?title=Meetings/Cue&amp;diff=84036</id>
		<title>Meetings/Cue</title>
		<link rel="alternate" type="text/html" href="https://wiki.openstack.org/w/index.php?title=Meetings/Cue&amp;diff=84036"/>
				<updated>2015-06-22T17:43:38Z</updated>
		
		<summary type="html">&lt;p&gt;Vipuls: /* Next meeting */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Weekly Cue meeting =&lt;br /&gt;
&lt;br /&gt;
The [https://launchpad.net/cue Cue] project holds a weekly team meeting every Monday at following time/place:&lt;br /&gt;
* [http://www.timeanddate.com/worldclock/fixedtime.html?hour=18&amp;amp;min=0&amp;amp;sec=0%201900%20UTC 18:00 UTC] in &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;#openstack-meeting-alt&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Next meeting ==&lt;br /&gt;
June 22, 2015 - http://www.timeanddate.com/worldclock/fixedtime.html?msg=Cue+Weekly+Meeting&amp;amp;iso=20150615T18&amp;amp;p1=1440&amp;amp;ah=1&lt;br /&gt;
&lt;br /&gt;
==== Agenda ====&lt;br /&gt;
* Action Items&lt;br /&gt;
** http://eavesdrop.openstack.org/meetings/cue/2015/cue.2015-06-08-18.02.html&lt;br /&gt;
&lt;br /&gt;
* Discussion Topics&lt;br /&gt;
&lt;br /&gt;
* Bugs&lt;br /&gt;
** [https://bugs.launchpad.net/cue/+bugs?field.searchtext=&amp;amp;orderby=-importance&amp;amp;field.status%3Alist=NEW&amp;amp;field.status%3Alist=INCOMPLETE_WITH_RESPONSE&amp;amp;field.status%3Alist=INCOMPLETE_WITHOUT_RESPONSE&amp;amp;field.importance%3Alist=CRITICAL&amp;amp;field.importance%3Alist=HIGH&amp;amp;field.importance%3Alist=MEDIUM&amp;amp;assignee_option=any&amp;amp;field.assignee=&amp;amp;field.bug_reporter=&amp;amp;field.bug_commenter=&amp;amp;field.subscriber=&amp;amp;field.structural_subscriber=&amp;amp;field.tag=&amp;amp;field.tags_combinator=ANY&amp;amp;field.has_cve.used=&amp;amp;field.omit_dupes.used=&amp;amp;field.omit_dupes=on&amp;amp;field.affects_me.used=&amp;amp;field.has_patch.used=&amp;amp;field.has_branches.used=&amp;amp;field.has_branches=on&amp;amp;field.has_no_branches.used=&amp;amp;field.has_no_branches=on&amp;amp;field.has_blueprints.used=&amp;amp;field.has_blueprints=on&amp;amp;field.has_no_blueprints.used=&amp;amp;field.has_no_blueprints=on&amp;amp;search=Search New [Critical | High | Medium&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt; Bugs]&lt;br /&gt;
&lt;br /&gt;
* Open discussion&lt;/div&gt;</summary>
		<author><name>Vipuls</name></author>	</entry>

	<entry>
		<id>https://wiki.openstack.org/w/index.php?title=IRC&amp;diff=82948</id>
		<title>IRC</title>
		<link rel="alternate" type="text/html" href="https://wiki.openstack.org/w/index.php?title=IRC&amp;diff=82948"/>
				<updated>2015-06-08T23:44:49Z</updated>
		
		<summary type="html">&lt;p&gt;Vipuls: /* OpenStack IRC channels (chat.freenode.net) */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;IRC, or Internet Relay Chat, is often used as a real-time communication capability with open source projects. We're pretty proud of the friendly vibe in the OpenStack channels and invite anyone wanting to ask questions or talk about all things OpenStack to the channels.&lt;br /&gt;
&lt;br /&gt;
IRC software can be found for all operating systems. The [https://en.wikipedia.org/wiki/Comparison_of_Internet_Relay_Chat_clients#Operating_system_support IRC clients comparison chart on Wikipedia] can help you pick one for your operating system.&lt;br /&gt;
&lt;br /&gt;
You don't have to have a complex setup to use IRC. You can use the web client for Freenode, which doesn't require any download or setup. Just pick a nickname and join #openstack: http://webchat.freenode.net/?channels=openstack,openstack-101.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== How to read messages exchanged when you're offline ====&lt;br /&gt;
&lt;br /&gt;
IRC, unlike other chat systems, doesn't keep when you're offline. In order to be notified of relevant communications you can either look at the [http://eavesdrop.openstack.org/irclogs/ channel logs] or setup an IRC proxy. &lt;br /&gt;
&lt;br /&gt;
The most common IRC proxies are [http://wiki.znc.in/ZNC znc] and [https://bip.milkypond.org/ bip]. See the following guides to configure them:&lt;br /&gt;
&lt;br /&gt;
* [https://kashyapc.fedorapeople.org/notes-bip-IRC-proxy/README Installation notes for Fedora/RH-like] and [https://kashyapc.fedorapeople.org/notes-bip-IRC-proxy/bip.conf example bip.conf] contributed by Kashyap Chamarthy&lt;br /&gt;
* ZNC [https://dague.net/2014/09/13/my-irc-proxy-setup/ configuration notes] contributed by Sean Dague&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== OpenStack IRC channels (chat.freenode.net) ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
If you want to start a new IRC channel, please consult with the InfrastructureTeam in #openstack-infra or at openstack-infra@lists.openstack.org to ensure it gets registered appropriately. &lt;br /&gt;
&lt;br /&gt;
'''Many IRC channels are logged and [http://eavesdrop.openstack.org/irclogs/ recordings are publicly accessible]'''. If you're concerned about privacy consider using a [https://freenode.net/faq.shtml#cloaks cloak], [https://freenode.net/irc_servers.shtml#tor tor], hide your real name and be mindful not to write sensitive data in these channels.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|- &lt;br /&gt;
! IRC Channel !! Description&lt;br /&gt;
|-&lt;br /&gt;
|'''#openstack''' || general discussion, support&lt;br /&gt;
|-&lt;br /&gt;
| '''#openstack-101''' || guidance for new contributors&lt;br /&gt;
|-&lt;br /&gt;
|'''#openstack-anvil''' || [http://anvil.readthedocs.org/ Anvil] discussion channel&lt;br /&gt;
|-&lt;br /&gt;
|'''#openstack-barbican''' || Barbican-related team discussions&lt;br /&gt;
|-&lt;br /&gt;
|'''#openstack-blazar''' || blazar (formerly climate) team discussions&lt;br /&gt;
|-&lt;br /&gt;
|'''#openstack-board''' || OpenStack Foundation Board Meeting Back channel (mainly quiet except during meetings)&lt;br /&gt;
|-&lt;br /&gt;
|'''#openstack-ceilometer''' || ceilometer team discussions&lt;br /&gt;
|-&lt;br /&gt;
|'''#openstack-chef''' || deployment and operating OpenStack with Chef&lt;br /&gt;
|- &lt;br /&gt;
|'''#openstack-cinder''' || cinder team discussions&lt;br /&gt;
|-&lt;br /&gt;
| '''#openstack-community''' || coordination of community activity&lt;br /&gt;
|-&lt;br /&gt;
| '''#openstack-containers''' || containers team discussion&lt;br /&gt;
|-&lt;br /&gt;
| '''#openstack-cue''' || Cue team discussion &lt;br /&gt;
|-&lt;br /&gt;
|'''#openstack-defcore''' || Defcore discussion channel&lt;br /&gt;
|-&lt;br /&gt;
|'''#openstack-dev''' || general and cross-project development discussion&lt;br /&gt;
|-&lt;br /&gt;
|'''#openstack-dns''' || Designate DNS team discussions&lt;br /&gt;
|-&lt;br /&gt;
|'''#openstack-doc''' || documentation team discussion&lt;br /&gt;
|-&lt;br /&gt;
|'''#openstack-fr''' || general discussion, support in French&lt;br /&gt;
|-&lt;br /&gt;
|'''#openstack-fwaas''' || Firewall as a Service discussions &lt;br /&gt;
|-&lt;br /&gt;
|'''#openstack-gbp''' || Group Based Policy discussions&lt;br /&gt;
|-&lt;br /&gt;
|'''#openstack-glance''' || glance team discussions&lt;br /&gt;
|-&lt;br /&gt;
|'''#openstack-gsoc''' || google summer of code discussions&lt;br /&gt;
|-&lt;br /&gt;
|'''#openstack-horizon''' || horizon team discussions&lt;br /&gt;
|-&lt;br /&gt;
|'''#openstack-hyper-v''' || Microsoft Windows guests and hypervisor discussion&lt;br /&gt;
|-&lt;br /&gt;
|'''#openstack-infra''' || developer community infrastructure, continuous integration testing&lt;br /&gt;
|-&lt;br /&gt;
|'''#openstack-ironic''' || ironic &amp;amp; bare metal discussions&lt;br /&gt;
|-&lt;br /&gt;
|'''#openstack-keystone''' || keystone team discussions&lt;br /&gt;
|-&lt;br /&gt;
|'''#openstack-ko''' || general discussion, support in Korean&lt;br /&gt;
|-&lt;br /&gt;
|'''#openstack-latinamerica''' || OpenStack Latin America (Spanish)&lt;br /&gt;
|-&lt;br /&gt;
|'''#openstack-lbaas''' || Neutron LBaaS and Project Octavia discussions&lt;br /&gt;
|-&lt;br /&gt;
|'''#openstack-manila''' || shared / distributed file system service team discussions&lt;br /&gt;
|-&lt;br /&gt;
|'''#openstack-marconi''' || queue/messaging marconi team discussions&lt;br /&gt;
|-&lt;br /&gt;
|'''#openstack-meeting''' || team meetings&lt;br /&gt;
|-&lt;br /&gt;
|'''#openstack-meeting-alt''' || team meetings, alternate channel&lt;br /&gt;
|-&lt;br /&gt;
|'''#openstack-meeting-3''' || team meetings, another alternate channel&lt;br /&gt;
|-&lt;br /&gt;
|'''#openstack-meeting-4''' || team meetings, another alternate channel&lt;br /&gt;
|-&lt;br /&gt;
|'''#openstack-mistral''' || Mistral Workflow Service for OpenStack&lt;br /&gt;
|-&lt;br /&gt;
|'''#openstack-neutron''' || neutron team discussions&lt;br /&gt;
|-&lt;br /&gt;
|'''#openstack-nfv''' || [[Teams/NFV|NFV]] team discussions&lt;br /&gt;
|-&lt;br /&gt;
|'''#openstack-nova''' || nova team discussions&lt;br /&gt;
|-&lt;br /&gt;
|'''#openstack-operators''' || OpenStack Operators discussion channel&lt;br /&gt;
|-&lt;br /&gt;
|'''#openstack-opw''' || GNOME OPW mentor, intern and supporter discussions&lt;br /&gt;
|-&lt;br /&gt;
|'''#openstack-oslo''' || [https://wiki.openstack.org/wiki/Oslo Oslo] development discussion&lt;br /&gt;
|-&lt;br /&gt;
| '''#openstack-qa''' || QA team discussion&lt;br /&gt;
|-&lt;br /&gt;
|'''#openstack-rally''' || [https://wiki.openstack.org/wiki/Rally Rally] measure performance of your cloud&lt;br /&gt;
|-&lt;br /&gt;
|'''#openstack-rating''' || Rating team discussions&lt;br /&gt;
|-&lt;br /&gt;
|'''#openstack-relmgr-office''' || Release managers office hours channel&lt;br /&gt;
|-&lt;br /&gt;
|'''#openstack-sahara''' || [https://wiki.openstack.org/wiki/Sahara Sahara] team discussions&lt;br /&gt;
|-&lt;br /&gt;
|'''#openstack-sdks''' || Development of SDKs to work with OpenStack and the unified OpenStack command line tool&lt;br /&gt;
|-&lt;br /&gt;
|'''#openstack-security''' || General discussion about OpenStack security and open channel for the OpenStack Security Group (OSSG)&lt;br /&gt;
|-&lt;br /&gt;
|'''#openstack-stable''' || stable branch management and packaging discussions&lt;br /&gt;
|-&lt;br /&gt;
|'''#openstack-state-management''' || [https://wiki.openstack.org/wiki/TaskFlow TaskFlow] and state-management development discussion&lt;br /&gt;
|-&lt;br /&gt;
|'''#openstack-swift''' || swift team discussions&lt;br /&gt;
|-&lt;br /&gt;
| '''#openstack-translation''' || translation groups discussion&lt;br /&gt;
|-&lt;br /&gt;
|'''#openstack-trove''' || trove database team discussions&lt;br /&gt;
|-&lt;br /&gt;
|'''#openstack-tw''' || general discussion, support in Taiwan&lt;br /&gt;
|-&lt;br /&gt;
| '''#openstack-ux''' || discussion channel for user experience&lt;br /&gt;
|-&lt;br /&gt;
|'''#openstack-vmware''' || The VMwareAPI team discussion channel&lt;br /&gt;
|-&lt;br /&gt;
|'''#congress''' || Congress policy developer discussion channel&lt;br /&gt;
|-&lt;br /&gt;
|'''#heat''' || Heat developer discussion channel&lt;br /&gt;
|-&lt;br /&gt;
|'''#magnetodb''' || Key-Value storage for OpenStack&lt;br /&gt;
|-&lt;br /&gt;
|'''#murano''' || Murano team discussions&lt;br /&gt;
|-&lt;br /&gt;
|'''#nova-docker''' || Nova Docker team discussions&lt;br /&gt;
|-&lt;br /&gt;
|'''#refstack''' || RefStack&lt;br /&gt;
|-&lt;br /&gt;
|'''#storyboard''' || StoryBoard team discussions&lt;br /&gt;
|-&lt;br /&gt;
|'''#tripleo''' || TripleO team discussions&lt;br /&gt;
|-&lt;br /&gt;
|'''#openstack-ansible''' || Openstack ansible deployments discussions&lt;br /&gt;
|-}&lt;br /&gt;
&lt;br /&gt;
[[Category:Connect]]&lt;/div&gt;</summary>
		<author><name>Vipuls</name></author>	</entry>

	<entry>
		<id>https://wiki.openstack.org/w/index.php?title=Design_Summit/Liberty/Etherpads&amp;diff=81620</id>
		<title>Design Summit/Liberty/Etherpads</title>
		<link rel="alternate" type="text/html" href="https://wiki.openstack.org/w/index.php?title=Design_Summit/Liberty/Etherpads&amp;diff=81620"/>
				<updated>2015-05-21T22:19:21Z</updated>
		
		<summary type="html">&lt;p&gt;Vipuls: /* Akanda */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Summit]]&lt;br /&gt;
[[Category:Liberty]]&lt;br /&gt;
[[Category:Etherpad]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;column-count:3;-moz-column-count:3;-webkit-column-count:3&amp;quot;&amp;gt;&lt;br /&gt;
__TOC__&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
==Cross-Project workshops==&lt;br /&gt;
Tuesday:&lt;br /&gt;
&lt;br /&gt;
* 11:15 - 11:55&lt;br /&gt;
** [https://etherpad.openstack.org/p/liberty-cross-project-python3 Moving apps to Python 3]&lt;br /&gt;
** [https://etherpad.openstack.org/p/liberty-cross-project-user-notifications Async status updates]&lt;br /&gt;
* 12:05 - 12:45&lt;br /&gt;
** [https://etherpad.openstack.org/p/liberty-crossproject-ux Improving UX across all projects]&lt;br /&gt;
** [https://etherpad.openstack.org/p/liberty-functional-testing-show-tell Functional Testing Show &amp;amp; Tell]&lt;br /&gt;
* 2:00 - 2:40&lt;br /&gt;
** [https://etherpad.openstack.org/p/sdk-cross-project-vancouver OpenStack SDK]&lt;br /&gt;
** [https://etherpad.openstack.org/p/modern-javascript-vancouver-2015 Modern JavaScript]&lt;br /&gt;
* 2:50 - 3:30&lt;br /&gt;
** [https://etherpad.openstack.org/p/liberty-cross-project-in-team-scaling In-team scaling]&lt;br /&gt;
** [https://etherpad.openstack.org/p/service-catalog-cross-project-vancouver Service Catalog Standardization]&lt;br /&gt;
* 3:40 - 4:20&lt;br /&gt;
** [https://etherpad.openstack.org/p/liberty-cross-project-api-wg API Working Group]&lt;br /&gt;
** [https://etherpad.openstack.org/p/liberty-neutron-gaps-concerns Towards one Network Stack: Part 1 - Neutron Gaps and Concerns]&lt;br /&gt;
** [https://etherpad.openstack.org/p/liberty-xproject-scheduler Cross project scheduling APIs (Rm 221)]&lt;br /&gt;
* 4:40 - 5:20&lt;br /&gt;
** [https://etherpad.openstack.org/p/liberty-cross-project-release-models OpenStack release model(s)]&lt;br /&gt;
** [https://etherpad.openstack.org/p/liberty-cross-project-unified-policy Unified Policy File]&lt;br /&gt;
* 5:30 - 6:10&lt;br /&gt;
** [https://etherpad.openstack.org/p/Cross-project_workshop_Documentation OpenStack Documentation]&lt;br /&gt;
** [https://etherpad.openstack.org/p/liberty-cross-project-managing-concurrency Managing concurrency]&lt;br /&gt;
&lt;br /&gt;
==Barbican==&lt;br /&gt;
* https://etherpad.openstack.org/p/barbican-L-design-sessions&lt;br /&gt;
&lt;br /&gt;
==Ceilometer==&lt;br /&gt;
wednesday:&lt;br /&gt;
* 0900 - 0940: [https://etherpad.openstack.org/p/ceilo-multi-identity componentisation / multi identity]&lt;br /&gt;
* 0950 - 1030: [https://etherpad.openstack.org/p/event_alarm event alarms]&lt;br /&gt;
* 1100 - 1140: [https://etherpad.openstack.org/p/liberty-ceilometer-pipeline-config pipeline configuration]&lt;br /&gt;
* 1150 - 1230: [https://etherpad.openstack.org/p/ceilo-declarative-notifications declarative notification meters]&lt;br /&gt;
* 1440 - 1520: [https://etherpad.openstack.org/p/YVR-ops-ceilometer ops followup]&lt;br /&gt;
* 1530 - 1610: [https://etherpad.openstack.org/p/ceilo-multi-identity componentization carry over]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br/&amp;gt;thursday:&lt;br /&gt;
* 0900 - 0940: [https://etherpad.openstack.org/p/liberty-ceilometer-meter-deprecation meter deprecation]&lt;br /&gt;
* 0950 - 1030: [https://etherpad.openstack.org/p/liberty-ceilometer-meter-event samples/events integration]&lt;br /&gt;
* 1100 - 1140: [https://etherpad.openstack.org/p/liberty-ceilometer-versioned-objects versioned objects]&lt;br /&gt;
* 1150 - 1230: ops followup&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br/&amp;gt;friday:&lt;br /&gt;
* 0900 - 1200: [https://etherpad.openstack.org/p/liberty-ceilometer-contributors-meetup contributor meetup]&lt;br /&gt;
&lt;br /&gt;
==Cinder==&lt;br /&gt;
&lt;br /&gt;
* Tuesday • 2:00pm - 2:40pm https://etherpad.openstack.org/p/YVR-ops-cinder&lt;br /&gt;
* Wednesday • 11:50am - 12:30pm https://etherpad.openstack.org/p/cinder-live-instance-migration-with-volume&lt;br /&gt;
* Wednesday • 1:50pm - 2:30pm https://etherpad.openstack.org/p/collect-display-storage-backend-status&lt;br /&gt;
* Wednesday • 2:40pm - 3:20pm https://etherpad.openstack.org/p/cinder-standard-capabilities&lt;br /&gt;
* Wednesday • 3:30pm - 4:10pm https://etherpad.openstack.org/p/YVR-cinder-nested-quota&lt;br /&gt;
* Wednesday • 4:30pm - 5:10pm https://etherpad.openstack.org/p/YVR-public-and-shared-snapshots&lt;br /&gt;
* Wednesday • 5:20pm - 6:00pm https://etherpad.openstack.org/p/liberty-cinder-ironic-integration&lt;br /&gt;
* Thursday • 9:00am - 9:40am https://etherpad.openstack.org/p/volume-migration-improvement&lt;br /&gt;
* Thursday • 9:50am - 10:50am https://etherpad.openstack.org/p/cinder-scaling-backup-service&lt;br /&gt;
* Thursday • 11:00am - 11:40am https://etherpad.openstack.org/p/cinder-active-active-vol-service-issues&lt;br /&gt;
* Thursday • 11:50am - 12:30pm https://etherpad.openstack.org/p/cinder-not-bypass-scheduler &amp;amp; https://etherpad.openstack.org/p/cinder-auto-sync-storage-service-catalog&lt;br /&gt;
* Thursday • 13:30pm - 14:10pm https://etherpad.openstack.org/p/YVR-cinder-tasks-resumptions &amp;amp; https://etherpad.openstack.org/p/cinder-taskflow&lt;br /&gt;
* Thursday • 2:20pm - 3:00pm https://etherpad.openstack.org/p/cinder-rolling-upgrade&lt;br /&gt;
* Thursday • 3:10pm - 3:50pm https://etherpad.openstack.org/p/replication_v2_liberty_discussion&lt;br /&gt;
&lt;br /&gt;
==Designate==&lt;br /&gt;
==Documentation==&lt;br /&gt;
&lt;br /&gt;
* Tuesday cross-project • 5:30pm - 6:10pm https://etherpad.openstack.org/p/Cross-project_workshop_Documentation&lt;br /&gt;
* Wednesday • 1:50pm - 2:30pm https://etherpad.openstack.org/p/Documentation__RST_Migration&lt;br /&gt;
* Wednesday • 3:30pm - 4:10pm https://etherpad.openstack.org/p/Documentation__Ops_Work_Session&lt;br /&gt;
* Thursday • 11:50am - 12:30pm https://etherpad.openstack.org/p/Documentation__API_Work_Session&lt;br /&gt;
* Thursday • 1:30pm - 2:10pm https://etherpad.openstack.org/p/Documentation__Blueprint_Work_Session&lt;br /&gt;
* Thursday • 2:20pm - 3:00pm https://etherpad.openstack.org/p/Documentation__Team_Structure_1&lt;br /&gt;
* Thursday • 3:10pm - 3:50pm https://etherpad.openstack.org/p/Documentation__Team_Structure_1&lt;br /&gt;
* Thursday • 4:10pm - 4:50pm https://etherpad.openstack.org/p/Documentation__Info_Architecture_1&lt;br /&gt;
* Thursday • 5:00pm - 5:40pm https://etherpad.openstack.org/p/Documentation__Info_Architecture_2&lt;br /&gt;
* Friday • 9:00am - 12:20pm https://etherpad.openstack.org/p/Documentation__Contributors_Meetup&lt;br /&gt;
&lt;br /&gt;
==Glance==&lt;br /&gt;
'''Wed'''&lt;br /&gt;
* 11:00 - 11:40: [https://etherpad.openstack.org/p/liberty-caching (W) Object Downloads: Cache Misses &amp;amp; Pollution]&lt;br /&gt;
* 11:50 - 12:30: [https://etherpad.openstack.org/p/liberty-glance-reliable-upload (W) Upload Recovery]&lt;br /&gt;
* 13:50 - 14:30: [https://etherpad.openstack.org/p/liberty-glance-hierarchical-multitenancy (W) Hierarchical Multi-tenancy]&lt;br /&gt;
* 14:40 - 15:20: [https://etherpad.openstack.org/p/liberty-what-is-glance (F) Glance: The direction of the Glance project]&lt;br /&gt;
* 15:30 - 16:10: [https://etherpad.openstack.org/p/catalog-index-service-liberty (F) Glance: Catalog Index Service - Future and Scope]&lt;br /&gt;
* 16:40 - 17:10: [https://etherpad.openstack.org/p/liberty-glance-image-signing-and-encryption (F) Glance: Image Signing and Encryption]&lt;br /&gt;
* 17:20 - 18:00: [https://etherpad.openstack.org/p/liberty-glance-intercloud-image-sharing (F) Glance: Intercloud image sharing]&lt;br /&gt;
&lt;br /&gt;
'''Thur'''&lt;br /&gt;
* 09:00 - 09:40: [https://etherpad.openstack.org/p/OVF-support-in-glance (W) OVF Support in Glance]&lt;br /&gt;
* 09:50 - 10:30: [https://etherpad.openstack.org/p/liberty-glance-nosql-backend (W) NoSql backend for Glance]&lt;br /&gt;
* 11:00 - 11:40: [https://etherpad.openstack.org/p/liberty-glance-store-CI (W) glance_store CI]&lt;br /&gt;
* 11:50 - 12:30: [https://etherpad.openstack.org/p/liberty-glance-ops-feedback (W) Ops feedback]&lt;br /&gt;
* 13:30 - 14:10: [https://etherpad.openstack.org/p/liberty-glance-open-discussion (W) Open discussion]&lt;br /&gt;
&lt;br /&gt;
==Heat==&lt;br /&gt;
'''Wed'''&lt;br /&gt;
* 09:00 - 09:40: [https://etherpad.openstack.org/p/YVR-heat-liberty-convergence-1 (W) Finishing off Convergence phase 1]&lt;br /&gt;
* 09:50 - 10:30: [https://etherpad.openstack.org/p/YVR-heat-liberty-convergence-2 (W) Convergence phase 2 planning]&lt;br /&gt;
* 11:00 - 11:40: [https://etherpad.openstack.org/p/YVR-heat-liberty-testing (W) Functional and integration testing, identify gaps and suggest improvements]&lt;br /&gt;
* 11:50 - 12:30: [https://etherpad.openstack.org/p/YVR-heat-liberty-lifecycle-ops (W) Better support for lifecycle operations on (tripleo) heat stacks (upgrades etc)]&lt;br /&gt;
* 13:50 - 14:30: [https://etherpad.openstack.org/p/YVR-heat-liberty-client-usability (F) Heat client usability]&lt;br /&gt;
* 14:40 - 15:20: [https://etherpad.openstack.org/p/YVR-heat-liberty-template-format (F) Heat template format improvements]&lt;br /&gt;
* 15:30 - 16:10: [https://etherpad.openstack.org/p/YVR-heat-liberty-rest-api (F) REST API design and roadmap]&lt;br /&gt;
* 16:30 - 17:10: [https://etherpad.openstack.org/p/YVR-heat-liberty-senlin-autoscaling (F) Senlin Autoscaling Project - Deep Dive]&lt;br /&gt;
* 17:20 - 18:00: [https://etherpad.openstack.org/p/YVR-heat-liberty-containers (F) Orchestrating containers with Heat]&lt;br /&gt;
&lt;br /&gt;
'''Thu'''&lt;br /&gt;
* 09:00 - 09:40: [https://etherpad.openstack.org/p/YVR-heat-liberty-alembic (W) Migrating from sqlalchemy-migrations to alembic]&lt;br /&gt;
* 09:50 - 10:30: [https://etherpad.openstack.org/p/YVR-heat-liberty-versioned-objects (W) Future of Versioned objects in heat]&lt;br /&gt;
* 11:00 - 11:40: [https://etherpad.openstack.org/p/YVR-heat-liberty-autoscaling (W) Autoscaling improvements]&lt;br /&gt;
* 11:50 - 12:30: [https://etherpad.openstack.org/p/YVR-heat-liberty-deprecation (W) Our deprecation process]&lt;br /&gt;
* 16:10 - 16:50: [https://etherpad.openstack.org/p/YVR-heat-liberty-contrib-plugins (W) Moving most contrib plugins in-tree]&lt;br /&gt;
* 17:00 - 17:40: [https://etherpad.openstack.org/p/YVR-heat-liberty-resource-registering (W) Conditional registering of resources]&lt;br /&gt;
&lt;br /&gt;
'''Fri'''&lt;br /&gt;
* 09:00-12:20: [https://etherpad.openstack.org/p/YVR-heat-contributor-meetup Contributor Meetup]&lt;br /&gt;
&lt;br /&gt;
==Horizon==&lt;br /&gt;
*  Wed 9:00 Plugins https://etherpad.openstack.org/p/YVR-horizon-plugins&lt;br /&gt;
*  Wed 9:50 Merlin and Curvature https://etherpad.openstack.org/p/YVR-horizon-new-tech&lt;br /&gt;
*  Wed 13:50 Keystone and session storage https://etherpad.openstack.org/p/YVR-horizon-keystone&lt;br /&gt;
*  Thurs 9:00 Angular Planning https://etherpad.openstack.org/p/YVR-horizon-angular-planning&lt;br /&gt;
*  Thurs 9:50 Angular Specifics https://etherpad.openstack.org/p/YVR-horizon-angular-topics&lt;br /&gt;
*  Thurs 11:00 User Experience https://etherpad.openstack.org/p/YVR-horizon-ux&lt;br /&gt;
*  Thurs 11:50 Performance, Scalability, Elastic Search https://etherpad.openstack.org/p/YVR-horizon-performance&lt;br /&gt;
*  Thurs 13:30 Operator Feedback https://etherpad.openstack.org/p/YVR-horizon-ops-feedback&lt;br /&gt;
*  Thurs 14:20 Plan to address Operator Feedback https://etherpad.openstack.org/p/YVR-horizon-addressing-ops-feedback&lt;br /&gt;
*  Thurs 15:10 Messaging (better error messages to users AND websockets)     https://etherpad.openstack.org/p/YVR-horizon-liberty-messaging&lt;br /&gt;
*  Thurs 17:00 Liberty Priorities https://etherpad.openstack.org/p/YVR-horizon-liberty-priorities&lt;br /&gt;
*  Fri 9:00 Contributor Meetup #1 https://etherpad.openstack.org/p/YVR-horizon-collab-meetup&lt;br /&gt;
*  Fri 1:20 Contributor Meetup #2 https://etherpad.openstack.org/p/YVR-horizon-collab-meetup&lt;br /&gt;
&lt;br /&gt;
==Infrastructure==&lt;br /&gt;
* Wed 09:00 - 09:40: [https://etherpad.openstack.org/p/YVR-infra-irc-meetings (W) Work session on Gerrit-driven IRC meetings]&lt;br /&gt;
* Wed 09:50 - 10:30: [https://etherpad.openstack.org/p/YVR-infra-activity-tracking (W) Work session on activity tracking]&lt;br /&gt;
* Thu 09:00 - 09:40: [https://etherpad.openstack.org/p/YVR-infra-zuulv3 (F) Zuul v3]&lt;br /&gt;
* Thu 09:50 - 10:30: [https://etherpad.openstack.org/p/YVR-infra-task-tracking (F) Task tracking]&lt;br /&gt;
* Thu 11:00 - 11:40: [https://etherpad.openstack.org/p/YVR-infra-cloud (F) Infra-Cloud]&lt;br /&gt;
* Thu 11:50 - 12:30: [https://etherpad.openstack.org/p/kilo-infra-puppet-testing (F) Puppet Testing]&lt;br /&gt;
* Thu 15:10 - 16:50: [https://etherpad.openstack.org/p/YVR-infra-puppet-openstackci (W) Work session on puppet-openstackci]&lt;br /&gt;
&lt;br /&gt;
==Ironic==&lt;br /&gt;
https://etherpad.openstack.org/p/liberty-ironic-design-summit-ideas&lt;br /&gt;
&lt;br /&gt;
==Keystone==&lt;br /&gt;
==Manila==&lt;br /&gt;
'''Wed'''&lt;br /&gt;
* 09:00 - 09:40: [https://etherpad.openstack.org/p/YVR-manila-liberty-mount-automation (F) Mount automation]&lt;br /&gt;
* 09:50 - 10:30: [https://etherpad.openstack.org/p/YVR-manila-liberty-share-migration (F) Share migration]&lt;br /&gt;
* 11:00 - 11:40: [https://etherpad.openstack.org/p/YVR-manila-liberty-share-replication (F) Share replication]&lt;br /&gt;
* 16:30 - 17:10: [https://etherpad.openstack.org/p/YVR-manila-liberty-versioned-objects-and-apis (W) Versioned objects and APIs]&lt;br /&gt;
* 17:20 - 18:00: [https://etherpad.openstack.org/p/YVR-manila-liberty-fault-indication (W) Fault indication]&lt;br /&gt;
&lt;br /&gt;
'''Thu'''&lt;br /&gt;
* 16:10 - 16:50: [https://etherpad.openstack.org/p/YVR-manila-liberty-thin-provisioning (W) Thin provisioning and consistency groups]&lt;br /&gt;
* 17:00 - 17:40: [https://etherpad.openstack.org/p/YVR-manila-service-image (W) Snapshot-share relationship and Manila service image]&lt;br /&gt;
&lt;br /&gt;
==Neutron==&lt;br /&gt;
'''Mon'''&lt;br /&gt;
* 20:00 - 22:30: [http://lists.openstack.org/pipermail/openstack-dev/2015-May/064323.html Neutron Social]&lt;br /&gt;
&lt;br /&gt;
'''Wed'''&lt;br /&gt;
* 09:00 - 09:40: [https://etherpad.openstack.org/p/YVR-neutron-liberty-development Neutron Liberty Development]&lt;br /&gt;
* 09:50 - 10:30: [https://etherpad.openstack.org/p/YVR-neutron-use-case-discussion Neutron Use Case Discussion]&lt;br /&gt;
* 11:00 - 11:40: [https://etherpad.openstack.org/p/YVR-neutron-vlan-trunk VLAN Aware VMs]&lt;br /&gt;
* 11:50 - 12:30: [https://etherpad.openstack.org/p/YVR-neutron-lightning-talks Neutron Lightning Talks]&lt;br /&gt;
* 13:50 - 14:30: [https://etherpad.openstack.org/p/YVR-neutron-octavia Octavia]&lt;br /&gt;
* 14:40 - 15:20: [https://etherpad.openstack.org/p/YVR-neutron-ironic Ironic and Neutron integration]&lt;br /&gt;
* 15:30 - 16:10: [https://etherpad.openstack.org/p/YVR-neutron-ovn OVN]&lt;br /&gt;
* 16:30 - 17:10: [https://etherpad.openstack.org/p/YVR-neutron-opendaylight OpenDaylight]&lt;br /&gt;
* 17:20 - 18:00: [https://etherpad.openstack.org/p/YVR-neutron-get-me-a-network Get Me a Network!]&lt;br /&gt;
&lt;br /&gt;
'''Thu'''&lt;br /&gt;
* 09:00 - 09:40:  [https://etherpad.openstack.org/p/YVR-neutron-lbaas-use-cases Neutron LBaaS Use Cases]&lt;br /&gt;
* 09:50 - 10:30:  [https://etherpad.openstack.org/p/YVR-neutron-l3 Neutron L3]&lt;br /&gt;
* 11:00 - 11:40: [https://etherpad.openstack.org/p/YVR-neutron-qos QoS]&lt;br /&gt;
* 11:50 - 12:30: [https://etherpad.openstack.org/p/YVR-neutron-third-party-ci-liberty Third Party CI in Liberty and Beyond]&lt;br /&gt;
* 13:30 - 14:10: [https://etherpad.openstack.org/p/YVR-neutron-testing-in-liberty Testing In Liberty]&lt;br /&gt;
* 14:20 - 15:00:&lt;br /&gt;
** [https://etherpad.openstack.org/p/YVR-neutron-RBAC RBAC shared network]&lt;br /&gt;
** [https://etherpad.openstack.org/p/YVR-neutron-port-status Neutron Port Status]&lt;br /&gt;
* 15:10 - 15:50: [https://etherpad.openstack.org/p/YVR-neutron-sg-fwaas-future-direction SG and FWaaS Future Directions]&lt;br /&gt;
* 16:10 - 16:50: [https://etherpad.openstack.org/p/YVR-neutron-nfv-enhancements Neutron NFV Enhancements]&lt;br /&gt;
&lt;br /&gt;
'''Fri'''&lt;br /&gt;
* 09:00-12:20: [https://etherpad.openstack.org/p/YVR-neutron-contributor-meetup Contributor Meetup]&lt;br /&gt;
&lt;br /&gt;
==Nova==&lt;br /&gt;
&lt;br /&gt;
'''Wednesday:'''&lt;br /&gt;
&lt;br /&gt;
* 09:00 - 09:40: [https://etherpad.openstack.org/p/YVR-nova-scheduler-in-liberty Scheduler in Liberty]&lt;br /&gt;
* 09:50 - 10:30: [https://etherpad.openstack.org/p/YVR-nova-scalling-out-scheduler-for-cells Scaling out scheduler for cells ]&lt;br /&gt;
&lt;br /&gt;
* 11:00 - 11:40: [https://etherpad.openstack.org/p/YVR-nova-cells-v2 Cells v2]&lt;br /&gt;
* 11:50 - 12:30: [https://etherpad.openstack.org/p/YVR-nova-resource-tracker Resource Tracker, Clustered Hypervisors and NFV]&lt;br /&gt;
&lt;br /&gt;
* 13:50 - 14:30: [https://etherpad.openstack.org/p/YVR-nova-spec-blueprint-unconference Nova Spec/Blueprint Unconference]&lt;br /&gt;
* 14:40 - 15:20: [https://etherpad.openstack.org/p/YVR-nova-database-internals Database (part 1)]&lt;br /&gt;
* 15:30 - 16:10: [https://etherpad.openstack.org/p/YVR-nova-functional-testing-feature-classification Functional Testing and Feature Classification]&lt;br /&gt;
&lt;br /&gt;
* 16:30 - 17:10: [https://etherpad.openstack.org/p/YVR-nova-instance-ha-evacuate-resize Dealing with compute host failure: Instance HA, Evacuate, Resize]&lt;br /&gt;
* 17:20 - 18:00: [https://etherpad.openstack.org/p/YVR-nova-api-2.1-in-liberty Nova API v2.1 in Liberty]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
'''Thursday:'''&lt;br /&gt;
&lt;br /&gt;
* 09:00 - 09:40: [https://etherpad.openstack.org/p/YVR-nova-api-2.0-3rd-party Future of Nova API v2.0 and 3rd Party APIs]&lt;br /&gt;
* 09:50 - 10:30: [https://etherpad.openstack.org/p/YVR-nova-quotas-and-database Quotas and Database (part 2)]&lt;br /&gt;
&lt;br /&gt;
* 11:00 - 11:40: [https://etherpad.openstack.org/p/YVR-nova-flavors-and-image-properties Flavors and Image Properties]&lt;br /&gt;
* 11:50 - 12:30: [https://etherpad.openstack.org/p/YVR-nova-error-handling Error Handling]&lt;br /&gt;
&lt;br /&gt;
* 13:30 - 14:10: [https://etherpad.openstack.org/p/YVR-nova-spec-blueprint-unconference Nova Spec/Blueprint Unconference]&lt;br /&gt;
* 14:20 - 15:00: [https://etherpad.openstack.org/p/YVR-nova-liberty-priorities Liberty Priorities (part 1)]&lt;br /&gt;
* 15:10 - 15:50: [https://etherpad.openstack.org/p/YVR-nova-liberty-priorities Liberty Priorities (part 2)]&lt;br /&gt;
&lt;br /&gt;
* 16:10 - 16:50: [https://etherpad.openstack.org/p/YVR-nova-liberty-process Liberty Process and Scaling out Reviews]&lt;br /&gt;
* 17:00 - 17:40: [https://etherpad.openstack.org/p/YVR-nova-network Future of Nova's networking and nova-network]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
'''Friday:'''&lt;br /&gt;
&lt;br /&gt;
* 09:00 - 12:20 and 13:20 - 16:40: [https://etherpad.openstack.org/p/YVR-nova-contributor-meetup Nova Contributor Meetup]&lt;br /&gt;
&lt;br /&gt;
==OpenStackClient==&lt;br /&gt;
&lt;br /&gt;
'''Thursday:'''&lt;br /&gt;
&lt;br /&gt;
* 11:50 - 12:30:  [https://etherpad.openstack.org/p/YVR-osc-roadmap (F) Roadmap and Priorities]&lt;br /&gt;
* 14:20 - 15:00:  [https://etherpad.openstack.org/p/YVR-osc-work-session (W) Working session]&lt;br /&gt;
&lt;br /&gt;
==Oslo==&lt;br /&gt;
&lt;br /&gt;
'''Wednesday:'''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* 09:00 - 09:40: [https://etherpad.openstack.org/p/YVR-oslo-versioned-objects-intro (F) Get to know your objects and learn how to version them (an introduction to oslo.versionedobjects)!]&lt;br /&gt;
* 09:50 - 10:30: [https://etherpad.openstack.org/p/YVR-oslo-taskflow-plans (F) Give me liberty, or give me taskflow (come learn about taskflow liberty plans)!]&lt;br /&gt;
* 11:00 - 11:40: [https://etherpad.openstack.org/p/YVR-oslo-rootwrap-plans (W) Give me liberty, or give me wraps (the future of oslo.rootwrap) ]&lt;br /&gt;
* 11:50 - 12:30: [https://etherpad.openstack.org/p/YVR-oslo-functional-testing (W) The cost of liberty is less than the price of functional testing]&lt;br /&gt;
* 13:50 - 14:30: [https://etherpad.openstack.org/p/YVR-oslo-graduation-schedule (W) Give me more oslo in liberty or else! Schedule &amp;amp; new libraries]&lt;br /&gt;
* 14:40 - 15:20: [https://etherpad.openstack.org/p/YVR-oslo-messaging-zmq-status (F) State of zmq in oslo.messaging]&lt;br /&gt;
* 15:30 - 16:10: [https://etherpad.openstack.org/p/YVR-oslo-optional-dependencies (W) Emancipate/liberate your optional dependencies - Optional Dependencies]&lt;br /&gt;
* 16:30 - 17:10: [https://etherpad.openstack.org/p/YVR-oslo-release-process-review (W) Reviewing our release processes]&lt;br /&gt;
* 17:20 - 18:00: [https://etherpad.openstack.org/p/YVR-oslo-config-filter (W) Configuration Filters in oslo.config]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
'''Thursday:'''&lt;br /&gt;
&lt;br /&gt;
* 09:50 - 10:30: [https://etherpad.openstack.org/p/YVR-oslo-strategy-discussion (F) The oslo liberty proclamation (and associated strategy discussion)]&lt;br /&gt;
* 11:00 - 11:40: [https://etherpad.openstack.org/p/YVR-oslo-config-plans (F) Enfranchise oslo.config, let's discuss alternative data sources in oslo.config]&lt;br /&gt;
* 11:50 - 12:30: [https://etherpad.openstack.org/p/YVR-oslo-log-plans (W) Life, Liberty, and the pursuit of oslo.log changes]&lt;br /&gt;
* 13:30 - 14:10: [https://etherpad.openstack.org/p/YVR-oslo-versioned-objects-deep-dive (W) Deep dive on oslo.versionedobjects, bring your wet suits.]&lt;br /&gt;
* 14:20 - 15:00: [https://etherpad.openstack.org/p/YVR-oslo-db-plans (F) For a people who are free, and who mean to remain so, a well organized and armed 'oslo.db' is their best security]&lt;br /&gt;
* 15:10 - 15:50: [https://etherpad.openstack.org/p/YVR-oslo-asyncio (F) Event loops, coroutines, yield from, futures, a discussion on asyncio (and triollus?)]&lt;br /&gt;
* 16:10 - 16:50: [https://etherpad.openstack.org/p/YVR-oslo-messaging-plans (F) Ping pong, oslo.messaging plans for liberty.]&lt;br /&gt;
* 17:00 - 17:40: [https://etherpad.openstack.org/p/YVR-oslo-tech-debt-deprecation (F) How to clean up your tech-debt; let's discuss best practices on how to deprecate things in oslo libraries]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==QA==&lt;br /&gt;
&lt;br /&gt;
'''Wed'''&lt;br /&gt;
&lt;br /&gt;
* 1150-1230 - [https://etherpad.openstack.org/p/YVR-QA-testing-beyond-the-gate Testing beyond the gate]&lt;br /&gt;
* 1350-1430 - [https://etherpad.openstack.org/p/YVR-QA-Devstack-Roadmap Devstack Roadmap]&lt;br /&gt;
* 1440-1520 - [https://etherpad.openstack.org/p/YVR-QA-Tempest-service-clients Work Session: Tempest service clients]&lt;br /&gt;
* 1630-1710 - [https://etherpad.openstack.org/p/YVR-QA-in-the-big-tent QA in the Big Tent]&lt;br /&gt;
&lt;br /&gt;
'''Thurs.'''&lt;br /&gt;
* 0900-0940 - [https://etherpad.openstack.org/p/YVR-QA-idempotent-id Work Session: Idempotent ID]&lt;br /&gt;
* 1330-1410 - [https://etherpad.openstack.org/p/YVR-QA-Tempest-as-a-system-program Work Session: Tempest as System Program]&lt;br /&gt;
* 1420-1500 - [https://etherpad.openstack.org/p/YVR-QA-Tempest-CLI Work Session: Tempest CLI and Tempest Cleanup]&lt;br /&gt;
* 1610-1650 - [https://etherpad.openstack.org/p/YVR-QA-Tempest-Scope-Revisited Tempest Scope Revisited]&lt;br /&gt;
* 1700-1740 - [https://etherpad.openstack.org/p/YVR-QA-Liberty-Priorities Liberty Priorities]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Release Management==&lt;br /&gt;
* Wed 17:20-18:00: [https://etherpad.openstack.org/p/YVR-relmgt-stable-branch Stable branch]&lt;br /&gt;
* Thu 11:00-11:40 [https://etherpad.openstack.org/p/YVR-relmgt-library-releases Work session: Library releases]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Sahara==&lt;br /&gt;
&lt;br /&gt;
'''Wed'''&lt;br /&gt;
&lt;br /&gt;
* 11:00am (W) HA http://etherpad.openstack.org/p/sahara-liberty-ha&lt;br /&gt;
* 11:50am (W) API v2 https://etherpad.openstack.org/p/sahara-liberty-api-v2&lt;br /&gt;
&lt;br /&gt;
''Thu'''&lt;br /&gt;
&lt;br /&gt;
* 1:30pm (F) UI https://etherpad.openstack.org/p/sahara-liberty-ui&lt;br /&gt;
* 2:20pm (F) Security https://etherpad.openstack.org/p/sahara-liberty-security&lt;br /&gt;
* 3:10pm (W) EDP https://etherpad.openstack.org/p/sahara-liberty-edp&lt;br /&gt;
* 4:10pm (W) Resources Visibility/ACL https://etherpad.openstack.org/p/sahara-liberty-resources&lt;br /&gt;
* 5:00pm (W) Plugins https://etherpad.openstack.org/p/sahara-liberty-plugins&lt;br /&gt;
&lt;br /&gt;
''Fri'''&lt;br /&gt;
&lt;br /&gt;
* 9am - 4:40pm Meetup https://etherpad.openstack.org/p/sahara-liberty-meetup&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Security==&lt;br /&gt;
* Wed 13:50-14:30: [https://etherpad.openstack.org/p/YVR-security-vmt Vulnerability management]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Swift==&lt;br /&gt;
'''Wednesday:'''&lt;br /&gt;
* 9:00am - 9:40am: [https://etherpad.openstack.org/p/liberty-swift-large-containers Large containers (container sharding)]&lt;br /&gt;
* 9:50am - 10:30am: [https://etherpad.openstack.org/p/python-swiftclient-liberty-discussion python-swiftclient status and next steps]&lt;br /&gt;
* 11:00am - 11:40am [https://etherpad.openstack.org/p/liberty-swift-changing-policies Changing Policies]&lt;br /&gt;
* 1:50pm - 2:30pm [https://etherpad.openstack.org/p/liberty-swift-increase-part-power Increasing ring partition power]&lt;br /&gt;
* 3:30pm - 4:10pm [https://etherpad.openstack.org/p/liberty-swift-documentation Swift Documentation]&lt;br /&gt;
* 4:30pm - 5:10pm [https://etherpad.openstack.org/p/liberty-swift-softlayer Softlayer]&lt;br /&gt;
* 5:20pm - 6:00pm [https://etherpad.openstack.org/p/Liberty_Swift_Summit_Encryption Swift on-disk encryption]&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
'''Thursday:'''&lt;br /&gt;
* 9:00am - 9:40am: [https://etherpad.openstack.org/p/Liberty_Swift_Summit_Storlets Swift Storlets]&lt;br /&gt;
* 9:50am - 10:30am: [https://etherpad.openstack.org/p/liberty-swift-ops-feedback Ops Feedback Session]&lt;br /&gt;
* 11:00am - 11:40am: [https://etherpad.openstack.org/p/liberty-swift-tape-storage Tape Storage]&lt;br /&gt;
* 11:50am - 12:30pm: [https://etherpad.openstack.org/p/liberty-swift-hummingbird Hummingbird: Scaling Swift using Go]&lt;br /&gt;
* 1:30pm - 2:10pm: [https://etherpad.openstack.org/p/liberty-swift-ec-overview EC Overview]&lt;br /&gt;
* 2:20pm - 3:00pm: [https://etherpad.openstack.org/p/liberty-swift-metadata-search Metadata search/object update notification]&lt;br /&gt;
* 3:10pm - 3:50pm: [https://etherpad.openstack.org/p/liberty-swift-ec-follow-on-work EC follow on work]&lt;br /&gt;
* 4:10pm - 4:50pm: [https://etherpad.openstack.org/p/Liberty_Swift_Summit_Encryption_Working Encryption]&lt;br /&gt;
* 5:00pm - 5:40pm: [https://etherpad.openstack.org/p/liberty-swift-tiering Tiering]&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
'''Friday:'''&lt;br /&gt;
* All day: [https://etherpad.openstack.org/p/liberty-swift-contributors-meetup Contributors' Meetup]&lt;br /&gt;
&lt;br /&gt;
==TripleO==&lt;br /&gt;
'''Thursday:'''&lt;br /&gt;
* 1:30pm - 2:10pm: [https://etherpad.openstack.org/p/tripleo-liberty-tripleo-heat-templates  tripleo-heat-templates interfaces and containerization enablement]&lt;br /&gt;
* 2:20pm - 3:00pm: [https://etherpad.openstack.org/p/tripleo-dib-ci-production diskimage-builder functional testing, CI, and TripleO in production]&lt;br /&gt;
* 3:10pm - 3:50pm: [https://etherpad.openstack.org/p/tripleo-service-endpoints Work Session: Isolated network architecture]&lt;br /&gt;
* 5:00pm - 5:40pm: Work Session&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
'''Friday:'''&lt;br /&gt;
* 9:00am - 12:20pm: [https://etherpad.openstack.org/p/tripleo-liberty-proposed-sessions Contributor's Meetup]&lt;br /&gt;
* 1:20pm - 4:40pm: [https://etherpad.openstack.org/p/tripleo-liberty-proposed-sessions Contributor's Meetup]&lt;br /&gt;
&lt;br /&gt;
==Trove==&lt;br /&gt;
'''Wednesday:'''&lt;br /&gt;
* 2:40pm - 3:20pm: [https://etherpad.openstack.org/p/trove-liberty-extending-clusters Extending Cluster creation and actions for extensibility]&lt;br /&gt;
* 3:30pm - 4:10pm: [https://etherpad.openstack.org/p/trove-liberty-datastore-testing Testing Different Trove Datastores -- the path from experimental to stable]&lt;br /&gt;
*  4:30pm - 5:10pm [https://etherpad.openstack.org/p/trove-2015-vancouver-logging Show me the Logs -- Allowing Trove Users Access to Datastore Log files]&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
'''Thursday:'''&lt;br /&gt;
* 9:00am - 9:40am: [https://etherpad.openstack.org/p/trove-liberty-bp-update Work session - Blueprint and Spec Priorities for Liberty]&lt;br /&gt;
* 9:50am - 10:30am: [https://etherpad.openstack.org/p/trove-liberty-production-deploy  Work session - Deploying Trove in Production]&lt;br /&gt;
* 1:30pm - 2:10pm: [https://etherpad.openstack.org/p/trove-liberty-monitoring  Work session - Monitoring Trove Datastores]&lt;br /&gt;
* 2:20pm - 3:00pm: [https://etherpad.openstack.org/p/trove-liberty-openstack-integration Work session - Trove integration with other OpenStack components]&lt;br /&gt;
* 3:10pm - 3:50pm: [https://etherpad.openstack.org/p/trove-liberty-gaps-in-trove Work session - Gaps in Trove]&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
'''Friday:'''&lt;br /&gt;
* All day: [https://etherpad.openstack.org/p/trove-liberty-contributors-meetup Contributors' Meetup]&lt;br /&gt;
&lt;br /&gt;
==Zaqar==&lt;br /&gt;
&lt;br /&gt;
* Thursday, May 21 - 3.10pm to 3.50pm - Room 222 - [https://etherpad.openstack.org/p/zaqar-liberty-ops-friendly Zaqar needs to be OPs friendly]&lt;br /&gt;
* Thursday, May 21 - 4.10pm to 4.50pm - Room 222 - [https://etherpad.openstack.org/p/zaqar-liberty-testsuite Test suite refactor for Zaqar and Zaqarclient]&lt;br /&gt;
&lt;br /&gt;
==Murano==&lt;br /&gt;
'''Thu'''&lt;br /&gt;
&lt;br /&gt;
* 2:20pm (F) [https://etherpad.openstack.org/p/murano-liberty-now-n-future Murano: Now, Liberty and Future]&lt;br /&gt;
* 4:10pm (W) [https://etherpad.openstack.org/p/murano-liberty-work-session-1 Images &amp;amp; Murano]&lt;br /&gt;
* 5:00pm (W) [https://etherpad.openstack.org/p/murano-liberty-work-session-2 Authentication &amp;amp; Agent]&lt;br /&gt;
&lt;br /&gt;
'''Fri'''&lt;br /&gt;
&lt;br /&gt;
* 9am - 4:40pm [https://etherpad.openstack.org/p/murano-liberty-contributors-meetup Contributors Meetup]&lt;br /&gt;
&lt;br /&gt;
==Event intro/closure==&lt;br /&gt;
* Tue 11:15-11:55: [https://etherpad.openstack.org/p/YVR-design-summit-101 Design Summit 101]&lt;br /&gt;
* Fri 16:50-17:30: [https://etherpad.openstack.org/p/YVR-design-summit-feedback Design Summit feedback session]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Ops==&lt;br /&gt;
Tuesday:&lt;br /&gt;
* https://etherpad.openstack.org/p/YVR-ops-101&lt;br /&gt;
* https://etherpad.openstack.org/p/YVR-ops-federation&lt;br /&gt;
* https://etherpad.openstack.org/p/YVR-ops-rabbitmq&lt;br /&gt;
* https://etherpad.openstack.org/p/YVR-ops-logging&lt;br /&gt;
* https://etherpad.openstack.org/p/YVR-ops-arch-show-tell&lt;br /&gt;
* https://etherpad.openstack.org/p/YVR-ops-ceilometer&lt;br /&gt;
* https://etherpad.openstack.org/p/YVR-ops-billing&lt;br /&gt;
* https://etherpad.openstack.org/p/YVR-ops-cinder&lt;br /&gt;
* https://etherpad.openstack.org/p/YVR-ops-legacy-apps&lt;br /&gt;
* https://etherpad.openstack.org/p/YVR-ops-user-committee&lt;br /&gt;
* https://etherpad.openstack.org/p/YVR-ops-hypervisor-tuning&lt;br /&gt;
* https://etherpad.openstack.org/p/YVR-ops-security&lt;br /&gt;
* https://etherpad.openstack.org/p/YVR-ops-deployment&lt;br /&gt;
* https://etherpad.openstack.org/p/YVR-ops-database&lt;br /&gt;
* https://etherpad.openstack.org/p/YVR-ops-evangelism&lt;br /&gt;
* https://etherpad.openstack.org/p/YVR-ops-multi-site&lt;br /&gt;
* https://etherpad.openstack.org/p/YVR-ops-nova&lt;br /&gt;
* https://etherpad.openstack.org/p/YVR-ops-customer-onboarding&lt;br /&gt;
* https://etherpad.openstack.org/p/YVR-ops-containers&lt;br /&gt;
* https://etherpad.openstack.org/p/YVR-ops-neutron&lt;br /&gt;
&lt;br /&gt;
Wednesday:&lt;br /&gt;
* https://etherpad.openstack.org/p/YVR-ops-telco&lt;br /&gt;
* https://etherpad.openstack.org/p/YVR-ops-puppet&lt;br /&gt;
* https://etherpad.openstack.org/p/YVR-ops-chef&lt;br /&gt;
* https://etherpad.openstack.org/p/YVR-ops-hpc&lt;br /&gt;
* https://etherpad.openstack.org/p/YVR-ops-tools&lt;br /&gt;
* https://etherpad.openstack.org/p/YVR-ops-ansible&lt;br /&gt;
* https://etherpad.openstack.org/p/YVR-ops-ceph&lt;br /&gt;
* https://etherpad.openstack.org/p/YVR-ops-tags&lt;br /&gt;
* https://etherpad.openstack.org/p/YVR-ops-large-deployments&lt;br /&gt;
* https://etherpad.openstack.org/p/YVR-ops-burning-issues&lt;br /&gt;
* https://etherpad.openstack.org/p/YVR-ops-docs&lt;br /&gt;
* https://etherpad.openstack.org/p/YVR-ops-tech-choices&lt;br /&gt;
* https://etherpad.openstack.org/p/YVR-ops-cmdb&lt;br /&gt;
* https://etherpad.openstack.org/p/YVR-ops-data-plane-transitions&lt;br /&gt;
* https://etherpad.openstack.org/p/YVR-ops-upgrades&lt;br /&gt;
* https://etherpad.openstack.org/p/YVR-ops-packaging&lt;br /&gt;
* https://etherpad.openstack.org/p/YVR-ops-nova-network&lt;br /&gt;
&lt;br /&gt;
==Group Based Policy (GBP)==&lt;br /&gt;
* https://etherpad.openstack.org/p/gbp-liberty-design-summit&lt;br /&gt;
&lt;br /&gt;
== Magnum ==&lt;br /&gt;
Wednesday&lt;br /&gt;
* 09:00 AM - 09:40 AM https://etherpad.openstack.org/p/liberty-fishbowl-using-native&lt;br /&gt;
* 09:50 AM - 10:30 AM https://etherpad.openstack.org/liberty-fishbowl-determining-storage&lt;br /&gt;
* 11:00 AM - 11:40 AM https://etherpad.openstack.org/p/liberty-fishbowl-cultivating-caas-apps&lt;br /&gt;
* 11:50 AM - 12:30 PM https://etherpad.openstack.org/liberty-fishbowl-magnum-project-ideas&lt;br /&gt;
* 2:40 PM - 3:20 PM https://etherpad.openstack.org/liberty-work-tls-endpoint&lt;br /&gt;
* 3:30 PM - 4:10 PM https://etherpad.openstack.org/liberty-work-native-networking&lt;br /&gt;
* 4:30 PM - 5:10 PM http://etherpad.openstack.org/liberty-work-ci-functional-testing&lt;br /&gt;
* 5:20 PM - 6:00 PM https://etherpad.openstack.org/liberty-work-heat-coe-templates&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Thursday&lt;br /&gt;
* 11:00 AM - 11:40 AM https://etherpad.openstack.org/liberty-work-magnum-horizontal-scale&lt;br /&gt;
* 11:50 AM - 12:30 PM https://etherpad.openstack.org/p/liberty-work-abstract-backend&lt;br /&gt;
&lt;br /&gt;
== Akanda == &lt;br /&gt;
Thursday&lt;br /&gt;
* 1:30pm - 2:10pm https://etherpad.openstack.org/p/liberty-akanda-design&lt;br /&gt;
&lt;br /&gt;
== Cue == &lt;br /&gt;
Thursday&lt;br /&gt;
* 3:20pm - 4:00pm https://etherpad.openstack.org/p/liberty-cue-design&lt;/div&gt;</summary>
		<author><name>Vipuls</name></author>	</entry>

	<entry>
		<id>https://wiki.openstack.org/w/index.php?title=Design_Summit/Liberty/Etherpads&amp;diff=81619</id>
		<title>Design Summit/Liberty/Etherpads</title>
		<link rel="alternate" type="text/html" href="https://wiki.openstack.org/w/index.php?title=Design_Summit/Liberty/Etherpads&amp;diff=81619"/>
				<updated>2015-05-21T22:19:10Z</updated>
		
		<summary type="html">&lt;p&gt;Vipuls: /* Akanda */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Summit]]&lt;br /&gt;
[[Category:Liberty]]&lt;br /&gt;
[[Category:Etherpad]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;column-count:3;-moz-column-count:3;-webkit-column-count:3&amp;quot;&amp;gt;&lt;br /&gt;
__TOC__&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
==Cross-Project workshops==&lt;br /&gt;
Tuesday:&lt;br /&gt;
&lt;br /&gt;
* 11:15 - 11:55&lt;br /&gt;
** [https://etherpad.openstack.org/p/liberty-cross-project-python3 Moving apps to Python 3]&lt;br /&gt;
** [https://etherpad.openstack.org/p/liberty-cross-project-user-notifications Async status updates]&lt;br /&gt;
* 12:05 - 12:45&lt;br /&gt;
** [https://etherpad.openstack.org/p/liberty-crossproject-ux Improving UX across all projects]&lt;br /&gt;
** [https://etherpad.openstack.org/p/liberty-functional-testing-show-tell Functional Testing Show &amp;amp; Tell]&lt;br /&gt;
* 2:00 - 2:40&lt;br /&gt;
** [https://etherpad.openstack.org/p/sdk-cross-project-vancouver OpenStack SDK]&lt;br /&gt;
** [https://etherpad.openstack.org/p/modern-javascript-vancouver-2015 Modern JavaScript]&lt;br /&gt;
* 2:50 - 3:30&lt;br /&gt;
** [https://etherpad.openstack.org/p/liberty-cross-project-in-team-scaling In-team scaling]&lt;br /&gt;
** [https://etherpad.openstack.org/p/service-catalog-cross-project-vancouver Service Catalog Standardization]&lt;br /&gt;
* 3:40 - 4:20&lt;br /&gt;
** [https://etherpad.openstack.org/p/liberty-cross-project-api-wg API Working Group]&lt;br /&gt;
** [https://etherpad.openstack.org/p/liberty-neutron-gaps-concerns Towards one Network Stack: Part 1 - Neutron Gaps and Concerns]&lt;br /&gt;
** [https://etherpad.openstack.org/p/liberty-xproject-scheduler Cross project scheduling APIs (Rm 221)]&lt;br /&gt;
* 4:40 - 5:20&lt;br /&gt;
** [https://etherpad.openstack.org/p/liberty-cross-project-release-models OpenStack release model(s)]&lt;br /&gt;
** [https://etherpad.openstack.org/p/liberty-cross-project-unified-policy Unified Policy File]&lt;br /&gt;
* 5:30 - 6:10&lt;br /&gt;
** [https://etherpad.openstack.org/p/Cross-project_workshop_Documentation OpenStack Documentation]&lt;br /&gt;
** [https://etherpad.openstack.org/p/liberty-cross-project-managing-concurrency Managing concurrency]&lt;br /&gt;
&lt;br /&gt;
==Barbican==&lt;br /&gt;
* https://etherpad.openstack.org/p/barbican-L-design-sessions&lt;br /&gt;
&lt;br /&gt;
==Ceilometer==&lt;br /&gt;
wednesday:&lt;br /&gt;
* 0900 - 0940: [https://etherpad.openstack.org/p/ceilo-multi-identity componentisation / multi identity]&lt;br /&gt;
* 0950 - 1030: [https://etherpad.openstack.org/p/event_alarm event alarms]&lt;br /&gt;
* 1100 - 1140: [https://etherpad.openstack.org/p/liberty-ceilometer-pipeline-config pipeline configuration]&lt;br /&gt;
* 1150 - 1230: [https://etherpad.openstack.org/p/ceilo-declarative-notifications declarative notification meters]&lt;br /&gt;
* 1440 - 1520: [https://etherpad.openstack.org/p/YVR-ops-ceilometer ops followup]&lt;br /&gt;
* 1530 - 1610: [https://etherpad.openstack.org/p/ceilo-multi-identity componentization carry over]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br/&amp;gt;thursday:&lt;br /&gt;
* 0900 - 0940: [https://etherpad.openstack.org/p/liberty-ceilometer-meter-deprecation meter deprecation]&lt;br /&gt;
* 0950 - 1030: [https://etherpad.openstack.org/p/liberty-ceilometer-meter-event samples/events integration]&lt;br /&gt;
* 1100 - 1140: [https://etherpad.openstack.org/p/liberty-ceilometer-versioned-objects versioned objects]&lt;br /&gt;
* 1150 - 1230: ops followup&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br/&amp;gt;friday:&lt;br /&gt;
* 0900 - 1200: [https://etherpad.openstack.org/p/liberty-ceilometer-contributors-meetup contributor meetup]&lt;br /&gt;
&lt;br /&gt;
==Cinder==&lt;br /&gt;
&lt;br /&gt;
* Tuesday • 2:00pm - 2:40pm https://etherpad.openstack.org/p/YVR-ops-cinder&lt;br /&gt;
* Wednesday • 11:50am - 12:30pm https://etherpad.openstack.org/p/cinder-live-instance-migration-with-volume&lt;br /&gt;
* Wednesday • 1:50pm - 2:30pm https://etherpad.openstack.org/p/collect-display-storage-backend-status&lt;br /&gt;
* Wednesday • 2:40pm - 3:20pm https://etherpad.openstack.org/p/cinder-standard-capabilities&lt;br /&gt;
* Wednesday • 3:30pm - 4:10pm https://etherpad.openstack.org/p/YVR-cinder-nested-quota&lt;br /&gt;
* Wednesday • 4:30pm - 5:10pm https://etherpad.openstack.org/p/YVR-public-and-shared-snapshots&lt;br /&gt;
* Wednesday • 5:20pm - 6:00pm https://etherpad.openstack.org/p/liberty-cinder-ironic-integration&lt;br /&gt;
* Thursday • 9:00am - 9:40am https://etherpad.openstack.org/p/volume-migration-improvement&lt;br /&gt;
* Thursday • 9:50am - 10:50am https://etherpad.openstack.org/p/cinder-scaling-backup-service&lt;br /&gt;
* Thursday • 11:00am - 11:40am https://etherpad.openstack.org/p/cinder-active-active-vol-service-issues&lt;br /&gt;
* Thursday • 11:50am - 12:30pm https://etherpad.openstack.org/p/cinder-not-bypass-scheduler &amp;amp; https://etherpad.openstack.org/p/cinder-auto-sync-storage-service-catalog&lt;br /&gt;
* Thursday • 13:30pm - 14:10pm https://etherpad.openstack.org/p/YVR-cinder-tasks-resumptions &amp;amp; https://etherpad.openstack.org/p/cinder-taskflow&lt;br /&gt;
* Thursday • 2:20pm - 3:00pm https://etherpad.openstack.org/p/cinder-rolling-upgrade&lt;br /&gt;
* Thursday • 3:10pm - 3:50pm https://etherpad.openstack.org/p/replication_v2_liberty_discussion&lt;br /&gt;
&lt;br /&gt;
==Designate==&lt;br /&gt;
==Documentation==&lt;br /&gt;
&lt;br /&gt;
* Tuesday cross-project • 5:30pm - 6:10pm https://etherpad.openstack.org/p/Cross-project_workshop_Documentation&lt;br /&gt;
* Wednesday • 1:50pm - 2:30pm https://etherpad.openstack.org/p/Documentation__RST_Migration&lt;br /&gt;
* Wednesday • 3:30pm - 4:10pm https://etherpad.openstack.org/p/Documentation__Ops_Work_Session&lt;br /&gt;
* Thursday • 11:50am - 12:30pm https://etherpad.openstack.org/p/Documentation__API_Work_Session&lt;br /&gt;
* Thursday • 1:30pm - 2:10pm https://etherpad.openstack.org/p/Documentation__Blueprint_Work_Session&lt;br /&gt;
* Thursday • 2:20pm - 3:00pm https://etherpad.openstack.org/p/Documentation__Team_Structure_1&lt;br /&gt;
* Thursday • 3:10pm - 3:50pm https://etherpad.openstack.org/p/Documentation__Team_Structure_1&lt;br /&gt;
* Thursday • 4:10pm - 4:50pm https://etherpad.openstack.org/p/Documentation__Info_Architecture_1&lt;br /&gt;
* Thursday • 5:00pm - 5:40pm https://etherpad.openstack.org/p/Documentation__Info_Architecture_2&lt;br /&gt;
* Friday • 9:00am - 12:20pm https://etherpad.openstack.org/p/Documentation__Contributors_Meetup&lt;br /&gt;
&lt;br /&gt;
==Glance==&lt;br /&gt;
'''Wed'''&lt;br /&gt;
* 11:00 - 11:40: [https://etherpad.openstack.org/p/liberty-caching (W) Object Downloads: Cache Misses &amp;amp; Pollution]&lt;br /&gt;
* 11:50 - 12:30: [https://etherpad.openstack.org/p/liberty-glance-reliable-upload (W) Upload Recovery]&lt;br /&gt;
* 13:50 - 14:30: [https://etherpad.openstack.org/p/liberty-glance-hierarchical-multitenancy (W) Hierarchical Multi-tenancy]&lt;br /&gt;
* 14:40 - 15:20: [https://etherpad.openstack.org/p/liberty-what-is-glance (F) Glance: The direction of the Glance project]&lt;br /&gt;
* 15:30 - 16:10: [https://etherpad.openstack.org/p/catalog-index-service-liberty (F) Glance: Catalog Index Service - Future and Scope]&lt;br /&gt;
* 16:40 - 17:10: [https://etherpad.openstack.org/p/liberty-glance-image-signing-and-encryption (F) Glance: Image Signing and Encryption]&lt;br /&gt;
* 17:20 - 18:00: [https://etherpad.openstack.org/p/liberty-glance-intercloud-image-sharing (F) Glance: Intercloud image sharing]&lt;br /&gt;
&lt;br /&gt;
'''Thur'''&lt;br /&gt;
* 09:00 - 09:40: [https://etherpad.openstack.org/p/OVF-support-in-glance (W) OVF Support in Glance]&lt;br /&gt;
* 09:50 - 10:30: [https://etherpad.openstack.org/p/liberty-glance-nosql-backend (W) NoSql backend for Glance]&lt;br /&gt;
* 11:00 - 11:40: [https://etherpad.openstack.org/p/liberty-glance-store-CI (W) glance_store CI]&lt;br /&gt;
* 11:50 - 12:30: [https://etherpad.openstack.org/p/liberty-glance-ops-feedback (W) Ops feedback]&lt;br /&gt;
* 13:30 - 14:10: [https://etherpad.openstack.org/p/liberty-glance-open-discussion (W) Open discussion]&lt;br /&gt;
&lt;br /&gt;
==Heat==&lt;br /&gt;
'''Wed'''&lt;br /&gt;
* 09:00 - 09:40: [https://etherpad.openstack.org/p/YVR-heat-liberty-convergence-1 (W) Finishing off Convergence phase 1]&lt;br /&gt;
* 09:50 - 10:30: [https://etherpad.openstack.org/p/YVR-heat-liberty-convergence-2 (W) Convergence phase 2 planning]&lt;br /&gt;
* 11:00 - 11:40: [https://etherpad.openstack.org/p/YVR-heat-liberty-testing (W) Functional and integration testing, identify gaps and suggest improvements]&lt;br /&gt;
* 11:50 - 12:30: [https://etherpad.openstack.org/p/YVR-heat-liberty-lifecycle-ops (W) Better support for lifecycle operations on (tripleo) heat stacks (upgrades etc)]&lt;br /&gt;
* 13:50 - 14:30: [https://etherpad.openstack.org/p/YVR-heat-liberty-client-usability (F) Heat client usability]&lt;br /&gt;
* 14:40 - 15:20: [https://etherpad.openstack.org/p/YVR-heat-liberty-template-format (F) Heat template format improvements]&lt;br /&gt;
* 15:30 - 16:10: [https://etherpad.openstack.org/p/YVR-heat-liberty-rest-api (F) REST API design and roadmap]&lt;br /&gt;
* 16:30 - 17:10: [https://etherpad.openstack.org/p/YVR-heat-liberty-senlin-autoscaling (F) Senlin Autoscaling Project - Deep Dive]&lt;br /&gt;
* 17:20 - 18:00: [https://etherpad.openstack.org/p/YVR-heat-liberty-containers (F) Orchestrating containers with Heat]&lt;br /&gt;
&lt;br /&gt;
'''Thu'''&lt;br /&gt;
* 09:00 - 09:40: [https://etherpad.openstack.org/p/YVR-heat-liberty-alembic (W) Migrating from sqlalchemy-migrations to alembic]&lt;br /&gt;
* 09:50 - 10:30: [https://etherpad.openstack.org/p/YVR-heat-liberty-versioned-objects (W) Future of Versioned objects in heat]&lt;br /&gt;
* 11:00 - 11:40: [https://etherpad.openstack.org/p/YVR-heat-liberty-autoscaling (W) Autoscaling improvements]&lt;br /&gt;
* 11:50 - 12:30: [https://etherpad.openstack.org/p/YVR-heat-liberty-deprecation (W) Our deprecation process]&lt;br /&gt;
* 16:10 - 16:50: [https://etherpad.openstack.org/p/YVR-heat-liberty-contrib-plugins (W) Moving most contrib plugins in-tree]&lt;br /&gt;
* 17:00 - 17:40: [https://etherpad.openstack.org/p/YVR-heat-liberty-resource-registering (W) Conditional registering of resources]&lt;br /&gt;
&lt;br /&gt;
'''Fri'''&lt;br /&gt;
* 09:00-12:20: [https://etherpad.openstack.org/p/YVR-heat-contributor-meetup Contributor Meetup]&lt;br /&gt;
&lt;br /&gt;
==Horizon==&lt;br /&gt;
*  Wed 9:00 Plugins https://etherpad.openstack.org/p/YVR-horizon-plugins&lt;br /&gt;
*  Wed 9:50 Merlin and Curvature https://etherpad.openstack.org/p/YVR-horizon-new-tech&lt;br /&gt;
*  Wed 13:50 Keystone and session storage https://etherpad.openstack.org/p/YVR-horizon-keystone&lt;br /&gt;
*  Thurs 9:00 Angular Planning https://etherpad.openstack.org/p/YVR-horizon-angular-planning&lt;br /&gt;
*  Thurs 9:50 Angular Specifics https://etherpad.openstack.org/p/YVR-horizon-angular-topics&lt;br /&gt;
*  Thurs 11:00 User Experience https://etherpad.openstack.org/p/YVR-horizon-ux&lt;br /&gt;
*  Thurs 11:50 Performance, Scalability, Elastic Search https://etherpad.openstack.org/p/YVR-horizon-performance&lt;br /&gt;
*  Thurs 13:30 Operator Feedback https://etherpad.openstack.org/p/YVR-horizon-ops-feedback&lt;br /&gt;
*  Thurs 14:20 Plan to address Operator Feedback https://etherpad.openstack.org/p/YVR-horizon-addressing-ops-feedback&lt;br /&gt;
*  Thurs 15:10 Messaging (better error messages to users AND websockets)     https://etherpad.openstack.org/p/YVR-horizon-liberty-messaging&lt;br /&gt;
*  Thurs 17:00 Liberty Priorities https://etherpad.openstack.org/p/YVR-horizon-liberty-priorities&lt;br /&gt;
*  Fri 9:00 Contributor Meetup #1 https://etherpad.openstack.org/p/YVR-horizon-collab-meetup&lt;br /&gt;
*  Fri 1:20 Contributor Meetup #2 https://etherpad.openstack.org/p/YVR-horizon-collab-meetup&lt;br /&gt;
&lt;br /&gt;
==Infrastructure==&lt;br /&gt;
* Wed 09:00 - 09:40: [https://etherpad.openstack.org/p/YVR-infra-irc-meetings (W) Work session on Gerrit-driven IRC meetings]&lt;br /&gt;
* Wed 09:50 - 10:30: [https://etherpad.openstack.org/p/YVR-infra-activity-tracking (W) Work session on activity tracking]&lt;br /&gt;
* Thu 09:00 - 09:40: [https://etherpad.openstack.org/p/YVR-infra-zuulv3 (F) Zuul v3]&lt;br /&gt;
* Thu 09:50 - 10:30: [https://etherpad.openstack.org/p/YVR-infra-task-tracking (F) Task tracking]&lt;br /&gt;
* Thu 11:00 - 11:40: [https://etherpad.openstack.org/p/YVR-infra-cloud (F) Infra-Cloud]&lt;br /&gt;
* Thu 11:50 - 12:30: [https://etherpad.openstack.org/p/kilo-infra-puppet-testing (F) Puppet Testing]&lt;br /&gt;
* Thu 15:10 - 16:50: [https://etherpad.openstack.org/p/YVR-infra-puppet-openstackci (W) Work session on puppet-openstackci]&lt;br /&gt;
&lt;br /&gt;
==Ironic==&lt;br /&gt;
https://etherpad.openstack.org/p/liberty-ironic-design-summit-ideas&lt;br /&gt;
&lt;br /&gt;
==Keystone==&lt;br /&gt;
==Manila==&lt;br /&gt;
'''Wed'''&lt;br /&gt;
* 09:00 - 09:40: [https://etherpad.openstack.org/p/YVR-manila-liberty-mount-automation (F) Mount automation]&lt;br /&gt;
* 09:50 - 10:30: [https://etherpad.openstack.org/p/YVR-manila-liberty-share-migration (F) Share migration]&lt;br /&gt;
* 11:00 - 11:40: [https://etherpad.openstack.org/p/YVR-manila-liberty-share-replication (F) Share replication]&lt;br /&gt;
* 16:30 - 17:10: [https://etherpad.openstack.org/p/YVR-manila-liberty-versioned-objects-and-apis (W) Versioned objects and APIs]&lt;br /&gt;
* 17:20 - 18:00: [https://etherpad.openstack.org/p/YVR-manila-liberty-fault-indication (W) Fault indication]&lt;br /&gt;
&lt;br /&gt;
'''Thu'''&lt;br /&gt;
* 16:10 - 16:50: [https://etherpad.openstack.org/p/YVR-manila-liberty-thin-provisioning (W) Thin provisioning and consistency groups]&lt;br /&gt;
* 17:00 - 17:40: [https://etherpad.openstack.org/p/YVR-manila-service-image (W) Snapshot-share relationship and Manila service image]&lt;br /&gt;
&lt;br /&gt;
==Neutron==&lt;br /&gt;
'''Mon'''&lt;br /&gt;
* 20:00 - 22:30: [http://lists.openstack.org/pipermail/openstack-dev/2015-May/064323.html Neutron Social]&lt;br /&gt;
&lt;br /&gt;
'''Wed'''&lt;br /&gt;
* 09:00 - 09:40: [https://etherpad.openstack.org/p/YVR-neutron-liberty-development Neutron Liberty Development]&lt;br /&gt;
* 09:50 - 10:30: [https://etherpad.openstack.org/p/YVR-neutron-use-case-discussion Neutron Use Case Discussion]&lt;br /&gt;
* 11:00 - 11:40: [https://etherpad.openstack.org/p/YVR-neutron-vlan-trunk VLAN Aware VMs]&lt;br /&gt;
* 11:50 - 12:30: [https://etherpad.openstack.org/p/YVR-neutron-lightning-talks Neutron Lightning Talks]&lt;br /&gt;
* 13:50 - 14:30: [https://etherpad.openstack.org/p/YVR-neutron-octavia Octavia]&lt;br /&gt;
* 14:40 - 15:20: [https://etherpad.openstack.org/p/YVR-neutron-ironic Ironic and Neutron integration]&lt;br /&gt;
* 15:30 - 16:10: [https://etherpad.openstack.org/p/YVR-neutron-ovn OVN]&lt;br /&gt;
* 16:30 - 17:10: [https://etherpad.openstack.org/p/YVR-neutron-opendaylight OpenDaylight]&lt;br /&gt;
* 17:20 - 18:00: [https://etherpad.openstack.org/p/YVR-neutron-get-me-a-network Get Me a Network!]&lt;br /&gt;
&lt;br /&gt;
'''Thu'''&lt;br /&gt;
* 09:00 - 09:40:  [https://etherpad.openstack.org/p/YVR-neutron-lbaas-use-cases Neutron LBaaS Use Cases]&lt;br /&gt;
* 09:50 - 10:30:  [https://etherpad.openstack.org/p/YVR-neutron-l3 Neutron L3]&lt;br /&gt;
* 11:00 - 11:40: [https://etherpad.openstack.org/p/YVR-neutron-qos QoS]&lt;br /&gt;
* 11:50 - 12:30: [https://etherpad.openstack.org/p/YVR-neutron-third-party-ci-liberty Third Party CI in Liberty and Beyond]&lt;br /&gt;
* 13:30 - 14:10: [https://etherpad.openstack.org/p/YVR-neutron-testing-in-liberty Testing In Liberty]&lt;br /&gt;
* 14:20 - 15:00:&lt;br /&gt;
** [https://etherpad.openstack.org/p/YVR-neutron-RBAC RBAC shared network]&lt;br /&gt;
** [https://etherpad.openstack.org/p/YVR-neutron-port-status Neutron Port Status]&lt;br /&gt;
* 15:10 - 15:50: [https://etherpad.openstack.org/p/YVR-neutron-sg-fwaas-future-direction SG and FWaaS Future Directions]&lt;br /&gt;
* 16:10 - 16:50: [https://etherpad.openstack.org/p/YVR-neutron-nfv-enhancements Neutron NFV Enhancements]&lt;br /&gt;
&lt;br /&gt;
'''Fri'''&lt;br /&gt;
* 09:00-12:20: [https://etherpad.openstack.org/p/YVR-neutron-contributor-meetup Contributor Meetup]&lt;br /&gt;
&lt;br /&gt;
==Nova==&lt;br /&gt;
&lt;br /&gt;
'''Wednesday:'''&lt;br /&gt;
&lt;br /&gt;
* 09:00 - 09:40: [https://etherpad.openstack.org/p/YVR-nova-scheduler-in-liberty Scheduler in Liberty]&lt;br /&gt;
* 09:50 - 10:30: [https://etherpad.openstack.org/p/YVR-nova-scalling-out-scheduler-for-cells Scaling out scheduler for cells ]&lt;br /&gt;
&lt;br /&gt;
* 11:00 - 11:40: [https://etherpad.openstack.org/p/YVR-nova-cells-v2 Cells v2]&lt;br /&gt;
* 11:50 - 12:30: [https://etherpad.openstack.org/p/YVR-nova-resource-tracker Resource Tracker, Clustered Hypervisors and NFV]&lt;br /&gt;
&lt;br /&gt;
* 13:50 - 14:30: [https://etherpad.openstack.org/p/YVR-nova-spec-blueprint-unconference Nova Spec/Blueprint Unconference]&lt;br /&gt;
* 14:40 - 15:20: [https://etherpad.openstack.org/p/YVR-nova-database-internals Database (part 1)]&lt;br /&gt;
* 15:30 - 16:10: [https://etherpad.openstack.org/p/YVR-nova-functional-testing-feature-classification Functional Testing and Feature Classification]&lt;br /&gt;
&lt;br /&gt;
* 16:30 - 17:10: [https://etherpad.openstack.org/p/YVR-nova-instance-ha-evacuate-resize Dealing with compute host failure: Instance HA, Evacuate, Resize]&lt;br /&gt;
* 17:20 - 18:00: [https://etherpad.openstack.org/p/YVR-nova-api-2.1-in-liberty Nova API v2.1 in Liberty]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
'''Thursday:'''&lt;br /&gt;
&lt;br /&gt;
* 09:00 - 09:40: [https://etherpad.openstack.org/p/YVR-nova-api-2.0-3rd-party Future of Nova API v2.0 and 3rd Party APIs]&lt;br /&gt;
* 09:50 - 10:30: [https://etherpad.openstack.org/p/YVR-nova-quotas-and-database Quotas and Database (part 2)]&lt;br /&gt;
&lt;br /&gt;
* 11:00 - 11:40: [https://etherpad.openstack.org/p/YVR-nova-flavors-and-image-properties Flavors and Image Properties]&lt;br /&gt;
* 11:50 - 12:30: [https://etherpad.openstack.org/p/YVR-nova-error-handling Error Handling]&lt;br /&gt;
&lt;br /&gt;
* 13:30 - 14:10: [https://etherpad.openstack.org/p/YVR-nova-spec-blueprint-unconference Nova Spec/Blueprint Unconference]&lt;br /&gt;
* 14:20 - 15:00: [https://etherpad.openstack.org/p/YVR-nova-liberty-priorities Liberty Priorities (part 1)]&lt;br /&gt;
* 15:10 - 15:50: [https://etherpad.openstack.org/p/YVR-nova-liberty-priorities Liberty Priorities (part 2)]&lt;br /&gt;
&lt;br /&gt;
* 16:10 - 16:50: [https://etherpad.openstack.org/p/YVR-nova-liberty-process Liberty Process and Scaling out Reviews]&lt;br /&gt;
* 17:00 - 17:40: [https://etherpad.openstack.org/p/YVR-nova-network Future of Nova's networking and nova-network]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
'''Friday:'''&lt;br /&gt;
&lt;br /&gt;
* 09:00 - 12:20 and 13:20 - 16:40: [https://etherpad.openstack.org/p/YVR-nova-contributor-meetup Nova Contributor Meetup]&lt;br /&gt;
&lt;br /&gt;
==OpenStackClient==&lt;br /&gt;
&lt;br /&gt;
'''Thursday:'''&lt;br /&gt;
&lt;br /&gt;
* 11:50 - 12:30:  [https://etherpad.openstack.org/p/YVR-osc-roadmap (F) Roadmap and Priorities]&lt;br /&gt;
* 14:20 - 15:00:  [https://etherpad.openstack.org/p/YVR-osc-work-session (W) Working session]&lt;br /&gt;
&lt;br /&gt;
==Oslo==&lt;br /&gt;
&lt;br /&gt;
'''Wednesday:'''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* 09:00 - 09:40: [https://etherpad.openstack.org/p/YVR-oslo-versioned-objects-intro (F) Get to know your objects and learn how to version them (an introduction to oslo.versionedobjects)!]&lt;br /&gt;
* 09:50 - 10:30: [https://etherpad.openstack.org/p/YVR-oslo-taskflow-plans (F) Give me liberty, or give me taskflow (come learn about taskflow liberty plans)!]&lt;br /&gt;
* 11:00 - 11:40: [https://etherpad.openstack.org/p/YVR-oslo-rootwrap-plans (W) Give me liberty, or give me wraps (the future of oslo.rootwrap) ]&lt;br /&gt;
* 11:50 - 12:30: [https://etherpad.openstack.org/p/YVR-oslo-functional-testing (W) The cost of liberty is less than the price of functional testing]&lt;br /&gt;
* 13:50 - 14:30: [https://etherpad.openstack.org/p/YVR-oslo-graduation-schedule (W) Give me more oslo in liberty or else! Schedule &amp;amp; new libraries]&lt;br /&gt;
* 14:40 - 15:20: [https://etherpad.openstack.org/p/YVR-oslo-messaging-zmq-status (F) State of zmq in oslo.messaging]&lt;br /&gt;
* 15:30 - 16:10: [https://etherpad.openstack.org/p/YVR-oslo-optional-dependencies (W) Emancipate/liberate your optional dependencies - Optional Dependencies]&lt;br /&gt;
* 16:30 - 17:10: [https://etherpad.openstack.org/p/YVR-oslo-release-process-review (W) Reviewing our release processes]&lt;br /&gt;
* 17:20 - 18:00: [https://etherpad.openstack.org/p/YVR-oslo-config-filter (W) Configuration Filters in oslo.config]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
'''Thursday:'''&lt;br /&gt;
&lt;br /&gt;
* 09:50 - 10:30: [https://etherpad.openstack.org/p/YVR-oslo-strategy-discussion (F) The oslo liberty proclamation (and associated strategy discussion)]&lt;br /&gt;
* 11:00 - 11:40: [https://etherpad.openstack.org/p/YVR-oslo-config-plans (F) Enfranchise oslo.config, let's discuss alternative data sources in oslo.config]&lt;br /&gt;
* 11:50 - 12:30: [https://etherpad.openstack.org/p/YVR-oslo-log-plans (W) Life, Liberty, and the pursuit of oslo.log changes]&lt;br /&gt;
* 13:30 - 14:10: [https://etherpad.openstack.org/p/YVR-oslo-versioned-objects-deep-dive (W) Deep dive on oslo.versionedobjects, bring your wet suits.]&lt;br /&gt;
* 14:20 - 15:00: [https://etherpad.openstack.org/p/YVR-oslo-db-plans (F) For a people who are free, and who mean to remain so, a well organized and armed 'oslo.db' is their best security]&lt;br /&gt;
* 15:10 - 15:50: [https://etherpad.openstack.org/p/YVR-oslo-asyncio (F) Event loops, coroutines, yield from, futures, a discussion on asyncio (and triollus?)]&lt;br /&gt;
* 16:10 - 16:50: [https://etherpad.openstack.org/p/YVR-oslo-messaging-plans (F) Ping pong, oslo.messaging plans for liberty.]&lt;br /&gt;
* 17:00 - 17:40: [https://etherpad.openstack.org/p/YVR-oslo-tech-debt-deprecation (F) How to clean up your tech-debt; let's discuss best practices on how to deprecate things in oslo libraries]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==QA==&lt;br /&gt;
&lt;br /&gt;
'''Wed'''&lt;br /&gt;
&lt;br /&gt;
* 1150-1230 - [https://etherpad.openstack.org/p/YVR-QA-testing-beyond-the-gate Testing beyond the gate]&lt;br /&gt;
* 1350-1430 - [https://etherpad.openstack.org/p/YVR-QA-Devstack-Roadmap Devstack Roadmap]&lt;br /&gt;
* 1440-1520 - [https://etherpad.openstack.org/p/YVR-QA-Tempest-service-clients Work Session: Tempest service clients]&lt;br /&gt;
* 1630-1710 - [https://etherpad.openstack.org/p/YVR-QA-in-the-big-tent QA in the Big Tent]&lt;br /&gt;
&lt;br /&gt;
'''Thurs.'''&lt;br /&gt;
* 0900-0940 - [https://etherpad.openstack.org/p/YVR-QA-idempotent-id Work Session: Idempotent ID]&lt;br /&gt;
* 1330-1410 - [https://etherpad.openstack.org/p/YVR-QA-Tempest-as-a-system-program Work Session: Tempest as System Program]&lt;br /&gt;
* 1420-1500 - [https://etherpad.openstack.org/p/YVR-QA-Tempest-CLI Work Session: Tempest CLI and Tempest Cleanup]&lt;br /&gt;
* 1610-1650 - [https://etherpad.openstack.org/p/YVR-QA-Tempest-Scope-Revisited Tempest Scope Revisited]&lt;br /&gt;
* 1700-1740 - [https://etherpad.openstack.org/p/YVR-QA-Liberty-Priorities Liberty Priorities]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Release Management==&lt;br /&gt;
* Wed 17:20-18:00: [https://etherpad.openstack.org/p/YVR-relmgt-stable-branch Stable branch]&lt;br /&gt;
* Thu 11:00-11:40 [https://etherpad.openstack.org/p/YVR-relmgt-library-releases Work session: Library releases]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Sahara==&lt;br /&gt;
&lt;br /&gt;
'''Wed'''&lt;br /&gt;
&lt;br /&gt;
* 11:00am (W) HA http://etherpad.openstack.org/p/sahara-liberty-ha&lt;br /&gt;
* 11:50am (W) API v2 https://etherpad.openstack.org/p/sahara-liberty-api-v2&lt;br /&gt;
&lt;br /&gt;
''Thu'''&lt;br /&gt;
&lt;br /&gt;
* 1:30pm (F) UI https://etherpad.openstack.org/p/sahara-liberty-ui&lt;br /&gt;
* 2:20pm (F) Security https://etherpad.openstack.org/p/sahara-liberty-security&lt;br /&gt;
* 3:10pm (W) EDP https://etherpad.openstack.org/p/sahara-liberty-edp&lt;br /&gt;
* 4:10pm (W) Resources Visibility/ACL https://etherpad.openstack.org/p/sahara-liberty-resources&lt;br /&gt;
* 5:00pm (W) Plugins https://etherpad.openstack.org/p/sahara-liberty-plugins&lt;br /&gt;
&lt;br /&gt;
''Fri'''&lt;br /&gt;
&lt;br /&gt;
* 9am - 4:40pm Meetup https://etherpad.openstack.org/p/sahara-liberty-meetup&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Security==&lt;br /&gt;
* Wed 13:50-14:30: [https://etherpad.openstack.org/p/YVR-security-vmt Vulnerability management]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Swift==&lt;br /&gt;
'''Wednesday:'''&lt;br /&gt;
* 9:00am - 9:40am: [https://etherpad.openstack.org/p/liberty-swift-large-containers Large containers (container sharding)]&lt;br /&gt;
* 9:50am - 10:30am: [https://etherpad.openstack.org/p/python-swiftclient-liberty-discussion python-swiftclient status and next steps]&lt;br /&gt;
* 11:00am - 11:40am [https://etherpad.openstack.org/p/liberty-swift-changing-policies Changing Policies]&lt;br /&gt;
* 1:50pm - 2:30pm [https://etherpad.openstack.org/p/liberty-swift-increase-part-power Increasing ring partition power]&lt;br /&gt;
* 3:30pm - 4:10pm [https://etherpad.openstack.org/p/liberty-swift-documentation Swift Documentation]&lt;br /&gt;
* 4:30pm - 5:10pm [https://etherpad.openstack.org/p/liberty-swift-softlayer Softlayer]&lt;br /&gt;
* 5:20pm - 6:00pm [https://etherpad.openstack.org/p/Liberty_Swift_Summit_Encryption Swift on-disk encryption]&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
'''Thursday:'''&lt;br /&gt;
* 9:00am - 9:40am: [https://etherpad.openstack.org/p/Liberty_Swift_Summit_Storlets Swift Storlets]&lt;br /&gt;
* 9:50am - 10:30am: [https://etherpad.openstack.org/p/liberty-swift-ops-feedback Ops Feedback Session]&lt;br /&gt;
* 11:00am - 11:40am: [https://etherpad.openstack.org/p/liberty-swift-tape-storage Tape Storage]&lt;br /&gt;
* 11:50am - 12:30pm: [https://etherpad.openstack.org/p/liberty-swift-hummingbird Hummingbird: Scaling Swift using Go]&lt;br /&gt;
* 1:30pm - 2:10pm: [https://etherpad.openstack.org/p/liberty-swift-ec-overview EC Overview]&lt;br /&gt;
* 2:20pm - 3:00pm: [https://etherpad.openstack.org/p/liberty-swift-metadata-search Metadata search/object update notification]&lt;br /&gt;
* 3:10pm - 3:50pm: [https://etherpad.openstack.org/p/liberty-swift-ec-follow-on-work EC follow on work]&lt;br /&gt;
* 4:10pm - 4:50pm: [https://etherpad.openstack.org/p/Liberty_Swift_Summit_Encryption_Working Encryption]&lt;br /&gt;
* 5:00pm - 5:40pm: [https://etherpad.openstack.org/p/liberty-swift-tiering Tiering]&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
'''Friday:'''&lt;br /&gt;
* All day: [https://etherpad.openstack.org/p/liberty-swift-contributors-meetup Contributors' Meetup]&lt;br /&gt;
&lt;br /&gt;
==TripleO==&lt;br /&gt;
'''Thursday:'''&lt;br /&gt;
* 1:30pm - 2:10pm: [https://etherpad.openstack.org/p/tripleo-liberty-tripleo-heat-templates  tripleo-heat-templates interfaces and containerization enablement]&lt;br /&gt;
* 2:20pm - 3:00pm: [https://etherpad.openstack.org/p/tripleo-dib-ci-production diskimage-builder functional testing, CI, and TripleO in production]&lt;br /&gt;
* 3:10pm - 3:50pm: [https://etherpad.openstack.org/p/tripleo-service-endpoints Work Session: Isolated network architecture]&lt;br /&gt;
* 5:00pm - 5:40pm: Work Session&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
'''Friday:'''&lt;br /&gt;
* 9:00am - 12:20pm: [https://etherpad.openstack.org/p/tripleo-liberty-proposed-sessions Contributor's Meetup]&lt;br /&gt;
* 1:20pm - 4:40pm: [https://etherpad.openstack.org/p/tripleo-liberty-proposed-sessions Contributor's Meetup]&lt;br /&gt;
&lt;br /&gt;
==Trove==&lt;br /&gt;
'''Wednesday:'''&lt;br /&gt;
* 2:40pm - 3:20pm: [https://etherpad.openstack.org/p/trove-liberty-extending-clusters Extending Cluster creation and actions for extensibility]&lt;br /&gt;
* 3:30pm - 4:10pm: [https://etherpad.openstack.org/p/trove-liberty-datastore-testing Testing Different Trove Datastores -- the path from experimental to stable]&lt;br /&gt;
*  4:30pm - 5:10pm [https://etherpad.openstack.org/p/trove-2015-vancouver-logging Show me the Logs -- Allowing Trove Users Access to Datastore Log files]&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
'''Thursday:'''&lt;br /&gt;
* 9:00am - 9:40am: [https://etherpad.openstack.org/p/trove-liberty-bp-update Work session - Blueprint and Spec Priorities for Liberty]&lt;br /&gt;
* 9:50am - 10:30am: [https://etherpad.openstack.org/p/trove-liberty-production-deploy  Work session - Deploying Trove in Production]&lt;br /&gt;
* 1:30pm - 2:10pm: [https://etherpad.openstack.org/p/trove-liberty-monitoring  Work session - Monitoring Trove Datastores]&lt;br /&gt;
* 2:20pm - 3:00pm: [https://etherpad.openstack.org/p/trove-liberty-openstack-integration Work session - Trove integration with other OpenStack components]&lt;br /&gt;
* 3:10pm - 3:50pm: [https://etherpad.openstack.org/p/trove-liberty-gaps-in-trove Work session - Gaps in Trove]&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
'''Friday:'''&lt;br /&gt;
* All day: [https://etherpad.openstack.org/p/trove-liberty-contributors-meetup Contributors' Meetup]&lt;br /&gt;
&lt;br /&gt;
==Zaqar==&lt;br /&gt;
&lt;br /&gt;
* Thursday, May 21 - 3.10pm to 3.50pm - Room 222 - [https://etherpad.openstack.org/p/zaqar-liberty-ops-friendly Zaqar needs to be OPs friendly]&lt;br /&gt;
* Thursday, May 21 - 4.10pm to 4.50pm - Room 222 - [https://etherpad.openstack.org/p/zaqar-liberty-testsuite Test suite refactor for Zaqar and Zaqarclient]&lt;br /&gt;
&lt;br /&gt;
==Murano==&lt;br /&gt;
'''Thu'''&lt;br /&gt;
&lt;br /&gt;
* 2:20pm (F) [https://etherpad.openstack.org/p/murano-liberty-now-n-future Murano: Now, Liberty and Future]&lt;br /&gt;
* 4:10pm (W) [https://etherpad.openstack.org/p/murano-liberty-work-session-1 Images &amp;amp; Murano]&lt;br /&gt;
* 5:00pm (W) [https://etherpad.openstack.org/p/murano-liberty-work-session-2 Authentication &amp;amp; Agent]&lt;br /&gt;
&lt;br /&gt;
'''Fri'''&lt;br /&gt;
&lt;br /&gt;
* 9am - 4:40pm [https://etherpad.openstack.org/p/murano-liberty-contributors-meetup Contributors Meetup]&lt;br /&gt;
&lt;br /&gt;
==Event intro/closure==&lt;br /&gt;
* Tue 11:15-11:55: [https://etherpad.openstack.org/p/YVR-design-summit-101 Design Summit 101]&lt;br /&gt;
* Fri 16:50-17:30: [https://etherpad.openstack.org/p/YVR-design-summit-feedback Design Summit feedback session]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Ops==&lt;br /&gt;
Tuesday:&lt;br /&gt;
* https://etherpad.openstack.org/p/YVR-ops-101&lt;br /&gt;
* https://etherpad.openstack.org/p/YVR-ops-federation&lt;br /&gt;
* https://etherpad.openstack.org/p/YVR-ops-rabbitmq&lt;br /&gt;
* https://etherpad.openstack.org/p/YVR-ops-logging&lt;br /&gt;
* https://etherpad.openstack.org/p/YVR-ops-arch-show-tell&lt;br /&gt;
* https://etherpad.openstack.org/p/YVR-ops-ceilometer&lt;br /&gt;
* https://etherpad.openstack.org/p/YVR-ops-billing&lt;br /&gt;
* https://etherpad.openstack.org/p/YVR-ops-cinder&lt;br /&gt;
* https://etherpad.openstack.org/p/YVR-ops-legacy-apps&lt;br /&gt;
* https://etherpad.openstack.org/p/YVR-ops-user-committee&lt;br /&gt;
* https://etherpad.openstack.org/p/YVR-ops-hypervisor-tuning&lt;br /&gt;
* https://etherpad.openstack.org/p/YVR-ops-security&lt;br /&gt;
* https://etherpad.openstack.org/p/YVR-ops-deployment&lt;br /&gt;
* https://etherpad.openstack.org/p/YVR-ops-database&lt;br /&gt;
* https://etherpad.openstack.org/p/YVR-ops-evangelism&lt;br /&gt;
* https://etherpad.openstack.org/p/YVR-ops-multi-site&lt;br /&gt;
* https://etherpad.openstack.org/p/YVR-ops-nova&lt;br /&gt;
* https://etherpad.openstack.org/p/YVR-ops-customer-onboarding&lt;br /&gt;
* https://etherpad.openstack.org/p/YVR-ops-containers&lt;br /&gt;
* https://etherpad.openstack.org/p/YVR-ops-neutron&lt;br /&gt;
&lt;br /&gt;
Wednesday:&lt;br /&gt;
* https://etherpad.openstack.org/p/YVR-ops-telco&lt;br /&gt;
* https://etherpad.openstack.org/p/YVR-ops-puppet&lt;br /&gt;
* https://etherpad.openstack.org/p/YVR-ops-chef&lt;br /&gt;
* https://etherpad.openstack.org/p/YVR-ops-hpc&lt;br /&gt;
* https://etherpad.openstack.org/p/YVR-ops-tools&lt;br /&gt;
* https://etherpad.openstack.org/p/YVR-ops-ansible&lt;br /&gt;
* https://etherpad.openstack.org/p/YVR-ops-ceph&lt;br /&gt;
* https://etherpad.openstack.org/p/YVR-ops-tags&lt;br /&gt;
* https://etherpad.openstack.org/p/YVR-ops-large-deployments&lt;br /&gt;
* https://etherpad.openstack.org/p/YVR-ops-burning-issues&lt;br /&gt;
* https://etherpad.openstack.org/p/YVR-ops-docs&lt;br /&gt;
* https://etherpad.openstack.org/p/YVR-ops-tech-choices&lt;br /&gt;
* https://etherpad.openstack.org/p/YVR-ops-cmdb&lt;br /&gt;
* https://etherpad.openstack.org/p/YVR-ops-data-plane-transitions&lt;br /&gt;
* https://etherpad.openstack.org/p/YVR-ops-upgrades&lt;br /&gt;
* https://etherpad.openstack.org/p/YVR-ops-packaging&lt;br /&gt;
* https://etherpad.openstack.org/p/YVR-ops-nova-network&lt;br /&gt;
&lt;br /&gt;
==Group Based Policy (GBP)==&lt;br /&gt;
* https://etherpad.openstack.org/p/gbp-liberty-design-summit&lt;br /&gt;
&lt;br /&gt;
== Magnum ==&lt;br /&gt;
Wednesday&lt;br /&gt;
* 09:00 AM - 09:40 AM https://etherpad.openstack.org/p/liberty-fishbowl-using-native&lt;br /&gt;
* 09:50 AM - 10:30 AM https://etherpad.openstack.org/liberty-fishbowl-determining-storage&lt;br /&gt;
* 11:00 AM - 11:40 AM https://etherpad.openstack.org/p/liberty-fishbowl-cultivating-caas-apps&lt;br /&gt;
* 11:50 AM - 12:30 PM https://etherpad.openstack.org/liberty-fishbowl-magnum-project-ideas&lt;br /&gt;
* 2:40 PM - 3:20 PM https://etherpad.openstack.org/liberty-work-tls-endpoint&lt;br /&gt;
* 3:30 PM - 4:10 PM https://etherpad.openstack.org/liberty-work-native-networking&lt;br /&gt;
* 4:30 PM - 5:10 PM http://etherpad.openstack.org/liberty-work-ci-functional-testing&lt;br /&gt;
* 5:20 PM - 6:00 PM https://etherpad.openstack.org/liberty-work-heat-coe-templates&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Thursday&lt;br /&gt;
* 11:00 AM - 11:40 AM https://etherpad.openstack.org/liberty-work-magnum-horizontal-scale&lt;br /&gt;
* 11:50 AM - 12:30 PM https://etherpad.openstack.org/p/liberty-work-abstract-backend&lt;br /&gt;
&lt;br /&gt;
== Akanda == &lt;br /&gt;
Thursday&lt;br /&gt;
* 1:30pm - 2:10pm https://etherpad.openstack.org/p/liberty-akanda-design&lt;br /&gt;
&lt;br /&gt;
== Akanda == &lt;br /&gt;
Thursday&lt;br /&gt;
* 3:20pm - 4:00pm https://etherpad.openstack.org/p/liberty-cue-design&lt;/div&gt;</summary>
		<author><name>Vipuls</name></author>	</entry>

	<entry>
		<id>https://wiki.openstack.org/w/index.php?title=Meetings/Cue&amp;diff=81560</id>
		<title>Meetings/Cue</title>
		<link rel="alternate" type="text/html" href="https://wiki.openstack.org/w/index.php?title=Meetings/Cue&amp;diff=81560"/>
				<updated>2015-05-20T22:58:40Z</updated>
		
		<summary type="html">&lt;p&gt;Vipuls: /* Weekly Cue meeting */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Weekly Cue meeting =&lt;br /&gt;
&lt;br /&gt;
The [https://launchpad.net/cue Cue] project holds a weekly team meeting every Monday at following time/place:&lt;br /&gt;
* [http://www.timeanddate.com/worldclock/fixedtime.html?hour=18&amp;amp;min=0&amp;amp;sec=0%201900%20UTC 18:00 UTC] in &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;#openstack-meeting-alt&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Next meeting ==&lt;br /&gt;
April 7, 2015 - http://www.timeanddate.com/worldclock/fixedtime.html?msg=Cue+Weekly+Meeting&amp;amp;iso=20150407T18&amp;amp;p1=1440&amp;amp;ah=1&lt;br /&gt;
&lt;br /&gt;
==== Agenda ====&lt;br /&gt;
* Kick-off!&lt;br /&gt;
* Integration Testing&lt;br /&gt;
* Open Discussion&lt;/div&gt;</summary>
		<author><name>Vipuls</name></author>	</entry>

	<entry>
		<id>https://wiki.openstack.org/w/index.php?title=Cue/api&amp;diff=80052</id>
		<title>Cue/api</title>
		<link rel="alternate" type="text/html" href="https://wiki.openstack.org/w/index.php?title=Cue/api&amp;diff=80052"/>
				<updated>2015-05-04T18:31:27Z</updated>
		
		<summary type="html">&lt;p&gt;Vipuls: /* System Context Diagram */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Cue API Design ==&lt;br /&gt;
=== Acronyms ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! '''Acronym''' !! '''Definition'''&lt;br /&gt;
|-&lt;br /&gt;
| SSL || Secure Sockets Layer&lt;br /&gt;
|-&lt;br /&gt;
| REST || Representational State Transfer&lt;br /&gt;
|-&lt;br /&gt;
| URI || Uniform Resource Identifier&lt;br /&gt;
|-&lt;br /&gt;
| UUID || Universally Unique Identifier&lt;br /&gt;
|-&lt;br /&gt;
| AMQP || Advanced Messaging Queuing Protocol&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Requirements ===&lt;br /&gt;
&lt;br /&gt;
API Requirements for Cue - Kilo timeframe.&lt;br /&gt;
&lt;br /&gt;
* Keystone integration&lt;br /&gt;
* CRUD on Cluster&lt;br /&gt;
* Cluster Management – Scale up/down&lt;br /&gt;
* Devstack integration&lt;br /&gt;
* Gate Tests&lt;br /&gt;
&lt;br /&gt;
=== System Architecture Diagram ===&lt;br /&gt;
&lt;br /&gt;
[[File:Cue-arch.png]]&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! '''Component''' !! '''Description'''&lt;br /&gt;
|-&lt;br /&gt;
| User || Direct customer of Cue.&lt;br /&gt;
|-&lt;br /&gt;
| Horizon || Cue functionality will be added to Horizon, which will provide a web-based portal for Cue control.&lt;br /&gt;
|-&lt;br /&gt;
| CLI || Command Line Interface to Cue, provides user access to provisioning and deploying messaging clusters.&lt;br /&gt;
|-&lt;br /&gt;
| REST_API || Provides user access to provisioning and deploying messaging clusters through REST interface.  This is a light-weight interface, provisioning and configuration of clusters/nodes is delegated to the TaskWorker process.&lt;br /&gt;
|-&lt;br /&gt;
| TaskScheduler || Used to synchronize work tasks between the REST_API and TaskWorker processes.&lt;br /&gt;
|-&lt;br /&gt;
| TaskWorker || Carries out work associated with all provisioning, configuration and management of RabbitMQ clusters and nodes.  Makes use of heat for initial provisioning/deployment.&lt;br /&gt;
|-&lt;br /&gt;
| DB || Database to store information on clusters and nodes.  Example, in cluster creation, when request is initially received through REST_API, this DB is updated accordingly and the work is delegated to TaskWorker.  TaskWorker then updates this DB as provisioning and configuration takes place.  Subsequent calls to check on status of cluster creation, will return updated information from this DB.&lt;br /&gt;
|-&lt;br /&gt;
| Heat || Used cloud instance orchestration in deploying RabbitMQ cluster images.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== REST API ===&lt;br /&gt;
&lt;br /&gt;
General requirement, REST API must respond within 500ms.&lt;br /&gt;
==== List Clusters ====&lt;br /&gt;
&lt;br /&gt;
'''''GET /v1/clusters'''''&lt;br /&gt;
&lt;br /&gt;
This operation synchronously returns all clusters provisioned within the associated project id.&lt;br /&gt;
&lt;br /&gt;
'''Request Parameters'''&lt;br /&gt;
N/A&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Response !! Code(s)&lt;br /&gt;
|-&lt;br /&gt;
| Normal || ok (200)&lt;br /&gt;
|-&lt;br /&gt;
| Error || unauthorized (401)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
'''Response Parameters'''&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Parameter !! Type !! Description&lt;br /&gt;
|-&lt;br /&gt;
| cluster(list) || string || List of clusters, detailing respective cluster id, name, status, created time stamp and updated time stamp.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
	&lt;br /&gt;
&lt;br /&gt;
'''JSON Request'''&lt;br /&gt;
&lt;br /&gt;
N/A&lt;br /&gt;
&lt;br /&gt;
'''JSON Response'''&lt;br /&gt;
&lt;br /&gt;
{&lt;br /&gt;
    &amp;quot;clusters&amp;quot;: &amp;lt;nowiki&amp;gt;[&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
        {&lt;br /&gt;
            &amp;quot;cluster_id&amp;quot;: &amp;quot;b51948c9-1ac5-4c28-a580-6f7c500d82f8&amp;quot;,&lt;br /&gt;
            &amp;quot;network_id&amp;quot;: &amp;quot;d32019d3-bc6e-4319-9c1d-6722fc136a22&amp;quot;,&lt;br /&gt;
            &amp;quot;name&amp;quot;: &amp;quot;Message Cluster 1&amp;quot;,&lt;br /&gt;
            &amp;quot;status&amp;quot;: &amp;quot;ACTIVE&amp;quot;,&lt;br /&gt;
            &amp;quot;created&amp;quot;: &amp;quot;2014-11-11T01:02:03Z&amp;quot;,&lt;br /&gt;
            &amp;quot;updated&amp;quot;: &amp;quot;2014-11-11T01:02:03Z&amp;quot;&lt;br /&gt;
        },&lt;br /&gt;
        {&lt;br /&gt;
            &amp;quot;cluster_id&amp;quot;: &amp;quot;13c456c9-bbfc-4c31-b26d-3ae5c3cd7a77&amp;quot;,&lt;br /&gt;
            &amp;quot;network_id&amp;quot;: &amp;quot;d32019d3-bc6e-4319-9c1d-6722fc136a22&amp;quot;,&lt;br /&gt;
            &amp;quot;name&amp;quot;: &amp;quot;Message Cluster 2&amp;quot;,&lt;br /&gt;
            &amp;quot;status&amp;quot;: &amp;quot;ACTIVE&amp;quot;,&lt;br /&gt;
            &amp;quot;created&amp;quot;: &amp;quot;2014-11-12T13:23:54Z&amp;quot;,&lt;br /&gt;
            &amp;quot;updated&amp;quot;: &amp;quot;2014-11-13T19:55:01Z&amp;quot;&lt;br /&gt;
        }&lt;br /&gt;
    ]&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
==== Create Cluster ====&lt;br /&gt;
&lt;br /&gt;
'''''POST /v1/clusters'''''&lt;br /&gt;
&lt;br /&gt;
This operation asynchronously creates a new cluster of Nova instances provisioned with the required message brokers in a central project id. &lt;br /&gt;
&lt;br /&gt;
'''Request Parameters'''&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Parameter !! Type !! Description&lt;br /&gt;
|-&lt;br /&gt;
| nic || UUID || Network Identification for a Neutron network where cluster will be created in.&lt;br /&gt;
|-&lt;br /&gt;
| name || string || Name of cluster.&lt;br /&gt;
|-&lt;br /&gt;
| volume_size || int || Optional parameter to indicate size of volume for node instance.  If volumes are supported, then this parameter will be used.  If ephmeral disk are not supported, volume support will be required.&lt;br /&gt;
|-&lt;br /&gt;
| flavor (list) || string || List of node flavors, which specify VM type in terms of CPU/memory/disk resources.  See http://docs.openstack.org/openstack-ops/content/flavors.html for more information.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
'''Response Codes'''&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Response !! Code(s)&lt;br /&gt;
|-&lt;br /&gt;
| Normal || 202 (accepted)&lt;br /&gt;
|-&lt;br /&gt;
| Error || badRequest (400), unauthorized (401), itemNotFound (404)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
'''Response Parameters'''&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Parameter !! Type !! Description&lt;br /&gt;
|-&lt;br /&gt;
| cluster_id || UUID || ID of cluster to be created.&lt;br /&gt;
|-&lt;br /&gt;
| name || string || Name of cluster (same as provided name in request parameters).&lt;br /&gt;
|-&lt;br /&gt;
| status || string || Current status of cluster.&lt;br /&gt;
&lt;br /&gt;
BUILDING: Cluster is in progress of being provisioned.&lt;br /&gt;
&lt;br /&gt;
UPDATING:  Cluster in process of being updated.&lt;br /&gt;
&lt;br /&gt;
ACTIVE:  Cluster is running.&lt;br /&gt;
&lt;br /&gt;
ERROR: Provisioning error(s) encountered.&lt;br /&gt;
&lt;br /&gt;
DELETING: Cluster is in process of being deleted.&lt;br /&gt;
&lt;br /&gt;
DELETED:  Cluster has been deleted.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
'''JSON Request'''&lt;br /&gt;
&lt;br /&gt;
{&lt;br /&gt;
    &amp;quot;network_id&amp;quot;: &amp;quot;d32019d3-bc6e-4319-9c1d-6722fc136a22&amp;quot;,&lt;br /&gt;
    &amp;quot;name&amp;quot;: &amp;quot;MessageCluster1&amp;quot;,&lt;br /&gt;
    &amp;quot;volume_size&amp;quot;: &amp;quot;100&amp;quot;,&lt;br /&gt;
    &amp;quot;nodes&amp;quot;: [&lt;br /&gt;
        {&lt;br /&gt;
            &amp;quot;flavor&amp;quot;: &amp;quot;large&amp;quot;&lt;br /&gt;
        },&lt;br /&gt;
        {&lt;br /&gt;
            &amp;quot;flavor&amp;quot;: &amp;quot;large&amp;quot;&lt;br /&gt;
        },&lt;br /&gt;
        {&lt;br /&gt;
            &amp;quot;flavor&amp;quot;: &amp;quot;large&amp;quot;&lt;br /&gt;
        }&lt;br /&gt;
    ]&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
'''JSON Response'''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{&lt;br /&gt;
    &amp;quot;cluster&amp;quot;: {&lt;br /&gt;
        &amp;quot;cluster_id&amp;quot;: &amp;quot;dd745f4a-9333-417e-bb89-9c989c84c068&amp;quot;,&lt;br /&gt;
        &amp;quot;network_id&amp;quot;: &amp;quot;d32019d3-bc6e-4319-9c1d-6722fc136a22&amp;quot;,&lt;br /&gt;
        &amp;quot;name&amp;quot;: &amp;quot;Message Cluster 1&amp;quot;,&lt;br /&gt;
        &amp;quot;status&amp;quot;: &amp;quot;BUILDING&amp;quot;,&lt;br /&gt;
        &amp;quot;created&amp;quot;: &amp;quot;2014-11-11T01:02:03Z&amp;quot;,&lt;br /&gt;
        &amp;quot;updated&amp;quot;: &amp;quot;2014-11-11T01:02:03Z&amp;quot;,&lt;br /&gt;
        &amp;quot;nodes&amp;quot;: [&lt;br /&gt;
            {&lt;br /&gt;
                &amp;quot;node_id&amp;quot;: &amp;quot;616fb98f-46ca-475e-917e-2563e5a8cd19&amp;quot;,&lt;br /&gt;
                &amp;quot;status&amp;quot;: &amp;quot;BUILDING&amp;quot;,&lt;br /&gt;
                &amp;quot;flavor&amp;quot;: &amp;quot;large&amp;quot;&lt;br /&gt;
            },&lt;br /&gt;
            {&lt;br /&gt;
                &amp;quot;node_id&amp;quot;: &amp;quot;e90c9d13-c4b8-4a08-992a-dad6109b8ac2&amp;quot;,&lt;br /&gt;
                &amp;quot;status&amp;quot;: &amp;quot;BUILDING&amp;quot;,&lt;br /&gt;
                &amp;quot;flavor&amp;quot;: &amp;quot;large&amp;quot;&lt;br /&gt;
            },&lt;br /&gt;
            {&lt;br /&gt;
                &amp;quot;node_id&amp;quot;: &amp;quot;372f8f47-6818-4d83-aa42-8744c0e689b8&amp;quot;,&lt;br /&gt;
                &amp;quot;status&amp;quot;: &amp;quot;BUILDING&amp;quot;,&lt;br /&gt;
                &amp;quot;flavor&amp;quot;: &amp;quot;large&amp;quot;&lt;br /&gt;
            }&lt;br /&gt;
        ]&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
==== Show Cluster ====&lt;br /&gt;
&lt;br /&gt;
'''''GET /v1/clusters/{cluster_id}'''''&lt;br /&gt;
&lt;br /&gt;
This operation synchronously returns the status and information on the specified cluster within the provided project id.&lt;br /&gt;
&lt;br /&gt;
'''Request Parameters'''&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Parameter !! Type !! Description&lt;br /&gt;
|-&lt;br /&gt;
| cluster_id (URI) || UUID || Cluster ID.  This value is returned when a new cluster is created.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
'''Response Codes'''&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Response !! Code(s)&lt;br /&gt;
|-&lt;br /&gt;
| Normal || ok (200)&lt;br /&gt;
|-&lt;br /&gt;
| Error || unauthorized (401), itemNotFound (404)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
'''Response Parameters'''&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Parameter !! Type !! Description&lt;br /&gt;
|-&lt;br /&gt;
| cluster_id || UUID || ID of requested cluster.&lt;br /&gt;
|-&lt;br /&gt;
| name || string || Name of cluster.&lt;br /&gt;
|-&lt;br /&gt;
| status || string || Current status of cluster.&lt;br /&gt;
&lt;br /&gt;
BUILDING: Cluster is in progress of being provisioned.&lt;br /&gt;
&lt;br /&gt;
UPDATING:  Cluster in process of being updated.&lt;br /&gt;
&lt;br /&gt;
ACTIVE:  Cluster is running.&lt;br /&gt;
&lt;br /&gt;
ERROR: Provisioning error(s) encountered.&lt;br /&gt;
&lt;br /&gt;
DELETING: Cluster is in process of being deleted.&lt;br /&gt;
&lt;br /&gt;
DELETED:  Cluster has been deleted.&lt;br /&gt;
|-&lt;br /&gt;
| created || string || Created time stamp in format: yyyy-mm-ddThh:mm:ssZ&lt;br /&gt;
|-&lt;br /&gt;
| updated || string || Last updated time stamp in format: yyyy-mm-ddThh:mm:ssZ&lt;br /&gt;
|-&lt;br /&gt;
| nodes(list) || node || List of nodes, which includes node id, instance state, and flavor.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
'''JSON Request'''&lt;br /&gt;
&lt;br /&gt;
N/A&lt;br /&gt;
&lt;br /&gt;
'''JSON Response'''&lt;br /&gt;
&lt;br /&gt;
{&lt;br /&gt;
    &amp;quot;cluster&amp;quot;: {&lt;br /&gt;
        &amp;quot;cluster_id&amp;quot;: &amp;quot;dd745f4a-9333-417e-bb89-9c989c84c068&amp;quot;,&lt;br /&gt;
        &amp;quot;network_id&amp;quot;: &amp;quot;d32019d3-bc6e-4319-9c1d-6722fc136a22&amp;quot;,&lt;br /&gt;
        &amp;quot;name&amp;quot;: &amp;quot;Message Cluster 1&amp;quot;,&lt;br /&gt;
        &amp;quot;status&amp;quot;: &amp;quot;ACTIVE&amp;quot;,&lt;br /&gt;
        &amp;quot;created&amp;quot;: &amp;quot;2014-11-11T01:02:03Z&amp;quot;,&lt;br /&gt;
        &amp;quot;updated&amp;quot;: &amp;quot;2014-11-11T01:02:03Z&amp;quot;,&lt;br /&gt;
        &amp;quot;nodes&amp;quot;: [&lt;br /&gt;
            {&lt;br /&gt;
                &amp;quot;node_id&amp;quot;: &amp;quot;616fb98f-46ca-475e-917e-2563e5a8cd19&amp;quot;,&lt;br /&gt;
                &amp;quot;status&amp;quot;: &amp;quot;ACTIVE&amp;quot;,&lt;br /&gt;
                &amp;quot;flavor&amp;quot;: &amp;quot;large&amp;quot;,&lt;br /&gt;
                &amp;quot;endpoints&amp;quot;: [&lt;br /&gt;
                    {&lt;br /&gt;
                        &amp;quot;type&amp;quot;: &amp;quot;AMQP&amp;quot;,&lt;br /&gt;
                        &amp;quot;value&amp;quot;: &amp;quot;amqp://10.20.30.40:10000&amp;quot;&lt;br /&gt;
                    },&lt;br /&gt;
                    {&lt;br /&gt;
                        &amp;quot;type&amp;quot;: &amp;quot;console&amp;quot;,&lt;br /&gt;
                        &amp;quot;value&amp;quot;: &amp;quot;http://10.20.30.40:5672&amp;quot;&lt;br /&gt;
                    }&lt;br /&gt;
                ],&lt;br /&gt;
                &amp;quot;created&amp;quot;: &amp;quot;2014-11-11T01:06:03Z&amp;quot;,&lt;br /&gt;
                &amp;quot;updated&amp;quot;: &amp;quot;2014-11-11T01:06:03Z&amp;quot;&lt;br /&gt;
            },&lt;br /&gt;
            {&lt;br /&gt;
                &amp;quot;node_id&amp;quot;: &amp;quot;e90c9d13-c4b8-4a08-992a-dad6109b8ac2&amp;quot;,&lt;br /&gt;
                &amp;quot;status&amp;quot;: &amp;quot;ACTIVE&amp;quot;,&lt;br /&gt;
                &amp;quot;flavor&amp;quot;: &amp;quot;large&amp;quot;,&lt;br /&gt;
                &amp;quot;endpoints&amp;quot;: [&lt;br /&gt;
                    {&lt;br /&gt;
                        &amp;quot;type&amp;quot;: &amp;quot;AMQP&amp;quot;,&lt;br /&gt;
                        &amp;quot;value&amp;quot;: &amp;quot;amqp://10.20.30.41:10000&amp;quot;&lt;br /&gt;
                    },&lt;br /&gt;
                    {&lt;br /&gt;
                        &amp;quot;type&amp;quot;: &amp;quot;console&amp;quot;,&lt;br /&gt;
                        &amp;quot;value&amp;quot;: &amp;quot;http://10.20.30.41:5672&amp;quot;&lt;br /&gt;
                    }&lt;br /&gt;
                ],&lt;br /&gt;
                &amp;quot;created&amp;quot;: &amp;quot;2014-11-11T01:08:03Z&amp;quot;,&lt;br /&gt;
                &amp;quot;updated&amp;quot;: &amp;quot;2014-11-11T01:08:03Z&amp;quot;&lt;br /&gt;
            },&lt;br /&gt;
            {&lt;br /&gt;
                &amp;quot;node_id&amp;quot;: &amp;quot;372f8f47-6818-4d83-aa42-8744c0e689b8&amp;quot;,&lt;br /&gt;
                &amp;quot;status&amp;quot;: &amp;quot;ACTIVE&amp;quot;,&lt;br /&gt;
                &amp;quot;flavor&amp;quot;: &amp;quot;large&amp;quot;,&lt;br /&gt;
                &amp;quot;endpoints&amp;quot;: [&lt;br /&gt;
                    {&lt;br /&gt;
                        &amp;quot;type&amp;quot;: &amp;quot;AMQP&amp;quot;,&lt;br /&gt;
                        &amp;quot;value&amp;quot;: &amp;quot;amqp://10.20.30.42:10000&amp;quot;&lt;br /&gt;
                    },&lt;br /&gt;
                    {&lt;br /&gt;
                        &amp;quot;type&amp;quot;: &amp;quot;console&amp;quot;,&lt;br /&gt;
                        &amp;quot;value&amp;quot;: &amp;quot;http://10.20.30.42:5672&amp;quot;&lt;br /&gt;
                    }&lt;br /&gt;
                ],&lt;br /&gt;
                &amp;quot;created&amp;quot;: &amp;quot;2014-11-11T01:12:03Z&amp;quot;,&lt;br /&gt;
                &amp;quot;updated&amp;quot;: &amp;quot;2014-11-11T01:12:03Z&amp;quot;&lt;br /&gt;
            }&lt;br /&gt;
        ]&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
==== Delete Cluster ====&lt;br /&gt;
&lt;br /&gt;
'''''DELETE /v1/clusters/{cluster_id}'''''''&lt;br /&gt;
&lt;br /&gt;
This operation will asynchronously delete the indicated cluster within the provided project id.&lt;br /&gt;
&lt;br /&gt;
'''Request Parameters'''&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Parameter !! Type !! Description&lt;br /&gt;
|-&lt;br /&gt;
| cluster_id (URI) || UUID || Cluster ID.  This value is returned when a new cluster is created.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
'''Response Codes'''&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Response !! Code(s)&lt;br /&gt;
|-&lt;br /&gt;
| Normal || accepted (202)&lt;br /&gt;
|-&lt;br /&gt;
| Error || unauthorized (401), itemNotFound (404)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
'''Response Parameters'''&lt;br /&gt;
&lt;br /&gt;
N/A&lt;br /&gt;
&lt;br /&gt;
'''JSON Request'''&lt;br /&gt;
&lt;br /&gt;
N/A&lt;br /&gt;
&lt;br /&gt;
'''JSON Response'''&lt;br /&gt;
&lt;br /&gt;
N/A&lt;br /&gt;
&lt;br /&gt;
===Testing===&lt;br /&gt;
&lt;br /&gt;
Cue API testing will verify the expected functionality of the Cue user interface with both positive/negative tests.  The overall scope will cover testing from the HTTP REST request to required database interactions and work-flow task submission for RPC workers.&lt;br /&gt;
&lt;br /&gt;
====Unit Tests====&lt;br /&gt;
&lt;br /&gt;
Unit tests will verify the resulting function calls for each REST-ful URI and action(s).  The Python Mock library will be used to replace external system dependencies with placeholder objects.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Function !! Tests !! Input Data !! Expected Result(s)&lt;br /&gt;
|-&lt;br /&gt;
| List Clusters || &lt;br /&gt;
# Create 'n' cluster(s), then call list clusters and verify expected return object&lt;br /&gt;
# Call list clusters when no clusters exist within the project id and verify expected return object&lt;br /&gt;
|| &lt;br /&gt;
* n = # of clusters to create&lt;br /&gt;
||&lt;br /&gt;
# List of 'n' clusters is returned with appropriate fields, HTTP Ok (200)&lt;br /&gt;
# Empty list of clusters is returned, HTTP Ok (200)&lt;br /&gt;
|-&lt;br /&gt;
| Create Cluster || &lt;br /&gt;
# Create standard cluster 'c' and verify expected return object&lt;br /&gt;
# Create cluster with invalid flavor and verify expected return value&lt;br /&gt;
# Create cluster with invalid volume size and verify expected return value&lt;br /&gt;
||&lt;br /&gt;
* n = cluster size (number of nodes)&lt;br /&gt;
* m = cluster name&lt;br /&gt;
* f = flavor&lt;br /&gt;
* s = volume size&lt;br /&gt;
* nic = Network UUID&lt;br /&gt;
||&lt;br /&gt;
# Cluster ID, name and status for newly created cluster is returned, HTTP Accepted (202)&lt;br /&gt;
# HTTP Bad request is returned (400)&lt;br /&gt;
# HTTP Bad request is returned (400)&lt;br /&gt;
|-&lt;br /&gt;
| Show Cluster ||&lt;br /&gt;
# Create cluster, then call get cluster and verify expected return object&lt;br /&gt;
# Get cluster with invalid cluster_id&lt;br /&gt;
||&lt;br /&gt;
* cluster_id = cluster ID&lt;br /&gt;
||&lt;br /&gt;
# Cluster ID, name, status, created/updated date stamp and list of nodes is returned, HTTP Ok (200).&lt;br /&gt;
# HTTP Bad request is returned (400)&lt;br /&gt;
|-&lt;br /&gt;
| Delete Cluster || &lt;br /&gt;
# Create a cluster, then call delete cluster and verify expected return value&lt;br /&gt;
# Delete cluster with invalid cluster_id&lt;br /&gt;
||&lt;br /&gt;
* cluster_id = cluster ID&lt;br /&gt;
||&lt;br /&gt;
# HTTP accepted is returned (202)&lt;br /&gt;
# HTTP Bad request is returned (400)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====Functional Tests====&lt;br /&gt;
&lt;br /&gt;
The functional tests will verify the HTTP REST URI request lifecycle from controller routing to HTTP response.  These tests will make use of Pecan's testing utility; pecan.testing module.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Operation !! URI !! Tests !! Input Data !! Expected Data (JSON)&lt;br /&gt;
|-&lt;br /&gt;
| GET || /v1/clusters || &lt;br /&gt;
# Call when clusters exist&lt;br /&gt;
# Call when no clusters exist&lt;br /&gt;
|| &lt;br /&gt;
* n/a&lt;br /&gt;
||&lt;br /&gt;
# List of 'n' clusters is returned with appropriate fields, HTTP Ok (200)&lt;br /&gt;
# Empty list of clusters is returned, HTTP Ok (200)&lt;br /&gt;
|-&lt;br /&gt;
| POST || /v1/clusters ||&lt;br /&gt;
# Create standard cluster 'c' and verify expected return object&lt;br /&gt;
# Create cluster with invalid flavor and verify expected return value&lt;br /&gt;
# Create cluster with invalid volume size and verify expected return value&lt;br /&gt;
|| &lt;br /&gt;
* n = cluster size (number of nodes)&lt;br /&gt;
* m = cluster name&lt;br /&gt;
* f = flavor&lt;br /&gt;
* s = volume size&lt;br /&gt;
* nic = Network UUID&lt;br /&gt;
||&lt;br /&gt;
# Cluster ID, name and status for newly created cluster is returned, HTTP Accepted (202)&lt;br /&gt;
# HTTP Bad request is returned (400)&lt;br /&gt;
# HTTP Bad request is returned (400)&lt;br /&gt;
||&lt;br /&gt;
|-&lt;br /&gt;
| GET || /v1/clusters/{cluster_id} || &lt;br /&gt;
# Create cluster, then call get cluster and verify expected return object&lt;br /&gt;
# Get cluster with invalid cluster_id&lt;br /&gt;
|| &lt;br /&gt;
* cluster_id = cluster &lt;br /&gt;
||&lt;br /&gt;
# Cluster ID, name, status, created/updated date stamp and list of nodes is returned, HTTP Ok (200).&lt;br /&gt;
# HTTP Bad request is returned (400)&lt;br /&gt;
||&lt;br /&gt;
|-&lt;br /&gt;
| DELETE || /v1/clusters/{cluster_id} ||&lt;br /&gt;
# Create a cluster, then call delete cluster and verify expected return value&lt;br /&gt;
# Delete cluster with invalid cluster_id&lt;br /&gt;
||&lt;br /&gt;
* cluster_id = cluster ID&lt;br /&gt;
||&lt;br /&gt;
# HTTP accepted is returned (202)&lt;br /&gt;
# HTTP Bad request is returned (400)&lt;br /&gt;
||&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====Integration Tests====&lt;br /&gt;
&lt;br /&gt;
The integration tests will cover API functionality from HTTP request to database access and task submission for RPC workers.  The Pecan test utility will be used to route test request URI to appropriate controllers, then database record(s) will be verified for applicable change.  Finally the creation of task objections will be verified to ensure valid task flows.&lt;/div&gt;</summary>
		<author><name>Vipuls</name></author>	</entry>

	<entry>
		<id>https://wiki.openstack.org/w/index.php?title=File:Cue-arch.png&amp;diff=80051</id>
		<title>File:Cue-arch.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.openstack.org/w/index.php?title=File:Cue-arch.png&amp;diff=80051"/>
				<updated>2015-05-04T18:26:49Z</updated>
		
		<summary type="html">&lt;p&gt;Vipuls: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Vipuls</name></author>	</entry>

	<entry>
		<id>https://wiki.openstack.org/w/index.php?title=Meetings/Cue&amp;diff=76725</id>
		<title>Meetings/Cue</title>
		<link rel="alternate" type="text/html" href="https://wiki.openstack.org/w/index.php?title=Meetings/Cue&amp;diff=76725"/>
				<updated>2015-04-01T22:04:09Z</updated>
		
		<summary type="html">&lt;p&gt;Vipuls: /* Next meetings */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Weekly Cue meeting =&lt;br /&gt;
&lt;br /&gt;
The [https://launchpad.net/cue Cue] project holds a weekly team meeting every Tuesday at following time/place:&lt;br /&gt;
* [http://www.timeanddate.com/worldclock/fixedtime.html?hour=18&amp;amp;min=0&amp;amp;sec=0%201900%20UTC 18:00 UTC] in &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;#openstack-meeting-alt&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Next meeting ==&lt;br /&gt;
April 7, 2015 - http://www.timeanddate.com/worldclock/fixedtime.html?msg=Cue+Weekly+Meeting&amp;amp;iso=20150407T18&amp;amp;p1=1440&amp;amp;ah=1&lt;br /&gt;
&lt;br /&gt;
==== Agenda ====&lt;br /&gt;
* Kick-off!&lt;br /&gt;
* Integration Testing&lt;br /&gt;
* Open Discussion&lt;/div&gt;</summary>
		<author><name>Vipuls</name></author>	</entry>

	<entry>
		<id>https://wiki.openstack.org/w/index.php?title=Meetings/Cue&amp;diff=76712</id>
		<title>Meetings/Cue</title>
		<link rel="alternate" type="text/html" href="https://wiki.openstack.org/w/index.php?title=Meetings/Cue&amp;diff=76712"/>
				<updated>2015-04-01T18:46:24Z</updated>
		
		<summary type="html">&lt;p&gt;Vipuls: /* Weekly Cue meeting */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Weekly Cue meeting =&lt;br /&gt;
&lt;br /&gt;
The [https://launchpad.net/cue Cue] project holds a weekly team meeting every Tuesday at following time/place:&lt;br /&gt;
* [http://www.timeanddate.com/worldclock/fixedtime.html?hour=18&amp;amp;min=0&amp;amp;sec=0%201900%20UTC 18:00 UTC] in &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;#openstack-meeting-alt&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Next meetings ==&lt;br /&gt;
http://www.timeanddate.com/worldclock/fixedtime.html?msg=Cue+Weekly+Meeting&amp;amp;iso=20150407T18&amp;amp;p1=1440&amp;amp;ah=1&lt;br /&gt;
&lt;br /&gt;
==== Agenda ====&lt;br /&gt;
* Kick-off!&lt;/div&gt;</summary>
		<author><name>Vipuls</name></author>	</entry>

	<entry>
		<id>https://wiki.openstack.org/w/index.php?title=Meetings/Cue&amp;diff=76711</id>
		<title>Meetings/Cue</title>
		<link rel="alternate" type="text/html" href="https://wiki.openstack.org/w/index.php?title=Meetings/Cue&amp;diff=76711"/>
				<updated>2015-04-01T18:42:34Z</updated>
		
		<summary type="html">&lt;p&gt;Vipuls: Created page with &amp;quot;= Weekly Cue meeting =  The [https://launchpad.net/cue Cue] project holds a weekly team meeting at following time/place: * [http://www.timeanddate.com/worldclock/fixedtime.htm...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Weekly Cue meeting =&lt;br /&gt;
&lt;br /&gt;
The [https://launchpad.net/cue Cue] project holds a weekly team meeting at following time/place:&lt;br /&gt;
* [http://www.timeanddate.com/worldclock/fixedtime.html?hour=18&amp;amp;min=0&amp;amp;sec=0%201900%20UTC 18:00 UTC] in &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;#openstack-meeting-alt&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Next meetings ==&lt;br /&gt;
&lt;br /&gt;
==== Agenda ====&lt;/div&gt;</summary>
		<author><name>Vipuls</name></author>	</entry>

	<entry>
		<id>https://wiki.openstack.org/w/index.php?title=Meetings&amp;diff=76710</id>
		<title>Meetings</title>
		<link rel="alternate" type="text/html" href="https://wiki.openstack.org/w/index.php?title=Meetings&amp;diff=76710"/>
				<updated>2015-04-01T18:40:13Z</updated>
		
		<summary type="html">&lt;p&gt;Vipuls: /* Zaqar (Messaging and Notification) team meeting */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The OpenStack project holds its various public meetings on '''IRC''', in the &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;#openstack-meeting&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;#openstack-meeting-alt&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;,  &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;#openstack-meeting-3&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;,  and &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;#openstack-meeting-4&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; channels on Freenode. Everyone is encouraged to attend. [http://webchat.freenode.net?randomnick=1&amp;amp;channels=%23openstack-meeting%2C%23openstack-meeting-alt%2C%23openstack-meeting-3%2C%23openstack-meeting-4&amp;amp;prompt=1&amp;amp;uio=d4 Connect to IRC via webclient].&lt;br /&gt;
&lt;br /&gt;
Some guidance on how to create a meeting can be found here: [[Meetings/CreateaMeeting]]&lt;br /&gt;
&lt;br /&gt;
You can also access the [https://www.google.com/calendar/ical/bj05mroquq28jhud58esggqmh4@group.calendar.google.com/public/basic.ics iCal feed for all OpenStack meetings].&lt;br /&gt;
&lt;br /&gt;
== OpenStack Cross-Project meeting ==&lt;br /&gt;
* Weekly on Tuesdays at [http://www.timeanddate.com/worldclock/fixedtime.html?hour=21&amp;amp;min=0&amp;amp;sec=0 2100] UTC&lt;br /&gt;
* IRC channel: &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;#openstack-meeting&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
* Chair (to contact for more information): [[ThierryCarrez]]&lt;br /&gt;
* See [[Meetings/CrossProjectMeeting]] for details&lt;br /&gt;
&lt;br /&gt;
== Technical Committee meeting ==&lt;br /&gt;
* Weekly on Tuesdays at [http://www.timeanddate.com/worldclock/fixedtime.html?hour=20&amp;amp;min=0&amp;amp;sec=0 2000] UTC&lt;br /&gt;
* IRC channel: &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;#openstack-meeting&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
* Chair (to contact for more information): [[ThierryCarrez]]&lt;br /&gt;
* See [[Meetings/TechnicalCommittee]] for details&lt;br /&gt;
&lt;br /&gt;
== OpenStack Compute (Nova) ==&lt;br /&gt;
=== Nova team Meeting ===&lt;br /&gt;
* Weekly on Thursdays, alternating times - [http://www.timeanddate.com/worldclock/fixedtime.html?hour=14&amp;amp;min=0&amp;amp;sec=0 1400] UTC and [http://www.timeanddate.com/worldclock/fixedtime.html?hour=21&amp;amp;min=0&amp;amp;sec=0 2100] UTC&lt;br /&gt;
** For 2014 - odd weeks at 1400, even weeks at 2100 (date &amp;quot;+%U&amp;quot;)&lt;br /&gt;
* IRC  channel: &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;#openstack-meeting&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
* Chair (to contact for more information): Michael Still (even weeks), John Garbutt (odd weeks)&lt;br /&gt;
* See [[Meetings/Nova]] for an agenda&lt;br /&gt;
&lt;br /&gt;
=== XenAPI team meeting ===&lt;br /&gt;
* Weekly on Wednesdays at [http://www.timeanddate.com/worldclock/fixedtime.html?hour=15&amp;amp;min=0&amp;amp;sec=0 1500] UTC&lt;br /&gt;
* IRC channel: &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;#openstack-meeting&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
* Chaired by: [[JohnGarbutt]]&lt;br /&gt;
* See [[Meetings/XenAPI]] for agenda&lt;br /&gt;
&lt;br /&gt;
=== Nova Hyper-V team meeting ===&lt;br /&gt;
* Weekly on Tuesdays at [http://www.timeanddate.com/worldclock/fixedtime.html?hour=16&amp;amp;min=0&amp;amp;sec=0 1600] UTC&lt;br /&gt;
* IRC channel: &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;#openstack-meeting&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
* Chaired by primeministerp (Peter Pouliot)&lt;br /&gt;
* See [[Meetings/Hyper-V|Meetings/Hyper-V]]  for agenda and details&lt;br /&gt;
&lt;br /&gt;
=== Gantt (Scheduler) team meeting ===&lt;br /&gt;
* Weekly on Tuesdays at [http://www.timeanddate.com/worldclock/fixedtime.html?hour=15&amp;amp;min=0&amp;amp;sec=0 1500] UTC&lt;br /&gt;
* IRC channel:  &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;#openstack-meeting&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
* Chair (to contact for more information): n0ano (Don Dugger)&lt;br /&gt;
* See [[Meetings/Scheduler]] for details&lt;br /&gt;
&lt;br /&gt;
=== VMwareAPI team meeting ===&lt;br /&gt;
* Weekly on Wednesdays at [http://www.timeanddate.com/worldclock/fixedtime.html?hour=17&amp;amp;min=0&amp;amp;sec=0 1700] UTC&lt;br /&gt;
* IRC channel:  &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;#openstack-meeting&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
* Chair: [[TracyJones]]&lt;br /&gt;
* See [[Meetings/VMwareAPI]] for details&lt;br /&gt;
&lt;br /&gt;
=== PCI Passthrough Meeting ===&lt;br /&gt;
* Biweekly on Tuesday at [http://www.worldclock.com/world_clock.html 1300 UTC] &lt;br /&gt;
* IRC channel: &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;#openstack-meeting-alt&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
* Chair: baoli (Robert Li)&lt;br /&gt;
* See [[Meetings/Passthrough]] for details&lt;br /&gt;
&lt;br /&gt;
=== Nova API meeting ===&lt;br /&gt;
* Weekly on Friday at [http://www.timeanddate.com/worldclock/fixedtime.html?hour=00&amp;amp;min=0&amp;amp;sec=0 00ː00] UTC&lt;br /&gt;
* IRC channel:  &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;#openstack-meeting&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
* Chair: Chris Yeoh&lt;br /&gt;
* See [[Meetings/NovaAPI]] for details&lt;br /&gt;
&lt;br /&gt;
=== Libvirt Meeting ===&lt;br /&gt;
* Weekly on Tuesday at [http://www.timeanddate.com/worldclock/fixedtime.html?hour=15&amp;amp;min=00&amp;amp;sec=0p1=0 15:00 UTC]&lt;br /&gt;
* IRC channel &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;#openstack-meeting-3&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
* Chair: Daniel Berrange (IRC: danpb)&lt;br /&gt;
* See [[Meetings/Libvirt]] for details&lt;br /&gt;
&lt;br /&gt;
=== Nova Cellsv2 Meeting ===&lt;br /&gt;
* Weekly on Wednesdays, alternating times - [http://www.timeanddate.com/worldclock/fixedtime.html?hour=17&amp;amp;min=00&amp;amp;sec=0p1=0 17:00 UTC] and [http://www.timeanddate.com/worldclock/fixedtime.html?hour=21&amp;amp;min=00&amp;amp;sec=0p1=0 21:00 UTC]&lt;br /&gt;
* IRC channel &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;#openstack-meeting-3&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
* Chair: Andrew Laski (IRC: alaski)&lt;br /&gt;
* See [[Meetings/NovaCellsv2]] for details&lt;br /&gt;
&lt;br /&gt;
== Documentation team meeting ==&lt;br /&gt;
* Every other Wednesday at alternating times, see  [[Meetings/DocTeamMeeting]]&lt;br /&gt;
* IRC channel: &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;#openstack-meeting&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
* Chair (to contact for more information): [[AnneGentle]]&lt;br /&gt;
* See [[Meetings/DocTeamMeeting]] for an agenda&lt;br /&gt;
&lt;br /&gt;
===HA Guide Update Meeting ===&lt;br /&gt;
* Every Thursday at 21:00 UTC &lt;br /&gt;
* IRC channel: &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;#openstack-meeting-3&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
* Chair (to contact for more information): [[MattGriffin]]&lt;br /&gt;
* See  [https://etherpad.openstack.org/p/openstack-haguide-update Etherpad] for an agenda&lt;br /&gt;
&lt;br /&gt;
===Networking Guide Update Meeting ===&lt;br /&gt;
* Every Friday at 21:00 UTC &lt;br /&gt;
* Google Hangout: https://plus.google.com/hangouts/_/mirantis.com/networking?authuser=0&lt;br /&gt;
* Chair (to contact for more information): [[NickChase]]&lt;br /&gt;
* See past status reports on the openstack-docs mailing list for typical agenda&lt;br /&gt;
&lt;br /&gt;
== Project Infrastructure team meeting ==&lt;br /&gt;
* Weekly on Tuesdays at 1900 UTC&lt;br /&gt;
* IRC channel: &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;#openstack-meeting&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
* Chair (to contact for more information): [[User:Corvus|James E. Blair (jeblair)]]&lt;br /&gt;
* See [[Meetings/InfraTeamMeeting]] for an agenda&lt;br /&gt;
&lt;br /&gt;
== QA team meeting ==&lt;br /&gt;
* Weekly on Thursdays at 1700/2200 UTC (alternating)&lt;br /&gt;
* IRC channel: &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;#openstack-meeting&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
* Chair (to contact for more information): Matt Treinish&lt;br /&gt;
* See [[Meetings/QATeamMeeting]] for an agenda&lt;br /&gt;
&lt;br /&gt;
== DefCore / RefStack Development Meeting ==&lt;br /&gt;
* Weekly on Mondays at 1900 UTC / (1100 PST / 1200 PDT)&lt;br /&gt;
* IRC channel: &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;#openstack-meeting-alt&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
* PTL: David Lenwell&lt;br /&gt;
* DefCore Chairs (to contact for more information): Rob &amp;quot;zehicle&amp;quot; Hirschfeld &amp;amp; Egle Sigler&lt;br /&gt;
* See [[Meetings/DefCore]] for an agenda&lt;br /&gt;
&lt;br /&gt;
== DefCore Progress Update Meeting ==&lt;br /&gt;
* Weekly from Jan 2015 through April 2015&lt;br /&gt;
* 9 am PT, 60 minutes (will follow daylight savings time)&lt;br /&gt;
* Agenda &amp;amp; Connection Details at https://etherpad.openstack.org/p/DefCoreScale.5 (and increments)&lt;br /&gt;
* Chairs (to contact for more information): Rob &amp;quot;@zehicle&amp;quot; Hirschfeld &amp;amp; Egle Sigler&lt;br /&gt;
*  2/20/2015 DefCoreScale.F2F 10am-4pm Central Details at https://etherpad.openstack.org/p/DefCoreScale.F2F&lt;br /&gt;
&lt;br /&gt;
== State management team meeting ==&lt;br /&gt;
&lt;br /&gt;
Please refer to: [[Meetings#Oslo_Team_meeting|Oslo team meeting]]&lt;br /&gt;
&lt;br /&gt;
== Keystone team meeting ==&lt;br /&gt;
* Weekly on Tuesdays at 1800 UTC&lt;br /&gt;
* IRC channel: &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;#openstack-meeting&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
* Chair (to contact for more information): Morgan Fainberg (morganfainberg)&lt;br /&gt;
* See [[Meetings/KeystoneMeeting]] for an agenda&lt;br /&gt;
&lt;br /&gt;
== Ironic (Bare Metal) team meeting ==&lt;br /&gt;
* Alternating weeks on Mondays at 1700 UTC or Tuesday at 0500 UTC&lt;br /&gt;
* IRC channel: &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;#openstack-meeting-3&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
* Chair (to contact for more infomation) Devananda van der Veen (devananda)&lt;br /&gt;
* see [[Meetings/Ironic]] for agenda&lt;br /&gt;
&lt;br /&gt;
== TripleO team meeting ==&lt;br /&gt;
* Weekly on Tuesdays at 1900 UTC or Wednesdays at 0800 UTC (alternate weeks) (see the [https://www.google.com/calendar/ical/bj05mroquq28jhud58esggqmh4@group.calendar.google.com/public/basic.ics iCal feed] to check the time this week)&lt;br /&gt;
* IRC channel: &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;#openstack-meeting-alt&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
* Chair (to contact for more infomation) Clint Byrum (spamaps)&lt;br /&gt;
* see [[Meetings/TripleO]] for agenda&lt;br /&gt;
&lt;br /&gt;
== TripleO/Kolla team meeting ==&lt;br /&gt;
* Weekly on Mondays at 2000 UTC&lt;br /&gt;
* IRC channel: &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;#openstack-meeting&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
* Chair (to contact for more infomation) Steven Dake (sdake)&lt;br /&gt;
* see [[Meetings/Kolla]] for agenda&lt;br /&gt;
&lt;br /&gt;
== OpenStack Networking (Neutron) ==&lt;br /&gt;
=== Neutron team meeting ===&lt;br /&gt;
* Weekly alternating between Mondays at 2100 UTC and Tuesdays at 1400 UTC.&lt;br /&gt;
* IRC channel: &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;#openstack-meeting&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; Mondays, &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;#openstack-meeting&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; Tuesdays&lt;br /&gt;
* Chair (to contact for more information) Kyle Mestery (mestery)&lt;br /&gt;
* see [[Network/Meetings]] for agenda&lt;br /&gt;
&lt;br /&gt;
=== LBaaS meeting ===&lt;br /&gt;
* Weekly on Tuesdays at 1600 UTC&lt;br /&gt;
* IRC channel: &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;#openstack-meeting-4&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
* Chair (to contact for more information) mestery (Kyle Mestery)&lt;br /&gt;
* see [[Network/LBaaS]] for agenda&lt;br /&gt;
&lt;br /&gt;
=== Octavia meeting ===&lt;br /&gt;
* Weekly on Wednesdays at 2000 UTC&lt;br /&gt;
* IRC channel: &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;#openstack-meeting-alt&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
* Chair (to contact for more information) sbalukoff (Stephen Balukoff)&lt;br /&gt;
* see [[Octavia/Weekly Meeting Agenda]] for agenda&lt;br /&gt;
&lt;br /&gt;
=== ML2 Network sub-team meeting ===&lt;br /&gt;
* Weekly on Wednesdays at 1600 UTC&lt;br /&gt;
* IRC channel: &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;#openstack-meeting-alt&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
* Chair (to contact for more information): rkukura/Suhkdev (Bob Kukura / Sukhdev Kapur)&lt;br /&gt;
* See [[Meetings/ML2]] for details&lt;br /&gt;
&lt;br /&gt;
=== Firewall as a Service (FWaaS) team meeting ===&lt;br /&gt;
* Weekly on Wednesdays at [http://www.timeanddate.com/worldclock/fixedtime.html?msg=OpenStack+Neutron+FWaaS+IRC&amp;amp;iso=20140326T1830&amp;amp;p1=1440&amp;amp;ah=1 1830 UTC] &lt;br /&gt;
* IRC channel: &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;#openstack-meeting-3&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
* Chair: snaiksat (Sumit Naiksatam)&lt;br /&gt;
* See [[Meetings/FWaaS]] for details&lt;br /&gt;
&lt;br /&gt;
=== Neutron Advanced Services' team meeting ===&lt;br /&gt;
* Weekly on Tuesdays at [http://www.timeanddate.com/worldclock/fixedtime.html?msg=Neutron+Advanced+Services&amp;amp;iso=20141111T17&amp;amp;p1=1440  1700 UTC] &lt;br /&gt;
* IRC channel: &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;#openstack-meeting-4&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
* Chair: snaiksat (Sumit Naiksatam)&lt;br /&gt;
* See [[Meetings/AdvancedServices]] for details&lt;br /&gt;
&lt;br /&gt;
=== Neutron IPv6 sub-team Meeting ===	 &lt;br /&gt;
* Weekly on Tuesdays at [http://www.worldclock.com/world_clock.html 1500 UTC] &lt;br /&gt;
* IRC channel: &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;#openstack-meeting-alt&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;	&lt;br /&gt;
* Chair: sc68cal (Sean M. Collins)&lt;br /&gt;
* See [[Meetings/Neutron-IPv6-Subteam]] for details&lt;br /&gt;
&lt;br /&gt;
=== Neutron Distributed Virtual Router meeting ===&lt;br /&gt;
* Weekly on Wednesdays at  [http://www.worldclock.com/world_clock.html 1500 UTC]&lt;br /&gt;
* IRC channel: &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;#openstack-meeting-alt&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
* Chair:Swami (Swaminathan Vasudevan)&lt;br /&gt;
* See [[Meetings/Distributed-Virtual-Router]] for details&lt;br /&gt;
&lt;br /&gt;
=== Neutron blueprint ovs-firewall-driver Meeting ===&lt;br /&gt;
* Tentative: Monday, December 16 at 2000 UTC&lt;br /&gt;
* IRC channel: &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;#openstack-meeting&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
* Chair: asadoughi (Amir Sadoughi)&lt;br /&gt;
* Agenda: See [[Meetings/Neutron_blueprint_ovs-firewall-driver]]&lt;br /&gt;
&lt;br /&gt;
=== Neutron L3 Sub Team Meeting ===&lt;br /&gt;
* Weekly on Thursday at 1500 UTC&lt;br /&gt;
* IRC channel: &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;#openstack-meeting-3&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
* Chair: carl_baldwin (Carl Baldwin)&lt;br /&gt;
* Agenda: See [[Meetings/Neutron-L3-Subteam]]&lt;br /&gt;
&lt;br /&gt;
=== Neutron ServiceVM framework Sub Team Meeting ===&lt;br /&gt;
* Weekly on Wednesdays at 1700UTC from Nov 19, 2014&lt;br /&gt;
(Time slot/channel was changed from Nov 19, 2014.)&lt;br /&gt;
* IRC channel: &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;#openstack-meeting-4&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
* Chair: yamahata (Isaku Yamahata)&lt;br /&gt;
* Agenda: See [[Meetings/ServiceVM]]&lt;br /&gt;
&lt;br /&gt;
=== neutron-drivers weekly IRC meeting ===&lt;br /&gt;
* Weekly on Wednesdays at 1530-1630 UTC&lt;br /&gt;
* IRC channel: &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;#openstack-meeting-3&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
* Chair: mestery (Kyle Mestery)&lt;br /&gt;
* Agenda: See [[Meetings/NeutronDrivers]]&lt;br /&gt;
&lt;br /&gt;
=== VPN as a Service (VPNaaS) team meeting ===&lt;br /&gt;
* Weekly on Tuesdays at [http://www.timeanddate.com/worldclock/fixedtime.html?msg=OpenStack+Neutron+VPNaaS+IRC&amp;amp;iso=20140326T1600&amp;amp;p1=1440&amp;amp;ah=1 1600 UTC] &lt;br /&gt;
* IRC channel: &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;#openstack-meeting-3&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
* Chair: pc_m (Paul Michali)&lt;br /&gt;
* See [[Meetings/VPNaaS]] for details&lt;br /&gt;
&lt;br /&gt;
=== Networking L2 Gateway meeting ===&lt;br /&gt;
* Bi-weekly on Mondays (Every other Monday starting from January 5, 2015) at 1800 UTC&lt;br /&gt;
* IRC channel: &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;#openstack-meeting-alt&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
* Chair (to contact for more information): armax/Suhkdev (Armando Migliaccio / Sukhdev Kapur)&lt;br /&gt;
* See [[Meetings/L2Gateway]] for details&lt;br /&gt;
&lt;br /&gt;
=== Nova-net to Neutron Migration meeting ===&lt;br /&gt;
* Weekly Tuesdays at 0900 UTC&lt;br /&gt;
* IRC channel: &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;#openstack-meeting&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; Tuesdays&lt;br /&gt;
* Chair (to contact for more information) Anita Kuno (anteaya)&lt;br /&gt;
* see [[Meetings/Nova-nettoNeutronMigration]] for agenda&lt;br /&gt;
* Currently on hold pending the outcome of the discussion on the mailing list: http://lists.openstack.org/pipermail/openstack-dev/2015-March/060029.html&lt;br /&gt;
&lt;br /&gt;
== Group Based Policy Team Meeting ==&lt;br /&gt;
* Weekly on Thursdays at 1800 UTC&lt;br /&gt;
* IRC channel: &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;#openstack-meeting-3&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
* Chair: SumitNaiksatam (Sumit Naiksatam)&lt;br /&gt;
* See [[Meetings/GroupBasedPolicy]] for details&lt;br /&gt;
&lt;br /&gt;
== Cinder team meeting ==&lt;br /&gt;
* Weekly on Wednesdays at [http://www.timeanddate.com/worldclock/fixedtime.html?hour=16&amp;amp;min=0&amp;amp;sec=0 1600] UTC&lt;br /&gt;
* IRC channel: &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;#openstack-meeting&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
* Chaired by [[JohnGriffith]]&lt;br /&gt;
* see [[CinderMeetings]] for agenda&lt;br /&gt;
&lt;br /&gt;
== Ceilometer team meeting ==&lt;br /&gt;
*  '''Every''' week on Thursdays at [http://www.timeanddate.com/worldclock/fixedtime.html?hour=15&amp;amp;min=0&amp;amp;sec=0 1500 UTC].&lt;br /&gt;
* IRC channel: &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;#openstack-meeting&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
* Chaired by eglynn (Eoghan Glynn)&lt;br /&gt;
* see [[Meetings/Ceilometer]] for details&lt;br /&gt;
&lt;br /&gt;
== Designate (DNSaaS) meeting ==&lt;br /&gt;
* Weekly Wednesdays at 1700 UTC&lt;br /&gt;
* IRC channel: &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;#openstack-meeting-alt&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
* Chair (to contact for more information): Kiall Mac Innes (kiall)&lt;br /&gt;
* See [[Meetings/Designate]] for details&lt;br /&gt;
&lt;br /&gt;
== Monasca (MONaaS) meeting ==&lt;br /&gt;
* Weekly Tuesdays at 1600 UTC&lt;br /&gt;
* via Vidyo Conferencing (http://www.vidyo.com/), Hosted by Rackspace&lt;br /&gt;
* Chair (to contact for more information): Roland Hochmuth&lt;br /&gt;
* See [[Meetings/Monasca]] for details&lt;br /&gt;
&lt;br /&gt;
== Trove (DBaaS) meeting ==&lt;br /&gt;
* Weekly on Wednesdays at 1800 UTC&lt;br /&gt;
* IRC channel: &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;#openstack-meeting-alt&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
* Chair (to contact for more information): [https://launchpad.net/~slicknik Nikhil Manchanda] (SlickNik) / [https://launchpad.net/~hubcap Michael Basnight] (hub_cap) / [https://launchpad.net/~vipuls Vipul Sabhaya] (vipul) /  [https://launchpad.net/~tim-simpson Tim Simpson] (grapex) / [https://launchpad.net/~amcrn Auston McReynolds] (amcrn) / [https://launchpad.net/~cp16net Craig Vyvial] (cp16net)&lt;br /&gt;
* See [[Meetings/TroveMeeting]] for details&lt;br /&gt;
* For BP Meeting, please see [[Meetings/TroveBPMeeting]] for more details&lt;br /&gt;
&lt;br /&gt;
== Zaqar (Messaging and Notification) team meeting ==&lt;br /&gt;
* Weekly on Mondays, alternating between 2100 UTC and 1500 UTC (starting with 2100 UTC on 8/4)&lt;br /&gt;
* IRC channel: &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;#openstack-meeting-3&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
* Chair (to contact for more information): Flavio Percoco (flaper87), Kurt Griffiths (kgriffs)&lt;br /&gt;
* See [[Meetings/Zaqar]] for details&lt;br /&gt;
&lt;br /&gt;
== Cue (Message Broker as a Service) team meeting ==&lt;br /&gt;
* Weekly on Tuesdays at 1800 UTC&lt;br /&gt;
* IRC channel: &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;#openstack-meeting-alt&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
* Chair (to contact for more information): Vipul Sabhaya (vipul)&lt;br /&gt;
* See [[Meetings/Cue]] for details&lt;br /&gt;
&lt;br /&gt;
== OpenStack Data Processing (Sahara) team meeting ==&lt;br /&gt;
* Weekly on Thursdays at 1400 UTC and 1800 UTC (on alternate weeks)&lt;br /&gt;
* IRC channel: &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;#openstack-meeting-alt&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;(1800UTC) and &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;#openstack-meeting-3&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;(1400UTC)&lt;br /&gt;
* Chair (to contact for more info): SergeyLukjanov (Sergey Lukjanov)&lt;br /&gt;
* See [[Meetings/SaharaAgenda]] for details&lt;br /&gt;
&lt;br /&gt;
== Mistral meeting ==&lt;br /&gt;
* Weekly on Mondays at 1600 UTC&lt;br /&gt;
* IRC channel: &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;#openstack-meeting&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
* Chair: rakhmerov (Renat Akhmerov)&lt;br /&gt;
* See [[Meetings/MistralAgenda]] for details&lt;br /&gt;
&lt;br /&gt;
== Murano meeting ==&lt;br /&gt;
* Weekly on Tuesday at 1700 UTC&lt;br /&gt;
* IRC channel: &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;#openstack-meeting-alt&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
* Chair: Serg Melikyan (sergmelikyan)&lt;br /&gt;
* See [[Meetings/MuranoAgenda]] for details&lt;br /&gt;
&lt;br /&gt;
== Heat (orchestration) team meeting ==&lt;br /&gt;
* Weekly on Wednesdays at 2000 UTC or 1200 UTC (on alternate weeks)&lt;br /&gt;
* IRC Channel: &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;#openstack-meeting&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
* Chair (to contact for more information): Zane Bitter (zaneb)&lt;br /&gt;
* See [[Meetings/HeatAgenda]] for details&lt;br /&gt;
&lt;br /&gt;
== Horizon team meeting ==&lt;br /&gt;
* Weekly on Wednesdays at [http://www.timeanddate.com/worldclock/fixedtime.html?hour=20&amp;amp;min=0&amp;amp;sec=0 2000] UTC or [http://www.timeanddate.com/worldclock/fixedtime.html?hour=12&amp;amp;min=0&amp;amp;sec=0 1200] UTC (on alternate weeks)&lt;br /&gt;
* IRC channel: &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;#openstack-meeting-3&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
* Chair: David Lyle (david-lyle)&lt;br /&gt;
* See [[Meetings/Horizon]] for details&lt;br /&gt;
&lt;br /&gt;
== Swift team meeting ==&lt;br /&gt;
* Weekly on Wednesdays at 1900 UTC&lt;br /&gt;
* IRC channel: &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;#openstack-meeting&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
* Chair: notmyname (John Dickinson)&lt;br /&gt;
* See [[Meetings/Swift]] for details&lt;br /&gt;
&lt;br /&gt;
== OpenStack Security Group (OSSG) meeting ==&lt;br /&gt;
* Weekly on Thursdays at 1700 UTC (1 hour duration)&lt;br /&gt;
* IRC channel: &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;#openstack-meeting-alt&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
* Chair (to contact for more information): hyakuhei (Rob Clark)&lt;br /&gt;
* See [[Meetings/OpenStackSecurity]] for an agenda&lt;br /&gt;
&lt;br /&gt;
== Python3 Compatibility Team meeting ==&lt;br /&gt;
* Not planned anymore&lt;br /&gt;
* IRC channel: &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;#openstack-meeting&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
* Chair (to contact for more information): jd_ (Julien Danjou)&lt;br /&gt;
* See [[Meetings/Python3]] for details&lt;br /&gt;
&lt;br /&gt;
== Glance Team meeting ==&lt;br /&gt;
* Weekly on Thursdays at [http://www.timeanddate.com/worldclock/fixedtime.html?hour=14&amp;amp;min=0&amp;amp;sec=0 1400]&lt;br /&gt;
* IRC channel: &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;#openstack-meeting-4&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
* Chair (to contact for more information): nikhil_k (Nikhil Komawar)&lt;br /&gt;
* See [[Meetings/Glance]] for details&lt;br /&gt;
&lt;br /&gt;
== Oslo Team meeting ==&lt;br /&gt;
&lt;br /&gt;
* Juno&lt;br /&gt;
** Every Friday at 1600 UTC ([http://www.timeanddate.com/worldclock/converted.html?iso=20140425T16&amp;amp;p1=0&amp;amp;p2=2133&amp;amp;p3=195&amp;amp;p4=224 timeanddate.com])&lt;br /&gt;
** IRC channel: &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;#openstack-meeting-alt&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
** Chair (to contact for more information): dhellmann (Doug Hellmann)&lt;br /&gt;
** See [[Meetings/Oslo]] for details&lt;br /&gt;
* Kilo (beginning 17 Nov 2014)&lt;br /&gt;
** Every Monday at 1600 UTC ([http://www.timeanddate.com/worldclock/converted.html?iso=20141117T16&amp;amp;p1=0&amp;amp;p2=2133&amp;amp;p3=195&amp;amp;p4=224 timeanddate.com])&lt;br /&gt;
** IRC channel: &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;#openstack-meeting-alt&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
** Chair (to contact for more information): dhellmann (Doug Hellmann)&lt;br /&gt;
** See [[Meetings/Oslo]] for details&lt;br /&gt;
&lt;br /&gt;
== OpenStack Community Office Hours ==&lt;br /&gt;
* Weekly on Tuesdays at [http://www.worldclock.com/world_clock.html 0800 UTC] and on Fridays at [http://www.worldclock.com/world_clock.html 1800 UTC] &lt;br /&gt;
* IRC channel: &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;#openstack-community&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
* Chair: fifieldt ([http://www.openstack.org/community/members/profile/369 Tom Fifield]) and reed ([http://www.openstack.org/community/members/profile/1372 Stefano Maffulli]) &lt;br /&gt;
* See [[Meetings/Community]] for details&lt;br /&gt;
&lt;br /&gt;
== OpenStack Community Infrastructure Meetings ==&lt;br /&gt;
&lt;br /&gt;
* Weekly on Mondays at [http://www.worldclock.com/world_clock.html 1700 UTC]&lt;br /&gt;
* IRC channel: &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;#openstack-meetings-alt&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
* Chair: reed ([http://www.openstack.org/community/members/profile/1372 Stefano Maffulli])&lt;br /&gt;
* See [[Meetings/Community]] for details&lt;br /&gt;
&lt;br /&gt;
== I18N Team meeting ==&lt;br /&gt;
=== Translation team meeting ===&lt;br /&gt;
* Bi-weekly on Thursday, at 0800 UTC&lt;br /&gt;
* IRC channel: &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;#openstack-meeting&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
* Chair: daisy&lt;br /&gt;
* See [[Meetings/I18nTeamMeeting]] for details&lt;br /&gt;
=== Translation test meeting ===&lt;br /&gt;
* Weekly on Tuesday, at 0000 UTC&lt;br /&gt;
* IRC channel: &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;#openstack-meeting-4&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
* Chair: daisy&lt;br /&gt;
&lt;br /&gt;
== Training-guides Team meeting ==&lt;br /&gt;
* Weekly on Monday at [http://www.timeanddate.com/time/zone/usa/san-francisco 1700 UTC] &lt;br /&gt;
* IRC channel: &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;#openstack-meeting&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
* Chair: sarob&lt;br /&gt;
* See [[Meetings/training-guides]] for details&lt;br /&gt;
&lt;br /&gt;
== Trainers Team meeting ==&lt;br /&gt;
* Weekly on Wednesday at [http://www.timeanddate.com/time/zone/usa/san-francisco 1800 UTC] &lt;br /&gt;
* IRC channel: &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;#openstack-meeting&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
* Chair: sarob&lt;br /&gt;
* See [[Meetings/trainers]] for details&lt;br /&gt;
&lt;br /&gt;
== Manila Team meeting ==&lt;br /&gt;
* Weekly on Thursday at [http://www.worldclock.com/current-local-time-in-san-francisco_598.htm 1500 UTC] &lt;br /&gt;
* IRC channel: &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;#openstack-meeting-alt&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
* Chair: bswartz&lt;br /&gt;
* See [[Manila/Meetings]] for details&lt;br /&gt;
&lt;br /&gt;
== Blazar (Reservations) team meeting ==&lt;br /&gt;
* Weekly on Fridays at [http://www.worldclock.com/world_clock.html 1500 UTC] &lt;br /&gt;
* IRC channel: &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;#openstack-meeting&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
* Chair: bauzas (Sylvain Bauza), DinaBelova (Dina Belova)&lt;br /&gt;
* See [[Meetings/Blazar]] for details&lt;br /&gt;
&lt;br /&gt;
== Rally meeting ==&lt;br /&gt;
* Weekly on Tuesdays at [http://www.worldclock.com/world_clock.html 1700 UTC] &lt;br /&gt;
* IRC channel:  &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;#openstack-meeting&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
* Chair:boris-42 (Boris Pavlovic)&lt;br /&gt;
* See [[Meetings/Rally]] for details&lt;br /&gt;
&lt;br /&gt;
== Solum Team Meeting ==&lt;br /&gt;
* Weekly on Tuesdays at 2100 UTC&lt;br /&gt;
* IRC channel:  &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;#openstack-meeting-alt&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
* Chair: adrian_otto (Adrian Otto)&lt;br /&gt;
* See [[Meetings/Solum]] for details&lt;br /&gt;
&lt;br /&gt;
== Congress Team Meeting ==&lt;br /&gt;
* Weekly on Tuesdays at [http://www.worldclock.com/world_clock.html 1700 UTC], e.g. Feb 25, 2014&lt;br /&gt;
* IRC channel: &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;#openstack-meeting-3&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
* Chair: pballand (Pete Balland) or thinrichs (Tim Hinrichs)&lt;br /&gt;
* See [[Meetings/Congress]] for details&lt;br /&gt;
&lt;br /&gt;
== Barbican Meeting ==&lt;br /&gt;
* Weekly on Mondays at [http://www.timeanddate.com/worldclock/fixedtime.html?hour=20&amp;amp;min=0&amp;amp;sec=0 2000 UTC]&lt;br /&gt;
* IRC channel: &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;#openstack-meeting-alt&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
* Chair (to contact for more information): jraim (#openstack-barbican @ Freenode)&lt;br /&gt;
* See [[Meetings/Barbican]] for an agenda&lt;br /&gt;
&lt;br /&gt;
== Chef Cookbook meetings ==&lt;br /&gt;
* Google Hangout Weekly on Mondays at 1530 UTC&lt;br /&gt;
* IRC channel Weekly on Thrusdays at 1530 UTC: &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;#openstack-chef&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
* Chair: JJ Asghar&lt;br /&gt;
* See [[Meetings/ChefCookbook]] for details&lt;br /&gt;
&lt;br /&gt;
== StoryBoard Meeting ==&lt;br /&gt;
* Weekly on Mondays at  1600 UTC&lt;br /&gt;
* IRC channel: &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;#openstack-meeting-3&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
* Chair: krotscheck, ttx, or NikitaKonovalov&lt;br /&gt;
* See [[StoryBoard]] for details&lt;br /&gt;
&lt;br /&gt;
== Hierarchical Multitenancy Meeting ==&lt;br /&gt;
* Weekly on Friday at [http://www.timeanddate.com/worldclock/fixedtime.html?hour=16&amp;amp;min=0&amp;amp;sec=0 1600] UTC&lt;br /&gt;
* IRC channel: &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;#openstack-meeting&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
* Chair: vishy/schwicke&lt;br /&gt;
* See [[Meetings/HierarchicalMultitenancyMeeting]] for details&lt;br /&gt;
&lt;br /&gt;
== python-openstacksdk Meeting ==&lt;br /&gt;
* Weekly on Tuesdays at [http://www.worldtimebuddy.com/?qm=1&amp;amp;lid=6,0,4726206,100&amp;amp;h=6&amp;amp;date=2014-2-11&amp;amp;sln=13-14 1900 UTC] starting 2/19/2014&lt;br /&gt;
* IRC channel: &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;#openstack-meeting-3&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
* Chair: jnoller&lt;br /&gt;
* See [[PythonOpenStackSDK]] for details&lt;br /&gt;
&lt;br /&gt;
== Satori Team Meeting ==&lt;br /&gt;
* Weekly on Mondays at [http://www.worldtimebuddy.com/?qm=1&amp;amp;lid=6,0,4726206,100&amp;amp;h=6&amp;amp;date=2014-2-11&amp;amp;sln=9-10 1500 UTC] starting Feb 24, 2014&lt;br /&gt;
* IRC channel: &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;#openstack-meeting-alt&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
* Chair: Ziad_Sawalha&lt;br /&gt;
* See [[Meetings/Satori]] for details&lt;br /&gt;
&lt;br /&gt;
== Fuel Team Meeting ==&lt;br /&gt;
* Weekly on Thursdays at [http://www.worldtimebuddy.com/?qm=1&amp;amp;lid=100&amp;amp;h=100&amp;amp;date=2014-3-27&amp;amp;sln=16-17 1600 UTC] starting Feb 27, 2014&lt;br /&gt;
* IRC channel: &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;#openstack-meeting-alt&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
* Chair: vkozhukalov&lt;br /&gt;
* See [[Meetings/Fuel]] for details&lt;br /&gt;
&lt;br /&gt;
== Third Party Meeting ==&lt;br /&gt;
* Meeting for any component to address Third Party needs&lt;br /&gt;
** Two times weekly: Mondays at 1500 UTC as well as Tuesdays at 0800 UTC&lt;br /&gt;
** IRC channel: &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;#openstack-meeting&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
** Chair: anteaya&lt;br /&gt;
** See [[Meetings/ThirdParty]] for details&lt;br /&gt;
* Working Group: improve the consumability of CI components and documentation (starting January 7th, 2015)&lt;br /&gt;
** Weekly on Wednesdays at 1500/0400 UTC (alternating)&lt;br /&gt;
** IRC channel: &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;#openstack-meeting-4&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
** Chair: krtaylor&lt;br /&gt;
** See [[Meetings/ThirdParty]] for details&lt;br /&gt;
&lt;br /&gt;
== MagnetoDB  Team meeting ==&lt;br /&gt;
* Every second week on Thursdays at 1400 UTC starting March 26th, 2015 (odd weeks)&lt;br /&gt;
* IRC channel: &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;#magnetodb&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
* Chair: aostapenko, isviridov, dukhlov&lt;br /&gt;
&lt;br /&gt;
== Telco Working Group Meeting ==&lt;br /&gt;
* Weekly alternating on Wednesdays alternating between 1400 UTC and 1900 UTC.&lt;br /&gt;
* IRC channel: &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;#openstack-meeting-alt&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; (@ 1400 UTC) and &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;#openstack-meeting-alt&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; (@ 1900 UTC)&lt;br /&gt;
* Chair: Stephen Gordon (steveg)&lt;br /&gt;
* See [[https://wiki.openstack.org/wiki/TelcoWorkingGroup]] or join #openstack-nfv for details.&lt;br /&gt;
&lt;br /&gt;
== Containers Team Meeting ==&lt;br /&gt;
* Weekly on Tuesdays at 1600/2200 UTC (alternating)&lt;br /&gt;
* IRC channel:  &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;#openstack-meeting-alt&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
* Chair: adrian_otto (Adrian Otto)&lt;br /&gt;
* See [[Meetings/Containers]] for details&lt;br /&gt;
&lt;br /&gt;
== User Experience (UX) Team Meeting ==&lt;br /&gt;
* Every second week on Mondays at [http://www.timeanddate.com/worldclock/fixedtime.html?hour=17&amp;amp;min=0&amp;amp;sec=0 1700] UTC starting July 7th, 2014 (even weeks)&lt;br /&gt;
* IRC channel:  &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;#openstack-meeting-3&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
* Chair: jcoufal (Jaromir Coufal)&lt;br /&gt;
* See [[Meetings/UX]] for details&lt;br /&gt;
&lt;br /&gt;
== Tetris Team Meeting ==&lt;br /&gt;
* Bi-Weely at 0100 UTC&lt;br /&gt;
* IRC channel:  &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;#tetris&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
* Chair: Jay (liugya@cn.ibm.com jay.lau.513@gmail.com)&lt;br /&gt;
* See [[Meetings/Tetris]] for details&lt;br /&gt;
&lt;br /&gt;
== Poppy Team Meeting ==&lt;br /&gt;
* Weekly on Thursdays at 1900 UTC&lt;br /&gt;
* IRC channel:  &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;#openstack-meeting-alt&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; starting August 7, 2014&lt;br /&gt;
* Chair: amitgandhinz (amit.gandhi@rackspace.com)&lt;br /&gt;
* See [[Meetings/Poppy]] for details&lt;br /&gt;
&lt;br /&gt;
== Puppet OpenStack Team Meeting ==&lt;br /&gt;
* Weekly on Tuesday at 1500 UTC&lt;br /&gt;
* IRC channel:  &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;#openstack-meeting-4&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; starting March 24, 2015&lt;br /&gt;
* Chair: crinkle (colleen@puppetlabs.com)&lt;br /&gt;
* See [[Meetings/PuppetOpenStack]] for details&lt;br /&gt;
&lt;br /&gt;
== API Work Group Team Meeting ==&lt;br /&gt;
* Weekly on Thursdays at 16:00UTC/00:00 UTC (alternating)&lt;br /&gt;
* IRC channel:  &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;#openstack-meeting-3&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; starting October 30, 2014&lt;br /&gt;
* Chair: &lt;br /&gt;
* See [[Meetings/API-WG]] for details&lt;br /&gt;
&lt;br /&gt;
== Swift-on-File ==&lt;br /&gt;
* Weekly on Thursday at 1400 UTC&lt;br /&gt;
* IRC channel: &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;#swiftonfile&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
* Chair: tdasilva (Thiago da Silva)&lt;br /&gt;
* See [[Meetings/swiftonfile]] for details&lt;br /&gt;
&lt;br /&gt;
== Openstack Operators Team Meeting ==&lt;br /&gt;
* Weekly on Wednesday at [http://www.timeanddate.com/worldclock/fixedtime.html?hour=18&amp;amp;min=0&amp;amp;sec=0 1800] UTC (next meeting is January 7)&lt;br /&gt;
* IRC channel: &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;#openstack-meeting-4&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
* Chair: mfisch (Matt Fischer)&lt;br /&gt;
* See [[Meetings/openstack-operators]] for details&lt;br /&gt;
&lt;br /&gt;
== OpenStack Ambassadors Meeting ==&lt;br /&gt;
* Alternating Weekly on first, third, fifth Tuesdays at [http://www.timeanddate.com/time/zone/usa/san-francisco 08:00 GMT] and second and fourth Fridays at  [http://www.timeanddate.com/time/zone/usa/san-francisco 18:00 GMT]&lt;br /&gt;
* IRC channel: &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;#openstack-meeting-alt&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
* Chair: sarob&lt;br /&gt;
* See [[Meetings/ambassadors]] for details&lt;br /&gt;
&lt;br /&gt;
== Openstack Ansible Deployment ==&lt;br /&gt;
* Weekly on Thursday at [http://www.timeanddate.com/time/zone/usa/san-antonio  1600 UTC] &lt;br /&gt;
* IRC channel: &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;#openstack-meeting-4&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
* Chair: cloudnull (Kevin Carter)&lt;br /&gt;
* See [[Meetings/openstack-ansible]] for details&lt;br /&gt;
&lt;br /&gt;
== OpenStack Product Team Meeting ==&lt;br /&gt;
* Bi-Weekly Wednesdays at [http://www.timeanddate.com/time/zone/usa/san-francisco 23:00 UTC]&lt;br /&gt;
* IRC channel: &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;#openstack-meeting&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
* Chair: sarob&lt;br /&gt;
* See [[Meetings/product-team]] for details&lt;br /&gt;
&lt;br /&gt;
== OpenStackClient Team Meeting ==&lt;br /&gt;
* Weekly Thursdays at  [http://www.timeanddate.com/worldclock/fixedtime.html?hour=18&amp;amp;min=0&amp;amp;sec=0 1900] UTC&lt;br /&gt;
* IRC channel:&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;#openstack-meeting&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
* Chair: dtroyer (Dean Troyer)&lt;br /&gt;
* See [[Meetings/OpenStackClient]] for details&lt;br /&gt;
&lt;br /&gt;
== OpenStack Log Working Group Meeting ==&lt;br /&gt;
* Weekly Wednesdays at  [http://www.timeanddate.com/worldclock/fixedtime.html?hour=20&amp;amp;min=0&amp;amp;sec=0 2000] UTC&lt;br /&gt;
* IRC channel:&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;#openstack-meeting-4&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
* Chair: RockyG (Rochelle Grober)&lt;br /&gt;
* See [[Meetings/log-wg]] for details&lt;br /&gt;
&lt;br /&gt;
== Win The Enterprise Work Group ==&lt;br /&gt;
* See  [[Win_the_Enterprise]] for more details&lt;br /&gt;
&lt;br /&gt;
=== Deployment Team ===&lt;br /&gt;
* Chair: Barrett (Carol Barrett)&lt;br /&gt;
* Weekly Tuesday at [http://www.timeanddate.com/worldclock/fixedtime.html?hour=15&amp;amp;min=0&amp;amp;sec=0 1500] UTC Dial Inː 1-503-264-2663, Bridge: 3; Pass Code: 7053780&lt;br /&gt;
=== Cattle &amp;amp; Pets Team ===&lt;br /&gt;
* Chair: Barrett (Carol Barrett)&lt;br /&gt;
* Weekly Tuesday at [http://www.timeanddate.com/worldclock/fixedtime.html?hour=20&amp;amp;min=0&amp;amp;sec=0 2000] UTC Dial Inː 1-503-264-2663, Bridge: 3; Pass Code: 7053780&lt;br /&gt;
=== Business &amp;amp; Marketing Team ===&lt;br /&gt;
* Chair: Megan Rossetti&lt;br /&gt;
* Weekly Thursday at [http://www.timeanddate.com/worldclock/fixedtime.html?hour=15&amp;amp;min=0&amp;amp;sec=0 1500] UTC Dial In: 1-224-225-1234 x 051214&lt;br /&gt;
=== Monitoring Team ===&lt;br /&gt;
* Chair: Barrett (Carol Barrett)&lt;br /&gt;
* Weekly Friday at [http://www.timeanddate.com/worldclock/fixedtime.html?hour=15&amp;amp;min=0&amp;amp;sec=0 1500] UTC Dial Inː 1-503-264-2663, Bridge: 3; Pass Code: 7053780&lt;br /&gt;
&lt;br /&gt;
[[Category:Contribute]]&lt;br /&gt;
[[Category:Connect]]&lt;br /&gt;
[[Category:Resources]]&lt;br /&gt;
[[Category: Meetings]]&lt;/div&gt;</summary>
		<author><name>Vipuls</name></author>	</entry>

	<entry>
		<id>https://wiki.openstack.org/w/index.php?title=Cue&amp;diff=69096</id>
		<title>Cue</title>
		<link rel="alternate" type="text/html" href="https://wiki.openstack.org/w/index.php?title=Cue&amp;diff=69096"/>
				<updated>2014-11-26T19:23:13Z</updated>
		
		<summary type="html">&lt;p&gt;Vipuls: /* Cue */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Cue =&lt;br /&gt;
== Mission Statement ==&lt;br /&gt;
The OpenStack Message Broker Provisioning as a Service Mission: To provide scalable and reliable Message Broker provisioning functionality for off the shelf messaging technologies, as well as to provide advanced management, tuning, and administration of underlying message brokers.&lt;br /&gt;
&lt;br /&gt;
== Description ==&lt;br /&gt;
&lt;br /&gt;
Cue is a Message Broker provisioning service for Openstack.  Its goal is to simplify and automate the complex tasks of provisioning, management, and administration of message brokers.  Users of the service can create and manage multiple clusters of Message brokers, of various types as needed.  The service will provide resource isolation at the VM level, and does not attempt to implement multi-tenancy at the message broker layer.&lt;br /&gt;
&lt;br /&gt;
== Why ==&lt;br /&gt;
Messaging is a common development pattern for building loosely coupled distributed systems.  Messaging systems also act as glue between independent applications.  Several off-the-shelf products exist that implement messaging and queuing semantics.&lt;br /&gt;
  &lt;br /&gt;
Provisioning and supporting Messaging systems for an individual application can be a time consuming and painful experience.  This product aims to simplify the provisioning and management of messaging systems, providing High Availability and auto-healing capabilities to the end user, while providing tenant-level isolation.&lt;br /&gt;
  &lt;br /&gt;
The main goal of this service is to simplify the end user Application development lifecycle and allow the developer to focus on their application, instead of the backend middleware services.&lt;br /&gt;
&lt;br /&gt;
== Use Cases (in-work) ==&lt;br /&gt;
'''Macro'''&lt;br /&gt;
# IT teams providing managed, highly available message brokers to their app development teams, on private clouds they own and operate.&lt;br /&gt;
# OpenStack service providers seeking to provide a managed, highly available messaging service with multiple backends such as RabbitMQ and Kafka to their end users.&lt;br /&gt;
&lt;br /&gt;
'''Micro'''&lt;br /&gt;
# Distributing work between micro-services deployed on top of OpenStack via PaaS offerings like Cloud Foundry.&lt;br /&gt;
# Sending messages between legacy systems and cloud native applications.&lt;br /&gt;
&lt;br /&gt;
== Goals ==&lt;br /&gt;
&lt;br /&gt;
# Produce a Message Broker Provisioning Service for Openstack&lt;br /&gt;
# Protocol Agnostic&lt;br /&gt;
# Support multiple Broker backends&lt;br /&gt;
# Provide HA and Fault Tolerance by leveraging underlying Broker Cluster capabilities&lt;br /&gt;
# Provide tuned and properly configured Message Brokers on-demand&lt;br /&gt;
# Support Broker management operations such as Backup of Configuration, Scale Up, Scale Down&lt;br /&gt;
&lt;br /&gt;
== Non-Goals ==&lt;br /&gt;
&lt;br /&gt;
# Data plane API&lt;br /&gt;
# Multi-tenancy at the Message Broker layer&lt;br /&gt;
&lt;br /&gt;
== Brokers ==&lt;br /&gt;
Cue will support the following brokers (in order of priority):&lt;br /&gt;
# RabbitMQ&lt;br /&gt;
# qpid&lt;br /&gt;
# Kafka&lt;br /&gt;
# .. others?&lt;br /&gt;
&lt;br /&gt;
== API == &lt;br /&gt;
API documentation is located here:  [https://wiki.openstack.org/wiki/Cue/api Cue API Documentation]&lt;br /&gt;
&lt;br /&gt;
== Code ==&lt;br /&gt;
We've started building the project, it now lives on Stackforge.&lt;br /&gt;
&lt;br /&gt;
https://github.com/stackforge/cue&lt;br /&gt;
&lt;br /&gt;
== Find Us ==&lt;br /&gt;
Come talk to us on #openstack-cue on Freenode.&lt;/div&gt;</summary>
		<author><name>Vipuls</name></author>	</entry>

	<entry>
		<id>https://wiki.openstack.org/w/index.php?title=Cue/api&amp;diff=69095</id>
		<title>Cue/api</title>
		<link rel="alternate" type="text/html" href="https://wiki.openstack.org/w/index.php?title=Cue/api&amp;diff=69095"/>
				<updated>2014-11-26T19:14:31Z</updated>
		
		<summary type="html">&lt;p&gt;Vipuls: /* Cue API Design */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Cue API Design ==&lt;br /&gt;
=== Acronyms ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! '''Acronym''' !! '''Definition'''&lt;br /&gt;
|-&lt;br /&gt;
| SSL || Secure Sockets Layer&lt;br /&gt;
|-&lt;br /&gt;
| REST || Representational State Transfer&lt;br /&gt;
|-&lt;br /&gt;
| URI || Uniform Resource Identifier&lt;br /&gt;
|-&lt;br /&gt;
| UUID || Universally Unique Identifier&lt;br /&gt;
|-&lt;br /&gt;
| AMQP || Advanced Messaging Queuing Protocol&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Requirements ===&lt;br /&gt;
&lt;br /&gt;
API Requirements for Cue - Kilo timeframe.&lt;br /&gt;
&lt;br /&gt;
* Keystone integration&lt;br /&gt;
* CRUD on Cluster&lt;br /&gt;
* Cluster Management – Scale up/down&lt;br /&gt;
* Devstack integration&lt;br /&gt;
* Gate Tests&lt;br /&gt;
&lt;br /&gt;
=== System Context Diagram ===&lt;br /&gt;
&lt;br /&gt;
[[File:SCD.jpg]]&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! '''Component''' !! '''Description'''&lt;br /&gt;
|-&lt;br /&gt;
| User || Direct customer of Cue.&lt;br /&gt;
|-&lt;br /&gt;
| Horizon || Cue functionality will be added to Horizon, which will provide a web-based portal for Cue control.&lt;br /&gt;
|-&lt;br /&gt;
| CLI || Command Line Interface to Cue, provides user access to provisioning and deploying messaging clusters.&lt;br /&gt;
|-&lt;br /&gt;
| REST_API || Provides user access to provisioning and deploying messaging clusters through REST interface.  This is a light-weight interface, provisioning and configuration of clusters/nodes is delegated to the TaskWorker process.&lt;br /&gt;
|-&lt;br /&gt;
| TaskScheduler || Used to synchronize work tasks between the REST_API and TaskWorker processes.&lt;br /&gt;
|-&lt;br /&gt;
| TaskWorker || Carries out work associated with all provisioning, configuration and management of RabbitMQ clusters and nodes.  Makes use of heat for initial provisioning/deployment.&lt;br /&gt;
|-&lt;br /&gt;
| DB || Database to store information on clusters and nodes.  Example, in cluster creation, when request is initially received through REST_API, this DB is updated accordingly and the work is delegated to TaskWorker.  TaskWorker then updates this DB as provisioning and configuration takes place.  Subsequent calls to check on status of cluster creation, will return updated information from this DB.&lt;br /&gt;
|-&lt;br /&gt;
| Heat || Used cloud instance orchestration in deploying RabbitMQ cluster images.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== REST API ===&lt;br /&gt;
&lt;br /&gt;
General requirement, REST API must respond within 500ms.&lt;br /&gt;
==== List Clusters ====&lt;br /&gt;
&lt;br /&gt;
'''''GET /v1/clusters'''''&lt;br /&gt;
&lt;br /&gt;
This operation synchronously returns all clusters provisioned within the associated project id.&lt;br /&gt;
&lt;br /&gt;
'''Request Parameters'''&lt;br /&gt;
N/A&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Response !! Code(s)&lt;br /&gt;
|-&lt;br /&gt;
| Normal || ok (200)&lt;br /&gt;
|-&lt;br /&gt;
| Error || unauthorized (401)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
'''Response Parameters'''&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Parameter !! Type !! Description&lt;br /&gt;
|-&lt;br /&gt;
| cluster(list) || string || List of clusters, detailing respective cluster id, name, status, created time stamp and updated time stamp.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
	&lt;br /&gt;
&lt;br /&gt;
'''JSON Request'''&lt;br /&gt;
&lt;br /&gt;
N/A&lt;br /&gt;
&lt;br /&gt;
'''JSON Response'''&lt;br /&gt;
&lt;br /&gt;
{&lt;br /&gt;
    &amp;quot;clusters&amp;quot;: &amp;lt;nowiki&amp;gt;[&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
        {&lt;br /&gt;
            &amp;quot;cluster_id&amp;quot;: &amp;quot;b51948c9-1ac5-4c28-a580-6f7c500d82f8&amp;quot;,&lt;br /&gt;
            &amp;quot;name&amp;quot;: &amp;quot;Message Cluster 1&amp;quot;,&lt;br /&gt;
            &amp;quot;status&amp;quot;: &amp;quot;ACTIVE&amp;quot;,&lt;br /&gt;
            &amp;quot;created&amp;quot;: &amp;quot;2014-11-11T01:02:03Z&amp;quot;,&lt;br /&gt;
            &amp;quot;updated&amp;quot;: &amp;quot;2014-11-11T01:02:03Z&amp;quot;&lt;br /&gt;
        },&lt;br /&gt;
        {&lt;br /&gt;
            &amp;quot;cluster_id&amp;quot;: &amp;quot;13c456c9-bbfc-4c31-b26d-3ae5c3cd7a77&amp;quot;,&lt;br /&gt;
            &amp;quot;name&amp;quot;: &amp;quot;Message Cluster 2&amp;quot;,&lt;br /&gt;
            &amp;quot;status&amp;quot;: &amp;quot;ACTIVE&amp;quot;,&lt;br /&gt;
            &amp;quot;created&amp;quot;: &amp;quot;2014-11-12T13:23:54Z&amp;quot;,&lt;br /&gt;
            &amp;quot;updated&amp;quot;: &amp;quot;2014-11-13T19:55:01Z&amp;quot;&lt;br /&gt;
        }&lt;br /&gt;
    ]&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
==== Create Cluster ====&lt;br /&gt;
&lt;br /&gt;
'''''POST /v1/clusters'''''&lt;br /&gt;
&lt;br /&gt;
This operation asynchronously creates a new cluster of Nova instances provisioned with the required message brokers in a central tenant. &lt;br /&gt;
&lt;br /&gt;
'''Request Parameters'''&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Parameter !! Type !! Description&lt;br /&gt;
|-&lt;br /&gt;
| nic || UUID || Network Identification for a Neutron network where cluster will be created in.&lt;br /&gt;
|-&lt;br /&gt;
| name || string || Name of cluster.&lt;br /&gt;
|-&lt;br /&gt;
| volume_size || int || Optional parameter to indicate size of volume for node instance.  If volumes are supported, then this parameter will be used.  If ephmeral disk are not supported, volume support will be required.&lt;br /&gt;
|-&lt;br /&gt;
| flavor (list) || string || List of node flavors, which specify VM type in terms of CPU/memory/disk resources (e.g. small, medium, large).  Size of list denotes the number of nodes in cluster.&lt;br /&gt;
&lt;br /&gt;
small:  1 GHz dual-core CPU; 512 MB memory; 250 GB disk&lt;br /&gt;
&lt;br /&gt;
medium: 2.8 GHz dual-core CPU; 4 GB memory; 1 TB disk&lt;br /&gt;
&lt;br /&gt;
large: 3.6 GHz quad-core CPU; 32 GB memory; 5 TB disk&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
'''Response Codes'''&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Response !! Code(s)&lt;br /&gt;
|-&lt;br /&gt;
| Normal || 202 (accepted)&lt;br /&gt;
|-&lt;br /&gt;
| Error || badRequest (400), unauthorized (401), itemNotFound (404)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
'''Response Parameters'''&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Parameter !! Type !! Description&lt;br /&gt;
|-&lt;br /&gt;
| cluster_id || UUID || ID of cluster to be created.&lt;br /&gt;
|-&lt;br /&gt;
| name || string || Name of cluster (same as provided name in request parameters).&lt;br /&gt;
|-&lt;br /&gt;
| status || string || Current status of cluster.&lt;br /&gt;
&lt;br /&gt;
BUILDING: Cluster is in progress of being provisioned.&lt;br /&gt;
&lt;br /&gt;
ACTIVE:  Cluster is running.&lt;br /&gt;
&lt;br /&gt;
ERROR: Provisioning error(s) encountered.&lt;br /&gt;
&lt;br /&gt;
DELETED:  Cluster has been deleted.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
'''JSON Request'''&lt;br /&gt;
&lt;br /&gt;
{&lt;br /&gt;
    &amp;quot;nic&amp;quot;: &amp;quot;d32019d3-bc6e-4319-9c1d-6722fc136a22&amp;quot;,&lt;br /&gt;
    &amp;quot;name&amp;quot;: &amp;quot;Message Cluster 1&amp;quot;,&lt;br /&gt;
    &amp;quot;volume_size&amp;quot;: &amp;quot;100&amp;quot;,&lt;br /&gt;
    &amp;quot;nodes&amp;quot;: [&lt;br /&gt;
        {&lt;br /&gt;
            &amp;quot;flavor&amp;quot;: &amp;quot;large&amp;quot;&lt;br /&gt;
        },&lt;br /&gt;
        {&lt;br /&gt;
            &amp;quot;flavor&amp;quot;: &amp;quot;large&amp;quot;&lt;br /&gt;
        },&lt;br /&gt;
        {&lt;br /&gt;
            &amp;quot;flavor&amp;quot;: &amp;quot;large&amp;quot;&lt;br /&gt;
        }&lt;br /&gt;
    ]&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
'''JSON Response'''&lt;br /&gt;
&lt;br /&gt;
{&lt;br /&gt;
    &amp;quot;cluster_id&amp;quot;: &amp;quot;dd745f4a-9333-417e-bb89-9c989c84c068&amp;quot;,&lt;br /&gt;
    &amp;quot;name&amp;quot;: &amp;quot;Message Cluster 1&amp;quot;,&lt;br /&gt;
    &amp;quot;status&amp;quot;: &amp;quot;BUILDING&amp;quot;,&lt;br /&gt;
    &amp;quot;created&amp;quot;: &amp;quot;2014-11-11T01:02:03Z&amp;quot;,&lt;br /&gt;
    &amp;quot;updated&amp;quot;: &amp;quot;2014-11-11T01:02:03Z&amp;quot;,&lt;br /&gt;
    &amp;quot;nodes&amp;quot;: [&lt;br /&gt;
        {&lt;br /&gt;
            &amp;quot;node_id&amp;quot;: &amp;quot;616fb98f-46ca-475e-917e-2563e5a8cd19&amp;quot;,&lt;br /&gt;
            &amp;quot;status&amp;quot;: &amp;quot;BUILDING&amp;quot;,&lt;br /&gt;
            &amp;quot;flavor&amp;quot;: &amp;quot;large&amp;quot;,&lt;br /&gt;
        },&lt;br /&gt;
        {&lt;br /&gt;
&lt;br /&gt;
            &amp;quot;node_id&amp;quot;: &amp;quot;e90c9d13-c4b8-4a08-992a-dad6109b8ac2&amp;quot;,&lt;br /&gt;
            &amp;quot;status&amp;quot;: &amp;quot;BUILDING&amp;quot;,&lt;br /&gt;
            &amp;quot;flavor&amp;quot;: &amp;quot;large&amp;quot;,&lt;br /&gt;
        },&lt;br /&gt;
        {&lt;br /&gt;
&lt;br /&gt;
            &amp;quot;node_id&amp;quot;: &amp;quot;372f8f47-6818-4d83-aa42-8744c0e689b8&amp;quot;,&lt;br /&gt;
            &amp;quot;status&amp;quot;: &amp;quot;BUILDING&amp;quot;,            &lt;br /&gt;
            &amp;quot;flavor&amp;quot;: &amp;quot;large&amp;quot;,&lt;br /&gt;
        }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
==== Show Cluster ====&lt;br /&gt;
&lt;br /&gt;
'''''GET /v1/clusters/{cluster_id}'''''&lt;br /&gt;
&lt;br /&gt;
This operation synchronously returns the status and information on the specified cluster within the provided tenant.&lt;br /&gt;
&lt;br /&gt;
'''Request Parameters'''&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Parameter !! Type !! Description&lt;br /&gt;
|-&lt;br /&gt;
| cluster_id (URI) || UUID || Cluster ID.  This value is returned when a new cluster is created.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
'''Response Codes'''&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Response !! Code(s)&lt;br /&gt;
|-&lt;br /&gt;
| Normal || ok (200)&lt;br /&gt;
|-&lt;br /&gt;
| Error || unauthorized (401), itemNotFound (404)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
'''Response Parameters'''&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Parameter !! Type !! Description&lt;br /&gt;
|-&lt;br /&gt;
| cluster_id || UUID || ID of requested cluster.&lt;br /&gt;
|-&lt;br /&gt;
| name || string || Name of cluster.&lt;br /&gt;
|-&lt;br /&gt;
| status || string || Current status of cluster.&lt;br /&gt;
&lt;br /&gt;
BUILDING: Cluster is in progress of being provisioned.&lt;br /&gt;
&lt;br /&gt;
ACTIVE:  Cluster is running.&lt;br /&gt;
&lt;br /&gt;
ERROR: Provisioning error(s) encountered.&lt;br /&gt;
&lt;br /&gt;
DELETED:  Cluster has been deleted.&lt;br /&gt;
|-&lt;br /&gt;
| created || string || Created time stamp in format: yyyy-mm-ddThh:mm:ssZ&lt;br /&gt;
|-&lt;br /&gt;
| updated || string || Last updated time stamp in format: yyyy-mm-ddThh:mm:ssZ&lt;br /&gt;
|-&lt;br /&gt;
| nodes(list) || node || List of nodes, which includes node id, instance state, and flavor.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
'''JSON Request'''&lt;br /&gt;
&lt;br /&gt;
N/A&lt;br /&gt;
&lt;br /&gt;
'''JSON Response'''&lt;br /&gt;
&lt;br /&gt;
{&lt;br /&gt;
    &amp;quot;cluster_id&amp;quot;: &amp;quot;dd745f4a-9333-417e-bb89-9c989c84c068&amp;quot;,&lt;br /&gt;
    &amp;quot;name&amp;quot;: &amp;quot;Message Cluster 1&amp;quot;,&lt;br /&gt;
    &amp;quot;status&amp;quot;: &amp;quot;ACTIVE&amp;quot;,&lt;br /&gt;
    &amp;quot;created&amp;quot;: &amp;quot;2014-11-11T01:02:03Z&amp;quot;,&lt;br /&gt;
    &amp;quot;updated&amp;quot;: &amp;quot;2014-11-11T01:02:03Z&amp;quot;,&lt;br /&gt;
    &amp;quot;nodes&amp;quot;: [&lt;br /&gt;
        {&lt;br /&gt;
            &amp;quot;node_id&amp;quot;: &amp;quot;616fb98f-46ca-475e-917e-2563e5a8cd19&amp;quot;,&lt;br /&gt;
            &amp;quot;status&amp;quot;: &amp;quot;ACTIVE&amp;quot;,&lt;br /&gt;
            &amp;quot;flavor&amp;quot;: &amp;quot;large&amp;quot;,&lt;br /&gt;
            &amp;quot;endpoints&amp;quot;: [&lt;br /&gt;
                {&lt;br /&gt;
                    &amp;quot;type&amp;quot;: &amp;quot;AMQP&amp;quot;,&lt;br /&gt;
                    &amp;quot;value&amp;quot;: &amp;quot;amqp://10.20.30.40:10000&amp;quot;&lt;br /&gt;
                },&lt;br /&gt;
                {&lt;br /&gt;
                    &amp;quot;type&amp;quot;: &amp;quot;console&amp;quot;,&lt;br /&gt;
                    &amp;quot;value&amp;quot;: &amp;quot;http://10.20.30.40:5672&amp;quot;&lt;br /&gt;
                }&lt;br /&gt;
            ],&lt;br /&gt;
            &amp;quot;created&amp;quot;: &amp;quot;2014-11-11T01:06:03Z&amp;quot;,&lt;br /&gt;
            &amp;quot;updated&amp;quot;: &amp;quot;2014-11-11T01:06:03Z&amp;quot;&lt;br /&gt;
        },&lt;br /&gt;
        {&lt;br /&gt;
&lt;br /&gt;
            &amp;quot;node_id&amp;quot;: &amp;quot;e90c9d13-c4b8-4a08-992a-dad6109b8ac2&amp;quot;,&lt;br /&gt;
            &amp;quot;status&amp;quot;: &amp;quot;ACTIVE&amp;quot;,&lt;br /&gt;
            &amp;quot;flavor&amp;quot;: &amp;quot;large&amp;quot;,&lt;br /&gt;
            &amp;quot;endpoints&amp;quot;: [&lt;br /&gt;
                {&lt;br /&gt;
                    &amp;quot;type&amp;quot;: &amp;quot;AMQP&amp;quot;,&lt;br /&gt;
                    &amp;quot;value&amp;quot;: &amp;quot;amqp://10.20.30.41:10000&amp;quot;&lt;br /&gt;
                },&lt;br /&gt;
                {&lt;br /&gt;
                    &amp;quot;type&amp;quot;: &amp;quot;console&amp;quot;,&lt;br /&gt;
                    &amp;quot;value&amp;quot;: &amp;quot;http://10.20.30.41:5672&amp;quot;&lt;br /&gt;
                }&lt;br /&gt;
            ],&lt;br /&gt;
            &amp;quot;created&amp;quot;: &amp;quot;2014-11-11T01:08:03Z&amp;quot;,&lt;br /&gt;
            &amp;quot;updated&amp;quot;: &amp;quot;2014-11-11T01:08:03Z&amp;quot;&lt;br /&gt;
        },&lt;br /&gt;
        {&lt;br /&gt;
&lt;br /&gt;
            &amp;quot;node_id&amp;quot;: &amp;quot;372f8f47-6818-4d83-aa42-8744c0e689b8&amp;quot;,&lt;br /&gt;
            &amp;quot;status&amp;quot;: &amp;quot;ACTIVE&amp;quot;,&lt;br /&gt;
            &amp;quot;flavor&amp;quot;: &amp;quot;large&amp;quot;,&lt;br /&gt;
            &amp;quot;endpoints&amp;quot;: [&lt;br /&gt;
                {&lt;br /&gt;
                    &amp;quot;type&amp;quot;: &amp;quot;AMQP&amp;quot;,&lt;br /&gt;
                    &amp;quot;value&amp;quot;: &amp;quot;amqp://10.20.30.42:10000&amp;quot;&lt;br /&gt;
                },&lt;br /&gt;
                {&lt;br /&gt;
                    &amp;quot;type&amp;quot;: &amp;quot;console&amp;quot;,&lt;br /&gt;
                    &amp;quot;value&amp;quot;: &amp;quot;http://10.20.30.42:5672&amp;quot;&lt;br /&gt;
                }&lt;br /&gt;
            ],&lt;br /&gt;
            &amp;quot;created&amp;quot;: &amp;quot;2014-11-11T01:12:03Z&amp;quot;,&lt;br /&gt;
            &amp;quot;updated&amp;quot;: &amp;quot;2014-11-11T01:12:03Z&amp;quot;&lt;br /&gt;
        }&lt;br /&gt;
    ]&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
==== Delete Cluster ====&lt;br /&gt;
&lt;br /&gt;
'''''DELETE /v1/clusters/{cluster_id}'''''''&lt;br /&gt;
&lt;br /&gt;
This operation will asynchronously delete the indicated cluster within the provided tenant.&lt;br /&gt;
&lt;br /&gt;
'''Request Parameters'''&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Parameter !! Type !! Description&lt;br /&gt;
|-&lt;br /&gt;
| cluster_id (URI) || UUID || Cluster ID.  This value is returned when a new cluster is created.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
'''Response Codes'''&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Response !! Code(s)&lt;br /&gt;
|-&lt;br /&gt;
| Normal || accepted (202)&lt;br /&gt;
|-&lt;br /&gt;
| Error || unauthorized (401), itemNotFound (404)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
'''Response Parameters'''&lt;br /&gt;
&lt;br /&gt;
N/A&lt;br /&gt;
&lt;br /&gt;
'''JSON Request'''&lt;br /&gt;
&lt;br /&gt;
N/A&lt;br /&gt;
&lt;br /&gt;
'''JSON Response'''&lt;br /&gt;
&lt;br /&gt;
N/A&lt;br /&gt;
&lt;br /&gt;
===Testing===&lt;br /&gt;
&lt;br /&gt;
Cue API testing will verify the expected functionality of the Cue user interface with both positive/negative tests.  The overall scope will cover testing from the HTTP REST request to required database interactions and work-flow task submission for RPC workers.&lt;br /&gt;
&lt;br /&gt;
====Unit Tests====&lt;br /&gt;
&lt;br /&gt;
Unit tests will verify the resulting function calls for each REST-ful URI and action(s).  The Python Mock library will be used to replace external system dependencies with placeholder objects.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Function !! Tests !! Input Data !! Expected Result(s)&lt;br /&gt;
|-&lt;br /&gt;
| List Clusters || &lt;br /&gt;
# Create 'n' cluster(s), then call list clusters and verify expected return object&lt;br /&gt;
# Call list clusters when no clusters exist within tenant and verify expected return object&lt;br /&gt;
|| &lt;br /&gt;
* n = # of clusters to create&lt;br /&gt;
||&lt;br /&gt;
# List of 'n' clusters is returned with appropriate fields, HTTP Ok (200)&lt;br /&gt;
# Empty list of clusters is returned, HTTP Ok (200)&lt;br /&gt;
|-&lt;br /&gt;
| Create Cluster || &lt;br /&gt;
# Create standard cluster 'c' and verify expected return object&lt;br /&gt;
# Create cluster with invalid flavor and verify expected return value&lt;br /&gt;
# Create cluster with invalid volume size and verify expected return value&lt;br /&gt;
||&lt;br /&gt;
* n = cluster size (number of nodes)&lt;br /&gt;
* m = cluster name&lt;br /&gt;
* f = flavor&lt;br /&gt;
* s = volume size&lt;br /&gt;
* nic = Network UUID&lt;br /&gt;
||&lt;br /&gt;
# Cluster ID, name and status for newly created cluster is returned, HTTP Accepted (202)&lt;br /&gt;
# HTTP Bad request is returned (400)&lt;br /&gt;
# HTTP Bad request is returned (400)&lt;br /&gt;
|-&lt;br /&gt;
| Show Cluster ||&lt;br /&gt;
# Create cluster, then call get cluster and verify expected return object&lt;br /&gt;
# Get cluster with invalid cluster_id&lt;br /&gt;
||&lt;br /&gt;
* cluster_id = cluster ID&lt;br /&gt;
||&lt;br /&gt;
# Cluster ID, name, status, created/updated date stamp and list of nodes is returned, HTTP Ok (200).&lt;br /&gt;
# HTTP Bad request is returned (400)&lt;br /&gt;
|-&lt;br /&gt;
| Delete Cluster || &lt;br /&gt;
# Create a cluster, then call delete cluster and verify expected return value&lt;br /&gt;
# Delete cluster with invalid cluster_id&lt;br /&gt;
||&lt;br /&gt;
* cluster_id = cluster ID&lt;br /&gt;
||&lt;br /&gt;
# HTTP accepted is returned (202)&lt;br /&gt;
# HTTP Bad request is returned (400)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====Functional Tests====&lt;br /&gt;
&lt;br /&gt;
The functional tests will verify the HTTP REST URI request lifecycle from controller routing to HTTP response.  These tests will make use of Pecan's testing utility; pecan.testing module.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Operation !! URI !! Tests !! Input Data !! Expected Data (JSON)&lt;br /&gt;
|-&lt;br /&gt;
| GET || /v1/clusters || &lt;br /&gt;
# Call when clusters exist&lt;br /&gt;
# Call when no clusters exist&lt;br /&gt;
|| &lt;br /&gt;
* n/a&lt;br /&gt;
||&lt;br /&gt;
# List of 'n' clusters is returned with appropriate fields, HTTP Ok (200)&lt;br /&gt;
# Empty list of clusters is returned, HTTP Ok (200)&lt;br /&gt;
|-&lt;br /&gt;
| POST || /v1/clusters ||&lt;br /&gt;
# Create standard cluster 'c' and verify expected return object&lt;br /&gt;
# Create cluster with invalid flavor and verify expected return value&lt;br /&gt;
# Create cluster with invalid volume size and verify expected return value&lt;br /&gt;
|| &lt;br /&gt;
* n = cluster size (number of nodes)&lt;br /&gt;
* m = cluster name&lt;br /&gt;
* f = flavor&lt;br /&gt;
* s = volume size&lt;br /&gt;
* nic = Network UUID&lt;br /&gt;
||&lt;br /&gt;
# Cluster ID, name and status for newly created cluster is returned, HTTP Accepted (202)&lt;br /&gt;
# HTTP Bad request is returned (400)&lt;br /&gt;
# HTTP Bad request is returned (400)&lt;br /&gt;
||&lt;br /&gt;
|-&lt;br /&gt;
| GET || /v1/clusters/{cluster_id} || &lt;br /&gt;
# Create cluster, then call get cluster and verify expected return object&lt;br /&gt;
# Get cluster with invalid cluster_id&lt;br /&gt;
|| &lt;br /&gt;
* cluster_id = cluster &lt;br /&gt;
||&lt;br /&gt;
# Cluster ID, name, status, created/updated date stamp and list of nodes is returned, HTTP Ok (200).&lt;br /&gt;
# HTTP Bad request is returned (400)&lt;br /&gt;
||&lt;br /&gt;
|-&lt;br /&gt;
| DELETE || /v1/clusters/{cluster_id} ||&lt;br /&gt;
# Create a cluster, then call delete cluster and verify expected return value&lt;br /&gt;
# Delete cluster with invalid cluster_id&lt;br /&gt;
||&lt;br /&gt;
* cluster_id = cluster ID&lt;br /&gt;
||&lt;br /&gt;
# HTTP accepted is returned (202)&lt;br /&gt;
# HTTP Bad request is returned (400)&lt;br /&gt;
||&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====Integration Tests====&lt;br /&gt;
&lt;br /&gt;
The integration tests will cover API functionality from HTTP request to database access and task submission for RPC workers.  The Pecan test utility will be used to route test request URI to appropriate controllers, then database record(s) will be verified for applicable change.  Finally the creation of task objections will be verified to ensure valid task flows.&lt;/div&gt;</summary>
		<author><name>Vipuls</name></author>	</entry>

	<entry>
		<id>https://wiki.openstack.org/w/index.php?title=Cue/api&amp;diff=69094</id>
		<title>Cue/api</title>
		<link rel="alternate" type="text/html" href="https://wiki.openstack.org/w/index.php?title=Cue/api&amp;diff=69094"/>
				<updated>2014-11-26T19:10:54Z</updated>
		
		<summary type="html">&lt;p&gt;Vipuls: /* Requirements */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Cue API Design ==&lt;br /&gt;
=== Acronyms ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! '''Acronym''' !! '''Definition'''&lt;br /&gt;
|-&lt;br /&gt;
| SSL || Secure Sockets Layer&lt;br /&gt;
|-&lt;br /&gt;
| REST || Representational State Transfer&lt;br /&gt;
|-&lt;br /&gt;
| URI || Uniform Resource Identifier&lt;br /&gt;
|-&lt;br /&gt;
| UUID || Universally Unique Identifier&lt;br /&gt;
|-&lt;br /&gt;
| AMQP || Advanced Messaging Queuing Protocol&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Introduction ===&lt;br /&gt;
&lt;br /&gt;
Messaging systems enable software applications to communicate and scale.  Many of today's enterprise systems make use of messaging systems as the glue between the different components or applications.  These components depend on messaging to interact with each other to provide end-to-end functionality.  This Openstack stackforge project is intended to solve the problem in the provisioning, deployment and management of messaging systems in a seamless automated fashion for applications deployed on the Openstack cloud operating system.&lt;br /&gt;
&lt;br /&gt;
There are several off-the-shelf messaging systems that implement messaging and queuing semantics such as RabbitMQ, Qpid and ActiveMQ.  These proven systems have wide acceptance, usage and testing.  The goal of this project is not to implement another messaging system for the Openstack platform, but to implement an automated messaging provisioning, deployment and management system.  This system will simplify the application development life-cycle to allow the developer to focus on their application instead of the back-end storage services. &lt;br /&gt;
&lt;br /&gt;
=== Goals ===&lt;br /&gt;
&lt;br /&gt;
The focus of the project is to provide high-availability, auto-healing and tenant level isolation to the end user.  The initial goal for version 1.0 is to use RabbitMQ as the supported messaging system.  The overall goal for this effort is to provide a messaging queueing provisioning service for OpenStack built with community support.&lt;br /&gt;
&lt;br /&gt;
=== Requirements ===&lt;br /&gt;
&lt;br /&gt;
Requirements for Cue - Kilo timeframe.&lt;br /&gt;
&lt;br /&gt;
* Control plane&lt;br /&gt;
* Rabbit Management Console&lt;br /&gt;
* Keystone integration&lt;br /&gt;
* Command-Line – Create/Delete Cluster&lt;br /&gt;
* Horizon Integration - Create/Delete Cluster&lt;br /&gt;
* Queue Control Plane Patching&lt;br /&gt;
* RabbitMQ Instance Patching&lt;br /&gt;
* Cluster Management – Scale up/down&lt;br /&gt;
* Devstack integration&lt;br /&gt;
* Gate Tests&lt;br /&gt;
&lt;br /&gt;
=== System Context Diagram ===&lt;br /&gt;
&lt;br /&gt;
[[File:SCD.jpg]]&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! '''Component''' !! '''Description'''&lt;br /&gt;
|-&lt;br /&gt;
| User || Direct customer of MSGaaS.&lt;br /&gt;
|-&lt;br /&gt;
| Horizon || MSGaaS functionality will be added to Horizon, which will provide a web-based portal for MSGaaS control.&lt;br /&gt;
|-&lt;br /&gt;
| CLI || Command Line Interface to MSGaaS, provides user access to provisioning and deploying messaging clusters.&lt;br /&gt;
|-&lt;br /&gt;
| REST_API || Provides user access to provisioning and deploying messaging clusters through REST interface.  This is a light-weight interface, provisioning and configuration of clusters/nodes is delegated to the TaskWorker process.&lt;br /&gt;
|-&lt;br /&gt;
| TaskScheduler || Used to synchronize work tasks between the REST_API and TaskWorker processes.&lt;br /&gt;
|-&lt;br /&gt;
| TaskWorker || Carries out work associated with all provisioning, configuration and management of RabbitMQ clusters and nodes.  Makes use of heat for initial provisioning/deployment.&lt;br /&gt;
|-&lt;br /&gt;
| DB || Database to store information on clusters and nodes.  Example, in cluster creation, when request is initially received through REST_API, this DB is updated accordingly and the work is delegated to TaskWorker.  TaskWorker then updates this DB as provisioning and configuration takes place.  Subsequent calls to check on status of cluster creation, will return updated information from this DB.&lt;br /&gt;
|-&lt;br /&gt;
| Heat || Used cloud instance orchestration in deploying RabbitMQ cluster images.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== REST API ===&lt;br /&gt;
&lt;br /&gt;
General requirement, REST API must respond within 500ms.&lt;br /&gt;
==== List Clusters ====&lt;br /&gt;
&lt;br /&gt;
'''''GET /v1/clusters'''''&lt;br /&gt;
&lt;br /&gt;
This operation synchronously returns all clusters provisioned within the associated project id.&lt;br /&gt;
&lt;br /&gt;
'''Request Parameters'''&lt;br /&gt;
N/A&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Response !! Code(s)&lt;br /&gt;
|-&lt;br /&gt;
| Normal || ok (200)&lt;br /&gt;
|-&lt;br /&gt;
| Error || unauthorized (401)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
'''Response Parameters'''&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Parameter !! Type !! Description&lt;br /&gt;
|-&lt;br /&gt;
| cluster(list) || string || List of clusters, detailing respective cluster id, name, status, created time stamp and updated time stamp.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
	&lt;br /&gt;
&lt;br /&gt;
'''JSON Request'''&lt;br /&gt;
&lt;br /&gt;
N/A&lt;br /&gt;
&lt;br /&gt;
'''JSON Response'''&lt;br /&gt;
&lt;br /&gt;
{&lt;br /&gt;
    &amp;quot;clusters&amp;quot;: &amp;lt;nowiki&amp;gt;[&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
        {&lt;br /&gt;
            &amp;quot;cluster_id&amp;quot;: &amp;quot;b51948c9-1ac5-4c28-a580-6f7c500d82f8&amp;quot;,&lt;br /&gt;
            &amp;quot;name&amp;quot;: &amp;quot;Message Cluster 1&amp;quot;,&lt;br /&gt;
            &amp;quot;status&amp;quot;: &amp;quot;ACTIVE&amp;quot;,&lt;br /&gt;
            &amp;quot;created&amp;quot;: &amp;quot;2014-11-11T01:02:03Z&amp;quot;,&lt;br /&gt;
            &amp;quot;updated&amp;quot;: &amp;quot;2014-11-11T01:02:03Z&amp;quot;&lt;br /&gt;
        },&lt;br /&gt;
        {&lt;br /&gt;
            &amp;quot;cluster_id&amp;quot;: &amp;quot;13c456c9-bbfc-4c31-b26d-3ae5c3cd7a77&amp;quot;,&lt;br /&gt;
            &amp;quot;name&amp;quot;: &amp;quot;Message Cluster 2&amp;quot;,&lt;br /&gt;
            &amp;quot;status&amp;quot;: &amp;quot;ACTIVE&amp;quot;,&lt;br /&gt;
            &amp;quot;created&amp;quot;: &amp;quot;2014-11-12T13:23:54Z&amp;quot;,&lt;br /&gt;
            &amp;quot;updated&amp;quot;: &amp;quot;2014-11-13T19:55:01Z&amp;quot;&lt;br /&gt;
        }&lt;br /&gt;
    ]&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
==== Create Cluster ====&lt;br /&gt;
&lt;br /&gt;
'''''POST /v1/clusters'''''&lt;br /&gt;
&lt;br /&gt;
This operation asynchronously creates a new cluster of Nova instances provisioned with the required message brokers in a central tenant. &lt;br /&gt;
&lt;br /&gt;
'''Request Parameters'''&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Parameter !! Type !! Description&lt;br /&gt;
|-&lt;br /&gt;
| nic || UUID || Network Identification for a Neutron network where cluster will be created in.&lt;br /&gt;
|-&lt;br /&gt;
| name || string || Name of cluster.&lt;br /&gt;
|-&lt;br /&gt;
| volume_size || int || Optional parameter to indicate size of volume for node instance.  If volumes are supported, then this parameter will be used.  If ephmeral disk are not supported, volume support will be required.&lt;br /&gt;
|-&lt;br /&gt;
| flavor (list) || string || List of node flavors, which specify VM type in terms of CPU/memory/disk resources (e.g. small, medium, large).  Size of list denotes the number of nodes in cluster.&lt;br /&gt;
&lt;br /&gt;
small:  1 GHz dual-core CPU; 512 MB memory; 250 GB disk&lt;br /&gt;
&lt;br /&gt;
medium: 2.8 GHz dual-core CPU; 4 GB memory; 1 TB disk&lt;br /&gt;
&lt;br /&gt;
large: 3.6 GHz quad-core CPU; 32 GB memory; 5 TB disk&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
'''Response Codes'''&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Response !! Code(s)&lt;br /&gt;
|-&lt;br /&gt;
| Normal || 202 (accepted)&lt;br /&gt;
|-&lt;br /&gt;
| Error || badRequest (400), unauthorized (401), itemNotFound (404)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
'''Response Parameters'''&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Parameter !! Type !! Description&lt;br /&gt;
|-&lt;br /&gt;
| cluster_id || UUID || ID of cluster to be created.&lt;br /&gt;
|-&lt;br /&gt;
| name || string || Name of cluster (same as provided name in request parameters).&lt;br /&gt;
|-&lt;br /&gt;
| status || string || Current status of cluster.&lt;br /&gt;
&lt;br /&gt;
BUILDING: Cluster is in progress of being provisioned.&lt;br /&gt;
&lt;br /&gt;
ACTIVE:  Cluster is running.&lt;br /&gt;
&lt;br /&gt;
ERROR: Provisioning error(s) encountered.&lt;br /&gt;
&lt;br /&gt;
DELETED:  Cluster has been deleted.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
'''JSON Request'''&lt;br /&gt;
&lt;br /&gt;
{&lt;br /&gt;
    &amp;quot;nic&amp;quot;: &amp;quot;d32019d3-bc6e-4319-9c1d-6722fc136a22&amp;quot;,&lt;br /&gt;
    &amp;quot;name&amp;quot;: &amp;quot;Message Cluster 1&amp;quot;,&lt;br /&gt;
    &amp;quot;volume_size&amp;quot;: &amp;quot;100&amp;quot;,&lt;br /&gt;
    &amp;quot;nodes&amp;quot;: [&lt;br /&gt;
        {&lt;br /&gt;
            &amp;quot;flavor&amp;quot;: &amp;quot;large&amp;quot;&lt;br /&gt;
        },&lt;br /&gt;
        {&lt;br /&gt;
            &amp;quot;flavor&amp;quot;: &amp;quot;large&amp;quot;&lt;br /&gt;
        },&lt;br /&gt;
        {&lt;br /&gt;
            &amp;quot;flavor&amp;quot;: &amp;quot;large&amp;quot;&lt;br /&gt;
        }&lt;br /&gt;
    ]&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
'''JSON Response'''&lt;br /&gt;
&lt;br /&gt;
{&lt;br /&gt;
    &amp;quot;cluster_id&amp;quot;: &amp;quot;dd745f4a-9333-417e-bb89-9c989c84c068&amp;quot;,&lt;br /&gt;
    &amp;quot;name&amp;quot;: &amp;quot;Message Cluster 1&amp;quot;,&lt;br /&gt;
    &amp;quot;status&amp;quot;: &amp;quot;BUILDING&amp;quot;,&lt;br /&gt;
    &amp;quot;created&amp;quot;: &amp;quot;2014-11-11T01:02:03Z&amp;quot;,&lt;br /&gt;
    &amp;quot;updated&amp;quot;: &amp;quot;2014-11-11T01:02:03Z&amp;quot;,&lt;br /&gt;
    &amp;quot;nodes&amp;quot;: [&lt;br /&gt;
        {&lt;br /&gt;
            &amp;quot;node_id&amp;quot;: &amp;quot;616fb98f-46ca-475e-917e-2563e5a8cd19&amp;quot;,&lt;br /&gt;
            &amp;quot;status&amp;quot;: &amp;quot;BUILDING&amp;quot;,&lt;br /&gt;
            &amp;quot;flavor&amp;quot;: &amp;quot;large&amp;quot;,&lt;br /&gt;
        },&lt;br /&gt;
        {&lt;br /&gt;
&lt;br /&gt;
            &amp;quot;node_id&amp;quot;: &amp;quot;e90c9d13-c4b8-4a08-992a-dad6109b8ac2&amp;quot;,&lt;br /&gt;
            &amp;quot;status&amp;quot;: &amp;quot;BUILDING&amp;quot;,&lt;br /&gt;
            &amp;quot;flavor&amp;quot;: &amp;quot;large&amp;quot;,&lt;br /&gt;
        },&lt;br /&gt;
        {&lt;br /&gt;
&lt;br /&gt;
            &amp;quot;node_id&amp;quot;: &amp;quot;372f8f47-6818-4d83-aa42-8744c0e689b8&amp;quot;,&lt;br /&gt;
            &amp;quot;status&amp;quot;: &amp;quot;BUILDING&amp;quot;,            &lt;br /&gt;
            &amp;quot;flavor&amp;quot;: &amp;quot;large&amp;quot;,&lt;br /&gt;
        }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
==== Show Cluster ====&lt;br /&gt;
&lt;br /&gt;
'''''GET /v1/clusters/{cluster_id}'''''&lt;br /&gt;
&lt;br /&gt;
This operation synchronously returns the status and information on the specified cluster within the provided tenant.&lt;br /&gt;
&lt;br /&gt;
'''Request Parameters'''&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Parameter !! Type !! Description&lt;br /&gt;
|-&lt;br /&gt;
| cluster_id (URI) || UUID || Cluster ID.  This value is returned when a new cluster is created.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
'''Response Codes'''&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Response !! Code(s)&lt;br /&gt;
|-&lt;br /&gt;
| Normal || ok (200)&lt;br /&gt;
|-&lt;br /&gt;
| Error || unauthorized (401), itemNotFound (404)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
'''Response Parameters'''&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Parameter !! Type !! Description&lt;br /&gt;
|-&lt;br /&gt;
| cluster_id || UUID || ID of requested cluster.&lt;br /&gt;
|-&lt;br /&gt;
| name || string || Name of cluster.&lt;br /&gt;
|-&lt;br /&gt;
| status || string || Current status of cluster.&lt;br /&gt;
&lt;br /&gt;
BUILDING: Cluster is in progress of being provisioned.&lt;br /&gt;
&lt;br /&gt;
ACTIVE:  Cluster is running.&lt;br /&gt;
&lt;br /&gt;
ERROR: Provisioning error(s) encountered.&lt;br /&gt;
&lt;br /&gt;
DELETED:  Cluster has been deleted.&lt;br /&gt;
|-&lt;br /&gt;
| created || string || Created time stamp in format: yyyy-mm-ddThh:mm:ssZ&lt;br /&gt;
|-&lt;br /&gt;
| updated || string || Last updated time stamp in format: yyyy-mm-ddThh:mm:ssZ&lt;br /&gt;
|-&lt;br /&gt;
| nodes(list) || node || List of nodes, which includes node id, instance state, and flavor.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
'''JSON Request'''&lt;br /&gt;
&lt;br /&gt;
N/A&lt;br /&gt;
&lt;br /&gt;
'''JSON Response'''&lt;br /&gt;
&lt;br /&gt;
{&lt;br /&gt;
    &amp;quot;cluster_id&amp;quot;: &amp;quot;dd745f4a-9333-417e-bb89-9c989c84c068&amp;quot;,&lt;br /&gt;
    &amp;quot;name&amp;quot;: &amp;quot;Message Cluster 1&amp;quot;,&lt;br /&gt;
    &amp;quot;status&amp;quot;: &amp;quot;ACTIVE&amp;quot;,&lt;br /&gt;
    &amp;quot;created&amp;quot;: &amp;quot;2014-11-11T01:02:03Z&amp;quot;,&lt;br /&gt;
    &amp;quot;updated&amp;quot;: &amp;quot;2014-11-11T01:02:03Z&amp;quot;,&lt;br /&gt;
    &amp;quot;nodes&amp;quot;: [&lt;br /&gt;
        {&lt;br /&gt;
            &amp;quot;node_id&amp;quot;: &amp;quot;616fb98f-46ca-475e-917e-2563e5a8cd19&amp;quot;,&lt;br /&gt;
            &amp;quot;status&amp;quot;: &amp;quot;ACTIVE&amp;quot;,&lt;br /&gt;
            &amp;quot;flavor&amp;quot;: &amp;quot;large&amp;quot;,&lt;br /&gt;
            &amp;quot;endpoints&amp;quot;: [&lt;br /&gt;
                {&lt;br /&gt;
                    &amp;quot;type&amp;quot;: &amp;quot;AMQP&amp;quot;,&lt;br /&gt;
                    &amp;quot;value&amp;quot;: &amp;quot;amqp://10.20.30.40:10000&amp;quot;&lt;br /&gt;
                },&lt;br /&gt;
                {&lt;br /&gt;
                    &amp;quot;type&amp;quot;: &amp;quot;console&amp;quot;,&lt;br /&gt;
                    &amp;quot;value&amp;quot;: &amp;quot;http://10.20.30.40:5672&amp;quot;&lt;br /&gt;
                }&lt;br /&gt;
            ],&lt;br /&gt;
            &amp;quot;created&amp;quot;: &amp;quot;2014-11-11T01:06:03Z&amp;quot;,&lt;br /&gt;
            &amp;quot;updated&amp;quot;: &amp;quot;2014-11-11T01:06:03Z&amp;quot;&lt;br /&gt;
        },&lt;br /&gt;
        {&lt;br /&gt;
&lt;br /&gt;
            &amp;quot;node_id&amp;quot;: &amp;quot;e90c9d13-c4b8-4a08-992a-dad6109b8ac2&amp;quot;,&lt;br /&gt;
            &amp;quot;status&amp;quot;: &amp;quot;ACTIVE&amp;quot;,&lt;br /&gt;
            &amp;quot;flavor&amp;quot;: &amp;quot;large&amp;quot;,&lt;br /&gt;
            &amp;quot;endpoints&amp;quot;: [&lt;br /&gt;
                {&lt;br /&gt;
                    &amp;quot;type&amp;quot;: &amp;quot;AMQP&amp;quot;,&lt;br /&gt;
                    &amp;quot;value&amp;quot;: &amp;quot;amqp://10.20.30.41:10000&amp;quot;&lt;br /&gt;
                },&lt;br /&gt;
                {&lt;br /&gt;
                    &amp;quot;type&amp;quot;: &amp;quot;console&amp;quot;,&lt;br /&gt;
                    &amp;quot;value&amp;quot;: &amp;quot;http://10.20.30.41:5672&amp;quot;&lt;br /&gt;
                }&lt;br /&gt;
            ],&lt;br /&gt;
            &amp;quot;created&amp;quot;: &amp;quot;2014-11-11T01:08:03Z&amp;quot;,&lt;br /&gt;
            &amp;quot;updated&amp;quot;: &amp;quot;2014-11-11T01:08:03Z&amp;quot;&lt;br /&gt;
        },&lt;br /&gt;
        {&lt;br /&gt;
&lt;br /&gt;
            &amp;quot;node_id&amp;quot;: &amp;quot;372f8f47-6818-4d83-aa42-8744c0e689b8&amp;quot;,&lt;br /&gt;
            &amp;quot;status&amp;quot;: &amp;quot;ACTIVE&amp;quot;,&lt;br /&gt;
            &amp;quot;flavor&amp;quot;: &amp;quot;large&amp;quot;,&lt;br /&gt;
            &amp;quot;endpoints&amp;quot;: [&lt;br /&gt;
                {&lt;br /&gt;
                    &amp;quot;type&amp;quot;: &amp;quot;AMQP&amp;quot;,&lt;br /&gt;
                    &amp;quot;value&amp;quot;: &amp;quot;amqp://10.20.30.42:10000&amp;quot;&lt;br /&gt;
                },&lt;br /&gt;
                {&lt;br /&gt;
                    &amp;quot;type&amp;quot;: &amp;quot;console&amp;quot;,&lt;br /&gt;
                    &amp;quot;value&amp;quot;: &amp;quot;http://10.20.30.42:5672&amp;quot;&lt;br /&gt;
                }&lt;br /&gt;
            ],&lt;br /&gt;
            &amp;quot;created&amp;quot;: &amp;quot;2014-11-11T01:12:03Z&amp;quot;,&lt;br /&gt;
            &amp;quot;updated&amp;quot;: &amp;quot;2014-11-11T01:12:03Z&amp;quot;&lt;br /&gt;
        }&lt;br /&gt;
    ]&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
==== Delete Cluster ====&lt;br /&gt;
&lt;br /&gt;
'''''DELETE /v1/clusters/{cluster_id}'''''''&lt;br /&gt;
&lt;br /&gt;
This operation will asynchronously delete the indicated cluster within the provided tenant.&lt;br /&gt;
&lt;br /&gt;
'''Request Parameters'''&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Parameter !! Type !! Description&lt;br /&gt;
|-&lt;br /&gt;
| cluster_id (URI) || UUID || Cluster ID.  This value is returned when a new cluster is created.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
'''Response Codes'''&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Response !! Code(s)&lt;br /&gt;
|-&lt;br /&gt;
| Normal || accepted (202)&lt;br /&gt;
|-&lt;br /&gt;
| Error || unauthorized (401), itemNotFound (404)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
'''Response Parameters'''&lt;br /&gt;
&lt;br /&gt;
N/A&lt;br /&gt;
&lt;br /&gt;
'''JSON Request'''&lt;br /&gt;
&lt;br /&gt;
N/A&lt;br /&gt;
&lt;br /&gt;
'''JSON Response'''&lt;br /&gt;
&lt;br /&gt;
N/A&lt;br /&gt;
&lt;br /&gt;
===Testing===&lt;br /&gt;
&lt;br /&gt;
Cue API testing will verify the expected functionality of the Cue user interface with both positive/negative tests.  The overall scope will cover testing from the HTTP REST request to required database interactions and work-flow task submission for RPC workers.&lt;br /&gt;
&lt;br /&gt;
====Unit Tests====&lt;br /&gt;
&lt;br /&gt;
Unit tests will verify the resulting function calls for each REST-ful URI and action(s).  The Python Mock library will be used to replace external system dependencies with placeholder objects.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Function !! Tests !! Input Data !! Expected Result(s)&lt;br /&gt;
|-&lt;br /&gt;
| List Clusters || &lt;br /&gt;
# Create 'n' cluster(s), then call list clusters and verify expected return object&lt;br /&gt;
# Call list clusters when no clusters exist within tenant and verify expected return object&lt;br /&gt;
|| &lt;br /&gt;
* n = # of clusters to create&lt;br /&gt;
||&lt;br /&gt;
# List of 'n' clusters is returned with appropriate fields, HTTP Ok (200)&lt;br /&gt;
# Empty list of clusters is returned, HTTP Ok (200)&lt;br /&gt;
|-&lt;br /&gt;
| Create Cluster || &lt;br /&gt;
# Create standard cluster 'c' and verify expected return object&lt;br /&gt;
# Create cluster with invalid flavor and verify expected return value&lt;br /&gt;
# Create cluster with invalid volume size and verify expected return value&lt;br /&gt;
||&lt;br /&gt;
* n = cluster size (number of nodes)&lt;br /&gt;
* m = cluster name&lt;br /&gt;
* f = flavor&lt;br /&gt;
* s = volume size&lt;br /&gt;
* nic = Network UUID&lt;br /&gt;
||&lt;br /&gt;
# Cluster ID, name and status for newly created cluster is returned, HTTP Accepted (202)&lt;br /&gt;
# HTTP Bad request is returned (400)&lt;br /&gt;
# HTTP Bad request is returned (400)&lt;br /&gt;
|-&lt;br /&gt;
| Show Cluster ||&lt;br /&gt;
# Create cluster, then call get cluster and verify expected return object&lt;br /&gt;
# Get cluster with invalid cluster_id&lt;br /&gt;
||&lt;br /&gt;
* cluster_id = cluster ID&lt;br /&gt;
||&lt;br /&gt;
# Cluster ID, name, status, created/updated date stamp and list of nodes is returned, HTTP Ok (200).&lt;br /&gt;
# HTTP Bad request is returned (400)&lt;br /&gt;
|-&lt;br /&gt;
| Delete Cluster || &lt;br /&gt;
# Create a cluster, then call delete cluster and verify expected return value&lt;br /&gt;
# Delete cluster with invalid cluster_id&lt;br /&gt;
||&lt;br /&gt;
* cluster_id = cluster ID&lt;br /&gt;
||&lt;br /&gt;
# HTTP accepted is returned (202)&lt;br /&gt;
# HTTP Bad request is returned (400)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====Functional Tests====&lt;br /&gt;
&lt;br /&gt;
The functional tests will verify the HTTP REST URI request lifecycle from controller routing to HTTP response.  These tests will make use of Pecan's testing utility; pecan.testing module.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Operation !! URI !! Tests !! Input Data !! Expected Data (JSON)&lt;br /&gt;
|-&lt;br /&gt;
| GET || /v1/clusters || &lt;br /&gt;
# Call when clusters exist&lt;br /&gt;
# Call when no clusters exist&lt;br /&gt;
|| &lt;br /&gt;
* n/a&lt;br /&gt;
||&lt;br /&gt;
# List of 'n' clusters is returned with appropriate fields, HTTP Ok (200)&lt;br /&gt;
# Empty list of clusters is returned, HTTP Ok (200)&lt;br /&gt;
|-&lt;br /&gt;
| POST || /v1/clusters ||&lt;br /&gt;
# Create standard cluster 'c' and verify expected return object&lt;br /&gt;
# Create cluster with invalid flavor and verify expected return value&lt;br /&gt;
# Create cluster with invalid volume size and verify expected return value&lt;br /&gt;
|| &lt;br /&gt;
* n = cluster size (number of nodes)&lt;br /&gt;
* m = cluster name&lt;br /&gt;
* f = flavor&lt;br /&gt;
* s = volume size&lt;br /&gt;
* nic = Network UUID&lt;br /&gt;
||&lt;br /&gt;
# Cluster ID, name and status for newly created cluster is returned, HTTP Accepted (202)&lt;br /&gt;
# HTTP Bad request is returned (400)&lt;br /&gt;
# HTTP Bad request is returned (400)&lt;br /&gt;
||&lt;br /&gt;
|-&lt;br /&gt;
| GET || /v1/clusters/{cluster_id} || &lt;br /&gt;
# Create cluster, then call get cluster and verify expected return object&lt;br /&gt;
# Get cluster with invalid cluster_id&lt;br /&gt;
|| &lt;br /&gt;
* cluster_id = cluster &lt;br /&gt;
||&lt;br /&gt;
# Cluster ID, name, status, created/updated date stamp and list of nodes is returned, HTTP Ok (200).&lt;br /&gt;
# HTTP Bad request is returned (400)&lt;br /&gt;
||&lt;br /&gt;
|-&lt;br /&gt;
| DELETE || /v1/clusters/{cluster_id} ||&lt;br /&gt;
# Create a cluster, then call delete cluster and verify expected return value&lt;br /&gt;
# Delete cluster with invalid cluster_id&lt;br /&gt;
||&lt;br /&gt;
* cluster_id = cluster ID&lt;br /&gt;
||&lt;br /&gt;
# HTTP accepted is returned (202)&lt;br /&gt;
# HTTP Bad request is returned (400)&lt;br /&gt;
||&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====Integration Tests====&lt;br /&gt;
&lt;br /&gt;
The integration tests will cover API functionality from HTTP request to database access and task submission for RPC workers.  The Pecan test utility will be used to route test request URI to appropriate controllers, then database record(s) will be verified for applicable change.  Finally the creation of task objections will be verified to ensure valid task flows.&lt;/div&gt;</summary>
		<author><name>Vipuls</name></author>	</entry>

	<entry>
		<id>https://wiki.openstack.org/w/index.php?title=Cue/api&amp;diff=69093</id>
		<title>Cue/api</title>
		<link rel="alternate" type="text/html" href="https://wiki.openstack.org/w/index.php?title=Cue/api&amp;diff=69093"/>
				<updated>2014-11-26T19:10:02Z</updated>
		
		<summary type="html">&lt;p&gt;Vipuls: /* Requirements */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Cue API Design ==&lt;br /&gt;
=== Acronyms ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! '''Acronym''' !! '''Definition'''&lt;br /&gt;
|-&lt;br /&gt;
| SSL || Secure Sockets Layer&lt;br /&gt;
|-&lt;br /&gt;
| REST || Representational State Transfer&lt;br /&gt;
|-&lt;br /&gt;
| URI || Uniform Resource Identifier&lt;br /&gt;
|-&lt;br /&gt;
| UUID || Universally Unique Identifier&lt;br /&gt;
|-&lt;br /&gt;
| AMQP || Advanced Messaging Queuing Protocol&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Introduction ===&lt;br /&gt;
&lt;br /&gt;
Messaging systems enable software applications to communicate and scale.  Many of today's enterprise systems make use of messaging systems as the glue between the different components or applications.  These components depend on messaging to interact with each other to provide end-to-end functionality.  This Openstack stackforge project is intended to solve the problem in the provisioning, deployment and management of messaging systems in a seamless automated fashion for applications deployed on the Openstack cloud operating system.&lt;br /&gt;
&lt;br /&gt;
There are several off-the-shelf messaging systems that implement messaging and queuing semantics such as RabbitMQ, Qpid and ActiveMQ.  These proven systems have wide acceptance, usage and testing.  The goal of this project is not to implement another messaging system for the Openstack platform, but to implement an automated messaging provisioning, deployment and management system.  This system will simplify the application development life-cycle to allow the developer to focus on their application instead of the back-end storage services. &lt;br /&gt;
&lt;br /&gt;
=== Goals ===&lt;br /&gt;
&lt;br /&gt;
The focus of the project is to provide high-availability, auto-healing and tenant level isolation to the end user.  The initial goal for version 1.0 is to use RabbitMQ as the supported messaging system.  The overall goal for this effort is to provide a messaging queueing provisioning service for OpenStack built with community support.&lt;br /&gt;
&lt;br /&gt;
=== Requirements ===&lt;br /&gt;
&lt;br /&gt;
The requirements for the MSGaaS Queue v1.0 project are listed in priority order below.&lt;br /&gt;
&lt;br /&gt;
* Control plane&lt;br /&gt;
* Rabbit Management Console&lt;br /&gt;
* Keystone integration&lt;br /&gt;
* Command-Line – Create/Delete Cluster&lt;br /&gt;
* Horizon Integration - Create/Delete Cluster&lt;br /&gt;
* Queue Control Plane Patching&lt;br /&gt;
* RabbitMQ Instance Patching&lt;br /&gt;
* Cluster Management – Scale up/down&lt;br /&gt;
* Devstack integration&lt;br /&gt;
* Gate Tests&lt;br /&gt;
&lt;br /&gt;
=== System Context Diagram ===&lt;br /&gt;
&lt;br /&gt;
[[File:SCD.jpg]]&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! '''Component''' !! '''Description'''&lt;br /&gt;
|-&lt;br /&gt;
| User || Direct customer of MSGaaS.&lt;br /&gt;
|-&lt;br /&gt;
| Horizon || MSGaaS functionality will be added to Horizon, which will provide a web-based portal for MSGaaS control.&lt;br /&gt;
|-&lt;br /&gt;
| CLI || Command Line Interface to MSGaaS, provides user access to provisioning and deploying messaging clusters.&lt;br /&gt;
|-&lt;br /&gt;
| REST_API || Provides user access to provisioning and deploying messaging clusters through REST interface.  This is a light-weight interface, provisioning and configuration of clusters/nodes is delegated to the TaskWorker process.&lt;br /&gt;
|-&lt;br /&gt;
| TaskScheduler || Used to synchronize work tasks between the REST_API and TaskWorker processes.&lt;br /&gt;
|-&lt;br /&gt;
| TaskWorker || Carries out work associated with all provisioning, configuration and management of RabbitMQ clusters and nodes.  Makes use of heat for initial provisioning/deployment.&lt;br /&gt;
|-&lt;br /&gt;
| DB || Database to store information on clusters and nodes.  Example, in cluster creation, when request is initially received through REST_API, this DB is updated accordingly and the work is delegated to TaskWorker.  TaskWorker then updates this DB as provisioning and configuration takes place.  Subsequent calls to check on status of cluster creation, will return updated information from this DB.&lt;br /&gt;
|-&lt;br /&gt;
| Heat || Used cloud instance orchestration in deploying RabbitMQ cluster images.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== REST API ===&lt;br /&gt;
&lt;br /&gt;
General requirement, REST API must respond within 500ms.&lt;br /&gt;
==== List Clusters ====&lt;br /&gt;
&lt;br /&gt;
'''''GET /v1/clusters'''''&lt;br /&gt;
&lt;br /&gt;
This operation synchronously returns all clusters provisioned within the associated project id.&lt;br /&gt;
&lt;br /&gt;
'''Request Parameters'''&lt;br /&gt;
N/A&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Response !! Code(s)&lt;br /&gt;
|-&lt;br /&gt;
| Normal || ok (200)&lt;br /&gt;
|-&lt;br /&gt;
| Error || unauthorized (401)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
'''Response Parameters'''&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Parameter !! Type !! Description&lt;br /&gt;
|-&lt;br /&gt;
| cluster(list) || string || List of clusters, detailing respective cluster id, name, status, created time stamp and updated time stamp.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
	&lt;br /&gt;
&lt;br /&gt;
'''JSON Request'''&lt;br /&gt;
&lt;br /&gt;
N/A&lt;br /&gt;
&lt;br /&gt;
'''JSON Response'''&lt;br /&gt;
&lt;br /&gt;
{&lt;br /&gt;
    &amp;quot;clusters&amp;quot;: &amp;lt;nowiki&amp;gt;[&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
        {&lt;br /&gt;
            &amp;quot;cluster_id&amp;quot;: &amp;quot;b51948c9-1ac5-4c28-a580-6f7c500d82f8&amp;quot;,&lt;br /&gt;
            &amp;quot;name&amp;quot;: &amp;quot;Message Cluster 1&amp;quot;,&lt;br /&gt;
            &amp;quot;status&amp;quot;: &amp;quot;ACTIVE&amp;quot;,&lt;br /&gt;
            &amp;quot;created&amp;quot;: &amp;quot;2014-11-11T01:02:03Z&amp;quot;,&lt;br /&gt;
            &amp;quot;updated&amp;quot;: &amp;quot;2014-11-11T01:02:03Z&amp;quot;&lt;br /&gt;
        },&lt;br /&gt;
        {&lt;br /&gt;
            &amp;quot;cluster_id&amp;quot;: &amp;quot;13c456c9-bbfc-4c31-b26d-3ae5c3cd7a77&amp;quot;,&lt;br /&gt;
            &amp;quot;name&amp;quot;: &amp;quot;Message Cluster 2&amp;quot;,&lt;br /&gt;
            &amp;quot;status&amp;quot;: &amp;quot;ACTIVE&amp;quot;,&lt;br /&gt;
            &amp;quot;created&amp;quot;: &amp;quot;2014-11-12T13:23:54Z&amp;quot;,&lt;br /&gt;
            &amp;quot;updated&amp;quot;: &amp;quot;2014-11-13T19:55:01Z&amp;quot;&lt;br /&gt;
        }&lt;br /&gt;
    ]&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
==== Create Cluster ====&lt;br /&gt;
&lt;br /&gt;
'''''POST /v1/clusters'''''&lt;br /&gt;
&lt;br /&gt;
This operation asynchronously creates a new cluster of Nova instances provisioned with the required message brokers in a central tenant. &lt;br /&gt;
&lt;br /&gt;
'''Request Parameters'''&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Parameter !! Type !! Description&lt;br /&gt;
|-&lt;br /&gt;
| nic || UUID || Network Identification for a Neutron network where cluster will be created in.&lt;br /&gt;
|-&lt;br /&gt;
| name || string || Name of cluster.&lt;br /&gt;
|-&lt;br /&gt;
| volume_size || int || Optional parameter to indicate size of volume for node instance.  If volumes are supported, then this parameter will be used.  If ephmeral disk are not supported, volume support will be required.&lt;br /&gt;
|-&lt;br /&gt;
| flavor (list) || string || List of node flavors, which specify VM type in terms of CPU/memory/disk resources (e.g. small, medium, large).  Size of list denotes the number of nodes in cluster.&lt;br /&gt;
&lt;br /&gt;
small:  1 GHz dual-core CPU; 512 MB memory; 250 GB disk&lt;br /&gt;
&lt;br /&gt;
medium: 2.8 GHz dual-core CPU; 4 GB memory; 1 TB disk&lt;br /&gt;
&lt;br /&gt;
large: 3.6 GHz quad-core CPU; 32 GB memory; 5 TB disk&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
'''Response Codes'''&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Response !! Code(s)&lt;br /&gt;
|-&lt;br /&gt;
| Normal || 202 (accepted)&lt;br /&gt;
|-&lt;br /&gt;
| Error || badRequest (400), unauthorized (401), itemNotFound (404)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
'''Response Parameters'''&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Parameter !! Type !! Description&lt;br /&gt;
|-&lt;br /&gt;
| cluster_id || UUID || ID of cluster to be created.&lt;br /&gt;
|-&lt;br /&gt;
| name || string || Name of cluster (same as provided name in request parameters).&lt;br /&gt;
|-&lt;br /&gt;
| status || string || Current status of cluster.&lt;br /&gt;
&lt;br /&gt;
BUILDING: Cluster is in progress of being provisioned.&lt;br /&gt;
&lt;br /&gt;
ACTIVE:  Cluster is running.&lt;br /&gt;
&lt;br /&gt;
ERROR: Provisioning error(s) encountered.&lt;br /&gt;
&lt;br /&gt;
DELETED:  Cluster has been deleted.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
'''JSON Request'''&lt;br /&gt;
&lt;br /&gt;
{&lt;br /&gt;
    &amp;quot;nic&amp;quot;: &amp;quot;d32019d3-bc6e-4319-9c1d-6722fc136a22&amp;quot;,&lt;br /&gt;
    &amp;quot;name&amp;quot;: &amp;quot;Message Cluster 1&amp;quot;,&lt;br /&gt;
    &amp;quot;volume_size&amp;quot;: &amp;quot;100&amp;quot;,&lt;br /&gt;
    &amp;quot;nodes&amp;quot;: [&lt;br /&gt;
        {&lt;br /&gt;
            &amp;quot;flavor&amp;quot;: &amp;quot;large&amp;quot;&lt;br /&gt;
        },&lt;br /&gt;
        {&lt;br /&gt;
            &amp;quot;flavor&amp;quot;: &amp;quot;large&amp;quot;&lt;br /&gt;
        },&lt;br /&gt;
        {&lt;br /&gt;
            &amp;quot;flavor&amp;quot;: &amp;quot;large&amp;quot;&lt;br /&gt;
        }&lt;br /&gt;
    ]&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
'''JSON Response'''&lt;br /&gt;
&lt;br /&gt;
{&lt;br /&gt;
    &amp;quot;cluster_id&amp;quot;: &amp;quot;dd745f4a-9333-417e-bb89-9c989c84c068&amp;quot;,&lt;br /&gt;
    &amp;quot;name&amp;quot;: &amp;quot;Message Cluster 1&amp;quot;,&lt;br /&gt;
    &amp;quot;status&amp;quot;: &amp;quot;BUILDING&amp;quot;,&lt;br /&gt;
    &amp;quot;created&amp;quot;: &amp;quot;2014-11-11T01:02:03Z&amp;quot;,&lt;br /&gt;
    &amp;quot;updated&amp;quot;: &amp;quot;2014-11-11T01:02:03Z&amp;quot;,&lt;br /&gt;
    &amp;quot;nodes&amp;quot;: [&lt;br /&gt;
        {&lt;br /&gt;
            &amp;quot;node_id&amp;quot;: &amp;quot;616fb98f-46ca-475e-917e-2563e5a8cd19&amp;quot;,&lt;br /&gt;
            &amp;quot;status&amp;quot;: &amp;quot;BUILDING&amp;quot;,&lt;br /&gt;
            &amp;quot;flavor&amp;quot;: &amp;quot;large&amp;quot;,&lt;br /&gt;
        },&lt;br /&gt;
        {&lt;br /&gt;
&lt;br /&gt;
            &amp;quot;node_id&amp;quot;: &amp;quot;e90c9d13-c4b8-4a08-992a-dad6109b8ac2&amp;quot;,&lt;br /&gt;
            &amp;quot;status&amp;quot;: &amp;quot;BUILDING&amp;quot;,&lt;br /&gt;
            &amp;quot;flavor&amp;quot;: &amp;quot;large&amp;quot;,&lt;br /&gt;
        },&lt;br /&gt;
        {&lt;br /&gt;
&lt;br /&gt;
            &amp;quot;node_id&amp;quot;: &amp;quot;372f8f47-6818-4d83-aa42-8744c0e689b8&amp;quot;,&lt;br /&gt;
            &amp;quot;status&amp;quot;: &amp;quot;BUILDING&amp;quot;,            &lt;br /&gt;
            &amp;quot;flavor&amp;quot;: &amp;quot;large&amp;quot;,&lt;br /&gt;
        }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
==== Show Cluster ====&lt;br /&gt;
&lt;br /&gt;
'''''GET /v1/clusters/{cluster_id}'''''&lt;br /&gt;
&lt;br /&gt;
This operation synchronously returns the status and information on the specified cluster within the provided tenant.&lt;br /&gt;
&lt;br /&gt;
'''Request Parameters'''&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Parameter !! Type !! Description&lt;br /&gt;
|-&lt;br /&gt;
| cluster_id (URI) || UUID || Cluster ID.  This value is returned when a new cluster is created.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
'''Response Codes'''&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Response !! Code(s)&lt;br /&gt;
|-&lt;br /&gt;
| Normal || ok (200)&lt;br /&gt;
|-&lt;br /&gt;
| Error || unauthorized (401), itemNotFound (404)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
'''Response Parameters'''&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Parameter !! Type !! Description&lt;br /&gt;
|-&lt;br /&gt;
| cluster_id || UUID || ID of requested cluster.&lt;br /&gt;
|-&lt;br /&gt;
| name || string || Name of cluster.&lt;br /&gt;
|-&lt;br /&gt;
| status || string || Current status of cluster.&lt;br /&gt;
&lt;br /&gt;
BUILDING: Cluster is in progress of being provisioned.&lt;br /&gt;
&lt;br /&gt;
ACTIVE:  Cluster is running.&lt;br /&gt;
&lt;br /&gt;
ERROR: Provisioning error(s) encountered.&lt;br /&gt;
&lt;br /&gt;
DELETED:  Cluster has been deleted.&lt;br /&gt;
|-&lt;br /&gt;
| created || string || Created time stamp in format: yyyy-mm-ddThh:mm:ssZ&lt;br /&gt;
|-&lt;br /&gt;
| updated || string || Last updated time stamp in format: yyyy-mm-ddThh:mm:ssZ&lt;br /&gt;
|-&lt;br /&gt;
| nodes(list) || node || List of nodes, which includes node id, instance state, and flavor.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
'''JSON Request'''&lt;br /&gt;
&lt;br /&gt;
N/A&lt;br /&gt;
&lt;br /&gt;
'''JSON Response'''&lt;br /&gt;
&lt;br /&gt;
{&lt;br /&gt;
    &amp;quot;cluster_id&amp;quot;: &amp;quot;dd745f4a-9333-417e-bb89-9c989c84c068&amp;quot;,&lt;br /&gt;
    &amp;quot;name&amp;quot;: &amp;quot;Message Cluster 1&amp;quot;,&lt;br /&gt;
    &amp;quot;status&amp;quot;: &amp;quot;ACTIVE&amp;quot;,&lt;br /&gt;
    &amp;quot;created&amp;quot;: &amp;quot;2014-11-11T01:02:03Z&amp;quot;,&lt;br /&gt;
    &amp;quot;updated&amp;quot;: &amp;quot;2014-11-11T01:02:03Z&amp;quot;,&lt;br /&gt;
    &amp;quot;nodes&amp;quot;: [&lt;br /&gt;
        {&lt;br /&gt;
            &amp;quot;node_id&amp;quot;: &amp;quot;616fb98f-46ca-475e-917e-2563e5a8cd19&amp;quot;,&lt;br /&gt;
            &amp;quot;status&amp;quot;: &amp;quot;ACTIVE&amp;quot;,&lt;br /&gt;
            &amp;quot;flavor&amp;quot;: &amp;quot;large&amp;quot;,&lt;br /&gt;
            &amp;quot;endpoints&amp;quot;: [&lt;br /&gt;
                {&lt;br /&gt;
                    &amp;quot;type&amp;quot;: &amp;quot;AMQP&amp;quot;,&lt;br /&gt;
                    &amp;quot;value&amp;quot;: &amp;quot;amqp://10.20.30.40:10000&amp;quot;&lt;br /&gt;
                },&lt;br /&gt;
                {&lt;br /&gt;
                    &amp;quot;type&amp;quot;: &amp;quot;console&amp;quot;,&lt;br /&gt;
                    &amp;quot;value&amp;quot;: &amp;quot;http://10.20.30.40:5672&amp;quot;&lt;br /&gt;
                }&lt;br /&gt;
            ],&lt;br /&gt;
            &amp;quot;created&amp;quot;: &amp;quot;2014-11-11T01:06:03Z&amp;quot;,&lt;br /&gt;
            &amp;quot;updated&amp;quot;: &amp;quot;2014-11-11T01:06:03Z&amp;quot;&lt;br /&gt;
        },&lt;br /&gt;
        {&lt;br /&gt;
&lt;br /&gt;
            &amp;quot;node_id&amp;quot;: &amp;quot;e90c9d13-c4b8-4a08-992a-dad6109b8ac2&amp;quot;,&lt;br /&gt;
            &amp;quot;status&amp;quot;: &amp;quot;ACTIVE&amp;quot;,&lt;br /&gt;
            &amp;quot;flavor&amp;quot;: &amp;quot;large&amp;quot;,&lt;br /&gt;
            &amp;quot;endpoints&amp;quot;: [&lt;br /&gt;
                {&lt;br /&gt;
                    &amp;quot;type&amp;quot;: &amp;quot;AMQP&amp;quot;,&lt;br /&gt;
                    &amp;quot;value&amp;quot;: &amp;quot;amqp://10.20.30.41:10000&amp;quot;&lt;br /&gt;
                },&lt;br /&gt;
                {&lt;br /&gt;
                    &amp;quot;type&amp;quot;: &amp;quot;console&amp;quot;,&lt;br /&gt;
                    &amp;quot;value&amp;quot;: &amp;quot;http://10.20.30.41:5672&amp;quot;&lt;br /&gt;
                }&lt;br /&gt;
            ],&lt;br /&gt;
            &amp;quot;created&amp;quot;: &amp;quot;2014-11-11T01:08:03Z&amp;quot;,&lt;br /&gt;
            &amp;quot;updated&amp;quot;: &amp;quot;2014-11-11T01:08:03Z&amp;quot;&lt;br /&gt;
        },&lt;br /&gt;
        {&lt;br /&gt;
&lt;br /&gt;
            &amp;quot;node_id&amp;quot;: &amp;quot;372f8f47-6818-4d83-aa42-8744c0e689b8&amp;quot;,&lt;br /&gt;
            &amp;quot;status&amp;quot;: &amp;quot;ACTIVE&amp;quot;,&lt;br /&gt;
            &amp;quot;flavor&amp;quot;: &amp;quot;large&amp;quot;,&lt;br /&gt;
            &amp;quot;endpoints&amp;quot;: [&lt;br /&gt;
                {&lt;br /&gt;
                    &amp;quot;type&amp;quot;: &amp;quot;AMQP&amp;quot;,&lt;br /&gt;
                    &amp;quot;value&amp;quot;: &amp;quot;amqp://10.20.30.42:10000&amp;quot;&lt;br /&gt;
                },&lt;br /&gt;
                {&lt;br /&gt;
                    &amp;quot;type&amp;quot;: &amp;quot;console&amp;quot;,&lt;br /&gt;
                    &amp;quot;value&amp;quot;: &amp;quot;http://10.20.30.42:5672&amp;quot;&lt;br /&gt;
                }&lt;br /&gt;
            ],&lt;br /&gt;
            &amp;quot;created&amp;quot;: &amp;quot;2014-11-11T01:12:03Z&amp;quot;,&lt;br /&gt;
            &amp;quot;updated&amp;quot;: &amp;quot;2014-11-11T01:12:03Z&amp;quot;&lt;br /&gt;
        }&lt;br /&gt;
    ]&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
==== Delete Cluster ====&lt;br /&gt;
&lt;br /&gt;
'''''DELETE /v1/clusters/{cluster_id}'''''''&lt;br /&gt;
&lt;br /&gt;
This operation will asynchronously delete the indicated cluster within the provided tenant.&lt;br /&gt;
&lt;br /&gt;
'''Request Parameters'''&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Parameter !! Type !! Description&lt;br /&gt;
|-&lt;br /&gt;
| cluster_id (URI) || UUID || Cluster ID.  This value is returned when a new cluster is created.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
'''Response Codes'''&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Response !! Code(s)&lt;br /&gt;
|-&lt;br /&gt;
| Normal || accepted (202)&lt;br /&gt;
|-&lt;br /&gt;
| Error || unauthorized (401), itemNotFound (404)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
'''Response Parameters'''&lt;br /&gt;
&lt;br /&gt;
N/A&lt;br /&gt;
&lt;br /&gt;
'''JSON Request'''&lt;br /&gt;
&lt;br /&gt;
N/A&lt;br /&gt;
&lt;br /&gt;
'''JSON Response'''&lt;br /&gt;
&lt;br /&gt;
N/A&lt;br /&gt;
&lt;br /&gt;
===Testing===&lt;br /&gt;
&lt;br /&gt;
Cue API testing will verify the expected functionality of the Cue user interface with both positive/negative tests.  The overall scope will cover testing from the HTTP REST request to required database interactions and work-flow task submission for RPC workers.&lt;br /&gt;
&lt;br /&gt;
====Unit Tests====&lt;br /&gt;
&lt;br /&gt;
Unit tests will verify the resulting function calls for each REST-ful URI and action(s).  The Python Mock library will be used to replace external system dependencies with placeholder objects.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Function !! Tests !! Input Data !! Expected Result(s)&lt;br /&gt;
|-&lt;br /&gt;
| List Clusters || &lt;br /&gt;
# Create 'n' cluster(s), then call list clusters and verify expected return object&lt;br /&gt;
# Call list clusters when no clusters exist within tenant and verify expected return object&lt;br /&gt;
|| &lt;br /&gt;
* n = # of clusters to create&lt;br /&gt;
||&lt;br /&gt;
# List of 'n' clusters is returned with appropriate fields, HTTP Ok (200)&lt;br /&gt;
# Empty list of clusters is returned, HTTP Ok (200)&lt;br /&gt;
|-&lt;br /&gt;
| Create Cluster || &lt;br /&gt;
# Create standard cluster 'c' and verify expected return object&lt;br /&gt;
# Create cluster with invalid flavor and verify expected return value&lt;br /&gt;
# Create cluster with invalid volume size and verify expected return value&lt;br /&gt;
||&lt;br /&gt;
* n = cluster size (number of nodes)&lt;br /&gt;
* m = cluster name&lt;br /&gt;
* f = flavor&lt;br /&gt;
* s = volume size&lt;br /&gt;
* nic = Network UUID&lt;br /&gt;
||&lt;br /&gt;
# Cluster ID, name and status for newly created cluster is returned, HTTP Accepted (202)&lt;br /&gt;
# HTTP Bad request is returned (400)&lt;br /&gt;
# HTTP Bad request is returned (400)&lt;br /&gt;
|-&lt;br /&gt;
| Show Cluster ||&lt;br /&gt;
# Create cluster, then call get cluster and verify expected return object&lt;br /&gt;
# Get cluster with invalid cluster_id&lt;br /&gt;
||&lt;br /&gt;
* cluster_id = cluster ID&lt;br /&gt;
||&lt;br /&gt;
# Cluster ID, name, status, created/updated date stamp and list of nodes is returned, HTTP Ok (200).&lt;br /&gt;
# HTTP Bad request is returned (400)&lt;br /&gt;
|-&lt;br /&gt;
| Delete Cluster || &lt;br /&gt;
# Create a cluster, then call delete cluster and verify expected return value&lt;br /&gt;
# Delete cluster with invalid cluster_id&lt;br /&gt;
||&lt;br /&gt;
* cluster_id = cluster ID&lt;br /&gt;
||&lt;br /&gt;
# HTTP accepted is returned (202)&lt;br /&gt;
# HTTP Bad request is returned (400)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====Functional Tests====&lt;br /&gt;
&lt;br /&gt;
The functional tests will verify the HTTP REST URI request lifecycle from controller routing to HTTP response.  These tests will make use of Pecan's testing utility; pecan.testing module.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Operation !! URI !! Tests !! Input Data !! Expected Data (JSON)&lt;br /&gt;
|-&lt;br /&gt;
| GET || /v1/clusters || &lt;br /&gt;
# Call when clusters exist&lt;br /&gt;
# Call when no clusters exist&lt;br /&gt;
|| &lt;br /&gt;
* n/a&lt;br /&gt;
||&lt;br /&gt;
# List of 'n' clusters is returned with appropriate fields, HTTP Ok (200)&lt;br /&gt;
# Empty list of clusters is returned, HTTP Ok (200)&lt;br /&gt;
|-&lt;br /&gt;
| POST || /v1/clusters ||&lt;br /&gt;
# Create standard cluster 'c' and verify expected return object&lt;br /&gt;
# Create cluster with invalid flavor and verify expected return value&lt;br /&gt;
# Create cluster with invalid volume size and verify expected return value&lt;br /&gt;
|| &lt;br /&gt;
* n = cluster size (number of nodes)&lt;br /&gt;
* m = cluster name&lt;br /&gt;
* f = flavor&lt;br /&gt;
* s = volume size&lt;br /&gt;
* nic = Network UUID&lt;br /&gt;
||&lt;br /&gt;
# Cluster ID, name and status for newly created cluster is returned, HTTP Accepted (202)&lt;br /&gt;
# HTTP Bad request is returned (400)&lt;br /&gt;
# HTTP Bad request is returned (400)&lt;br /&gt;
||&lt;br /&gt;
|-&lt;br /&gt;
| GET || /v1/clusters/{cluster_id} || &lt;br /&gt;
# Create cluster, then call get cluster and verify expected return object&lt;br /&gt;
# Get cluster with invalid cluster_id&lt;br /&gt;
|| &lt;br /&gt;
* cluster_id = cluster &lt;br /&gt;
||&lt;br /&gt;
# Cluster ID, name, status, created/updated date stamp and list of nodes is returned, HTTP Ok (200).&lt;br /&gt;
# HTTP Bad request is returned (400)&lt;br /&gt;
||&lt;br /&gt;
|-&lt;br /&gt;
| DELETE || /v1/clusters/{cluster_id} ||&lt;br /&gt;
# Create a cluster, then call delete cluster and verify expected return value&lt;br /&gt;
# Delete cluster with invalid cluster_id&lt;br /&gt;
||&lt;br /&gt;
* cluster_id = cluster ID&lt;br /&gt;
||&lt;br /&gt;
# HTTP accepted is returned (202)&lt;br /&gt;
# HTTP Bad request is returned (400)&lt;br /&gt;
||&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====Integration Tests====&lt;br /&gt;
&lt;br /&gt;
The integration tests will cover API functionality from HTTP request to database access and task submission for RPC workers.  The Pecan test utility will be used to route test request URI to appropriate controllers, then database record(s) will be verified for applicable change.  Finally the creation of task objections will be verified to ensure valid task flows.&lt;/div&gt;</summary>
		<author><name>Vipuls</name></author>	</entry>

	<entry>
		<id>https://wiki.openstack.org/w/index.php?title=Cue&amp;diff=67775</id>
		<title>Cue</title>
		<link rel="alternate" type="text/html" href="https://wiki.openstack.org/w/index.php?title=Cue&amp;diff=67775"/>
				<updated>2014-11-13T00:40:26Z</updated>
		
		<summary type="html">&lt;p&gt;Vipuls: /* Cue */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Cue =&lt;br /&gt;
== Mission Statement ==&lt;br /&gt;
The OpenStack Message Broker Provisioning as a Service Mission: To provide scalable and reliable Message Broker provisioning functionality for off the shelf messaging technologies, as well as to provide advanced management, tuning, and administration of underlying message brokers.&lt;br /&gt;
&lt;br /&gt;
== Description ==&lt;br /&gt;
&lt;br /&gt;
Cue is a Message Broker provisioning service for Openstack.  Its goal is to simplify and automate the complex tasks of provisioning, management, and administration of message brokers.  Users of the service can create and manage multiple clusters of Message brokers, of various types as needed.  The service will provide resource isolation at the VM level, and does not attempt to implement multi-tenancy at the message broker layer.&lt;br /&gt;
&lt;br /&gt;
== Why ==&lt;br /&gt;
&lt;br /&gt;
Messaging is a common development pattern for building loosely coupled distributed systems.  Messaging systems also act as glue between independent applications.  Several off-the-shelf products exist that implement messaging and queuing semantics.&lt;br /&gt;
  &lt;br /&gt;
Provisioning and supporting Messaging systems for an individual application can be a time consuming and painful experience.  This product aims to simplify the provisioning and management of messaging systems, providing High Availability and auto-healing capabilities to the end user, while providing tenant-level isolation.&lt;br /&gt;
  &lt;br /&gt;
The main goal of this service is to simplify the end user Application development lifecycle and allow the developer to focus on their application, instead of the backend middleware services.&lt;br /&gt;
&lt;br /&gt;
== Goals ==&lt;br /&gt;
# Produce a Message Broker Provisioning Service for Openstack&lt;br /&gt;
# Protocol Agnostic&lt;br /&gt;
# Support multiple Broker backends&lt;br /&gt;
# Provide HA and Fault Tolerance by leveraging underlying Broker Cluster capabilities&lt;br /&gt;
# Provide tuned and properly configured Message Brokers on-demand&lt;br /&gt;
# Support Broker management operations such as Backup of Configuration, Scale Up, Scale Down&lt;br /&gt;
&lt;br /&gt;
== Non-Goals ==&lt;br /&gt;
&lt;br /&gt;
# Data plane API&lt;br /&gt;
# Multi-tenancy at the Message Broker layer&lt;br /&gt;
&lt;br /&gt;
== Brokers ==&lt;br /&gt;
Cue will support the following brokers (in order of priority):&lt;br /&gt;
# RabbitMQ&lt;br /&gt;
# qpid&lt;br /&gt;
# Kafka&lt;br /&gt;
# .. others?&lt;br /&gt;
&lt;br /&gt;
== V1 API == &lt;br /&gt;
The v1 API is still a work in progress.  We are working on coming up with much more detailed API design, an easy version looks like this.&lt;br /&gt;
&lt;br /&gt;
'''Create a Cluster'''&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
POST /v1/clusters&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
'''List Clusters'''&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
GET /v1/clusters&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
'''Show Cluster'''&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
GET /v1/clusters/{cluster_id}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
'''Delete Cluster'''&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
GET /v1/clusters/{cluster_id}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
'''Add Node to Cluster (scale up)'''&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
POST /v1/clusters/{cluster_id}/node/&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
'''Delete Node from Cluster (scale down)'''&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
DELETE /v1/clusters/{cluster_id}/node/{node_id}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Code ==&lt;br /&gt;
We've started building the project, it now lives on Stackforge.&lt;br /&gt;
&lt;br /&gt;
https://github.com/stackforge/cue&lt;/div&gt;</summary>
		<author><name>Vipuls</name></author>	</entry>

	<entry>
		<id>https://wiki.openstack.org/w/index.php?title=Cue&amp;diff=67172</id>
		<title>Cue</title>
		<link rel="alternate" type="text/html" href="https://wiki.openstack.org/w/index.php?title=Cue&amp;diff=67172"/>
				<updated>2014-11-03T14:42:27Z</updated>
		
		<summary type="html">&lt;p&gt;Vipuls: /* Cue */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Cue =&lt;br /&gt;
== Mission Statement ==&lt;br /&gt;
The OpenStack Message Broker Provisioning as a Service Mission: To provide scalable and reliable Message Broker provisioning functionality for off the shelf messaging technologies, as well as to provide advanced management, tuning, and administration of underlying message brokers.&lt;br /&gt;
&lt;br /&gt;
== Description ==&lt;br /&gt;
&lt;br /&gt;
Cue is a Message Broker provisioning service for Openstack.  Its goal is to simplify and automate the complex tasks of provisioning, management, and administration of message brokers.  Users of the service can create and manage multiple clusters of Message brokers, of various types as needed.  The service will provide resource isolation at the VM level, and does not attempt to implement multi-tenancy at the message broker layer.&lt;br /&gt;
&lt;br /&gt;
== Why ==&lt;br /&gt;
&lt;br /&gt;
Messaging is a common development pattern for building loosely coupled distributed systems.  Messaging systems also act as glue between independent applications.  Several off-the-shelf products exist that implement messaging and queuing semantics.&lt;br /&gt;
  &lt;br /&gt;
Provisioning and supporting Messaging systems for an individual application can be a time consuming and painful experience.  This product aims to simplify the provisioning and management of messaging systems, providing High Availability and auto-healing capabilities to the end user, while providing tenant-level isolation.&lt;br /&gt;
  &lt;br /&gt;
The main goal of this service is to simplify the end user Application development lifecycle and allow the developer to focus on their application, instead of the backend middleware services.&lt;br /&gt;
&lt;br /&gt;
== Goals ==&lt;br /&gt;
# Produce a Message Broker Provisioning Service for Openstack&lt;br /&gt;
# Protocol Agnostic&lt;br /&gt;
# Support multiple Broker backends&lt;br /&gt;
# Provide HA and Fault Tolerance by leveraging underlying Broker Cluster capabilities&lt;br /&gt;
# Provide tuned and properly configured Message Brokers on-demand&lt;br /&gt;
# Support Broker management operations such as Backup of Configuration, Scale Up, Scale Down&lt;br /&gt;
&lt;br /&gt;
== Non-Goals ==&lt;br /&gt;
&lt;br /&gt;
# Data plane API&lt;br /&gt;
# Multi-tenancy at the Message Broker layer&lt;br /&gt;
&lt;br /&gt;
== Brokers ==&lt;br /&gt;
Cue will support the following brokers (in order of priority):&lt;br /&gt;
# RabbitMQ&lt;br /&gt;
# qpid&lt;br /&gt;
# Kafka&lt;br /&gt;
# .. others?&lt;br /&gt;
&lt;br /&gt;
== V1 API == &lt;br /&gt;
The v1 API is still a work in progress.  We are working on coming up with much more detailed API design, an easy version looks like this.&lt;br /&gt;
&lt;br /&gt;
'''Create a Cluster'''&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
POST /v1/clusters&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
'''List Clusters'''&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
GET /v1/clusters&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
'''Show Cluster'''&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
GET /v1/clusters/{cluster_id}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
'''Delete Cluster'''&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
GET /v1/clusters/{cluster_id}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
'''Add Node to Cluster (scale up)'''&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
POST /v1/clusters/{cluster_id}/node/&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
'''Delete Node from Cluster (scale down)'''&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
DELETE /v1/clusters/{cluster_id}/node/{node_id}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Code ==&lt;br /&gt;
We've started building the project, it currently lives on a personal github.  The project will move to Stackforge and adopt the Gerrit process.&lt;br /&gt;
&lt;br /&gt;
https://github.com/vipulsabhaya/cue&lt;/div&gt;</summary>
		<author><name>Vipuls</name></author>	</entry>

	<entry>
		<id>https://wiki.openstack.org/w/index.php?title=Cue&amp;diff=67171</id>
		<title>Cue</title>
		<link rel="alternate" type="text/html" href="https://wiki.openstack.org/w/index.php?title=Cue&amp;diff=67171"/>
				<updated>2014-11-03T14:34:30Z</updated>
		
		<summary type="html">&lt;p&gt;Vipuls: /* V1 API */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Cue =&lt;br /&gt;
== Mission Statement ==&lt;br /&gt;
The OpenStack Message Broker Provisioning as a Service Mission: To provide scalable and reliable Message Broker provisioning functionality for off the shelf messaging technologies, as well as to provide advanced management, tuning, and administration of underlying message brokers.&lt;br /&gt;
&lt;br /&gt;
== Description ==&lt;br /&gt;
&lt;br /&gt;
Cue is a Message Broker provisioning service for Openstack.  Its goal is to simplify and automate the complex tasks of provisioning, management, and administration of message brokers.  Users of the service can create and manage multiple clusters of Message brokers, of various types as needed.  The service will provide resource isolation at the VM level, and does not attempt to implement multi-tenancy at the message broker layer.&lt;br /&gt;
&lt;br /&gt;
== Why ==&lt;br /&gt;
&lt;br /&gt;
Messaging is a common development pattern for building loosely coupled distributed systems.  Messaging systems also act as glue between independent applications.  Several off-the-shelf products exist that implement messaging and queuing semantics.&lt;br /&gt;
  &lt;br /&gt;
Provisioning and supporting Messaging systems for an individual application can be a time consuming and painful experience.  This product aims to simplify the provisioning and management of messaging systems, providing High Availability and auto-healing capabilities to the end user, while providing tenant-level isolation.&lt;br /&gt;
  &lt;br /&gt;
The main goal of this service is to simplify the end user Application development lifecycle and allow the developer to focus on their application, instead of the backend middleware services.&lt;br /&gt;
&lt;br /&gt;
== Goals ==&lt;br /&gt;
# Produce a Message Broker Provisioning Service for Openstack&lt;br /&gt;
# Protocol Agnostic&lt;br /&gt;
# Support multiple Broker backends&lt;br /&gt;
# Provide HA and Fault Tolerance by leveraging underlying Broker Cluster capabilities&lt;br /&gt;
# Provide tuned and properly configured Message Brokers on-demand&lt;br /&gt;
# Support Broker management operations such as Backup of Configuration, Scale Up, Scale Down&lt;br /&gt;
&lt;br /&gt;
== Non-Goals ==&lt;br /&gt;
&lt;br /&gt;
# Data plane API&lt;br /&gt;
# Multi-tenancy at the Message Broker layer&lt;br /&gt;
&lt;br /&gt;
== Brokers ==&lt;br /&gt;
Cue will support the following brokers (in order of priority):&lt;br /&gt;
# RabbitMQ&lt;br /&gt;
# qpid&lt;br /&gt;
# Kafka&lt;br /&gt;
# .. others?&lt;br /&gt;
&lt;br /&gt;
== V1 API == &lt;br /&gt;
The v1 API is still a work in progress.  We are working on coming up with much more detailed API design, an easy version looks like this.&lt;br /&gt;
&lt;br /&gt;
'''Create a Cluster'''&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
POST /v1/clusters&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
'''List Clusters'''&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
GET /v1/clusters&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
'''Show Cluster'''&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
GET /v1/clusters/{cluster_id}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
'''Delete Cluster'''&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
GET /v1/clusters/{cluster_id}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
'''Add Node to Cluster (scale up)'''&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
POST /v1/clusters/{cluster_id}/node/&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
'''Delete Node from Cluster (scale down)'''&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
DELETE /v1/clusters/{cluster_id}/node/{node_id}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Vipuls</name></author>	</entry>

	<entry>
		<id>https://wiki.openstack.org/w/index.php?title=Cue&amp;diff=67170</id>
		<title>Cue</title>
		<link rel="alternate" type="text/html" href="https://wiki.openstack.org/w/index.php?title=Cue&amp;diff=67170"/>
				<updated>2014-11-03T14:32:54Z</updated>
		
		<summary type="html">&lt;p&gt;Vipuls: /* Cue */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Cue =&lt;br /&gt;
== Mission Statement ==&lt;br /&gt;
The OpenStack Message Broker Provisioning as a Service Mission: To provide scalable and reliable Message Broker provisioning functionality for off the shelf messaging technologies, as well as to provide advanced management, tuning, and administration of underlying message brokers.&lt;br /&gt;
&lt;br /&gt;
== Description ==&lt;br /&gt;
&lt;br /&gt;
Cue is a Message Broker provisioning service for Openstack.  Its goal is to simplify and automate the complex tasks of provisioning, management, and administration of message brokers.  Users of the service can create and manage multiple clusters of Message brokers, of various types as needed.  The service will provide resource isolation at the VM level, and does not attempt to implement multi-tenancy at the message broker layer.&lt;br /&gt;
&lt;br /&gt;
== Why ==&lt;br /&gt;
&lt;br /&gt;
Messaging is a common development pattern for building loosely coupled distributed systems.  Messaging systems also act as glue between independent applications.  Several off-the-shelf products exist that implement messaging and queuing semantics.&lt;br /&gt;
  &lt;br /&gt;
Provisioning and supporting Messaging systems for an individual application can be a time consuming and painful experience.  This product aims to simplify the provisioning and management of messaging systems, providing High Availability and auto-healing capabilities to the end user, while providing tenant-level isolation.&lt;br /&gt;
  &lt;br /&gt;
The main goal of this service is to simplify the end user Application development lifecycle and allow the developer to focus on their application, instead of the backend middleware services.&lt;br /&gt;
&lt;br /&gt;
== Goals ==&lt;br /&gt;
# Produce a Message Broker Provisioning Service for Openstack&lt;br /&gt;
# Protocol Agnostic&lt;br /&gt;
# Support multiple Broker backends&lt;br /&gt;
# Provide HA and Fault Tolerance by leveraging underlying Broker Cluster capabilities&lt;br /&gt;
# Provide tuned and properly configured Message Brokers on-demand&lt;br /&gt;
# Support Broker management operations such as Backup of Configuration, Scale Up, Scale Down&lt;br /&gt;
&lt;br /&gt;
== Non-Goals ==&lt;br /&gt;
&lt;br /&gt;
# Data plane API&lt;br /&gt;
# Multi-tenancy at the Message Broker layer&lt;br /&gt;
&lt;br /&gt;
== Brokers ==&lt;br /&gt;
Cue will support the following brokers (in order of priority):&lt;br /&gt;
# RabbitMQ&lt;br /&gt;
# qpid&lt;br /&gt;
# Kafka&lt;br /&gt;
# .. others?&lt;br /&gt;
&lt;br /&gt;
== V1 API == &lt;br /&gt;
The v1 API is still a work in progress.  We are working on coming up with much more detailed API design, an easy version looks like this.&lt;br /&gt;
&lt;br /&gt;
# Create a Cluster&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
POST /v1/clusters&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
# List Clusters&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
GET /v1/clusters&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
# Show Cluster&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
GET /v1/clusters/{cluster_id}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
# Delete Cluster&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
GET /v1/clusters/{cluster_id}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
# Add Node to Cluster (scale up)&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
POST /v1/clusters/{cluster_id}/node/&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
# Delete Node from Cluster (scale down)&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
DELETE /v1/clusters/{cluster_id}/node/{node_id}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Vipuls</name></author>	</entry>

	<entry>
		<id>https://wiki.openstack.org/w/index.php?title=Cue&amp;diff=67165</id>
		<title>Cue</title>
		<link rel="alternate" type="text/html" href="https://wiki.openstack.org/w/index.php?title=Cue&amp;diff=67165"/>
				<updated>2014-11-03T12:09:01Z</updated>
		
		<summary type="html">&lt;p&gt;Vipuls: Created page with &amp;quot;= Cue = == Mission Statement == The OpenStack Message Broker Provisioning as a Service Mission: To provide scalable and reliable Message Broker provisioning functionality for...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Cue =&lt;br /&gt;
== Mission Statement ==&lt;br /&gt;
The OpenStack Message Broker Provisioning as a Service Mission: To provide scalable and reliable Message Broker provisioning functionality for off the shelf messaging technologies, as well as to provide advanced management, tuning, and administration of underlying message brokers.&lt;br /&gt;
&lt;br /&gt;
== Description ==&lt;br /&gt;
&lt;br /&gt;
Cue is a Message Broker provisioning service for Openstack.  Its goal is to simplify and automate the complex tasks of provisioning, management, and administration of message brokers.  Users of the service can create and manage multiple clusters of Message brokers, of various types as needed.  The service will provide resource isolation at the VM level, and does not attempt to implement multi-tenancy at the message broker layer.&lt;br /&gt;
&lt;br /&gt;
== Why ==&lt;br /&gt;
&lt;br /&gt;
Messaging is a common development pattern for building loosely coupled distributed systems.  Messaging systems also act as glue between independent applications.  Several off-the-shelf products exist that implement messaging and queuing semantics.&lt;br /&gt;
  &lt;br /&gt;
Provisioning and supporting Messaging systems for an individual application can be a time consuming and painful experience.  This product aims to simplify the provisioning and management of messaging systems, providing High Availability and auto-healing capabilities to the end user, while providing tenant-level isolation.&lt;br /&gt;
  &lt;br /&gt;
The main goal of this service is to simplify the Application development lifecycle and allow the developer to focus on their application, instead of the backend middleware services.&lt;br /&gt;
&lt;br /&gt;
== Goals ==&lt;br /&gt;
# Produce a Message Broker Provisioning Service for Openstack&lt;br /&gt;
# Protocol Agnostic&lt;br /&gt;
# Support multiple Broker backends&lt;br /&gt;
# Provide HA and Fault Tolerance by leveraging underlying Broker Cluster capabilities&lt;br /&gt;
# Provide tuned and properly configured Message Brokers on-demand&lt;br /&gt;
# Support Broker management operations such as Backup of Configuration, Scale Up, Scale Down&lt;/div&gt;</summary>
		<author><name>Vipuls</name></author>	</entry>

	<entry>
		<id>https://wiki.openstack.org/w/index.php?title=Trove/Replication-And-Clustering&amp;diff=49979</id>
		<title>Trove/Replication-And-Clustering</title>
		<link rel="alternate" type="text/html" href="https://wiki.openstack.org/w/index.php?title=Trove/Replication-And-Clustering&amp;diff=49979"/>
				<updated>2014-04-25T00:38:19Z</updated>
		
		<summary type="html">&lt;p&gt;Vipuls: /* Create Slave */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Summary/Viewpoints/Strategy ==&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
* Purposefully avoids introducing a /cluster API&lt;br /&gt;
* Purposefully avoids the proliferation of configuration-groups to accommodate mandatory fields in the context of clusters/topologies&lt;br /&gt;
* Purposefully avoids introducing a v2 API&lt;br /&gt;
* Instead, introduces cluster{} field and /instance/&amp;lt;id&amp;gt;/cluster routes&lt;br /&gt;
* cluster{}'s charter is to include cluster-related fields that are absolutely required to construct the initial cluster.&lt;br /&gt;
* Cluster-influenced actions are handled via: 'PUT /instances/&amp;lt;id&amp;gt;/cluster', where &amp;lt;id&amp;gt; is any arbitrary instance in the cluster.&lt;br /&gt;
* Requests against 'PUT /instances/&amp;lt;id&amp;gt;/cluster' will follow the format of: { &amp;quot;&amp;lt;action&amp;gt;&amp;quot;: { &amp;lt;action_specific_fields&amp;gt; } }&lt;br /&gt;
* Where possible and logical, consolidate similar &amp;lt;action&amp;gt;s amongst datastores.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== MySQL Master/Slave ==&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
==== Create Master ====&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Request:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
POST /instances&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;instance&amp;quot;: {&lt;br /&gt;
    &amp;quot;name&amp;quot;: &amp;quot;products&amp;quot;,&lt;br /&gt;
    &amp;quot;datastore&amp;quot;: {&lt;br /&gt;
      &amp;quot;type&amp;quot;: &amp;quot;mysql&amp;quot;,&lt;br /&gt;
      &amp;quot;version&amp;quot;: &amp;quot;5.5&amp;quot;&lt;br /&gt;
    },&lt;br /&gt;
    &amp;quot;configuration&amp;quot;: &amp;quot;b9c8a3f8-7ace-4aea-9908-7b555586d7b6&amp;quot;,&lt;br /&gt;
    &amp;quot;flavorRef&amp;quot;: &amp;quot;7&amp;quot;,&lt;br /&gt;
    &amp;quot;volume&amp;quot;: {&lt;br /&gt;
      &amp;quot;size&amp;quot;: 1&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Response:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;instance&amp;quot;: {&lt;br /&gt;
    &amp;quot;status&amp;quot;: &amp;quot;BUILD&amp;quot;,&lt;br /&gt;
    &amp;quot;id&amp;quot;: &amp;quot;dfbbd9ca-b5e1-4028-adb7-f78643e17998&amp;quot;,&lt;br /&gt;
    &amp;quot;name&amp;quot;: &amp;quot;products&amp;quot;,&lt;br /&gt;
    &amp;quot;configuration&amp;quot;: {&lt;br /&gt;
      &amp;quot;id&amp;quot;: &amp;quot;b9c8a3f8-7ace-4aea-9908-7b555586d7b6&amp;quot;,&lt;br /&gt;
      &amp;quot;name&amp;quot;: &amp;quot;config-a&amp;quot;,&lt;br /&gt;
      &amp;quot;links&amp;quot;: [{...}]&lt;br /&gt;
    },&lt;br /&gt;
    ...&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
==== Create Slave ====&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
--[[User:Vipuls|vipuls]] ([[User talk:Vipuls|talk]]) 00:38, 25 April 2014 (UTC) I'm not a big fan of introducing the 'cluster' attribute to wrap what is a read-only slave.  &lt;br /&gt;
Request:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
POST /instances&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;instance&amp;quot;: {&lt;br /&gt;
    &amp;quot;name&amp;quot;: &amp;quot;product-b&amp;quot;,&lt;br /&gt;
    &amp;quot;datastore&amp;quot;: {&lt;br /&gt;
      &amp;quot;type&amp;quot;: &amp;quot;mysql&amp;quot;,&lt;br /&gt;
      &amp;quot;version&amp;quot;: &amp;quot;5.5&amp;quot;&lt;br /&gt;
    },&lt;br /&gt;
    &amp;quot;cluster&amp;quot;: {&lt;br /&gt;
      &amp;quot;slave_of&amp;quot;: &amp;quot;dfbbd9ca-b5e1-4028-adb7-f78643e17998&amp;quot;,&lt;br /&gt;
      &amp;quot;read_only&amp;quot;: true&lt;br /&gt;
    },&lt;br /&gt;
    &amp;quot;configuration&amp;quot;: &amp;quot;fc318e00-3a6f-4f93-af99-146b44912188&amp;quot;,&lt;br /&gt;
    &amp;quot;flavorRef&amp;quot;: &amp;quot;7&amp;quot;,&lt;br /&gt;
    &amp;quot;volume&amp;quot;: {&lt;br /&gt;
      &amp;quot;size&amp;quot;: 1&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Response:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;instance&amp;quot;: {&lt;br /&gt;
    &amp;quot;status&amp;quot;: &amp;quot;BUILD&amp;quot;,&lt;br /&gt;
    &amp;quot;id&amp;quot;: &amp;quot;061aaf4c-3a57-411e-9df9-2d0f813db859&amp;quot;,&lt;br /&gt;
    &amp;quot;name&amp;quot;: &amp;quot;product-b&amp;quot;,&lt;br /&gt;
    &amp;quot;cluster&amp;quot;: {&lt;br /&gt;
      &amp;quot;slave_of&amp;quot;: &amp;quot;dfbbd9ca-b5e1-4028-adb7-f78643e17998&amp;quot;,&lt;br /&gt;
      &amp;quot;read_only&amp;quot;: true&lt;br /&gt;
    },&lt;br /&gt;
    &amp;quot;configuration&amp;quot;: {&lt;br /&gt;
      &amp;quot;id&amp;quot;: &amp;quot;fc318e00-3a6f-4f93-af99-146b44912188&amp;quot;,&lt;br /&gt;
      &amp;quot;name&amp;quot;: &amp;quot;config-b&amp;quot;,&lt;br /&gt;
      &amp;quot;links&amp;quot;: [{...}]&lt;br /&gt;
    },&lt;br /&gt;
    ...&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Notes:&lt;br /&gt;
* For master/slave wirings, the 'server_id' must differ between master and slave, and optionally the slave can specify whether it is read-only or not to avoid accidental writes.&lt;br /&gt;
* Update: Agreed on 03/14/14 that the user should not have to specify 'server_id'. Instead, trove will be responsible for setting it and ensuring that a slave does not have the same server_id as its master, or any sibling slaves. As a part of this agreement, this requires removing 'server_id' from configuration-groups overrides (to avoid the user meddling with our bookkeeping).&lt;br /&gt;
* 'read_only' was removed from configuration-groups and moved to cluster{} because forcing the user to create a configuration-group for every MySQL slave is arduous and a poor user experience.&lt;br /&gt;
* 'read_only' is only permitted if 'slave_of' is set, otherwise the request will be failed.&lt;br /&gt;
* Opinion: 'read_only' should default to true if slave_of is set and read_only is not provided.&lt;br /&gt;
* Note: 'slave_of' is purposefully not an array to support multi-source replication coming in 5.7. Instead, a new 'channels'-like field will be introduced.&lt;br /&gt;
* For now, 'slave_of' requires a vanilla trove instance uuid, but will inevitably need to be prefixed with namespacing to support multiple dcs and sources (e.g. trove:us-west:tenant_id:instance:dfbbd9ca-b5e1-4028-adb7-f78643e17998) and/or additional fields will be added.&lt;br /&gt;
* Note: The master could have optionally included instance.cluster{} to provide a cluster_name to avoid it being the same as the master's name (see below for context)&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Show Instance ====&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Request:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
GET /instances/dfbbd9ca-b5e1-4028-adb7-f78643e17998&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Response:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;instance&amp;quot;: {&lt;br /&gt;
    &amp;quot;status&amp;quot;: &amp;quot;ACTIVE&amp;quot;,&lt;br /&gt;
    &amp;quot;updated&amp;quot;: &amp;quot;2014-02-16T03:38:49&amp;quot;&lt;br /&gt;
    &amp;quot;id&amp;quot;: &amp;quot;dfbbd9ca-b5e1-4028-adb7-f78643e17998&amp;quot;,&lt;br /&gt;
    &amp;quot;name&amp;quot;: &amp;quot;products&amp;quot;,&lt;br /&gt;
    &amp;quot;datastore&amp;quot;: {&lt;br /&gt;
      &amp;quot;version&amp;quot;: &amp;quot;5.5&amp;quot;,&lt;br /&gt;
      &amp;quot;type&amp;quot;: &amp;quot;mysql&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    &amp;quot;flavor&amp;quot;: {&lt;br /&gt;
      &amp;quot;id&amp;quot;: &amp;quot;7&amp;quot;,&lt;br /&gt;
      &amp;quot;links&amp;quot;: [{...}]&lt;br /&gt;
    },&lt;br /&gt;
    &amp;quot;configuration&amp;quot;: {&lt;br /&gt;
      &amp;quot;id&amp;quot;: &amp;quot;b9c8a3f8-7ace-4aea-9908-7b555586d7b6&amp;quot;,&lt;br /&gt;
      &amp;quot;name&amp;quot;: &amp;quot;config-a&amp;quot;,&lt;br /&gt;
      &amp;quot;links&amp;quot;: [{...}]&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Request:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
GET /instances/061aaf4c-3a57-411e-9df9-2d0f813db859&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Response:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;instance&amp;quot;: {&lt;br /&gt;
    &amp;quot;status&amp;quot;: &amp;quot;ACTIVE&amp;quot;,&lt;br /&gt;
    &amp;quot;updated&amp;quot;: &amp;quot;2014-02-16T03:38:49&amp;quot;&lt;br /&gt;
    &amp;quot;id&amp;quot;: &amp;quot;061aaf4c-3a57-411e-9df9-2d0f813db859&amp;quot;,&lt;br /&gt;
    &amp;quot;name&amp;quot;: &amp;quot;product-b&amp;quot;,&lt;br /&gt;
    &amp;quot;datastore&amp;quot;: {&lt;br /&gt;
      &amp;quot;version&amp;quot;: &amp;quot;5.5&amp;quot;,&lt;br /&gt;
      &amp;quot;type&amp;quot;: &amp;quot;mysql&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    &amp;quot;flavor&amp;quot;: {&lt;br /&gt;
      &amp;quot;id&amp;quot;: &amp;quot;7&amp;quot;,&lt;br /&gt;
      &amp;quot;links&amp;quot;: [{...}]&lt;br /&gt;
    },&lt;br /&gt;
    &amp;quot;cluster&amp;quot;: {&lt;br /&gt;
      &amp;quot;slave_of&amp;quot;: &amp;quot;dfbbd9ca-b5e1-4028-adb7-f78643e17998&amp;quot;,&lt;br /&gt;
      &amp;quot;read_only&amp;quot;: true&lt;br /&gt;
    },&lt;br /&gt;
    &amp;quot;configuration&amp;quot;: {&lt;br /&gt;
      &amp;quot;id&amp;quot;: &amp;quot;b9c8a3f8-7ace-4aea-9908-7b555586d7b6&amp;quot;,&lt;br /&gt;
      &amp;quot;name&amp;quot;: &amp;quot;config-a&amp;quot;,&lt;br /&gt;
      &amp;quot;links&amp;quot;: [{...}]&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Show Cluster ====&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Request:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
GET /instances/dfbbd9ca-b5e1-4028-adb7-f78643e17998/cluster&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Response:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;cluster&amp;quot;: {&lt;br /&gt;
    &amp;quot;name&amp;quot;: &amp;quot;products&amp;quot;,&lt;br /&gt;
    &amp;quot;instances&amp;quot;: [&lt;br /&gt;
      {&lt;br /&gt;
        &amp;quot;id&amp;quot;: &amp;quot;dfbbd9ca-b5e1-4028-adb7-f78643e17998&amp;quot;,&lt;br /&gt;
        &amp;quot;name&amp;quot;: &amp;quot;products&amp;quot;&lt;br /&gt;
      },&lt;br /&gt;
      {&lt;br /&gt;
        &amp;quot;id&amp;quot;: &amp;quot;061aaf4c-3a57-411e-9df9-2d0f813db859&amp;quot;,&lt;br /&gt;
        &amp;quot;name&amp;quot;: &amp;quot;product-b&amp;quot;,&lt;br /&gt;
        &amp;quot;slave_of&amp;quot;: &amp;quot;dfbbd9ca-b5e1-4028-adb7-f78643e17998&amp;quot;,&lt;br /&gt;
        &amp;quot;read_only&amp;quot;: true&lt;br /&gt;
      }&lt;br /&gt;
    ]&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Remove Replication (aka &amp;quot;Promote&amp;quot; to Standalone) ====&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Request:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
   POST or PUT /instances/dfbbd9ca-b5e1-4028-adb7-f78643e17998/cluster/action&lt;br /&gt;
or POST or PUT /instances/dfbbd9ca-b5e1-4028-adb7-f78643e17998/cluster&lt;br /&gt;
&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;promote&amp;quot;: {&lt;br /&gt;
    &amp;quot;id&amp;quot;: &amp;quot;061aaf4c-3a57-411e-9df9-2d0f813db859&amp;quot;&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Response:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
TBD&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Notes:&lt;br /&gt;
* The PUT /cluster option is more &amp;quot;correct&amp;quot;, but POST /action is already an established pattern in the codebase. We must choose one of the four approaches. For the sake of brevity, it is assumed that PUT /cluster is chosen (and will be used in examples beyond this point in the document)&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
== MongoDB ==&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
==== Create Single Instance Replica-Set ====&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Request:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
POST /instances&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;instance&amp;quot;: {&lt;br /&gt;
    &amp;quot;name&amp;quot;: &amp;quot;product-a&amp;quot;,&lt;br /&gt;
    ...&lt;br /&gt;
    &amp;quot;datastore&amp;quot;: {&lt;br /&gt;
      &amp;quot;type&amp;quot;: &amp;quot;mongodb&amp;quot;,&lt;br /&gt;
      &amp;quot;version&amp;quot;: &amp;quot;2.4.10&amp;quot;&lt;br /&gt;
    },&lt;br /&gt;
    &amp;quot;cluster&amp;quot;: {&lt;br /&gt;
      &amp;quot;cluster_name&amp;quot;: &amp;quot;products&amp;quot;,&lt;br /&gt;
      &amp;quot;instance_type&amp;quot;: &amp;quot;member&amp;quot;,&lt;br /&gt;
      &amp;quot;join&amp;quot;: false&lt;br /&gt;
    },&lt;br /&gt;
    ...&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Response:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;instance&amp;quot;: {&lt;br /&gt;
    &amp;quot;id&amp;quot;: &amp;quot;dfbbd9ca-b5e1-4028-adb7-f78643e17998&amp;quot;,&lt;br /&gt;
    ...&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Notes:&lt;br /&gt;
* The existing instance-create payload for single instance MongoDB will be treated exactly the same as this example (with instance.name becoming cluster_name, instance_type defaulting to member, and join defaulting to false)&lt;br /&gt;
* 'cluster_name' is used as 'replSet'&lt;br /&gt;
* Enforce 'cluster_name' field to be provided for MongoDB, even in the case of a standalone/single instance. See http://www.mongodb.com/blog/post/dont-let-your-standalone-mongodb-server-stand-alone for reasoning.&lt;br /&gt;
* 'join' indicates whether you're joining an existing replica-set, or creating a new one. If 'join' is false, and an active replica-set by that name for the tenant already exists, the request will be failed. 'join' by default will be false, but was included above for illustrative purposes.&lt;br /&gt;
* 'instance_type' is 'member' vs. 'primary' because in a replica-set, the primary is dynamic and can change in an election.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
==== Create 3 Instance Replica-Set ====&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Request:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
POST /instances&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;instance&amp;quot;: {&lt;br /&gt;
    &amp;quot;name&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
    ...&lt;br /&gt;
    &amp;quot;datastore&amp;quot;: {&lt;br /&gt;
      &amp;quot;type&amp;quot;: &amp;quot;mongodb&amp;quot;,&lt;br /&gt;
      &amp;quot;version&amp;quot;: &amp;quot;2.4.10&amp;quot;&lt;br /&gt;
    },&lt;br /&gt;
    &amp;quot;cluster&amp;quot;: {&lt;br /&gt;
      &amp;quot;cluster_name&amp;quot;: &amp;quot;products&amp;quot;,&lt;br /&gt;
      &amp;quot;instance_type&amp;quot;: &amp;quot;member&amp;quot;,&lt;br /&gt;
      &amp;quot;num_instances&amp;quot;: 3,&lt;br /&gt;
      &amp;quot;join&amp;quot;: false&lt;br /&gt;
    },&lt;br /&gt;
    ...&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Response:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  TBD&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Notes:&lt;br /&gt;
* cluster.num_instances defaults to 1&lt;br /&gt;
* instance.name cannot be provided if instance.cluster.num_instances != 1 (implicitly or explicitly)&lt;br /&gt;
* cluster.num_instances is not supported for mysql and possibly others (see the Summary table at the bottom of this document)&lt;br /&gt;
* the names of the instances for num_instances != 1 will be &amp;quot;&amp;lt;cluster_name&amp;gt; - &amp;lt;suffix&amp;gt;&amp;quot;, where suffix is either an incrementing number (e.g. product-1, product-2) or some variation thereof.&lt;br /&gt;
* it's understood that num_instances itself will not be sufficient in the future because users will want to split the allocation across different availability-zones. tying num_instance split allocations to az(s) and/or region(s) is beyond the scope of this first iteration, and therefore, all nodes will land as they would land today (az/region-wise). it's worth pointing out that building node by node vs. using the convenience of num_instances is a workaround.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
==== Add Member to Replica-Set ====&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Request:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
POST /instances&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;instance&amp;quot;: {&lt;br /&gt;
    &amp;quot;name&amp;quot;: &amp;quot;product-b&amp;quot;,&lt;br /&gt;
    ...&lt;br /&gt;
    &amp;quot;cluster&amp;quot;: {&lt;br /&gt;
      &amp;quot;instance_type&amp;quot;: &amp;quot;member&amp;quot;,&lt;br /&gt;
      &amp;quot;cluster_name&amp;quot;: &amp;quot;products&amp;quot;,&lt;br /&gt;
      &amp;quot;join&amp;quot;: true&lt;br /&gt;
    },&lt;br /&gt;
    ...&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Response:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;instance&amp;quot;: {&lt;br /&gt;
    &amp;quot;status&amp;quot;: &amp;quot;BUILD&amp;quot;,&lt;br /&gt;
    &amp;quot;id&amp;quot;: &amp;quot;061aaf4c-3a57-411e-9df9-2d0f813db859&amp;quot;,&lt;br /&gt;
    ...&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Notes:&lt;br /&gt;
* If 'join' is true, and there is no existing replica-set for the tenant matching the 'cluster_name' value, the request will be failed.&lt;br /&gt;
* Will have to use 'db.isMaster()' to determine the current primary to execute replica-set commands against (since it can be dynamic due to elections)&lt;br /&gt;
* Will use http://docs.mongodb.org/manual/tutorial/expand-replica-set/#configure-and-add-a-member&lt;br /&gt;
* Should protect against adding more than 12 members to a replica-set&lt;br /&gt;
* Should protect against adding more than 7 voting members to a replica-set&lt;br /&gt;
* Should return warning when number of voting members is even and there is no arbiter&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
==== Add Another Member to Replica-Set ====&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Request:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
POST /instances&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;instance&amp;quot;: {&lt;br /&gt;
    &amp;quot;name&amp;quot;: &amp;quot;product-c&amp;quot;,&lt;br /&gt;
    ...&lt;br /&gt;
    &amp;quot;cluster&amp;quot;: {&lt;br /&gt;
      &amp;quot;instance_type&amp;quot;: &amp;quot;member&amp;quot;,&lt;br /&gt;
      &amp;quot;cluster_name&amp;quot;: &amp;quot;products&amp;quot;,&lt;br /&gt;
      &amp;quot;join&amp;quot;: true&lt;br /&gt;
    },&lt;br /&gt;
    ...&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Response:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;instance&amp;quot;: {&lt;br /&gt;
    &amp;quot;status&amp;quot;: &amp;quot;BUILD&amp;quot;,&lt;br /&gt;
    &amp;quot;id&amp;quot;: &amp;quot;3a72ee87-cf3e-40f1-a1e1-fe8c7263a782&amp;quot;,&lt;br /&gt;
    ...&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
==== Show Instance ====&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Request:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
GET /instances/dfbbd9ca-b5e1-4028-adb7-f78643e17998&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Response:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;instance&amp;quot;: {&lt;br /&gt;
    ...&lt;br /&gt;
    &amp;quot;cluster&amp;quot;: {&lt;br /&gt;
      &amp;quot;instance_type&amp;quot;: &amp;quot;member&amp;quot;,&lt;br /&gt;
      &amp;quot;cluster_name&amp;quot;: &amp;quot;products&amp;quot;&lt;br /&gt;
    },&lt;br /&gt;
    ...&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
==== Show Cluster ====&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Request:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
GET /instances/dfbbd9ca-b5e1-4028-adb7-f78643e17998/cluster&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Response:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;cluster&amp;quot;: {&lt;br /&gt;
    &amp;quot;name&amp;quot;: &amp;quot;products&amp;quot;,&lt;br /&gt;
    &amp;quot;instances&amp;quot;: [&lt;br /&gt;
      {&lt;br /&gt;
        &amp;quot;id&amp;quot;: &amp;quot;dfbbd9ca-b5e1-4028-adb7-f78643e17998&amp;quot;,&lt;br /&gt;
        &amp;quot;name&amp;quot;: &amp;quot;product-a&amp;quot;,&lt;br /&gt;
        &amp;quot;instance_type&amp;quot;: &amp;quot;member&amp;quot;&lt;br /&gt;
      },&lt;br /&gt;
      {&lt;br /&gt;
        &amp;quot;id&amp;quot;: &amp;quot;061aaf4c-3a57-411e-9df9-2d0f813db859&amp;quot;,&lt;br /&gt;
        &amp;quot;name&amp;quot;: &amp;quot;product-b&amp;quot;,&lt;br /&gt;
        &amp;quot;instance_type&amp;quot;: &amp;quot;member&amp;quot;&lt;br /&gt;
      },&lt;br /&gt;
      {&lt;br /&gt;
        &amp;quot;id&amp;quot;: &amp;quot;3a72ee87-cf3e-40f1-a1e1-fe8c7263a782&amp;quot;,&lt;br /&gt;
        &amp;quot;name&amp;quot;: &amp;quot;product-c&amp;quot;,&lt;br /&gt;
        &amp;quot;instance_type&amp;quot;: &amp;quot;member&amp;quot;&lt;br /&gt;
      }&lt;br /&gt;
    ]&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
==== Add Arbiter ====&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Request:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
POST /instances&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;instance&amp;quot;: {&lt;br /&gt;
    &amp;quot;name&amp;quot;: &amp;quot;product-arbiter&amp;quot;,&lt;br /&gt;
    ...&lt;br /&gt;
    &amp;quot;cluster&amp;quot;: {&lt;br /&gt;
      &amp;quot;instance_type&amp;quot;: &amp;quot;arbiter&amp;quot;,&lt;br /&gt;
      &amp;quot;cluster_name&amp;quot;: &amp;quot;products&amp;quot;,&lt;br /&gt;
      &amp;quot;join&amp;quot;: true&lt;br /&gt;
    },&lt;br /&gt;
    ...&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Response:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;instance&amp;quot;: {&lt;br /&gt;
    &amp;quot;status&amp;quot;: &amp;quot;BUILD&amp;quot;,&lt;br /&gt;
    &amp;quot;id&amp;quot;: &amp;quot;a1b62aaa-7863-4384-8250-59024141c1f8&amp;quot;,&lt;br /&gt;
    ...&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
==== Add a Delayed Member ====&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Request:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
POST /instances&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;instance&amp;quot;: {&lt;br /&gt;
    &amp;quot;name&amp;quot;: &amp;quot;product-delayed&amp;quot;,&lt;br /&gt;
    ...&lt;br /&gt;
    &amp;quot;cluster&amp;quot;: {&lt;br /&gt;
      &amp;quot;instance_type&amp;quot;: &amp;quot;member&amp;quot;,&lt;br /&gt;
      &amp;quot;cluster_name&amp;quot;: &amp;quot;products&amp;quot;,&lt;br /&gt;
      &amp;quot;priority&amp;quot;: 0,&lt;br /&gt;
      &amp;quot;hidden&amp;quot;: true,&lt;br /&gt;
      &amp;quot;slaveDelay&amp;quot;: 3600,&lt;br /&gt;
      &amp;quot;join&amp;quot;: true&lt;br /&gt;
    },&lt;br /&gt;
    ...&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Response:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;instance&amp;quot;: {&lt;br /&gt;
    &amp;quot;status&amp;quot;: &amp;quot;BUILD&amp;quot;,&lt;br /&gt;
    &amp;quot;id&amp;quot;: &amp;quot;7d8eb019-931b-4b2a-88d2-4c9f0ca1b29e&amp;quot;,&lt;br /&gt;
    ...&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Notes:&lt;br /&gt;
* 'instance_type', 'cluster_name', 'join', 'priority', 'hidden', and 'slaveDelay' are the only fields supported in cluster{} for mongodb. All other configuration values must be set via a configuration-group. After more thought, consider supporting 'hostname' and 'votes' as well.&lt;br /&gt;
* Why isn't 'priority', 'hidden' and 'slaveDelay' in a configuration-group you ask? This is explained in &amp;quot;Modifying a Replica-Set&amp;quot; below.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
==== Modifying a Replica-Set ====&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Thus far we've been able to model building a replica-set, adding an arbiter, adding a delayed secondary member, etc. Let's continue with how to modify a replica-set.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Example:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# from http://docs.mongodb.org/manual/tutorial/configure-secondary-only-replica-set-member/#example&lt;br /&gt;
cfg = rs.conf()&lt;br /&gt;
cfg.members[0].priority = 2&lt;br /&gt;
cfg.members[1].priority = 1&lt;br /&gt;
cfg.members[2].priority = 0.5&lt;br /&gt;
cfg.members[3].priority = 0&lt;br /&gt;
rs.reconfig(cfg)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Executing these priority changes one at a time can have catastrophic results, so it must be done as a transaction (with rs.reconfig() commiting). However, without the ability to address the cluster (i.e. multiple members at once), this becomes impossible. The only backdoor solution would be to guarantee that the MongoDB user(s) presented to the cloud tenant all have the clusterAdmin role, as this would allow them to connect to the primary and execute such transactions themselves via the native client. Obviously however, granting clusterAdmin to every DBaaS user in MongoDB is unacceptable in most deployments. The solution is as follows:&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Request:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
PUT /instances/dfbbd9ca-b5e1-4028-adb7-f78643e17998/cluster&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;update_member_attributes&amp;quot;: {&lt;br /&gt;
    &amp;quot;instances&amp;quot;: [&lt;br /&gt;
      {&lt;br /&gt;
        &amp;quot;id&amp;quot;: &amp;quot;dfbbd9ca-b5e1-4028-adb7-f78643e17998&amp;quot;,&lt;br /&gt;
        &amp;quot;priority&amp;quot;: 2&lt;br /&gt;
      },&lt;br /&gt;
      {&lt;br /&gt;
        &amp;quot;id&amp;quot;: &amp;quot;061aaf4c-3a57-411e-9df9-2d0f813db859&amp;quot;,&lt;br /&gt;
        &amp;quot;priority&amp;quot;: 1&lt;br /&gt;
      },&lt;br /&gt;
      {&lt;br /&gt;
        &amp;quot;id&amp;quot;: &amp;quot;3a72ee87-cf3e-40f1-a1e1-fe8c7263a782&amp;quot;,&lt;br /&gt;
        &amp;quot;priority&amp;quot;: 0.5&lt;br /&gt;
      }&lt;br /&gt;
    ]&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Notes:&lt;br /&gt;
* 'update_member_attributes.members[]' elements will only permit  'priority', 'hidden', and 'slaveDelay' (possibly 'votes' and 'hostname' as mentioned earlier).&lt;br /&gt;
* See https://wiki.openstack.org/w/index.php?title=Trove/Replication-And-Clustering&amp;amp;action=submit#Replica-Set_Member_Type.2FAttribute_Updates for a list of approaches considered.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Remove a Member ====&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Request:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
PUT /instances/dfbbd9ca-b5e1-4028-adb7-f78643e17998/cluster&lt;br /&gt;
&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;promote&amp;quot;: {&lt;br /&gt;
    &amp;quot;id&amp;quot;: &amp;quot;dfbbd9ca-b5e1-4028-adb7-f78643e17998&amp;quot;&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Notes:&lt;br /&gt;
* Note that 'promote' was used here vs. &amp;quot;remove_member&amp;quot; because the action is akin to promoting a mysql/redis slave instance (see http://docs.mongodb.org/manual/reference/method/rs.remove/#rs.remove)&lt;br /&gt;
* See https://wiki.openstack.org/w/index.php?title=Trove/Replication-And-Clustering&amp;amp;action=submit#Remove_a_Member_from_a_Replica-Set for a list of approaches considered.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== MongoDB TokuMX ====&lt;br /&gt;
&lt;br /&gt;
* TokuMUX will require a new datastore-version and *possibly* a new manager class (same reasoning as why Tungsten/Galera will have their own datastore-version for MySQL)&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Cassandra ==&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
==== Create Cluster ====&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Request:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
POST /instances&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;instance&amp;quot;: {&lt;br /&gt;
    &amp;quot;name&amp;quot;: &amp;quot;product-a&amp;quot;,&lt;br /&gt;
    ...&lt;br /&gt;
    &amp;quot;datastore&amp;quot;: {&lt;br /&gt;
      &amp;quot;type&amp;quot;: &amp;quot;cassandra&amp;quot;,&lt;br /&gt;
      &amp;quot;version&amp;quot;: &amp;quot;cassandra-2.0.5&amp;quot;&lt;br /&gt;
    },&lt;br /&gt;
    &amp;quot;cluster&amp;quot;: {&lt;br /&gt;
      &amp;quot;cluster_name&amp;quot;: &amp;quot;products&amp;quot;,&lt;br /&gt;
      &amp;quot;num_tokens&amp;quot;: 256,&lt;br /&gt;
      &amp;quot;is_seed&amp;quot;: true,&lt;br /&gt;
      &amp;quot;endpoint_snitch&amp;quot;: &amp;quot;RackInferringSnitch&amp;quot;,&lt;br /&gt;
      &amp;quot;join&amp;quot;: false&lt;br /&gt;
    },&lt;br /&gt;
    ...&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Response:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;instance&amp;quot;: {&lt;br /&gt;
    &amp;quot;id&amp;quot;: &amp;quot;dfbbd9ca-b5e1-4028-adb7-f78643e17998&amp;quot;,&lt;br /&gt;
    ...&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Notes:&lt;br /&gt;
* Unlike in MongoDB, the 'instance_type' field is not required (because all instances of the cluster are of the same type)&lt;br /&gt;
* 'cluster_name', 'num_tokens', and 'is_seed' are always required, with 'endpoint_snitch' being required if 'join' is false (if 'join' is true, the endpoint_snitch is inherited) and 'auto_bootstrap' required if 'join' is true.&lt;br /&gt;
* 'seed_provider' can optionally be provided, but conveniently defaults to 'org.apache.cassandra.locator.SimpleSeedProvider'&lt;br /&gt;
* 'join' indicates whether you're joining an existing cluster, or creating a new one. If 'join' is false, and an active cluster by that name for the tenant already exists, the request will be failed. 'join' by default will be false, but was included above for illustrative purposes.&lt;br /&gt;
* Likely the Keystone region and the availability-zone inherent to the trove request can be used for the data-center and rack (cassandra-topology.properties), but if it turns out that the naming schemes are incompatible, 'data_center' and 'rack' can be introduced.&lt;br /&gt;
* 'is_seed' is used vs. a seed list of ip-addresses because (1) the ip-address is not yet known and (2) when additional seeds are added, each instance in the cluster must be notified and updated. More on this later.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
==== Add Instance to Cluster ====&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Request:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
POST /instances&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;instance&amp;quot;: {&lt;br /&gt;
    &amp;quot;name&amp;quot;: &amp;quot;product-b&amp;quot;,&lt;br /&gt;
    ...&lt;br /&gt;
    &amp;quot;cluster&amp;quot;: {&lt;br /&gt;
      &amp;quot;cluster_name&amp;quot;: &amp;quot;products&amp;quot;,&lt;br /&gt;
      &amp;quot;num_tokens&amp;quot;: 256,&lt;br /&gt;
      &amp;quot;is_seed&amp;quot;: false,&lt;br /&gt;
      &amp;quot;auto_bootstrap&amp;quot;: false,&lt;br /&gt;
      &amp;quot;join&amp;quot;: true&lt;br /&gt;
    },&lt;br /&gt;
    ...&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Response:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;instance&amp;quot;: {&lt;br /&gt;
    &amp;quot;status&amp;quot;: &amp;quot;BUILD&amp;quot;,&lt;br /&gt;
    &amp;quot;id&amp;quot;: &amp;quot;061aaf4c-3a57-411e-9df9-2d0f813db859&amp;quot;,&lt;br /&gt;
    ...&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Notes:&lt;br /&gt;
* If 'join' is true, and there is no existing cluster for the tenant matching the 'cluster_name' value, the request will be failed.&lt;br /&gt;
* If 'endpoint_snitch' is provided, and the value does not match that of the existing instances(s) in the cluster, the request will be failed.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
==== Add Another Instance to Cluster ====&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Request:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
POST /instances&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;instance&amp;quot;: {&lt;br /&gt;
    &amp;quot;name&amp;quot;: &amp;quot;product-c&amp;quot;,&lt;br /&gt;
    ...&lt;br /&gt;
    &amp;quot;cluster&amp;quot;: {&lt;br /&gt;
      &amp;quot;cluster_name&amp;quot;: &amp;quot;products&amp;quot;,&lt;br /&gt;
      &amp;quot;num_tokens&amp;quot;: 256,&lt;br /&gt;
      &amp;quot;is_seed&amp;quot;: false,&lt;br /&gt;
      &amp;quot;auto_bootstrap&amp;quot;: false,&lt;br /&gt;
      &amp;quot;join&amp;quot;: true&lt;br /&gt;
    },&lt;br /&gt;
    ...&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Response:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;instance&amp;quot;: {&lt;br /&gt;
    &amp;quot;status&amp;quot;: &amp;quot;BUILD&amp;quot;,&lt;br /&gt;
    &amp;quot;id&amp;quot;: &amp;quot;3a72ee87-cf3e-40f1-a1e1-fe8c7263a782&amp;quot;,&lt;br /&gt;
    ...&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
==== Show Instance ====&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Request:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
GET /instances/dfbbd9ca-b5e1-4028-adb7-f78643e17998&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Response:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;instance&amp;quot;: {&lt;br /&gt;
    ...&lt;br /&gt;
    &amp;quot;cluster&amp;quot;: {&lt;br /&gt;
      &amp;quot;cluster_name&amp;quot;: &amp;quot;products&amp;quot;,&lt;br /&gt;
      &amp;quot;num_tokens&amp;quot;: 256,&lt;br /&gt;
      &amp;quot;is_seed&amp;quot;: true&lt;br /&gt;
    },&lt;br /&gt;
    ...&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
==== Show Cluster ====&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Request:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
GET /instances/dfbbd9ca-b5e1-4028-adb7-f78643e17998/cluster&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Response:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;cluster&amp;quot;: {&lt;br /&gt;
    &amp;quot;name&amp;quot;: &amp;quot;products&amp;quot;,&lt;br /&gt;
    &amp;quot;instances&amp;quot;: [&lt;br /&gt;
      {&lt;br /&gt;
        &amp;quot;id&amp;quot;: &amp;quot;dfbbd9ca-b5e1-4028-adb7-f78643e17998&amp;quot;,&lt;br /&gt;
        &amp;quot;name&amp;quot;: &amp;quot;product-a&amp;quot;,&lt;br /&gt;
        &amp;quot;num_tokens&amp;quot;: 256,&lt;br /&gt;
        &amp;quot;is_seed&amp;quot;: true&lt;br /&gt;
      },&lt;br /&gt;
      {&lt;br /&gt;
        &amp;quot;id&amp;quot;: &amp;quot;061aaf4c-3a57-411e-9df9-2d0f813db859&amp;quot;,&lt;br /&gt;
        &amp;quot;name&amp;quot;: &amp;quot;product-b&amp;quot;,&lt;br /&gt;
        &amp;quot;num_tokens&amp;quot;: 256,&lt;br /&gt;
        &amp;quot;is_seed&amp;quot;: false&lt;br /&gt;
      },&lt;br /&gt;
      {&lt;br /&gt;
        &amp;quot;id&amp;quot;: &amp;quot;3a72ee87-cf3e-40f1-a1e1-fe8c7263a782&amp;quot;,&lt;br /&gt;
        &amp;quot;name&amp;quot;: &amp;quot;product-c&amp;quot;,&lt;br /&gt;
        &amp;quot;num_tokens&amp;quot;: 256,&lt;br /&gt;
        &amp;quot;is_seed&amp;quot;: false&lt;br /&gt;
      }&lt;br /&gt;
    ]&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
==== Modifying a Cluster ====&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Example: Drain (http://www.datastax.com/documentation/cassandra/2.0/cassandra/tools/toolsDrain.html)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
PUT /instances/dfbbd9ca-b5e1-4028-adb7-f78643e17998/cluster&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;drain&amp;quot;: {&lt;br /&gt;
    &amp;quot;id&amp;quot;: &amp;quot;dfbbd9ca-b5e1-4028-adb7-f78643e17998&amp;quot;&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Remove an Instance ====&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Request:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
PUT /instances/dfbbd9ca-b5e1-4028-adb7-f78643e17998/cluster&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;promote&amp;quot;: {&lt;br /&gt;
    &amp;quot;id&amp;quot;: &amp;quot;dfbbd9ca-b5e1-4028-adb7-f78643e17998&amp;quot;&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Notes:&lt;br /&gt;
* Note that 'promote' was used here vs. &amp;quot;remove/decomm_instance&amp;quot; because the action is akin to promoting a mysql/redis slave instance (see https://wiki.apache.org/cassandra/Operations#Removing_nodes_entirely)&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Couchbase ==&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
==== Create Cluster ====&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
'''Create Initial Cluster'''&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Request:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
POST /instances&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;instance&amp;quot;: {&lt;br /&gt;
    &amp;quot;name&amp;quot;: &amp;quot;product-a&amp;quot;,&lt;br /&gt;
    ...&lt;br /&gt;
    &amp;quot;datastore&amp;quot;: {&lt;br /&gt;
      &amp;quot;type&amp;quot;: &amp;quot;couchbase&amp;quot;,&lt;br /&gt;
      &amp;quot;version&amp;quot;: &amp;quot;2.5.1&amp;quot;&lt;br /&gt;
    },&lt;br /&gt;
    &amp;quot;cluster&amp;quot;: {&lt;br /&gt;
      &amp;quot;cluster_name&amp;quot;: &amp;quot;products&amp;quot;,&lt;br /&gt;
      &amp;quot;join&amp;quot;: false&lt;br /&gt;
    },&lt;br /&gt;
    ...&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Response:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;instance&amp;quot;: {&lt;br /&gt;
    &amp;quot;id&amp;quot;: &amp;quot;dfbbd9ca-b5e1-4028-adb7-f78643e17998&amp;quot;,&lt;br /&gt;
    ...&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Notes:&lt;br /&gt;
* Couchbase does not support a &amp;quot;cluster name&amp;quot;, but does require a xdcr-cluster-name when using XDCR.&lt;br /&gt;
* Tip: Summary of operations at http://docs.couchbase.com/couchbase-manual-2.2/#xdcr-replicate-options&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
==== Add Instance to Cluster ====&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Request:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
POST /instances&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;instance&amp;quot;: {&lt;br /&gt;
    &amp;quot;name&amp;quot;: &amp;quot;product-b&amp;quot;,&lt;br /&gt;
    ...&lt;br /&gt;
    &amp;quot;cluster&amp;quot;: {&lt;br /&gt;
      &amp;quot;cluster_name&amp;quot;: &amp;quot;products&amp;quot;,&lt;br /&gt;
      &amp;quot;join&amp;quot;: true&lt;br /&gt;
    },&lt;br /&gt;
    ...&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Response:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;instance&amp;quot;: {&lt;br /&gt;
    &amp;quot;status&amp;quot;: &amp;quot;BUILD&amp;quot;,&lt;br /&gt;
    &amp;quot;id&amp;quot;: &amp;quot;061aaf4c-3a57-411e-9df9-2d0f813db859&amp;quot;,&lt;br /&gt;
    ...&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Notes:&lt;br /&gt;
* If 'join' is true, and there is no existing cluster for the tenant matching the 'cluster_name' value, the request will be failed.&lt;br /&gt;
* In Couchbase, a new instance can join the cluster by referencing any existing instance, which is discoverable by trove via the cluster_name (unique per tenant)&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
==== Add Another Instance to Cluster ====&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Request/Response omitted due to a lack of any special considerations required&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
==== Show Instance ====&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Request/Response omitted due to a lack of any special considerations required&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
==== Show Cluster ====&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Request/Response omitted due to a lack of any special considerations required&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
==== Modifying a Cluster ====&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Example: Create Bucket&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
PUT /instances/dfbbd9ca-b5e1-4028-adb7-f78643e17998/cluster&lt;br /&gt;
&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;create_bucket&amp;quot;: {&lt;br /&gt;
    &amp;quot;bucket&amp;quot;: &amp;quot;test_bucket&amp;quot;,&lt;br /&gt;
    &amp;quot;bucket_type&amp;quot;: &amp;quot;couchbase&amp;quot;,&lt;br /&gt;
    &amp;quot;bucket_port&amp;quot;: 11222,&lt;br /&gt;
    &amp;quot;bucket_ramsize&amp;quot;: 200,&lt;br /&gt;
    &amp;quot;bucket_replica&amp;quot;: 1&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Remove a Instance ====&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Request:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
PUT /instances/dfbbd9ca-b5e1-4028-adb7-f78643e17998/cluster&lt;br /&gt;
&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;failover&amp;quot;: {&lt;br /&gt;
    &amp;quot;ids&amp;quot;: [&amp;quot;dfbbd9ca-b5e1-4028-adb7-f78643e17998&amp;quot;],&lt;br /&gt;
    &amp;quot;rebalance&amp;quot;: true&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Notes:&lt;br /&gt;
* As noted in the Couchbase documentation, removing an instance is akin to a failover and has extreme impliciations. For this reason, &amp;quot;promote&amp;quot; was not used (that, and &amp;quot;rebalance&amp;quot; is optional.)&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Redis ==&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
==== Create Master ====&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Request:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
POST /instances&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;instance&amp;quot;: {&lt;br /&gt;
    &amp;quot;name&amp;quot;: &amp;quot;products&amp;quot;,&lt;br /&gt;
    ...&lt;br /&gt;
    &amp;quot;datastore&amp;quot;: {&lt;br /&gt;
      &amp;quot;type&amp;quot;: &amp;quot;redis&amp;quot;,&lt;br /&gt;
      &amp;quot;version&amp;quot;: &amp;quot;2.8.6&amp;quot;&lt;br /&gt;
    },&lt;br /&gt;
    ...&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Response:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;instance&amp;quot;: {&lt;br /&gt;
    &amp;quot;id&amp;quot;: &amp;quot;dfbbd9ca-b5e1-4028-adb7-f78643e17998&amp;quot;,&lt;br /&gt;
    ...&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Notes:&lt;br /&gt;
* cluster{} is not required for redis&lt;br /&gt;
* note: 'join' field is not required for redis. also notice the lack of a 'cluster_name' of sorts (see 'Add Slave' for reasoning)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
==== Add Slave ====&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Request:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
POST /instances&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;instance&amp;quot;: {&lt;br /&gt;
    &amp;quot;name&amp;quot;: &amp;quot;product-b&amp;quot;,&lt;br /&gt;
    ...&lt;br /&gt;
    &amp;quot;datastore&amp;quot;: {&lt;br /&gt;
      &amp;quot;type&amp;quot;: &amp;quot;redis&amp;quot;,&lt;br /&gt;
      &amp;quot;version&amp;quot;: &amp;quot;2.8.6&amp;quot;&lt;br /&gt;
    },&lt;br /&gt;
    &amp;quot;cluster&amp;quot;: {&lt;br /&gt;
      &amp;quot;slave_of&amp;quot;: &amp;quot;dfbbd9ca-b5e1-4028-adb7-f78643e17998&amp;quot;&lt;br /&gt;
    },&lt;br /&gt;
    ...&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Response:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;instance&amp;quot;: {&lt;br /&gt;
    &amp;quot;status&amp;quot;: &amp;quot;BUILD&amp;quot;,&lt;br /&gt;
    &amp;quot;id&amp;quot;: &amp;quot;061aaf4c-3a57-411e-9df9-2d0f813db859&amp;quot;,&lt;br /&gt;
    ...&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Notes:&lt;br /&gt;
* redis supports daisy-chaining slaves, therefore the 'slave_of' value needs to be a specific trove instance uuid vs. a manufactured 'cluster_name' of sorts.&lt;br /&gt;
* whether it is a master or slave can be inferred from the presence (or lack thereof) of 'slave_of'.&lt;br /&gt;
* note that 'slave_of' is also used for mysql (the datastore information will have to be used to determine the semantic difference)&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
==== Show Instance ====&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Request:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
GET /instances/dfbbd9ca-b5e1-4028-adb7-f78643e17998&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Response:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;instance&amp;quot;: {&lt;br /&gt;
    ...&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
==== Show Cluster ====&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Request:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
GET /instances/dfbbd9ca-b5e1-4028-adb7-f78643e17998/cluster&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Response:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;cluster&amp;quot;: {&lt;br /&gt;
    &amp;quot;instances&amp;quot;: [&lt;br /&gt;
      {&lt;br /&gt;
        &amp;quot;id&amp;quot;: &amp;quot;dfbbd9ca-b5e1-4028-adb7-f78643e17998&amp;quot;,&lt;br /&gt;
        &amp;quot;name&amp;quot;: &amp;quot;products&amp;quot;&lt;br /&gt;
      },&lt;br /&gt;
      {&lt;br /&gt;
        &amp;quot;id&amp;quot;: &amp;quot;061aaf4c-3a57-411e-9df9-2d0f813db859&amp;quot;,&lt;br /&gt;
        &amp;quot;name&amp;quot;: &amp;quot;product-b&amp;quot;,&lt;br /&gt;
        &amp;quot;slave_of&amp;quot;: &amp;quot;dfbbd9ca-b5e1-4028-adb7-f78643e17998&amp;quot;&lt;br /&gt;
      }&lt;br /&gt;
    ]&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
==== Promote/Disconnect Slave ====&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Request:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
PUT /instances/dfbbd9ca-b5e1-4028-adb7-f78643e17998/cluster&lt;br /&gt;
&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;promote&amp;quot;: {&lt;br /&gt;
    &amp;quot;id&amp;quot;: &amp;quot;dfbbd9ca-b5e1-4028-adb7-f78643e17998&amp;quot;&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Notes:&lt;br /&gt;
* note that 'promote' is also used for mysql (the datastore information will have to be used to determine the semantic difference)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Redis Cluster ==&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
==== Create Cluster ====&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Request:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
POST /instances&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;instance&amp;quot;: {&lt;br /&gt;
    &amp;quot;name&amp;quot;: &amp;quot;product-a&amp;quot;,&lt;br /&gt;
    ...&lt;br /&gt;
    &amp;quot;datastore&amp;quot;: {&lt;br /&gt;
      &amp;quot;type&amp;quot;: &amp;quot;redis&amp;quot;,&lt;br /&gt;
      &amp;quot;version&amp;quot;: &amp;quot;3.0.0-beta1&amp;quot;&lt;br /&gt;
    },&lt;br /&gt;
    &amp;quot;cluster&amp;quot;: {&lt;br /&gt;
      &amp;quot;cluster_name&amp;quot;: &amp;quot;products&amp;quot;,&lt;br /&gt;
      &amp;quot;join&amp;quot;: false&lt;br /&gt;
    },&lt;br /&gt;
    ...&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Response:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;instance&amp;quot;: {&lt;br /&gt;
    &amp;quot;id&amp;quot;: &amp;quot;dfbbd9ca-b5e1-4028-adb7-f78643e17998&amp;quot;,&lt;br /&gt;
    ...&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Notes:&lt;br /&gt;
* Will require datastore-version (to 'manager' to cluster{}) validation that cluster_name is supported for redis (because redis 3.x supports clusters, whereas 2.x does not)&lt;br /&gt;
* 'cluster-node-timeout' should be handled by configuration by the deployer (outside the context of configuration-group).&lt;br /&gt;
* Note: shares 'cluster_name' with Cassandra.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
==== Add Another Master to Cluster ====&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Request:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
POST /instances&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;instance&amp;quot;: {&lt;br /&gt;
    &amp;quot;name&amp;quot;: &amp;quot;product-b&amp;quot;,&lt;br /&gt;
    ...&lt;br /&gt;
    &amp;quot;datastore&amp;quot;: {&lt;br /&gt;
      &amp;quot;type&amp;quot;: &amp;quot;redis&amp;quot;,&lt;br /&gt;
      &amp;quot;version&amp;quot;: &amp;quot;3.0.0-beta1&amp;quot;&lt;br /&gt;
    },&lt;br /&gt;
    &amp;quot;cluster&amp;quot;: {&lt;br /&gt;
      &amp;quot;cluster_name&amp;quot;: &amp;quot;products&amp;quot;,&lt;br /&gt;
      &amp;quot;join&amp;quot;: true&lt;br /&gt;
    },&lt;br /&gt;
    ...&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Response:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;instance&amp;quot;: {&lt;br /&gt;
    &amp;quot;status&amp;quot;: &amp;quot;BUILD&amp;quot;,&lt;br /&gt;
    &amp;quot;id&amp;quot;: &amp;quot;061aaf4c-3a57-411e-9df9-2d0f813db859&amp;quot;,&lt;br /&gt;
    ...&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
==== Add Slave to Cluster ====&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Request:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
POST /instances&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;instance&amp;quot;: {&lt;br /&gt;
    &amp;quot;name&amp;quot;: &amp;quot;product-c&amp;quot;,&lt;br /&gt;
    ...&lt;br /&gt;
    &amp;quot;datastore&amp;quot;: {&lt;br /&gt;
      &amp;quot;type&amp;quot;: &amp;quot;redis&amp;quot;,&lt;br /&gt;
      &amp;quot;version&amp;quot;: &amp;quot;3.0.0-beta1&amp;quot;&lt;br /&gt;
    },&lt;br /&gt;
    &amp;quot;cluster&amp;quot;: {&lt;br /&gt;
      &amp;quot;cluster_name&amp;quot;: &amp;quot;products&amp;quot;,&lt;br /&gt;
      &amp;quot;slave_of&amp;quot;: &amp;quot;dfbbd9ca-b5e1-4028-adb7-f78643e17998&amp;quot;&lt;br /&gt;
    },&lt;br /&gt;
    ...&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Response:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;instance&amp;quot;: {&lt;br /&gt;
    &amp;quot;status&amp;quot;: &amp;quot;BUILD&amp;quot;,&lt;br /&gt;
    &amp;quot;id&amp;quot;: &amp;quot;3a72ee87-cf3e-40f1-a1e1-fe8c7263a782&amp;quot;,&lt;br /&gt;
    ...&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Notes:&lt;br /&gt;
* Despite redis clusters supporting the ability to add a slave without designating the master, we will require it to avoid unoptimal geographical relationships.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
==== Show Instance ====&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Request:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
GET /instances/dfbbd9ca-b5e1-4028-adb7-f78643e17998&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Response:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;instance&amp;quot;: {&lt;br /&gt;
    ...&lt;br /&gt;
    &amp;quot;cluster&amp;quot;: {&lt;br /&gt;
      &amp;quot;cluster_name&amp;quot;: &amp;quot;products&amp;quot;&lt;br /&gt;
    },&lt;br /&gt;
    ...&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
==== Show Cluster ====&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Request:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
GET /instances/dfbbd9ca-b5e1-4028-adb7-f78643e17998/cluster&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Response:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;cluster&amp;quot;: {&lt;br /&gt;
    &amp;quot;name&amp;quot;: &amp;quot;products&amp;quot;,&lt;br /&gt;
    &amp;quot;instances&amp;quot;: [&lt;br /&gt;
      {&lt;br /&gt;
        &amp;quot;id&amp;quot;: &amp;quot;dfbbd9ca-b5e1-4028-adb7-f78643e17998&amp;quot;,&lt;br /&gt;
        &amp;quot;name&amp;quot;: &amp;quot;product-a&amp;quot;&lt;br /&gt;
      },&lt;br /&gt;
      {&lt;br /&gt;
        &amp;quot;id&amp;quot;: &amp;quot;061aaf4c-3a57-411e-9df9-2d0f813db859&amp;quot;,&lt;br /&gt;
        &amp;quot;name&amp;quot;: &amp;quot;product-b&amp;quot;&lt;br /&gt;
      },&lt;br /&gt;
      {&lt;br /&gt;
        &amp;quot;id&amp;quot;: &amp;quot;3a72ee87-cf3e-40f1-a1e1-fe8c7263a782&amp;quot;,&lt;br /&gt;
        &amp;quot;name&amp;quot;: &amp;quot;product-c&amp;quot;,&lt;br /&gt;
        &amp;quot;slave_of&amp;quot;: &amp;quot;dfbbd9ca-b5e1-4028-adb7-f78643e17998&amp;quot;&lt;br /&gt;
      }&lt;br /&gt;
    ]&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
==== Promote/Disconnect Slave ====&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Work in Progress&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
== Summary ==&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
==== Summary of cluster{} Fields ====&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Field !! Datastore(s)&lt;br /&gt;
|-&lt;br /&gt;
| slave_of || mysql, redis, redis-cluster&lt;br /&gt;
|-&lt;br /&gt;
| read_only || mysql&lt;br /&gt;
|-&lt;br /&gt;
| instance_type || mongodb&lt;br /&gt;
|-&lt;br /&gt;
| num_instances || mongodb, cassandra, couchbase, redis-cluster&lt;br /&gt;
|-&lt;br /&gt;
| cluster_name || mongodb, cassandra, couchbase, redis-cluster&lt;br /&gt;
|-&lt;br /&gt;
| priority || mongodb&lt;br /&gt;
|-&lt;br /&gt;
| hidden || mongodb&lt;br /&gt;
|-&lt;br /&gt;
| slaveDelay || mongodb&lt;br /&gt;
|-&lt;br /&gt;
| hostname || mongodb&lt;br /&gt;
|-&lt;br /&gt;
| votes || mongodb&lt;br /&gt;
|-&lt;br /&gt;
| num_tokens || cassandra&lt;br /&gt;
|-&lt;br /&gt;
| is_seed || cassandra&lt;br /&gt;
|-&lt;br /&gt;
| endpoint_snitch || cassandra&lt;br /&gt;
|-&lt;br /&gt;
| auto_bootstrap || cassandra&lt;br /&gt;
|-&lt;br /&gt;
| join || mongodb, cassandra, couchbase, redis-cluster&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Questions:&lt;br /&gt;
* Is this an acceptable number of added fields, is it confusing, and is the growth of fields as we add more datastores sustainable?&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
==== Summary of Route Changes ====&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
New Routes:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
GET /instances/&amp;lt;id&amp;gt;/cluster&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;cluster&amp;quot;: {&lt;br /&gt;
    &amp;quot;instances&amp;quot;: [&lt;br /&gt;
      {&lt;br /&gt;
        &amp;quot;id&amp;quot;: &amp;quot;&amp;lt;id&amp;gt;&amp;quot;,&lt;br /&gt;
        &amp;quot;name&amp;quot;: &amp;quot;&amp;lt;name&amp;gt;&amp;quot;,&lt;br /&gt;
        &amp;lt;datastore-specific cluster fields&amp;gt;&lt;br /&gt;
      },&lt;br /&gt;
      &amp;lt;repeat&amp;gt;&lt;br /&gt;
    ]&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
PUT /instances/&amp;lt;id&amp;gt;/cluster&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;&amp;lt;action&amp;gt;&amp;quot;: {&lt;br /&gt;
    &amp;lt;action-specific fields, with one or more including the targeted id(s)&amp;gt;&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
== Open Questions ==&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
* How to handle additional filtering requirements for instance-list (need to likely filter by cluster_name, so how to handle mysql/redis in these scenarios).&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Discussion Points ==&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
==== Replica-Set Member Type/Attribute Updates ====&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
'''Option #1: PATCH /instances/:id/cluster'''&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Request:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
PATCH /instances/dfbbd9ca-b5e1-4028-adb7-f78643e17998/cluster&lt;br /&gt;
&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;instances&amp;quot;: [&lt;br /&gt;
    {&lt;br /&gt;
      &amp;quot;id&amp;quot;: &amp;quot;dfbbd9ca-b5e1-4028-adb7-f78643e17998&amp;quot;,&lt;br /&gt;
      &amp;quot;priority&amp;quot;: 2&lt;br /&gt;
    },&lt;br /&gt;
    {&lt;br /&gt;
      &amp;quot;id&amp;quot;: &amp;quot;061aaf4c-3a57-411e-9df9-2d0f813db859&amp;quot;,&lt;br /&gt;
      &amp;quot;priority&amp;quot;: 1&lt;br /&gt;
    },&lt;br /&gt;
    {&lt;br /&gt;
      &amp;quot;id&amp;quot;: &amp;quot;3a72ee87-cf3e-40f1-a1e1-fe8c7263a782&amp;quot;,&lt;br /&gt;
      &amp;quot;priority&amp;quot;: 0.5&lt;br /&gt;
    }&lt;br /&gt;
  ]&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Response:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;cluster&amp;quot;: {&lt;br /&gt;
    &amp;quot;name&amp;quot;: &amp;quot;products&amp;quot;,&lt;br /&gt;
    &amp;quot;instances&amp;quot;: [&lt;br /&gt;
      {&lt;br /&gt;
        &amp;quot;id&amp;quot;: &amp;quot;dfbbd9ca-b5e1-4028-adb7-f78643e17998&amp;quot;,&lt;br /&gt;
        &amp;quot;name&amp;quot;: &amp;quot;product-a&amp;quot;,&lt;br /&gt;
        &amp;quot;instance_type&amp;quot;: &amp;quot;member&amp;quot;&lt;br /&gt;
      },&lt;br /&gt;
      {&lt;br /&gt;
        &amp;quot;id&amp;quot;: &amp;quot;061aaf4c-3a57-411e-9df9-2d0f813db859&amp;quot;,&lt;br /&gt;
        &amp;quot;name&amp;quot;: &amp;quot;product-b&amp;quot;,&lt;br /&gt;
        &amp;quot;instance_type&amp;quot;: &amp;quot;member&amp;quot;&lt;br /&gt;
      },&lt;br /&gt;
      {&lt;br /&gt;
        &amp;quot;id&amp;quot;: &amp;quot;3a72ee87-cf3e-40f1-a1e1-fe8c7263a782&amp;quot;,&lt;br /&gt;
        &amp;quot;name&amp;quot;: &amp;quot;product-c&amp;quot;,&lt;br /&gt;
        &amp;quot;instance_type&amp;quot;: &amp;quot;member&amp;quot;&lt;br /&gt;
      }&lt;br /&gt;
    ]&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Notes:&lt;br /&gt;
* An HTTP PATCH vs. PUT because the omission of a field should not be an indication to drop/delete it.&lt;br /&gt;
* All modified fields in a request will be changed transactionally in a single rs.reconfig().&lt;br /&gt;
* It should now be clear why 'priority', 'hidden' and 'slaveDelay' are in cluster{} vs. a configuration-group: when a configuration-group is changed, an event is immediately triggered to update any attached trove instances. Therefore, if you have a heterogeneous mixture of configuration-groups in a replica-set, there is no way to coordinate a consolidated rs.reconfig().&lt;br /&gt;
* Downside: cluster{} may have fields returned on a GET that you cannot change in a PATCH/PUT; re-worded, the granularity of what is permissible to change in a PATCH becomes complicated to check and validate.&lt;br /&gt;
* TBD on what should be returned in the cluster{} on a GET /instance/:id and GET /instance/:id/cluster. It's a question of whether we should persist anything beyond the 'instance_type' and 'cluster_name'. If say the 'priority' is stored, you introduce the possibility of drift from the truth, but can easily return it on a GET; if it's not stored, do we prompt MongoDB for the truth on a GET, or is that too computationally expensive?&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
'''Option #2: POST /instances/:id/cluster/action'''&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Request:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
   POST or PUT /instances/dfbbd9ca-b5e1-4028-adb7-f78643e17998/cluster/action&lt;br /&gt;
or POST or PUT /instances/dfbbd9ca-b5e1-4028-adb7-f78643e17998/cluster&lt;br /&gt;
&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;update_member_attributes&amp;quot;: {&lt;br /&gt;
    &amp;quot;instances&amp;quot;: [&lt;br /&gt;
      {&lt;br /&gt;
        &amp;quot;id&amp;quot;: &amp;quot;dfbbd9ca-b5e1-4028-adb7-f78643e17998&amp;quot;,&lt;br /&gt;
        &amp;quot;priority&amp;quot;: 2&lt;br /&gt;
      },&lt;br /&gt;
      {&lt;br /&gt;
        &amp;quot;id&amp;quot;: &amp;quot;061aaf4c-3a57-411e-9df9-2d0f813db859&amp;quot;,&lt;br /&gt;
        &amp;quot;priority&amp;quot;: 1&lt;br /&gt;
      },&lt;br /&gt;
      {&lt;br /&gt;
        &amp;quot;id&amp;quot;: &amp;quot;3a72ee87-cf3e-40f1-a1e1-fe8c7263a782&amp;quot;,&lt;br /&gt;
        &amp;quot;priority&amp;quot;: 0.5&lt;br /&gt;
      }&lt;br /&gt;
    ]&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Notes:&lt;br /&gt;
* 'update_member_attributes.members[]' elements will only permit  'priority', 'hidden', and 'slaveDelay' (possibly 'votes' and 'hostname' as mentioned earlier).&lt;br /&gt;
* Due to the limited field-set, this approach is much more fine-grained than the PATCH approach in Option #1.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Decision: Option #2 is more fine-grained, easier to reason about, and less error-prone. As you'll see in later operations (like Remove a Member), is also more appropriate.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
==== Remove a Member from a Replica-Set ====&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Removing a member from a cluster/cluster is not the same as deleting one, therefore DELETE /instances/:id is not appropriate.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
'''Option #1: PUT /instances/:id/cluster'''&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Request:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
PUT /instances/dfbbd9ca-b5e1-4028-adb7-f78643e17998/cluster&lt;br /&gt;
&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;instances&amp;quot;: [&lt;br /&gt;
    {&lt;br /&gt;
      &amp;quot;id&amp;quot;: &amp;quot;dfbbd9ca-b5e1-4028-adb7-f78643e17998&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    {&lt;br /&gt;
      &amp;quot;id&amp;quot;: &amp;quot;061aaf4c-3a57-411e-9df9-2d0f813db859&amp;quot;,&lt;br /&gt;
    }&lt;br /&gt;
  ]&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Notes:&lt;br /&gt;
* By omitting a member{} for id=3a72ee87-cf3e-40f1-a1e1-fe8c7263a782 in a PUT operation, this indicates the member should be removed from the replica-set.&lt;br /&gt;
* It's possible that one might want to modify the 'priority', 'hidden', 'votes', etc. fields of the remaining members while dropping a member. So although the example above does not show it, mongodb{} can be included in a member to indicate other changes, *BUT*, since it's a PUT the expectation of what happens to omitted fields in mongodb{} becomes unclear.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Summary: Not very clean, mildly confusing, and very error-prone (nowhere is a &amp;quot;remove&amp;quot; action ever explicitly implied).&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
'''Option #2: POST /instances/:id/cluster/action'''&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Request:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
PUT /instances/dfbbd9ca-b5e1-4028-adb7-f78643e17998/cluster&lt;br /&gt;
&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;remove_member&amp;quot;: {&lt;br /&gt;
    &amp;quot;id&amp;quot;: &amp;quot;dfbbd9ca-b5e1-4028-adb7-f78643e17998&amp;quot;&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Notes:&lt;br /&gt;
* The 'remove_member' action is explicit here, vs. implicit as seen in the prior example.&lt;br /&gt;
* 'remove_member' has a strict set of fields that are supported, so there is no question as to what can be provided and what will be honored (as compared to Option #1).&lt;br /&gt;
* Note: Could rename remove_member here to 'promote'!&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Summary: Fairly clean, with no real drawbacks.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
'''Option #3: POST /instances/:id/cluster/remove'''&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
POST /instances/dfbbd9ca-b5e1-4028-adb7-f78643e17998/cluster/remove&lt;br /&gt;
&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;id&amp;quot;: &amp;quot;dfbbd9ca-b5e1-4028-adb7-f78643e17998&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Notes:&lt;br /&gt;
* Differs from Option #2 in that the action is in the URI vs. the payload (which is considered incorrect in REST due to it being a verb)&lt;br /&gt;
* One drawback of this approach is that not every action will be supported across all datastores. So for example, a POST /instances/:id/cluster/changeoplogsize (http://docs.mongodb.org/manual/tutorial/change-oplog-size/) makes absolutely no sense to any datastore other than MongoDB.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Summary: At first glance it might look cleaner than Option #2 from a payload-perspective, but the URI discoverability and expansion is awful.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
'''Option #4: POST /instances/:id/action'''&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
POST /instances/dfbbd9ca-b5e1-4028-adb7-f78643e17998/action&lt;br /&gt;
&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;join&amp;quot;: false&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Notes:&lt;br /&gt;
* Executed against the instance you wish to remove itself from the cluster, so providing the 'id' in the payload is unnecessary.&lt;br /&gt;
* Drawback: There are actions that are replica-set-wide (or against a subset of the replica-set), meaning Option #1 or #2 or #3 would have to co-exist with this option anyway.&lt;br /&gt;
* Drawback: Increase the number of ways to accomplish the same thing (could unjoin against /instances/:id/action, or against /instances/:id/cluster)&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Summary: For this very specific example it looks great, but isn't expressive enough for other actions.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
'''Option #5: POST /instances/:id/cluster/:id/action'''&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
POST /instances/dfbbd9ca-b5e1-4028-adb7-f78643e17998/cluster/dfbbd9ca-b5e1-4028-adb7-f78643e17998/action&lt;br /&gt;
&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;remove&amp;quot;: {}&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Notes:&lt;br /&gt;
* The /instances/:id is an arbitrary member in the replica-set, it doesn't matter which one; the cluster/:id is then a member of said replica-set that this action will be applied to.&lt;br /&gt;
* Executed against the instance you wish to remove itself from the cluster, so providing the 'id' in the payload is unnecessary.&lt;br /&gt;
* Needs More Thought: Could conceivably allow only specific operations here (like remove/unjoin), but not others that could be accomplished in a PATCH against /instances/:id/cluster (like 'priority', 'hidden', etc.)&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Summary: Fairly clean with no real drawbacks.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;/div&gt;</summary>
		<author><name>Vipuls</name></author>	</entry>

	<entry>
		<id>https://wiki.openstack.org/w/index.php?title=Oslo/ProjectLiaisons&amp;diff=48437</id>
		<title>Oslo/ProjectLiaisons</title>
		<link rel="alternate" type="text/html" href="https://wiki.openstack.org/w/index.php?title=Oslo/ProjectLiaisons&amp;diff=48437"/>
				<updated>2014-04-11T19:39:50Z</updated>
		
		<summary type="html">&lt;p&gt;Vipuls: /* Liaisons for Oslo Integration */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Liaisons for Oslo Integration =&lt;br /&gt;
&lt;br /&gt;
There are now more projects consuming code from the Oslo incubator than we have Oslo contributors. That means we are going to need your help to make these migrations happen. We are asking for one person from each project to serve as a liaison between the project and Oslo, and to assist with integrating changes as we move code out of the incubator into libraries.&lt;br /&gt;
&lt;br /&gt;
The liaison should be a core reviewer for the project, but does not need to be the PTL. The liaison should be prepared to assist with writing and reviewing patches in their project as libraries are adopted, and with discussions of API changes to the libraries to make them easier to use within the project.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Project !! Liaison !! IRC Handle&lt;br /&gt;
|-&lt;br /&gt;
| nova || Joe Gordon || jogo&lt;br /&gt;
|-&lt;br /&gt;
| cinder || Duncan Thomas || DuncanT&lt;br /&gt;
|-&lt;br /&gt;
| ironic || Ghe Rivero || GheRivero&lt;br /&gt;
|-&lt;br /&gt;
| horizon || Lin Hua Cheng || lcheng&lt;br /&gt;
|-&lt;br /&gt;
| ceilometer || Julien Danjou || jd__&lt;br /&gt;
|-&lt;br /&gt;
| marconi || Flavio Percoco || flaper87&lt;br /&gt;
|-&lt;br /&gt;
| glance || Flavio Percoco || flaper87&lt;br /&gt;
|-&lt;br /&gt;
| heat || Thomas Herve || therve&lt;br /&gt;
|-&lt;br /&gt;
| trove || Vipul Sabhaya || vipul&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Vipuls</name></author>	</entry>

	<entry>
		<id>https://wiki.openstack.org/w/index.php?title=Meetings/TroveMeeting&amp;diff=43465</id>
		<title>Meetings/TroveMeeting</title>
		<link rel="alternate" type="text/html" href="https://wiki.openstack.org/w/index.php?title=Meetings/TroveMeeting&amp;diff=43465"/>
				<updated>2014-02-26T17:57:01Z</updated>
		
		<summary type="html">&lt;p&gt;Vipuls: /* Agenda for todays meeting */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
= Weekly Trove (DBaaS) team meeting =&lt;br /&gt;
&lt;br /&gt;
For those interested, we have meetings in #openstack-meeting-alt Weekly, Wednesdays at 18:00 UTC. Feel free to add items in the agenda below.&lt;br /&gt;
&lt;br /&gt;
Logs available: http://eavesdrop.openstack.org/meetings/trove/2014/&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Agenda for todays meeting ==&lt;br /&gt;
* Clustering decision next week&lt;br /&gt;
* Replication work status&lt;br /&gt;
* RDJenkins maintenance&lt;br /&gt;
&lt;br /&gt;
== Agenda for Mar. 5 ==&lt;/div&gt;</summary>
		<author><name>Vipuls</name></author>	</entry>

	<entry>
		<id>https://wiki.openstack.org/w/index.php?title=OpenPGP_Web_of_Trust/Trove_Icehouse_Sprint&amp;diff=42567</id>
		<title>OpenPGP Web of Trust/Trove Icehouse Sprint</title>
		<link rel="alternate" type="text/html" href="https://wiki.openstack.org/w/index.php?title=OpenPGP_Web_of_Trust/Trove_Icehouse_Sprint&amp;diff=42567"/>
				<updated>2014-02-17T19:40:15Z</updated>
		
		<summary type="html">&lt;p&gt;Vipuls: /* Trove Mid-Cycle Icehouse Sprint Key Signing */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Trove Mid-Cycle Icehouse Sprint Key Signing =&lt;br /&gt;
If you plan to join us, please bring one or more forms of photo identification, and make sure the real name on your key corresponds to the name on your ID. If you want additional tips, see the [[OpenPGP Web of Trust#Key Signing Process|parent article]].&lt;br /&gt;
&lt;br /&gt;
If you want to bring cards or pieces of paper with your name and key fingerprint then feel free, but if you add your information to the table below we will do our best to bring paper copies (at least enough for the people who are listed here) for use as a checklist so that you won't need to use your computer. Please bring extra pens or pencils however, if you can, since there may not be many of those to go around.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ People participating in identification exchange&lt;br /&gt;
! Real Name !! IRC Nick !! Key Fingerprint !! Preferred E-mail Address&lt;br /&gt;
|-&lt;br /&gt;
| Nikhil Manchanda || slicknik || 5674 7211 71F8 CD59 F285  353D 9692 757E BCD3 D66C || nikhil@manchanda.me&lt;br /&gt;
|-&lt;br /&gt;
| Steve Leon || esmute || 02F1 F2AE C17D 66D2 1B1B  B75C EF3B 2AB9 FFF4 F9EA || steve.leon@hp.com&lt;br /&gt;
|-&lt;br /&gt;
| Justin Hopper || juice || 7463 498F 7D3B 7DB3 FFBF 4946 C02F 046F '''EA23 8CF3''' || justin.hopper@me.com&lt;br /&gt;
|-&lt;br /&gt;
|Michael Basnight||hub_cap||9D60 7133 8AFE 4FE5 45D9  625E 9E86 DD8C 3DB5 897B||mbasnight@gmail.com&lt;br /&gt;
|-&lt;br /&gt;
|Craig Vyvial||cp16net||8975 C9C2 E879 309A 771B  7C01 046B FABA F4BD 6CC2||cp16net@gmail.com&lt;br /&gt;
|-&lt;br /&gt;
|Dan Nguyen||esp||D9D4 F72E 82FC EFCE 1923  B140 9163 F056 AE67 298E||dan.nguyens.mail@gmail.com&lt;br /&gt;
|-&lt;br /&gt;
|Daniel Salinas||imsplitbit||54C5 515E 71FB 1533 2332  F115 78EE B83C 964B C17C||imsplitbit@gmail.com&lt;br /&gt;
|-&lt;br /&gt;
|Andrew Bramley||abramley||7082 00CC 9C6F 7523 C3B1 2CB4 9E67 CA34 2DAA 044F||andrew@tesora.com&lt;br /&gt;
|-&lt;br /&gt;
|Amrith Kumar||amrith||0D22 859E BE93 63F5 9DD6  35BC 5E48 849A 9D21 A29B||amrith@tesora.com&lt;br /&gt;
|-&lt;br /&gt;
|Paul Marshall||pdmars||2DCA A0AB 6DEC A717 FC80  A6D1 9F08 2613 795C B691||paul.marshall@rackspace.com&lt;br /&gt;
|-&lt;br /&gt;
|Vipul Sabhaya||vipul||B7FA 44B3 32C7 1A3A F606 1ED7 A2C7 95BC 02AE 77A2 ||vipul.sabhaya@hp.com&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Vipuls</name></author>	</entry>

	<entry>
		<id>https://wiki.openstack.org/w/index.php?title=Meetings/TroveMeeting&amp;diff=31883</id>
		<title>Meetings/TroveMeeting</title>
		<link rel="alternate" type="text/html" href="https://wiki.openstack.org/w/index.php?title=Meetings/TroveMeeting&amp;diff=31883"/>
				<updated>2013-10-09T03:36:50Z</updated>
		
		<summary type="html">&lt;p&gt;Vipuls: /* Agenda for the next meeting */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
= Weekly Trove (DBaaS) team meeting =&lt;br /&gt;
&lt;br /&gt;
For those interested, we have meetings in #openstack-meeting-alt Weekly, Wednesdays at 3pm CDT / 1pm PDT, or 20:00 UTC. Feel free to add items in the agenda below.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Agenda from the previous meeting ==&lt;br /&gt;
* Update to Action items (http://eavesdrop.openstack.org/meetings/trove/2013/trove.2013-09-18-20.01.html)&lt;br /&gt;
* Discussion on rolling back resources&lt;br /&gt;
** https://review.openstack.org/#/c/45708/&lt;br /&gt;
** https://review.openstack.org/#/c/48188/&lt;br /&gt;
* Cloud-init service extensions for easy deployment in Trove (dmakogon)&lt;br /&gt;
** https://gist.github.com/crazymac/6791694&lt;br /&gt;
* Configuration + service type and versions&lt;br /&gt;
** Need a type of configuration that can not be modified by the user or (our default template)&lt;br /&gt;
** This could get get complicated for each flavor type if the configuration is not able to scale with the flavor size.&lt;br /&gt;
* https://review.openstack.org/#/c/41055/ (yogesh)&lt;br /&gt;
* Trove-Conductor updates (datsun180b)&lt;br /&gt;
** [https://review.openstack.org/#/c/45116/ Trove review]&lt;br /&gt;
** [https://review.openstack.org/#/c/49237/ Devstack review]&lt;br /&gt;
* Trove-Heat Integration (yogesh)&lt;br /&gt;
** https://gist.github.com/mehrayogesh/6798720&lt;br /&gt;
&lt;br /&gt;
== Agenda for the next meeting ==&lt;br /&gt;
* User permission request escaping and dots in usernames (datsun180b, demorris)&lt;br /&gt;
* Provisioning ancillary resources post ACTIVE&lt;/div&gt;</summary>
		<author><name>Vipuls</name></author>	</entry>

	<entry>
		<id>https://wiki.openstack.org/w/index.php?title=Meetings/TroveMeeting&amp;diff=29408</id>
		<title>Meetings/TroveMeeting</title>
		<link rel="alternate" type="text/html" href="https://wiki.openstack.org/w/index.php?title=Meetings/TroveMeeting&amp;diff=29408"/>
				<updated>2013-09-04T20:08:08Z</updated>
		
		<summary type="html">&lt;p&gt;Vipuls: /* Agenda for the next meeting */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
= Weekly Trove (DBaaS) team meeting =&lt;br /&gt;
&lt;br /&gt;
For those interested, we have meetings in #openstack-meeting-alt Weekly, Wednesdays at 3pm CDT / 1pm PDT, or 20:00 UTC. Feel free to add items in the agenda below.&lt;br /&gt;
&lt;br /&gt;
== Agenda for the next meeting ==&lt;br /&gt;
* Update to Action items (http://eavesdrop.openstack.org/meetings/trove/2013/trove.2013-08-28-20.02.html)&lt;br /&gt;
* Update on h3/rc1/icehouse&lt;br /&gt;
* MongoDB support https://blueprints.launchpad.net/trove/+spec/mongodb-support (needs approvement)&lt;br /&gt;
* virgo based guest-agent (https://github.com/racker/virgo, https://github.com/racker/virgo-base)&lt;br /&gt;
* trove refactoring: guestagent main issues (dmakogon)&lt;br /&gt;
* versions / service_types&lt;br /&gt;
* guest_agent service registry (dict_opt vs single opt)&lt;br /&gt;
* Open Discussion&lt;/div&gt;</summary>
		<author><name>Vipuls</name></author>	</entry>

	<entry>
		<id>https://wiki.openstack.org/w/index.php?title=Meetings/TroveMeeting&amp;diff=28510</id>
		<title>Meetings/TroveMeeting</title>
		<link rel="alternate" type="text/html" href="https://wiki.openstack.org/w/index.php?title=Meetings/TroveMeeting&amp;diff=28510"/>
				<updated>2013-08-21T18:20:23Z</updated>
		
		<summary type="html">&lt;p&gt;Vipuls: /* Agenda for the next meeting */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
= Weekly Trove (DBaaS) team meeting =&lt;br /&gt;
&lt;br /&gt;
For those interested, we have meetings in #openstack-meeting-alt Weekly, Wednesdays at 3pm CDT / 1pm PDT, or 20:00 UTC. Feel free to add items in the agenda below.&lt;br /&gt;
&lt;br /&gt;
== Agenda for the next meeting ==&lt;br /&gt;
* Update to Action items (http://eavesdrop.openstack.org/meetings/trove/2013/trove.2013-08-14-20.00.html)&lt;br /&gt;
* [https://wiki.openstack.org/wiki/Trove/scheduled-tasks Autmated Backups Design]&lt;br /&gt;
* clustering API update&lt;br /&gt;
* Flavors per Service Type&lt;br /&gt;
** https://blueprints.launchpad.net/trove/+spec/service-type-filter-on-flavors&lt;br /&gt;
* Open Discussion&lt;/div&gt;</summary>
		<author><name>Vipuls</name></author>	</entry>

	<entry>
		<id>https://wiki.openstack.org/w/index.php?title=Meetings/TroveMeeting&amp;diff=28164</id>
		<title>Meetings/TroveMeeting</title>
		<link rel="alternate" type="text/html" href="https://wiki.openstack.org/w/index.php?title=Meetings/TroveMeeting&amp;diff=28164"/>
				<updated>2013-08-14T20:00:22Z</updated>
		
		<summary type="html">&lt;p&gt;Vipuls: /* Agenda for the next meeting */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
= Weekly Trove (DBaaS) team meeting =&lt;br /&gt;
&lt;br /&gt;
For those interested, we have meetings in #openstack-meeting-alt Weekly, Wednesdays at 3pm CDT / 1pm PDT, or 20:00 UTC. Feel free to add items in the agenda below.&lt;br /&gt;
&lt;br /&gt;
== Agenda for the next meeting ==&lt;br /&gt;
* Update to Action items (http://eavesdrop.openstack.org/meetings/trove/2013/trove.2013-08-07-20.00.html)&lt;br /&gt;
* clustering API update&lt;br /&gt;
* H3 status update&lt;br /&gt;
* Feature freeze&lt;br /&gt;
** https://wiki.openstack.org/wiki/FeatureProposalFreeze&lt;br /&gt;
** https://wiki.openstack.org/wiki/FeatureFreeze&lt;br /&gt;
* redstack vs devstack users&lt;br /&gt;
** https://bugs.launchpad.net/python-troveclient/+bug/1194331&lt;br /&gt;
* Blueprints&lt;br /&gt;
** https://blueprints.launchpad.net/trove/+spec/pluggable-db-implementations&lt;br /&gt;
** https://blueprints.launchpad.net/trove/+spec/support-schema-queries&lt;br /&gt;
* Upgrade GA&lt;br /&gt;
** https://bugs.launchpad.net/trove/+bug/1212413&lt;br /&gt;
* Flavors per Service Type&lt;br /&gt;
* Open Discussion&lt;/div&gt;</summary>
		<author><name>Vipuls</name></author>	</entry>

	<entry>
		<id>https://wiki.openstack.org/w/index.php?title=Meetings/TroveMeeting&amp;diff=28162</id>
		<title>Meetings/TroveMeeting</title>
		<link rel="alternate" type="text/html" href="https://wiki.openstack.org/w/index.php?title=Meetings/TroveMeeting&amp;diff=28162"/>
				<updated>2013-08-14T19:29:54Z</updated>
		
		<summary type="html">&lt;p&gt;Vipuls: /* Agenda for the next meeting */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
= Weekly Trove (DBaaS) team meeting =&lt;br /&gt;
&lt;br /&gt;
For those interested, we have meetings in #openstack-meeting-alt Weekly, Wednesdays at 3pm CDT / 1pm PDT, or 20:00 UTC. Feel free to add items in the agenda below.&lt;br /&gt;
&lt;br /&gt;
== Agenda for the next meeting ==&lt;br /&gt;
* Update to Action items (http://eavesdrop.openstack.org/meetings/trove/2013/trove.2013-08-07-20.00.html)&lt;br /&gt;
* clustering API update&lt;br /&gt;
* H3 status update&lt;br /&gt;
* Feature freeze&lt;br /&gt;
** https://wiki.openstack.org/wiki/FeatureProposalFreeze&lt;br /&gt;
** https://wiki.openstack.org/wiki/FeatureFreeze&lt;br /&gt;
* redstack vs devstack users&lt;br /&gt;
** https://bugs.launchpad.net/python-troveclient/+bug/1194331&lt;br /&gt;
* Blueprints&lt;br /&gt;
** https://blueprints.launchpad.net/trove/+spec/pluggable-db-implementations&lt;br /&gt;
** https://blueprints.launchpad.net/trove/+spec/support-schema-queries&lt;br /&gt;
* Flavors per Service Type&lt;br /&gt;
* Open Discussion&lt;/div&gt;</summary>
		<author><name>Vipuls</name></author>	</entry>

	<entry>
		<id>https://wiki.openstack.org/w/index.php?title=Trove/dev-env&amp;diff=26829</id>
		<title>Trove/dev-env</title>
		<link rel="alternate" type="text/html" href="https://wiki.openstack.org/w/index.php?title=Trove/dev-env&amp;diff=26829"/>
				<updated>2013-07-24T18:52:19Z</updated>
		
		<summary type="html">&lt;p&gt;Vipuls: /* Local Dev */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Trove API and Redstack Dev Environment Set Up on Mac OS X =&lt;br /&gt;
&lt;br /&gt;
== Intro ==&lt;br /&gt;
This article describes how to point a local running Trove instance to a Devstack/Redstack deployment in a VM or Cloud instance.&lt;br /&gt;
You should be able to debug and test your changes without having to deploy.&lt;br /&gt;
&lt;br /&gt;
== Prerequisites ==&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|-&lt;br /&gt;
|-&lt;br /&gt;
|-&lt;br /&gt;
|-&lt;br /&gt;
|-&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Installing VMWare Fusion and Trove services ==&lt;br /&gt;
openstack=== VM ===&lt;br /&gt;
# In order to run trove/redstack in a local VM, you need to start by installing a guest with Ubuntu 12.04 server. Download an image file from Ubuntu's web site (http://www.ubuntu.com/download/server) and create a new guest from it in your preferred virtualization solution (VMWare fusion, VirtualBox, Parallels, etc.)&lt;br /&gt;
## Recommended version ubuntu-12.04.1-server-amd64.iso&lt;br /&gt;
## Recommended RAM size is 2GB, but could probably work with 1GB if needed&lt;br /&gt;
## It seems no special network settings are needed in order to be able to access the guest from the host, the defaults work just fine&lt;br /&gt;
### Notice! It seems that the guest-agent will fail to &amp;quot;$ sudo pip install extras&amp;quot; and the below should be run on the redstack guest: &amp;lt;pre&amp;gt;$ sudo iptables -t nat -A POSTROUTING -s 10.0.0.0/24 -o eth0 -j MASQUERADE&amp;lt;/pre&amp;gt;&lt;br /&gt;
## It seems there is no need for the VMWare tools. They don't solve the copy/paste (or make working with the terminal any easier...) and we simply recommend using ssh instead. see details below.&lt;br /&gt;
## For better performance, make sure you go to the VM Settings -&amp;gt; Processors &amp;amp; Memory -&amp;gt; Advanced Options and check the &amp;quot;Enable hypervisor applications in this virtual machine&amp;quot; (see more about this at the bottom of this page: https://github.com/openstack/trove-integration)&lt;br /&gt;
## The full description of installing Redstack is described here: https://github.com/openstack/trove-integration/blob/master/README.md but we recommend you follow this path:&lt;br /&gt;
### When you set up the guest ubuntu, either create is with the 'ubuntu' user or add it: &amp;lt;pre&amp;gt;$ adduser ubuntu&amp;lt;/pre&amp;gt; &amp;lt;pre&amp;gt;$ visudo&amp;lt;/pre&amp;gt;&lt;br /&gt;
#### Add this line to the file below the root user &amp;lt;pre&amp;gt;$ ubuntu  ALL=(ALL:ALL) ALL&amp;lt;/pre&amp;gt; &amp;lt;pre&amp;gt;**OR use this if you dont want to type your password to sudo a command**&amp;lt;/pre&amp;gt; &amp;lt;pre&amp;gt;$ ubuntu  ALL=(ALL:NOPASSWD) ALL&amp;lt;/pre&amp;gt;&lt;br /&gt;
### Install ssh server on the guest: &amp;lt;pre&amp;gt;$ sudo apt-get install ssh (or openssh)&amp;lt;/pre&amp;gt;&lt;br /&gt;
### Now, you can run ifconfig on the guest and get it's IP. Use that to ssh (as ubuntu) to it from your mac and continue working from there, it's easier ...&lt;br /&gt;
### Get git: &amp;lt;pre&amp;gt;$ apt-get update&amp;lt;/pre&amp;gt; &amp;lt;pre&amp;gt;$ apt-get install git-core -y&amp;lt;/pre&amp;gt;&lt;br /&gt;
### This is a good point to take a snapshot of this guest&lt;br /&gt;
### Clone this repo: &amp;lt;pre&amp;gt;$ git clone https://github.com/openstack/trove-integration.git&amp;lt;/pre&amp;gt;&lt;br /&gt;
### Go into the scripts directory: &amp;lt;pre&amp;gt;$ cd trove-integration/scripts/&amp;lt;/pre&amp;gt;&lt;br /&gt;
#### Install all the dependencies and then install trove via devstack (this Brings up trove (rd-api rd-tmgr) and initializes the trove database) &amp;lt;pre&amp;gt;$ ./redstack install&amp;lt;/pre&amp;gt;&lt;br /&gt;
### Since latest merges of Redstack in to Devstack, i'm not sure what is the exact state of the system at this point, since the screen session is already showing trove-api and trove-taskmanager as running in two of the screens. In any case you can &amp;quot;initialize&amp;quot; trove by:&lt;br /&gt;
#### running this, which encapsulate several calls: &amp;lt;pre&amp;gt;$ ./redstack kick-start mysql&amp;lt;/pre&amp;gt;&lt;br /&gt;
#### or running the steps manually: &amp;lt;pre&amp;gt;$ ./redstack build&amp;lt;/pre&amp;gt; &amp;lt;pre&amp;gt;$ ./redstack test-init (used to be &amp;quot;initialize&amp;quot;?)&amp;lt;/pre&amp;gt; &amp;lt;pre&amp;gt;$ ./redstack build-image mysql (or &amp;quot;percona&amp;quot;)&amp;lt;/pre&amp;gt;&lt;br /&gt;
#### And starting it: &amp;lt;pre&amp;gt;$ ./redstack start&amp;lt;/pre&amp;gt;&lt;br /&gt;
### For more information and usage see here:  https://github.com/openstack/trove-integration/blob/master/README.md&lt;br /&gt;
## There used to be an issue with precise getting jammed. We're not sure if this is still the case, but if you get into such issues, please check the workaround described here:&lt;br /&gt;
### Installing Ubuntu Precise on VMWare Fusion http://wiki.openstack.org/vmware-fusion-precise (just use defaults)&lt;br /&gt;
&lt;br /&gt;
=== Local Dev ===&lt;br /&gt;
The main idea here, is to have trove-api and/or trove-taskmanager running locally on your mac (in a console or through your IDE so you can actually debug the code) but working against keystone/nova/swift/rabbit-mq/mysql that are all installed on your redstack node (installed above)&lt;br /&gt;
# First, get the code: &amp;lt;pre&amp;gt;$ git clone https://github.com/openstack/trove.git&amp;lt;/pre&amp;gt;&lt;br /&gt;
# You'll need the have mysql client installed. If you don't have it already, install it using homebrew (running $ sudo pip install mysql-python would fail otherwise)&lt;br /&gt;
## Installing homebrew https://github.com/mxcl/homebrew/wiki/Installation&lt;br /&gt;
## Then install mysql &amp;lt;pre&amp;gt;$ brew install mysql&amp;lt;/pre&amp;gt;&lt;br /&gt;
# You're going to use a dedicated python virtual env. Set it up and &amp;quot;activate&amp;quot; it like this: &amp;lt;pre&amp;gt;$ trove/trove/tools/install_venv.py&amp;lt;/pre&amp;gt; &amp;lt;pre&amp;gt;$ source ./venv/bin/activate&amp;lt;/pre&amp;gt;&lt;br /&gt;
# In your new env, install python-swiftclient and mysql-python: &amp;lt;pre&amp;gt;$ sudo pip install python-swiftclient&amp;lt;/pre&amp;gt; &amp;lt;pre&amp;gt;$ sudo pip install mysql-python&amp;lt;/pre&amp;gt;&lt;br /&gt;
# Due to some issue with openssl and cms (that doesn't work properly on a mac by default) you'll have to apply this fix:&lt;br /&gt;
## Download the openssl tar ball from http://www.openssl.org/source/&lt;br /&gt;
### openssl-1.0.1e.tar.gz seems to work fine: http://www.openssl.org/source/openssl-1.0.1e.tar.gz&lt;br /&gt;
## unzip it ($ tar xvzf filename) and follow the instruction here:&lt;br /&gt;
### Installing openssl on Mac OS X with cms enabled http://stackoverflow.com/questions/9275786/updating-openssl-version-on-osx&lt;br /&gt;
#### basically, running: &amp;lt;pre&amp;gt;sudo ./Configure --prefix=/usr/ darwin64-x86_64-cc enable-cms&amp;lt;/pre&amp;gt; &amp;lt;pre&amp;gt;$ sudo make&amp;lt;/pre&amp;gt; &amp;lt;pre&amp;gt;$ sudo make test&amp;lt;/pre&amp;gt; &amp;lt;pre&amp;gt;$ sudo make install&amp;lt;/pre&amp;gt;&lt;br /&gt;
## As an alternative you can run &amp;lt;pre&amp;gt;brew install openssl&amp;lt;/pre&amp;gt; and then back up and replace &amp;lt;pre&amp;gt;sudo cp /usr/bin/openssl /usr/bin/openssl_old; sudo cp /usr/local/Cellar/openssl/1.0.1e/bin/openssl /usr/bin/openssl; sudo chown root:wheel /usr/bin/openssl; sudo chmod 755 /usr/bin/openssl&amp;lt;/pre&amp;gt;&lt;br /&gt;
# Depends on what you've done so far, you might need to &amp;quot;clean up&amp;quot; your env. If you encounter issues with keystone (authenticating) try this:&lt;br /&gt;
## Delete all .pem files under /tmp/keystone-signing-nova&lt;br /&gt;
## Delete all .pem files under /tmp/keystone-signing-trove&lt;br /&gt;
## You might also have to delete ~/.apitoken&lt;br /&gt;
&lt;br /&gt;
== Configuring local trove files ==&lt;br /&gt;
For your local processes (api and taskmanager) to find the needed resources on your redstack, you'll have to modify the conifg files. It is recommended you create a copy of trove.conf.sample and trove-taskmanager.conf.sample, modify them and point to those copies when running the api and taskmanager services (details below). You'll also have to modify the api-paste.ini, but since it's currently referenced hard codedly, you'll have to modify this file directly and be carefull not to check it in ;-) &lt;br /&gt;
# Update the auth_host entry in api-paste.ini with the ip of your redstack guest&lt;br /&gt;
# Update the host entries in trove.conf.sample &amp;amp; trove-taskmanager.conf.sample to point to the Devstack/Redstack host (i.e. nova_compute_url, nova_volume_url, notifier_queue_hostname)&lt;br /&gt;
## No need to change the bind_host (i think ...)&lt;br /&gt;
## sql_connection = mysql://root:e1a2c042c828d3566d0a@localhost/trove - replace localhost with the redstack ip&lt;br /&gt;
## swift_url = http://localhost:8080/v1/AUTH_ - replace localhost with the redstack ip&lt;br /&gt;
## trove_auth_url = http://0.0.0.0:5000/v2.0 - replace the 0.0.0.0 with the redstack ip&lt;br /&gt;
## nova_compute_url = http://localhost:8774/v2 - replace localhost with the redstack ip&lt;br /&gt;
## nova_volume_url = http://localhost:8776/v1 - replace localhost with the redstack ip&lt;br /&gt;
## notifier_queue_hostname = localhost - replace localhost with the redstack ip&lt;br /&gt;
## rabbit_host = localhost - replace localhost with the redstack ip. add this one if it's not there&lt;br /&gt;
# Update the trove-guestagent.conf.sample as well if you are going to be running this locally.&lt;br /&gt;
&lt;br /&gt;
== Running the trove services locally ==&lt;br /&gt;
Trove scripts currently expect to be run from the project root folder. Configure your IDE to do this, and also make sure to use the .venv as the interpreter&lt;br /&gt;
# $ bin/trove-api --config-file=etc/trove/trove.conf.sample (web service)&lt;br /&gt;
## Notice! if you created a copy of the config file, make sure you point to your copy instead!&lt;br /&gt;
# $ bin/trove-taskmanager --config-file=etc/trove/trove-taskmanager.conf.sample (task manager)&lt;br /&gt;
## Notice! same as the notice above ;)&lt;br /&gt;
# $ bin/trove-guestagent --config-file=etc/trove/trove-guestagent.conf.sample (guest agent)&lt;br /&gt;
## Notice! same as the notice above ;)&lt;br /&gt;
&lt;br /&gt;
You can now access your local api server using curl, Chrome's Advanced Rest Cliet or trove-cli (the command line utility - get it by installing python-troveclient)&lt;br /&gt;
To get things rolling, you start by obtaining an auth token. For some reason, i couldn't do this with the Chrome's rest client, but you can use the two methods below:&lt;br /&gt;
# $ curl -d &amp;quot;{\&amp;quot;auth\&amp;quot;:{\&amp;quot;passwordCredentials\&amp;quot;:{\&amp;quot;username\&amp;quot;: \&amp;quot;radmin\&amp;quot;, \&amp;quot;password\&amp;quot;: \&amp;quot;radmin\&amp;quot;},\&amp;quot;tenantName\&amp;quot;:\&amp;quot;trove\&amp;quot;}}&amp;quot; -H &amp;quot;Content-type: application/json&amp;quot; http://IP_OF_REDSTACK_GUEST:35357/v2.0/tokens&lt;br /&gt;
## Notice, you use the redstack ip since this is were your keystone runs&lt;br /&gt;
# $ trove-cli --username=radmin --apikey=radmin --tenant=trove --auth_url=http://IP_OF_REDSTACK_GUEST:35357/v2.0/tokens auth login --service_url http://localhost:8779/v1.0/YOUR_TENANT_ID&lt;br /&gt;
## You can obtain your tenant_id by running this on the redstack guest: &amp;lt;pre&amp;gt;$ ./redstack nova-client credentials&amp;lt;/pre&amp;gt;&lt;br /&gt;
## Notice the use of the --service_url&lt;br /&gt;
&lt;br /&gt;
Remember that you also have the api and taskmanager running on your redstack node. So remember to have only one running - those that you start locally, needs to be stopped on the redstack node. ssh into it, run screen -x stack, go the the relevant screen (ctrl a followed by ctrl &amp;quot; - will show you the list of screens and you can select the one you need) and hit ctrl c to stop them. you can then restart them by hitting the up arrow and enter.&lt;br /&gt;
&lt;br /&gt;
=== Hacking RabbitMQ ===&lt;br /&gt;
The api server talks to the taskmanager via Rabbit, and &amp;quot;knows&amp;quot; the name of the queue from the trove.conf.sample (or your local copy of it, if renamed):&lt;br /&gt;
taskmanager_queue = taskmanager&lt;br /&gt;
When running taskmanager under debug, it'll actually create/listen on a queue called pydevd.py - be sure to update your conf file appropriately if you run taskmanager under debug. also, make sure to bounce the api server after you make those changes. Also, notice, that even if you leave the api server running on the redstack node, you'd still have to update this conf file, it should be under /etc/trove/trove.conf&lt;br /&gt;
&lt;br /&gt;
There is a nice management plugin for RabbitMQ, with a web gui console. To use it, do the following:&lt;br /&gt;
* On the Redstack node (the one running Rabbit) run: &amp;lt;pre&amp;gt;$ sudo /usr/lib/rabbitmq/bin/rabbitmq-plugins enable rabbitmq_management&amp;lt;/pre&amp;gt;&amp;lt;pre&amp;gt;$ sudo service rabbitmq-server restart&amp;lt;/pre&amp;gt;&lt;br /&gt;
* You can now access it through port 55672:&lt;br /&gt;
** http://REDSTACK_IP:55672&lt;br /&gt;
* The default user to use is: &amp;quot;guest&amp;quot; and the password is taken from redstack.rc:&lt;br /&gt;
** RABBIT_PASSWORD=f7999d1955c5014aa32c&lt;br /&gt;
* more about this console: http://www.rabbitmq.com/management.html&lt;br /&gt;
&lt;br /&gt;
=== Accessing the DB ===&lt;br /&gt;
In order to access the admin DB on the redstack guest, you can:&lt;br /&gt;
* Run: &amp;lt;pre&amp;gt;$ mysql -u root -p&amp;quot;ADMIN_PASS&amp;quot;&amp;lt;/pre&amp;gt; &amp;lt;pre&amp;gt;mysql&amp;gt; show databases; (to see the databases)&amp;lt;/pre&amp;gt; &amp;lt;pre&amp;gt;mysql&amp;gt; use trove; (to start using the trove DB)&amp;lt;/pre&amp;gt; &amp;lt;pre&amp;gt;mysql&amp;gt; show tables; (to see the list of tables)&amp;lt;/pre&amp;gt;&lt;br /&gt;
** Now run any query you want&lt;br /&gt;
** The admin password is taken from redstack.rc:&lt;br /&gt;
*** MYSQL_PASSWORD=e1a2c042c828d3566d0a&lt;br /&gt;
* Alternatively, you can setup a local gui-based client on your mac, such as SequelPro and point to your redstack ip&lt;br /&gt;
&lt;br /&gt;
== Notes ==&lt;br /&gt;
* If the services are not run in the project root the trove/extensions will not be loaded.&lt;br /&gt;
* If you are developing guest agent code you will probably still have to copy files to the VM Devstack/Redstack&lt;/div&gt;</summary>
		<author><name>Vipuls</name></author>	</entry>

	<entry>
		<id>https://wiki.openstack.org/w/index.php?title=Trove/dev-env&amp;diff=26828</id>
		<title>Trove/dev-env</title>
		<link rel="alternate" type="text/html" href="https://wiki.openstack.org/w/index.php?title=Trove/dev-env&amp;diff=26828"/>
				<updated>2013-07-24T18:51:55Z</updated>
		
		<summary type="html">&lt;p&gt;Vipuls: /* VM */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Trove API and Redstack Dev Environment Set Up on Mac OS X =&lt;br /&gt;
&lt;br /&gt;
== Intro ==&lt;br /&gt;
This article describes how to point a local running Trove instance to a Devstack/Redstack deployment in a VM or Cloud instance.&lt;br /&gt;
You should be able to debug and test your changes without having to deploy.&lt;br /&gt;
&lt;br /&gt;
== Prerequisites ==&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|-&lt;br /&gt;
|-&lt;br /&gt;
|-&lt;br /&gt;
|-&lt;br /&gt;
|-&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Installing VMWare Fusion and Trove services ==&lt;br /&gt;
openstack=== VM ===&lt;br /&gt;
# In order to run trove/redstack in a local VM, you need to start by installing a guest with Ubuntu 12.04 server. Download an image file from Ubuntu's web site (http://www.ubuntu.com/download/server) and create a new guest from it in your preferred virtualization solution (VMWare fusion, VirtualBox, Parallels, etc.)&lt;br /&gt;
## Recommended version ubuntu-12.04.1-server-amd64.iso&lt;br /&gt;
## Recommended RAM size is 2GB, but could probably work with 1GB if needed&lt;br /&gt;
## It seems no special network settings are needed in order to be able to access the guest from the host, the defaults work just fine&lt;br /&gt;
### Notice! It seems that the guest-agent will fail to &amp;quot;$ sudo pip install extras&amp;quot; and the below should be run on the redstack guest: &amp;lt;pre&amp;gt;$ sudo iptables -t nat -A POSTROUTING -s 10.0.0.0/24 -o eth0 -j MASQUERADE&amp;lt;/pre&amp;gt;&lt;br /&gt;
## It seems there is no need for the VMWare tools. They don't solve the copy/paste (or make working with the terminal any easier...) and we simply recommend using ssh instead. see details below.&lt;br /&gt;
## For better performance, make sure you go to the VM Settings -&amp;gt; Processors &amp;amp; Memory -&amp;gt; Advanced Options and check the &amp;quot;Enable hypervisor applications in this virtual machine&amp;quot; (see more about this at the bottom of this page: https://github.com/openstack/trove-integration)&lt;br /&gt;
## The full description of installing Redstack is described here: https://github.com/openstack/trove-integration/blob/master/README.md but we recommend you follow this path:&lt;br /&gt;
### When you set up the guest ubuntu, either create is with the 'ubuntu' user or add it: &amp;lt;pre&amp;gt;$ adduser ubuntu&amp;lt;/pre&amp;gt; &amp;lt;pre&amp;gt;$ visudo&amp;lt;/pre&amp;gt;&lt;br /&gt;
#### Add this line to the file below the root user &amp;lt;pre&amp;gt;$ ubuntu  ALL=(ALL:ALL) ALL&amp;lt;/pre&amp;gt; &amp;lt;pre&amp;gt;**OR use this if you dont want to type your password to sudo a command**&amp;lt;/pre&amp;gt; &amp;lt;pre&amp;gt;$ ubuntu  ALL=(ALL:NOPASSWD) ALL&amp;lt;/pre&amp;gt;&lt;br /&gt;
### Install ssh server on the guest: &amp;lt;pre&amp;gt;$ sudo apt-get install ssh (or openssh)&amp;lt;/pre&amp;gt;&lt;br /&gt;
### Now, you can run ifconfig on the guest and get it's IP. Use that to ssh (as ubuntu) to it from your mac and continue working from there, it's easier ...&lt;br /&gt;
### Get git: &amp;lt;pre&amp;gt;$ apt-get update&amp;lt;/pre&amp;gt; &amp;lt;pre&amp;gt;$ apt-get install git-core -y&amp;lt;/pre&amp;gt;&lt;br /&gt;
### This is a good point to take a snapshot of this guest&lt;br /&gt;
### Clone this repo: &amp;lt;pre&amp;gt;$ git clone https://github.com/openstack/trove-integration.git&amp;lt;/pre&amp;gt;&lt;br /&gt;
### Go into the scripts directory: &amp;lt;pre&amp;gt;$ cd trove-integration/scripts/&amp;lt;/pre&amp;gt;&lt;br /&gt;
#### Install all the dependencies and then install trove via devstack (this Brings up trove (rd-api rd-tmgr) and initializes the trove database) &amp;lt;pre&amp;gt;$ ./redstack install&amp;lt;/pre&amp;gt;&lt;br /&gt;
### Since latest merges of Redstack in to Devstack, i'm not sure what is the exact state of the system at this point, since the screen session is already showing trove-api and trove-taskmanager as running in two of the screens. In any case you can &amp;quot;initialize&amp;quot; trove by:&lt;br /&gt;
#### running this, which encapsulate several calls: &amp;lt;pre&amp;gt;$ ./redstack kick-start mysql&amp;lt;/pre&amp;gt;&lt;br /&gt;
#### or running the steps manually: &amp;lt;pre&amp;gt;$ ./redstack build&amp;lt;/pre&amp;gt; &amp;lt;pre&amp;gt;$ ./redstack test-init (used to be &amp;quot;initialize&amp;quot;?)&amp;lt;/pre&amp;gt; &amp;lt;pre&amp;gt;$ ./redstack build-image mysql (or &amp;quot;percona&amp;quot;)&amp;lt;/pre&amp;gt;&lt;br /&gt;
#### And starting it: &amp;lt;pre&amp;gt;$ ./redstack start&amp;lt;/pre&amp;gt;&lt;br /&gt;
### For more information and usage see here:  https://github.com/openstack/trove-integration/blob/master/README.md&lt;br /&gt;
## There used to be an issue with precise getting jammed. We're not sure if this is still the case, but if you get into such issues, please check the workaround described here:&lt;br /&gt;
### Installing Ubuntu Precise on VMWare Fusion http://wiki.openstack.org/vmware-fusion-precise (just use defaults)&lt;br /&gt;
&lt;br /&gt;
=== Local Dev ===&lt;br /&gt;
The main idea here, is to have trove-api and/or trove-taskmanager running locally on your mac (in a console or through your IDE so you can actually debug the code) but working against keystone/nova/swift/rabbit-mq/mysql that are all installed on your redstack node (installed above)&lt;br /&gt;
# First, get the code: &amp;lt;pre&amp;gt;$ git clone https://github.com/stackforge/trove.git&amp;lt;/pre&amp;gt;&lt;br /&gt;
# You'll need the have mysql client installed. If you don't have it already, install it using homebrew (running $ sudo pip install mysql-python would fail otherwise)&lt;br /&gt;
## Installing homebrew https://github.com/mxcl/homebrew/wiki/Installation&lt;br /&gt;
## Then install mysql &amp;lt;pre&amp;gt;$ brew install mysql&amp;lt;/pre&amp;gt;&lt;br /&gt;
# You're going to use a dedicated python virtual env. Set it up and &amp;quot;activate&amp;quot; it like this: &amp;lt;pre&amp;gt;$ trove/trove/tools/install_venv.py&amp;lt;/pre&amp;gt; &amp;lt;pre&amp;gt;$ source ./venv/bin/activate&amp;lt;/pre&amp;gt;&lt;br /&gt;
# In your new env, install python-swiftclient and mysql-python: &amp;lt;pre&amp;gt;$ sudo pip install python-swiftclient&amp;lt;/pre&amp;gt; &amp;lt;pre&amp;gt;$ sudo pip install mysql-python&amp;lt;/pre&amp;gt;&lt;br /&gt;
# Due to some issue with openssl and cms (that doesn't work properly on a mac by default) you'll have to apply this fix:&lt;br /&gt;
## Download the openssl tar ball from http://www.openssl.org/source/&lt;br /&gt;
### openssl-1.0.1e.tar.gz seems to work fine: http://www.openssl.org/source/openssl-1.0.1e.tar.gz&lt;br /&gt;
## unzip it ($ tar xvzf filename) and follow the instruction here:&lt;br /&gt;
### Installing openssl on Mac OS X with cms enabled http://stackoverflow.com/questions/9275786/updating-openssl-version-on-osx&lt;br /&gt;
#### basically, running: &amp;lt;pre&amp;gt;sudo ./Configure --prefix=/usr/ darwin64-x86_64-cc enable-cms&amp;lt;/pre&amp;gt; &amp;lt;pre&amp;gt;$ sudo make&amp;lt;/pre&amp;gt; &amp;lt;pre&amp;gt;$ sudo make test&amp;lt;/pre&amp;gt; &amp;lt;pre&amp;gt;$ sudo make install&amp;lt;/pre&amp;gt;&lt;br /&gt;
## As an alternative you can run &amp;lt;pre&amp;gt;brew install openssl&amp;lt;/pre&amp;gt; and then back up and replace &amp;lt;pre&amp;gt;sudo cp /usr/bin/openssl /usr/bin/openssl_old; sudo cp /usr/local/Cellar/openssl/1.0.1e/bin/openssl /usr/bin/openssl; sudo chown root:wheel /usr/bin/openssl; sudo chmod 755 /usr/bin/openssl&amp;lt;/pre&amp;gt;&lt;br /&gt;
# Depends on what you've done so far, you might need to &amp;quot;clean up&amp;quot; your env. If you encounter issues with keystone (authenticating) try this:&lt;br /&gt;
## Delete all .pem files under /tmp/keystone-signing-nova&lt;br /&gt;
## Delete all .pem files under /tmp/keystone-signing-trove&lt;br /&gt;
## You might also have to delete ~/.apitoken&lt;br /&gt;
&lt;br /&gt;
== Configuring local trove files ==&lt;br /&gt;
For your local processes (api and taskmanager) to find the needed resources on your redstack, you'll have to modify the conifg files. It is recommended you create a copy of trove.conf.sample and trove-taskmanager.conf.sample, modify them and point to those copies when running the api and taskmanager services (details below). You'll also have to modify the api-paste.ini, but since it's currently referenced hard codedly, you'll have to modify this file directly and be carefull not to check it in ;-) &lt;br /&gt;
# Update the auth_host entry in api-paste.ini with the ip of your redstack guest&lt;br /&gt;
# Update the host entries in trove.conf.sample &amp;amp; trove-taskmanager.conf.sample to point to the Devstack/Redstack host (i.e. nova_compute_url, nova_volume_url, notifier_queue_hostname)&lt;br /&gt;
## No need to change the bind_host (i think ...)&lt;br /&gt;
## sql_connection = mysql://root:e1a2c042c828d3566d0a@localhost/trove - replace localhost with the redstack ip&lt;br /&gt;
## swift_url = http://localhost:8080/v1/AUTH_ - replace localhost with the redstack ip&lt;br /&gt;
## trove_auth_url = http://0.0.0.0:5000/v2.0 - replace the 0.0.0.0 with the redstack ip&lt;br /&gt;
## nova_compute_url = http://localhost:8774/v2 - replace localhost with the redstack ip&lt;br /&gt;
## nova_volume_url = http://localhost:8776/v1 - replace localhost with the redstack ip&lt;br /&gt;
## notifier_queue_hostname = localhost - replace localhost with the redstack ip&lt;br /&gt;
## rabbit_host = localhost - replace localhost with the redstack ip. add this one if it's not there&lt;br /&gt;
# Update the trove-guestagent.conf.sample as well if you are going to be running this locally.&lt;br /&gt;
&lt;br /&gt;
== Running the trove services locally ==&lt;br /&gt;
Trove scripts currently expect to be run from the project root folder. Configure your IDE to do this, and also make sure to use the .venv as the interpreter&lt;br /&gt;
# $ bin/trove-api --config-file=etc/trove/trove.conf.sample (web service)&lt;br /&gt;
## Notice! if you created a copy of the config file, make sure you point to your copy instead!&lt;br /&gt;
# $ bin/trove-taskmanager --config-file=etc/trove/trove-taskmanager.conf.sample (task manager)&lt;br /&gt;
## Notice! same as the notice above ;)&lt;br /&gt;
# $ bin/trove-guestagent --config-file=etc/trove/trove-guestagent.conf.sample (guest agent)&lt;br /&gt;
## Notice! same as the notice above ;)&lt;br /&gt;
&lt;br /&gt;
You can now access your local api server using curl, Chrome's Advanced Rest Cliet or trove-cli (the command line utility - get it by installing python-troveclient)&lt;br /&gt;
To get things rolling, you start by obtaining an auth token. For some reason, i couldn't do this with the Chrome's rest client, but you can use the two methods below:&lt;br /&gt;
# $ curl -d &amp;quot;{\&amp;quot;auth\&amp;quot;:{\&amp;quot;passwordCredentials\&amp;quot;:{\&amp;quot;username\&amp;quot;: \&amp;quot;radmin\&amp;quot;, \&amp;quot;password\&amp;quot;: \&amp;quot;radmin\&amp;quot;},\&amp;quot;tenantName\&amp;quot;:\&amp;quot;trove\&amp;quot;}}&amp;quot; -H &amp;quot;Content-type: application/json&amp;quot; http://IP_OF_REDSTACK_GUEST:35357/v2.0/tokens&lt;br /&gt;
## Notice, you use the redstack ip since this is were your keystone runs&lt;br /&gt;
# $ trove-cli --username=radmin --apikey=radmin --tenant=trove --auth_url=http://IP_OF_REDSTACK_GUEST:35357/v2.0/tokens auth login --service_url http://localhost:8779/v1.0/YOUR_TENANT_ID&lt;br /&gt;
## You can obtain your tenant_id by running this on the redstack guest: &amp;lt;pre&amp;gt;$ ./redstack nova-client credentials&amp;lt;/pre&amp;gt;&lt;br /&gt;
## Notice the use of the --service_url&lt;br /&gt;
&lt;br /&gt;
Remember that you also have the api and taskmanager running on your redstack node. So remember to have only one running - those that you start locally, needs to be stopped on the redstack node. ssh into it, run screen -x stack, go the the relevant screen (ctrl a followed by ctrl &amp;quot; - will show you the list of screens and you can select the one you need) and hit ctrl c to stop them. you can then restart them by hitting the up arrow and enter.&lt;br /&gt;
&lt;br /&gt;
=== Hacking RabbitMQ ===&lt;br /&gt;
The api server talks to the taskmanager via Rabbit, and &amp;quot;knows&amp;quot; the name of the queue from the trove.conf.sample (or your local copy of it, if renamed):&lt;br /&gt;
taskmanager_queue = taskmanager&lt;br /&gt;
When running taskmanager under debug, it'll actually create/listen on a queue called pydevd.py - be sure to update your conf file appropriately if you run taskmanager under debug. also, make sure to bounce the api server after you make those changes. Also, notice, that even if you leave the api server running on the redstack node, you'd still have to update this conf file, it should be under /etc/trove/trove.conf&lt;br /&gt;
&lt;br /&gt;
There is a nice management plugin for RabbitMQ, with a web gui console. To use it, do the following:&lt;br /&gt;
* On the Redstack node (the one running Rabbit) run: &amp;lt;pre&amp;gt;$ sudo /usr/lib/rabbitmq/bin/rabbitmq-plugins enable rabbitmq_management&amp;lt;/pre&amp;gt;&amp;lt;pre&amp;gt;$ sudo service rabbitmq-server restart&amp;lt;/pre&amp;gt;&lt;br /&gt;
* You can now access it through port 55672:&lt;br /&gt;
** http://REDSTACK_IP:55672&lt;br /&gt;
* The default user to use is: &amp;quot;guest&amp;quot; and the password is taken from redstack.rc:&lt;br /&gt;
** RABBIT_PASSWORD=f7999d1955c5014aa32c&lt;br /&gt;
* more about this console: http://www.rabbitmq.com/management.html&lt;br /&gt;
&lt;br /&gt;
=== Accessing the DB ===&lt;br /&gt;
In order to access the admin DB on the redstack guest, you can:&lt;br /&gt;
* Run: &amp;lt;pre&amp;gt;$ mysql -u root -p&amp;quot;ADMIN_PASS&amp;quot;&amp;lt;/pre&amp;gt; &amp;lt;pre&amp;gt;mysql&amp;gt; show databases; (to see the databases)&amp;lt;/pre&amp;gt; &amp;lt;pre&amp;gt;mysql&amp;gt; use trove; (to start using the trove DB)&amp;lt;/pre&amp;gt; &amp;lt;pre&amp;gt;mysql&amp;gt; show tables; (to see the list of tables)&amp;lt;/pre&amp;gt;&lt;br /&gt;
** Now run any query you want&lt;br /&gt;
** The admin password is taken from redstack.rc:&lt;br /&gt;
*** MYSQL_PASSWORD=e1a2c042c828d3566d0a&lt;br /&gt;
* Alternatively, you can setup a local gui-based client on your mac, such as SequelPro and point to your redstack ip&lt;br /&gt;
&lt;br /&gt;
== Notes ==&lt;br /&gt;
* If the services are not run in the project root the trove/extensions will not be loaded.&lt;br /&gt;
* If you are developing guest agent code you will probably still have to copy files to the VM Devstack/Redstack&lt;/div&gt;</summary>
		<author><name>Vipuls</name></author>	</entry>

	<entry>
		<id>https://wiki.openstack.org/w/index.php?title=Trove&amp;diff=26825</id>
		<title>Trove</title>
		<link rel="alternate" type="text/html" href="https://wiki.openstack.org/w/index.php?title=Trove&amp;diff=26825"/>
				<updated>2013-07-24T18:44:22Z</updated>
		
		<summary type="html">&lt;p&gt;Vipuls: /* Development */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Mission Statement =&lt;br /&gt;
The OpenStack Open Source Database as a Service Mission: To provide scalable and reliable Cloud Database as a Service functionality for both relational and non-relational database engines, and to continue to improve its fully-featured and extensible open source framework.&lt;br /&gt;
&lt;br /&gt;
= Description =&lt;br /&gt;
Trove is Database as a Service for Openstack.  It's designed to run entirely on [[OpenStack]], with the goal of allowing users to quickly and easily utilize the features of a relational database without the burden of handling complex administrative tasks.  Cloud users and database administrators can provision and manage multiple database instances as needed. Initially, the service will focus on providing resource isolation at high performance while automating complex administrative tasks including deployment, configuration, patching, backups, restores, and monitoring.&lt;br /&gt;
&lt;br /&gt;
= Design =&lt;br /&gt;
Trove is designed to support a single-tenant database within a Nova instance.  There will be no restrictions on how Nova is configured, since Trove interacts with other [[OpenStack]] components purely through the API.&lt;br /&gt;
&lt;br /&gt;
== trove-api ==&lt;br /&gt;
The '''trove-api''' service provides a RESTful API that supports JSON and XML to provision and manage Trove instances. &lt;br /&gt;
* A REST-ful component&lt;br /&gt;
* Entry point - Trove/bin/trove-api&lt;br /&gt;
* Uses a WSGI launcher configured by Trove/etc/trove/api-paste.ini&lt;br /&gt;
** Defines the pipeline of filters; tokenauth, ratelimit, etc.&lt;br /&gt;
** Defines the app_factory for the troveapp as trove.common.api:app_factory&lt;br /&gt;
* The API class (a wsgi Router) wires the REST paths to the appropriate Controllers&lt;br /&gt;
** Implementation of the Controllers are under the relevant module (versions/instance/flavor/limits), in the service.py module&lt;br /&gt;
* Controllers usually redirect implementation to a class in the models.py module&lt;br /&gt;
* At this point, an api module of another component (TaskManager, GuestAgent, etc.) is used to send the request onwards through RabbitMQ&lt;br /&gt;
&lt;br /&gt;
== trove-taskmanager ==&lt;br /&gt;
The '''trove-taskmanager''' service does the heavy lifting as far as provisioning instances, managing the lifecycle of instances, and performing operations on the Database instance.&lt;br /&gt;
* A service that listens on a RabbitMQ topic&lt;br /&gt;
* Entry point - Trove/bin/trove-taskmanager&lt;br /&gt;
* Runs as a RpcService configured by Trove/etc/trove/trove-taskmanager.conf.sample which defines trove.taskmanager.manager.Manager as the manager - basically this is the entry point for requests arriving through the queue&lt;br /&gt;
* As described above, requests for this component are pushed to MQ from another component using the TaskManager's api module using _cast() or _call() (sync/a-sync) and putting the method's name as a parameter&lt;br /&gt;
* Trove/openstack/common/rpc/dispatcher.py- RpcDispatcher.dispatch() invokes the proper method in the Manager by some equivalent to reflection&lt;br /&gt;
* The Manager then redirect the handling to an object from the models.py module. It loads an object from the relevant class with the context  and instance_id&lt;br /&gt;
* Actual handling is usually done in the models.py module&lt;br /&gt;
&lt;br /&gt;
== trove-guestagent ==&lt;br /&gt;
The '''guestagent''' is a service that runs within the guest instance, responsible for managing and performing operations on the Database itself.  The Guest Agent listens for RPC messages through the message bus and performs the requested operation.&lt;br /&gt;
* Similar to TaskManager in the sense of running as a service that listens on a RabbitMQ topic&lt;br /&gt;
* GuestAgent runs on every DB instance, and a dedicated MQ topic is used (identified as the instance's id)&lt;br /&gt;
* Entry point - Trove/bin/trove-guestagent&lt;br /&gt;
* Runs as a RpcService configured by Trove/etc/trove/trove-guestagent.conf.sample which defines trove.guestagent.manager.Manager as the manager - basically this is the entry point for requests arriving through the queue&lt;br /&gt;
* As described above, requests for this component are pushed to MQ from another component using the GuestAgent's api module using _cast() or _call() (sync/a-sync) and putting the method's name as a parameter&lt;br /&gt;
* Trove/openstack/common/rpc/dispatcher.py- RpcDispatcher.dispatch() invokes the proper method in the Manager by some equivalent to reflection&lt;br /&gt;
* The Manager then redirect the handling to an object (usually) from the dbaas.py module.&lt;br /&gt;
* Actual handling is usually done in the dbaas.py module&lt;br /&gt;
&lt;br /&gt;
== Source Code Repositories ==&lt;br /&gt;
* Trove Server (https://github.com/openstack/trove)&lt;br /&gt;
* Trove Integration (https://github.com/openstack/trove-integration)&lt;br /&gt;
* Trove Client (https://github.com/openstack/python-troveclient)&lt;br /&gt;
&lt;br /&gt;
= Installation and Deployment =&lt;br /&gt;
* How to install trove as part of devstack: [[trove/installation]]&lt;br /&gt;
* How to set up a testing environment and run redstack tests after installation: [[trove/integration-testing]]&lt;br /&gt;
* How to set up your Mac dev environment to debug: [[trove/dev-env]]&lt;br /&gt;
* Releasing python-troveclient [[trove/release-python-troveclient]]&lt;br /&gt;
&lt;br /&gt;
= Development =&lt;br /&gt;
* Quota Management is currently in development: [[trove/trove-quotas]]&lt;br /&gt;
* Security Groups is currently in design/development: [[trove/trove-security-groups]]&lt;br /&gt;
* Snapshot Design: [[trove/snapshot-design]]&lt;br /&gt;
* Versions and Types Design: [[trove/trove-versions-types]]&lt;br /&gt;
* Configuration Edits: [[Trove/Configurations]]&lt;br /&gt;
* Notification Events: [[trove/trove-notifications]]&lt;br /&gt;
* Diagrams: [[trove/trove-diagrams]]&lt;/div&gt;</summary>
		<author><name>Vipuls</name></author>	</entry>

	<entry>
		<id>https://wiki.openstack.org/w/index.php?title=Trove/trove-diagrams&amp;diff=26824</id>
		<title>Trove/trove-diagrams</title>
		<link rel="alternate" type="text/html" href="https://wiki.openstack.org/w/index.php?title=Trove/trove-diagrams&amp;diff=26824"/>
				<updated>2013-07-24T18:44:06Z</updated>
		
		<summary type="html">&lt;p&gt;Vipuls: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Trove Instance Status-Action Transition Diagram&amp;lt;br /&amp;gt;&lt;br /&gt;
[[File:Reddwarf_commands_fsm.pdf]]&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
Trove Instance Status Makeup&amp;lt;br /&amp;gt;&lt;br /&gt;
[[File:Reddwarf_instance_status.pdf]]&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
Trove System Overview&amp;lt;br /&amp;gt;&lt;br /&gt;
[[File:Reddwarf-overview.gv.jpeg]]&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;/div&gt;</summary>
		<author><name>Vipuls</name></author>	</entry>

	<entry>
		<id>https://wiki.openstack.org/w/index.php?title=Trove/trove-diagrams&amp;diff=26822</id>
		<title>Trove/trove-diagrams</title>
		<link rel="alternate" type="text/html" href="https://wiki.openstack.org/w/index.php?title=Trove/trove-diagrams&amp;diff=26822"/>
				<updated>2013-07-24T18:43:16Z</updated>
		
		<summary type="html">&lt;p&gt;Vipuls: Vipuls moved page Reddwarf-Diagrams to Trove/trove-diagrams&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Reddwarf Instance Status-Action Transition Diagram&amp;lt;br /&amp;gt;&lt;br /&gt;
[[File:Reddwarf_commands_fsm.pdf]]&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
Reddwarf Instance Status Makeup&amp;lt;br /&amp;gt;&lt;br /&gt;
[[File:Reddwarf_instance_status.pdf]]&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
Reddwarf System Overview&amp;lt;br /&amp;gt;&lt;br /&gt;
[[File:Reddwarf-overview.gv.jpeg]]&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;/div&gt;</summary>
		<author><name>Vipuls</name></author>	</entry>

	<entry>
		<id>https://wiki.openstack.org/w/index.php?title=Reddwarf-Diagrams&amp;diff=26823</id>
		<title>Reddwarf-Diagrams</title>
		<link rel="alternate" type="text/html" href="https://wiki.openstack.org/w/index.php?title=Reddwarf-Diagrams&amp;diff=26823"/>
				<updated>2013-07-24T18:43:16Z</updated>
		
		<summary type="html">&lt;p&gt;Vipuls: Vipuls moved page Reddwarf-Diagrams to Trove/trove-diagrams&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;#REDIRECT [[Trove/trove-diagrams]]&lt;/div&gt;</summary>
		<author><name>Vipuls</name></author>	</entry>

	<entry>
		<id>https://wiki.openstack.org/w/index.php?title=Trove/trove-notifications&amp;diff=26821</id>
		<title>Trove/trove-notifications</title>
		<link rel="alternate" type="text/html" href="https://wiki.openstack.org/w/index.php?title=Trove/trove-notifications&amp;diff=26821"/>
				<updated>2013-07-24T18:42:47Z</updated>
		
		<summary type="html">&lt;p&gt;Vipuls: /* Task Manager Events */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Trove Notifications ==&lt;br /&gt;
&lt;br /&gt;
Trove will emit events for resources as they are manipulated.  These events can be used to meter the service and possibly used to calculate bills.&lt;br /&gt;
&lt;br /&gt;
== Task Manager Events ==&lt;br /&gt;
&lt;br /&gt;
Trove taskmanager is responsible for dispatching tasks and sending notification events. Here is a typical example:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
    from trove.openstack.common.notifier import api as notifier&lt;br /&gt;
    from trove.openstack.common import timeutils&lt;br /&gt;
    class NotifyMixin(object):&lt;br /&gt;
        &amp;quot;&amp;quot;&amp;quot;Notification Mixin&lt;br /&gt;
        This adds the ability to send usage events to an Instance object.&lt;br /&gt;
         &amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
        def send_usage_event(self, event_type, **kwargs):&lt;br /&gt;
            event_type = 'trove.instance.%s' % event_type&lt;br /&gt;
            publisher_id = CONF.host&lt;br /&gt;
            # Grab the instance size from the kwargs or from the nova client&lt;br /&gt;
            instance_size = kwargs.pop('instance_size', None)&lt;br /&gt;
            if instance_size is None:&lt;br /&gt;
                flavor = self.nova_client.flavors.get(self.flavor_id)&lt;br /&gt;
                instance_size = flavor.ram&lt;br /&gt;
            # Default payload&lt;br /&gt;
            created_time = timeutils.isotime(self.db_info.created)&lt;br /&gt;
            payload = {&lt;br /&gt;
                'instance_size': instance_size,&lt;br /&gt;
                'tenant_id': self.tenant_id,&lt;br /&gt;
                'instance_id': self.id,&lt;br /&gt;
                'instance_name': self.name,&lt;br /&gt;
                'created_at': created_time,&lt;br /&gt;
                'launched_at': created_time,&lt;br /&gt;
                'nova_instance_id': self.server_id,&lt;br /&gt;
            }&lt;br /&gt;
            if CONF.trove_volume_support:&lt;br /&gt;
                payload.update({&lt;br /&gt;
                    'volume_size': self.volume_size,&lt;br /&gt;
                    'nova_volume_id': self.volume_id&lt;br /&gt;
                })&lt;br /&gt;
            # Update payload with all other kwargs&lt;br /&gt;
            payload.update(kwargs)&lt;br /&gt;
            notifier.notify(self.context, publisher_id, event_type, 'INFO',&lt;br /&gt;
                                payload)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Create Event ===&lt;br /&gt;
&lt;br /&gt;
Create Events are emitted when a resource is created:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;self.send_usage_event('create', instance_size=flavor_ram)&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Sample Message:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
      'event_type': 'trove.instance.create',&lt;br /&gt;
      'instance_size': 512,&lt;br /&gt;
      'tenant_id': &amp;lt;UUID&amp;gt;,&lt;br /&gt;
      'instance_id': &amp;lt;UUID&amp;gt;,&lt;br /&gt;
      'instance_name': 'MyDB,&lt;br /&gt;
      'created_at': UTCDATE,&lt;br /&gt;
      'launched_at': UTCDATE,&lt;br /&gt;
      'nova_instance_id': &amp;lt;UUID&amp;gt;,&lt;br /&gt;
      'volume_size': 1,&lt;br /&gt;
      'nova_volume_id': &amp;lt;UUID&amp;gt;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Modify Volume Size ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;self.send_usage_event('modify_volume', launched_at=timeutils.isotime(), modify_at=timeutils.isotime(), volume_size=new_size)&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Sample::&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
      'event_type': 'trove.instance.modify_volume',&lt;br /&gt;
      'instance_size': 512,&lt;br /&gt;
      'tenant_id': &amp;lt;UUID&amp;gt;,&lt;br /&gt;
      'instance_id': &amp;lt;UUID&amp;gt;,&lt;br /&gt;
      'instance_name': 'MyDB,&lt;br /&gt;
      'created_at': UTCDATE,&lt;br /&gt;
      'launched_at': UTCDATE,&lt;br /&gt;
      'modify_at': UTCDATE,&lt;br /&gt;
      'nova_instance_id': &amp;lt;UUID&amp;gt;,&lt;br /&gt;
      'volume_size': 2,&lt;br /&gt;
      'nova_volume_id': &amp;lt;UUID&amp;gt;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Modify Size (Resize) ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;self.instance.send_usage_event('modify_flavor', instance_size=self.new_memory_size, launched_at=timeutils.isotime(), modify_at=timeutils.isotime())&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Sample::&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
      'event_type': 'trove.instance.modify_flavor',&lt;br /&gt;
      'instance_size': 1024,&lt;br /&gt;
      'tenant_id': &amp;lt;UUID&amp;gt;,&lt;br /&gt;
      'instance_id': &amp;lt;UUID&amp;gt;,&lt;br /&gt;
      'instance_name': 'MyDB,&lt;br /&gt;
      'created_at': UTCDATE,&lt;br /&gt;
      'launched_at': UTCDATE,&lt;br /&gt;
      'modify_at': UTCDATE,&lt;br /&gt;
      'nova_instance_id': &amp;lt;UUID&amp;gt;,&lt;br /&gt;
      'volume_size': 2,&lt;br /&gt;
      'nova_volume_id': &amp;lt;UUID&amp;gt;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Delete Event ===&lt;br /&gt;
&lt;br /&gt;
Delete Events are emitted when a resource is deleted:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;self.send_usage_event('delete', deleted_at=timeutils.isotime())&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Sample:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
      'event_type': 'trove.instance.delete',&lt;br /&gt;
      'instance_size': 1024,&lt;br /&gt;
      'tenant_id': &amp;lt;UUID&amp;gt;,&lt;br /&gt;
      'instance_id': &amp;lt;UUID&amp;gt;,&lt;br /&gt;
      'instance_name': 'MyDB,&lt;br /&gt;
      'created_at': UTCDATE,&lt;br /&gt;
      'launched_at': UTCDATE,&lt;br /&gt;
      'deleted_at': UTCDATE,&lt;br /&gt;
      'nova_instance_id': &amp;lt;UUID&amp;gt;,&lt;br /&gt;
      'volume_size': 2,&lt;br /&gt;
      'nova_volume_id': &amp;lt;UUID&amp;gt;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Exists Event ===&lt;br /&gt;
&lt;br /&gt;
Exists Events are emitted periodically signifying that the resource exists.&lt;br /&gt;
&lt;br /&gt;
Sample:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
{     &lt;br /&gt;
      'event_type': 'trove.instance.exists',&lt;br /&gt;
      'instance_size': 512,&lt;br /&gt;
      'tenant_id': &amp;lt;UUID&amp;gt;,&lt;br /&gt;
      'instance_id': &amp;lt;UUID&amp;gt;,&lt;br /&gt;
      'instance_name': 'MyDB',&lt;br /&gt;
      'created_at': UTCDATE,&lt;br /&gt;
      'launched_at': UTCDATE,&lt;br /&gt;
      'nova_instance_id': &amp;lt;UUID&amp;gt;,&lt;br /&gt;
      'volume_size': 1,&lt;br /&gt;
      'nova_volume_id': &amp;lt;UUID&amp;gt;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Vipuls</name></author>	</entry>

	<entry>
		<id>https://wiki.openstack.org/w/index.php?title=Trove/trove-notifications&amp;diff=26820</id>
		<title>Trove/trove-notifications</title>
		<link rel="alternate" type="text/html" href="https://wiki.openstack.org/w/index.php?title=Trove/trove-notifications&amp;diff=26820"/>
				<updated>2013-07-24T18:42:14Z</updated>
		
		<summary type="html">&lt;p&gt;Vipuls: /* Reddwarf Notifications */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Trove Notifications ==&lt;br /&gt;
&lt;br /&gt;
Trove will emit events for resources as they are manipulated.  These events can be used to meter the service and possibly used to calculate bills.&lt;br /&gt;
&lt;br /&gt;
== Task Manager Events ==&lt;br /&gt;
&lt;br /&gt;
Reddwarf taskmanager is responsible for dispatching tasks and sending notification events. Here is a typical example:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
    from reddwarf.openstack.common.notifier import api as notifier&lt;br /&gt;
    from reddwarf.openstack.common import timeutils&lt;br /&gt;
    class NotifyMixin(object):&lt;br /&gt;
        &amp;quot;&amp;quot;&amp;quot;Notification Mixin&lt;br /&gt;
        This adds the ability to send usage events to an Instance object.&lt;br /&gt;
         &amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
        def send_usage_event(self, event_type, **kwargs):&lt;br /&gt;
            event_type = 'reddwarf.instance.%s' % event_type&lt;br /&gt;
            publisher_id = CONF.host&lt;br /&gt;
            # Grab the instance size from the kwargs or from the nova client&lt;br /&gt;
            instance_size = kwargs.pop('instance_size', None)&lt;br /&gt;
            if instance_size is None:&lt;br /&gt;
                flavor = self.nova_client.flavors.get(self.flavor_id)&lt;br /&gt;
                instance_size = flavor.ram&lt;br /&gt;
            # Default payload&lt;br /&gt;
            created_time = timeutils.isotime(self.db_info.created)&lt;br /&gt;
            payload = {&lt;br /&gt;
                'instance_size': instance_size,&lt;br /&gt;
                'tenant_id': self.tenant_id,&lt;br /&gt;
                'instance_id': self.id,&lt;br /&gt;
                'instance_name': self.name,&lt;br /&gt;
                'created_at': created_time,&lt;br /&gt;
                'launched_at': created_time,&lt;br /&gt;
                'nova_instance_id': self.server_id,&lt;br /&gt;
            }&lt;br /&gt;
            if CONF.reddwarf_volume_support:&lt;br /&gt;
                payload.update({&lt;br /&gt;
                    'volume_size': self.volume_size,&lt;br /&gt;
                    'nova_volume_id': self.volume_id&lt;br /&gt;
                })&lt;br /&gt;
            # Update payload with all other kwargs&lt;br /&gt;
            payload.update(kwargs)&lt;br /&gt;
            notifier.notify(self.context, publisher_id, event_type, 'INFO',&lt;br /&gt;
                                payload)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Create Event ===&lt;br /&gt;
&lt;br /&gt;
Create Events are emitted when a resource is created:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;self.send_usage_event('create', instance_size=flavor_ram)&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Sample Message:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
      'event_type': 'reddwarf.instance.create',&lt;br /&gt;
      'instance_size': 512,&lt;br /&gt;
      'tenant_id': &amp;lt;UUID&amp;gt;,&lt;br /&gt;
      'instance_id': &amp;lt;UUID&amp;gt;,&lt;br /&gt;
      'instance_name': 'MyDB,&lt;br /&gt;
      'created_at': UTCDATE,&lt;br /&gt;
      'launched_at': UTCDATE,&lt;br /&gt;
      'nova_instance_id': &amp;lt;UUID&amp;gt;,&lt;br /&gt;
      'volume_size': 1,&lt;br /&gt;
      'nova_volume_id': &amp;lt;UUID&amp;gt;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Modify Volume Size ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;self.send_usage_event('modify_volume', launched_at=timeutils.isotime(), modify_at=timeutils.isotime(), volume_size=new_size)&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Sample::&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
      'event_type': 'reddwarf.instance.modify_volume',&lt;br /&gt;
      'instance_size': 512,&lt;br /&gt;
      'tenant_id': &amp;lt;UUID&amp;gt;,&lt;br /&gt;
      'instance_id': &amp;lt;UUID&amp;gt;,&lt;br /&gt;
      'instance_name': 'MyDB,&lt;br /&gt;
      'created_at': UTCDATE,&lt;br /&gt;
      'launched_at': UTCDATE,&lt;br /&gt;
      'modify_at': UTCDATE,&lt;br /&gt;
      'nova_instance_id': &amp;lt;UUID&amp;gt;,&lt;br /&gt;
      'volume_size': 2,&lt;br /&gt;
      'nova_volume_id': &amp;lt;UUID&amp;gt;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Modify Size (Resize) ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;self.instance.send_usage_event('modify_flavor', instance_size=self.new_memory_size, launched_at=timeutils.isotime(), modify_at=timeutils.isotime())&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Sample::&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
      'event_type': 'reddwarf.instance.modify_flavor',&lt;br /&gt;
      'instance_size': 1024,&lt;br /&gt;
      'tenant_id': &amp;lt;UUID&amp;gt;,&lt;br /&gt;
      'instance_id': &amp;lt;UUID&amp;gt;,&lt;br /&gt;
      'instance_name': 'MyDB,&lt;br /&gt;
      'created_at': UTCDATE,&lt;br /&gt;
      'launched_at': UTCDATE,&lt;br /&gt;
      'modify_at': UTCDATE,&lt;br /&gt;
      'nova_instance_id': &amp;lt;UUID&amp;gt;,&lt;br /&gt;
      'volume_size': 2,&lt;br /&gt;
      'nova_volume_id': &amp;lt;UUID&amp;gt;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Delete Event ===&lt;br /&gt;
&lt;br /&gt;
Delete Events are emitted when a resource is deleted:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;self.send_usage_event('delete', deleted_at=timeutils.isotime())&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Sample:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
      'event_type': 'reddwarf.instance.delete',&lt;br /&gt;
      'instance_size': 1024,&lt;br /&gt;
      'tenant_id': &amp;lt;UUID&amp;gt;,&lt;br /&gt;
      'instance_id': &amp;lt;UUID&amp;gt;,&lt;br /&gt;
      'instance_name': 'MyDB,&lt;br /&gt;
      'created_at': UTCDATE,&lt;br /&gt;
      'launched_at': UTCDATE,&lt;br /&gt;
      'deleted_at': UTCDATE,&lt;br /&gt;
      'nova_instance_id': &amp;lt;UUID&amp;gt;,&lt;br /&gt;
      'volume_size': 2,&lt;br /&gt;
      'nova_volume_id': &amp;lt;UUID&amp;gt;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Exists Event ===&lt;br /&gt;
&lt;br /&gt;
Exists Events are emitted periodically signifying that the resource exists.&lt;br /&gt;
&lt;br /&gt;
Sample:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
{     &lt;br /&gt;
      'event_type': 'reddwarf.instance.exists',&lt;br /&gt;
      'instance_size': 512,&lt;br /&gt;
      'tenant_id': &amp;lt;UUID&amp;gt;,&lt;br /&gt;
      'instance_id': &amp;lt;UUID&amp;gt;,&lt;br /&gt;
      'instance_name': 'MyDB',&lt;br /&gt;
      'created_at': UTCDATE,&lt;br /&gt;
      'launched_at': UTCDATE,&lt;br /&gt;
      'nova_instance_id': &amp;lt;UUID&amp;gt;,&lt;br /&gt;
      'volume_size': 1,&lt;br /&gt;
      'nova_volume_id': &amp;lt;UUID&amp;gt;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Vipuls</name></author>	</entry>

	<entry>
		<id>https://wiki.openstack.org/w/index.php?title=Trove/trove-notifications&amp;diff=26818</id>
		<title>Trove/trove-notifications</title>
		<link rel="alternate" type="text/html" href="https://wiki.openstack.org/w/index.php?title=Trove/trove-notifications&amp;diff=26818"/>
				<updated>2013-07-24T18:41:53Z</updated>
		
		<summary type="html">&lt;p&gt;Vipuls: Vipuls moved page Reddwarf-notifications to Trove/trove-notifications&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Reddwarf Notifications ==&lt;br /&gt;
&lt;br /&gt;
Reddwarf will emit events for resources as they are manipulated.  These events can be used to meter the service and possibly used to calculate bills.&lt;br /&gt;
&lt;br /&gt;
== Task Manager Events ==&lt;br /&gt;
&lt;br /&gt;
Reddwarf taskmanager is responsible for dispatching tasks and sending notification events. Here is a typical example:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
    from reddwarf.openstack.common.notifier import api as notifier&lt;br /&gt;
    from reddwarf.openstack.common import timeutils&lt;br /&gt;
    class NotifyMixin(object):&lt;br /&gt;
        &amp;quot;&amp;quot;&amp;quot;Notification Mixin&lt;br /&gt;
        This adds the ability to send usage events to an Instance object.&lt;br /&gt;
         &amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
        def send_usage_event(self, event_type, **kwargs):&lt;br /&gt;
            event_type = 'reddwarf.instance.%s' % event_type&lt;br /&gt;
            publisher_id = CONF.host&lt;br /&gt;
            # Grab the instance size from the kwargs or from the nova client&lt;br /&gt;
            instance_size = kwargs.pop('instance_size', None)&lt;br /&gt;
            if instance_size is None:&lt;br /&gt;
                flavor = self.nova_client.flavors.get(self.flavor_id)&lt;br /&gt;
                instance_size = flavor.ram&lt;br /&gt;
            # Default payload&lt;br /&gt;
            created_time = timeutils.isotime(self.db_info.created)&lt;br /&gt;
            payload = {&lt;br /&gt;
                'instance_size': instance_size,&lt;br /&gt;
                'tenant_id': self.tenant_id,&lt;br /&gt;
                'instance_id': self.id,&lt;br /&gt;
                'instance_name': self.name,&lt;br /&gt;
                'created_at': created_time,&lt;br /&gt;
                'launched_at': created_time,&lt;br /&gt;
                'nova_instance_id': self.server_id,&lt;br /&gt;
            }&lt;br /&gt;
            if CONF.reddwarf_volume_support:&lt;br /&gt;
                payload.update({&lt;br /&gt;
                    'volume_size': self.volume_size,&lt;br /&gt;
                    'nova_volume_id': self.volume_id&lt;br /&gt;
                })&lt;br /&gt;
            # Update payload with all other kwargs&lt;br /&gt;
            payload.update(kwargs)&lt;br /&gt;
            notifier.notify(self.context, publisher_id, event_type, 'INFO',&lt;br /&gt;
                                payload)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Create Event ===&lt;br /&gt;
&lt;br /&gt;
Create Events are emitted when a resource is created:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;self.send_usage_event('create', instance_size=flavor_ram)&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Sample Message:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
      'event_type': 'reddwarf.instance.create',&lt;br /&gt;
      'instance_size': 512,&lt;br /&gt;
      'tenant_id': &amp;lt;UUID&amp;gt;,&lt;br /&gt;
      'instance_id': &amp;lt;UUID&amp;gt;,&lt;br /&gt;
      'instance_name': 'MyDB,&lt;br /&gt;
      'created_at': UTCDATE,&lt;br /&gt;
      'launched_at': UTCDATE,&lt;br /&gt;
      'nova_instance_id': &amp;lt;UUID&amp;gt;,&lt;br /&gt;
      'volume_size': 1,&lt;br /&gt;
      'nova_volume_id': &amp;lt;UUID&amp;gt;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Modify Volume Size ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;self.send_usage_event('modify_volume', launched_at=timeutils.isotime(), modify_at=timeutils.isotime(), volume_size=new_size)&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Sample::&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
      'event_type': 'reddwarf.instance.modify_volume',&lt;br /&gt;
      'instance_size': 512,&lt;br /&gt;
      'tenant_id': &amp;lt;UUID&amp;gt;,&lt;br /&gt;
      'instance_id': &amp;lt;UUID&amp;gt;,&lt;br /&gt;
      'instance_name': 'MyDB,&lt;br /&gt;
      'created_at': UTCDATE,&lt;br /&gt;
      'launched_at': UTCDATE,&lt;br /&gt;
      'modify_at': UTCDATE,&lt;br /&gt;
      'nova_instance_id': &amp;lt;UUID&amp;gt;,&lt;br /&gt;
      'volume_size': 2,&lt;br /&gt;
      'nova_volume_id': &amp;lt;UUID&amp;gt;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Modify Size (Resize) ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;self.instance.send_usage_event('modify_flavor', instance_size=self.new_memory_size, launched_at=timeutils.isotime(), modify_at=timeutils.isotime())&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Sample::&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
      'event_type': 'reddwarf.instance.modify_flavor',&lt;br /&gt;
      'instance_size': 1024,&lt;br /&gt;
      'tenant_id': &amp;lt;UUID&amp;gt;,&lt;br /&gt;
      'instance_id': &amp;lt;UUID&amp;gt;,&lt;br /&gt;
      'instance_name': 'MyDB,&lt;br /&gt;
      'created_at': UTCDATE,&lt;br /&gt;
      'launched_at': UTCDATE,&lt;br /&gt;
      'modify_at': UTCDATE,&lt;br /&gt;
      'nova_instance_id': &amp;lt;UUID&amp;gt;,&lt;br /&gt;
      'volume_size': 2,&lt;br /&gt;
      'nova_volume_id': &amp;lt;UUID&amp;gt;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Delete Event ===&lt;br /&gt;
&lt;br /&gt;
Delete Events are emitted when a resource is deleted:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;self.send_usage_event('delete', deleted_at=timeutils.isotime())&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Sample:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
      'event_type': 'reddwarf.instance.delete',&lt;br /&gt;
      'instance_size': 1024,&lt;br /&gt;
      'tenant_id': &amp;lt;UUID&amp;gt;,&lt;br /&gt;
      'instance_id': &amp;lt;UUID&amp;gt;,&lt;br /&gt;
      'instance_name': 'MyDB,&lt;br /&gt;
      'created_at': UTCDATE,&lt;br /&gt;
      'launched_at': UTCDATE,&lt;br /&gt;
      'deleted_at': UTCDATE,&lt;br /&gt;
      'nova_instance_id': &amp;lt;UUID&amp;gt;,&lt;br /&gt;
      'volume_size': 2,&lt;br /&gt;
      'nova_volume_id': &amp;lt;UUID&amp;gt;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Exists Event ===&lt;br /&gt;
&lt;br /&gt;
Exists Events are emitted periodically signifying that the resource exists.&lt;br /&gt;
&lt;br /&gt;
Sample:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
{     &lt;br /&gt;
      'event_type': 'reddwarf.instance.exists',&lt;br /&gt;
      'instance_size': 512,&lt;br /&gt;
      'tenant_id': &amp;lt;UUID&amp;gt;,&lt;br /&gt;
      'instance_id': &amp;lt;UUID&amp;gt;,&lt;br /&gt;
      'instance_name': 'MyDB',&lt;br /&gt;
      'created_at': UTCDATE,&lt;br /&gt;
      'launched_at': UTCDATE,&lt;br /&gt;
      'nova_instance_id': &amp;lt;UUID&amp;gt;,&lt;br /&gt;
      'volume_size': 1,&lt;br /&gt;
      'nova_volume_id': &amp;lt;UUID&amp;gt;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Vipuls</name></author>	</entry>

	<entry>
		<id>https://wiki.openstack.org/w/index.php?title=Reddwarf-notifications&amp;diff=26819</id>
		<title>Reddwarf-notifications</title>
		<link rel="alternate" type="text/html" href="https://wiki.openstack.org/w/index.php?title=Reddwarf-notifications&amp;diff=26819"/>
				<updated>2013-07-24T18:41:53Z</updated>
		
		<summary type="html">&lt;p&gt;Vipuls: Vipuls moved page Reddwarf-notifications to Trove/trove-notifications&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;#REDIRECT [[Trove/trove-notifications]]&lt;/div&gt;</summary>
		<author><name>Vipuls</name></author>	</entry>

	<entry>
		<id>https://wiki.openstack.org/w/index.php?title=Trove&amp;diff=26817</id>
		<title>Trove</title>
		<link rel="alternate" type="text/html" href="https://wiki.openstack.org/w/index.php?title=Trove&amp;diff=26817"/>
				<updated>2013-07-24T18:41:34Z</updated>
		
		<summary type="html">&lt;p&gt;Vipuls: /* Development */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Mission Statement =&lt;br /&gt;
The OpenStack Open Source Database as a Service Mission: To provide scalable and reliable Cloud Database as a Service functionality for both relational and non-relational database engines, and to continue to improve its fully-featured and extensible open source framework.&lt;br /&gt;
&lt;br /&gt;
= Description =&lt;br /&gt;
Trove is Database as a Service for Openstack.  It's designed to run entirely on [[OpenStack]], with the goal of allowing users to quickly and easily utilize the features of a relational database without the burden of handling complex administrative tasks.  Cloud users and database administrators can provision and manage multiple database instances as needed. Initially, the service will focus on providing resource isolation at high performance while automating complex administrative tasks including deployment, configuration, patching, backups, restores, and monitoring.&lt;br /&gt;
&lt;br /&gt;
= Design =&lt;br /&gt;
Trove is designed to support a single-tenant database within a Nova instance.  There will be no restrictions on how Nova is configured, since Trove interacts with other [[OpenStack]] components purely through the API.&lt;br /&gt;
&lt;br /&gt;
== trove-api ==&lt;br /&gt;
The '''trove-api''' service provides a RESTful API that supports JSON and XML to provision and manage Trove instances. &lt;br /&gt;
* A REST-ful component&lt;br /&gt;
* Entry point - Trove/bin/trove-api&lt;br /&gt;
* Uses a WSGI launcher configured by Trove/etc/trove/api-paste.ini&lt;br /&gt;
** Defines the pipeline of filters; tokenauth, ratelimit, etc.&lt;br /&gt;
** Defines the app_factory for the troveapp as trove.common.api:app_factory&lt;br /&gt;
* The API class (a wsgi Router) wires the REST paths to the appropriate Controllers&lt;br /&gt;
** Implementation of the Controllers are under the relevant module (versions/instance/flavor/limits), in the service.py module&lt;br /&gt;
* Controllers usually redirect implementation to a class in the models.py module&lt;br /&gt;
* At this point, an api module of another component (TaskManager, GuestAgent, etc.) is used to send the request onwards through RabbitMQ&lt;br /&gt;
&lt;br /&gt;
== trove-taskmanager ==&lt;br /&gt;
The '''trove-taskmanager''' service does the heavy lifting as far as provisioning instances, managing the lifecycle of instances, and performing operations on the Database instance.&lt;br /&gt;
* A service that listens on a RabbitMQ topic&lt;br /&gt;
* Entry point - Trove/bin/trove-taskmanager&lt;br /&gt;
* Runs as a RpcService configured by Trove/etc/trove/trove-taskmanager.conf.sample which defines trove.taskmanager.manager.Manager as the manager - basically this is the entry point for requests arriving through the queue&lt;br /&gt;
* As described above, requests for this component are pushed to MQ from another component using the TaskManager's api module using _cast() or _call() (sync/a-sync) and putting the method's name as a parameter&lt;br /&gt;
* Trove/openstack/common/rpc/dispatcher.py- RpcDispatcher.dispatch() invokes the proper method in the Manager by some equivalent to reflection&lt;br /&gt;
* The Manager then redirect the handling to an object from the models.py module. It loads an object from the relevant class with the context  and instance_id&lt;br /&gt;
* Actual handling is usually done in the models.py module&lt;br /&gt;
&lt;br /&gt;
== trove-guestagent ==&lt;br /&gt;
The '''guestagent''' is a service that runs within the guest instance, responsible for managing and performing operations on the Database itself.  The Guest Agent listens for RPC messages through the message bus and performs the requested operation.&lt;br /&gt;
* Similar to TaskManager in the sense of running as a service that listens on a RabbitMQ topic&lt;br /&gt;
* GuestAgent runs on every DB instance, and a dedicated MQ topic is used (identified as the instance's id)&lt;br /&gt;
* Entry point - Trove/bin/trove-guestagent&lt;br /&gt;
* Runs as a RpcService configured by Trove/etc/trove/trove-guestagent.conf.sample which defines trove.guestagent.manager.Manager as the manager - basically this is the entry point for requests arriving through the queue&lt;br /&gt;
* As described above, requests for this component are pushed to MQ from another component using the GuestAgent's api module using _cast() or _call() (sync/a-sync) and putting the method's name as a parameter&lt;br /&gt;
* Trove/openstack/common/rpc/dispatcher.py- RpcDispatcher.dispatch() invokes the proper method in the Manager by some equivalent to reflection&lt;br /&gt;
* The Manager then redirect the handling to an object (usually) from the dbaas.py module.&lt;br /&gt;
* Actual handling is usually done in the dbaas.py module&lt;br /&gt;
&lt;br /&gt;
== Source Code Repositories ==&lt;br /&gt;
* Trove Server (https://github.com/openstack/trove)&lt;br /&gt;
* Trove Integration (https://github.com/openstack/trove-integration)&lt;br /&gt;
* Trove Client (https://github.com/openstack/python-troveclient)&lt;br /&gt;
&lt;br /&gt;
= Installation and Deployment =&lt;br /&gt;
* How to install trove as part of devstack: [[trove/installation]]&lt;br /&gt;
* How to set up a testing environment and run redstack tests after installation: [[trove/integration-testing]]&lt;br /&gt;
* How to set up your Mac dev environment to debug: [[trove/dev-env]]&lt;br /&gt;
* Releasing python-troveclient [[trove/release-python-troveclient]]&lt;br /&gt;
&lt;br /&gt;
= Development =&lt;br /&gt;
* Quota Management is currently in development: [[trove/trove-quotas]]&lt;br /&gt;
* Security Groups is currently in design/development: [[trove/trove-security-groups]]&lt;br /&gt;
* Snapshot Design: [[trove/snapshot-design]]&lt;br /&gt;
* Versions and Types Design: [[trove/trove-versions-types]]&lt;br /&gt;
* Configuration Edits: [[Trove/Configurations]]&lt;br /&gt;
* Notification Events: [[trove/trove-notifications]]&lt;br /&gt;
* Diagrams: [[trove/trove-Diagrams]]&lt;/div&gt;</summary>
		<author><name>Vipuls</name></author>	</entry>

	<entry>
		<id>https://wiki.openstack.org/w/index.php?title=Trove/trove-security-groups&amp;diff=26816</id>
		<title>Trove/trove-security-groups</title>
		<link rel="alternate" type="text/html" href="https://wiki.openstack.org/w/index.php?title=Trove/trove-security-groups&amp;diff=26816"/>
				<updated>2013-07-24T18:40:55Z</updated>
		
		<summary type="html">&lt;p&gt;Vipuls: /* Security Groups for RedDwarf */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
= Security Groups for [[Trove]] =&lt;br /&gt;
== Brief Overview ==&lt;br /&gt;
&lt;br /&gt;
End users don't currently have a way to configure Security Groups and Security Group Rules on [[Trove]] guest instances. We propose creating a simple implementation of Security Group Rules on the basis of the following guidelines:&lt;br /&gt;
&lt;br /&gt;
# This functionality will be implemented as an extension to [[Trove]] (paralleling the Security Groups implementation as an extension in Nova).&lt;br /&gt;
# We will create a new security group for every guest instance created, such that there is a 1-1 mapping between the security group and the guest instance.&lt;br /&gt;
# Users will not be able to manage these security groups directly, but we will extend the [[Trove]] API so that they will be able to add and delete rules from this security group.&lt;br /&gt;
&lt;br /&gt;
This design allows for a simple starting implementation that is extensible to provide further advanced functionality as deemed necessary.&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== Extension to [[Trove]] API ==&lt;br /&gt;
&lt;br /&gt;
The extended [[Trove]] API would look something like:&lt;br /&gt;
&lt;br /&gt;
1. GET /security-groups: &lt;br /&gt;
:List all of the security Groups, with details of which instances they are attached to.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
2. GET /security-groups-rules/{secgroup-id}: &lt;br /&gt;
&lt;br /&gt;
:List details of the specific security group with id {secgroup_id} including which instance it is attached to and details of the security group rules that it contains.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
3. POST /security-group-rules: &lt;br /&gt;
:This would take information about the security group, and the rule in the POST body and would create a security group rule within the specified security group.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
4. DELETE /security-group-rules/{sec-group-rule-id}: &lt;br /&gt;
:Deletes a security group rule corresponding to {sec-group-rule-id}&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== Implementation Note - Security Groups as an extension  ==&lt;br /&gt;
Since security groups in nova is implemented as an extension, we will also implement security groups in Trove as an extension. This extension will be installable if needed and ideally should be able to be toggled on/off depending on the requirements. &lt;br /&gt;
&lt;br /&gt;
We're currently taking a look at Stevedore (https://github.com/dreamhost/stevedore) to see if we can leverage its dynamic plugin model to achieve this goal.  &lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== Future Scenarios ==&lt;br /&gt;
&lt;br /&gt;
Note that the initial avatar of the implementation that this blueprint calls for is but the simple implementation mentioned above but one can extend this further to provide for the following:&lt;br /&gt;
&lt;br /&gt;
# A separate API for end users to be able to create, delete and manage their own security groups so that it is possible for instances to share security groups.&lt;br /&gt;
# An API for a default set of rules (per tenant) so that any security groups that we create are pre-populated with these intelligent defaults.&lt;br /&gt;
# With some further work, group security group rules can also be implemented (similar to nova's implementation).&lt;/div&gt;</summary>
		<author><name>Vipuls</name></author>	</entry>

	<entry>
		<id>https://wiki.openstack.org/w/index.php?title=Trove/trove-security-groups&amp;diff=26814</id>
		<title>Trove/trove-security-groups</title>
		<link rel="alternate" type="text/html" href="https://wiki.openstack.org/w/index.php?title=Trove/trove-security-groups&amp;diff=26814"/>
				<updated>2013-07-24T18:39:54Z</updated>
		
		<summary type="html">&lt;p&gt;Vipuls: Vipuls moved page Reddwarf-security-groups to Trove/trove-security-groups&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
= Security Groups for [[RedDwarf]] =&lt;br /&gt;
== Brief Overview ==&lt;br /&gt;
&lt;br /&gt;
End users don't currently have a way to configure Security Groups and Security Group Rules on [[RedDwarf]] guest instances. We propose creating a simple implementation of Security Group Rules on the basis of the following guidelines:&lt;br /&gt;
&lt;br /&gt;
# This functionality will be implemented as an extension to [[RedDwarf]] (paralleling the Security Groups implementation as an extension in Nova).&lt;br /&gt;
# We will create a new security group for every guest instance created, such that there is a 1-1 mapping between the security group and the guest instance.&lt;br /&gt;
# Users will not be able to manage these security groups directly, but we will extend the [[RedDwarf]] API so that they will be able to add and delete rules from this security group.&lt;br /&gt;
&lt;br /&gt;
This design allows for a simple starting implementation that is extensible to provide further advanced functionality as deemed necessary.&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== Extension to [[RedDwarf]] API ==&lt;br /&gt;
&lt;br /&gt;
The extended [[RedDwarf]] API would look something like:&lt;br /&gt;
&lt;br /&gt;
1. GET /security-groups: &lt;br /&gt;
:List all of the security Groups, with details of which instances they are attached to.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
2. GET /security-groups-rules/{secgroup-id}: &lt;br /&gt;
&lt;br /&gt;
:List details of the specific security group with id {secgroup_id} including which instance it is attached to and details of the security group rules that it contains.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
3. POST /security-group-rules: &lt;br /&gt;
:This would take information about the security group, and the rule in the POST body and would create a security group rule within the specified security group.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
4. DELETE /security-group-rules/{sec-group-rule-id}: &lt;br /&gt;
:Deletes a security group rule corresponding to {sec-group-rule-id}&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== Implementation Note - Security Groups as an extension  ==&lt;br /&gt;
Since security groups in nova is implemented as an extension, we will also implement security groups in Reddwarf as an extension. This extension will be installable if needed and ideally should be able to be toggled on/off depending on the requirements. &lt;br /&gt;
&lt;br /&gt;
We're currently taking a look at Stevedore (https://github.com/dreamhost/stevedore) to see if we can leverage its dynamic plugin model to achieve this goal.  &lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== Future Scenarios ==&lt;br /&gt;
&lt;br /&gt;
Note that the initial avatar of the implementation that this blueprint calls for is but the simple implementation mentioned above but one can extend this further to provide for the following:&lt;br /&gt;
&lt;br /&gt;
# A separate API for end users to be able to create, delete and manage their own security groups so that it is possible for instances to share security groups.&lt;br /&gt;
# An API for a default set of rules (per tenant) so that any security groups that we create are pre-populated with these intelligent defaults.&lt;br /&gt;
# With some further work, group security group rules can also be implemented (similar to nova's implementation).&lt;/div&gt;</summary>
		<author><name>Vipuls</name></author>	</entry>

	<entry>
		<id>https://wiki.openstack.org/w/index.php?title=Reddwarf-security-groups&amp;diff=26815</id>
		<title>Reddwarf-security-groups</title>
		<link rel="alternate" type="text/html" href="https://wiki.openstack.org/w/index.php?title=Reddwarf-security-groups&amp;diff=26815"/>
				<updated>2013-07-24T18:39:54Z</updated>
		
		<summary type="html">&lt;p&gt;Vipuls: Vipuls moved page Reddwarf-security-groups to Trove/trove-security-groups&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;#REDIRECT [[Trove/trove-security-groups]]&lt;/div&gt;</summary>
		<author><name>Vipuls</name></author>	</entry>

	<entry>
		<id>https://wiki.openstack.org/w/index.php?title=Trove&amp;diff=26813</id>
		<title>Trove</title>
		<link rel="alternate" type="text/html" href="https://wiki.openstack.org/w/index.php?title=Trove&amp;diff=26813"/>
				<updated>2013-07-24T18:39:17Z</updated>
		
		<summary type="html">&lt;p&gt;Vipuls: /* Development */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Mission Statement =&lt;br /&gt;
The OpenStack Open Source Database as a Service Mission: To provide scalable and reliable Cloud Database as a Service functionality for both relational and non-relational database engines, and to continue to improve its fully-featured and extensible open source framework.&lt;br /&gt;
&lt;br /&gt;
= Description =&lt;br /&gt;
Trove is Database as a Service for Openstack.  It's designed to run entirely on [[OpenStack]], with the goal of allowing users to quickly and easily utilize the features of a relational database without the burden of handling complex administrative tasks.  Cloud users and database administrators can provision and manage multiple database instances as needed. Initially, the service will focus on providing resource isolation at high performance while automating complex administrative tasks including deployment, configuration, patching, backups, restores, and monitoring.&lt;br /&gt;
&lt;br /&gt;
= Design =&lt;br /&gt;
Trove is designed to support a single-tenant database within a Nova instance.  There will be no restrictions on how Nova is configured, since Trove interacts with other [[OpenStack]] components purely through the API.&lt;br /&gt;
&lt;br /&gt;
== trove-api ==&lt;br /&gt;
The '''trove-api''' service provides a RESTful API that supports JSON and XML to provision and manage Trove instances. &lt;br /&gt;
* A REST-ful component&lt;br /&gt;
* Entry point - Trove/bin/trove-api&lt;br /&gt;
* Uses a WSGI launcher configured by Trove/etc/trove/api-paste.ini&lt;br /&gt;
** Defines the pipeline of filters; tokenauth, ratelimit, etc.&lt;br /&gt;
** Defines the app_factory for the troveapp as trove.common.api:app_factory&lt;br /&gt;
* The API class (a wsgi Router) wires the REST paths to the appropriate Controllers&lt;br /&gt;
** Implementation of the Controllers are under the relevant module (versions/instance/flavor/limits), in the service.py module&lt;br /&gt;
* Controllers usually redirect implementation to a class in the models.py module&lt;br /&gt;
* At this point, an api module of another component (TaskManager, GuestAgent, etc.) is used to send the request onwards through RabbitMQ&lt;br /&gt;
&lt;br /&gt;
== trove-taskmanager ==&lt;br /&gt;
The '''trove-taskmanager''' service does the heavy lifting as far as provisioning instances, managing the lifecycle of instances, and performing operations on the Database instance.&lt;br /&gt;
* A service that listens on a RabbitMQ topic&lt;br /&gt;
* Entry point - Trove/bin/trove-taskmanager&lt;br /&gt;
* Runs as a RpcService configured by Trove/etc/trove/trove-taskmanager.conf.sample which defines trove.taskmanager.manager.Manager as the manager - basically this is the entry point for requests arriving through the queue&lt;br /&gt;
* As described above, requests for this component are pushed to MQ from another component using the TaskManager's api module using _cast() or _call() (sync/a-sync) and putting the method's name as a parameter&lt;br /&gt;
* Trove/openstack/common/rpc/dispatcher.py- RpcDispatcher.dispatch() invokes the proper method in the Manager by some equivalent to reflection&lt;br /&gt;
* The Manager then redirect the handling to an object from the models.py module. It loads an object from the relevant class with the context  and instance_id&lt;br /&gt;
* Actual handling is usually done in the models.py module&lt;br /&gt;
&lt;br /&gt;
== trove-guestagent ==&lt;br /&gt;
The '''guestagent''' is a service that runs within the guest instance, responsible for managing and performing operations on the Database itself.  The Guest Agent listens for RPC messages through the message bus and performs the requested operation.&lt;br /&gt;
* Similar to TaskManager in the sense of running as a service that listens on a RabbitMQ topic&lt;br /&gt;
* GuestAgent runs on every DB instance, and a dedicated MQ topic is used (identified as the instance's id)&lt;br /&gt;
* Entry point - Trove/bin/trove-guestagent&lt;br /&gt;
* Runs as a RpcService configured by Trove/etc/trove/trove-guestagent.conf.sample which defines trove.guestagent.manager.Manager as the manager - basically this is the entry point for requests arriving through the queue&lt;br /&gt;
* As described above, requests for this component are pushed to MQ from another component using the GuestAgent's api module using _cast() or _call() (sync/a-sync) and putting the method's name as a parameter&lt;br /&gt;
* Trove/openstack/common/rpc/dispatcher.py- RpcDispatcher.dispatch() invokes the proper method in the Manager by some equivalent to reflection&lt;br /&gt;
* The Manager then redirect the handling to an object (usually) from the dbaas.py module.&lt;br /&gt;
* Actual handling is usually done in the dbaas.py module&lt;br /&gt;
&lt;br /&gt;
== Source Code Repositories ==&lt;br /&gt;
* Trove Server (https://github.com/openstack/trove)&lt;br /&gt;
* Trove Integration (https://github.com/openstack/trove-integration)&lt;br /&gt;
* Trove Client (https://github.com/openstack/python-troveclient)&lt;br /&gt;
&lt;br /&gt;
= Installation and Deployment =&lt;br /&gt;
* How to install trove as part of devstack: [[trove/installation]]&lt;br /&gt;
* How to set up a testing environment and run redstack tests after installation: [[trove/integration-testing]]&lt;br /&gt;
* How to set up your Mac dev environment to debug: [[trove/dev-env]]&lt;br /&gt;
* Releasing python-troveclient [[trove/release-python-troveclient]]&lt;br /&gt;
&lt;br /&gt;
= Development =&lt;br /&gt;
* Quota Management is currently in development: [[trove/trove-quotas]]&lt;br /&gt;
* Security Groups is currently in design/development: [[trove/trove-security-groups]]&lt;br /&gt;
* Snapshot Design: [[trove/snapshot-design]]&lt;br /&gt;
* Versions and Types Design: [[trove/trove-versions-types]]&lt;br /&gt;
* Configuration Edits: [[https://wiki.openstack.org/wiki/DatabaseAsAService/configurationediting]]&lt;br /&gt;
* Notification Events: [[trove/trove-notifications]]&lt;br /&gt;
* Diagrams: [[trove/trove-Diagrams]]&lt;/div&gt;</summary>
		<author><name>Vipuls</name></author>	</entry>

	<entry>
		<id>https://wiki.openstack.org/w/index.php?title=Trove/trove-versions-types&amp;diff=26809</id>
		<title>Trove/trove-versions-types</title>
		<link rel="alternate" type="text/html" href="https://wiki.openstack.org/w/index.php?title=Trove/trove-versions-types&amp;diff=26809"/>
				<updated>2013-07-24T18:38:39Z</updated>
		
		<summary type="html">&lt;p&gt;Vipuls: Vipuls moved page Reddwarf-versions-types to Trove/trove-versions-types&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Versions and DB Types ==&lt;br /&gt;
&lt;br /&gt;
=== List Supported Types and Versions (New Call) ===&lt;br /&gt;
&lt;br /&gt;
==== Use Case / User Story ====  &lt;br /&gt;
As a Reddwarf User, I want the ability to list all support database types and major versions, so that I know which types and versions are available to be provisioned.&lt;br /&gt;
&lt;br /&gt;
GET /types List supported instance types&lt;br /&gt;
&lt;br /&gt;
'''STATUS FIELDS'''&amp;lt;br /&amp;gt;&lt;br /&gt;
'''DEFAULT''' - This is the default database type.  If you do not specify a type when creating an instance, this is the default database type.&amp;lt;br /&amp;gt;&lt;br /&gt;
'''SUPPORTED''' - This is a supported database type.&amp;lt;br /&amp;gt;&lt;br /&gt;
'''UNSUPPORTED''' - This is an unsupported but available database type.&amp;lt;br /&amp;gt;&lt;br /&gt;
'''DEPRECATED''' - Deprecated instance types are no longer provisionable but are still supported.  You will not be able to create instances of this type.&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== API ====&lt;br /&gt;
'''Response Codes:''' 200&amp;lt;br /&amp;gt;&lt;br /&gt;
'''Error Codes:''' STD_ERR_CODES&amp;lt;br /&amp;gt;&lt;br /&gt;
'''Description:''' Returns the support instance types (major versions).  Example, MySQL 5.1, MySQL 5.5, Percona 5.5, MariaDB 5.5, etc.&amp;lt;br /&amp;gt;&lt;br /&gt;
'''Request Body:''' This operation does not require a request body.&amp;lt;br/&amp;gt;&lt;br /&gt;
'''Response:'''&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
    &amp;quot;types&amp;quot;: [&lt;br /&gt;
        {&lt;br /&gt;
            &amp;quot;id&amp;quot;: 1, &lt;br /&gt;
            &amp;quot;links&amp;quot;: [&lt;br /&gt;
                {&lt;br /&gt;
                    &amp;quot;href&amp;quot;: &amp;quot;https://service/v1.0/1234/types/2&amp;quot;, &lt;br /&gt;
                    &amp;quot;rel&amp;quot;: &amp;quot;self&amp;quot;&lt;br /&gt;
                }, &lt;br /&gt;
                {&lt;br /&gt;
                    &amp;quot;href&amp;quot;: &amp;quot;https://service/types/2&amp;quot;, &lt;br /&gt;
                    &amp;quot;rel&amp;quot;: &amp;quot;bookmark&amp;quot;&lt;br /&gt;
                }&lt;br /&gt;
            ], &lt;br /&gt;
            '''&amp;quot;name&amp;quot;: &amp;quot;MySQL 5.1&amp;quot;,&lt;br /&gt;
            &amp;quot;versions&amp;quot;: [&lt;br /&gt;
                {&lt;br /&gt;
                    &amp;quot;version&amp;quot;:&amp;quot;5.1.63&amp;quot;,&lt;br /&gt;
                    &amp;quot;description&amp;quot;:&amp;quot;Imperitive security updates included in this version.  Reccommend that you update&amp;quot;&lt;br /&gt;
                }&lt;br /&gt;
            ],&lt;br /&gt;
            &amp;quot;status&amp;quot;: &amp;quot;DEPRECATED&amp;quot;, &lt;br /&gt;
            &amp;quot;updated&amp;quot;: &amp;quot;2012-01-01T00:00:00Z&amp;quot;&lt;br /&gt;
            &amp;quot;description&amp;quot;:&amp;quot;Some description.&amp;quot;&lt;br /&gt;
        },'''&lt;br /&gt;
        {&lt;br /&gt;
             &amp;quot;id&amp;quot;: 2, &lt;br /&gt;
            &amp;quot;links&amp;quot;: [&lt;br /&gt;
                {&lt;br /&gt;
                    &amp;quot;href&amp;quot;: &amp;quot;https://service/v1.0/1234/types/2&amp;quot;, &lt;br /&gt;
                    &amp;quot;rel&amp;quot;: &amp;quot;self&amp;quot;&lt;br /&gt;
                }, &lt;br /&gt;
                {&lt;br /&gt;
                   &amp;quot;href&amp;quot;: &amp;quot;https://service/types/2&amp;quot;, &lt;br /&gt;
                    &amp;quot;rel&amp;quot;: &amp;quot;bookmark&amp;quot;&lt;br /&gt;
                }&lt;br /&gt;
            ],&lt;br /&gt;
            &amp;quot;name&amp;quot;: &amp;quot;MySQL 5.5&amp;quot;,&lt;br /&gt;
            &amp;quot;versions&amp;quot;: [&lt;br /&gt;
                {&lt;br /&gt;
                    &amp;quot;version&amp;quot;:&amp;quot;5.5.22&amp;quot;,&lt;br /&gt;
                    &amp;quot;description&amp;quot;:&amp;quot;Some description that is optional&amp;quot;&lt;br /&gt;
                }&lt;br /&gt;
            ],&lt;br /&gt;
            &amp;quot;status&amp;quot;: &amp;quot;SUPPORTED&amp;quot;, &lt;br /&gt;
            &amp;quot;updated&amp;quot;: &amp;quot;2012-01-01T00:00:00Z&amp;quot;&lt;br /&gt;
            &amp;quot;description&amp;quot;:&amp;quot;Some description.&amp;quot;&lt;br /&gt;
        },&lt;br /&gt;
        {&lt;br /&gt;
             &amp;quot;id&amp;quot;: 3, &lt;br /&gt;
            &amp;quot;links&amp;quot;: [&lt;br /&gt;
                {&lt;br /&gt;
                    &amp;quot;href&amp;quot;: &amp;quot;https://service/v1.0/1234/types/3&amp;quot;, &lt;br /&gt;
                    &amp;quot;rel&amp;quot;: &amp;quot;self&amp;quot;&lt;br /&gt;
                }, &lt;br /&gt;
                {&lt;br /&gt;
                   &amp;quot;href&amp;quot;: &amp;quot;https://service/types/3&amp;quot;, &lt;br /&gt;
                    &amp;quot;rel&amp;quot;: &amp;quot;bookmark&amp;quot;&lt;br /&gt;
                }&lt;br /&gt;
            ],&lt;br /&gt;
            &amp;quot;name&amp;quot;: &amp;quot;MySQL 5.6&amp;quot;,&lt;br /&gt;
            &amp;quot;versions&amp;quot;: [&lt;br /&gt;
                {&lt;br /&gt;
                    &amp;quot;version&amp;quot;:&amp;quot;5.6.30&amp;quot;,&lt;br /&gt;
                    &amp;quot;description&amp;quot;:&amp;quot;Imperitive security updates included in this version.  Reccommend that you update&amp;quot;&lt;br /&gt;
                }&lt;br /&gt;
            ],&lt;br /&gt;
            &amp;quot;status&amp;quot;: &amp;quot;DEFAULT&amp;quot;, &lt;br /&gt;
            &amp;quot;updated&amp;quot;: &amp;quot;2012-01-01T00:00:00Z&amp;quot;&lt;br /&gt;
            &amp;quot;description&amp;quot;:&amp;quot;Some description.&amp;quot;&lt;br /&gt;
        },&lt;br /&gt;
        {&lt;br /&gt;
             &amp;quot;id&amp;quot;: 4, &lt;br /&gt;
            &amp;quot;links&amp;quot;: [&lt;br /&gt;
                {&lt;br /&gt;
                    &amp;quot;href&amp;quot;: &amp;quot;https://service/v1.0/1234/types/4&amp;quot;, &lt;br /&gt;
                    &amp;quot;rel&amp;quot;: &amp;quot;self&amp;quot;&lt;br /&gt;
                }, &lt;br /&gt;
                {&lt;br /&gt;
                    &amp;quot;href&amp;quot;: &amp;quot;https://service/types/4&amp;quot;,&lt;br /&gt;
                    &amp;quot;rel&amp;quot;: &amp;quot;bookmark&amp;quot;&lt;br /&gt;
                }&lt;br /&gt;
            ],&lt;br /&gt;
            &amp;quot;name&amp;quot;: &amp;quot;MariaDB 5.5&amp;quot;,&lt;br /&gt;
            &amp;quot;versions&amp;quot;: [&lt;br /&gt;
                {&lt;br /&gt;
                    &amp;quot;version&amp;quot;:&amp;quot;5.5.36&amp;quot;,&lt;br /&gt;
                    &amp;quot;description&amp;quot;:&amp;quot;Maria updates!&amp;quot;&lt;br /&gt;
                }&lt;br /&gt;
            ],&lt;br /&gt;
            &amp;quot;status&amp;quot;: &amp;quot;UNSUPPORTED&amp;quot;, &lt;br /&gt;
            &amp;quot;updated&amp;quot;: &amp;quot;2012-01-01T00:00:00Z&amp;quot;&lt;br /&gt;
            &amp;quot;description&amp;quot;:&amp;quot;Some description.&amp;quot;&lt;br /&gt;
        }&lt;br /&gt;
    ]&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== List Database Instance Status and Details (Existing) ===&lt;br /&gt;
&lt;br /&gt;
==== Use Cases / User Stories ====&lt;br /&gt;
As a Reddwarf user, I want to know what the current version and type of database (MySQL in the current case) that is associated with my instance so that I can better understand version-based limitations/vulnerabilities and determine if I would benefit from an upgrade (when upgrades and multiple versions become available).&lt;br /&gt;
&lt;br /&gt;
Note: This is a modification to the &amp;quot;List Database Instance Status and Details&amp;quot; call&lt;br /&gt;
&lt;br /&gt;
==== API ====&lt;br /&gt;
GET        /instances/{instanceId}        Add the type and version to the instance details returned&lt;br /&gt;
&lt;br /&gt;
'''Response Codes:''' same as current call &amp;lt;br/&amp;gt;&lt;br /&gt;
'''Error Codes:''' same as current call&amp;lt;br/&amp;gt;&lt;br /&gt;
'''Description:''' Return the database type and version currently in use on the instance&amp;lt;br/&amp;gt;&lt;br /&gt;
'''Request Body:''' This operation does not require a request body.&amp;lt;br/&amp;gt;&lt;br /&gt;
'''Response:'''&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
    &amp;quot;instance&amp;quot;: {&lt;br /&gt;
        &amp;quot;created&amp;quot;: &amp;quot;2012-03-28T21:31:02Z&amp;quot;, &lt;br /&gt;
        &amp;quot;flavor&amp;quot;: {&lt;br /&gt;
           ...&lt;br /&gt;
        }, &lt;br /&gt;
        &amp;quot;hostname&amp;quot;: &amp;quot;192.168.1.1&amp;quot;, &lt;br /&gt;
        &amp;quot;id&amp;quot;: &amp;quot;2450c73f-7805-4afe-a42c-4094ab42666b&amp;quot;, &lt;br /&gt;
        &amp;quot;links&amp;quot;: [&lt;br /&gt;
           ...&lt;br /&gt;
        ], &lt;br /&gt;
        &amp;quot;name&amp;quot;: &amp;quot;my_db_inst&amp;quot;,  &lt;br /&gt;
        &amp;quot;status&amp;quot;: &amp;quot;ACTIVE&amp;quot;, &lt;br /&gt;
        &amp;quot;updated&amp;quot;: &amp;quot;2012-03-28T21:34:25Z&amp;quot;, &lt;br /&gt;
        &amp;quot;volume&amp;quot;: {&lt;br /&gt;
            &amp;quot;size&amp;quot;: 2, &lt;br /&gt;
            &amp;quot;used&amp;quot;: 0.124542236328125&lt;br /&gt;
        },&lt;br /&gt;
        &amp;quot;type&amp;quot;: {&lt;br /&gt;
            &amp;quot;id&amp;quot;: &amp;quot;1&amp;quot;,&lt;br /&gt;
            &amp;quot;links&amp;quot;: [&lt;br /&gt;
                {&lt;br /&gt;
                    &amp;quot;href&amp;quot;: &amp;quot;https://service/v1.0/1234/type/1&amp;quot;, &lt;br /&gt;
                    &amp;quot;rel&amp;quot;: &amp;quot;self&amp;quot;&lt;br /&gt;
                }, &lt;br /&gt;
                {&lt;br /&gt;
                   &amp;quot;href&amp;quot;: &amp;quot;https://service/type/1&amp;quot;, &lt;br /&gt;
                    &amp;quot;rel&amp;quot;: &amp;quot;bookmark&amp;quot;&lt;br /&gt;
                }&lt;br /&gt;
            ]&lt;br /&gt;
        },&lt;br /&gt;
        &amp;quot;version&amp;quot;: &amp;quot;5.1.61&amp;quot;&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== List Instances (Existing) ===&lt;br /&gt;
&lt;br /&gt;
==== Use Case / User Story ====&lt;br /&gt;
As a Reddwarf user, I want to view the type of database (i.e. MySQL 5.1 / major version) that is associated with each instance listed on my account so that I can quickly assess any differentiations between instances and determine which instances, if any, may need to be updated. &lt;br /&gt;
&lt;br /&gt;
==== API ====&lt;br /&gt;
GET /instances Lists the status and information for all database instances.&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Response Codes:''' same as current call&amp;lt;br /&amp;gt;&lt;br /&gt;
'''Error Codes:''' same as current call&amp;lt;br /&amp;gt;&lt;br /&gt;
'''Description:''' Return the database type and version currently in use on the instance&amp;lt;br /&amp;gt;&lt;br /&gt;
'''Request Body:''' This operation does not require a request body.&amp;lt;br /&amp;gt;&lt;br /&gt;
'''Response:'''&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
    &amp;quot;instances&amp;quot;: [&lt;br /&gt;
        {&lt;br /&gt;
            &amp;quot;flavor&amp;quot;: {&lt;br /&gt;
                ...&lt;br /&gt;
            }, &lt;br /&gt;
            &amp;quot;id&amp;quot;: &amp;quot;28d1b8f3-172a-4f6d-983d-36021508444a&amp;quot;, &lt;br /&gt;
            &amp;quot;links&amp;quot;: [&lt;br /&gt;
               ...&lt;br /&gt;
            ], &lt;br /&gt;
            &amp;quot;name&amp;quot;: &amp;quot;my_db_inst&amp;quot;, &lt;br /&gt;
            &amp;quot;status&amp;quot;: &amp;quot;ACTIVE&amp;quot;, &lt;br /&gt;
            &amp;quot;volume&amp;quot;: {&lt;br /&gt;
                &amp;quot;size&amp;quot;: 2&lt;br /&gt;
            }&lt;br /&gt;
            &amp;quot;type&amp;quot;: {&lt;br /&gt;
            &amp;quot;id&amp;quot;: &amp;quot;1&amp;quot;,&lt;br /&gt;
            &amp;quot;links&amp;quot;: [&lt;br /&gt;
                {&lt;br /&gt;
                    &amp;quot;href&amp;quot;: &amp;quot;https://service/v1.0/1234/type/1&amp;quot;, &lt;br /&gt;
                    &amp;quot;rel&amp;quot;: &amp;quot;self&amp;quot;&lt;br /&gt;
                }, &lt;br /&gt;
                {&lt;br /&gt;
                    &amp;quot;href&amp;quot;: &amp;quot;https://service/type/1&amp;quot;, &lt;br /&gt;
                    &amp;quot;rel&amp;quot;: &amp;quot;bookmark&amp;quot;&lt;br /&gt;
                }&lt;br /&gt;
            ]&lt;br /&gt;
            }&lt;br /&gt;
        }, &lt;br /&gt;
        {&lt;br /&gt;
            &amp;quot;flavor&amp;quot;: {&lt;br /&gt;
                ...&lt;br /&gt;
            }, &lt;br /&gt;
            &amp;quot;id&amp;quot;: &amp;quot;8fb081af-f237-44f5-80cc-b46be1840ca9&amp;quot;, &lt;br /&gt;
            &amp;quot;links&amp;quot;: [&lt;br /&gt;
                ...&lt;br /&gt;
            ], &lt;br /&gt;
            &amp;quot;name&amp;quot;: &amp;quot;my_db_inst_2&amp;quot;, &lt;br /&gt;
            &amp;quot;status&amp;quot;: &amp;quot;ACTIVE&amp;quot;, &lt;br /&gt;
            &amp;quot;volume&amp;quot;: {&lt;br /&gt;
                &amp;quot;size&amp;quot;: 2&lt;br /&gt;
            }&lt;br /&gt;
            &amp;quot;type&amp;quot;: {&lt;br /&gt;
            &amp;quot;id&amp;quot;: &amp;quot;2&amp;quot;,&lt;br /&gt;
            &amp;quot;links&amp;quot;: [&lt;br /&gt;
                {&lt;br /&gt;
                    &amp;quot;href&amp;quot;: &amp;quot;https://service/v1.0/1234/type/2&amp;quot;, &lt;br /&gt;
                    &amp;quot;rel&amp;quot;: &amp;quot;self&amp;quot;&lt;br /&gt;
                }, &lt;br /&gt;
                {&lt;br /&gt;
                    &amp;quot;href&amp;quot;: &amp;quot;https://service/type/2&amp;quot;, &lt;br /&gt;
     &lt;br /&gt;
               &amp;quot;rel&amp;quot;: &amp;quot;bookmark&amp;quot;&lt;br /&gt;
                }&lt;br /&gt;
            ]&lt;br /&gt;
            }&lt;br /&gt;
        }&lt;br /&gt;
    ]&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Create Database Instance (Existing) ===&lt;br /&gt;
&lt;br /&gt;
==== Use Case / User Story ====&lt;br /&gt;
As a Reddwarf User, I want the ability to specify the database type (major version) when creating an instance, so that I can create different database instances based on my application needs.&lt;br /&gt;
&lt;br /&gt;
==== API ====&lt;br /&gt;
POST /instances Creates a new database instance.&lt;br /&gt;
&lt;br /&gt;
'''New Attributes''': typeRef, optional - default will be what has STATUS - DEFAULT&amp;lt;br /&amp;gt;&lt;br /&gt;
'''Response Codes:''' same as current call&amp;lt;br /&amp;gt;&lt;br /&gt;
'''Error Codes:''' same as current call&amp;lt;br /&amp;gt;&lt;br /&gt;
'''Description:''' &amp;lt;br /&amp;gt;&lt;br /&gt;
'''Request Body:'''&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
    &amp;quot;instance&amp;quot;: {&lt;br /&gt;
        &amp;quot;databases&amp;quot;: [&lt;br /&gt;
            {&lt;br /&gt;
                &amp;quot;character_set&amp;quot;: &amp;quot;utf8&amp;quot;, &lt;br /&gt;
                &amp;quot;collate&amp;quot;: &amp;quot;utf8_general_ci&amp;quot;, &lt;br /&gt;
                &amp;quot;name&amp;quot;: &amp;quot;sampledb&amp;quot;&lt;br /&gt;
            }, &lt;br /&gt;
            {&lt;br /&gt;
                &amp;quot;name&amp;quot;: &amp;quot;nextround&amp;quot;&lt;br /&gt;
            }&lt;br /&gt;
        ], &lt;br /&gt;
        &amp;quot;flavorRef&amp;quot;: &amp;quot;&amp;quot;href&amp;quot;: &amp;quot;https://service/v1.0/1234/flavors/1&amp;quot;, &lt;br /&gt;
        &amp;quot;name&amp;quot;: &amp;quot;my_db_inst&amp;quot;, &lt;br /&gt;
        &amp;quot;users&amp;quot;: [&lt;br /&gt;
            {&lt;br /&gt;
                &amp;quot;databases&amp;quot;: [&lt;br /&gt;
                    {&lt;br /&gt;
                        &amp;quot;name&amp;quot;: &amp;quot;sampledb&amp;quot;&lt;br /&gt;
                    }&lt;br /&gt;
                ], &lt;br /&gt;
                &amp;quot;name&amp;quot;: &amp;quot;demouser&amp;quot;, &lt;br /&gt;
                &amp;quot;password&amp;quot;: &amp;quot;demopassword&amp;quot;&lt;br /&gt;
            }&lt;br /&gt;
        ], &lt;br /&gt;
        &amp;quot;volume&amp;quot;: {&lt;br /&gt;
            &amp;quot;size&amp;quot;: 2&lt;br /&gt;
        }&lt;br /&gt;
        &amp;quot;typeRef&amp;quot;: &amp;quot;&amp;quot;href&amp;quot;: &amp;quot;https://service/v1.0/1234/type/1&amp;quot;,&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
'''Response:'''&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
    &amp;quot;instance&amp;quot;: {&lt;br /&gt;
        &amp;quot;created&amp;quot;: &amp;quot;2012-01-25T21:53:09Z&amp;quot;, &lt;br /&gt;
        &amp;quot;flavor&amp;quot;: {&lt;br /&gt;
            &amp;quot;id&amp;quot;: &amp;quot;1&amp;quot;, &lt;br /&gt;
            &amp;quot;links&amp;quot;: [&lt;br /&gt;
               ...&lt;br /&gt;
            ]&lt;br /&gt;
        }, &lt;br /&gt;
        &amp;quot;hostname&amp;quot;: &amp;quot;192.168.1.1&amp;quot;, &lt;br /&gt;
        &amp;quot;id&amp;quot;: &amp;quot;dea5a2f7-3ec7-4496-adab-0abb5a42d635&amp;quot;, &lt;br /&gt;
        &amp;quot;links&amp;quot;: [&lt;br /&gt;
           ...&lt;br /&gt;
        ], &lt;br /&gt;
        &amp;quot;name&amp;quot;: &amp;quot;my_db_inst&amp;quot;, &lt;br /&gt;
        &amp;quot;status&amp;quot;: &amp;quot;BUILD&amp;quot;, &lt;br /&gt;
        &amp;quot;updated&amp;quot;: &amp;quot;2012-01-25T21:53:10Z&amp;quot;, &lt;br /&gt;
        &amp;quot;volume&amp;quot;: {&lt;br /&gt;
            &amp;quot;size&amp;quot;: 2&lt;br /&gt;
        }&lt;br /&gt;
       &amp;quot;type&amp;quot;: {&lt;br /&gt;
            &amp;quot;id&amp;quot;: &amp;quot;1&amp;quot;,&lt;br /&gt;
            &amp;quot;name&amp;quot;: &amp;quot;MySQL 5.1&amp;quot;,&lt;br /&gt;
            &amp;quot;links&amp;quot;: [&lt;br /&gt;
                {&lt;br /&gt;
                    &amp;quot;href&amp;quot;: &amp;quot;https://service/v1.0/1234/type/1&amp;quot;, &lt;br /&gt;
                    &amp;quot;rel&amp;quot;: &amp;quot;self&amp;quot;&lt;br /&gt;
                }, &lt;br /&gt;
                {&lt;br /&gt;
                    &amp;quot;href&amp;quot;: &amp;quot;https://service/type/1&amp;quot;, &lt;br /&gt;
                    &amp;quot;rel&amp;quot;: &amp;quot;bookmark&amp;quot;&lt;br /&gt;
                }&lt;br /&gt;
            ]&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Vipuls</name></author>	</entry>

	<entry>
		<id>https://wiki.openstack.org/w/index.php?title=Reddwarf-versions-types&amp;diff=26810</id>
		<title>Reddwarf-versions-types</title>
		<link rel="alternate" type="text/html" href="https://wiki.openstack.org/w/index.php?title=Reddwarf-versions-types&amp;diff=26810"/>
				<updated>2013-07-24T18:38:39Z</updated>
		
		<summary type="html">&lt;p&gt;Vipuls: Vipuls moved page Reddwarf-versions-types to Trove/trove-versions-types&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;#REDIRECT [[Trove/trove-versions-types]]&lt;/div&gt;</summary>
		<author><name>Vipuls</name></author>	</entry>

	<entry>
		<id>https://wiki.openstack.org/w/index.php?title=Talk:Trove/trove-versions-types&amp;diff=26811</id>
		<title>Talk:Trove/trove-versions-types</title>
		<link rel="alternate" type="text/html" href="https://wiki.openstack.org/w/index.php?title=Talk:Trove/trove-versions-types&amp;diff=26811"/>
				<updated>2013-07-24T18:38:39Z</updated>
		
		<summary type="html">&lt;p&gt;Vipuls: Vipuls moved page Talk:Reddwarf-versions-types to Talk:Trove/trove-versions-types&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;In the /types call, we are supporting the following             &amp;quot;status&amp;quot;: &amp;quot;UNSUPPORTED&amp;quot;, &lt;br /&gt;
Do we even need this?  Do we envision listing unsupported database types in the response?&lt;/div&gt;</summary>
		<author><name>Vipuls</name></author>	</entry>

	</feed>