<?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=Edward+Konetzko</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=Edward+Konetzko"/>
		<link rel="alternate" type="text/html" href="https://wiki.openstack.org/wiki/Special:Contributions/Edward_Konetzko"/>
		<updated>2026-07-08T20:38:44Z</updated>
		<subtitle>User contributions</subtitle>
		<generator>MediaWiki 1.28.2</generator>

	<entry>
		<id>https://wiki.openstack.org/w/index.php?title=Trove/guest_agent_communication&amp;diff=31050</id>
		<title>Trove/guest agent communication</title>
		<link rel="alternate" type="text/html" href="https://wiki.openstack.org/w/index.php?title=Trove/guest_agent_communication&amp;diff=31050"/>
				<updated>2013-09-30T18:22:19Z</updated>
		
		<summary type="html">&lt;p&gt;Edward Konetzko: /* Phase ???? */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Guest agent communication ==&lt;br /&gt;
[[File:TroveGACurrent.png|framed|center]]&lt;br /&gt;
There are the following issues with the guest agents communication method.&lt;br /&gt;
# Heartbeats are directly written to the infrastructure database&lt;br /&gt;
# Multiple heartbeats used when one will do.  There is no need to send a heartbeat saying the agent is up and one for the database state.  We know the agent is up if it is reporting the database status. &lt;br /&gt;
# Uses the same transport as the rest of the infrastructure and right now only rabbitmq.&lt;br /&gt;
# Multiple security implications with current design&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Phase 1 ===&lt;br /&gt;
==== Remove guest agent from writing heartbeats directly to infra database ====&lt;br /&gt;
&lt;br /&gt;
[[File:TroveGAPhase1.png|framed|center]]&lt;br /&gt;
&lt;br /&gt;
Remove heartbeats being written to the database directly via guest agent.  This would solve a huge security issue along with cutting down on connection load to the infra db.&lt;br /&gt;
&lt;br /&gt;
Kenneth Wilke proposed this blueprint https://blueprints.launchpad.net/trove/+spec/taskmanager-statusupdate&lt;br /&gt;
&lt;br /&gt;
It was decided in the weekly meeting to not extend task manager to handle this but write another manager called trove-conductor that would handle heartbeat updates to the infra database.  It was expressed in the meeting that it would be nice to store to data store besides the infra database, while those ideas were accepted it was noted as out of scope for first pass. &lt;br /&gt;
&lt;br /&gt;
http://eavesdrop.openstack.org/meetings/trove/2013/trove.2013-08-07-20.00.html&lt;br /&gt;
&lt;br /&gt;
http://eavesdrop.openstack.org/meetings/trove/2013/trove.2013-08-07-20.00.log.html&lt;br /&gt;
&lt;br /&gt;
One heartbeat should be sent every 60 seconds.  There is a possibility of the guest-agent being able to send an ad-hoc heartbeat if it were to detect a status change in any of the components it reporting on.   For example it could send a heartbeat saying mysql is active every 60 seconds but the guest agent could check MySQL locally every 10.  With this option if there was a state change in MySQL e.g. it crashed 20 seconds into the next heartbeat the status could be updated in an ad-hoc update immediately.   This should cut down on heartbeat chatter while still being flexible enough to reflect status changes immediately.&lt;br /&gt;
&lt;br /&gt;
==== Heartbeat message definition ====&lt;br /&gt;
&lt;br /&gt;
Regardless of transport used the heartbeat message should always be in json. Attribute &amp;quot;heartbeat&amp;quot; should be an array that way it is extensible in the future.&lt;br /&gt;
&lt;br /&gt;
    {&lt;br /&gt;
        &amp;quot;instance_id&amp;quot;: &amp;quot;uuid of instance&amp;quot;,&lt;br /&gt;
        &amp;quot;heartbeat&amp;quot;: {&lt;br /&gt;
            &amp;quot;service_status&amp;quot;: &amp;quot;running&amp;quot;,&lt;br /&gt;
            &amp;quot;service_type&amp;quot;: &amp;quot;mysql&amp;quot;&lt;br /&gt;
         }&lt;br /&gt;
     }&lt;br /&gt;
&lt;br /&gt;
=== Phase 2 ===&lt;br /&gt;
[[File:TroveGAPhase2.png|framed|center]]&lt;br /&gt;
1. Change Trove to contact trove-conductor for heartbeat status on the instance and no longer check the database but using RPC calls between the two managers. &lt;br /&gt;
&lt;br /&gt;
=== Phase 3 ===&lt;br /&gt;
[[File:TroveGAPhase3.png|framed|center]]&lt;br /&gt;
&lt;br /&gt;
1. Abstract out the status data store in a way that attributes in heartbeat message can be mapped to fields in the data store.&lt;br /&gt;
&lt;br /&gt;
The logic behind providing a way to map array attributes in the heartbeat message is so that this could be extended as each deployment sees fit.  This would also allow us to store information that the api currently asks the guest-agent for such as volume space used.  The real goal of having a flexible heartbeat message would be to create a data store that could be used for internal reporting purposes.&lt;br /&gt;
&lt;br /&gt;
=== Phase 4 ===&lt;br /&gt;
&lt;br /&gt;
[[File:TroveGAPhase4.png|framed|center]]&lt;br /&gt;
&lt;br /&gt;
Move all agent communication to work though the trove-conductor&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Phase 5 ===&lt;br /&gt;
&lt;br /&gt;
Get community to agree on defined message protocol in json for talking to guest agent.&lt;br /&gt;
&lt;br /&gt;
1. First step of protocol outlined in Phase 1 with heartbeat message.&lt;br /&gt;
2. Document the rest of the protocol for discussion.&lt;/div&gt;</summary>
		<author><name>Edward Konetzko</name></author>	</entry>

	<entry>
		<id>https://wiki.openstack.org/w/index.php?title=File:TroveGAPhase4.png&amp;diff=31049</id>
		<title>File:TroveGAPhase4.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.openstack.org/w/index.php?title=File:TroveGAPhase4.png&amp;diff=31049"/>
				<updated>2013-09-30T18:19:45Z</updated>
		
		<summary type="html">&lt;p&gt;Edward Konetzko: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Edward Konetzko</name></author>	</entry>

	<entry>
		<id>https://wiki.openstack.org/w/index.php?title=Trove/guest_agent_communication&amp;diff=31045</id>
		<title>Trove/guest agent communication</title>
		<link rel="alternate" type="text/html" href="https://wiki.openstack.org/w/index.php?title=Trove/guest_agent_communication&amp;diff=31045"/>
				<updated>2013-09-30T18:13:31Z</updated>
		
		<summary type="html">&lt;p&gt;Edward Konetzko: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Guest agent communication ==&lt;br /&gt;
[[File:TroveGACurrent.png|framed|center]]&lt;br /&gt;
There are the following issues with the guest agents communication method.&lt;br /&gt;
# Heartbeats are directly written to the infrastructure database&lt;br /&gt;
# Multiple heartbeats used when one will do.  There is no need to send a heartbeat saying the agent is up and one for the database state.  We know the agent is up if it is reporting the database status. &lt;br /&gt;
# Uses the same transport as the rest of the infrastructure and right now only rabbitmq.&lt;br /&gt;
# Multiple security implications with current design&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Phase 1 ===&lt;br /&gt;
==== Remove guest agent from writing heartbeats directly to infra database ====&lt;br /&gt;
&lt;br /&gt;
[[File:TroveGAPhase1.png|framed|center]]&lt;br /&gt;
&lt;br /&gt;
Remove heartbeats being written to the database directly via guest agent.  This would solve a huge security issue along with cutting down on connection load to the infra db.&lt;br /&gt;
&lt;br /&gt;
Kenneth Wilke proposed this blueprint https://blueprints.launchpad.net/trove/+spec/taskmanager-statusupdate&lt;br /&gt;
&lt;br /&gt;
It was decided in the weekly meeting to not extend task manager to handle this but write another manager called trove-conductor that would handle heartbeat updates to the infra database.  It was expressed in the meeting that it would be nice to store to data store besides the infra database, while those ideas were accepted it was noted as out of scope for first pass. &lt;br /&gt;
&lt;br /&gt;
http://eavesdrop.openstack.org/meetings/trove/2013/trove.2013-08-07-20.00.html&lt;br /&gt;
&lt;br /&gt;
http://eavesdrop.openstack.org/meetings/trove/2013/trove.2013-08-07-20.00.log.html&lt;br /&gt;
&lt;br /&gt;
One heartbeat should be sent every 60 seconds.  There is a possibility of the guest-agent being able to send an ad-hoc heartbeat if it were to detect a status change in any of the components it reporting on.   For example it could send a heartbeat saying mysql is active every 60 seconds but the guest agent could check MySQL locally every 10.  With this option if there was a state change in MySQL e.g. it crashed 20 seconds into the next heartbeat the status could be updated in an ad-hoc update immediately.   This should cut down on heartbeat chatter while still being flexible enough to reflect status changes immediately.&lt;br /&gt;
&lt;br /&gt;
==== Heartbeat message definition ====&lt;br /&gt;
&lt;br /&gt;
Regardless of transport used the heartbeat message should always be in json. Attribute &amp;quot;heartbeat&amp;quot; should be an array that way it is extensible in the future.&lt;br /&gt;
&lt;br /&gt;
    {&lt;br /&gt;
        &amp;quot;instance_id&amp;quot;: &amp;quot;uuid of instance&amp;quot;,&lt;br /&gt;
        &amp;quot;heartbeat&amp;quot;: {&lt;br /&gt;
            &amp;quot;service_status&amp;quot;: &amp;quot;running&amp;quot;,&lt;br /&gt;
            &amp;quot;service_type&amp;quot;: &amp;quot;mysql&amp;quot;&lt;br /&gt;
         }&lt;br /&gt;
     }&lt;br /&gt;
&lt;br /&gt;
=== Phase 2 ===&lt;br /&gt;
[[File:TroveGAPhase2.png|framed|center]]&lt;br /&gt;
1. Change Trove to contact trove-conductor for heartbeat status on the instance and no longer check the database but using RPC calls between the two managers. &lt;br /&gt;
&lt;br /&gt;
=== Phase 3 ===&lt;br /&gt;
[[File:TroveGAPhase3.png|framed|center]]&lt;br /&gt;
&lt;br /&gt;
1. Abstract out the status data store in a way that attributes in heartbeat message can be mapped to fields in the data store.&lt;br /&gt;
&lt;br /&gt;
The logic behind providing a way to map array attributes in the heartbeat message is so that this could be extended as each deployment sees fit.  This would also allow us to store information that the api currently asks the guest-agent for such as volume space used.  The real goal of having a flexible heartbeat message would be to create a data store that could be used for internal reporting purposes.&lt;br /&gt;
&lt;br /&gt;
=== Phase ???? ===&lt;br /&gt;
&lt;br /&gt;
Move all agent communication to work though the trove-conductor using defined application protocol in json.&lt;/div&gt;</summary>
		<author><name>Edward Konetzko</name></author>	</entry>

	<entry>
		<id>https://wiki.openstack.org/w/index.php?title=Trove/guest_agent_communication&amp;diff=31044</id>
		<title>Trove/guest agent communication</title>
		<link rel="alternate" type="text/html" href="https://wiki.openstack.org/w/index.php?title=Trove/guest_agent_communication&amp;diff=31044"/>
				<updated>2013-09-30T18:11:14Z</updated>
		
		<summary type="html">&lt;p&gt;Edward Konetzko: /* Phase 3 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Guest agent communication ==&lt;br /&gt;
[[File:TroveGACurrent.png|framed|center]]&lt;br /&gt;
There are the following issues with the guest agents communication method.&lt;br /&gt;
# Heartbeats are directly written to the infrastructure database&lt;br /&gt;
# Multiple heartbeats used when one will do.  There is no need to send a heartbeat saying the agent is up and one for the database state.  We know the agent is up if it is reporting the database status. &lt;br /&gt;
# Uses the same transport as the rest of the infrastructure and right now only rabbitmq.&lt;br /&gt;
# Multiple security implications with current design&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Phase 1 ===&lt;br /&gt;
==== Remove guest agent from writing heartbeats directly to infra database ====&lt;br /&gt;
&lt;br /&gt;
[[File:TroveGAPhase1.png|framed|center]]&lt;br /&gt;
&lt;br /&gt;
Remove heartbeats being written to the database directly via guest agent.  This would solve a huge security issue along with cutting down on connection load to the infra db.&lt;br /&gt;
&lt;br /&gt;
Kenneth Wilke proposed this blueprint https://blueprints.launchpad.net/trove/+spec/taskmanager-statusupdate&lt;br /&gt;
&lt;br /&gt;
It was decided in the weekly meeting to not extend task manager to handle this but write another manager called trove-conductor that would handle heartbeat updates to the infra database.  It was expressed in the meeting that it would be nice to store to data store besides the infra database, while those ideas were accepted it was noted as out of scope for first pass. &lt;br /&gt;
&lt;br /&gt;
http://eavesdrop.openstack.org/meetings/trove/2013/trove.2013-08-07-20.00.html&lt;br /&gt;
&lt;br /&gt;
http://eavesdrop.openstack.org/meetings/trove/2013/trove.2013-08-07-20.00.log.html&lt;br /&gt;
&lt;br /&gt;
One heartbeat should be sent every 60 seconds.  There is a possibility of the guest-agent being able to send an ad-hoc heartbeat if it were to detect a status change in any of the components it reporting on.   For example it could send a heartbeat saying mysql is active every 60 seconds but the guest agent could check MySQL locally every 10.  With this option if there was a state change in MySQL e.g. it crashed 20 seconds into the next heartbeat the status could be updated in an ad-hoc update immediately.   This should cut down on heartbeat chatter while still being flexible enough to reflect status changes immediately.&lt;br /&gt;
&lt;br /&gt;
==== Heartbeat message definition ====&lt;br /&gt;
&lt;br /&gt;
Regardless of transport used the heartbeat message should always be in json. Attribute &amp;quot;heartbeat&amp;quot; should be an array that way it is extensible in the future.&lt;br /&gt;
&lt;br /&gt;
    {&lt;br /&gt;
        &amp;quot;instance_id&amp;quot;: &amp;quot;uuid of instance&amp;quot;,&lt;br /&gt;
        &amp;quot;heartbeat&amp;quot;: {&lt;br /&gt;
            &amp;quot;service_status&amp;quot;: &amp;quot;running&amp;quot;,&lt;br /&gt;
            &amp;quot;service_type&amp;quot;: &amp;quot;mysql&amp;quot;&lt;br /&gt;
         }&lt;br /&gt;
     }&lt;br /&gt;
&lt;br /&gt;
=== Phase 2 ===&lt;br /&gt;
[[File:TroveGAPhase2.png|framed|center]]&lt;br /&gt;
1. Change Trove to contact trove-conductor for heartbeat status on the instance and no longer check the database but using RPC calls between the two managers. &lt;br /&gt;
&lt;br /&gt;
=== Phase 3 ===&lt;br /&gt;
[[File:TroveGAPhase3.png|framed|center]]&lt;br /&gt;
&lt;br /&gt;
1. Abstract out the status data store in a way that attributes in heartbeat message can be mapped to fields in the data store.&lt;br /&gt;
&lt;br /&gt;
The logic behind providing a way to map array attributes in the heartbeat message is so that this could be extended as each deployment sees fit.  This would also allow us to store information that the api currently asks the guest-agent for such as volume space used.  The real goal of having a flexible heartbeat message would be to create a data store that could be used for internal reporting purposes.&lt;br /&gt;
&lt;br /&gt;
=== Future direction ===&lt;br /&gt;
&lt;br /&gt;
Ideas to finish writing about&lt;br /&gt;
&lt;br /&gt;
# Move all agent communication to work though the trove-conductor&lt;br /&gt;
# ????&lt;br /&gt;
# Profit&lt;br /&gt;
&lt;br /&gt;
Yea need to finish up this section :D&lt;/div&gt;</summary>
		<author><name>Edward Konetzko</name></author>	</entry>

	<entry>
		<id>https://wiki.openstack.org/w/index.php?title=File:TroveGAPhase3.png&amp;diff=31043</id>
		<title>File:TroveGAPhase3.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.openstack.org/w/index.php?title=File:TroveGAPhase3.png&amp;diff=31043"/>
				<updated>2013-09-30T18:10:44Z</updated>
		
		<summary type="html">&lt;p&gt;Edward Konetzko: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Edward Konetzko</name></author>	</entry>

	<entry>
		<id>https://wiki.openstack.org/w/index.php?title=File:TroveGAPhase2.png&amp;diff=31042</id>
		<title>File:TroveGAPhase2.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.openstack.org/w/index.php?title=File:TroveGAPhase2.png&amp;diff=31042"/>
				<updated>2013-09-30T18:03:07Z</updated>
		
		<summary type="html">&lt;p&gt;Edward Konetzko: Edward Konetzko uploaded a new version of &amp;amp;quot;File:TroveGAPhase2.png&amp;amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Phase 2 GA communication method&lt;/div&gt;</summary>
		<author><name>Edward Konetzko</name></author>	</entry>

	<entry>
		<id>https://wiki.openstack.org/w/index.php?title=Trove/guest_agent_communication&amp;diff=31038</id>
		<title>Trove/guest agent communication</title>
		<link rel="alternate" type="text/html" href="https://wiki.openstack.org/w/index.php?title=Trove/guest_agent_communication&amp;diff=31038"/>
				<updated>2013-09-30T17:44:36Z</updated>
		
		<summary type="html">&lt;p&gt;Edward Konetzko: /* Phase 2 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Guest agent communication ==&lt;br /&gt;
[[File:TroveGACurrent.png|framed|center]]&lt;br /&gt;
There are the following issues with the guest agents communication method.&lt;br /&gt;
# Heartbeats are directly written to the infrastructure database&lt;br /&gt;
# Multiple heartbeats used when one will do.  There is no need to send a heartbeat saying the agent is up and one for the database state.  We know the agent is up if it is reporting the database status. &lt;br /&gt;
# Uses the same transport as the rest of the infrastructure and right now only rabbitmq.&lt;br /&gt;
# Multiple security implications with current design&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Phase 1 ===&lt;br /&gt;
==== Remove guest agent from writing heartbeats directly to infra database ====&lt;br /&gt;
&lt;br /&gt;
[[File:TroveGAPhase1.png|framed|center]]&lt;br /&gt;
&lt;br /&gt;
Remove heartbeats being written to the database directly via guest agent.  This would solve a huge security issue along with cutting down on connection load to the infra db.&lt;br /&gt;
&lt;br /&gt;
Kenneth Wilke proposed this blueprint https://blueprints.launchpad.net/trove/+spec/taskmanager-statusupdate&lt;br /&gt;
&lt;br /&gt;
It was decided in the weekly meeting to not extend task manager to handle this but write another manager called trove-conductor that would handle heartbeat updates to the infra database.  It was expressed in the meeting that it would be nice to store to data store besides the infra database, while those ideas were accepted it was noted as out of scope for first pass. &lt;br /&gt;
&lt;br /&gt;
http://eavesdrop.openstack.org/meetings/trove/2013/trove.2013-08-07-20.00.html&lt;br /&gt;
&lt;br /&gt;
http://eavesdrop.openstack.org/meetings/trove/2013/trove.2013-08-07-20.00.log.html&lt;br /&gt;
&lt;br /&gt;
One heartbeat should be sent every 60 seconds.  There is a possibility of the guest-agent being able to send an ad-hoc heartbeat if it were to detect a status change in any of the components it reporting on.   For example it could send a heartbeat saying mysql is active every 60 seconds but the guest agent could check MySQL locally every 10.  With this option if there was a state change in MySQL e.g. it crashed 20 seconds into the next heartbeat the status could be updated in an ad-hoc update immediately.   This should cut down on heartbeat chatter while still being flexible enough to reflect status changes immediately.&lt;br /&gt;
&lt;br /&gt;
==== Heartbeat message definition ====&lt;br /&gt;
&lt;br /&gt;
Regardless of transport used the heartbeat message should always be in json. Attribute &amp;quot;heartbeat&amp;quot; should be an array that way it is extensible in the future.&lt;br /&gt;
&lt;br /&gt;
    {&lt;br /&gt;
        &amp;quot;instance_id&amp;quot;: &amp;quot;uuid of instance&amp;quot;,&lt;br /&gt;
        &amp;quot;heartbeat&amp;quot;: {&lt;br /&gt;
            &amp;quot;service_status&amp;quot;: &amp;quot;running&amp;quot;,&lt;br /&gt;
            &amp;quot;service_type&amp;quot;: &amp;quot;mysql&amp;quot;&lt;br /&gt;
         }&lt;br /&gt;
     }&lt;br /&gt;
&lt;br /&gt;
=== Phase 2 ===&lt;br /&gt;
[[File:TroveGAPhase2.png|framed|center]]&lt;br /&gt;
1. Change Trove to contact trove-conductor for heartbeat status on the instance and no longer check the database but using RPC calls between the two managers. &lt;br /&gt;
&lt;br /&gt;
=== Phase 3 ===&lt;br /&gt;
&lt;br /&gt;
1. Abstract out the status data store in a way that attributes in heartbeat message can be mapped to fields in the data store.&lt;br /&gt;
&lt;br /&gt;
The logic behind providing a way to map array attributes in the heartbeat message is so that this could be extended as each deployment sees fit.  This would also allow us to store information that the api currently asks the guest-agent for such as volume space used.  The real goal of having a flexible heartbeat message would be to create a data store that could be used for internal reporting purposes.&lt;br /&gt;
&lt;br /&gt;
=== Future direction ===&lt;br /&gt;
&lt;br /&gt;
Ideas to finish writing about&lt;br /&gt;
&lt;br /&gt;
# Move all agent communication to work though the trove-conductor&lt;br /&gt;
# ????&lt;br /&gt;
# Profit&lt;br /&gt;
&lt;br /&gt;
Yea need to finish up this section :D&lt;/div&gt;</summary>
		<author><name>Edward Konetzko</name></author>	</entry>

	<entry>
		<id>https://wiki.openstack.org/w/index.php?title=File:TroveGAPhase2.png&amp;diff=31037</id>
		<title>File:TroveGAPhase2.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.openstack.org/w/index.php?title=File:TroveGAPhase2.png&amp;diff=31037"/>
				<updated>2013-09-30T17:43:33Z</updated>
		
		<summary type="html">&lt;p&gt;Edward Konetzko: Phase 2 GA communication method&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Phase 2 GA communication method&lt;/div&gt;</summary>
		<author><name>Edward Konetzko</name></author>	</entry>

	<entry>
		<id>https://wiki.openstack.org/w/index.php?title=File:TroveGAPhase1.png&amp;diff=31036</id>
		<title>File:TroveGAPhase1.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.openstack.org/w/index.php?title=File:TroveGAPhase1.png&amp;diff=31036"/>
				<updated>2013-09-30T17:39:13Z</updated>
		
		<summary type="html">&lt;p&gt;Edward Konetzko: Edward Konetzko uploaded a new version of &amp;amp;quot;File:TroveGAPhase1.png&amp;amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Phase one of guest agent communication changes.&lt;/div&gt;</summary>
		<author><name>Edward Konetzko</name></author>	</entry>

	<entry>
		<id>https://wiki.openstack.org/w/index.php?title=File:TroveGAPhase1.png&amp;diff=31035</id>
		<title>File:TroveGAPhase1.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.openstack.org/w/index.php?title=File:TroveGAPhase1.png&amp;diff=31035"/>
				<updated>2013-09-30T17:37:54Z</updated>
		
		<summary type="html">&lt;p&gt;Edward Konetzko: Edward Konetzko uploaded a new version of &amp;amp;quot;File:TroveGAPhase1.png&amp;amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Phase one of guest agent communication changes.&lt;/div&gt;</summary>
		<author><name>Edward Konetzko</name></author>	</entry>

	<entry>
		<id>https://wiki.openstack.org/w/index.php?title=Trove/guest_agent_communication&amp;diff=31034</id>
		<title>Trove/guest agent communication</title>
		<link rel="alternate" type="text/html" href="https://wiki.openstack.org/w/index.php?title=Trove/guest_agent_communication&amp;diff=31034"/>
				<updated>2013-09-30T17:36:25Z</updated>
		
		<summary type="html">&lt;p&gt;Edward Konetzko: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Guest agent communication ==&lt;br /&gt;
[[File:TroveGACurrent.png|framed|center]]&lt;br /&gt;
There are the following issues with the guest agents communication method.&lt;br /&gt;
# Heartbeats are directly written to the infrastructure database&lt;br /&gt;
# Multiple heartbeats used when one will do.  There is no need to send a heartbeat saying the agent is up and one for the database state.  We know the agent is up if it is reporting the database status. &lt;br /&gt;
# Uses the same transport as the rest of the infrastructure and right now only rabbitmq.&lt;br /&gt;
# Multiple security implications with current design&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Phase 1 ===&lt;br /&gt;
==== Remove guest agent from writing heartbeats directly to infra database ====&lt;br /&gt;
&lt;br /&gt;
[[File:TroveGAPhase1.png|framed|center]]&lt;br /&gt;
&lt;br /&gt;
Remove heartbeats being written to the database directly via guest agent.  This would solve a huge security issue along with cutting down on connection load to the infra db.&lt;br /&gt;
&lt;br /&gt;
Kenneth Wilke proposed this blueprint https://blueprints.launchpad.net/trove/+spec/taskmanager-statusupdate&lt;br /&gt;
&lt;br /&gt;
It was decided in the weekly meeting to not extend task manager to handle this but write another manager called trove-conductor that would handle heartbeat updates to the infra database.  It was expressed in the meeting that it would be nice to store to data store besides the infra database, while those ideas were accepted it was noted as out of scope for first pass. &lt;br /&gt;
&lt;br /&gt;
http://eavesdrop.openstack.org/meetings/trove/2013/trove.2013-08-07-20.00.html&lt;br /&gt;
&lt;br /&gt;
http://eavesdrop.openstack.org/meetings/trove/2013/trove.2013-08-07-20.00.log.html&lt;br /&gt;
&lt;br /&gt;
One heartbeat should be sent every 60 seconds.  There is a possibility of the guest-agent being able to send an ad-hoc heartbeat if it were to detect a status change in any of the components it reporting on.   For example it could send a heartbeat saying mysql is active every 60 seconds but the guest agent could check MySQL locally every 10.  With this option if there was a state change in MySQL e.g. it crashed 20 seconds into the next heartbeat the status could be updated in an ad-hoc update immediately.   This should cut down on heartbeat chatter while still being flexible enough to reflect status changes immediately.&lt;br /&gt;
&lt;br /&gt;
==== Heartbeat message definition ====&lt;br /&gt;
&lt;br /&gt;
Regardless of transport used the heartbeat message should always be in json. Attribute &amp;quot;heartbeat&amp;quot; should be an array that way it is extensible in the future.&lt;br /&gt;
&lt;br /&gt;
    {&lt;br /&gt;
        &amp;quot;instance_id&amp;quot;: &amp;quot;uuid of instance&amp;quot;,&lt;br /&gt;
        &amp;quot;heartbeat&amp;quot;: {&lt;br /&gt;
            &amp;quot;service_status&amp;quot;: &amp;quot;running&amp;quot;,&lt;br /&gt;
            &amp;quot;service_type&amp;quot;: &amp;quot;mysql&amp;quot;&lt;br /&gt;
         }&lt;br /&gt;
     }&lt;br /&gt;
&lt;br /&gt;
=== Phase 2 ===&lt;br /&gt;
&lt;br /&gt;
1. Change Trove to contact trove-conductor for heartbeat status on the instance and no longer check the database but using RPC calls between the two managers. &lt;br /&gt;
&lt;br /&gt;
2. Abstract out the status data store in a way that attributes in heartbeat message can be mapped to fields in the data store.&lt;br /&gt;
&lt;br /&gt;
The logic behind providing a way to map array attributes in the heartbeat message is so that this could be extended as each deployment sees fit.  This would also allow us to store information that the api currently asks the guest-agent for such as volume space used.  The real goal of having a flexible heartbeat message would be to create a data store that could be used for internal reporting purposes.&lt;br /&gt;
&lt;br /&gt;
=== Future direction ===&lt;br /&gt;
&lt;br /&gt;
Ideas to finish writing about&lt;br /&gt;
&lt;br /&gt;
# Move all agent communication to work though the trove-conductor&lt;br /&gt;
# ????&lt;br /&gt;
# Profit&lt;br /&gt;
&lt;br /&gt;
Yea need to finish up this section :D&lt;/div&gt;</summary>
		<author><name>Edward Konetzko</name></author>	</entry>

	<entry>
		<id>https://wiki.openstack.org/w/index.php?title=File:TroveGAPhase1.png&amp;diff=31033</id>
		<title>File:TroveGAPhase1.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.openstack.org/w/index.php?title=File:TroveGAPhase1.png&amp;diff=31033"/>
				<updated>2013-09-30T17:34:51Z</updated>
		
		<summary type="html">&lt;p&gt;Edward Konetzko: Phase one of guest agent communication changes.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Phase one of guest agent communication changes.&lt;/div&gt;</summary>
		<author><name>Edward Konetzko</name></author>	</entry>

	<entry>
		<id>https://wiki.openstack.org/w/index.php?title=Trove/guest_agent_communication&amp;diff=31030</id>
		<title>Trove/guest agent communication</title>
		<link rel="alternate" type="text/html" href="https://wiki.openstack.org/w/index.php?title=Trove/guest_agent_communication&amp;diff=31030"/>
				<updated>2013-09-30T16:40:23Z</updated>
		
		<summary type="html">&lt;p&gt;Edward Konetzko: /* Guest agent communication */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Guest agent communication ==&lt;br /&gt;
[[File:TroveGACurrent.png|framed|center]]&lt;br /&gt;
There are the following issues with the guest agents communication method.&lt;br /&gt;
# Heartbeats are directly written to the infrastructure database&lt;br /&gt;
# Multiple heartbeats used when one will do.  There is no need to send a heartbeat saying the agent is up and one for the database state.  We know the agent is up if it is reporting the database status. &lt;br /&gt;
# Uses the same transport as the rest of the infrastructure and right now only rabbitmq.&lt;br /&gt;
# Multiple security implications with current design&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Phase 1 ===&lt;br /&gt;
==== Remove guest agent from writing heartbeats directly to infra database ====&lt;br /&gt;
&lt;br /&gt;
Remove heartbeats being written to the database directly via guest agent.  This would solve a huge security issue along with cutting down on connection load to the infra db.&lt;br /&gt;
&lt;br /&gt;
Kenneth Wilke proposed this blueprint https://blueprints.launchpad.net/trove/+spec/taskmanager-statusupdate&lt;br /&gt;
&lt;br /&gt;
It was decided in the weekly meeting to not extend task manager to handle this but write another manager called trove-conductor that would handle heartbeat updates to the infra database.  It was expressed in the meeting that it would be nice to store to data store besides the infra database, while those ideas were accepted it was noted as out of scope for first pass. &lt;br /&gt;
&lt;br /&gt;
http://eavesdrop.openstack.org/meetings/trove/2013/trove.2013-08-07-20.00.html&lt;br /&gt;
&lt;br /&gt;
http://eavesdrop.openstack.org/meetings/trove/2013/trove.2013-08-07-20.00.log.html&lt;br /&gt;
&lt;br /&gt;
One heartbeat should be sent every 60 seconds.  There is a possibility of the guest-agent being able to send an ad-hoc heartbeat if it were to detect a status change in any of the components it reporting on.   For example it could send a heartbeat saying mysql is active every 60 seconds but the guest agent could check MySQL locally every 10.  With this option if there was a state change in MySQL e.g. it crashed 20 seconds into the next heartbeat the status could be updated in an ad-hoc update immediately.   This should cut down on heartbeat chatter while still being flexible enough to reflect status changes immediately.&lt;br /&gt;
&lt;br /&gt;
==== Heartbeat message definition ====&lt;br /&gt;
&lt;br /&gt;
Regardless of transport used the heartbeat message should always be in json. Attribute &amp;quot;heartbeat&amp;quot; should be an array that way it is extensible in the future.&lt;br /&gt;
&lt;br /&gt;
    {&lt;br /&gt;
        &amp;quot;instance_id&amp;quot;: &amp;quot;uuid of instance&amp;quot;,&lt;br /&gt;
        &amp;quot;heartbeat&amp;quot;: {&lt;br /&gt;
            &amp;quot;service_status&amp;quot;: &amp;quot;running&amp;quot;,&lt;br /&gt;
            &amp;quot;service_type&amp;quot;: &amp;quot;mysql&amp;quot;&lt;br /&gt;
         }&lt;br /&gt;
     }&lt;br /&gt;
&lt;br /&gt;
=== Phase 2 ===&lt;br /&gt;
&lt;br /&gt;
1. Change Trove to contact trove-conductor for heartbeat status on the instance and no longer check the database but using RPC calls between the two managers. &lt;br /&gt;
&lt;br /&gt;
2. Abstract out the status data store in a way that attributes in heartbeat message can be mapped to fields in the data store.&lt;br /&gt;
&lt;br /&gt;
The logic behind providing a way to map array attributes in the heartbeat message is so that this could be extended as each deployment sees fit.  This would also allow us to store information that the api currently asks the guest-agent for such as volume space used.  The real goal of having a flexible heartbeat message would be to create a data store that could be used for internal reporting purposes.&lt;br /&gt;
&lt;br /&gt;
=== Future direction ===&lt;br /&gt;
&lt;br /&gt;
Ideas to finish writing about&lt;br /&gt;
&lt;br /&gt;
# Move all agent communication to work though the trove-conductor&lt;br /&gt;
# ????&lt;br /&gt;
# Profit&lt;br /&gt;
&lt;br /&gt;
Yea need to finish up this section :D&lt;/div&gt;</summary>
		<author><name>Edward Konetzko</name></author>	</entry>

	<entry>
		<id>https://wiki.openstack.org/w/index.php?title=File:TroveGACurrent.png&amp;diff=31028</id>
		<title>File:TroveGACurrent.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.openstack.org/w/index.php?title=File:TroveGACurrent.png&amp;diff=31028"/>
				<updated>2013-09-30T16:38:32Z</updated>
		
		<summary type="html">&lt;p&gt;Edward Konetzko: Current Guest Agent communication method.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Current Guest Agent communication method.&lt;/div&gt;</summary>
		<author><name>Edward Konetzko</name></author>	</entry>

	<entry>
		<id>https://wiki.openstack.org/w/index.php?title=File:Current.png&amp;diff=31027</id>
		<title>File:Current.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.openstack.org/w/index.php?title=File:Current.png&amp;diff=31027"/>
				<updated>2013-09-30T16:36:07Z</updated>
		
		<summary type="html">&lt;p&gt;Edward Konetzko: Edward Konetzko uploaded a new version of &amp;amp;quot;File:Current.png&amp;amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Heat - Current Autoscaling architecture.&lt;/div&gt;</summary>
		<author><name>Edward Konetzko</name></author>	</entry>

	<entry>
		<id>https://wiki.openstack.org/w/index.php?title=File:Current.png&amp;diff=31026</id>
		<title>File:Current.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.openstack.org/w/index.php?title=File:Current.png&amp;diff=31026"/>
				<updated>2013-09-30T16:34:42Z</updated>
		
		<summary type="html">&lt;p&gt;Edward Konetzko: Edward Konetzko uploaded a new version of &amp;amp;quot;File:Current.png&amp;amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Heat - Current Autoscaling architecture.&lt;/div&gt;</summary>
		<author><name>Edward Konetzko</name></author>	</entry>

	<entry>
		<id>https://wiki.openstack.org/w/index.php?title=Trove/guest_agent_communication&amp;diff=30420</id>
		<title>Trove/guest agent communication</title>
		<link rel="alternate" type="text/html" href="https://wiki.openstack.org/w/index.php?title=Trove/guest_agent_communication&amp;diff=30420"/>
				<updated>2013-09-19T21:09:34Z</updated>
		
		<summary type="html">&lt;p&gt;Edward Konetzko: /* Heartbeat message definition */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Guest agent communication ==&lt;br /&gt;
&lt;br /&gt;
There are the following issues with the guest agents communication method.&lt;br /&gt;
# Heartbeats are directly written to the infrastructure database&lt;br /&gt;
# Multiple heartbeats used when one will do.  There is no need to send a heartbeat saying the agent is up and one for the database state.  We know the agent is up if it is reporting the database status. &lt;br /&gt;
# Uses the same transport as the rest of the infrastructure and right now only rabbitmq.&lt;br /&gt;
# Multiple security implications with current design&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Phase 1 ===&lt;br /&gt;
==== Remove guest agent from writing heartbeats directly to infra database ====&lt;br /&gt;
&lt;br /&gt;
Remove heartbeats being written to the database directly via guest agent.  This would solve a huge security issue along with cutting down on connection load to the infra db.&lt;br /&gt;
&lt;br /&gt;
Kenneth Wilke proposed this blueprint https://blueprints.launchpad.net/trove/+spec/taskmanager-statusupdate&lt;br /&gt;
&lt;br /&gt;
It was decided in the weekly meeting to not extend task manager to handle this but write another manager called trove-conductor that would handle heartbeat updates to the infra database.  It was expressed in the meeting that it would be nice to store to data store besides the infra database, while those ideas were accepted it was noted as out of scope for first pass. &lt;br /&gt;
&lt;br /&gt;
http://eavesdrop.openstack.org/meetings/trove/2013/trove.2013-08-07-20.00.html&lt;br /&gt;
&lt;br /&gt;
http://eavesdrop.openstack.org/meetings/trove/2013/trove.2013-08-07-20.00.log.html&lt;br /&gt;
&lt;br /&gt;
One heartbeat should be sent every 60 seconds.  There is a possibility of the guest-agent being able to send an ad-hoc heartbeat if it were to detect a status change in any of the components it reporting on.   For example it could send a heartbeat saying mysql is active every 60 seconds but the guest agent could check MySQL locally every 10.  With this option if there was a state change in MySQL e.g. it crashed 20 seconds into the next heartbeat the status could be updated in an ad-hoc update immediately.   This should cut down on heartbeat chatter while still being flexible enough to reflect status changes immediately.&lt;br /&gt;
&lt;br /&gt;
==== Heartbeat message definition ====&lt;br /&gt;
&lt;br /&gt;
Regardless of transport used the heartbeat message should always be in json. Attribute &amp;quot;heartbeat&amp;quot; should be an array that way it is extensible in the future.&lt;br /&gt;
&lt;br /&gt;
    {&lt;br /&gt;
        &amp;quot;instance_id&amp;quot;: &amp;quot;uuid of instance&amp;quot;,&lt;br /&gt;
        &amp;quot;heartbeat&amp;quot;: {&lt;br /&gt;
            &amp;quot;service_status&amp;quot;: &amp;quot;running&amp;quot;,&lt;br /&gt;
            &amp;quot;service_type&amp;quot;: &amp;quot;mysql&amp;quot;&lt;br /&gt;
         }&lt;br /&gt;
     }&lt;br /&gt;
&lt;br /&gt;
=== Phase 2 ===&lt;br /&gt;
&lt;br /&gt;
1. Change Trove to contact trove-conductor for heartbeat status on the instance and no longer check the database but using RPC calls between the two managers. &lt;br /&gt;
&lt;br /&gt;
2. Abstract out the status data store in a way that attributes in heartbeat message can be mapped to fields in the data store.&lt;br /&gt;
&lt;br /&gt;
The logic behind providing a way to map array attributes in the heartbeat message is so that this could be extended as each deployment sees fit.  This would also allow us to store information that the api currently asks the guest-agent for such as volume space used.  The real goal of having a flexible heartbeat message would be to create a data store that could be used for internal reporting purposes.&lt;br /&gt;
&lt;br /&gt;
=== Future direction ===&lt;br /&gt;
&lt;br /&gt;
Ideas to finish writing about&lt;br /&gt;
&lt;br /&gt;
# Move all agent communication to work though the trove-conductor&lt;br /&gt;
# ????&lt;br /&gt;
# Profit&lt;br /&gt;
&lt;br /&gt;
Yea need to finish up this section :D&lt;/div&gt;</summary>
		<author><name>Edward Konetzko</name></author>	</entry>

	<entry>
		<id>https://wiki.openstack.org/w/index.php?title=Trove/guest_agent_communication&amp;diff=30419</id>
		<title>Trove/guest agent communication</title>
		<link rel="alternate" type="text/html" href="https://wiki.openstack.org/w/index.php?title=Trove/guest_agent_communication&amp;diff=30419"/>
				<updated>2013-09-19T21:08:53Z</updated>
		
		<summary type="html">&lt;p&gt;Edward Konetzko: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Guest agent communication ==&lt;br /&gt;
&lt;br /&gt;
There are the following issues with the guest agents communication method.&lt;br /&gt;
# Heartbeats are directly written to the infrastructure database&lt;br /&gt;
# Multiple heartbeats used when one will do.  There is no need to send a heartbeat saying the agent is up and one for the database state.  We know the agent is up if it is reporting the database status. &lt;br /&gt;
# Uses the same transport as the rest of the infrastructure and right now only rabbitmq.&lt;br /&gt;
# Multiple security implications with current design&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Phase 1 ===&lt;br /&gt;
==== Remove guest agent from writing heartbeats directly to infra database ====&lt;br /&gt;
&lt;br /&gt;
Remove heartbeats being written to the database directly via guest agent.  This would solve a huge security issue along with cutting down on connection load to the infra db.&lt;br /&gt;
&lt;br /&gt;
Kenneth Wilke proposed this blueprint https://blueprints.launchpad.net/trove/+spec/taskmanager-statusupdate&lt;br /&gt;
&lt;br /&gt;
It was decided in the weekly meeting to not extend task manager to handle this but write another manager called trove-conductor that would handle heartbeat updates to the infra database.  It was expressed in the meeting that it would be nice to store to data store besides the infra database, while those ideas were accepted it was noted as out of scope for first pass. &lt;br /&gt;
&lt;br /&gt;
http://eavesdrop.openstack.org/meetings/trove/2013/trove.2013-08-07-20.00.html&lt;br /&gt;
&lt;br /&gt;
http://eavesdrop.openstack.org/meetings/trove/2013/trove.2013-08-07-20.00.log.html&lt;br /&gt;
&lt;br /&gt;
One heartbeat should be sent every 60 seconds.  There is a possibility of the guest-agent being able to send an ad-hoc heartbeat if it were to detect a status change in any of the components it reporting on.   For example it could send a heartbeat saying mysql is active every 60 seconds but the guest agent could check MySQL locally every 10.  With this option if there was a state change in MySQL e.g. it crashed 20 seconds into the next heartbeat the status could be updated in an ad-hoc update immediately.   This should cut down on heartbeat chatter while still being flexible enough to reflect status changes immediately.&lt;br /&gt;
&lt;br /&gt;
==== Heartbeat message definition ====&lt;br /&gt;
&lt;br /&gt;
Regardless of transport used the heartbeat message should always be in json. Attribute &amp;quot;heartbeat&amp;quot; should be an array that way it is extensible in the future.&lt;br /&gt;
&lt;br /&gt;
    {&lt;br /&gt;
        &amp;quot;instance_id&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
        &amp;quot;heartbeat&amp;quot;: {&lt;br /&gt;
            &amp;quot;service_status&amp;quot;: &amp;quot;running&amp;quot;,&lt;br /&gt;
            &amp;quot;service_type&amp;quot;: &amp;quot;mysql&amp;quot;&lt;br /&gt;
         }&lt;br /&gt;
     }&lt;br /&gt;
=== Phase 2 ===&lt;br /&gt;
&lt;br /&gt;
1. Change Trove to contact trove-conductor for heartbeat status on the instance and no longer check the database but using RPC calls between the two managers. &lt;br /&gt;
&lt;br /&gt;
2. Abstract out the status data store in a way that attributes in heartbeat message can be mapped to fields in the data store.&lt;br /&gt;
&lt;br /&gt;
The logic behind providing a way to map array attributes in the heartbeat message is so that this could be extended as each deployment sees fit.  This would also allow us to store information that the api currently asks the guest-agent for such as volume space used.  The real goal of having a flexible heartbeat message would be to create a data store that could be used for internal reporting purposes.&lt;br /&gt;
&lt;br /&gt;
=== Future direction ===&lt;br /&gt;
&lt;br /&gt;
Ideas to finish writing about&lt;br /&gt;
&lt;br /&gt;
# Move all agent communication to work though the trove-conductor&lt;br /&gt;
# ????&lt;br /&gt;
# Profit&lt;br /&gt;
&lt;br /&gt;
Yea need to finish up this section :D&lt;/div&gt;</summary>
		<author><name>Edward Konetzko</name></author>	</entry>

	<entry>
		<id>https://wiki.openstack.org/w/index.php?title=Trove/guest_agent_communication&amp;diff=28939</id>
		<title>Trove/guest agent communication</title>
		<link rel="alternate" type="text/html" href="https://wiki.openstack.org/w/index.php?title=Trove/guest_agent_communication&amp;diff=28939"/>
				<updated>2013-08-27T18:03:48Z</updated>
		
		<summary type="html">&lt;p&gt;Edward Konetzko: /* Future direction */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Guest agent communication ==&lt;br /&gt;
&lt;br /&gt;
There are the following issues with the guest agents communication method.&lt;br /&gt;
# Heartbeats are directly written to the infrastructure database&lt;br /&gt;
# Multiple heartbeats used when one will do.  There is no need to send a heartbeat saying the agent is up and one for the database state.  We know the agent is up if it is reporting the database status. &lt;br /&gt;
# Uses the same transport as the rest of the infrastructure and right now only rabbitmq.&lt;br /&gt;
# Multiple security implications with current design&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Phase 1 ===&lt;br /&gt;
==== Remove guest agent from writing heartbeats directly to infra database ====&lt;br /&gt;
&lt;br /&gt;
Remove heartbeats being written to the database directly via guest agent.  This would solve a huge security issue along with cutting down on connection load to the infra db.&lt;br /&gt;
&lt;br /&gt;
Kenneth Wilke proposed this blueprint https://blueprints.launchpad.net/trove/+spec/taskmanager-statusupdate&lt;br /&gt;
&lt;br /&gt;
It was decided in the weekly meeting to not extend task manager to handle this but write another manager called trove-conductor that would handle heartbeat updates to the infra database.  It was expressed in the meeting that it would be nice to store to data store besides the infra database, while those ideas were accepted it was noted as out of scope for first pass. &lt;br /&gt;
&lt;br /&gt;
http://eavesdrop.openstack.org/meetings/trove/2013/trove.2013-08-07-20.00.html&lt;br /&gt;
&lt;br /&gt;
http://eavesdrop.openstack.org/meetings/trove/2013/trove.2013-08-07-20.00.log.html&lt;br /&gt;
&lt;br /&gt;
One heartbeat should be sent every 60 seconds.  There is a possibility of the guest-agent being able to send an ad-hoc heartbeat if it were to detect a status change in any of the components it reporting on.   For example it could send a heartbeat saying mysql is active every 60 seconds but the guest agent could check MySQL locally every 10.  With this option if there was a state change in MySQL e.g. it crashed 20 seconds into the next heartbeat the status could be updated in an ad-hoc update immediately.   This should cut down on heartbeat chatter while still being flexible enough to reflect status changes immediately.&lt;br /&gt;
&lt;br /&gt;
==== Heartbeat message definition ====&lt;br /&gt;
&lt;br /&gt;
Regardless of transport used the heartbeat message should always be in json. Attribute &amp;quot;heartbeat&amp;quot; should be an array that way it is extensible in the future.&lt;br /&gt;
&lt;br /&gt;
    {&lt;br /&gt;
        &amp;quot;instanceID&amp;quot;: &amp;quot;UUID OF THE INSTANCE&amp;quot;&lt;br /&gt;
        &amp;quot;heartbeat&amp;quot;: [&lt;br /&gt;
            { &amp;quot;agentstatus&amp;quot;:&amp;quot;online&amp;quot; , &amp;quot;mysqlstatus&amp;quot;:&amp;quot;running&amp;quot; }&lt;br /&gt;
        ]&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
=== Phase 2 ===&lt;br /&gt;
&lt;br /&gt;
1. Change Trove to contact trove-conductor for heartbeat status on the instance and no longer check the database but using RPC calls between the two managers. &lt;br /&gt;
&lt;br /&gt;
2. Abstract out the status data store in a way that attributes in heartbeat message can be mapped to fields in the data store.&lt;br /&gt;
&lt;br /&gt;
The logic behind providing a way to map array attributes in the heartbeat message is so that this could be extended as each deployment sees fit.  This would also allow us to store information that the api currently asks the guest-agent for such as volume space used.  The real goal of having a flexible heartbeat message would be to create a data store that could be used for internal reporting purposes.&lt;br /&gt;
&lt;br /&gt;
=== Future direction ===&lt;br /&gt;
&lt;br /&gt;
Ideas to finish writing about&lt;br /&gt;
&lt;br /&gt;
# Move all agent communication to work though the trove-conductor&lt;br /&gt;
# ????&lt;br /&gt;
# Profit&lt;br /&gt;
&lt;br /&gt;
Yea need to finish up this section :D&lt;/div&gt;</summary>
		<author><name>Edward Konetzko</name></author>	</entry>

	<entry>
		<id>https://wiki.openstack.org/w/index.php?title=Trove/guest_agent_communication&amp;diff=28938</id>
		<title>Trove/guest agent communication</title>
		<link rel="alternate" type="text/html" href="https://wiki.openstack.org/w/index.php?title=Trove/guest_agent_communication&amp;diff=28938"/>
				<updated>2013-08-27T18:03:15Z</updated>
		
		<summary type="html">&lt;p&gt;Edward Konetzko: /* Phase 2 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Guest agent communication ==&lt;br /&gt;
&lt;br /&gt;
There are the following issues with the guest agents communication method.&lt;br /&gt;
# Heartbeats are directly written to the infrastructure database&lt;br /&gt;
# Multiple heartbeats used when one will do.  There is no need to send a heartbeat saying the agent is up and one for the database state.  We know the agent is up if it is reporting the database status. &lt;br /&gt;
# Uses the same transport as the rest of the infrastructure and right now only rabbitmq.&lt;br /&gt;
# Multiple security implications with current design&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Phase 1 ===&lt;br /&gt;
==== Remove guest agent from writing heartbeats directly to infra database ====&lt;br /&gt;
&lt;br /&gt;
Remove heartbeats being written to the database directly via guest agent.  This would solve a huge security issue along with cutting down on connection load to the infra db.&lt;br /&gt;
&lt;br /&gt;
Kenneth Wilke proposed this blueprint https://blueprints.launchpad.net/trove/+spec/taskmanager-statusupdate&lt;br /&gt;
&lt;br /&gt;
It was decided in the weekly meeting to not extend task manager to handle this but write another manager called trove-conductor that would handle heartbeat updates to the infra database.  It was expressed in the meeting that it would be nice to store to data store besides the infra database, while those ideas were accepted it was noted as out of scope for first pass. &lt;br /&gt;
&lt;br /&gt;
http://eavesdrop.openstack.org/meetings/trove/2013/trove.2013-08-07-20.00.html&lt;br /&gt;
&lt;br /&gt;
http://eavesdrop.openstack.org/meetings/trove/2013/trove.2013-08-07-20.00.log.html&lt;br /&gt;
&lt;br /&gt;
One heartbeat should be sent every 60 seconds.  There is a possibility of the guest-agent being able to send an ad-hoc heartbeat if it were to detect a status change in any of the components it reporting on.   For example it could send a heartbeat saying mysql is active every 60 seconds but the guest agent could check MySQL locally every 10.  With this option if there was a state change in MySQL e.g. it crashed 20 seconds into the next heartbeat the status could be updated in an ad-hoc update immediately.   This should cut down on heartbeat chatter while still being flexible enough to reflect status changes immediately.&lt;br /&gt;
&lt;br /&gt;
==== Heartbeat message definition ====&lt;br /&gt;
&lt;br /&gt;
Regardless of transport used the heartbeat message should always be in json. Attribute &amp;quot;heartbeat&amp;quot; should be an array that way it is extensible in the future.&lt;br /&gt;
&lt;br /&gt;
    {&lt;br /&gt;
        &amp;quot;instanceID&amp;quot;: &amp;quot;UUID OF THE INSTANCE&amp;quot;&lt;br /&gt;
        &amp;quot;heartbeat&amp;quot;: [&lt;br /&gt;
            { &amp;quot;agentstatus&amp;quot;:&amp;quot;online&amp;quot; , &amp;quot;mysqlstatus&amp;quot;:&amp;quot;running&amp;quot; }&lt;br /&gt;
        ]&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
=== Phase 2 ===&lt;br /&gt;
&lt;br /&gt;
1. Change Trove to contact trove-conductor for heartbeat status on the instance and no longer check the database but using RPC calls between the two managers. &lt;br /&gt;
&lt;br /&gt;
2. Abstract out the status data store in a way that attributes in heartbeat message can be mapped to fields in the data store.&lt;br /&gt;
&lt;br /&gt;
The logic behind providing a way to map array attributes in the heartbeat message is so that this could be extended as each deployment sees fit.  This would also allow us to store information that the api currently asks the guest-agent for such as volume space used.  The real goal of having a flexible heartbeat message would be to create a data store that could be used for internal reporting purposes.&lt;br /&gt;
&lt;br /&gt;
=== Future direction ===&lt;br /&gt;
&lt;br /&gt;
Ideas to finish writing about&lt;br /&gt;
# Write heartbeats to a different data store, api's servers would need updates to talk to trove-conductor for status information.&lt;br /&gt;
# Allow for expanded information to be passed back in the heartbeat.  Ideas tossed around were MySQL version and/or guest agent version but the possibilities would be endless.  With this it was thought that we could possible create an in memory reporting database to gather information on instance w/o having to query all instances.   The idea of keeping it in memory is because non of the information is stored for historical value and if it was all lost it would be populated in one heartbeat cycle.  There was a question brought up on what happens when an instance shows up as no in the in memory data store, response was if it doesnt show up it must not be on-line.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
# Move all agent communication to work though the trove-conductor&lt;br /&gt;
# ????&lt;br /&gt;
# Profit&lt;br /&gt;
&lt;br /&gt;
Yea need to finish up this section :D&lt;/div&gt;</summary>
		<author><name>Edward Konetzko</name></author>	</entry>

	<entry>
		<id>https://wiki.openstack.org/w/index.php?title=Trove/guest_agent_communication&amp;diff=28334</id>
		<title>Trove/guest agent communication</title>
		<link rel="alternate" type="text/html" href="https://wiki.openstack.org/w/index.php?title=Trove/guest_agent_communication&amp;diff=28334"/>
				<updated>2013-08-19T18:46:25Z</updated>
		
		<summary type="html">&lt;p&gt;Edward Konetzko: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Guest agent communication ==&lt;br /&gt;
&lt;br /&gt;
There are the following issues with the guest agents communication method.&lt;br /&gt;
# Heartbeats are directly written to the infrastructure database&lt;br /&gt;
# Multiple heartbeats used when one will do.  There is no need to send a heartbeat saying the agent is up and one for the database state.  We know the agent is up if it is reporting the database status. &lt;br /&gt;
# Uses the same transport as the rest of the infrastructure and right now only rabbitmq.&lt;br /&gt;
# Multiple security implications with current design&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Phase 1 ===&lt;br /&gt;
==== Remove guest agent from writing heartbeats directly to infra database ====&lt;br /&gt;
&lt;br /&gt;
Remove heartbeats being written to the database directly via guest agent.  This would solve a huge security issue along with cutting down on connection load to the infra db.&lt;br /&gt;
&lt;br /&gt;
Kenneth Wilke proposed this blueprint https://blueprints.launchpad.net/trove/+spec/taskmanager-statusupdate&lt;br /&gt;
&lt;br /&gt;
It was decided in the weekly meeting to not extend task manager to handle this but write another manager called trove-conductor that would handle heartbeat updates to the infra database.  It was expressed in the meeting that it would be nice to store to data store besides the infra database, while those ideas were accepted it was noted as out of scope for first pass. &lt;br /&gt;
&lt;br /&gt;
http://eavesdrop.openstack.org/meetings/trove/2013/trove.2013-08-07-20.00.html&lt;br /&gt;
&lt;br /&gt;
http://eavesdrop.openstack.org/meetings/trove/2013/trove.2013-08-07-20.00.log.html&lt;br /&gt;
&lt;br /&gt;
One heartbeat should be sent every 60 seconds.  There is a possibility of the guest-agent being able to send an ad-hoc heartbeat if it were to detect a status change in any of the components it reporting on.   For example it could send a heartbeat saying mysql is active every 60 seconds but the guest agent could check MySQL locally every 10.  With this option if there was a state change in MySQL e.g. it crashed 20 seconds into the next heartbeat the status could be updated in an ad-hoc update immediately.   This should cut down on heartbeat chatter while still being flexible enough to reflect status changes immediately.&lt;br /&gt;
&lt;br /&gt;
==== Heartbeat message definition ====&lt;br /&gt;
&lt;br /&gt;
Regardless of transport used the heartbeat message should always be in json. Attribute &amp;quot;heartbeat&amp;quot; should be an array that way it is extensible in the future.&lt;br /&gt;
&lt;br /&gt;
    {&lt;br /&gt;
        &amp;quot;instanceID&amp;quot;: &amp;quot;UUID OF THE INSTANCE&amp;quot;&lt;br /&gt;
        &amp;quot;heartbeat&amp;quot;: [&lt;br /&gt;
            { &amp;quot;agentstatus&amp;quot;:&amp;quot;online&amp;quot; , &amp;quot;mysqlstatus&amp;quot;:&amp;quot;running&amp;quot; }&lt;br /&gt;
        ]&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
=== Phase 2 ===&lt;br /&gt;
&lt;br /&gt;
1. Change Trove to contact trove-conductor for heartbeat status on the instance and no longer check the database but using RPC calls between the two managers. &lt;br /&gt;
&lt;br /&gt;
2. Abstract out the status data store in a way that attributes in heartbeat message can be mapped to fields in the data store.&lt;br /&gt;
&lt;br /&gt;
The logic behind providing a way to map array attributes in the heartbeat message is so that this could be extended as each deployment sees fit. For example one could extend the heartbeat to include the version of mysql packages and/or guest-agent version to create an in memory reporting data store.  Some of these extended attributes could be returned back to the customers but the real benefit would be to give operations insight into the customers instances without having to query the instances.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Future direction ===&lt;br /&gt;
&lt;br /&gt;
Ideas to finish writing about&lt;br /&gt;
# Write heartbeats to a different data store, api's servers would need updates to talk to trove-conductor for status information.&lt;br /&gt;
# Allow for expanded information to be passed back in the heartbeat.  Ideas tossed around were MySQL version and/or guest agent version but the possibilities would be endless.  With this it was thought that we could possible create an in memory reporting database to gather information on instance w/o having to query all instances.   The idea of keeping it in memory is because non of the information is stored for historical value and if it was all lost it would be populated in one heartbeat cycle.  There was a question brought up on what happens when an instance shows up as no in the in memory data store, response was if it doesnt show up it must not be on-line.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
# Move all agent communication to work though the trove-conductor&lt;br /&gt;
# ????&lt;br /&gt;
# Profit&lt;br /&gt;
&lt;br /&gt;
Yea need to finish up this section :D&lt;/div&gt;</summary>
		<author><name>Edward Konetzko</name></author>	</entry>

	<entry>
		<id>https://wiki.openstack.org/w/index.php?title=Trove/guest_agent_communication&amp;diff=28333</id>
		<title>Trove/guest agent communication</title>
		<link rel="alternate" type="text/html" href="https://wiki.openstack.org/w/index.php?title=Trove/guest_agent_communication&amp;diff=28333"/>
				<updated>2013-08-19T18:43:01Z</updated>
		
		<summary type="html">&lt;p&gt;Edward Konetzko: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Guest agent communication ==&lt;br /&gt;
&lt;br /&gt;
There are the following issues with the guest agents communication method.&lt;br /&gt;
# Heartbeats are directly written to the infrastructure database&lt;br /&gt;
# Multiple heartbeats used when one will do.  There is no need to send a heartbeat saying the agent is up and one for the database state.  We know the agent is up if it is reporting the database status. &lt;br /&gt;
# Uses the same transport as the rest of the infrastructure and right now only rabbitmq.&lt;br /&gt;
# Multiple security implications with current design&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Phase 1 ===&lt;br /&gt;
==== Remove guest agent from writing heartbeats directly to infra database ====&lt;br /&gt;
&lt;br /&gt;
Remove heartbeats being written to the database directly via guest agent.  This would solve a huge security issue along with cutting down on connection load to the infra db.&lt;br /&gt;
&lt;br /&gt;
Kenneth Wilke proposed this blueprint https://blueprints.launchpad.net/trove/+spec/taskmanager-statusupdate&lt;br /&gt;
&lt;br /&gt;
It was decided in the weekly meeting to not extend task manager to handle this but write another manager called trove-conductor that would handle heartbeat updates to the infra database.  It was expressed in the meeting that it would be nice to store to data store besides the infra database, while those ideas were accepted it was noted as out of scope for first pass. &lt;br /&gt;
&lt;br /&gt;
http://eavesdrop.openstack.org/meetings/trove/2013/trove.2013-08-07-20.00.html&lt;br /&gt;
&lt;br /&gt;
http://eavesdrop.openstack.org/meetings/trove/2013/trove.2013-08-07-20.00.log.html&lt;br /&gt;
&lt;br /&gt;
One heartbeat should be sent every 60 seconds.  There is a possibility of the guest-agent being able to send an ad-hoc heartbeat if it were to detect a status change in any of the components it reporting on.   For example it could send a heartbeat saying mysql is active every 60 seconds but the guest agent could check MySQL locally every 10.  With this option if there was a state change in MySQL e.g. it crashed 20 seconds into the next heartbeat the status could be updated in an ad-hoc update immediately.   This should cut down on heartbeat chatter while still being flexible enough to reflect status changes immediately.&lt;br /&gt;
&lt;br /&gt;
==== Heartbeat message definition ====&lt;br /&gt;
&lt;br /&gt;
Regardless of transport used the heartbeat message should always be in json. Attribute &amp;quot;heartbeat&amp;quot; should be an array that way it is extensible in the future.&lt;br /&gt;
&lt;br /&gt;
    {&lt;br /&gt;
        &amp;quot;instanceID&amp;quot;: &amp;quot;UUID OF THE INSTANCE&amp;quot;&lt;br /&gt;
        &amp;quot;heartbeat&amp;quot;: [&lt;br /&gt;
            { &amp;quot;agentstatus&amp;quot;:&amp;quot;online&amp;quot; , &amp;quot;mysqlstatus&amp;quot;:&amp;quot;running&amp;quot; }&lt;br /&gt;
        ]&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
=== Phase 2 ===&lt;br /&gt;
&lt;br /&gt;
1. Change Trove to contact trove-conductor for heartbeat status on the instance and no longer check the database. &lt;br /&gt;
&lt;br /&gt;
2. Abstract out the status data store in a way that attributes in heartbeat message can be mapped to fields in the data store.&lt;br /&gt;
&lt;br /&gt;
The logic behind providing a way to map array attributes in the heartbeat message is so that this could be extended as each deployment sees fit. For example one could extend the heartbeat to include the version of mysql packages and/or guest-agent version to create an in memory reporting data store.  Some of these extended attributes could be returned back to the customers but the real benefit would be to give operations insight into the customers instances without having to query the instances.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Future direction ===&lt;br /&gt;
&lt;br /&gt;
Ideas to finish writing about&lt;br /&gt;
# Write heartbeats to a different data store, api's servers would need updates to talk to trove-conductor for status information.&lt;br /&gt;
# Allow for expanded information to be passed back in the heartbeat.  Ideas tossed around were MySQL version and/or guest agent version but the possibilities would be endless.  With this it was thought that we could possible create an in memory reporting database to gather information on instance w/o having to query all instances.   The idea of keeping it in memory is because non of the information is stored for historical value and if it was all lost it would be populated in one heartbeat cycle.  There was a question brought up on what happens when an instance shows up as no in the in memory data store, response was if it doesnt show up it must not be on-line.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
# Move all agent communication to work though the trove-conductor&lt;br /&gt;
# ????&lt;br /&gt;
# Profit&lt;br /&gt;
&lt;br /&gt;
Yea need to finish up this section :D&lt;/div&gt;</summary>
		<author><name>Edward Konetzko</name></author>	</entry>

	<entry>
		<id>https://wiki.openstack.org/w/index.php?title=Trove/guest_agent_communication&amp;diff=28332</id>
		<title>Trove/guest agent communication</title>
		<link rel="alternate" type="text/html" href="https://wiki.openstack.org/w/index.php?title=Trove/guest_agent_communication&amp;diff=28332"/>
				<updated>2013-08-19T18:31:59Z</updated>
		
		<summary type="html">&lt;p&gt;Edward Konetzko: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Guest agent communication ==&lt;br /&gt;
&lt;br /&gt;
There are the following issues with the guest agents communication method.&lt;br /&gt;
# Heartbeats are directly written to the infrastructure database&lt;br /&gt;
# Multiple heartbeats used when one will do.  There is no need to send a heartbeat saying the agent is up and one for the database state.  We know the agent is up if it is reporting the database status. &lt;br /&gt;
# Uses the same transport as the rest of the infrastructure and right now only rabbitmq.&lt;br /&gt;
# Multiple security implications with current design&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Phase 1 ===&lt;br /&gt;
==== Remove guest agent from writing heartbeats directly to infra database ====&lt;br /&gt;
&lt;br /&gt;
Remove heartbeats being written to the database directly via guest agent.  This would solve a huge security issue along with cutting down on connection load to the infra db.&lt;br /&gt;
&lt;br /&gt;
Kenneth Wilke proposed this blueprint https://blueprints.launchpad.net/trove/+spec/taskmanager-statusupdate&lt;br /&gt;
&lt;br /&gt;
It was decided in the weekly meeting to not extend task manager to handle this but write another manager called trove-conductor that would handle heartbeat updates to the infra database.  It was expressed in the meeting that it would be nice to store to data store besides the infra database, while those ideas were accepted it was noted as out of scope for first pass. &lt;br /&gt;
&lt;br /&gt;
http://eavesdrop.openstack.org/meetings/trove/2013/trove.2013-08-07-20.00.html&lt;br /&gt;
&lt;br /&gt;
http://eavesdrop.openstack.org/meetings/trove/2013/trove.2013-08-07-20.00.log.html&lt;br /&gt;
&lt;br /&gt;
One heartbeat should be sent every 60 seconds.  There is a possibility of the guest-agent being able to send an ad-hoc heartbeat if it were to detect a status change in any of the components it reporting on.   For example it could send a heartbeat saying mysql is active every 60 seconds but the guest agent could check MySQL locally every 10.  With this option if there was a state change in MySQL e.g. it crashed 20 seconds into the next heartbeat the status could be updated in an ad-hoc update immediately.   This should cut down on heartbeat chatter while still being flexible enough to reflect status changes immediately.&lt;br /&gt;
&lt;br /&gt;
==== Heartbeat message definition ====&lt;br /&gt;
&lt;br /&gt;
Regardless of transport used the heartbeat message should always be in json. Attribute &amp;quot;heartbeat&amp;quot; should be an array that way it is extensible in the future.&lt;br /&gt;
&lt;br /&gt;
    {&lt;br /&gt;
        &amp;quot;instanceID&amp;quot;: &amp;quot;UUID OF THE INSTANCE&amp;quot;&lt;br /&gt;
        &amp;quot;heartbeat&amp;quot;: [&lt;br /&gt;
            { &amp;quot;agentstatus&amp;quot;:&amp;quot;online&amp;quot; , &amp;quot;mysqlstatus&amp;quot;:&amp;quot;running&amp;quot; }&lt;br /&gt;
        ]&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
=== Phase 2 ===&lt;br /&gt;
&lt;br /&gt;
1. Change Trove to contact trove-conductor for heartbeat status on the instance and no longer check the database. &lt;br /&gt;
2. Abstract out the status data store in a way that attributes in heartbeat message can be mapped to fields in the data store.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Future direction ===&lt;br /&gt;
&lt;br /&gt;
Ideas to finish writing about&lt;br /&gt;
# Write heartbeats to a different data store, api's servers would need updates to talk to trove-conductor for status information.&lt;br /&gt;
# Allow for expanded information to be passed back in the heartbeat.  Ideas tossed around were MySQL version and/or guest agent version but the possibilities would be endless.  With this it was thought that we could possible create an in memory reporting database to gather information on instance w/o having to query all instances.   The idea of keeping it in memory is because non of the information is stored for historical value and if it was all lost it would be populated in one heartbeat cycle.  There was a question brought up on what happens when an instance shows up as no in the in memory data store, response was if it doesnt show up it must not be on-line.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
# Move all agent communication to work though the trove-conductor&lt;br /&gt;
# ????&lt;br /&gt;
# Profit&lt;br /&gt;
&lt;br /&gt;
Yea need to finish up this section :D&lt;/div&gt;</summary>
		<author><name>Edward Konetzko</name></author>	</entry>

	<entry>
		<id>https://wiki.openstack.org/w/index.php?title=Trove/guest_agent_communication&amp;diff=28331</id>
		<title>Trove/guest agent communication</title>
		<link rel="alternate" type="text/html" href="https://wiki.openstack.org/w/index.php?title=Trove/guest_agent_communication&amp;diff=28331"/>
				<updated>2013-08-19T18:27:57Z</updated>
		
		<summary type="html">&lt;p&gt;Edward Konetzko: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Guest agent communication ==&lt;br /&gt;
&lt;br /&gt;
There are the following issues with the guest agents communication method.&lt;br /&gt;
# Heartbeats are directly written to the infrastructure database&lt;br /&gt;
# Multiple heartbeats used when one will do.  There is no need to send a heartbeat saying the agent is up and one for the database state.  We know the agent is up if it is reporting the database status. &lt;br /&gt;
# Uses the same transport as the rest of the infrastructure and right now only rabbitmq.&lt;br /&gt;
# Multiple security implications with current design&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Phase 1 ===&lt;br /&gt;
==== Remove guest agent from writing heartbeats directly to infra database ====&lt;br /&gt;
&lt;br /&gt;
Remove heartbeats being written to the database directly via guest agent.  This would solve a huge security issue along with cutting down on connection load to the infra db.&lt;br /&gt;
&lt;br /&gt;
Kenneth Wilke proposed this blueprint https://blueprints.launchpad.net/trove/+spec/taskmanager-statusupdate&lt;br /&gt;
&lt;br /&gt;
It was decided in the weekly meeting to not extend task manager to handle this but write another manager called trove-conductor that would handle heartbeat updates to the infra database.  It was expressed in the meeting that it would be nice to store to data store besides the infra database, while those ideas were accepted it was noted as out of scope for first pass. &lt;br /&gt;
&lt;br /&gt;
http://eavesdrop.openstack.org/meetings/trove/2013/trove.2013-08-07-20.00.html&lt;br /&gt;
&lt;br /&gt;
http://eavesdrop.openstack.org/meetings/trove/2013/trove.2013-08-07-20.00.log.html&lt;br /&gt;
&lt;br /&gt;
One heartbeat should be sent every 60 seconds.  There is a possibility of the guest-agent being able to send an ad-hoc heartbeat if it were to detect a status change in any of the components it reporting on.   For example it could send a heartbeat saying mysql is active every 60 seconds but the guest agent could check MySQL locally every 10.  With this option if there was a state change in MySQL e.g. it crashed 20 seconds into the next heartbeat the status could be updated in an ad-hoc update immediately.   This should cut down on heartbeat chatter while still being flexible enough to reflect status changes immediately.&lt;br /&gt;
&lt;br /&gt;
==== Heartbeat message definition ====&lt;br /&gt;
&lt;br /&gt;
Regardless of transport used the heartbeat message should always be in json. Attribute &amp;quot;heartbeat&amp;quot; should be an array that way it is extensible in the future.&lt;br /&gt;
&lt;br /&gt;
    {&lt;br /&gt;
        &amp;quot;heartbeat&amp;quot;: [&lt;br /&gt;
            { &amp;quot;agentstatus&amp;quot;:&amp;quot;online&amp;quot; , &amp;quot;mysqlstatus&amp;quot;:&amp;quot;running&amp;quot; }&lt;br /&gt;
        ]&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
=== Phase 2 ===&lt;br /&gt;
&lt;br /&gt;
Change Trove to contact trove-conductor for status on the instance and no longer check the database. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Future direction ===&lt;br /&gt;
&lt;br /&gt;
Ideas to finish writing about&lt;br /&gt;
# Write heartbeats to a different data store, api's servers would need updates to talk to trove-conductor for status information.&lt;br /&gt;
# Allow for expanded information to be passed back in the heartbeat.  Ideas tossed around were MySQL version and/or guest agent version but the possibilities would be endless.  With this it was thought that we could possible create an in memory reporting database to gather information on instance w/o having to query all instances.   The idea of keeping it in memory is because non of the information is stored for historical value and if it was all lost it would be populated in one heartbeat cycle.  There was a question brought up on what happens when an instance shows up as no in the in memory data store, response was if it doesnt show up it must not be on-line.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
# Move all agent communication to work though the trove-conductor&lt;br /&gt;
# ????&lt;br /&gt;
# Profit&lt;br /&gt;
&lt;br /&gt;
Yea need to finish up this section :D&lt;/div&gt;</summary>
		<author><name>Edward Konetzko</name></author>	</entry>

	<entry>
		<id>https://wiki.openstack.org/w/index.php?title=Trove/guest_agent_communication&amp;diff=28208</id>
		<title>Trove/guest agent communication</title>
		<link rel="alternate" type="text/html" href="https://wiki.openstack.org/w/index.php?title=Trove/guest_agent_communication&amp;diff=28208"/>
				<updated>2013-08-15T19:30:26Z</updated>
		
		<summary type="html">&lt;p&gt;Edward Konetzko: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Guest agent communication ==&lt;br /&gt;
&lt;br /&gt;
There are the following issues with the guest agents communication method.&lt;br /&gt;
# Heartbeats are directly written to the infrastructure database&lt;br /&gt;
# Multiple heartbeats used when one will do.  There is no need to send a heartbeat saying the agent is up and one for the database state.  We know the agent is up if it is reporting the database status. &lt;br /&gt;
# Uses the same transport as the rest of the infrastructure and right now only rabbitmq.&lt;br /&gt;
# Multiple security implications with current design&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Phase 1 ===&lt;br /&gt;
==== Remove guest agent from writing heartbeats directly to infra database ====&lt;br /&gt;
&lt;br /&gt;
Remove heartbeats being written to the database directly via guest agent.  This would solve a huge security issue along with cutting down on connection load to the infra db.&lt;br /&gt;
&lt;br /&gt;
Kenneth Wilke proposed this blueprint https://blueprints.launchpad.net/trove/+spec/taskmanager-statusupdate&lt;br /&gt;
&lt;br /&gt;
It was decided in the weekly meeting to not extend task manager to handle this but write another manager called trove-conductor that would handle heartbeat updates to the infra database.  It was expressed in the meeting that it would be nice to store to data store besides the infra database, while those ideas were accepted it was noted as out of scope for first pass. &lt;br /&gt;
&lt;br /&gt;
http://eavesdrop.openstack.org/meetings/trove/2013/trove.2013-08-07-20.00.html&lt;br /&gt;
&lt;br /&gt;
http://eavesdrop.openstack.org/meetings/trove/2013/trove.2013-08-07-20.00.log.html&lt;br /&gt;
&lt;br /&gt;
One heartbeat should be sent every 60 seconds.  There is a possibility of the guest-agent being able to send an ad-hoc heartbeat if it were to detect a status change in any of the components it reporting on.   For example it could send a heartbeat saying mysql is active every 60 seconds but the guest agent could check MySQL locally every 10.  With this option if there was a state change in MySQL e.g. it crashed 20 seconds into the next heartbeat the status could be updated in an ad-hoc update immediately.   This should cut down on heartbeat chatter while still being flexible enough to reflect status changes immediately.&lt;br /&gt;
&lt;br /&gt;
==== Heartbeat message definition ====&lt;br /&gt;
&lt;br /&gt;
Regardless of transport used the heartbeat message should always be in json. Attribute &amp;quot;heartbeat&amp;quot; should be an array that way it is extensible in the future.&lt;br /&gt;
&lt;br /&gt;
    {&lt;br /&gt;
        &amp;quot;heartbeat&amp;quot;: [&lt;br /&gt;
            { &amp;quot;agentstatus&amp;quot;:&amp;quot;online&amp;quot; , &amp;quot;mysqlstatus&amp;quot;:&amp;quot;running&amp;quot; }&lt;br /&gt;
        ]&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
=== Future direction ===&lt;br /&gt;
&lt;br /&gt;
Ideas to finish writing about&lt;br /&gt;
# Write heartbeats to a different data store, api's servers would need updates to talk to trove-conductor for status information.&lt;br /&gt;
# Allow for expanded information to be passed back in the heartbeat.  Ideas tossed around were MySQL version and/or guest agent version but the possibilities would be endless.  With this it was thought that we could possible create an in memory reporting database to gather information on instance w/o having to query all instances.   The idea of keeping it in memory is because non of the information is stored for historical value and if it was all lost it would be populated in one heartbeat cycle.  There was a question brought up on what happens when an instance shows up as no in the in memory data store, response was if it doesnt show up it must not be on-line.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
# Move all agent communication to work though the trove-conductor&lt;br /&gt;
# ????&lt;br /&gt;
# Profit&lt;br /&gt;
&lt;br /&gt;
Yea need to finish up this section :D&lt;/div&gt;</summary>
		<author><name>Edward Konetzko</name></author>	</entry>

	<entry>
		<id>https://wiki.openstack.org/w/index.php?title=Trove/guest_agent_communication&amp;diff=28207</id>
		<title>Trove/guest agent communication</title>
		<link rel="alternate" type="text/html" href="https://wiki.openstack.org/w/index.php?title=Trove/guest_agent_communication&amp;diff=28207"/>
				<updated>2013-08-15T19:24:58Z</updated>
		
		<summary type="html">&lt;p&gt;Edward Konetzko: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Guest agent communication ==&lt;br /&gt;
&lt;br /&gt;
There are the following issues with the guest agents communication method.&lt;br /&gt;
# Heartbeats are directly written to the infrastructure database&lt;br /&gt;
# Multiple heartbeats used when one will do.  There is no need to send a heartbeat saying the agent is up and one for the database state.  We know the agent is up if it is reporting the database status. &lt;br /&gt;
# Uses the same transport as the rest of the infrastructure and right now only rabbitmq.&lt;br /&gt;
# Multiple security implications with current design&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Phase 1 ===&lt;br /&gt;
==== Remove guest agent from writing heartbeats directly to infra database ====&lt;br /&gt;
&lt;br /&gt;
Remove heartbeats being written to the database directly via guest agent.  This would solve a huge security issue along with cutting down on connection load to the infra db.&lt;br /&gt;
&lt;br /&gt;
Kenneth Wilke proposed this blueprint https://blueprints.launchpad.net/trove/+spec/taskmanager-statusupdate&lt;br /&gt;
&lt;br /&gt;
It was decided in the weekly meeting to not extend task manager to handle this but write another manager called trove-conductor that would handle heartbeat updates to the infra database.  It was expressed in the meeting that it would be nice to store to data store besides the infra database, while those ideas were accepted it was noted as out of scope for first pass. &lt;br /&gt;
&lt;br /&gt;
http://eavesdrop.openstack.org/meetings/trove/2013/trove.2013-08-07-20.00.html&lt;br /&gt;
&lt;br /&gt;
http://eavesdrop.openstack.org/meetings/trove/2013/trove.2013-08-07-20.00.log.html&lt;br /&gt;
&lt;br /&gt;
One heartbeat should be sent every 60 seconds.  There is a possibility of the guest-agent being able to send an ad-hoc heartbeat if it were to detect a status change in any of the components it reporting on.   For example it could send a heartbeat saying mysql is active every 60 seconds but the guest agent could check MySQL locally every 10.  With this option if there was a state change in MySQL e.g. it crashed 20 seconds into the next heartbeat the status could be updated in an ad-hoc update immediately.   This should cut down on heartbeat chatter while still being flexible enough to reflect status changes immediately.&lt;br /&gt;
&lt;br /&gt;
==== Heartbeat message definition ====&lt;br /&gt;
&lt;br /&gt;
Regardless of transport used the heartbeat message should always be in json. Attribute &amp;quot;heartbeat&amp;quot; should be an array that way it is extenedable in the future.&lt;br /&gt;
&lt;br /&gt;
    {&lt;br /&gt;
        &amp;quot;heartbeat&amp;quot;: [&lt;br /&gt;
            { &amp;quot;agentstatus&amp;quot;:&amp;quot;online&amp;quot; , &amp;quot;mysqlstatus&amp;quot;:&amp;quot;running&amp;quot; }&lt;br /&gt;
        ]&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
=== Future direction ===&lt;br /&gt;
&lt;br /&gt;
Ideas to finish wrting about&lt;br /&gt;
# Write heartbeats to a different datastore, apis servers would need updates to talk to trove-conductor for status information.&lt;br /&gt;
# Allow for expanded information to be passed back in the heatbeat.  Ideas tossed around were mysql version and/or guest agent version but the possiblitys would be endless.  With this it was thought that we could possible create an in memory reporting database to gather information on instance w/o having to query all instances.   The idea of keeping it in memory is because non of the information is stored for historical value and if it was all lost it would be populated in one heartbeat cycle.  There was a question brought up on what happens when an instance shows up as no in the in memory datastore, response was if it doesnt show up it must not be online.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
# Move all agent commuication to work though the trove-conductor&lt;br /&gt;
# ????&lt;br /&gt;
# Profit&lt;br /&gt;
&lt;br /&gt;
Yea need to finish up this section :D&lt;/div&gt;</summary>
		<author><name>Edward Konetzko</name></author>	</entry>

	<entry>
		<id>https://wiki.openstack.org/w/index.php?title=Trove/maintenance-windows-and-version-updates&amp;diff=27766</id>
		<title>Trove/maintenance-windows-and-version-updates</title>
		<link rel="alternate" type="text/html" href="https://wiki.openstack.org/w/index.php?title=Trove/maintenance-windows-and-version-updates&amp;diff=27766"/>
				<updated>2013-08-08T19:32:17Z</updated>
		
		<summary type="html">&lt;p&gt;Edward Konetzko: Edward Konetzko moved page Reddwarf-maintenance-windows-and-version-updates to Trove/maintenance-windows-and-version-updates: Project renamed, better location&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Maintenance Windows==&lt;br /&gt;
&lt;br /&gt;
=== Create Database Instance ===&lt;br /&gt;
&lt;br /&gt;
POST /instances Creates a new database instance.&lt;br /&gt;
&lt;br /&gt;
'''New Attributes'''&amp;lt;br /&amp;gt;&lt;br /&gt;
maintenanceWindow, optional&amp;lt;br /&amp;gt;&lt;br /&gt;
format: YYYY-MM-DDThh:mmZ/YYYY-MM-DDThh:mmZ&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Response Codes:''' same as current call&amp;lt;br /&amp;gt;&lt;br /&gt;
'''Error Codes:''' same as current call&amp;lt;br /&amp;gt;&lt;br /&gt;
'''Description:''' &amp;lt;br /&amp;gt;&lt;br /&gt;
'''Request Body:'''&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{&lt;br /&gt;
    &amp;quot;instance&amp;quot;: {&lt;br /&gt;
        &amp;quot;databases&amp;quot;: [&lt;br /&gt;
            {&lt;br /&gt;
                &amp;quot;character_set&amp;quot;: &amp;quot;utf8&amp;quot;, &lt;br /&gt;
                &amp;quot;collate&amp;quot;: &amp;quot;utf8_general_ci&amp;quot;, &lt;br /&gt;
                &amp;quot;name&amp;quot;: &amp;quot;sampledb&amp;quot;&lt;br /&gt;
            }, &lt;br /&gt;
            {&lt;br /&gt;
                &amp;quot;name&amp;quot;: &amp;quot;nextround&amp;quot;&lt;br /&gt;
            }&lt;br /&gt;
        ], &lt;br /&gt;
        &amp;quot;flavorRef&amp;quot;: &amp;quot;https://service/v1.0/1234/flavors/1&amp;quot;, &lt;br /&gt;
        &amp;quot;name&amp;quot;: &amp;quot;my_db_inst&amp;quot;, &lt;br /&gt;
        &amp;quot;volume&amp;quot;: {&lt;br /&gt;
            &amp;quot;size&amp;quot;: 2&lt;br /&gt;
        }&lt;br /&gt;
        &amp;quot;typeRef&amp;quot;: &amp;quot;https://service/v1.0/1234/type/1&amp;quot;,&lt;br /&gt;
        &amp;quot;maintenanceWindow&amp;quot;:&amp;quot;2012-03-28T21:30Z/2012-03-28T22:00Z&amp;quot;&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
== Modify Database Instance ==&lt;br /&gt;
&lt;br /&gt;
PUT /instances/{instanceId}&lt;br /&gt;
&lt;br /&gt;
New Attributes&lt;br /&gt;
maintenanceWindow, optional&lt;br /&gt;
format: YYYY-MM-DDThh:mmZ/YYYY-MM-DDThh:mmZ&lt;br /&gt;
default: will need defaults set if there is no window specified&lt;br /&gt;
&lt;br /&gt;
'''Response Codes:''' same as current call&amp;lt;br /&amp;gt;&lt;br /&gt;
'''Error Codes:''' same as current call&amp;lt;br /&amp;gt;&lt;br /&gt;
'''Description:''' &amp;lt;br /&amp;gt;&lt;br /&gt;
'''Request Body:'''&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{&lt;br /&gt;
    &amp;quot;instance&amp;quot;: {&lt;br /&gt;
        &amp;quot;maintenanceWindow&amp;quot;:&amp;quot;2012-03-28T21:30Z/2012-03-28T22:00Z&amp;quot;&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
=== List Database Instance Status and Details (Existing Call) ===&lt;br /&gt;
&lt;br /&gt;
GET /instances/{instanceId} Lists status and details for a specified database instance.&lt;br /&gt;
&lt;br /&gt;
'''Response Codes:''' same as original cal&amp;lt;br /&amp;gt;&lt;br /&gt;
'''Error Codes:''' same as original call&amp;lt;br /&amp;gt;&lt;br /&gt;
'''Description:''' &amp;lt;br /&amp;gt;&lt;br /&gt;
'''Request Body:''' This operation does not require a request body.&amp;lt;br /&amp;gt;&lt;br /&gt;
'''Response:'''&amp;lt;br /&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
{&lt;br /&gt;
    &amp;quot;instance&amp;quot;: {&lt;br /&gt;
        &amp;quot;created&amp;quot;: &amp;quot;2012-03-28T21:31:02Z&amp;quot;, &lt;br /&gt;
        &amp;quot;flavor&amp;quot;: {&lt;br /&gt;
            &amp;quot;id&amp;quot;: &amp;quot;1&amp;quot;, &lt;br /&gt;
            &amp;quot;links&amp;quot;: [&lt;br /&gt;
                ...&lt;br /&gt;
            ]&lt;br /&gt;
        }, &lt;br /&gt;
        &amp;quot;hostname&amp;quot;: &amp;quot;hostname&amp;quot;, &lt;br /&gt;
        &amp;quot;id&amp;quot;: &amp;quot;2450c73f-7805-4afe-a42c-4094ab42666b&amp;quot;, &lt;br /&gt;
        &amp;quot;links&amp;quot;: [&lt;br /&gt;
            ...&lt;br /&gt;
        ], &lt;br /&gt;
        &amp;quot;name&amp;quot;: &amp;quot;my_db_inst&amp;quot;,  &lt;br /&gt;
        &amp;quot;status&amp;quot;: &amp;quot;ACTIVE&amp;quot;, &lt;br /&gt;
        &amp;quot;updated&amp;quot;: &amp;quot;2012-03-28T21:34:25Z&amp;quot;, &lt;br /&gt;
        &amp;quot;volume&amp;quot;: {&lt;br /&gt;
            &amp;quot;size&amp;quot;: 2, &lt;br /&gt;
            &amp;quot;used&amp;quot;: 0.124542236328125&lt;br /&gt;
        }&lt;br /&gt;
        &amp;quot;maintenanceWindow&amp;quot;:&amp;quot;2012-03-28T21:30Z/2012-03-28T22:00Z&amp;quot;&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
== MySQL Updates ==&lt;br /&gt;
&lt;br /&gt;
As a Reddwarf User, I need to the ability to manage MySQL version updates, so that I can minize unimplanned downtime and plan accordingly for my production application environments.&lt;br /&gt;
&lt;br /&gt;
=== Update Instance ===&lt;br /&gt;
&lt;br /&gt;
POST/instances/{instanceId}/action Update the instance to the latest database version.&lt;br /&gt;
&lt;br /&gt;
'''Response Codes:''' same as original call&amp;lt;br /&amp;gt;&lt;br /&gt;
'''Error Codes:''' Call should validate if updates are needed and return an error/message if updates are not needed&amp;lt;br /&amp;gt;&lt;br /&gt;
'''Request Body:'''&amp;lt;br /&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
{&lt;br /&gt;
    &amp;quot;update&amp;quot;: {}&lt;br /&gt;
}&lt;/div&gt;</summary>
		<author><name>Edward Konetzko</name></author>	</entry>

	<entry>
		<id>https://wiki.openstack.org/w/index.php?title=Reddwarf-maintenance-windows-and-version-updates&amp;diff=27767</id>
		<title>Reddwarf-maintenance-windows-and-version-updates</title>
		<link rel="alternate" type="text/html" href="https://wiki.openstack.org/w/index.php?title=Reddwarf-maintenance-windows-and-version-updates&amp;diff=27767"/>
				<updated>2013-08-08T19:32:17Z</updated>
		
		<summary type="html">&lt;p&gt;Edward Konetzko: Edward Konetzko moved page Reddwarf-maintenance-windows-and-version-updates to Trove/maintenance-windows-and-version-updates: Project renamed, better location&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;#REDIRECT [[Trove/maintenance-windows-and-version-updates]]&lt;/div&gt;</summary>
		<author><name>Edward Konetzko</name></author>	</entry>

	<entry>
		<id>https://wiki.openstack.org/w/index.php?title=Trove/guest_agent_communication&amp;diff=27761</id>
		<title>Trove/guest agent communication</title>
		<link rel="alternate" type="text/html" href="https://wiki.openstack.org/w/index.php?title=Trove/guest_agent_communication&amp;diff=27761"/>
				<updated>2013-08-08T19:00:48Z</updated>
		
		<summary type="html">&lt;p&gt;Edward Konetzko: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Guest agent communication ==&lt;br /&gt;
&lt;br /&gt;
There are the following issues with the guest agents communication method.&lt;br /&gt;
# Heatbeats are directly written to the infrastructure database&lt;br /&gt;
# Mutiple heatbeats used when one will do.  There is no need to send a heartbeat saying the agent is up and one for the database state.  We know the agent is up if it is reporting the database status. &lt;br /&gt;
# Uses the same transport as the rest of the infrstrucuture and right now only rabbitmq.&lt;br /&gt;
# Multiple security implications with current design&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Phase 1 ===&lt;br /&gt;
==== Remove guest agent from writing heartbeats directly to infra database ====&lt;br /&gt;
&lt;br /&gt;
Remove heartbeats being written to the database directly via guest agent.  This would solve a huge security issue along with cutting down on connection load to the infra db.&lt;br /&gt;
&lt;br /&gt;
Kenneth Wilke proposed this blueprint https://blueprints.launchpad.net/trove/+spec/taskmanager-statusupdate&lt;br /&gt;
&lt;br /&gt;
It was decided in the weekly meeting to not extend taskmanager to handle this but write another manager called trove-conductor that would handle heartbeat updates to the infra database.  It was expressed in the meeting that it would be nice to store to datastore besides the infra database, while those ideas were accepted it was noted as out of scope for first pass. &lt;br /&gt;
&lt;br /&gt;
http://eavesdrop.openstack.org/meetings/trove/2013/trove.2013-08-07-20.00.html&lt;br /&gt;
&lt;br /&gt;
http://eavesdrop.openstack.org/meetings/trove/2013/trove.2013-08-07-20.00.log.html&lt;br /&gt;
&lt;br /&gt;
==== Heartbeat message definition ====&lt;br /&gt;
&lt;br /&gt;
Regardless of transport used the heartbeat message should always be in json. Attribute &amp;quot;heartbeat&amp;quot; should be an array that way it is extenedable in the future.&lt;br /&gt;
&lt;br /&gt;
    {&lt;br /&gt;
        &amp;quot;heartbeat&amp;quot;: [&lt;br /&gt;
            { &amp;quot;agentstatus&amp;quot;:&amp;quot;online&amp;quot; , &amp;quot;mysqlstatus&amp;quot;:&amp;quot;running&amp;quot; }&lt;br /&gt;
        ]&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
=== Future direction ===&lt;br /&gt;
&lt;br /&gt;
Ideas to finish wrting about&lt;br /&gt;
# Write heartbeats to a different datastore, apis servers would need updates to talk to trove-conductor for status information.&lt;br /&gt;
# Allow for expanded information to be passed back in the heatbeat.  Ideas tossed around were mysql version and/or guest agent version but the possiblitys would be endless.  With this it was thought that we could possible create an in memory reporting database to gather information on instance w/o having to query all instances.   The idea of keeping it in memory is because non of the information is stored for historical value and if it was all lost it would be populated in one heartbeat cycle.  There was a question brought up on what happens when an instance shows up as no in the in memory datastore, response was if it doesnt show up it must not be online.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
# Move all agent commuication to work though the trove-conductor&lt;br /&gt;
# ????&lt;br /&gt;
# Profit&lt;br /&gt;
&lt;br /&gt;
Yea need to finish up this section :D&lt;/div&gt;</summary>
		<author><name>Edward Konetzko</name></author>	</entry>

	<entry>
		<id>https://wiki.openstack.org/w/index.php?title=Trove/guest_agent_communication&amp;diff=27760</id>
		<title>Trove/guest agent communication</title>
		<link rel="alternate" type="text/html" href="https://wiki.openstack.org/w/index.php?title=Trove/guest_agent_communication&amp;diff=27760"/>
				<updated>2013-08-08T18:50:34Z</updated>
		
		<summary type="html">&lt;p&gt;Edward Konetzko: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Guest agent communication ==&lt;br /&gt;
&lt;br /&gt;
There are the following issues with the guest agents communication method.&lt;br /&gt;
# Heatbeats are directly written to the infrastructure database&lt;br /&gt;
# Mutiple heatbeats used when one will do.  There is no need to send a heartbeat saying the agent is up and one for the database state.  We know the agent is up if it is reporting the database status. &lt;br /&gt;
# Uses the same transport as the rest of the infrstrucuture and right now only rabbitmq.&lt;br /&gt;
# Multiple security implications with current design&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Phase 1 ===&lt;br /&gt;
==== Remove guest agent from writing heartbeats directly to infra database ====&lt;br /&gt;
&lt;br /&gt;
Remove heartbeats being written to the database directly via guest agent.  This would solve a huge security issue along with cutting down on connection load to the infra db.&lt;br /&gt;
&lt;br /&gt;
Kenneth Wilke proposed this blueprint https://blueprints.launchpad.net/trove/+spec/taskmanager-statusupdate&lt;br /&gt;
&lt;br /&gt;
It was decided in the weekly meeting to not extend taskmanager to handle this but write another manager called trove-conductor that would handle heartbeat updates to the infra database.  It was expressed in the meeting that it would be nice to store to datastore besides the infra database, while those ideas were accepted it was noted as out of scope for first pass. &lt;br /&gt;
&lt;br /&gt;
http://eavesdrop.openstack.org/meetings/trove/2013/trove.2013-08-07-20.00.html&lt;br /&gt;
&lt;br /&gt;
http://eavesdrop.openstack.org/meetings/trove/2013/trove.2013-08-07-20.00.log.html&lt;br /&gt;
&lt;br /&gt;
==== Heartbeat message definition ====&lt;br /&gt;
&lt;br /&gt;
Regardless of transport used the heartbeat message should always be in json. Attribute &amp;quot;heartbeat&amp;quot; should be an array that way it is extenedable in the future.&lt;br /&gt;
&lt;br /&gt;
    {&lt;br /&gt;
        &amp;quot;heartbeat&amp;quot;: [&lt;br /&gt;
            { &amp;quot;agentstatus&amp;quot;:&amp;quot;online&amp;quot; , &amp;quot;mysqlstatus&amp;quot;:&amp;quot;running&amp;quot; }&lt;br /&gt;
        ]&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
=== Future direction ===&lt;br /&gt;
&lt;br /&gt;
# Move all agent commuication to work though the trove-conductor&lt;br /&gt;
# ????&lt;br /&gt;
# Profit&lt;br /&gt;
&lt;br /&gt;
Yea need to finish up this section :D&lt;/div&gt;</summary>
		<author><name>Edward Konetzko</name></author>	</entry>

	<entry>
		<id>https://wiki.openstack.org/w/index.php?title=Trove/guest_agent_communication&amp;diff=27759</id>
		<title>Trove/guest agent communication</title>
		<link rel="alternate" type="text/html" href="https://wiki.openstack.org/w/index.php?title=Trove/guest_agent_communication&amp;diff=27759"/>
				<updated>2013-08-08T18:49:35Z</updated>
		
		<summary type="html">&lt;p&gt;Edward Konetzko: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Guest agent communication ==&lt;br /&gt;
&lt;br /&gt;
There are the following issues with the guest agents communication method.&lt;br /&gt;
# Heatbeats are directly written to the infrastructure database&lt;br /&gt;
# Mutiple heatbeats used when one will do.  There is no need to send a heartbeat saying the agent is up and one for the database state.  We know the agent is up if it is reporting the database status. &lt;br /&gt;
# Uses the same transport as the rest of the infrstrucuture and right now only rabbitmq.&lt;br /&gt;
# Multiple security implications with current design&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Phase 1 ===&lt;br /&gt;
==== Remove guest agent from writing heartbeats directly to infra database ====&lt;br /&gt;
&lt;br /&gt;
Remove heartbeats being written to the database directly via guest agent.  This would solve a huge security issue along with cutting down on connection load to the infra db.&lt;br /&gt;
&lt;br /&gt;
Kenneth Wilke proposed this blueprint https://blueprints.launchpad.net/trove/+spec/taskmanager-statusupdate&lt;br /&gt;
&lt;br /&gt;
It was decided in the weekly meeting to not extend taskmanager to handle this but write another manager called trove-conductor that would handle heartbeat updates to the infra database.  It was expressed in the meeting that it would be nice to store to datastore besides the infra database, while those ideas were accepted it was noted as out of scope for first pass. &lt;br /&gt;
&lt;br /&gt;
http://eavesdrop.openstack.org/meetings/trove/2013/trove.2013-08-07-20.00.html&lt;br /&gt;
&lt;br /&gt;
http://eavesdrop.openstack.org/meetings/trove/2013/trove.2013-08-07-20.00.log.html&lt;br /&gt;
&lt;br /&gt;
Regardless of transport used the heartbeat message should always be in json. Attribute &amp;quot;heartbeat&amp;quot; should be an array that way it is extenedable in the future.&lt;br /&gt;
&lt;br /&gt;
    {&lt;br /&gt;
        &amp;quot;heartbeat&amp;quot;: [&lt;br /&gt;
            { &amp;quot;agentstatus&amp;quot;:&amp;quot;online&amp;quot; , &amp;quot;mysqlstatus&amp;quot;:&amp;quot;running&amp;quot; }&lt;br /&gt;
        ]&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
=== Future direction ===&lt;br /&gt;
&lt;br /&gt;
# Move all agent commuication to work though the trove-conductor&lt;br /&gt;
# ????&lt;br /&gt;
# Profit&lt;br /&gt;
&lt;br /&gt;
Yea need to finish up this section :D&lt;/div&gt;</summary>
		<author><name>Edward Konetzko</name></author>	</entry>

	<entry>
		<id>https://wiki.openstack.org/w/index.php?title=Trove/guest_agent_communication&amp;diff=27751</id>
		<title>Trove/guest agent communication</title>
		<link rel="alternate" type="text/html" href="https://wiki.openstack.org/w/index.php?title=Trove/guest_agent_communication&amp;diff=27751"/>
				<updated>2013-08-08T17:41:05Z</updated>
		
		<summary type="html">&lt;p&gt;Edward Konetzko: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Guest agent communication ==&lt;br /&gt;
&lt;br /&gt;
There are the following issues with the guest agents communication method.&lt;br /&gt;
# Heatbeats are directly written to the infrastructure database&lt;br /&gt;
# Mutiple heatbeats used when one will do.  There is no need to send a heartbeat saying the agent is up and one for the database state.  We know the agent is up if it is reporting the database status. &lt;br /&gt;
# Uses the same transport as the rest of the infrstrucuture &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Phase 1 ===&lt;br /&gt;
==== Remove guest agent from writing heartbeats directly to infra database ====&lt;br /&gt;
&lt;br /&gt;
Remove heartbeats being written to the database directly via guest agent.  This would solve a huge security issue along with cutting down on connection load to the infra db.&lt;br /&gt;
&lt;br /&gt;
Kenneth Wilke proposed this blueprint https://blueprints.launchpad.net/trove/+spec/taskmanager-statusupdate&lt;br /&gt;
&lt;br /&gt;
It was decided in the weekly meeting to not extend taskmanager to handle this but write another manager called trove-conductor that would handle heartbeat updates to the infra database.&lt;br /&gt;
http://eavesdrop.openstack.org/meetings/trove/2013/trove.2013-08-07-20.00.html&lt;br /&gt;
&lt;br /&gt;
http://eavesdrop.openstack.org/meetings/trove/2013/trove.2013-08-07-20.00.log.html&lt;br /&gt;
&lt;br /&gt;
Regardless of transport used the message should always be in json&lt;br /&gt;
&lt;br /&gt;
    {&lt;br /&gt;
        &amp;quot;heartbeat&amp;quot;: [&lt;br /&gt;
            { &amp;quot;agentstatus&amp;quot;:&amp;quot;online&amp;quot; , &amp;quot;mysqlstatus&amp;quot;:&amp;quot;running&amp;quot; }&lt;br /&gt;
        ]&lt;br /&gt;
    }&lt;/div&gt;</summary>
		<author><name>Edward Konetzko</name></author>	</entry>

	<entry>
		<id>https://wiki.openstack.org/w/index.php?title=Trove/guest_agent_communication&amp;diff=27745</id>
		<title>Trove/guest agent communication</title>
		<link rel="alternate" type="text/html" href="https://wiki.openstack.org/w/index.php?title=Trove/guest_agent_communication&amp;diff=27745"/>
				<updated>2013-08-08T17:05:26Z</updated>
		
		<summary type="html">&lt;p&gt;Edward Konetzko: Created page with &amp;quot;== Guest agent communication ==  There are the following issues with the guest agents communication method. # Heatbeats are directly written to the infrastructure database # M...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Guest agent communication ==&lt;br /&gt;
&lt;br /&gt;
There are the following issues with the guest agents communication method.&lt;br /&gt;
# Heatbeats are directly written to the infrastructure database&lt;br /&gt;
# Mutiple heatbeats used when one will do.  There is no need to send a heartbeat saying the agent is up and one for the database state.  We know the agent is up if it is reporting the database status. &lt;br /&gt;
# Uses the same transport as &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Phase 1 ===&lt;br /&gt;
==== Remove guest agent from writing heartbeats directly to infra database ====&lt;br /&gt;
&lt;br /&gt;
Remove heartbeats being written to the database directly via guest agent.&lt;br /&gt;
&lt;br /&gt;
Kenneth Wilke proposed this blueprint https://blueprints.launchpad.net/trove/+spec/taskmanager-statusupdate&lt;br /&gt;
&lt;br /&gt;
It was decided in the weekly meeting to not extend taskmanager to handle this but write another manager called trove-conductor that would handle heartbeat updates to the infra database.&lt;/div&gt;</summary>
		<author><name>Edward Konetzko</name></author>	</entry>

	</feed>