<div dir="ltr">Hi Luis,<br><br><div class="gmail_extra"><br><div class="gmail_quote">On Sat, Dec 12, 2015 at 3:35 AM, Luis Pabón <span dir="ltr"><<a href="mailto:lpabon@redhat.com" target="_blank">lpabon@redhat.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<div text="#000000" bgcolor="#FFFFFF">
My proposal is for gdeploy to communicate with Heketi, glusterd, and
the system itself to service requests from the administrator.
Communicate with Heketi for all volume allocation/deallocation, with
glusterd for any modifications on the volume, and with the node
operating system (if really necessary) for any required setup.<br>
<br>
The following is just a brainstorm, not a spec file by any means.
Just an idea of what the workflow could be like. <br>
<br>
Here is a possible workflow:<br>
<br>
# Admin: Create SSH keys<br>
</div></blockquote><div><br></div><div>The above would be the only step needed, in my opinion.<br></div><div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div text="#000000" bgcolor="#FFFFFF"># Admin: Setup Heketi service<br>
- Heketi configured with private SSH key.<br></div></blockquote><div><br><br></div><div>This I guess, can be taken care of by gdeploy.<br></div><div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div text="#000000" bgcolor="#FFFFFF">
# Admin: Raw nodes are setup only with the gluster service and the
public ssh key.<br>
# Admin: Create topology.json with clusters, nodes, zones, and
devices.<br>
Admin needs to create a topology.json file. See example in <br>
<a href="https://github.com/heketi/vagrant-heketi/blob/master/roles/heketi/files/topology_libvirt.json" target="_blank">https://github.com/heketi/vagrant-heketi/blob/master/roles/heketi/files/topology_libvirt.json</a></div></blockquote><div><br></div><div>Writing the topoloy can itself be tricky and time consuming as the size of the nodes and other parameters<br></div><div>increase. Maybe we can read the gdeploy configuration file, and write the json if necessary for Heketi.<br></div><div><br> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div text="#000000" bgcolor="#FFFFFF"><br>
* gdeploy topology load -json=topology.json<br>
- Assume that the configuration of the location of the Heketi
server is known, either by an environment<br>
variable, configuration file, or switch.<br>
- At this point Heketi has been loaded with the configuration of
the data center.<br>
# Display topology<br>
* gdeploy topology show<br>
<tt>Cluster [2345235]</tt><tt><br>
</tt><tt> |- Node [<a href="http://my.node.com" target="_blank">my.node.com</a>]</tt><tt><br>
</tt><tt> |- Device [/dev/sdb]</tt><tt><br>
</tt><tt> |- Device [/dev/sdc]</tt><tt><br>
</tt><tt>Cluster [F54DD]</tt><tt><br>
</tt><tt> |- Node...</tt><tt><br>
</tt><tt>...</tt><br>
<br></div></blockquote><div><br></div><div>This looks cool. We should be doing this.<br></div><div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div text="#000000" bgcolor="#FFFFFF">
# Display node information<br>
* gdeploy node info [hostname or uuid]<br>
<br>
# Create a volume <br>
* gdeploy volume create -size=100<br>
<br>
# Create volumes from a configuration file<br>
* gdeploy volume create -c volumes.conf<br>
<br>
$ cat volumes.conf<tt><br>
</tt><tt>[volume]</tt><tt><br>
</tt><tt>action=create</tt><tt><br>
</tt><tt>volname=Gdeploy_test <-- optional</tt><tt><br>
</tt><tt>transport=tcp,rdma <-- would need to be added to Heketi</tt><tt><br>
</tt><tt>replica=yes</tt><tt><br>
</tt><tt>replica_count=2</tt><tt><br>
</tt><tt><br>
</tt><tt>[clients]</tt><tt><br>
</tt><tt>action=mount</tt><tt><br>
</tt><tt>#volname=glustervol (If not specified earlier in 'volume'
section</tt><tt><br>
</tt><tt>hosts=<a href="http://node2.redhat.com" target="_blank">node2.redhat.com</a></tt><tt><br>
</tt><tt>fstype=glusterfs</tt><tt><br>
</tt><tt>client_mount_points=/mnt/gluster</tt><br>
<br>
<br>
# Set volume options, snapshots, etc.<br>
These would first talk to Heketi to determine which servers are
servicing this volume.<br>
gdeploy can then communicate with glusterd to execute the volume
modifications.<br>
* gdeploy volume options <vol name and cluster | UUID>
<options=val><br>
* gdeploy volume options <vol name and cluster | UUID>-c
options.conf<br>
<br>
# Destroy a volume<br>
Here gdeploy would first check for snapshots. If there are none,
then it would<br>
request the work from Heketi.<br>
<br>
<br>
These are just some possible methods of how they could interact.<span class="HOEnZb"><font color="#888888"><br></font></span></div></blockquote><div><br><br></div><div>These things we can work on to achieve. We may need major overhaul to gdeploy to get all these in place.<br></div><div>Will work towards this and get back to you.<br></div><div><br></div><div>-sac<br></div><div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div text="#000000" bgcolor="#FFFFFF"><span class="HOEnZb"><font color="#888888">
<br>
- Luis</font></span><div><div class="h5"><br>
<br>
<div>On 12/11/2015 02:16 AM, Sachidananda
URS wrote:<br>
</div>
<blockquote type="cite">
<div dir="ltr"><br>
<div class="gmail_extra"><br>
<div class="gmail_quote">On Fri, Dec 11, 2015 at 12:31 PM,
Luis Pabon <span dir="ltr"><<a href="mailto:lpabon@redhat.com" target="_blank">lpabon@redhat.com</a>></span>
wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">I think
at its simplest would be to specify workflow examples and
how gdploy+Heketi would satisfy them. I will be sending
out some possible workflows tomorrow.<br>
</blockquote>
<div><br>
</div>
<div>Awesome, I will see if we can add something to it.<br>
<br>
</div>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<br>
Also, there is a python Heketi client in the works right
now which would benefit gdeploy: <a href="https://github.com/heketi/heketi/pull/251" rel="noreferrer" target="_blank"></a><a href="https://github.com/heketi/heketi/pull/251" target="_blank">https://github.com/heketi/heketi/pull/251</a>
.<br>
<span><font color="#888888"><br>
</font></span></blockquote>
<div><br>
</div>
<div>Cool, will check this out.<br>
<br>
</div>
<div>-sac<br>
</div>
<div> </div>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><span><font color="#888888">
- Luis<br>
</font></span>
<div>
<div><br>
----- Original Message -----<br>
From: "Sachidananda URS" <<a href="mailto:surs@redhat.com" target="_blank">surs@redhat.com</a>><br>
To: "Luis Pabon" <<a href="mailto:lpabon@redhat.com" target="_blank">lpabon@redhat.com</a>><br>
Cc: "Gluster Devel" <<a href="mailto:gluster-devel@gluster.org" target="_blank">gluster-devel@gluster.org</a>><br>
Sent: Friday, December 11, 2015 1:54:18 AM<br>
Subject: Re: gdploy + Heketi<br>
<br>
Hi Luis,<br>
<br>
On Fri, Dec 11, 2015 at 12:01 PM, Luis Pabon <<a href="mailto:lpabon@redhat.com" target="_blank"></a><a href="mailto:lpabon@redhat.com" target="_blank">lpabon@redhat.com</a>>
wrote:<br>
<br>
> Hi Sachidananda,<br>
> I think there is a great opportunity to enhance
GlusterFS management by<br>
> using gdeploy as a service which uses Heketi for
volume management.<br>
> Currently, gdeploy sets up nodes, file systems,
bricks, and volumes. It<br>
> does all this with input from the administrator,
but it does not support<br>
> automated brick allocation management, failure
domains, or multiple<br>
> clusters. On the other hand, it does have
support for mounting volumes in<br>
> clients, and setting up multiple options on a
specified volume.<br>
><br>
> I would like to add support for Heketi in the
gdeploy workflow. This<br>
> would enable administrators to manage clusters,
nodes, disks, and volumes<br>
> with gdeploy based on Heketi.<br>
><br>
> What do you guys think?<br>
><br>
<br>
<br>
That would be great. Please let us know if you already
have a plan on how<br>
to make these two work.<br>
<br>
-sac<br>
</div>
</div>
</blockquote>
</div>
<br>
</div>
</div>
</blockquote>
<br>
</div></div></div>
</blockquote></div><br></div></div>