<div dir="ltr"><br><div class="gmail_extra"><br><div class="gmail_quote">On Mon, Sep 19, 2016 at 10:13 AM, Niels de Vos <span dir="ltr">&lt;<a href="mailto:ndevos@redhat.com" target="_blank">ndevos@redhat.com</a>&gt;</span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><span class="">On Tue, Sep 13, 2016 at 12:06:00PM -0400, Luis Pabón wrote:<br>
&gt; Very good points.  Thanks Prasanna for putting this together.  I agree with<br>
&gt; your comments in that Heketi is the high level abstraction API and it should have<br>
&gt; an API similar of what is described by Prasanna.<br>
&gt;<br>
&gt; I definitely do not think any File Api should be available in Heketi,<br>
&gt; because that is an implementation of the Block API.  The Heketi API should<br>
&gt; be similar to something like OpenStack Cinder.<br>
&gt;<br>
&gt; I think that the actual management of the Volumes used for Block storage<br>
&gt; and the files in them should be all managed by Heketi.  How they are<br>
&gt; actually created is still to be determined, but we could have Heketi<br>
&gt; create them, or have helper programs do that.<br>
<br>
</span>Maybe a tool like qemu-img? If whatever iscsi service understand the<br>
format (at the very least &#39;raw&#39;), you could get functionality like<br>
snapshots pretty simple.<br></blockquote><div><br></div><div>Prasanna, Poornima and I just discussed about this. Prasanna is doing this experiment to see if we can use qcow from tcmu-runner to get this piece working. If yes, we definitely will get snapshots for free :-). Prasanna will confirm it based on his experiments.<br></div><div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<span class="HOEnZb"><font color="#888888"><br>
Niels<br>
</font></span><div class="HOEnZb"><div class="h5"><br>
<br>
&gt; We also need to document the exact workflow to enable a file in<br>
&gt; a Gluster volume to be exposed as a block device.  This will help<br>
&gt; determine where the creation of the file could take place.<br>
&gt;<br>
&gt; We can capture our decisions from these discussions in the<br>
&gt; following page:<br>
&gt;<br>
&gt; <a href="https://github.com/heketi/heketi/wiki/Proposed-Changes" rel="noreferrer" target="_blank">https://github.com/heketi/<wbr>heketi/wiki/Proposed-Changes</a><br>
&gt;<br>
&gt; - Luis<br>
&gt;<br>
&gt;<br>
&gt; ----- Original Message -----<br>
&gt; From: &quot;Humble Chirammal&quot; &lt;<a href="mailto:hchiramm@redhat.com">hchiramm@redhat.com</a>&gt;<br>
&gt; To: &quot;Raghavendra Talur&quot; &lt;<a href="mailto:rtalur@redhat.com">rtalur@redhat.com</a>&gt;<br>
&gt; Cc: &quot;Prasanna Kalever&quot; &lt;<a href="mailto:pkalever@redhat.com">pkalever@redhat.com</a>&gt;, &quot;gluster-devel&quot; &lt;<a href="mailto:gluster-devel@gluster.org">gluster-devel@gluster.org</a>&gt;, &quot;Stephen Watt&quot; &lt;<a href="mailto:swatt@redhat.com">swatt@redhat.com</a>&gt;, &quot;Luis Pabon&quot; &lt;<a href="mailto:lpabon@redhat.com">lpabon@redhat.com</a>&gt;, &quot;Michael Adam&quot; &lt;<a href="mailto:madam@redhat.com">madam@redhat.com</a>&gt;, &quot;Ramakrishna Yekulla&quot; &lt;<a href="mailto:rreddy@redhat.com">rreddy@redhat.com</a>&gt;, &quot;Mohamed Ashiq Liyazudeen&quot; &lt;<a href="mailto:mliyazud@redhat.com">mliyazud@redhat.com</a>&gt;<br>
&gt; Sent: Tuesday, September 13, 2016 2:23:39 AM<br>
&gt; Subject: Re: [Gluster-devel] [Heketi] Block store related API design discussion<br>
&gt;<br>
&gt;<br>
&gt;<br>
&gt;<br>
&gt;<br>
&gt; ----- Original Message -----<br>
&gt; | From: &quot;Raghavendra Talur&quot; &lt;<a href="mailto:rtalur@redhat.com">rtalur@redhat.com</a>&gt;<br>
&gt; | To: &quot;Prasanna Kalever&quot; &lt;<a href="mailto:pkalever@redhat.com">pkalever@redhat.com</a>&gt;<br>
&gt; | Cc: &quot;gluster-devel&quot; &lt;<a href="mailto:gluster-devel@gluster.org">gluster-devel@gluster.org</a>&gt;, &quot;Stephen Watt&quot; &lt;<a href="mailto:swatt@redhat.com">swatt@redhat.com</a>&gt;, &quot;Luis Pabon&quot; &lt;<a href="mailto:lpabon@redhat.com">lpabon@redhat.com</a>&gt;,<br>
&gt; | &quot;Michael Adam&quot; &lt;<a href="mailto:madam@redhat.com">madam@redhat.com</a>&gt;, &quot;Humble Chirammal&quot; &lt;<a href="mailto:hchiramm@redhat.com">hchiramm@redhat.com</a>&gt;, &quot;Ramakrishna Yekulla&quot;<br>
&gt; | &lt;<a href="mailto:rreddy@redhat.com">rreddy@redhat.com</a>&gt;, &quot;Mohamed Ashiq Liyazudeen&quot; &lt;<a href="mailto:mliyazud@redhat.com">mliyazud@redhat.com</a>&gt;<br>
&gt; | Sent: Tuesday, September 13, 2016 11:08:44 AM<br>
&gt; | Subject: Re: [Gluster-devel] [Heketi] Block store related API design discussion<br>
&gt; |<br>
&gt; | On Mon, Sep 12, 2016 at 11:30 PM, Prasanna Kalever &lt;<a href="mailto:pkalever@redhat.com">pkalever@redhat.com</a>&gt;<br>
&gt; | wrote:<br>
&gt; |<br>
&gt; | &gt; Hi all,<br>
&gt; | &gt;<br>
&gt; | &gt; This mail is open for discussion on gluster block store integration with<br>
&gt; | &gt; heketi and its REST API interface design constraints.<br>
&gt; | &gt;<br>
&gt; | &gt;<br>
&gt; | &gt;                          ___ Volume Request ...<br>
&gt; | &gt;                         |<br>
&gt; | &gt;                         |<br>
&gt; | &gt; PVC claim -&gt; Heketi ---&gt;|<br>
&gt; | &gt;                         |<br>
&gt; | &gt;                         |<br>
&gt; | &gt;                         |<br>
&gt; | &gt;                         |<br>
&gt; | &gt;                         |                            __ BlockCreate<br>
&gt; | &gt;                         |                           |<br>
&gt; | &gt;                         |                           |__ BlockInfo<br>
&gt; | &gt;                         |                           |<br>
&gt; | &gt;                         |___ Block Request (APIS)-&gt; |__ BlockResize<br>
&gt; | &gt;                                                     |<br>
&gt; | &gt;                                                     |__ BlockList<br>
&gt; | &gt;                                                     |<br>
&gt; | &gt;                                                     |__ BlockDelete<br>
&gt; | &gt;<br>
&gt; | &gt; Heketi will have block API and volume API, when user submit a Persistent<br>
&gt; | &gt; volume claim, Kubernetes provisioner based on the storage class(from PVC)<br>
&gt; | &gt; talks to heketi for storage, heketi intern calls block or volume API&#39;s<br>
&gt; | &gt; based on request.<br>
&gt; | &gt;<br>
&gt; |<br>
&gt; | This is probably wrong. It won&#39;t be Heketi calling block or volume APIs. It<br>
&gt; | would be Kubernetes calling block or volume API *of* Heketi.<br>
&gt; |<br>
&gt; |<br>
&gt; | &gt; With my limited understanding, heketi currently creates clusters from<br>
&gt; | &gt; provided nodes, creates volumes and handover them to the user.<br>
&gt; | &gt; For block related API&#39;s, it has to deal with files right ?<br>
&gt; | &gt;<br>
&gt; | &gt; Here is how block API&#39;s look like in short-<br>
&gt; | &gt; Create: heketi has to create file in the volume and export it as a iscsi<br>
&gt; | &gt; target device and hand it over to user.<br>
&gt; | &gt; Info: show block stores information across all the clusters, connection<br>
&gt; | &gt; info, size etc.<br>
&gt; | &gt; resize: resize the file in the volume, refresh connections from initiator<br>
&gt; | &gt; side<br>
&gt; | &gt; List: List the connections<br>
&gt; | &gt; Delete: logout the connections and delete the file in the gluster volume<br>
&gt; | &gt;<br>
&gt; | &gt; Couple of questions:<br>
&gt; | &gt; 1. Should Block API have sub API&#39;s such as FileCreate, FileList,<br>
&gt; | &gt; FileResize, File delete and etc then get it used in Block API as they<br>
&gt; | &gt; mostly deal with files.<br>
&gt; | &gt;<br>
&gt; |<br>
&gt; | IMO, Heketi should not expose any File related API. It should only have<br>
&gt; | APIs to service request for block devices; how the block devices are<br>
&gt; | created and modified is an implementation detail.<br>
&gt; |<br>
&gt; |<br>
&gt; | &gt; 2. How do we create the actual file in the volume, meaning using FUSE<br>
&gt; | &gt; mount (which may involve an extra process running) or gfapi, again if gfapi<br>
&gt; | &gt; should we go with c API&#39;s, python bindings or go bindings ?<br>
&gt; | &gt;<br>
&gt; | 3. Should we get targetcli related (LUN exporting) setup done from heketi<br>
&gt; | &gt; or do we seek help from gdeploy for this ?<br>
&gt; | &gt;<br>
&gt; |<br>
&gt; | I would prefer to either have it in Heketi or in Kubernetes. If the API in<br>
&gt; | Heketi promises just the creation of block device, then the rest of the<br>
&gt; | implementation should be in Kubernetes(the export part). If the API in<br>
&gt; | Heketi promises create and export both, I would say Heketi should have the<br>
&gt; | implementation within itself.<br>
&gt; |<br>
&gt; |<br>
&gt;<br>
&gt; IMO, we should not think about how the clients ( ex: k8s) use it, because there may be different clients.<br>
&gt; We should concentrate mainly on &#39;in/out&#39; of block API in Heketi. Regardless of which client, the API should act the same way.<br>
&gt;<br>
&gt; --Humble<br>
&gt; ______________________________<wbr>_________________<br>
&gt; Gluster-devel mailing list<br>
&gt; <a href="mailto:Gluster-devel@gluster.org">Gluster-devel@gluster.org</a><br>
&gt; <a href="http://www.gluster.org/mailman/listinfo/gluster-devel" rel="noreferrer" target="_blank">http://www.gluster.org/<wbr>mailman/listinfo/gluster-devel</a><br>
</div></div><br>______________________________<wbr>_________________<br>
Gluster-devel mailing list<br>
<a href="mailto:Gluster-devel@gluster.org">Gluster-devel@gluster.org</a><br>
<a href="http://www.gluster.org/mailman/listinfo/gluster-devel" rel="noreferrer" target="_blank">http://www.gluster.org/<wbr>mailman/listinfo/gluster-devel</a><br></blockquote></div><br><br clear="all"><br>-- <br><div class="gmail_signature" data-smartmail="gmail_signature"><div dir="ltr">Pranith<br></div></div>
</div></div>