<?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=Robert+Myers</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=Robert+Myers"/>
		<link rel="alternate" type="text/html" href="https://wiki.openstack.org/wiki/Special:Contributions/Robert_Myers"/>
		<updated>2026-07-12T08:45:08Z</updated>
		<subtitle>User contributions</subtitle>
		<generator>MediaWiki 1.28.2</generator>

	<entry>
		<id>https://wiki.openstack.org/w/index.php?title=Meetings/TroveMeeting&amp;diff=65057</id>
		<title>Meetings/TroveMeeting</title>
		<link rel="alternate" type="text/html" href="https://wiki.openstack.org/w/index.php?title=Meetings/TroveMeeting&amp;diff=65057"/>
				<updated>2014-10-15T14:38:00Z</updated>
		
		<summary type="html">&lt;p&gt;Robert Myers: /* Agenda for Oct 15th */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Weekly Trove Team Meeting =&lt;br /&gt;
&lt;br /&gt;
We have weekly team meetings on Wednesdays at 18:00 UTC in #openstack-meeting-alt&lt;br /&gt;
&lt;br /&gt;
Want to add an agenda item? Please append your item to the upcoming weekly agenda while keeping in mind:&lt;br /&gt;
&lt;br /&gt;
== Guidelines for Writing Clear Agenda Items ==&lt;br /&gt;
An agenda item should have a clearly defined objective.&lt;br /&gt;
 &lt;br /&gt;
* Good: Review #xxxxx has comments on foobar.py from multiple folks and there seems to be a lack of consensus on how to solve problem ‘y’. Let’s quickly rehash the merits of both approaches in 2-5 minutes and call for a vote. Goal: choose an approach and move forward on implementation.&lt;br /&gt;
* Bad: Discuss blueprint ‘xyz’&lt;br /&gt;
* Bad: Revisit blueprint ‘abc’ that we talked about last week to get answers on remaining disagreements.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
When referring to previous conversations or competing viewpoints, be sure to summarize them.&lt;br /&gt;
&lt;br /&gt;
== Agenda for Oct 15th ==&lt;br /&gt;
* Discuss the timing of trove-guestagent refactoring. This is a big change and it would help to reduce rebasing if this was fast tracked or put on hold until other patches land. (rmyers)&lt;br /&gt;
** https://review.openstack.org/#/c/119425/&lt;br /&gt;
&lt;br /&gt;
== Agenda for Oct 8 ==&lt;br /&gt;
* Discuss if change to rdservers related logic in load_mgmt_instance is acceptable as part of bugfix&lt;br /&gt;
** https://bugs.launchpad.net/trove/+bug/1376525&lt;br /&gt;
* FOSS Outreach Program Projects&lt;br /&gt;
** http://gnome.org/opw/&lt;br /&gt;
&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
Meeting Chat Logs: http://eavesdrop.openstack.org/meetings/trove/2014/&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
Meeting Agenda History: https://wiki.openstack.org/wiki/Trove/MeetingAgendaHistory#Trove_Weekly_Meeting_Agenda_History&lt;br /&gt;
&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;big&amp;gt;Note: BP Meetings now have their own wiki page at: https://wiki.openstack.org/wiki/Meetings/TroveBPMeeting&amp;lt;/big&amp;gt;&lt;/div&gt;</summary>
		<author><name>Robert Myers</name></author>	</entry>

	<entry>
		<id>https://wiki.openstack.org/w/index.php?title=Meetings/TroveMeeting&amp;diff=65055</id>
		<title>Meetings/TroveMeeting</title>
		<link rel="alternate" type="text/html" href="https://wiki.openstack.org/w/index.php?title=Meetings/TroveMeeting&amp;diff=65055"/>
				<updated>2014-10-15T14:36:46Z</updated>
		
		<summary type="html">&lt;p&gt;Robert Myers: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Weekly Trove Team Meeting =&lt;br /&gt;
&lt;br /&gt;
We have weekly team meetings on Wednesdays at 18:00 UTC in #openstack-meeting-alt&lt;br /&gt;
&lt;br /&gt;
Want to add an agenda item? Please append your item to the upcoming weekly agenda while keeping in mind:&lt;br /&gt;
&lt;br /&gt;
== Guidelines for Writing Clear Agenda Items ==&lt;br /&gt;
An agenda item should have a clearly defined objective.&lt;br /&gt;
 &lt;br /&gt;
* Good: Review #xxxxx has comments on foobar.py from multiple folks and there seems to be a lack of consensus on how to solve problem ‘y’. Let’s quickly rehash the merits of both approaches in 2-5 minutes and call for a vote. Goal: choose an approach and move forward on implementation.&lt;br /&gt;
* Bad: Discuss blueprint ‘xyz’&lt;br /&gt;
* Bad: Revisit blueprint ‘abc’ that we talked about last week to get answers on remaining disagreements.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
When referring to previous conversations or competing viewpoints, be sure to summarize them.&lt;br /&gt;
&lt;br /&gt;
== Agenda for Oct 15th ==&lt;br /&gt;
* Discuss the timing of trove-guestagent refactoring. This is a big change and it would help to reduce rebasing if this was fast tracked or put on hold until other patches land.&lt;br /&gt;
** https://review.openstack.org/#/c/119425/&lt;br /&gt;
&lt;br /&gt;
== Agenda for Oct 8 ==&lt;br /&gt;
* Discuss if change to rdservers related logic in load_mgmt_instance is acceptable as part of bugfix&lt;br /&gt;
** https://bugs.launchpad.net/trove/+bug/1376525&lt;br /&gt;
* FOSS Outreach Program Projects&lt;br /&gt;
** http://gnome.org/opw/&lt;br /&gt;
&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
Meeting Chat Logs: http://eavesdrop.openstack.org/meetings/trove/2014/&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
Meeting Agenda History: https://wiki.openstack.org/wiki/Trove/MeetingAgendaHistory#Trove_Weekly_Meeting_Agenda_History&lt;br /&gt;
&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;big&amp;gt;Note: BP Meetings now have their own wiki page at: https://wiki.openstack.org/wiki/Meetings/TroveBPMeeting&amp;lt;/big&amp;gt;&lt;/div&gt;</summary>
		<author><name>Robert Myers</name></author>	</entry>

	<entry>
		<id>https://wiki.openstack.org/w/index.php?title=Trove/MoveTroveGuest&amp;diff=58369</id>
		<title>Trove/MoveTroveGuest</title>
		<link rel="alternate" type="text/html" href="https://wiki.openstack.org/w/index.php?title=Trove/MoveTroveGuest&amp;diff=58369"/>
				<updated>2014-07-17T16:31:17Z</updated>
		
		<summary type="html">&lt;p&gt;Robert Myers: /* add new openstack-common.conf */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
== Description ==&lt;br /&gt;
Currently the Trove Guest Agent code is contained in the trove module. This blueprint goal is to split the guest agent specific code into another top level module called 'troveguest'. This will eventually be split out completely into another repository, the first step is to refactor the code so it is no longer dependent on trove core. &lt;br /&gt;
&lt;br /&gt;
== Justification/Benefits ==&lt;br /&gt;
* Simplify installation of the guest agent on instances.&lt;br /&gt;
* Reduce the amount of code that is deployed on instances.&lt;br /&gt;
* Lower the memory footprint of the guest agent by not importing unnecessary code from Trove core.&lt;br /&gt;
&lt;br /&gt;
== Impacts ==&lt;br /&gt;
* The setup.cfg will need to setup the new module along with trove. See [https://github.com/openstack/horizon/blob/master/setup.cfg#L31 horizon] for an example.&lt;br /&gt;
* An example setup.cfg for just packaging the guest agent will be added along with a build_guest.py helper script.&lt;br /&gt;
* Some in flight reviews will have a difficult rebase. (Cores will also need to be careful to merge them in order to minimize impact)&lt;br /&gt;
&lt;br /&gt;
=== Configuration === &lt;br /&gt;
* A new top level olso.cfg for the troveguest will be added. (This should be a small subset of the values in trove.common.cfg)&lt;br /&gt;
* The values in trove.common.cfg that are specifically for the guest will be removed.&lt;br /&gt;
* It is possible that some configuration values will need to be added or duplicated. &lt;br /&gt;
&lt;br /&gt;
=== Database ===&lt;br /&gt;
None&lt;br /&gt;
&lt;br /&gt;
=== Public API ===&lt;br /&gt;
None&lt;br /&gt;
&lt;br /&gt;
=== Internal API ===&lt;br /&gt;
None&lt;br /&gt;
&lt;br /&gt;
=== Guest Agent ===&lt;br /&gt;
# The guest agent code will be moved to a top level module in the existing trove repository called 'troveguest'. &lt;br /&gt;
# The import statements will be changed from 'trove.guestagent' to 'troveguest' &lt;br /&gt;
# Some common code will need to be duplicated within the troveguest so that there are no dependancies on the trove core. (This should hopefully be minimal)&lt;br /&gt;
# The code that currently rsync's the code over to instances in development will be changed to just include the 'troveguest' module. (It is possible that another delivery method will be used, however that should probably be done in its own blueprint)&lt;br /&gt;
&lt;br /&gt;
==== setup.cfg ====&lt;br /&gt;
&lt;br /&gt;
Add a new package to the [files] section&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[files]&lt;br /&gt;
packages =&lt;br /&gt;
    trove&lt;br /&gt;
    troveguest&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== new troveguest module =====&lt;br /&gt;
&lt;br /&gt;
Move the trove.guest module to troveguest so the layout looks like:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
trove/&lt;br /&gt;
        ...&lt;br /&gt;
        doc/&lt;br /&gt;
        etc/&lt;br /&gt;
        tools/&lt;br /&gt;
        trove/&lt;br /&gt;
        troveguest/   &amp;lt; --- new module&lt;br /&gt;
        setup.py&lt;br /&gt;
        setup.cfg &lt;br /&gt;
        ...  &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== add new openstack-common.conf ====&lt;br /&gt;
&lt;br /&gt;
Add file `troveguest/openstack-common.conf ` and add only the modules that the guest needs (this needs to be discoverd)&lt;br /&gt;
&lt;br /&gt;
# Clone the osloincubator repo: `git clone git@github.com:openstack/oslo-incubator.git`&lt;br /&gt;
# Run the update script: `python update.py --config-file ../trove/troveguest/openstack-common.conf`&lt;br /&gt;
&lt;br /&gt;
Example config:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[DEFAULT]&lt;br /&gt;
&lt;br /&gt;
# The list of modules to copy from oslo-incubator&lt;br /&gt;
module=eventlet_backdoor&lt;br /&gt;
module=exception&lt;br /&gt;
module=excutils&lt;br /&gt;
module=fileutils&lt;br /&gt;
module=gettextutils&lt;br /&gt;
module=importutils&lt;br /&gt;
module=jsonutils&lt;br /&gt;
module=local&lt;br /&gt;
module=lockutils&lt;br /&gt;
module=log&lt;br /&gt;
module=loopingcall&lt;br /&gt;
module=pastedeploy&lt;br /&gt;
module=periodic_task&lt;br /&gt;
module=processutils&lt;br /&gt;
module=rpc&lt;br /&gt;
module=service&lt;br /&gt;
module=strutils&lt;br /&gt;
module=testutils&lt;br /&gt;
module=threadgroup&lt;br /&gt;
module=timeutils&lt;br /&gt;
module=utils&lt;br /&gt;
module=versionutils&lt;br /&gt;
&lt;br /&gt;
# The base module to hold the copy of openstack.common&lt;br /&gt;
base=troveguest&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Move tests and add a test runner for the guest ====&lt;br /&gt;
&lt;br /&gt;
The guestagent tests need to be split out from the trove.tests modules then we to make sure the tests are discovered properly. &lt;br /&gt;
&lt;br /&gt;
Possibly modify tox.ini:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[testenv:cover]&lt;br /&gt;
basepython = python2.7&lt;br /&gt;
commands =&lt;br /&gt;
     {envpython} run_tests.py --group=does_not_exist&lt;br /&gt;
     coverage erase&lt;br /&gt;
     python setup.py testr --coverage&lt;br /&gt;
     coverage run -a run_tests.py&lt;br /&gt;
     coverage run -a troveguest/run_tests.py&lt;br /&gt;
     coverage html&lt;br /&gt;
     coverage report&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Robert Myers</name></author>	</entry>

	<entry>
		<id>https://wiki.openstack.org/w/index.php?title=Trove/MoveTroveGuest&amp;diff=58368</id>
		<title>Trove/MoveTroveGuest</title>
		<link rel="alternate" type="text/html" href="https://wiki.openstack.org/w/index.php?title=Trove/MoveTroveGuest&amp;diff=58368"/>
				<updated>2014-07-17T16:11:30Z</updated>
		
		<summary type="html">&lt;p&gt;Robert Myers: /* Move tests and add a test runner for the guest */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
== Description ==&lt;br /&gt;
Currently the Trove Guest Agent code is contained in the trove module. This blueprint goal is to split the guest agent specific code into another top level module called 'troveguest'. This will eventually be split out completely into another repository, the first step is to refactor the code so it is no longer dependent on trove core. &lt;br /&gt;
&lt;br /&gt;
== Justification/Benefits ==&lt;br /&gt;
* Simplify installation of the guest agent on instances.&lt;br /&gt;
* Reduce the amount of code that is deployed on instances.&lt;br /&gt;
* Lower the memory footprint of the guest agent by not importing unnecessary code from Trove core.&lt;br /&gt;
&lt;br /&gt;
== Impacts ==&lt;br /&gt;
* The setup.cfg will need to setup the new module along with trove. See [https://github.com/openstack/horizon/blob/master/setup.cfg#L31 horizon] for an example.&lt;br /&gt;
* An example setup.cfg for just packaging the guest agent will be added along with a build_guest.py helper script.&lt;br /&gt;
* Some in flight reviews will have a difficult rebase. (Cores will also need to be careful to merge them in order to minimize impact)&lt;br /&gt;
&lt;br /&gt;
=== Configuration === &lt;br /&gt;
* A new top level olso.cfg for the troveguest will be added. (This should be a small subset of the values in trove.common.cfg)&lt;br /&gt;
* The values in trove.common.cfg that are specifically for the guest will be removed.&lt;br /&gt;
* It is possible that some configuration values will need to be added or duplicated. &lt;br /&gt;
&lt;br /&gt;
=== Database ===&lt;br /&gt;
None&lt;br /&gt;
&lt;br /&gt;
=== Public API ===&lt;br /&gt;
None&lt;br /&gt;
&lt;br /&gt;
=== Internal API ===&lt;br /&gt;
None&lt;br /&gt;
&lt;br /&gt;
=== Guest Agent ===&lt;br /&gt;
# The guest agent code will be moved to a top level module in the existing trove repository called 'troveguest'. &lt;br /&gt;
# The import statements will be changed from 'trove.guestagent' to 'troveguest' &lt;br /&gt;
# Some common code will need to be duplicated within the troveguest so that there are no dependancies on the trove core. (This should hopefully be minimal)&lt;br /&gt;
# The code that currently rsync's the code over to instances in development will be changed to just include the 'troveguest' module. (It is possible that another delivery method will be used, however that should probably be done in its own blueprint)&lt;br /&gt;
&lt;br /&gt;
==== setup.cfg ====&lt;br /&gt;
&lt;br /&gt;
Add a new package to the [files] section&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[files]&lt;br /&gt;
packages =&lt;br /&gt;
    trove&lt;br /&gt;
    troveguest&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== new troveguest module =====&lt;br /&gt;
&lt;br /&gt;
Move the trove.guest module to troveguest so the layout looks like:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
trove/&lt;br /&gt;
        ...&lt;br /&gt;
        doc/&lt;br /&gt;
        etc/&lt;br /&gt;
        tools/&lt;br /&gt;
        trove/&lt;br /&gt;
        troveguest/   &amp;lt; --- new module&lt;br /&gt;
        setup.py&lt;br /&gt;
        setup.cfg &lt;br /&gt;
        ...  &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== add new openstack-common.conf ====&lt;br /&gt;
&lt;br /&gt;
Add file `troveguest/openstack-common.conf ` and add only the modules that the guest needs (this needs to be discoverd)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[DEFAULT]&lt;br /&gt;
&lt;br /&gt;
# The list of modules to copy from oslo-incubator&lt;br /&gt;
module=eventlet_backdoor&lt;br /&gt;
module=exception&lt;br /&gt;
module=excutils&lt;br /&gt;
module=fileutils&lt;br /&gt;
module=gettextutils&lt;br /&gt;
module=importutils&lt;br /&gt;
module=jsonutils&lt;br /&gt;
module=local&lt;br /&gt;
module=lockutils&lt;br /&gt;
module=log&lt;br /&gt;
module=loopingcall&lt;br /&gt;
module=pastedeploy&lt;br /&gt;
module=periodic_task&lt;br /&gt;
module=processutils&lt;br /&gt;
module=rpc&lt;br /&gt;
module=service&lt;br /&gt;
module=strutils&lt;br /&gt;
module=testutils&lt;br /&gt;
module=threadgroup&lt;br /&gt;
module=timeutils&lt;br /&gt;
module=utils&lt;br /&gt;
module=versionutils&lt;br /&gt;
&lt;br /&gt;
# The base module to hold the copy of openstack.common&lt;br /&gt;
base=troveguest&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Move tests and add a test runner for the guest ====&lt;br /&gt;
&lt;br /&gt;
The guestagent tests need to be split out from the trove.tests modules then we to make sure the tests are discovered properly. &lt;br /&gt;
&lt;br /&gt;
Possibly modify tox.ini:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[testenv:cover]&lt;br /&gt;
basepython = python2.7&lt;br /&gt;
commands =&lt;br /&gt;
     {envpython} run_tests.py --group=does_not_exist&lt;br /&gt;
     coverage erase&lt;br /&gt;
     python setup.py testr --coverage&lt;br /&gt;
     coverage run -a run_tests.py&lt;br /&gt;
     coverage run -a troveguest/run_tests.py&lt;br /&gt;
     coverage html&lt;br /&gt;
     coverage report&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Robert Myers</name></author>	</entry>

	<entry>
		<id>https://wiki.openstack.org/w/index.php?title=Trove/MoveTroveGuest&amp;diff=58367</id>
		<title>Trove/MoveTroveGuest</title>
		<link rel="alternate" type="text/html" href="https://wiki.openstack.org/w/index.php?title=Trove/MoveTroveGuest&amp;diff=58367"/>
				<updated>2014-07-17T16:05:58Z</updated>
		
		<summary type="html">&lt;p&gt;Robert Myers: /* Guest Agent */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
== Description ==&lt;br /&gt;
Currently the Trove Guest Agent code is contained in the trove module. This blueprint goal is to split the guest agent specific code into another top level module called 'troveguest'. This will eventually be split out completely into another repository, the first step is to refactor the code so it is no longer dependent on trove core. &lt;br /&gt;
&lt;br /&gt;
== Justification/Benefits ==&lt;br /&gt;
* Simplify installation of the guest agent on instances.&lt;br /&gt;
* Reduce the amount of code that is deployed on instances.&lt;br /&gt;
* Lower the memory footprint of the guest agent by not importing unnecessary code from Trove core.&lt;br /&gt;
&lt;br /&gt;
== Impacts ==&lt;br /&gt;
* The setup.cfg will need to setup the new module along with trove. See [https://github.com/openstack/horizon/blob/master/setup.cfg#L31 horizon] for an example.&lt;br /&gt;
* An example setup.cfg for just packaging the guest agent will be added along with a build_guest.py helper script.&lt;br /&gt;
* Some in flight reviews will have a difficult rebase. (Cores will also need to be careful to merge them in order to minimize impact)&lt;br /&gt;
&lt;br /&gt;
=== Configuration === &lt;br /&gt;
* A new top level olso.cfg for the troveguest will be added. (This should be a small subset of the values in trove.common.cfg)&lt;br /&gt;
* The values in trove.common.cfg that are specifically for the guest will be removed.&lt;br /&gt;
* It is possible that some configuration values will need to be added or duplicated. &lt;br /&gt;
&lt;br /&gt;
=== Database ===&lt;br /&gt;
None&lt;br /&gt;
&lt;br /&gt;
=== Public API ===&lt;br /&gt;
None&lt;br /&gt;
&lt;br /&gt;
=== Internal API ===&lt;br /&gt;
None&lt;br /&gt;
&lt;br /&gt;
=== Guest Agent ===&lt;br /&gt;
# The guest agent code will be moved to a top level module in the existing trove repository called 'troveguest'. &lt;br /&gt;
# The import statements will be changed from 'trove.guestagent' to 'troveguest' &lt;br /&gt;
# Some common code will need to be duplicated within the troveguest so that there are no dependancies on the trove core. (This should hopefully be minimal)&lt;br /&gt;
# The code that currently rsync's the code over to instances in development will be changed to just include the 'troveguest' module. (It is possible that another delivery method will be used, however that should probably be done in its own blueprint)&lt;br /&gt;
&lt;br /&gt;
==== setup.cfg ====&lt;br /&gt;
&lt;br /&gt;
Add a new package to the [files] section&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[files]&lt;br /&gt;
packages =&lt;br /&gt;
    trove&lt;br /&gt;
    troveguest&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== new troveguest module =====&lt;br /&gt;
&lt;br /&gt;
Move the trove.guest module to troveguest so the layout looks like:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
trove/&lt;br /&gt;
        ...&lt;br /&gt;
        doc/&lt;br /&gt;
        etc/&lt;br /&gt;
        tools/&lt;br /&gt;
        trove/&lt;br /&gt;
        troveguest/   &amp;lt; --- new module&lt;br /&gt;
        setup.py&lt;br /&gt;
        setup.cfg &lt;br /&gt;
        ...  &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== add new openstack-common.conf ====&lt;br /&gt;
&lt;br /&gt;
Add file `troveguest/openstack-common.conf ` and add only the modules that the guest needs (this needs to be discoverd)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[DEFAULT]&lt;br /&gt;
&lt;br /&gt;
# The list of modules to copy from oslo-incubator&lt;br /&gt;
module=eventlet_backdoor&lt;br /&gt;
module=exception&lt;br /&gt;
module=excutils&lt;br /&gt;
module=fileutils&lt;br /&gt;
module=gettextutils&lt;br /&gt;
module=importutils&lt;br /&gt;
module=jsonutils&lt;br /&gt;
module=local&lt;br /&gt;
module=lockutils&lt;br /&gt;
module=log&lt;br /&gt;
module=loopingcall&lt;br /&gt;
module=pastedeploy&lt;br /&gt;
module=periodic_task&lt;br /&gt;
module=processutils&lt;br /&gt;
module=rpc&lt;br /&gt;
module=service&lt;br /&gt;
module=strutils&lt;br /&gt;
module=testutils&lt;br /&gt;
module=threadgroup&lt;br /&gt;
module=timeutils&lt;br /&gt;
module=utils&lt;br /&gt;
module=versionutils&lt;br /&gt;
&lt;br /&gt;
# The base module to hold the copy of openstack.common&lt;br /&gt;
base=troveguest&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Move tests and add a test runner for the guest ====&lt;br /&gt;
&lt;br /&gt;
The guestagent tests need to be split out from the trove.tests modules then we to make sure the tests are discovered properly. &lt;br /&gt;
&lt;br /&gt;
Possibly modify tox.ini:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[testenv:cover]&lt;br /&gt;
basepython = python2.7&lt;br /&gt;
commands =&lt;br /&gt;
     {envpython} run_tests.py --group=does_not_exist&lt;br /&gt;
     coverage erase&lt;br /&gt;
     python setup.py testr --coverage&lt;br /&gt;
     coverage run -a run_tests.py&lt;br /&gt;
     coverage run -a troveguest/run_tests.py&lt;br /&gt;
     coverage html&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
     coverage report&lt;/div&gt;</summary>
		<author><name>Robert Myers</name></author>	</entry>

	<entry>
		<id>https://wiki.openstack.org/w/index.php?title=Trove/MoveTroveGuest&amp;diff=58366</id>
		<title>Trove/MoveTroveGuest</title>
		<link rel="alternate" type="text/html" href="https://wiki.openstack.org/w/index.php?title=Trove/MoveTroveGuest&amp;diff=58366"/>
				<updated>2014-07-17T15:59:03Z</updated>
		
		<summary type="html">&lt;p&gt;Robert Myers: /* Guest Agent */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
== Description ==&lt;br /&gt;
Currently the Trove Guest Agent code is contained in the trove module. This blueprint goal is to split the guest agent specific code into another top level module called 'troveguest'. This will eventually be split out completely into another repository, the first step is to refactor the code so it is no longer dependent on trove core. &lt;br /&gt;
&lt;br /&gt;
== Justification/Benefits ==&lt;br /&gt;
* Simplify installation of the guest agent on instances.&lt;br /&gt;
* Reduce the amount of code that is deployed on instances.&lt;br /&gt;
* Lower the memory footprint of the guest agent by not importing unnecessary code from Trove core.&lt;br /&gt;
&lt;br /&gt;
== Impacts ==&lt;br /&gt;
* The setup.cfg will need to setup the new module along with trove. See [https://github.com/openstack/horizon/blob/master/setup.cfg#L31 horizon] for an example.&lt;br /&gt;
* An example setup.cfg for just packaging the guest agent will be added along with a build_guest.py helper script.&lt;br /&gt;
* Some in flight reviews will have a difficult rebase. (Cores will also need to be careful to merge them in order to minimize impact)&lt;br /&gt;
&lt;br /&gt;
=== Configuration === &lt;br /&gt;
* A new top level olso.cfg for the troveguest will be added. (This should be a small subset of the values in trove.common.cfg)&lt;br /&gt;
* The values in trove.common.cfg that are specifically for the guest will be removed.&lt;br /&gt;
* It is possible that some configuration values will need to be added or duplicated. &lt;br /&gt;
&lt;br /&gt;
=== Database ===&lt;br /&gt;
None&lt;br /&gt;
&lt;br /&gt;
=== Public API ===&lt;br /&gt;
None&lt;br /&gt;
&lt;br /&gt;
=== Internal API ===&lt;br /&gt;
None&lt;br /&gt;
&lt;br /&gt;
=== Guest Agent ===&lt;br /&gt;
# The guest agent code will be moved to a top level module in the existing trove repository called 'troveguest'. &lt;br /&gt;
# The import statements will be changed from 'trove.guestagent' to 'troveguest' &lt;br /&gt;
# Some common code will need to be duplicated within the troveguest so that there are no dependancies on the trove core. (This should hopefully be minimal)&lt;br /&gt;
# The code that currently rsync's the code over to instances in development will be changed to just include the 'troveguest' module. (It is possible that another delivery method will be used, however that should probably be done in its own blueprint)&lt;br /&gt;
&lt;br /&gt;
==== setup.cfg ====&lt;br /&gt;
&lt;br /&gt;
Add a new package to the [files] section&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[files]&lt;br /&gt;
packages =&lt;br /&gt;
    trove&lt;br /&gt;
    troveguest&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== new troveguest module =====&lt;br /&gt;
&lt;br /&gt;
Move the trove.guest module to troveguest so the layout looks like:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
trove/&lt;br /&gt;
        ...&lt;br /&gt;
        doc/&lt;br /&gt;
        etc/&lt;br /&gt;
        tools/&lt;br /&gt;
        trove/&lt;br /&gt;
        troveguest/   &amp;lt; --- new module&lt;br /&gt;
        setup.py&lt;br /&gt;
        setup.cfg &lt;br /&gt;
        ...  &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== add new openstack-common.conf ====&lt;br /&gt;
&lt;br /&gt;
Add file `troveguest/openstack-common.conf ` and add only the modules that the guest needs (this needs to be discoverd)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[DEFAULT]&lt;br /&gt;
&lt;br /&gt;
# The list of modules to copy from oslo-incubator&lt;br /&gt;
module=eventlet_backdoor&lt;br /&gt;
module=exception&lt;br /&gt;
module=excutils&lt;br /&gt;
module=fileutils&lt;br /&gt;
module=gettextutils&lt;br /&gt;
module=importutils&lt;br /&gt;
module=jsonutils&lt;br /&gt;
module=local&lt;br /&gt;
module=lockutils&lt;br /&gt;
module=log&lt;br /&gt;
module=loopingcall&lt;br /&gt;
module=pastedeploy&lt;br /&gt;
module=periodic_task&lt;br /&gt;
module=processutils&lt;br /&gt;
module=rpc&lt;br /&gt;
module=service&lt;br /&gt;
module=strutils&lt;br /&gt;
module=testutils&lt;br /&gt;
module=threadgroup&lt;br /&gt;
module=timeutils&lt;br /&gt;
module=utils&lt;br /&gt;
module=versionutils&lt;br /&gt;
&lt;br /&gt;
# The base module to hold the copy of openstack.common&lt;br /&gt;
base=troveguest&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Robert Myers</name></author>	</entry>

	<entry>
		<id>https://wiki.openstack.org/w/index.php?title=Meetings/TroveMeeting&amp;diff=48643</id>
		<title>Meetings/TroveMeeting</title>
		<link rel="alternate" type="text/html" href="https://wiki.openstack.org/w/index.php?title=Meetings/TroveMeeting&amp;diff=48643"/>
				<updated>2014-04-14T16:24:11Z</updated>
		
		<summary type="html">&lt;p&gt;Robert Myers: /* Agenda for Apr. 14 (blueprint 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;
Meetings agenda history: [https://wiki.openstack.org/wiki/Trove/MeetingAgendaHistory link]&lt;br /&gt;
&lt;br /&gt;
== Agenda for Apr. 14 (blueprint meeting) ==&lt;br /&gt;
* Datastore Capabilities [k-pom]&lt;br /&gt;
** https://blueprints.launchpad.net/trove/+spec/capabilities&lt;br /&gt;
*Descriptions to Datastore Configuration Group Parameters [cp16net]&lt;br /&gt;
** https://blueprints.launchpad.net/trove/+spec/add-descriptions-to-config-parameters-api&lt;br /&gt;
*Categorize the trove-manage commands [cp16net]&lt;br /&gt;
** https://blueprints.launchpad.net/trove/+spec/categorize-the-trove-manage-commands&lt;br /&gt;
*Point in time recovery [denis_makogon]&lt;br /&gt;
** https://blueprints.launchpad.net/trove/+spec/point-in-time-recovery&lt;br /&gt;
*Data volume snapshot [denis_makogon]&lt;br /&gt;
** https://blueprints.launchpad.net/trove/+spec/volume-snapshot&lt;br /&gt;
*Networking [denis_makogon]&lt;br /&gt;
** https://blueprints.launchpad.net/trove/+spec/network-manager-spec&lt;br /&gt;
* Move the Trove Guest Agent to its own module [robertmyers]&lt;br /&gt;
** https://blueprints.launchpad.net/trove/+spec/moving-trove-guestagent&lt;br /&gt;
* Database log files manipulations [denis_makogon]&lt;br /&gt;
** https://blueprints.launchpad.net/trove/+spec/dbinstance-log&lt;br /&gt;
* Unify common code in guest agent configurations [amrith and snowdust]&lt;br /&gt;
** https://blueprints.launchpad.net/trove/+spec/trove-unify-common-code-for-config-of-guest-agent-variants&lt;br /&gt;
* Adding datastore and version to the backup API [robertmyers]&lt;br /&gt;
** https://blueprints.launchpad.net/trove/+spec/backup-metadata&lt;/div&gt;</summary>
		<author><name>Robert Myers</name></author>	</entry>

	<entry>
		<id>https://wiki.openstack.org/w/index.php?title=Trove/backup-metadata&amp;diff=48642</id>
		<title>Trove/backup-metadata</title>
		<link rel="alternate" type="text/html" href="https://wiki.openstack.org/w/index.php?title=Trove/backup-metadata&amp;diff=48642"/>
				<updated>2014-04-14T16:20:57Z</updated>
		
		<summary type="html">&lt;p&gt;Robert Myers: /* Description */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Description ==&lt;br /&gt;
This blueprint will add the datastore and version to the backups api response.&lt;br /&gt;
&lt;br /&gt;
Blueprint: https://blueprints.launchpad.net/trove/+spec/backup-metadata&lt;br /&gt;
&lt;br /&gt;
== Justification/Benefits ==&lt;br /&gt;
* This will allow filtering the backups list by datastore type (and version?) &lt;br /&gt;
* Eventually allow the api to restrict which datastore a backup could be restored to. (mysql -&amp;gt; mysql) (redis -&amp;gt; redis) &lt;br /&gt;
&lt;br /&gt;
== Impacts ==&lt;br /&gt;
&lt;br /&gt;
=== Configuration === &lt;br /&gt;
None&lt;br /&gt;
&lt;br /&gt;
=== Database ===&lt;br /&gt;
* The backup table will need to have a foreign key to the Datastore Version table.&lt;br /&gt;
* This will require a migration to add the foreign key to all existing records&lt;br /&gt;
&lt;br /&gt;
=== Public API ===&lt;br /&gt;
* This will add the datastore type and version to the API Response&lt;br /&gt;
* This will also add the ability to filter the backup list by datastore&lt;br /&gt;
&lt;br /&gt;
==== CLI interface====&lt;br /&gt;
* This will add a single param to backup-list command '--datastore' to filter the list by that datastore &lt;br /&gt;
&lt;br /&gt;
==== ReST Part ====&lt;br /&gt;
==== New backup list Response: ====&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
HTTP/1.1 200 OK&lt;br /&gt;
Content-Type: application/json&lt;br /&gt;
Via: 1.1 Repose (Repose/2.6.7)&lt;br /&gt;
Content-Length: 663&lt;br /&gt;
Date: Thu, 13 Feb 2014 21:47:16 GMT&lt;br /&gt;
Server: Jetty(8.0.y.z-SNAPSHOT)&lt;br /&gt;
 &lt;br /&gt;
{&lt;br /&gt;
    &amp;quot;backups&amp;quot;: [&lt;br /&gt;
        {&lt;br /&gt;
            &amp;quot;created&amp;quot;: &amp;quot;2014-02-13T21:47:16&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;description&amp;quot;: &amp;quot;My Backup&amp;quot;, &lt;br /&gt;
            &amp;quot;id&amp;quot;: &amp;quot;014cfa93-fd0e-4e9d-871f-da8bb2eeee3e&amp;quot;, &lt;br /&gt;
            &amp;quot;instance_id&amp;quot;: &amp;quot;dcf2c32b-241d-4c39-af70-1001dfe946d6&amp;quot;, &lt;br /&gt;
            &amp;quot;locationRef&amp;quot;: &amp;quot;http://localhost/path/to/backup&amp;quot;, &lt;br /&gt;
            &amp;quot;name&amp;quot;: &amp;quot;snapshot&amp;quot;, &lt;br /&gt;
            &amp;quot;parent_id&amp;quot;: null, &lt;br /&gt;
            &amp;quot;size&amp;quot;: null, &lt;br /&gt;
            &amp;quot;status&amp;quot;: &amp;quot;COMPLETED&amp;quot;, &lt;br /&gt;
            &amp;quot;updated&amp;quot;: &amp;quot;2014-02-13T21:47:16&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;
==== New Backup GET by ID ====&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
HTTP/1.1 200 OK&lt;br /&gt;
Content-Type: application/json&lt;br /&gt;
Via: 1.1 Repose (Repose/2.6.7)&lt;br /&gt;
Content-Length: 335&lt;br /&gt;
Date: Thu, 13 Feb 2014 21:47:16 GMT&lt;br /&gt;
Server: Jetty(8.0.y.z-SNAPSHOT)&lt;br /&gt;
 &lt;br /&gt;
{&lt;br /&gt;
    &amp;quot;backup&amp;quot;: {&lt;br /&gt;
        &amp;quot;created&amp;quot;: &amp;quot;2014-02-13T21:47:16&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;description&amp;quot;: &amp;quot;My Backup&amp;quot;, &lt;br /&gt;
        &amp;quot;id&amp;quot;: &amp;quot;61f12fef-edb1-4561-8122-e7c00ef26a82&amp;quot;, &lt;br /&gt;
        &amp;quot;instance_id&amp;quot;: &amp;quot;d4603f69-ec7e-4e9b-803f-600b9205576f&amp;quot;, &lt;br /&gt;
        &amp;quot;locationRef&amp;quot;: &amp;quot;http://localhost/path/to/backup&amp;quot;, &lt;br /&gt;
        &amp;quot;name&amp;quot;: &amp;quot;snapshot&amp;quot;, &lt;br /&gt;
        &amp;quot;parent_id&amp;quot;: null, &lt;br /&gt;
        &amp;quot;size&amp;quot;: null, &lt;br /&gt;
        &amp;quot;status&amp;quot;: &amp;quot;COMPLETED&amp;quot;, &lt;br /&gt;
        &amp;quot;updated&amp;quot;: &amp;quot;2014-02-13T21:47:16&amp;quot;&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Internal API ===&lt;br /&gt;
* No change in the internal api, only to the initial model creation code in the backup models.&lt;br /&gt;
==== RPC API description====&lt;br /&gt;
* No change&lt;br /&gt;
&lt;br /&gt;
=== Guest Agent ===&lt;br /&gt;
* No Change&lt;/div&gt;</summary>
		<author><name>Robert Myers</name></author>	</entry>

	<entry>
		<id>https://wiki.openstack.org/w/index.php?title=Trove/backup-metadata&amp;diff=48636</id>
		<title>Trove/backup-metadata</title>
		<link rel="alternate" type="text/html" href="https://wiki.openstack.org/w/index.php?title=Trove/backup-metadata&amp;diff=48636"/>
				<updated>2014-04-14T16:15:38Z</updated>
		
		<summary type="html">&lt;p&gt;Robert Myers: /* ReST Part */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Description ==&lt;br /&gt;
This blueprint will add the datastore and version to the backups api response.&lt;br /&gt;
&lt;br /&gt;
== Justification/Benefits ==&lt;br /&gt;
* This will allow filtering the backups list by datastore type (and version?) &lt;br /&gt;
* Eventually allow the api to restrict which datastore a backup could be restored to. (mysql -&amp;gt; mysql) (redis -&amp;gt; redis) &lt;br /&gt;
&lt;br /&gt;
== Impacts ==&lt;br /&gt;
&lt;br /&gt;
=== Configuration === &lt;br /&gt;
None&lt;br /&gt;
&lt;br /&gt;
=== Database ===&lt;br /&gt;
* The backup table will need to have a foreign key to the Datastore Version table.&lt;br /&gt;
* This will require a migration to add the foreign key to all existing records&lt;br /&gt;
&lt;br /&gt;
=== Public API ===&lt;br /&gt;
* This will add the datastore type and version to the API Response&lt;br /&gt;
* This will also add the ability to filter the backup list by datastore&lt;br /&gt;
&lt;br /&gt;
==== CLI interface====&lt;br /&gt;
* This will add a single param to backup-list command '--datastore' to filter the list by that datastore &lt;br /&gt;
&lt;br /&gt;
==== ReST Part ====&lt;br /&gt;
==== New backup list Response: ====&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
HTTP/1.1 200 OK&lt;br /&gt;
Content-Type: application/json&lt;br /&gt;
Via: 1.1 Repose (Repose/2.6.7)&lt;br /&gt;
Content-Length: 663&lt;br /&gt;
Date: Thu, 13 Feb 2014 21:47:16 GMT&lt;br /&gt;
Server: Jetty(8.0.y.z-SNAPSHOT)&lt;br /&gt;
 &lt;br /&gt;
{&lt;br /&gt;
    &amp;quot;backups&amp;quot;: [&lt;br /&gt;
        {&lt;br /&gt;
            &amp;quot;created&amp;quot;: &amp;quot;2014-02-13T21:47:16&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;description&amp;quot;: &amp;quot;My Backup&amp;quot;, &lt;br /&gt;
            &amp;quot;id&amp;quot;: &amp;quot;014cfa93-fd0e-4e9d-871f-da8bb2eeee3e&amp;quot;, &lt;br /&gt;
            &amp;quot;instance_id&amp;quot;: &amp;quot;dcf2c32b-241d-4c39-af70-1001dfe946d6&amp;quot;, &lt;br /&gt;
            &amp;quot;locationRef&amp;quot;: &amp;quot;http://localhost/path/to/backup&amp;quot;, &lt;br /&gt;
            &amp;quot;name&amp;quot;: &amp;quot;snapshot&amp;quot;, &lt;br /&gt;
            &amp;quot;parent_id&amp;quot;: null, &lt;br /&gt;
            &amp;quot;size&amp;quot;: null, &lt;br /&gt;
            &amp;quot;status&amp;quot;: &amp;quot;COMPLETED&amp;quot;, &lt;br /&gt;
            &amp;quot;updated&amp;quot;: &amp;quot;2014-02-13T21:47:16&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;
==== New Backup GET by ID ====&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
HTTP/1.1 200 OK&lt;br /&gt;
Content-Type: application/json&lt;br /&gt;
Via: 1.1 Repose (Repose/2.6.7)&lt;br /&gt;
Content-Length: 335&lt;br /&gt;
Date: Thu, 13 Feb 2014 21:47:16 GMT&lt;br /&gt;
Server: Jetty(8.0.y.z-SNAPSHOT)&lt;br /&gt;
 &lt;br /&gt;
{&lt;br /&gt;
    &amp;quot;backup&amp;quot;: {&lt;br /&gt;
        &amp;quot;created&amp;quot;: &amp;quot;2014-02-13T21:47:16&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;description&amp;quot;: &amp;quot;My Backup&amp;quot;, &lt;br /&gt;
        &amp;quot;id&amp;quot;: &amp;quot;61f12fef-edb1-4561-8122-e7c00ef26a82&amp;quot;, &lt;br /&gt;
        &amp;quot;instance_id&amp;quot;: &amp;quot;d4603f69-ec7e-4e9b-803f-600b9205576f&amp;quot;, &lt;br /&gt;
        &amp;quot;locationRef&amp;quot;: &amp;quot;http://localhost/path/to/backup&amp;quot;, &lt;br /&gt;
        &amp;quot;name&amp;quot;: &amp;quot;snapshot&amp;quot;, &lt;br /&gt;
        &amp;quot;parent_id&amp;quot;: null, &lt;br /&gt;
        &amp;quot;size&amp;quot;: null, &lt;br /&gt;
        &amp;quot;status&amp;quot;: &amp;quot;COMPLETED&amp;quot;, &lt;br /&gt;
        &amp;quot;updated&amp;quot;: &amp;quot;2014-02-13T21:47:16&amp;quot;&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Internal API ===&lt;br /&gt;
* No change in the internal api, only to the initial model creation code in the backup models.&lt;br /&gt;
==== RPC API description====&lt;br /&gt;
* No change&lt;br /&gt;
&lt;br /&gt;
=== Guest Agent ===&lt;br /&gt;
* No Change&lt;/div&gt;</summary>
		<author><name>Robert Myers</name></author>	</entry>

	<entry>
		<id>https://wiki.openstack.org/w/index.php?title=Trove/backup-metadata&amp;diff=48635</id>
		<title>Trove/backup-metadata</title>
		<link rel="alternate" type="text/html" href="https://wiki.openstack.org/w/index.php?title=Trove/backup-metadata&amp;diff=48635"/>
				<updated>2014-04-14T16:13:12Z</updated>
		
		<summary type="html">&lt;p&gt;Robert Myers: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Description ==&lt;br /&gt;
This blueprint will add the datastore and version to the backups api response.&lt;br /&gt;
&lt;br /&gt;
== Justification/Benefits ==&lt;br /&gt;
* This will allow filtering the backups list by datastore type (and version?) &lt;br /&gt;
* Eventually allow the api to restrict which datastore a backup could be restored to. (mysql -&amp;gt; mysql) (redis -&amp;gt; redis) &lt;br /&gt;
&lt;br /&gt;
== Impacts ==&lt;br /&gt;
&lt;br /&gt;
=== Configuration === &lt;br /&gt;
None&lt;br /&gt;
&lt;br /&gt;
=== Database ===&lt;br /&gt;
* The backup table will need to have a foreign key to the Datastore Version table.&lt;br /&gt;
* This will require a migration to add the foreign key to all existing records&lt;br /&gt;
&lt;br /&gt;
=== Public API ===&lt;br /&gt;
* This will add the datastore type and version to the API Response&lt;br /&gt;
* This will also add the ability to filter the backup list by datastore&lt;br /&gt;
&lt;br /&gt;
==== CLI interface====&lt;br /&gt;
* This will add a single param to backup-list command '--datastore' to filter the list by that datastore &lt;br /&gt;
&lt;br /&gt;
==== ReST Part ====&lt;br /&gt;
New backup list Response:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
HTTP/1.1 200 OK&lt;br /&gt;
Content-Type: application/json&lt;br /&gt;
Via: 1.1 Repose (Repose/2.6.7)&lt;br /&gt;
Content-Length: 663&lt;br /&gt;
Date: Thu, 13 Feb 2014 21:47:16 GMT&lt;br /&gt;
Server: Jetty(8.0.y.z-SNAPSHOT)&lt;br /&gt;
 &lt;br /&gt;
{&lt;br /&gt;
    &amp;quot;backups&amp;quot;: [&lt;br /&gt;
        {&lt;br /&gt;
            &amp;quot;created&amp;quot;: &amp;quot;2014-02-13T21:47:16&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;description&amp;quot;: &amp;quot;My Backup&amp;quot;, &lt;br /&gt;
            &amp;quot;id&amp;quot;: &amp;quot;014cfa93-fd0e-4e9d-871f-da8bb2eeee3e&amp;quot;, &lt;br /&gt;
            &amp;quot;instance_id&amp;quot;: &amp;quot;dcf2c32b-241d-4c39-af70-1001dfe946d6&amp;quot;, &lt;br /&gt;
            &amp;quot;locationRef&amp;quot;: &amp;quot;http://localhost/path/to/backup&amp;quot;, &lt;br /&gt;
            &amp;quot;name&amp;quot;: &amp;quot;snapshot&amp;quot;, &lt;br /&gt;
            &amp;quot;parent_id&amp;quot;: null, &lt;br /&gt;
            &amp;quot;size&amp;quot;: null, &lt;br /&gt;
            &amp;quot;status&amp;quot;: &amp;quot;COMPLETED&amp;quot;, &lt;br /&gt;
            &amp;quot;updated&amp;quot;: &amp;quot;2014-02-13T21:47:16&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;
=== Internal API ===&lt;br /&gt;
* No change in the internal api, only to the initial model creation code in the backup models.&lt;br /&gt;
==== RPC API description====&lt;br /&gt;
* No change&lt;br /&gt;
&lt;br /&gt;
=== Guest Agent ===&lt;br /&gt;
* No Change&lt;/div&gt;</summary>
		<author><name>Robert Myers</name></author>	</entry>

	<entry>
		<id>https://wiki.openstack.org/w/index.php?title=Trove/backup-metadata&amp;diff=48634</id>
		<title>Trove/backup-metadata</title>
		<link rel="alternate" type="text/html" href="https://wiki.openstack.org/w/index.php?title=Trove/backup-metadata&amp;diff=48634"/>
				<updated>2014-04-14T16:11:33Z</updated>
		
		<summary type="html">&lt;p&gt;Robert Myers: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Description ==&lt;br /&gt;
This blueprint will add the datastore and version to the backups api response.&lt;br /&gt;
&lt;br /&gt;
== Justification/Benefits ==&lt;br /&gt;
* This will allow filtering the backups list by datastore type (and version?) &lt;br /&gt;
* Eventually allow the api to restrict which datastore a backup could be restored to. (mysql -&amp;gt; mysql) (redis -&amp;gt; redis) &lt;br /&gt;
&lt;br /&gt;
== Impacts ==&lt;br /&gt;
&lt;br /&gt;
=== Configuration === &lt;br /&gt;
None&lt;br /&gt;
&lt;br /&gt;
=== Database ===&lt;br /&gt;
* The backup table will need to have a foreign key to the Datastore Version table.&lt;br /&gt;
* This will require a migration to add the foreign key to all existing records&lt;br /&gt;
&lt;br /&gt;
=== Public API ===&lt;br /&gt;
* This will add the datastore type and version to the API Response&lt;br /&gt;
* This will also add the ability to filter the backup list by datastore&lt;br /&gt;
&lt;br /&gt;
==== CLI interface====&lt;br /&gt;
* This will add a single param to backup-list command '--datastore' to filter the list by that datastore &lt;br /&gt;
&lt;br /&gt;
==== ReST Part ====&lt;br /&gt;
New backup list Response:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
HTTP/1.1 200 OK&lt;br /&gt;
Content-Type: application/json&lt;br /&gt;
Via: 1.1 Repose (Repose/2.6.7)&lt;br /&gt;
Content-Length: 663&lt;br /&gt;
Date: Thu, 13 Feb 2014 21:47:16 GMT&lt;br /&gt;
Server: Jetty(8.0.y.z-SNAPSHOT)&lt;br /&gt;
 &lt;br /&gt;
{&lt;br /&gt;
    &amp;quot;backups&amp;quot;: [&lt;br /&gt;
        {&lt;br /&gt;
            &amp;quot;created&amp;quot;: &amp;quot;2014-02-13T21:47:16&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;description&amp;quot;: &amp;quot;My Backup&amp;quot;, &lt;br /&gt;
            &amp;quot;id&amp;quot;: &amp;quot;014cfa93-fd0e-4e9d-871f-da8bb2eeee3e&amp;quot;, &lt;br /&gt;
            &amp;quot;instance_id&amp;quot;: &amp;quot;dcf2c32b-241d-4c39-af70-1001dfe946d6&amp;quot;, &lt;br /&gt;
            &amp;quot;locationRef&amp;quot;: &amp;quot;http://localhost/path/to/backup&amp;quot;, &lt;br /&gt;
            &amp;quot;name&amp;quot;: &amp;quot;snapshot&amp;quot;, &lt;br /&gt;
            &amp;quot;parent_id&amp;quot;: null, &lt;br /&gt;
            &amp;quot;size&amp;quot;: null, &lt;br /&gt;
            &amp;quot;status&amp;quot;: &amp;quot;COMPLETED&amp;quot;, &lt;br /&gt;
            &amp;quot;updated&amp;quot;: &amp;quot;2014-02-13T21:47:16&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;
=== Internal API ===&lt;br /&gt;
* Does this change any internal messages between API and Task Manager or Task Manager to Guest&lt;br /&gt;
==== RPC API description====&lt;br /&gt;
* Method name.&lt;br /&gt;
* Method parameters.&lt;br /&gt;
* Message type (cast/call).&lt;br /&gt;
&lt;br /&gt;
=== Guest Agent ===&lt;br /&gt;
* Does this change behavior on the Guest Agent? If so, is it backwards compatible with API and Task Manager?&lt;/div&gt;</summary>
		<author><name>Robert Myers</name></author>	</entry>

	<entry>
		<id>https://wiki.openstack.org/w/index.php?title=Trove/backup-metadata&amp;diff=48619</id>
		<title>Trove/backup-metadata</title>
		<link rel="alternate" type="text/html" href="https://wiki.openstack.org/w/index.php?title=Trove/backup-metadata&amp;diff=48619"/>
				<updated>2014-04-14T15:30:27Z</updated>
		
		<summary type="html">&lt;p&gt;Robert Myers: Created page with &amp;quot;== Description == Describe the purpose of the enhancement  == Justification/Benefits == * What is the driving force behind this change?   * Does it allow for great flexibility...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Description ==&lt;br /&gt;
Describe the purpose of the enhancement&lt;br /&gt;
&lt;br /&gt;
== Justification/Benefits ==&lt;br /&gt;
* What is the driving force behind this change?  &lt;br /&gt;
* Does it allow for great flexibility? Stability? Security?&lt;br /&gt;
&lt;br /&gt;
== Impacts ==&lt;br /&gt;
&lt;br /&gt;
=== Configuration === &lt;br /&gt;
* Does this impact any configuration files? If so, which ones?&lt;br /&gt;
&lt;br /&gt;
=== Database ===&lt;br /&gt;
* Does this impact any existing tables?  If so, which ones?&lt;br /&gt;
* Are the changes forward and backward compatible? &lt;br /&gt;
* Be sure to include the expected migration process&lt;br /&gt;
&lt;br /&gt;
=== Public API ===&lt;br /&gt;
* Does this change any API that an end-user has access to?&lt;br /&gt;
* Are there any exceptions in terms of consistency with other APIs?&lt;br /&gt;
&lt;br /&gt;
==== CLI interface====&lt;br /&gt;
* How the command will look like?&lt;br /&gt;
* Does it extends the already existed command interfaces ?&lt;br /&gt;
&lt;br /&gt;
==== ReST Part ====&lt;br /&gt;
* Which HTTP methods added ?&lt;br /&gt;
* Which routes were added/modified/extended?&lt;br /&gt;
* How does the Request body look like?&lt;br /&gt;
* How does the Response object look like?&lt;br /&gt;
&lt;br /&gt;
=== Internal API ===&lt;br /&gt;
* Does this change any internal messages between API and Task Manager or Task Manager to Guest&lt;br /&gt;
==== RPC API description====&lt;br /&gt;
* Method name.&lt;br /&gt;
* Method parameters.&lt;br /&gt;
* Message type (cast/call).&lt;br /&gt;
&lt;br /&gt;
=== Guest Agent ===&lt;br /&gt;
* Does this change behavior on the Guest Agent? If so, is it backwards compatible with API and Task Manager?&lt;/div&gt;</summary>
		<author><name>Robert Myers</name></author>	</entry>

	<entry>
		<id>https://wiki.openstack.org/w/index.php?title=Trove/MoveTroveGuest&amp;diff=47704</id>
		<title>Trove/MoveTroveGuest</title>
		<link rel="alternate" type="text/html" href="https://wiki.openstack.org/w/index.php?title=Trove/MoveTroveGuest&amp;diff=47704"/>
				<updated>2014-04-03T21:49:18Z</updated>
		
		<summary type="html">&lt;p&gt;Robert Myers: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
== Description ==&lt;br /&gt;
Currently the Trove Guest Agent code is contained in the trove module. This blueprint goal is to split the guest agent specific code into another top level module called 'troveguest'. This will eventually be split out completely into another repository, the first step is to refactor the code so it is no longer dependent on trove core. &lt;br /&gt;
&lt;br /&gt;
== Justification/Benefits ==&lt;br /&gt;
* Simplify installation of the guest agent on instances.&lt;br /&gt;
* Reduce the amount of code that is deployed on instances.&lt;br /&gt;
* Lower the memory footprint of the guest agent by not importing unnecessary code from Trove core.&lt;br /&gt;
&lt;br /&gt;
== Impacts ==&lt;br /&gt;
* The setup.cfg will need to setup the new module along with trove. See [https://github.com/openstack/horizon/blob/master/setup.cfg#L31 horizon] for an example.&lt;br /&gt;
* An example setup.cfg for just packaging the guest agent will be added along with a build_guest.py helper script.&lt;br /&gt;
* Some in flight reviews will have a difficult rebase. (Cores will also need to be careful to merge them in order to minimize impact)&lt;br /&gt;
&lt;br /&gt;
=== Configuration === &lt;br /&gt;
* A new top level olso.cfg for the troveguest will be added. (This should be a small subset of the values in trove.common.cfg)&lt;br /&gt;
* The values in trove.common.cfg that are specifically for the guest will be removed.&lt;br /&gt;
* It is possible that some configuration values will need to be added or duplicated. &lt;br /&gt;
&lt;br /&gt;
=== Database ===&lt;br /&gt;
None&lt;br /&gt;
&lt;br /&gt;
=== Public API ===&lt;br /&gt;
None&lt;br /&gt;
&lt;br /&gt;
=== Internal API ===&lt;br /&gt;
None&lt;br /&gt;
&lt;br /&gt;
=== Guest Agent ===&lt;br /&gt;
# The guest agent code will be moved to a top level module in the existing trove repository called 'troveguest'. &lt;br /&gt;
# The import statements will be changed from 'trove.guestagent' to 'troveguest' &lt;br /&gt;
# Some common code will need to be duplicated within the troveguest so that there are no dependancies on the trove core. (This should hopefully be minimal)&lt;br /&gt;
# The code that currently rsync's the code over to instances in development will be changed to just include the 'troveguest' module. (It is possible that another delivery method will be used, however that should probably be done in its own blueprint)&lt;/div&gt;</summary>
		<author><name>Robert Myers</name></author>	</entry>

	<entry>
		<id>https://wiki.openstack.org/w/index.php?title=Trove/MoveTroveGuest&amp;diff=47703</id>
		<title>Trove/MoveTroveGuest</title>
		<link rel="alternate" type="text/html" href="https://wiki.openstack.org/w/index.php?title=Trove/MoveTroveGuest&amp;diff=47703"/>
				<updated>2014-04-03T21:41:48Z</updated>
		
		<summary type="html">&lt;p&gt;Robert Myers: /* Guest Agent */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
== Description ==&lt;br /&gt;
Currently the Trove Guest Agent code is contained in the trove module. This blueprint goal is to split the guest agent specific code into another top level module called 'troveguest'. This will eventually be split out completely into another repository, the first step is to refactor the code so it is no longer dependent on trove core. &lt;br /&gt;
&lt;br /&gt;
== Justification/Benefits ==&lt;br /&gt;
* Simplify installation of the guest agent on instances.&lt;br /&gt;
* Reduce the amount of code that is deployed on instances.&lt;br /&gt;
* Lower the memory footprint of the guest agent by not importing unnecessary code from Trove core.&lt;br /&gt;
&lt;br /&gt;
== Impacts ==&lt;br /&gt;
* The setup.cfg will need to setup the new module along with trove. See [https://github.com/openstack/horizon/blob/master/setup.cfg#L31 horizon] for an example.&lt;br /&gt;
* An example setup.cfg for just packaging the guest agent will be added along with a build_guest.py helper script.&lt;br /&gt;
* Some in flight reviews will have a difficult rebase. (Cores will also need to be careful to merge them in order to minimize impact)&lt;br /&gt;
&lt;br /&gt;
=== Configuration === &lt;br /&gt;
Configuration values should stay the same&lt;br /&gt;
&lt;br /&gt;
=== Database ===&lt;br /&gt;
None&lt;br /&gt;
&lt;br /&gt;
=== Public API ===&lt;br /&gt;
None&lt;br /&gt;
&lt;br /&gt;
==== CLI interface====&lt;br /&gt;
None&lt;br /&gt;
&lt;br /&gt;
==== ReST Part ====&lt;br /&gt;
No Change&lt;br /&gt;
&lt;br /&gt;
=== Internal API ===&lt;br /&gt;
No Change&lt;br /&gt;
&lt;br /&gt;
==== RPC API description====&lt;br /&gt;
No Change&lt;br /&gt;
&lt;br /&gt;
=== Guest Agent ===&lt;br /&gt;
# The guest agent code will be moved to a top level module in the existing trove repository called 'troveguest'. &lt;br /&gt;
# The import statements will be changed from 'trove.guestagent' to 'troveguest' &lt;br /&gt;
# Some common code will need to be duplicated within the troveguest so that there are no dependancies on the trove core. (This should hopefully be minimal)&lt;br /&gt;
# The code that currently rsync's the code over to instances in development will be changed to just include the 'troveguest' module. (It is possible that another delivery method will be used, however that should probably be done in its own blueprint)&lt;/div&gt;</summary>
		<author><name>Robert Myers</name></author>	</entry>

	<entry>
		<id>https://wiki.openstack.org/w/index.php?title=Trove/MoveTroveGuest&amp;diff=47702</id>
		<title>Trove/MoveTroveGuest</title>
		<link rel="alternate" type="text/html" href="https://wiki.openstack.org/w/index.php?title=Trove/MoveTroveGuest&amp;diff=47702"/>
				<updated>2014-04-03T21:41:00Z</updated>
		
		<summary type="html">&lt;p&gt;Robert Myers: /* Guest Agent */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
== Description ==&lt;br /&gt;
Currently the Trove Guest Agent code is contained in the trove module. This blueprint goal is to split the guest agent specific code into another top level module called 'troveguest'. This will eventually be split out completely into another repository, the first step is to refactor the code so it is no longer dependent on trove core. &lt;br /&gt;
&lt;br /&gt;
== Justification/Benefits ==&lt;br /&gt;
* Simplify installation of the guest agent on instances.&lt;br /&gt;
* Reduce the amount of code that is deployed on instances.&lt;br /&gt;
* Lower the memory footprint of the guest agent by not importing unnecessary code from Trove core.&lt;br /&gt;
&lt;br /&gt;
== Impacts ==&lt;br /&gt;
* The setup.cfg will need to setup the new module along with trove. See [https://github.com/openstack/horizon/blob/master/setup.cfg#L31 horizon] for an example.&lt;br /&gt;
* An example setup.cfg for just packaging the guest agent will be added along with a build_guest.py helper script.&lt;br /&gt;
* Some in flight reviews will have a difficult rebase. (Cores will also need to be careful to merge them in order to minimize impact)&lt;br /&gt;
&lt;br /&gt;
=== Configuration === &lt;br /&gt;
Configuration values should stay the same&lt;br /&gt;
&lt;br /&gt;
=== Database ===&lt;br /&gt;
None&lt;br /&gt;
&lt;br /&gt;
=== Public API ===&lt;br /&gt;
None&lt;br /&gt;
&lt;br /&gt;
==== CLI interface====&lt;br /&gt;
None&lt;br /&gt;
&lt;br /&gt;
==== ReST Part ====&lt;br /&gt;
No Change&lt;br /&gt;
&lt;br /&gt;
=== Internal API ===&lt;br /&gt;
No Change&lt;br /&gt;
&lt;br /&gt;
==== RPC API description====&lt;br /&gt;
No Change&lt;br /&gt;
&lt;br /&gt;
=== Guest Agent ===&lt;br /&gt;
1. The guest agent code will be moved to a top level module in the existing trove repository called 'troveguest'. &lt;br /&gt;
2. The import statements will be changed from 'trove.guestagent' to 'troveguest' &lt;br /&gt;
3. Some common code will need to be duplicated within the troveguest so that there are no dependancies on the trove core. (This should hopefully be minimal)&lt;br /&gt;
4. The code that currently rsync's the code over to instances in development will be changed to just include the 'troveguest' module. (It is possible that another delivery method will be used, however that should probably be done in its own blueprint)&lt;/div&gt;</summary>
		<author><name>Robert Myers</name></author>	</entry>

	<entry>
		<id>https://wiki.openstack.org/w/index.php?title=Trove/MoveTroveGuest&amp;diff=47701</id>
		<title>Trove/MoveTroveGuest</title>
		<link rel="alternate" type="text/html" href="https://wiki.openstack.org/w/index.php?title=Trove/MoveTroveGuest&amp;diff=47701"/>
				<updated>2014-04-03T21:32:37Z</updated>
		
		<summary type="html">&lt;p&gt;Robert Myers: Created page with &amp;quot; == Description == Currently the Trove Guest Agent code is contained in the trove module. This blueprint goal is to split the guest agent specific code into another top level...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
== Description ==&lt;br /&gt;
Currently the Trove Guest Agent code is contained in the trove module. This blueprint goal is to split the guest agent specific code into another top level module called 'troveguest'. This will eventually be split out completely into another repository, the first step is to refactor the code so it is no longer dependent on trove core. &lt;br /&gt;
&lt;br /&gt;
== Justification/Benefits ==&lt;br /&gt;
* Simplify installation of the guest agent on instances.&lt;br /&gt;
* Reduce the amount of code that is deployed on instances.&lt;br /&gt;
* Lower the memory footprint of the guest agent by not importing unnecessary code from Trove core.&lt;br /&gt;
&lt;br /&gt;
== Impacts ==&lt;br /&gt;
* The setup.cfg will need to setup the new module along with trove. See [https://github.com/openstack/horizon/blob/master/setup.cfg#L31 horizon] for an example.&lt;br /&gt;
* An example setup.cfg for just packaging the guest agent will be added along with a build_guest.py helper script.&lt;br /&gt;
* Some in flight reviews will have a difficult rebase. (Cores will also need to be careful to merge them in order to minimize impact)&lt;br /&gt;
&lt;br /&gt;
=== Configuration === &lt;br /&gt;
Configuration values should stay the same&lt;br /&gt;
&lt;br /&gt;
=== Database ===&lt;br /&gt;
None&lt;br /&gt;
&lt;br /&gt;
=== Public API ===&lt;br /&gt;
None&lt;br /&gt;
&lt;br /&gt;
==== CLI interface====&lt;br /&gt;
None&lt;br /&gt;
&lt;br /&gt;
==== ReST Part ====&lt;br /&gt;
No Change&lt;br /&gt;
&lt;br /&gt;
=== Internal API ===&lt;br /&gt;
No Change&lt;br /&gt;
&lt;br /&gt;
==== RPC API description====&lt;br /&gt;
No Change&lt;br /&gt;
&lt;br /&gt;
=== Guest Agent ===&lt;br /&gt;
* The code will be moved to another path and all import statements will be refactored.&lt;br /&gt;
* A new method for deploying the guest agent to the instance will be explored.&lt;/div&gt;</summary>
		<author><name>Robert Myers</name></author>	</entry>

	<entry>
		<id>https://wiki.openstack.org/w/index.php?title=Trove/incremental-backups&amp;diff=40387</id>
		<title>Trove/incremental-backups</title>
		<link rel="alternate" type="text/html" href="https://wiki.openstack.org/w/index.php?title=Trove/incremental-backups&amp;diff=40387"/>
				<updated>2014-01-23T15:56:15Z</updated>
		
		<summary type="html">&lt;p&gt;Robert Myers: /* Incremental Workflow */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Incremental Backups ==&lt;br /&gt;
&lt;br /&gt;
Adding support for incremental backups and restores. The main difference between this and the current manual backups will be that these will be deleted when the instance is deleted. This is intended to be run as a backend scheduled task. &lt;br /&gt;
&lt;br /&gt;
https://wiki.openstack.org/wiki/Trove/scheduled-tasks&lt;br /&gt;
&lt;br /&gt;
=== Storing Metadata===&lt;br /&gt;
&lt;br /&gt;
In order to create incremental backups we need to store a little extra information in full backups and incremental ones. &lt;br /&gt;
&lt;br /&gt;
* Add 'parent_id' field to the backups table in trove:&lt;br /&gt;
&lt;br /&gt;
      &amp;lt;pre&amp;gt;&lt;br /&gt;
         ALTER TABLE `backups`&lt;br /&gt;
           ADD COLUMN `parent_id` varchar(36) DEFAULT NULL;&lt;br /&gt;
       &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*  Use swift metadata http://docs.openstack.org/api/openstack-object-storage/1.0/content/object-metadata.html to store any extra metadata for the backup.&lt;br /&gt;
&lt;br /&gt;
      &amp;lt;pre&amp;gt;&lt;br /&gt;
        curl –X POST -i \&lt;br /&gt;
            -H &amp;quot;X-Auth-Token: my-token&amp;quot; \&lt;br /&gt;
            -H &amp;quot;X-Object-Meta-Parent: https://storage.com/v1/XXX/path_to_parent_backup&amp;quot;&amp;quot; \&lt;br /&gt;
            -H &amp;quot;X-Object-Meta-LSN: 123456789&amp;quot; \&lt;br /&gt;
            https://storage.com/v1/XXX/path_to_incremental_backup&lt;br /&gt;
       &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Incremental Workflow ===&lt;br /&gt;
&lt;br /&gt;
API:&lt;br /&gt;
&lt;br /&gt;
* Another full or incremental backup must be made by the user or an automated system. (This backup ID is used as the parent ID)&lt;br /&gt;
* An api call is made to run an incremental backup (one new optional field: 'parent_id'):&lt;br /&gt;
    &amp;lt;pre&amp;gt;&lt;br /&gt;
      POST /backups &lt;br /&gt;
     {'name': 'incremental-backup-name',&lt;br /&gt;
      'instance_id': 'instance_id',&lt;br /&gt;
      'parent_id': '&amp;lt;parent_id&amp;gt;'}&lt;br /&gt;
     &amp;lt;/pre&amp;gt;&lt;br /&gt;
* A entry in the backup table is created.&lt;br /&gt;
* The backup handler looks up the information on the parent backup (error if it doesn't exist)&lt;br /&gt;
* A message is sent to the guest to run the backup&lt;br /&gt;
    &amp;lt;pre&amp;gt;&lt;br /&gt;
      backup_info = {&lt;br /&gt;
       'backup_type': 'incremental',&lt;br /&gt;
       'backup_location': &amp;lt;location&amp;gt;,&lt;br /&gt;
       'parent': {&lt;br /&gt;
              'location': &amp;lt;parent location&amp;gt;,&lt;br /&gt;
              'checksum': &amp;lt;parent file checksum&amp;gt;&lt;br /&gt;
          }&lt;br /&gt;
       }&lt;br /&gt;
     &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
GUEST:&lt;br /&gt;
* Backup agent will be changed to accept a type passed in by the api.&lt;br /&gt;
* A new backup type of increamental uses the meta data to preform the restore. For xtrabackup this requires passing a 'lsn' number to the backup command:&lt;br /&gt;
     &amp;lt;pre&amp;gt;&lt;br /&gt;
        /usr/bin/innobackupex  --stream --ibbackup=xtrabackup \&lt;br /&gt;
           --incremental --incremental-lsn=%(lsn)s /var/lib/mysql&lt;br /&gt;
      &amp;lt;/pre&amp;gt;&lt;br /&gt;
* After a successful backup record meta data along with other backup info (location, checksum, etc) For xtrabackup that will include the last LSN number of the backup.&lt;br /&gt;
&lt;br /&gt;
=== Full backup changes (innobackupex) ===&lt;br /&gt;
&lt;br /&gt;
Change the current backup process to add the meta data from the backup process.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
def check_process():&lt;br /&gt;
     # check for 'completed OK!'&lt;br /&gt;
     # parse out the LSN number&lt;br /&gt;
     # update meta data property on backup&lt;br /&gt;
     return True&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Restore Workflow (metadata in db) ===&lt;br /&gt;
&lt;br /&gt;
During the create instance call if a backup ID is passed in restorePoint the api will need to change slightly:&lt;br /&gt;
&lt;br /&gt;
API:&lt;br /&gt;
* Check that the backup file exists and checksum matches.&lt;br /&gt;
* Check if the backup has a parent&lt;br /&gt;
    a. Check that parent exists/checksum matches and add to the backup_info object&lt;br /&gt;
    b. Check if the parent backup has a parent and repeat&lt;br /&gt;
* Send the backup_info to the guest to do the restore.&lt;br /&gt;
&lt;br /&gt;
GUEST:&lt;br /&gt;
* Read the backup_info and select the correct restore logic by backup_type&lt;br /&gt;
* Preform restore on all parents if they exist.&lt;br /&gt;
* Preform restore on backup&lt;br /&gt;
* Finish guest install&lt;/div&gt;</summary>
		<author><name>Robert Myers</name></author>	</entry>

	<entry>
		<id>https://wiki.openstack.org/w/index.php?title=Trove/incremental-backups&amp;diff=40386</id>
		<title>Trove/incremental-backups</title>
		<link rel="alternate" type="text/html" href="https://wiki.openstack.org/w/index.php?title=Trove/incremental-backups&amp;diff=40386"/>
				<updated>2014-01-23T15:53:58Z</updated>
		
		<summary type="html">&lt;p&gt;Robert Myers: /* Incremental Workflow */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Incremental Backups ==&lt;br /&gt;
&lt;br /&gt;
Adding support for incremental backups and restores. The main difference between this and the current manual backups will be that these will be deleted when the instance is deleted. This is intended to be run as a backend scheduled task. &lt;br /&gt;
&lt;br /&gt;
https://wiki.openstack.org/wiki/Trove/scheduled-tasks&lt;br /&gt;
&lt;br /&gt;
=== Storing Metadata===&lt;br /&gt;
&lt;br /&gt;
In order to create incremental backups we need to store a little extra information in full backups and incremental ones. &lt;br /&gt;
&lt;br /&gt;
* Add 'parent_id' field to the backups table in trove:&lt;br /&gt;
&lt;br /&gt;
      &amp;lt;pre&amp;gt;&lt;br /&gt;
         ALTER TABLE `backups`&lt;br /&gt;
           ADD COLUMN `parent_id` varchar(36) DEFAULT NULL;&lt;br /&gt;
       &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*  Use swift metadata http://docs.openstack.org/api/openstack-object-storage/1.0/content/object-metadata.html to store any extra metadata for the backup.&lt;br /&gt;
&lt;br /&gt;
      &amp;lt;pre&amp;gt;&lt;br /&gt;
        curl –X POST -i \&lt;br /&gt;
            -H &amp;quot;X-Auth-Token: my-token&amp;quot; \&lt;br /&gt;
            -H &amp;quot;X-Object-Meta-Parent: https://storage.com/v1/XXX/path_to_parent_backup&amp;quot;&amp;quot; \&lt;br /&gt;
            -H &amp;quot;X-Object-Meta-LSN: 123456789&amp;quot; \&lt;br /&gt;
            https://storage.com/v1/XXX/path_to_incremental_backup&lt;br /&gt;
       &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Incremental Workflow ===&lt;br /&gt;
&lt;br /&gt;
API:&lt;br /&gt;
&lt;br /&gt;
* A full backup must be made by the user or an automated system. (This backup ID is used as the parent ID)&lt;br /&gt;
* An api call is made to run an incremental backup (two new optional fields):&lt;br /&gt;
    &amp;lt;pre&amp;gt;&lt;br /&gt;
      POST /backups &lt;br /&gt;
     {'name': 'incremental-backup-name',&lt;br /&gt;
      'instance_id': 'instance_id',&lt;br /&gt;
      'parent_id': '&amp;lt;parent_id&amp;gt;'}&lt;br /&gt;
     &amp;lt;/pre&amp;gt;&lt;br /&gt;
* A entry in the backup table is created.&lt;br /&gt;
* The backup handler looks up the information on the parent backup (error if it doesn't exist)&lt;br /&gt;
* A message is sent to the guest to run the backup&lt;br /&gt;
    &amp;lt;pre&amp;gt;&lt;br /&gt;
      backup_info = {&lt;br /&gt;
       'backup_type': 'incremental',&lt;br /&gt;
       'backup_location': &amp;lt;location&amp;gt;,&lt;br /&gt;
       'parent': {&lt;br /&gt;
              'location': &amp;lt;parent location&amp;gt;,&lt;br /&gt;
              'checksum': &amp;lt;parent file checksum&amp;gt;&lt;br /&gt;
          }&lt;br /&gt;
       }&lt;br /&gt;
     &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
GUEST:&lt;br /&gt;
* Backup agent will be changed to accept a type passed in by the api.&lt;br /&gt;
* A new backup type of increamental uses the meta data to preform the restore. For xtrabackup this requires passing a 'lsn' number to the backup command:&lt;br /&gt;
     &amp;lt;pre&amp;gt;&lt;br /&gt;
        /usr/bin/innobackupex  --stream --ibbackup=xtrabackup \&lt;br /&gt;
           --incremental --incremental-lsn=%(lsn)s /var/lib/mysql&lt;br /&gt;
      &amp;lt;/pre&amp;gt;&lt;br /&gt;
* After a successful backup record meta data along with other backup info (location, checksum, etc) For xtrabackup that will include the last LSN number of the backup.&lt;br /&gt;
&lt;br /&gt;
=== Full backup changes (innobackupex) ===&lt;br /&gt;
&lt;br /&gt;
Change the current backup process to add the meta data from the backup process.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
def check_process():&lt;br /&gt;
     # check for 'completed OK!'&lt;br /&gt;
     # parse out the LSN number&lt;br /&gt;
     # update meta data property on backup&lt;br /&gt;
     return True&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Restore Workflow (metadata in db) ===&lt;br /&gt;
&lt;br /&gt;
During the create instance call if a backup ID is passed in restorePoint the api will need to change slightly:&lt;br /&gt;
&lt;br /&gt;
API:&lt;br /&gt;
* Check that the backup file exists and checksum matches.&lt;br /&gt;
* Check if the backup has a parent&lt;br /&gt;
    a. Check that parent exists/checksum matches and add to the backup_info object&lt;br /&gt;
    b. Check if the parent backup has a parent and repeat&lt;br /&gt;
* Send the backup_info to the guest to do the restore.&lt;br /&gt;
&lt;br /&gt;
GUEST:&lt;br /&gt;
* Read the backup_info and select the correct restore logic by backup_type&lt;br /&gt;
* Preform restore on all parents if they exist.&lt;br /&gt;
* Preform restore on backup&lt;br /&gt;
* Finish guest install&lt;/div&gt;</summary>
		<author><name>Robert Myers</name></author>	</entry>

	<entry>
		<id>https://wiki.openstack.org/w/index.php?title=Trove/incremental-backups&amp;diff=40384</id>
		<title>Trove/incremental-backups</title>
		<link rel="alternate" type="text/html" href="https://wiki.openstack.org/w/index.php?title=Trove/incremental-backups&amp;diff=40384"/>
				<updated>2014-01-23T15:51:28Z</updated>
		
		<summary type="html">&lt;p&gt;Robert Myers: /* Storing Metadata */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Incremental Backups ==&lt;br /&gt;
&lt;br /&gt;
Adding support for incremental backups and restores. The main difference between this and the current manual backups will be that these will be deleted when the instance is deleted. This is intended to be run as a backend scheduled task. &lt;br /&gt;
&lt;br /&gt;
https://wiki.openstack.org/wiki/Trove/scheduled-tasks&lt;br /&gt;
&lt;br /&gt;
=== Storing Metadata===&lt;br /&gt;
&lt;br /&gt;
In order to create incremental backups we need to store a little extra information in full backups and incremental ones. &lt;br /&gt;
&lt;br /&gt;
* Add 'parent_id' field to the backups table in trove:&lt;br /&gt;
&lt;br /&gt;
      &amp;lt;pre&amp;gt;&lt;br /&gt;
         ALTER TABLE `backups`&lt;br /&gt;
           ADD COLUMN `parent_id` varchar(36) DEFAULT NULL;&lt;br /&gt;
       &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*  Use swift metadata http://docs.openstack.org/api/openstack-object-storage/1.0/content/object-metadata.html to store any extra metadata for the backup.&lt;br /&gt;
&lt;br /&gt;
      &amp;lt;pre&amp;gt;&lt;br /&gt;
        curl –X POST -i \&lt;br /&gt;
            -H &amp;quot;X-Auth-Token: my-token&amp;quot; \&lt;br /&gt;
            -H &amp;quot;X-Object-Meta-Parent: https://storage.com/v1/XXX/path_to_parent_backup&amp;quot;&amp;quot; \&lt;br /&gt;
            -H &amp;quot;X-Object-Meta-LSN: 123456789&amp;quot; \&lt;br /&gt;
            https://storage.com/v1/XXX/path_to_incremental_backup&lt;br /&gt;
       &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Incremental Workflow ===&lt;br /&gt;
&lt;br /&gt;
API:&lt;br /&gt;
&lt;br /&gt;
* A full backup must be made by the user or an automated system. (This backup ID is used as the parent ID)&lt;br /&gt;
* An api call is made to run an incremental backup (two new optional fields):&lt;br /&gt;
    &amp;lt;pre&amp;gt;&lt;br /&gt;
      POST /backups &lt;br /&gt;
     {'backup_type': 'incremental',&lt;br /&gt;
      'instance_id': 'instance_id',&lt;br /&gt;
      'parent_id': '&amp;lt;parent_id&amp;gt;'}&lt;br /&gt;
     &amp;lt;/pre&amp;gt;&lt;br /&gt;
* A entry in the backup table is created.&lt;br /&gt;
* The backup handler looks up the information on the parent backup (error if it doesn't exist)&lt;br /&gt;
* A message is sent to the guest to run the backup&lt;br /&gt;
    &amp;lt;pre&amp;gt;&lt;br /&gt;
      backup_info = {&lt;br /&gt;
       'backup_type': 'incremental',&lt;br /&gt;
       'meta': &amp;lt;meta_info_from_parent&amp;gt;,&lt;br /&gt;
       'backup_location': &amp;lt;location&amp;gt;}&lt;br /&gt;
     &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
GUEST:&lt;br /&gt;
* Backup agent will be changed to accept a type passed in by the api.&lt;br /&gt;
* A new backup type of increamental uses the meta data to preform the restore. For xtrabackup this requires passing a 'lsn' number to the backup command:&lt;br /&gt;
     &amp;lt;pre&amp;gt;&lt;br /&gt;
        /usr/bin/innobackupex  --stream --ibbackup=xtrabackup \&lt;br /&gt;
           --incremental --incremental-lsn=%(lsn)s /var/lib/mysql&lt;br /&gt;
      &amp;lt;/pre&amp;gt;&lt;br /&gt;
* After a successful backup record meta data along with other backup info (location, checksum, etc) For xtrabackup that will include the last LSN number of the backup. &lt;br /&gt;
&lt;br /&gt;
=== Full backup changes (innobackupex) ===&lt;br /&gt;
&lt;br /&gt;
Change the current backup process to add the meta data from the backup process.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
def check_process():&lt;br /&gt;
     # check for 'completed OK!'&lt;br /&gt;
     # parse out the LSN number&lt;br /&gt;
     # update meta data property on backup&lt;br /&gt;
     return True&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Restore Workflow (metadata in db) ===&lt;br /&gt;
&lt;br /&gt;
During the create instance call if a backup ID is passed in restorePoint the api will need to change slightly:&lt;br /&gt;
&lt;br /&gt;
API:&lt;br /&gt;
* Check that the backup file exists and checksum matches.&lt;br /&gt;
* Check if the backup has a parent&lt;br /&gt;
    a. Check that parent exists/checksum matches and add to the backup_info object&lt;br /&gt;
    b. Check if the parent backup has a parent and repeat&lt;br /&gt;
* Send the backup_info to the guest to do the restore.&lt;br /&gt;
&lt;br /&gt;
GUEST:&lt;br /&gt;
* Read the backup_info and select the correct restore logic by backup_type&lt;br /&gt;
* Preform restore on all parents if they exist.&lt;br /&gt;
* Preform restore on backup&lt;br /&gt;
* Finish guest install&lt;/div&gt;</summary>
		<author><name>Robert Myers</name></author>	</entry>

	<entry>
		<id>https://wiki.openstack.org/w/index.php?title=Meetings/TroveMeeting&amp;diff=36682</id>
		<title>Meetings/TroveMeeting</title>
		<link rel="alternate" type="text/html" href="https://wiki.openstack.org/w/index.php?title=Meetings/TroveMeeting&amp;diff=36682"/>
				<updated>2013-11-27T17:55:34Z</updated>
		
		<summary type="html">&lt;p&gt;Robert Myers: /* 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 18: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;
* Use jinja for guest agent configuration (rmyers)&lt;br /&gt;
* Old Version History in gerrit (HOW DID I NOT KNOW ABOUT THIS?!?!)&lt;br /&gt;
* Moving the reference guest into its own repo.&lt;br /&gt;
* Party and Profit&lt;br /&gt;
* Update reddwarft job without envolving -infra to add ability to launch custom test groups (denis_makogon)&lt;br /&gt;
** cassandra&lt;br /&gt;
** mongo&lt;br /&gt;
** redis&lt;br /&gt;
** postgresql&lt;br /&gt;
* Ability to choose config.template by datastore version (denis_makogon)&lt;/div&gt;</summary>
		<author><name>Robert Myers</name></author>	</entry>

	<entry>
		<id>https://wiki.openstack.org/w/index.php?title=Trove/incremental-backups&amp;diff=36045</id>
		<title>Trove/incremental-backups</title>
		<link rel="alternate" type="text/html" href="https://wiki.openstack.org/w/index.php?title=Trove/incremental-backups&amp;diff=36045"/>
				<updated>2013-11-20T16:04:03Z</updated>
		
		<summary type="html">&lt;p&gt;Robert Myers: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Incremental Backups ==&lt;br /&gt;
&lt;br /&gt;
Adding support for incremental backups and restores. The main difference between this and the current manual backups will be that these will be deleted when the instance is deleted. This is intended to be run as a backend scheduled task. &lt;br /&gt;
&lt;br /&gt;
https://wiki.openstack.org/wiki/Trove/scheduled-tasks&lt;br /&gt;
&lt;br /&gt;
=== Storing Metadata===&lt;br /&gt;
&lt;br /&gt;
In order to create incremental backups we need to store a little extra information in full backups and incremental ones. There are two options for storing this metadata for the incremental and full backups.&lt;br /&gt;
&lt;br /&gt;
* Add meta field to the backups table in trove:&lt;br /&gt;
&lt;br /&gt;
      &amp;lt;pre&amp;gt;&lt;br /&gt;
         ALTER TABLE `backups`&lt;br /&gt;
           ADD COLUMN `meta` varchar(1024) DEFAULT NULL;&lt;br /&gt;
           ADD COLUMN `parent_id` varchar(36) DEFAULT NULL;&lt;br /&gt;
           ADD COLUMN `automated` tinyint(1) DEFAULT 0;&lt;br /&gt;
       &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
: PROs: More secure as the data will be stored only in trove database.&lt;br /&gt;
&lt;br /&gt;
: CONs: The meta data will need to be passed to and from the guest, making the logic more complex.&lt;br /&gt;
&lt;br /&gt;
*  Use swift metadata http://docs.openstack.org/api/openstack-object-storage/1.0/content/object-metadata.html to store any extra metadata for the backup.&lt;br /&gt;
&lt;br /&gt;
      &amp;lt;pre&amp;gt;&lt;br /&gt;
        curl –X POST -i \&lt;br /&gt;
            -H &amp;quot;X-Auth-Token: my-token&amp;quot; \&lt;br /&gt;
            -H &amp;quot;X-Object-Meta-Parent: https://storage.com/v1/XXX/path_to_parent_backup&amp;quot;&amp;quot; \&lt;br /&gt;
            -H &amp;quot;X-Object-Meta-LSN: 123456789&amp;quot; \&lt;br /&gt;
            https://storage.com/v1/XXX/path_to_incremental_backup&lt;br /&gt;
       &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
: PROs: No database change. No need to pass extra info to the guest as a simple HEAD call on the swift file will get the meta info. The guest can easily update the metadata on the swift objects it writes.&lt;br /&gt;
&lt;br /&gt;
: CONs: Less secure as users can change these fields (possibly this field could be encrypted with the same key as the backups)&lt;br /&gt;
 &lt;br /&gt;
=== Incremental Workflow ===&lt;br /&gt;
&lt;br /&gt;
API:&lt;br /&gt;
&lt;br /&gt;
* A full backup must be made by the user or an automated system. (This backup ID is used as the parent ID)&lt;br /&gt;
* An api call is made to run an incremental backup (two new optional fields):&lt;br /&gt;
    &amp;lt;pre&amp;gt;&lt;br /&gt;
      POST /backups &lt;br /&gt;
     {'backup_type': 'incremental',&lt;br /&gt;
      'instance_id': 'instance_id',&lt;br /&gt;
      'parent_id': '&amp;lt;parent_id&amp;gt;'}&lt;br /&gt;
     &amp;lt;/pre&amp;gt;&lt;br /&gt;
* A entry in the backup table is created.&lt;br /&gt;
* The backup handler looks up the information on the parent backup (error if it doesn't exist)&lt;br /&gt;
* A message is sent to the guest to run the backup&lt;br /&gt;
    &amp;lt;pre&amp;gt;&lt;br /&gt;
      backup_info = {&lt;br /&gt;
       'backup_type': 'incremental',&lt;br /&gt;
       'meta': &amp;lt;meta_info_from_parent&amp;gt;,&lt;br /&gt;
       'backup_location': &amp;lt;location&amp;gt;}&lt;br /&gt;
     &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
GUEST:&lt;br /&gt;
* Backup agent will be changed to accept a type passed in by the api.&lt;br /&gt;
* A new backup type of increamental uses the meta data to preform the restore. For xtrabackup this requires passing a 'lsn' number to the backup command:&lt;br /&gt;
     &amp;lt;pre&amp;gt;&lt;br /&gt;
        /usr/bin/innobackupex  --stream --ibbackup=xtrabackup \&lt;br /&gt;
           --incremental --incremental-lsn=%(lsn)s /var/lib/mysql&lt;br /&gt;
      &amp;lt;/pre&amp;gt;&lt;br /&gt;
* After a successful backup record meta data along with other backup info (location, checksum, etc) For xtrabackup that will include the last LSN number of the backup. &lt;br /&gt;
&lt;br /&gt;
=== Full backup changes (innobackupex) ===&lt;br /&gt;
&lt;br /&gt;
Change the current backup process to add the meta data from the backup process.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
def check_process():&lt;br /&gt;
     # check for 'completed OK!'&lt;br /&gt;
     # parse out the LSN number&lt;br /&gt;
     # update meta data property on backup&lt;br /&gt;
     return True&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Restore Workflow (metadata in db) ===&lt;br /&gt;
&lt;br /&gt;
During the create instance call if a backup ID is passed in restorePoint the api will need to change slightly:&lt;br /&gt;
&lt;br /&gt;
API:&lt;br /&gt;
* Check that the backup file exists and checksum matches.&lt;br /&gt;
* Check if the backup has a parent&lt;br /&gt;
    a. Check that parent exists/checksum matches and add to the backup_info object&lt;br /&gt;
    b. Check if the parent backup has a parent and repeat&lt;br /&gt;
* Send the backup_info to the guest to do the restore.&lt;br /&gt;
&lt;br /&gt;
GUEST:&lt;br /&gt;
* Read the backup_info and select the correct restore logic by backup_type&lt;br /&gt;
* Preform restore on all parents if they exist.&lt;br /&gt;
* Preform restore on backup&lt;br /&gt;
* Finish guest install&lt;/div&gt;</summary>
		<author><name>Robert Myers</name></author>	</entry>

	<entry>
		<id>https://wiki.openstack.org/w/index.php?title=Trove/incremental-backups&amp;diff=36044</id>
		<title>Trove/incremental-backups</title>
		<link rel="alternate" type="text/html" href="https://wiki.openstack.org/w/index.php?title=Trove/incremental-backups&amp;diff=36044"/>
				<updated>2013-11-20T16:02:23Z</updated>
		
		<summary type="html">&lt;p&gt;Robert Myers: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Incremental Backups ==&lt;br /&gt;
&lt;br /&gt;
Adding support for incremental backups and restores. The main difference between this and the current manual backups will be that these will be deleted when the instance is deleted. This is intended to be run as a backend scheduled task. &lt;br /&gt;
&lt;br /&gt;
https://wiki.openstack.org/wiki/Trove/scheduled-tasks&lt;br /&gt;
&lt;br /&gt;
=== Storing Metadata===&lt;br /&gt;
&lt;br /&gt;
In order to create incremental backups we need to store a little extra information in full backups and incremental ones. There are two options for storing this metadata for the incremental and full backups.&lt;br /&gt;
&lt;br /&gt;
* Add meta field to the backups table in trove:&lt;br /&gt;
&lt;br /&gt;
      &amp;lt;pre&amp;gt;&lt;br /&gt;
         ALTER TABLE `backups`&lt;br /&gt;
           ADD COLUMN `meta` varchar(1024) DEFAULT NULL;&lt;br /&gt;
           ADD COLUMN `parent_id` varchar(36) DEFAULT NULL;&lt;br /&gt;
           ADD COLUMN `automated` tinyint(1) DEFAULT 0;&lt;br /&gt;
       &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
: PROs: More secure as the data will be stored only in trove database.&lt;br /&gt;
&lt;br /&gt;
: CONs: The meta data will need to be passed to and from the guest, making the logic more complex.&lt;br /&gt;
&lt;br /&gt;
*  Use swift metadata http://docs.openstack.org/api/openstack-object-storage/1.0/content/object-metadata.html to store any extra metadata for the backup.&lt;br /&gt;
&lt;br /&gt;
      &amp;lt;pre&amp;gt;&lt;br /&gt;
        curl –X POST -i \&lt;br /&gt;
            -H &amp;quot;X-Auth-Token: my-token&amp;quot; \&lt;br /&gt;
            -H &amp;quot;X-Object-Meta-Parent: https://storage.com/v1/XXX/path_to_parent_backup&amp;quot;&amp;quot; \&lt;br /&gt;
            -H &amp;quot;X-Object-Meta-LSN: 123456789&amp;quot; \&lt;br /&gt;
            https://storage.com/v1/XXX/path_to_incremental_backup&lt;br /&gt;
       &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
: PROs: No database change. No need to pass extra info to the guest as a simple HEAD call on the swift file will get the meta info. The guest can easily update the metadata on the swift objects it writes.&lt;br /&gt;
&lt;br /&gt;
: CONs: Less secure as users can change these fields (possibly this field could be encrypted with the same key as the backups)&lt;br /&gt;
 &lt;br /&gt;
=== Incremental Workflow ===&lt;br /&gt;
&lt;br /&gt;
API:&lt;br /&gt;
&lt;br /&gt;
* A full backup must be made by the user or an automated system. (This backup ID is used as the parent ID)&lt;br /&gt;
* An api call is made to run an incremental backup (two new optional fields):&lt;br /&gt;
    &amp;lt;pre&amp;gt;&lt;br /&gt;
      POST /backups &lt;br /&gt;
     {'backup_type': 'incremental',&lt;br /&gt;
      'instance_id': 'instance_id',&lt;br /&gt;
      'parent_id': '&amp;lt;parent_id&amp;gt;'}&lt;br /&gt;
     &amp;lt;/pre&amp;gt;&lt;br /&gt;
* A entry in the backup table is created.&lt;br /&gt;
* The backup handler looks up the information on the parent backup (error if it doesn't exist)&lt;br /&gt;
* A message is sent to the guest to run the backup&lt;br /&gt;
    &amp;lt;pre&amp;gt;&lt;br /&gt;
      backup_info = {&lt;br /&gt;
       'backup_type': 'incremental',&lt;br /&gt;
       'meta': &amp;lt;meta_info_from_parent&amp;gt;,&lt;br /&gt;
       'parent_location': &amp;lt;parent_location&amp;gt;,&lt;br /&gt;
       'parent_id': &amp;lt;parent_id&amp;gt;}&lt;br /&gt;
     &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
GUEST:&lt;br /&gt;
* Backup agent will be changed to accept a type passed in by the api.&lt;br /&gt;
* A new backup type of increamental uses the meta data to preform the restore. For xtrabackup this requires passing a 'lsn' number to the backup command:&lt;br /&gt;
     &amp;lt;pre&amp;gt;&lt;br /&gt;
        /usr/bin/innobackupex  --stream --ibbackup=xtrabackup \&lt;br /&gt;
           --incremental --incremental-lsn=%(lsn)s /var/lib/mysql&lt;br /&gt;
      &amp;lt;/pre&amp;gt;&lt;br /&gt;
* After a successful backup record meta data along with other backup info (location, checksum, etc) For xtrabackup that will include the last LSN number of the backup. &lt;br /&gt;
&lt;br /&gt;
=== Full backup changes (innobackupex) ===&lt;br /&gt;
&lt;br /&gt;
Change the current backup process to add the meta data from the backup process.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
def check_process():&lt;br /&gt;
     # check for 'completed OK!'&lt;br /&gt;
     # parse out the LSN number&lt;br /&gt;
     # update meta data property on backup&lt;br /&gt;
     return True&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Restore Workflow (metadata in db) ===&lt;br /&gt;
&lt;br /&gt;
During the create instance call if a backup ID is passed in restorePoint the api will need to change slightly:&lt;br /&gt;
&lt;br /&gt;
API:&lt;br /&gt;
* Check that the backup file exists and checksum matches.&lt;br /&gt;
* Check if the backup has a parent&lt;br /&gt;
    a. Check that parent exists/checksum matches and add to the backup_info object&lt;br /&gt;
    b. Check if the parent backup has a parent and repeat&lt;br /&gt;
* Send the backup_info to the guest to do the restore.&lt;br /&gt;
&lt;br /&gt;
GUEST:&lt;br /&gt;
* Read the backup_info and select the correct restore logic by backup_type&lt;br /&gt;
* Preform restore on all parents if they exist.&lt;br /&gt;
* Preform restore on backup&lt;br /&gt;
* Finish guest install&lt;/div&gt;</summary>
		<author><name>Robert Myers</name></author>	</entry>

	<entry>
		<id>https://wiki.openstack.org/w/index.php?title=Trove/incremental-backups&amp;diff=36043</id>
		<title>Trove/incremental-backups</title>
		<link rel="alternate" type="text/html" href="https://wiki.openstack.org/w/index.php?title=Trove/incremental-backups&amp;diff=36043"/>
				<updated>2013-11-20T16:01:11Z</updated>
		
		<summary type="html">&lt;p&gt;Robert Myers: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Incremental Backups ==&lt;br /&gt;
&lt;br /&gt;
Adding support for incremental backups and restores. The main difference between this and the current manual backups will be that these will be deleted when the instance is deleted. This is intended to be run as a backend scheduled task. &lt;br /&gt;
&lt;br /&gt;
https://wiki.openstack.org/wiki/Trove/scheduled-tasks&lt;br /&gt;
&lt;br /&gt;
=== Storing Metadata===&lt;br /&gt;
&lt;br /&gt;
In order to create incremental backups we need to store a little extra information in full backups and incremental ones. There are two options for storing this metadata for the incremental and full backups.&lt;br /&gt;
&lt;br /&gt;
* Add meta field to the backups table in trove:&lt;br /&gt;
&lt;br /&gt;
:      &amp;lt;pre&amp;gt;&lt;br /&gt;
:         ALTER TABLE `backups`&lt;br /&gt;
:           ADD COLUMN `meta` varchar(1024) DEFAULT NULL;&lt;br /&gt;
:           ADD COLUMN `parent_id` varchar(36) DEFAULT NULL;&lt;br /&gt;
:           ADD COLUMN `automated` tinyint(1) DEFAULT 0;&lt;br /&gt;
:       &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
PROs: More secure as the data will be stored only in trove database.&lt;br /&gt;
&lt;br /&gt;
CONs: The meta data will need to be passed to and from the guest, making the logic more complex.&lt;br /&gt;
&lt;br /&gt;
*  Use swift metadata http://docs.openstack.org/api/openstack-object-storage/1.0/content/object-metadata.html to store any extra metadata for the backup.&lt;br /&gt;
&lt;br /&gt;
      &amp;lt;pre&amp;gt;&lt;br /&gt;
        curl –X POST -i \&lt;br /&gt;
            -H &amp;quot;X-Auth-Token: my-token&amp;quot; \&lt;br /&gt;
            -H &amp;quot;X-Object-Meta-Parent: https://storage.com/v1/XXX/path_to_parent_backup&amp;quot;&amp;quot; \&lt;br /&gt;
            -H &amp;quot;X-Object-Meta-LSN: 123456789&amp;quot; \&lt;br /&gt;
            https://storage.com/v1/XXX/path_to_incremental_backup&lt;br /&gt;
       &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
PROs: No database change. No need to pass extra info to the guest as a simple HEAD call on the swift file will get the meta info. The guest can easily update the metadata on the swift objects it writes.&lt;br /&gt;
&lt;br /&gt;
CONs: Less secure as users can change these fields (possibly this field could be encrypted with the same key as the backups)&lt;br /&gt;
 &lt;br /&gt;
=== Incremental Workflow ===&lt;br /&gt;
&lt;br /&gt;
API:&lt;br /&gt;
&lt;br /&gt;
* A full backup must be made by the user or an automated system. (This backup ID is used as the parent ID)&lt;br /&gt;
* An api call is made to run an incremental backup (two new optional fields):&lt;br /&gt;
    &amp;lt;pre&amp;gt;&lt;br /&gt;
      POST /backups &lt;br /&gt;
     {'backup_type': 'incremental',&lt;br /&gt;
      'instance_id': 'instance_id',&lt;br /&gt;
      'parent_id': '&amp;lt;parent_id&amp;gt;'}&lt;br /&gt;
     &amp;lt;/pre&amp;gt;&lt;br /&gt;
* A entry in the backup table is created.&lt;br /&gt;
* The backup handler looks up the information on the parent backup (error if it doesn't exist)&lt;br /&gt;
* A message is sent to the guest to run the backup&lt;br /&gt;
    &amp;lt;pre&amp;gt;&lt;br /&gt;
      backup_info = {&lt;br /&gt;
       'backup_type': 'incremental',&lt;br /&gt;
       'meta': &amp;lt;meta_info_from_parent&amp;gt;,&lt;br /&gt;
       'parent_location': &amp;lt;parent_location&amp;gt;,&lt;br /&gt;
       'parent_id': &amp;lt;parent_id&amp;gt;}&lt;br /&gt;
     &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
GUEST:&lt;br /&gt;
* Backup agent will be changed to accept a type passed in by the api.&lt;br /&gt;
* A new backup type of increamental uses the meta data to preform the restore. For xtrabackup this requires passing a 'lsn' number to the backup command:&lt;br /&gt;
     &amp;lt;pre&amp;gt;&lt;br /&gt;
        /usr/bin/innobackupex  --stream --ibbackup=xtrabackup \&lt;br /&gt;
           --incremental --incremental-lsn=%(lsn)s /var/lib/mysql&lt;br /&gt;
      &amp;lt;/pre&amp;gt;&lt;br /&gt;
* After a successful backup record meta data along with other backup info (location, checksum, etc) For xtrabackup that will include the last LSN number of the backup. &lt;br /&gt;
&lt;br /&gt;
=== Full backup changes (innobackupex) ===&lt;br /&gt;
&lt;br /&gt;
Change the current backup process to add the meta data from the backup process.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
def check_process():&lt;br /&gt;
     # check for 'completed OK!'&lt;br /&gt;
     # parse out the LSN number&lt;br /&gt;
     # update meta data property on backup&lt;br /&gt;
     return True&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Restore Workflow (metadata in db) ===&lt;br /&gt;
&lt;br /&gt;
During the create instance call if a backup ID is passed in restorePoint the api will need to change slightly:&lt;br /&gt;
&lt;br /&gt;
API:&lt;br /&gt;
* Check that the backup file exists and checksum matches.&lt;br /&gt;
* Check if the backup has a parent&lt;br /&gt;
    a. Check that parent exists/checksum matches and add to the backup_info object&lt;br /&gt;
    b. Check if the parent backup has a parent and repeat&lt;br /&gt;
* Send the backup_info to the guest to do the restore.&lt;br /&gt;
&lt;br /&gt;
GUEST:&lt;br /&gt;
* Read the backup_info and select the correct restore logic by backup_type&lt;br /&gt;
* Preform restore on all parents if they exist.&lt;br /&gt;
* Preform restore on backup&lt;br /&gt;
* Finish guest install&lt;/div&gt;</summary>
		<author><name>Robert Myers</name></author>	</entry>

	<entry>
		<id>https://wiki.openstack.org/w/index.php?title=Trove/incremental-backups&amp;diff=36042</id>
		<title>Trove/incremental-backups</title>
		<link rel="alternate" type="text/html" href="https://wiki.openstack.org/w/index.php?title=Trove/incremental-backups&amp;diff=36042"/>
				<updated>2013-11-20T15:58:12Z</updated>
		
		<summary type="html">&lt;p&gt;Robert Myers: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Incremental Backups ==&lt;br /&gt;
&lt;br /&gt;
Adding support for incremental backups and restores. The main difference between this and the current manual backups will be that these will be deleted when the instance is deleted. This is intended to be run as a backend scheduled task. &lt;br /&gt;
&lt;br /&gt;
https://wiki.openstack.org/wiki/Trove/scheduled-tasks&lt;br /&gt;
&lt;br /&gt;
=== Storing Metadata===&lt;br /&gt;
&lt;br /&gt;
In order to create incremental backups we need to store a little extra information in full backups and incremental ones. There are two options for storing this metadata for the incremental and full backups.&lt;br /&gt;
&lt;br /&gt;
# Add meta field to the backups table in trove:&lt;br /&gt;
&lt;br /&gt;
      &amp;lt;pre&amp;gt;&lt;br /&gt;
         ALTER TABLE `backups`&lt;br /&gt;
           ADD COLUMN `meta` varchar(1024) DEFAULT NULL;&lt;br /&gt;
           ADD COLUMN `parent_id` varchar(36) DEFAULT NULL;&lt;br /&gt;
           ADD COLUMN `automated` tinyint(1) DEFAULT 0;&lt;br /&gt;
       &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* PRO: More secure as the data will be stored only in trove database.&lt;br /&gt;
* CON: The meta data will need to be passed to and from the guest, making the logic more complex.&lt;br /&gt;
&lt;br /&gt;
#  Use swift metadata http://docs.openstack.org/api/openstack-object-storage/1.0/content/object-metadata.html to store any extra metadata for the backup.&lt;br /&gt;
&lt;br /&gt;
      &amp;lt;pre&amp;gt;&lt;br /&gt;
        curl –X POST -i \&lt;br /&gt;
            -H &amp;quot;X-Auth-Token: my-token&amp;quot; \&lt;br /&gt;
            -H &amp;quot;X-Object-Meta-Parent: https://storage.com/v1/XXX/path_to_parent_backup&amp;quot;&amp;quot; \&lt;br /&gt;
            -H &amp;quot;X-Object-Meta-LSN: 123456789&amp;quot; \&lt;br /&gt;
            https://storage.com/v1/XXX/path_to_incremental_backup&lt;br /&gt;
       &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* PRO: No database change. No need to pass extra info to the guest as a simple HEAD call on the swift file will get the meta info. The guest can easily update the metadata on the swift objects it writes.&lt;br /&gt;
* CON: Less secure as users can change these fields (possibly this field could be encrypted with the same key as the backups)&lt;br /&gt;
 &lt;br /&gt;
=== Incremental Workflow ===&lt;br /&gt;
&lt;br /&gt;
API:&lt;br /&gt;
&lt;br /&gt;
# A full backup must be made by the user or an automated system. (This backup ID is used as the parent ID)&lt;br /&gt;
# An api call is made to run an incremental backup (two new optional fields):&lt;br /&gt;
    &amp;lt;pre&amp;gt;&lt;br /&gt;
      POST /backups &lt;br /&gt;
     {'backup_type': 'incremental',&lt;br /&gt;
      'instance_id': 'instance_id',&lt;br /&gt;
      'parent_id': '&amp;lt;parent_id&amp;gt;'}&lt;br /&gt;
     &amp;lt;/pre&amp;gt;&lt;br /&gt;
# A entry in the backup table is created.&lt;br /&gt;
# The backup handler looks up the information on the parent backup (error if it doesn't exist)&lt;br /&gt;
# A message is sent to the guest to run the backup&lt;br /&gt;
    &amp;lt;pre&amp;gt;&lt;br /&gt;
      backup_info = {&lt;br /&gt;
       'backup_type': 'incremental',&lt;br /&gt;
       'meta': &amp;lt;meta_info_from_parent&amp;gt;,&lt;br /&gt;
       'parent_location': &amp;lt;parent_location&amp;gt;,&lt;br /&gt;
       'parent_id': &amp;lt;parent_id&amp;gt;}&lt;br /&gt;
     &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
GUEST:&lt;br /&gt;
# Backup agent will be changed to accept a type passed in by the api.&lt;br /&gt;
# A new backup type of increamental uses the meta data to preform the restore. For xtrabackup this requires passing a 'lsn' number to the backup command:&lt;br /&gt;
     &amp;lt;pre&amp;gt;&lt;br /&gt;
        /usr/bin/innobackupex  --stream --ibbackup=xtrabackup \&lt;br /&gt;
           --incremental --incremental-lsn=%(lsn)s /var/lib/mysql&lt;br /&gt;
      &amp;lt;/pre&amp;gt;&lt;br /&gt;
# After a successful backup record meta data along with other backup info (location, checksum, etc) For xtrabackup that will include the last LSN number of the backup. &lt;br /&gt;
&lt;br /&gt;
=== Full backup changes (innobackupex) ===&lt;br /&gt;
&lt;br /&gt;
Change the current backup process to add the meta data from the backup process.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
def check_process():&lt;br /&gt;
     # check for 'completed OK!'&lt;br /&gt;
     # parse out the LSN number&lt;br /&gt;
     # update meta data property on backup&lt;br /&gt;
     return True&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Restore Workflow (metadata in db) ===&lt;br /&gt;
&lt;br /&gt;
During the create instance call if a backup ID is passed in restorePoint the api will need to change slightly:&lt;br /&gt;
&lt;br /&gt;
API:&lt;br /&gt;
# Check that the backup file exists and checksum matches.&lt;br /&gt;
# Check if the backup has a parent&lt;br /&gt;
    a. Check that parent exists/checksum matches and add to the backup_info object&lt;br /&gt;
    b. Check if the parent backup has a parent and repeat&lt;br /&gt;
# Send the backup_info to the guest to do the restore.&lt;br /&gt;
&lt;br /&gt;
GUEST:&lt;br /&gt;
# Read the backup_info and select the correct restore logic by backup_type&lt;br /&gt;
# Preform restore on all parents if they exist.&lt;br /&gt;
# Preform restore on backup&lt;br /&gt;
# Finish guest install&lt;/div&gt;</summary>
		<author><name>Robert Myers</name></author>	</entry>

	<entry>
		<id>https://wiki.openstack.org/w/index.php?title=Trove/incremental-backups&amp;diff=36041</id>
		<title>Trove/incremental-backups</title>
		<link rel="alternate" type="text/html" href="https://wiki.openstack.org/w/index.php?title=Trove/incremental-backups&amp;diff=36041"/>
				<updated>2013-11-20T15:55:12Z</updated>
		
		<summary type="html">&lt;p&gt;Robert Myers: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Incremental Backups ==&lt;br /&gt;
&lt;br /&gt;
Adding support for incremental backups and restores. The main difference between this and the current manual backups will be that these will be deleted when the instance is deleted. This is intended to be run as a backend scheduled task. &lt;br /&gt;
&lt;br /&gt;
https://wiki.openstack.org/wiki/Trove/scheduled-tasks&lt;br /&gt;
&lt;br /&gt;
=== Storing Metadata===&lt;br /&gt;
&lt;br /&gt;
In order to create incremental backups we need to store a little extra information in full backups and incremental ones. There are two options for storing this metadata for the incremental and full backups.&lt;br /&gt;
&lt;br /&gt;
# 1 Add meta field to the backups table in trove:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
ALTER TABLE `backups`&lt;br /&gt;
    ADD COLUMN `meta` varchar(1024) DEFAULT NULL;&lt;br /&gt;
    ADD COLUMN `parent_id` varchar(36) DEFAULT NULL;&lt;br /&gt;
    ADD COLUMN `automated` tinyint(1) DEFAULT 0;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* PRO: More secure as the data will be stored only in trove database.&lt;br /&gt;
* CON: The meta data will need to be passed to and from the guest, making the logic more complex.&lt;br /&gt;
&lt;br /&gt;
# 2. Use swift metadata http://docs.openstack.org/api/openstack-object-storage/1.0/content/object-metadata.html to store any extra metadata for the backup.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
curl –X POST -i \&lt;br /&gt;
    -H &amp;quot;X-Auth-Token: my-token&amp;quot; \&lt;br /&gt;
    -H &amp;quot;X-Object-Meta-Parent: https://storage.com/v1/XXX/path_to_parent_backup&amp;quot;&amp;quot; \&lt;br /&gt;
    -H &amp;quot;X-Object-Meta-LSN: 123456789&amp;quot; \&lt;br /&gt;
    https://storage.com/v1/XXX/path_to_incremental_backup&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* PRO: No database change. No need to pass extra info to the guest as a simple HEAD call on the swift file will get the meta info. The guest can easily update the metadata on the swift objects it writes.&lt;br /&gt;
* CON: Less secure as users can change these fields (possibly this field could be encrypted with the same key as the backups)&lt;br /&gt;
 &lt;br /&gt;
=== Incremental Workflow ===&lt;br /&gt;
&lt;br /&gt;
API:&lt;br /&gt;
&lt;br /&gt;
# 1. A full backup must be made by the user or an automated system. (This backup ID is used as the parent ID)&lt;br /&gt;
# 2. An api call is made to run an incremental backup (two new optional fields):&lt;br /&gt;
    &amp;lt;pre&amp;gt;&lt;br /&gt;
POST /backups &lt;br /&gt;
{'backup_type': 'incremental',&lt;br /&gt;
 'instance_id': 'instance_id',&lt;br /&gt;
'parent_id': '&amp;lt;parent_id&amp;gt;'}&lt;br /&gt;
    &amp;lt;/pre&amp;gt;&lt;br /&gt;
# 3. A entry in the backup table is created.&lt;br /&gt;
# 4. The backup handler looks up the information on the parent backup (error if it doesn't exist)&lt;br /&gt;
# 5. A message is sent to the guest to run the backup&lt;br /&gt;
   &amp;lt;pre&amp;gt;&lt;br /&gt;
backup_info = {&lt;br /&gt;
       'backup_type': 'incremental',&lt;br /&gt;
       'meta': &amp;lt;meta_info_from_parent&amp;gt;,&lt;br /&gt;
       'parent_location': &amp;lt;parent_location&amp;gt;,&lt;br /&gt;
       'parent_id': &amp;lt;parent_id&amp;gt;}&lt;br /&gt;
  &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
GUEST:&lt;br /&gt;
# 1. backup agent will be changed to accept a type passed in by the api.&lt;br /&gt;
# 2. A new backup type of increamental uses the meta data to preform the restore. For xtrabackup this requires passing a 'lsn' number to the backup command:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
/usr/bin/innobackupex  --stream --ibbackup=xtrabackup \&lt;br /&gt;
   --incremental --incremental-lsn=%(lsn)s&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
# 3. After a successful backup record meta data along with other backup info (location, checksum, etc) For xtrabackup that will include the last LSN number of the backup. &lt;br /&gt;
&lt;br /&gt;
=== Full backup changes (innobackupex) ===&lt;br /&gt;
&lt;br /&gt;
Change the current backup process to add the meta data from the backup process.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
def check_process():&lt;br /&gt;
     # check for 'completed OK!'&lt;br /&gt;
     # parse out the LSN number&lt;br /&gt;
     # update meta data property on backup&lt;br /&gt;
     return True&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Restore Workflow (metadata in db) ===&lt;br /&gt;
&lt;br /&gt;
During the create instance call if a backup ID is passed in restorePoint the api will need to change slightly:&lt;br /&gt;
&lt;br /&gt;
API:&lt;br /&gt;
# 1. Check that the backup file exists and checksum matches.&lt;br /&gt;
# 2. Check if the backup has a parent&lt;br /&gt;
    a. Check that parent exists/checksum matches and add to the backup_info object&lt;br /&gt;
    b. Check if the parent backup has a parent and repeat&lt;br /&gt;
# 3. Send the backup_info to the guest to do the restore.&lt;br /&gt;
&lt;br /&gt;
GUEST:&lt;br /&gt;
# 1. Read the backup_info and select the correct restore logic by backup_type&lt;br /&gt;
# 2. Preform restore on all parents if they exist.&lt;br /&gt;
# 3. Preform restore on backup&lt;br /&gt;
# 4. Finish guest install&lt;/div&gt;</summary>
		<author><name>Robert Myers</name></author>	</entry>

	<entry>
		<id>https://wiki.openstack.org/w/index.php?title=Trove/incremental-backups&amp;diff=36040</id>
		<title>Trove/incremental-backups</title>
		<link rel="alternate" type="text/html" href="https://wiki.openstack.org/w/index.php?title=Trove/incremental-backups&amp;diff=36040"/>
				<updated>2013-11-20T15:52:13Z</updated>
		
		<summary type="html">&lt;p&gt;Robert Myers: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Incremental Backups ==&lt;br /&gt;
&lt;br /&gt;
Adding support for incremental backups and restores. The main difference between this and the current manual backups will be that these will be deleted when the instance is deleted. This is intended to be run as a backend scheduled task. &lt;br /&gt;
&lt;br /&gt;
https://wiki.openstack.org/wiki/Trove/scheduled-tasks&lt;br /&gt;
&lt;br /&gt;
=== Storing Metadata===&lt;br /&gt;
&lt;br /&gt;
In order to create incremental backups we need to store a little extra information in full backups and incremental ones. There are two options for storing this metadata for the incremental and full backups.&lt;br /&gt;
&lt;br /&gt;
1. Add meta field to the backups table in trove:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
ALTER TABLE `backups`&lt;br /&gt;
    ADD COLUMN `meta` varchar(1024) DEFAULT NULL;&lt;br /&gt;
    ADD COLUMN `parent_id` varchar(36) DEFAULT NULL;&lt;br /&gt;
    ADD COLUMN `automated` tinyint(1) DEFAULT 0;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* PRO: More secure as the data will be stored only in trove database.&lt;br /&gt;
* CON: The meta data will need to be passed to and from the guest, making the logic more complex.&lt;br /&gt;
&lt;br /&gt;
2. Use swift metadata http://docs.openstack.org/api/openstack-object-storage/1.0/content/object-metadata.html to store any extra metadata for the backup.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
curl –X POST -i \&lt;br /&gt;
    -H &amp;quot;X-Auth-Token: my-token&amp;quot; \&lt;br /&gt;
    -H &amp;quot;X-Object-Meta-Parent: https://storage.com/v1/XXX/path_to_parent_backup&amp;quot;&amp;quot; \&lt;br /&gt;
    -H &amp;quot;X-Object-Meta-LSN: 123456789&amp;quot; \&lt;br /&gt;
    https://storage.com/v1/XXX/path_to_incremental_backup&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* PRO: No database change. No need to pass extra info to the guest as a simple HEAD call on the swift file will get the meta info. The guest can easily update the metadata on the swift objects it writes.&lt;br /&gt;
* CON: Less secure as users can change these fields (possibly this field could be encrypted with the same key as the backups)&lt;br /&gt;
 &lt;br /&gt;
=== Incremental Workflow ===&lt;br /&gt;
&lt;br /&gt;
API:&lt;br /&gt;
&lt;br /&gt;
1. A full backup must be made by the user or an automated system. (This backup ID is used as the parent ID)&lt;br /&gt;
2. An api call is made to run an incremental backup (two new optional fields):&lt;br /&gt;
    &amp;lt;pre&amp;gt;&lt;br /&gt;
POST /backups &lt;br /&gt;
{'backup_type': 'incremental',&lt;br /&gt;
 'instance_id': 'instance_id',&lt;br /&gt;
'parent_id': '&amp;lt;parent_id&amp;gt;'}&lt;br /&gt;
    &amp;lt;/pre&amp;gt;&lt;br /&gt;
3. A entry in the backup table is created.&lt;br /&gt;
4. The backup handler looks up the information on the parent backup (error if it doesn't exist)&lt;br /&gt;
5. A message is sent to the guest to run the backup&lt;br /&gt;
   &amp;lt;pre&amp;gt;&lt;br /&gt;
backup_info = {&lt;br /&gt;
       'backup_type': 'incremental',&lt;br /&gt;
       'meta': &amp;lt;meta_info_from_parent&amp;gt;,&lt;br /&gt;
       'parent_location': &amp;lt;parent_location&amp;gt;,&lt;br /&gt;
       'parent_id': &amp;lt;parent_id&amp;gt;}&lt;br /&gt;
  &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
GUEST:&lt;br /&gt;
1. backup agent will be changed to accept a type passed in by the api.&lt;br /&gt;
2. A new backup type of increamental uses the meta data to preform the restore. For xtrabackup this requires passing a 'lsn' number to the backup command:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
/usr/bin/innobackupex  --stream --ibbackup=xtrabackup \&lt;br /&gt;
   --incremental --incremental-lsn=%(lsn)s&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
3. After a successful backup record meta data along with other backup info (location, checksum, etc) For xtrabackup that will include the last LSN number of the backup. &lt;br /&gt;
&lt;br /&gt;
=== Full backup changes (innobackupex) ===&lt;br /&gt;
&lt;br /&gt;
Change the current backup process to add the meta data from the backup process.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
def check_process():&lt;br /&gt;
     # check for 'completed OK!'&lt;br /&gt;
     # parse out the LSN number&lt;br /&gt;
     # update meta data property on backup&lt;br /&gt;
     return True&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Restore Workflow (metadata in db) ===&lt;br /&gt;
&lt;br /&gt;
During the create instance call if a backup ID is passed in restorePoint the api will need to change slightly:&lt;br /&gt;
&lt;br /&gt;
API:&lt;br /&gt;
1. Check that the backup file exists and checksum matches.&lt;br /&gt;
2. Check if the backup has a parent&lt;br /&gt;
    a. Check that parent exists/checksum matches and add to the backup_info object&lt;br /&gt;
    b. Check if the parent backup has a parent and repeat&lt;br /&gt;
3. Send the backup_info to the guest to do the restore.&lt;br /&gt;
&lt;br /&gt;
GUEST:&lt;br /&gt;
1. Read the backup_info and select the correct restore logic by backup_type&lt;br /&gt;
2. Preform restore on all parents if they exist.&lt;br /&gt;
3. Preform restore on backup&lt;br /&gt;
4. Finish guest install&lt;/div&gt;</summary>
		<author><name>Robert Myers</name></author>	</entry>

	<entry>
		<id>https://wiki.openstack.org/w/index.php?title=Trove/incremental-backups&amp;diff=35906</id>
		<title>Trove/incremental-backups</title>
		<link rel="alternate" type="text/html" href="https://wiki.openstack.org/w/index.php?title=Trove/incremental-backups&amp;diff=35906"/>
				<updated>2013-11-19T22:06:26Z</updated>
		
		<summary type="html">&lt;p&gt;Robert Myers: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Incremental Backups ==&lt;br /&gt;
&lt;br /&gt;
Adding support for incremental backups and restores. The main difference between this and the current manual backups will be that these will be deleted when the instance is deleted. This is intended to be run as a backend scheduled task. &lt;br /&gt;
&lt;br /&gt;
https://wiki.openstack.org/wiki/Trove/scheduled-tasks&lt;br /&gt;
&lt;br /&gt;
=== Storing Metadata===&lt;br /&gt;
&lt;br /&gt;
In order to create incremental backups we need to store a little extra information in full backups and incremental ones. There are two options for storing this metadata for the incremental and full backups.&lt;br /&gt;
&lt;br /&gt;
1. Add meta field to the backups table in trove:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
ALTER TABLE `backups`&lt;br /&gt;
    ADD COLUMN `meta` varchar(1024) DEFAULT NULL;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* PRO: More secure as the data will be stored only in trove database.&lt;br /&gt;
* CON: The meta data will need to be passed to and from the guest, making the logic more conplex.&lt;br /&gt;
&lt;br /&gt;
2. Use swift metadata http://docs.openstack.org/api/openstack-object-storage/1.0/content/object-metadata.html to store any extra metadata for the backup.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
curl –X POST -i \&lt;br /&gt;
    -H &amp;quot;X-Auth-Token: my-token&amp;quot; \&lt;br /&gt;
    -H &amp;quot;X-Object-Meta-Parent: https://storage.com/v1/XXX/path_to_parent_backup&amp;quot;&amp;quot; \&lt;br /&gt;
    https://storage.com/v1/XXX/path_to_incremental_backup&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* PRO: No database change. No need to pass extra info to the guest as a simple HEAD call on the swift file will get the meta info. The guest can easily update the metadata on the swift objects it writes.&lt;br /&gt;
* CON: Less secure as users can change these fields (possibly this field could be encrypted with the same key as the backups)&lt;br /&gt;
 &lt;br /&gt;
=== Incremental Workflow ===&lt;br /&gt;
&lt;br /&gt;
API:&lt;br /&gt;
&lt;br /&gt;
1. A full backup must be made by the user or an automated system. (This backup ID is used as the parent ID)&lt;br /&gt;
2. An api call is made to run an incremental backup:&lt;br /&gt;
    &amp;lt;pre&amp;gt;POST /backups {'backup_type': 'incremental', 'instance_id': 'instance_id', 'parent_id': '&amp;lt;parent_id&amp;gt;'}&amp;lt;/pre&amp;gt;&lt;br /&gt;
3. A entry in the backup table is created.&lt;br /&gt;
4. The backup handler looks up the information on the parent backup (error if it doesn't exist)&lt;br /&gt;
5. A message is sent to the guest to run the backup&lt;br /&gt;
   &amp;lt;pre&amp;gt;backup_info = {'backup_type': 'incremental', 'meta': &amp;lt;meta_info_from_parent&amp;gt;, 'parent_location': &amp;lt;parent_location&amp;gt;, 'parent_id': &amp;lt;parent_id&amp;gt;}&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
GUEST:&lt;br /&gt;
1. backup agent will be changed to accept a type passed in by the api.&lt;br /&gt;
2. A new backup type of increamental uses the meta data to preform the restore. For xtrabackup this requires passing a 'lsn' number to the backup command:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
/usr/bin/innobackupex  --stream --ibbackup=xtrabackup \&lt;br /&gt;
   --incremental --incremental-lsn=%(lsn)s&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
3. After a successful backup.&lt;br /&gt;
&lt;br /&gt;
=== Full backup changes ===&lt;br /&gt;
&lt;br /&gt;
Change the current backup process to add the meta data from the backup process.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Optional Point in Time Restore API ===&lt;br /&gt;
&lt;br /&gt;
This will require modifying the existing restorePoint object for the create instance call. The api will be expanded to:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
restorePoint = {&lt;br /&gt;
   instance = 'uuid_of_instance'&lt;br /&gt;
   time = 'date string'&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Robert Myers</name></author>	</entry>

	<entry>
		<id>https://wiki.openstack.org/w/index.php?title=Trove/incremental-backups&amp;diff=35904</id>
		<title>Trove/incremental-backups</title>
		<link rel="alternate" type="text/html" href="https://wiki.openstack.org/w/index.php?title=Trove/incremental-backups&amp;diff=35904"/>
				<updated>2013-11-19T21:52:05Z</updated>
		
		<summary type="html">&lt;p&gt;Robert Myers: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Incremental Backups ==&lt;br /&gt;
&lt;br /&gt;
Adding support for incremental backups and restores. The main difference between this and the current manual backups will be that these will be deleted when the instance is deleted. This is intended to be run as a backend scheduled task. &lt;br /&gt;
&lt;br /&gt;
https://wiki.openstack.org/wiki/Trove/scheduled-tasks&lt;br /&gt;
&lt;br /&gt;
=== Storing Metadata===&lt;br /&gt;
&lt;br /&gt;
In order to create incremental backups we need to store a little extra information in full backups and incremental ones. There are two options for storing this metadata for the incremental and full backups.&lt;br /&gt;
&lt;br /&gt;
1. Add meta field to the backups table in trove:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
ALTER TABLE `backups`&lt;br /&gt;
    ADD COLUMN `meta` varchar(1024) DEFAULT NULL;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* PRO: More secure as the data will be stored only in trove database.&lt;br /&gt;
* CON: The meta data will need to be passed to and from the guest, making the logic more conplex.&lt;br /&gt;
&lt;br /&gt;
2. Use swift metadata http://docs.openstack.org/api/openstack-object-storage/1.0/content/object-metadata.html to store any extra metadata for the backup.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
curl –X POST -i \&lt;br /&gt;
    -H &amp;quot;X-Auth-Token: my-token&amp;quot; \&lt;br /&gt;
    -H &amp;quot;X-Object-Meta-Parent: https://storage.com/v1/XXX/path_to_parent_backup&amp;quot;&amp;quot; \&lt;br /&gt;
    https://storage.com/v1/XXX/path_to_incremental_backup&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* PRO: No database change. No need to pass extra info to the guest as a simple HEAD call on the swift file will get the meta info. The guest can easily update the metadata on the swift objects it writes.&lt;br /&gt;
* CON: Less secure as users can change these fields (possibly this field could be encrypted with the same key as the backups)&lt;br /&gt;
 &lt;br /&gt;
=== Incremental Workflow ===&lt;br /&gt;
&lt;br /&gt;
1. A full backup must be made by the user or an automated system. (This backup ID is used as the parent ID)&lt;br /&gt;
2. An api call is made to run an incremental backup:&lt;br /&gt;
    &amp;lt;pre&amp;gt;POST /backups {'backup_type': 'incremental', 'instance_id': 'instance_id', 'parent_id': '&amp;lt;parent_id&amp;gt;'}&amp;lt;/pre&amp;gt;&lt;br /&gt;
3. A entry in the backup table is created.&lt;br /&gt;
4. The backup handler looks up the information on the parent backup (error if it doesn't exist)&lt;br /&gt;
5. A message is sent to the guest to run the backup&lt;br /&gt;
   &amp;lt;pre&amp;gt;backup_info = {'backup_type': 'incremental', 'meta': &amp;lt;meta_info_from_parent&amp;gt;, 'parent_location': &amp;lt;parent_location&amp;gt;, 'parent_id': &amp;lt;parent_id&amp;gt;}&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Full backup changes ===&lt;br /&gt;
&lt;br /&gt;
Change the current backup process to add the meta data from the backup process.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Optional Point in Time Restore API ===&lt;br /&gt;
&lt;br /&gt;
This will require modifying the existing restorePoint object for the create instance call. The api will be expanded to:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
restorePoint = {&lt;br /&gt;
   instance = 'uuid_of_instance'&lt;br /&gt;
   time = 'date string'&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Robert Myers</name></author>	</entry>

	<entry>
		<id>https://wiki.openstack.org/w/index.php?title=Trove/incremental-backups&amp;diff=33615</id>
		<title>Trove/incremental-backups</title>
		<link rel="alternate" type="text/html" href="https://wiki.openstack.org/w/index.php?title=Trove/incremental-backups&amp;diff=33615"/>
				<updated>2013-10-22T19:02:25Z</updated>
		
		<summary type="html">&lt;p&gt;Robert Myers: /* Incremental Backups */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Incremental Backups ==&lt;br /&gt;
&lt;br /&gt;
Adding support for incremental backups and restores. The main difference between this and the current manual backups will be that these will be deleted when the instance is deleted. This is intended to be run as a backend scheduled task. &lt;br /&gt;
&lt;br /&gt;
=== Database Changes ===&lt;br /&gt;
&lt;br /&gt;
It is necessary to add a text field to store meta data from the backups. This includes the type of backup and the position of the bin logs or lsn number.&lt;br /&gt;
&lt;br /&gt;
Table Backup - add meta text field null true&lt;br /&gt;
&lt;br /&gt;
=== Full backup changes ===&lt;br /&gt;
&lt;br /&gt;
Change the current backup process to add the meta data from the backup process.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Restore incremental backup call ===&lt;br /&gt;
&lt;br /&gt;
This will require modifying the existing restorePoint object for the create instance call. The api will be expanded to:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
restorePoint = {&lt;br /&gt;
   instance = 'uuid_of_instance'&lt;br /&gt;
   time = 'date string'&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Robert Myers</name></author>	</entry>

	<entry>
		<id>https://wiki.openstack.org/w/index.php?title=Trove/incremental-backups&amp;diff=33608</id>
		<title>Trove/incremental-backups</title>
		<link rel="alternate" type="text/html" href="https://wiki.openstack.org/w/index.php?title=Trove/incremental-backups&amp;diff=33608"/>
				<updated>2013-10-22T18:51:02Z</updated>
		
		<summary type="html">&lt;p&gt;Robert Myers: Created page with &amp;quot;== Incremental Backups ==  Adding support for incremental backups and restores.  === Database Changes ===  It is necessary to add a text field to store meta data from the back...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Incremental Backups ==&lt;br /&gt;
&lt;br /&gt;
Adding support for incremental backups and restores.&lt;br /&gt;
&lt;br /&gt;
=== Database Changes ===&lt;br /&gt;
&lt;br /&gt;
It is necessary to add a text field to store meta data from the backups. This includes the type of backup and the position of the bin logs or lsn number.&lt;br /&gt;
&lt;br /&gt;
Table Backup - add meta text field null true&lt;br /&gt;
&lt;br /&gt;
=== Full backup changes ===&lt;br /&gt;
&lt;br /&gt;
Change the current backup process to add the meta data from the backup process.&lt;/div&gt;</summary>
		<author><name>Robert Myers</name></author>	</entry>

	<entry>
		<id>https://wiki.openstack.org/w/index.php?title=Horizon/trove-support&amp;diff=28945</id>
		<title>Horizon/trove-support</title>
		<link rel="alternate" type="text/html" href="https://wiki.openstack.org/w/index.php?title=Horizon/trove-support&amp;diff=28945"/>
				<updated>2013-08-27T19:08:20Z</updated>
		
		<summary type="html">&lt;p&gt;Robert Myers: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Trove Support ==&lt;br /&gt;
&lt;br /&gt;
Adding panels for trove support. Currently the panels are only displayed if you have trove installed and your service catalog contains 'database'.&lt;br /&gt;
&lt;br /&gt;
Database Backup panels also require that you have 'object-store' in your service catalog as well.&lt;br /&gt;
&lt;br /&gt;
=== Gerrit Review ===&lt;br /&gt;
&lt;br /&gt;
https://review.openstack.org/#/c/42228/&lt;br /&gt;
&lt;br /&gt;
=== Trove Install Instructions ===&lt;br /&gt;
&lt;br /&gt;
Trove is currently not installable with just devstack alone. The Trove team maintains a separate repo to install that uses devstack: &lt;br /&gt;
&lt;br /&gt;
https://wiki.openstack.org/wiki/Trove/installation&lt;br /&gt;
&lt;br /&gt;
=== Screen Shots ===&lt;br /&gt;
&lt;br /&gt;
==== Creating Database instances ====&lt;br /&gt;
&lt;br /&gt;
[[File:horizon_launch_database_main.png|Launch Instance]]&lt;br /&gt;
&lt;br /&gt;
[[File:horizon_launch_database_initialize.png|Launch Instance - Initialize]]&lt;br /&gt;
&lt;br /&gt;
[[File:horizon_launch_database_restore.png|Launch Instance - Restore]]&lt;br /&gt;
&lt;br /&gt;
[[File:horizon_launching_database.png|Launching Instance - Ajax]]&lt;br /&gt;
&lt;br /&gt;
==== Database Index ====&lt;br /&gt;
&lt;br /&gt;
[[File:horizon_database_list.png|Database Index]]&lt;br /&gt;
&lt;br /&gt;
==== Database Details ====&lt;br /&gt;
&lt;br /&gt;
[[File:horizon_database_details.png|Database Details]]&lt;br /&gt;
&lt;br /&gt;
[[File:horizon_database_details_users.png|Database Details - Users]]&lt;br /&gt;
&lt;br /&gt;
[[File:horizon_database_details_databases.png|Database Details - Databases]]&lt;br /&gt;
&lt;br /&gt;
[[File:horizon_database_details_backups.png|Database Details - Backups]]&lt;br /&gt;
&lt;br /&gt;
==== Create Database Backup====&lt;br /&gt;
&lt;br /&gt;
[[File:horizon_create_database_backup.png|Create Backup]]&lt;br /&gt;
&lt;br /&gt;
[[File:horizon_creating_database_backup.png|Create Backup - Ajax]]&lt;br /&gt;
&lt;br /&gt;
==== Database Backup Index ====&lt;br /&gt;
&lt;br /&gt;
[[File:horizon_database_backups_index.png|Database Backup Index]]&lt;br /&gt;
&lt;br /&gt;
==== Database Backup Details ====&lt;br /&gt;
&lt;br /&gt;
[[File:horizon_database_backup_details.png|Database Backup Details]]&lt;/div&gt;</summary>
		<author><name>Robert Myers</name></author>	</entry>

	<entry>
		<id>https://wiki.openstack.org/w/index.php?title=Horizon/trove-support&amp;diff=28720</id>
		<title>Horizon/trove-support</title>
		<link rel="alternate" type="text/html" href="https://wiki.openstack.org/w/index.php?title=Horizon/trove-support&amp;diff=28720"/>
				<updated>2013-08-23T17:16:10Z</updated>
		
		<summary type="html">&lt;p&gt;Robert Myers: /* Trove Support */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Trove Support ==&lt;br /&gt;
&lt;br /&gt;
Adding panels for trove support. Currently the panels are only displayed if you have trove installed and your service catalog contains 'database'.&lt;br /&gt;
&lt;br /&gt;
Database Backup panels also require that you have 'object-store' in your service catalog as well.&lt;br /&gt;
&lt;br /&gt;
=== Gerrit Review ===&lt;br /&gt;
&lt;br /&gt;
https://review.openstack.org/#/c/42228/&lt;br /&gt;
&lt;br /&gt;
=== Screen Shots ===&lt;br /&gt;
&lt;br /&gt;
==== Creating Database instances ====&lt;br /&gt;
&lt;br /&gt;
[[File:horizon_launch_database_main.png|Launch Instance]]&lt;br /&gt;
&lt;br /&gt;
[[File:horizon_launch_database_initialize.png|Launch Instance - Initialize]]&lt;br /&gt;
&lt;br /&gt;
[[File:horizon_launch_database_restore.png|Launch Instance - Restore]]&lt;br /&gt;
&lt;br /&gt;
[[File:horizon_launching_database.png|Launching Instance - Ajax]]&lt;br /&gt;
&lt;br /&gt;
==== Database Index ====&lt;br /&gt;
&lt;br /&gt;
[[File:horizon_database_list.png|Database Index]]&lt;br /&gt;
&lt;br /&gt;
==== Database Details ====&lt;br /&gt;
&lt;br /&gt;
[[File:horizon_database_details.png|Database Details]]&lt;br /&gt;
&lt;br /&gt;
[[File:horizon_database_details_users.png|Database Details - Users]]&lt;br /&gt;
&lt;br /&gt;
[[File:horizon_database_details_databases.png|Database Details - Databases]]&lt;br /&gt;
&lt;br /&gt;
[[File:horizon_database_details_backups.png|Database Details - Backups]]&lt;br /&gt;
&lt;br /&gt;
==== Create Database Backup====&lt;br /&gt;
&lt;br /&gt;
[[File:horizon_create_database_backup.png|Create Backup]]&lt;br /&gt;
&lt;br /&gt;
[[File:horizon_creating_database_backup.png|Create Backup - Ajax]]&lt;br /&gt;
&lt;br /&gt;
==== Database Backup Index ====&lt;br /&gt;
&lt;br /&gt;
[[File:horizon_database_backups_index.png|Database Backup Index]]&lt;br /&gt;
&lt;br /&gt;
==== Database Backup Details ====&lt;br /&gt;
&lt;br /&gt;
[[File:horizon_database_backup_details.png|Database Backup Details]]&lt;/div&gt;</summary>
		<author><name>Robert Myers</name></author>	</entry>

	<entry>
		<id>https://wiki.openstack.org/w/index.php?title=File:Horizon_database_details.png&amp;diff=28717</id>
		<title>File:Horizon database details.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.openstack.org/w/index.php?title=File:Horizon_database_details.png&amp;diff=28717"/>
				<updated>2013-08-23T17:12:17Z</updated>
		
		<summary type="html">&lt;p&gt;Robert Myers: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Robert Myers</name></author>	</entry>

	<entry>
		<id>https://wiki.openstack.org/w/index.php?title=Horizon/trove-support&amp;diff=28715</id>
		<title>Horizon/trove-support</title>
		<link rel="alternate" type="text/html" href="https://wiki.openstack.org/w/index.php?title=Horizon/trove-support&amp;diff=28715"/>
				<updated>2013-08-23T17:11:48Z</updated>
		
		<summary type="html">&lt;p&gt;Robert Myers: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Trove Support ==&lt;br /&gt;
&lt;br /&gt;
Adding panels for trove support&lt;br /&gt;
&lt;br /&gt;
=== Gerrit Review ===&lt;br /&gt;
&lt;br /&gt;
https://review.openstack.org/#/c/42228/&lt;br /&gt;
&lt;br /&gt;
=== Screen Shots ===&lt;br /&gt;
&lt;br /&gt;
==== Creating Database instances ====&lt;br /&gt;
&lt;br /&gt;
[[File:horizon_launch_database_main.png|Launch Instance]]&lt;br /&gt;
&lt;br /&gt;
[[File:horizon_launch_database_initialize.png|Launch Instance - Initialize]]&lt;br /&gt;
&lt;br /&gt;
[[File:horizon_launch_database_restore.png|Launch Instance - Restore]]&lt;br /&gt;
&lt;br /&gt;
[[File:horizon_launching_database.png|Launching Instance - Ajax]]&lt;br /&gt;
&lt;br /&gt;
==== Database Index ====&lt;br /&gt;
&lt;br /&gt;
[[File:horizon_database_list.png|Database Index]]&lt;br /&gt;
&lt;br /&gt;
==== Database Details ====&lt;br /&gt;
&lt;br /&gt;
[[File:horizon_database_details.png|Database Details]]&lt;br /&gt;
&lt;br /&gt;
[[File:horizon_database_details_users.png|Database Details - Users]]&lt;br /&gt;
&lt;br /&gt;
[[File:horizon_database_details_databases.png|Database Details - Databases]]&lt;br /&gt;
&lt;br /&gt;
[[File:horizon_database_details_backups.png|Database Details - Backups]]&lt;br /&gt;
&lt;br /&gt;
==== Create Database Backup====&lt;br /&gt;
&lt;br /&gt;
[[File:horizon_create_database_backup.png|Create Backup]]&lt;br /&gt;
&lt;br /&gt;
[[File:horizon_creating_database_backup.png|Create Backup - Ajax]]&lt;br /&gt;
&lt;br /&gt;
==== Database Backup Index ====&lt;br /&gt;
&lt;br /&gt;
[[File:horizon_database_backups_index.png|Database Backup Index]]&lt;br /&gt;
&lt;br /&gt;
==== Database Backup Details ====&lt;br /&gt;
&lt;br /&gt;
[[File:horizon_database_backup_details.png|Database Backup Details]]&lt;/div&gt;</summary>
		<author><name>Robert Myers</name></author>	</entry>

	<entry>
		<id>https://wiki.openstack.org/w/index.php?title=Horizon/trove-support&amp;diff=28712</id>
		<title>Horizon/trove-support</title>
		<link rel="alternate" type="text/html" href="https://wiki.openstack.org/w/index.php?title=Horizon/trove-support&amp;diff=28712"/>
				<updated>2013-08-23T17:10:26Z</updated>
		
		<summary type="html">&lt;p&gt;Robert Myers: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Trove Support ==&lt;br /&gt;
&lt;br /&gt;
Adding panels for trove support&lt;br /&gt;
&lt;br /&gt;
=== Gerrit Review ===&lt;br /&gt;
&lt;br /&gt;
https://review.openstack.org/#/c/42228/&lt;br /&gt;
&lt;br /&gt;
=== Screen Shots ===&lt;br /&gt;
&lt;br /&gt;
==== Creating Database instances ====&lt;br /&gt;
&lt;br /&gt;
[[File:horizon_launch_database_main.png|Launch Instance]]&lt;br /&gt;
[[File:horizon_launch_database_initialize.png|Launch Instance - Initialize]]&lt;br /&gt;
[[File:horizon_launch_database_restore.png|Launch Instance - Restore]]&lt;br /&gt;
[[File:horizon_launching_database.png|Launching Instance - Ajax]]&lt;br /&gt;
&lt;br /&gt;
==== Database Index ====&lt;br /&gt;
&lt;br /&gt;
[[File:horizon_database_list.png|Database Index]]&lt;br /&gt;
&lt;br /&gt;
==== Database Details ====&lt;br /&gt;
&lt;br /&gt;
[[File:horizon_database_details.png|framed|Database Details]&lt;br /&gt;
[[File:horizon_database_details_users.png|framed|Database Details - Users]]&lt;br /&gt;
[[File:horizon_database_details_databases.png|framed|Database Details - Databases]]&lt;br /&gt;
[[File:horizon_database_details_backups.png|framed|Database Details - Backups]]&lt;br /&gt;
&lt;br /&gt;
==== Create Database Backup====&lt;br /&gt;
&lt;br /&gt;
[[File:horizon_create_database_backup.png|framed|Create Backup]]&lt;br /&gt;
[[File:horizon_creating_database_backup.png|framed|Create Backup - Ajax]]&lt;br /&gt;
&lt;br /&gt;
==== Database Backup Index ====&lt;br /&gt;
&lt;br /&gt;
[[File:horizon_database_backups_index.png|framed|Database Backup Index]]&lt;br /&gt;
&lt;br /&gt;
==== Database Backup Details ====&lt;br /&gt;
&lt;br /&gt;
[[File:horizon_database_backup_details.png|framed|Database Backup Details]]&lt;/div&gt;</summary>
		<author><name>Robert Myers</name></author>	</entry>

	<entry>
		<id>https://wiki.openstack.org/w/index.php?title=File:Horizon_database_backup_details.png&amp;diff=28711</id>
		<title>File:Horizon database backup details.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.openstack.org/w/index.php?title=File:Horizon_database_backup_details.png&amp;diff=28711"/>
				<updated>2013-08-23T17:09:34Z</updated>
		
		<summary type="html">&lt;p&gt;Robert Myers: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Robert Myers</name></author>	</entry>

	<entry>
		<id>https://wiki.openstack.org/w/index.php?title=File:Horizon_database_backups_index.png&amp;diff=28710</id>
		<title>File:Horizon database backups index.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.openstack.org/w/index.php?title=File:Horizon_database_backups_index.png&amp;diff=28710"/>
				<updated>2013-08-23T17:09:10Z</updated>
		
		<summary type="html">&lt;p&gt;Robert Myers: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Robert Myers</name></author>	</entry>

	<entry>
		<id>https://wiki.openstack.org/w/index.php?title=File:Horizon_creating_database_backup.png&amp;diff=28708</id>
		<title>File:Horizon creating database backup.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.openstack.org/w/index.php?title=File:Horizon_creating_database_backup.png&amp;diff=28708"/>
				<updated>2013-08-23T17:08:41Z</updated>
		
		<summary type="html">&lt;p&gt;Robert Myers: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Robert Myers</name></author>	</entry>

	<entry>
		<id>https://wiki.openstack.org/w/index.php?title=File:Horizon_create_database_backup.png&amp;diff=28707</id>
		<title>File:Horizon create database backup.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.openstack.org/w/index.php?title=File:Horizon_create_database_backup.png&amp;diff=28707"/>
				<updated>2013-08-23T17:08:16Z</updated>
		
		<summary type="html">&lt;p&gt;Robert Myers: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Robert Myers</name></author>	</entry>

	<entry>
		<id>https://wiki.openstack.org/w/index.php?title=File:Horizon_database_details_backups.png&amp;diff=28706</id>
		<title>File:Horizon database details backups.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.openstack.org/w/index.php?title=File:Horizon_database_details_backups.png&amp;diff=28706"/>
				<updated>2013-08-23T17:07:44Z</updated>
		
		<summary type="html">&lt;p&gt;Robert Myers: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Robert Myers</name></author>	</entry>

	<entry>
		<id>https://wiki.openstack.org/w/index.php?title=File:Horizon_database_details_databases.png&amp;diff=28705</id>
		<title>File:Horizon database details databases.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.openstack.org/w/index.php?title=File:Horizon_database_details_databases.png&amp;diff=28705"/>
				<updated>2013-08-23T17:07:09Z</updated>
		
		<summary type="html">&lt;p&gt;Robert Myers: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Robert Myers</name></author>	</entry>

	<entry>
		<id>https://wiki.openstack.org/w/index.php?title=File:Horizon_database_details_users.png&amp;diff=28703</id>
		<title>File:Horizon database details users.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.openstack.org/w/index.php?title=File:Horizon_database_details_users.png&amp;diff=28703"/>
				<updated>2013-08-23T17:06:43Z</updated>
		
		<summary type="html">&lt;p&gt;Robert Myers: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Robert Myers</name></author>	</entry>

	<entry>
		<id>https://wiki.openstack.org/w/index.php?title=File:Horizon_database_list.png&amp;diff=28702</id>
		<title>File:Horizon database list.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.openstack.org/w/index.php?title=File:Horizon_database_list.png&amp;diff=28702"/>
				<updated>2013-08-23T17:06:09Z</updated>
		
		<summary type="html">&lt;p&gt;Robert Myers: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Robert Myers</name></author>	</entry>

	<entry>
		<id>https://wiki.openstack.org/w/index.php?title=File:Horizon_launching_database.png&amp;diff=28699</id>
		<title>File:Horizon launching database.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.openstack.org/w/index.php?title=File:Horizon_launching_database.png&amp;diff=28699"/>
				<updated>2013-08-23T17:04:24Z</updated>
		
		<summary type="html">&lt;p&gt;Robert Myers: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Robert Myers</name></author>	</entry>

	<entry>
		<id>https://wiki.openstack.org/w/index.php?title=Horizon/trove-support&amp;diff=28697</id>
		<title>Horizon/trove-support</title>
		<link rel="alternate" type="text/html" href="https://wiki.openstack.org/w/index.php?title=Horizon/trove-support&amp;diff=28697"/>
				<updated>2013-08-23T17:04:02Z</updated>
		
		<summary type="html">&lt;p&gt;Robert Myers: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Trove Support ==&lt;br /&gt;
&lt;br /&gt;
Adding panels for trove support&lt;br /&gt;
&lt;br /&gt;
=== Gerrit Review ===&lt;br /&gt;
&lt;br /&gt;
https://review.openstack.org/#/c/42228/&lt;br /&gt;
&lt;br /&gt;
=== Screen Shots ===&lt;br /&gt;
&lt;br /&gt;
==== Creating Database instances ====&lt;br /&gt;
&lt;br /&gt;
[[File:horizon_launch_database_main.png|framed|Launch Instance]]&lt;br /&gt;
[[File:horizon_launch_database_initialize.png|framed|Launch Instance - Initialize]]&lt;br /&gt;
[[File:horizon_launch_database_restore.png|framed|Launch Instance - Restore]]&lt;br /&gt;
[[File:horizon_launching_database.png|framed|Launching Instance - Ajax]]&lt;br /&gt;
&lt;br /&gt;
==== Database Index ====&lt;br /&gt;
&lt;br /&gt;
[[File:horizon_database_list.png|framed|Database Index]]&lt;br /&gt;
&lt;br /&gt;
==== Database Details ====&lt;br /&gt;
&lt;br /&gt;
[[File:horizon_database_details.png|framed|Database Details]&lt;br /&gt;
[[File:horizon_database_details_users.png|framed|Database Details - Users]]&lt;br /&gt;
[[File:horizon_database_details_databases.png|framed|Database Details - Databases]]&lt;br /&gt;
[[File:horizon_database_details_backups.png|framed|Database Details - Backups]]&lt;br /&gt;
&lt;br /&gt;
==== Create Database Backup====&lt;br /&gt;
&lt;br /&gt;
[[File:horizon_create_database_backup.png|framed|Create Backup]]&lt;br /&gt;
[[File:horizon_creating_database_backup.png|framed|Create Backup - Ajax]]&lt;br /&gt;
&lt;br /&gt;
==== Database Backup Index ====&lt;br /&gt;
&lt;br /&gt;
[[File:horizon_database_backups_index.png|framed|Database Backup Index]]&lt;br /&gt;
&lt;br /&gt;
==== Database Backup Details ====&lt;br /&gt;
&lt;br /&gt;
[[File:horizon_database_backup_details.png|framed|Database Backup Details]]&lt;/div&gt;</summary>
		<author><name>Robert Myers</name></author>	</entry>

	<entry>
		<id>https://wiki.openstack.org/w/index.php?title=File:Horizon_launch_database_restore.png&amp;diff=28692</id>
		<title>File:Horizon launch database restore.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.openstack.org/w/index.php?title=File:Horizon_launch_database_restore.png&amp;diff=28692"/>
				<updated>2013-08-23T16:51:17Z</updated>
		
		<summary type="html">&lt;p&gt;Robert Myers: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Robert Myers</name></author>	</entry>

	<entry>
		<id>https://wiki.openstack.org/w/index.php?title=File:Horizon_launch_database_initialize.png&amp;diff=28691</id>
		<title>File:Horizon launch database initialize.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.openstack.org/w/index.php?title=File:Horizon_launch_database_initialize.png&amp;diff=28691"/>
				<updated>2013-08-23T16:50:51Z</updated>
		
		<summary type="html">&lt;p&gt;Robert Myers: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Robert Myers</name></author>	</entry>

	<entry>
		<id>https://wiki.openstack.org/w/index.php?title=Horizon/trove-support&amp;diff=28690</id>
		<title>Horizon/trove-support</title>
		<link rel="alternate" type="text/html" href="https://wiki.openstack.org/w/index.php?title=Horizon/trove-support&amp;diff=28690"/>
				<updated>2013-08-23T16:50:31Z</updated>
		
		<summary type="html">&lt;p&gt;Robert Myers: /* Creating Database instances */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Trove Support ==&lt;br /&gt;
&lt;br /&gt;
Adding panels for trove support&lt;br /&gt;
&lt;br /&gt;
=== Gerrit Review ===&lt;br /&gt;
&lt;br /&gt;
https://review.openstack.org/#/c/42228/&lt;br /&gt;
&lt;br /&gt;
=== Screen Shots ===&lt;br /&gt;
&lt;br /&gt;
==== Creating Database instances ====&lt;br /&gt;
&lt;br /&gt;
[[File:horizon_launch_database_main.png|framed|Launch Instance]]&lt;br /&gt;
[[File:horizon_launch_database_initialize.png|framed|Launch Instance - Initialize]]&lt;br /&gt;
[[File:horizon_launch_database_restore.png|framed|Launch Instance - Restore]]&lt;/div&gt;</summary>
		<author><name>Robert Myers</name></author>	</entry>

	<entry>
		<id>https://wiki.openstack.org/w/index.php?title=Horizon/trove-support&amp;diff=28688</id>
		<title>Horizon/trove-support</title>
		<link rel="alternate" type="text/html" href="https://wiki.openstack.org/w/index.php?title=Horizon/trove-support&amp;diff=28688"/>
				<updated>2013-08-23T16:48:53Z</updated>
		
		<summary type="html">&lt;p&gt;Robert Myers: /* Creating Database instances */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Trove Support ==&lt;br /&gt;
&lt;br /&gt;
Adding panels for trove support&lt;br /&gt;
&lt;br /&gt;
=== Gerrit Review ===&lt;br /&gt;
&lt;br /&gt;
https://review.openstack.org/#/c/42228/&lt;br /&gt;
&lt;br /&gt;
=== Screen Shots ===&lt;br /&gt;
&lt;br /&gt;
==== Creating Database instances ====&lt;br /&gt;
&lt;br /&gt;
[[File:horizon_launch_database_main.png|framed|Launch Instance]]&lt;/div&gt;</summary>
		<author><name>Robert Myers</name></author>	</entry>

	<entry>
		<id>https://wiki.openstack.org/w/index.php?title=File:Horizon_launch_database_main.png&amp;diff=28687</id>
		<title>File:Horizon launch database main.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.openstack.org/w/index.php?title=File:Horizon_launch_database_main.png&amp;diff=28687"/>
				<updated>2013-08-23T16:48:04Z</updated>
		
		<summary type="html">&lt;p&gt;Robert Myers: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Robert Myers</name></author>	</entry>

	</feed>