<div dir="ltr"><div class="gmail_default" style="font-family:courier new,monospace"><br></div><div class="gmail_extra"><br><br><div class="gmail_quote">On Tue, Aug 6, 2013 at 7:25 PM, Russell Bryant <span dir="ltr"><<a href="mailto:rbryant@redhat.com" target="_blank">rbryant@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 class="im">On 08/06/2013 06:55 PM, John Griffith wrote:<br>
><br>
><br>
><br>
> On Tue, Aug 6, 2013 at 4:05 PM, Russell Bryant <<a href="mailto:rbryant@redhat.com">rbryant@redhat.com</a><br>
</div><div><div class="h5">> <mailto:<a href="mailto:rbryant@redhat.com">rbryant@redhat.com</a>>> wrote:<br>
><br>
>     Greetings,<br>
><br>
>     The following blueprint is targeted at Havana.  I was reading over the<br>
>     design notes today.  I wanted to check on the status of this as well as<br>
>     discuss some of the design details.<br>
><br>
>         <a href="https://wiki.openstack.org/wiki/Cinder/GuestAssistedSnapshotting" target="_blank">https://wiki.openstack.org/wiki/Cinder/GuestAssistedSnapshotting</a><br>
>         <a href="https://blueprints.launchpad.net/nova/+spec/qemu-assisted-snapshots" target="_blank">https://blueprints.launchpad.net/nova/+spec/qemu-assisted-snapshots</a><br>
><br>
>     As a quick overview, the purpose of this is to provide the ability to do<br>
>     volume snapshots for certain volume types that do not support it<br>
>     internally, such as the GlusterFS or NFS drivers.<br>
><br>
>     Some comments/questions ...<br>
><br>
>     On the Nova side, the wiki page lists adding an API to snapshot all<br>
>     attached volumes at once.  This seems fine, but I would personally put<br>
>     it at a lower priority than just making basic snapshots work.  The Nova<br>
>     patch I've seen come by so far [1] was for this API, but like I said, I<br>
>     would just come back to this once regular snapshots work.<br>
><br>
><br>
> +1 from me on this for sure<br>
><br>
><br>
>     The page also indicates that a snapshot request through the Cinder API<br>
>     will only work through if it's not attached.  That seems fairly<br>
>     undesirable.  Can we try to address that with the first pass?  It seems<br>
>     like we could do something like:<br>
><br>
>     on the cinder side:<br>
><br>
>         cinder snapshot API<br>
>             if snapshot requires guest assist while in use, and is in use:<br>
>                 call nova's guest assisted snapshot API<br>
>             else:<br>
>                 do snapshot in cinder<br>
><br>
>     on the nova side:<br>
><br>
>         nova's new guest assisted snapshot API<br>
>             if volume type is a local file:<br>
>                 do local magic to create a snapshot and call<br>
>                 the new create-snapshot-metadata API call in cinder<br>
>             else:<br>
>                 do cinder API call to do a snapshot, but potentially<br>
>                 adding some guest assistance here (to get the filesystem<br>
>                 in a consistent state first, for example)<br>
><br>
><br>
> Part of this reminds me of my whole debate about shared FS storage mixed<br>
> in Cinder to begin with.  The capabilties are different, and I think<br>
> mixing around this "if this: do nova-xxxx; else: do cinder-xxx" results<br>
> in a poor end-user experience to say the least.<br>
><br>
> My proposal would be to change a couple of things here:<br>
><br>
> 1. As Russell suggests leave the API calls in Cinder.  I don't see a<br>
> strong reason why we can't have a "nova" driver to send requests to<br>
> Compute for things like this.  Even if implementation wise we're still<br>
> looking at things spread between the two (which I still don't find very<br>
> appealing) at least from an end-users perspective it's not so confusing<br>
> as to what's going on.<br>
><br>
> 2. Consider rather than using the existing "cinder snapshot" command we<br>
> introduce something unique for this special case.  This would give the<br>
> ability to do what we want here and would be considered acceptable in<br>
> terms of the cinder minimum qualifications requirement.  I don't care<br>
> what it's called, "cinder snapshot-share" or whatever, but it seems like<br>
> it's a different semantic so should be a different call.<br>
<br>
</div></div>I buy keeping a single API for snapshots (Cinder), but why should it be<br>
a new Cinder API?  Is it really different from the end user's<br>
perspective?  It's obviously wildly different on the backend.  It<br>
requires some cooperation from nova, but it's all done with the VM still<br>
running AFAIK.<br></blockquote><div><br></div><div class="gmail_default" style="font-family:'courier new',monospace">So maybe that last part isn't all that necessary, but part of the reason I mention that has to do with some history.  I'm pretty adamant about behavior consistency and expectations regardless of the backend (a somewhat unpopular stance with vendors).  Part of the reason for this suggestion is the fact that I *believe* some of these back-ends actually require the volume be attached to an instance in order to perform the snapshot.  Most of the block devices don't care and do snapshots strictly internally on the device itself.</div>

<div class="gmail_default" style="font-family:'courier new',monospace"><br></div><div class="gmail_default" style="font-family:'courier new',monospace">I may be wrong about how this shakes out so I'm perfectly happy to be wrong and not require an extension or new API call here. </div>

<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<div class="im"><br>
><br>
>     Similarly to create, I think having delete work through Nova, but not<br>
>     Cinder isn't ideal.  Can we address that as well with a similar<br>
>     smart-redirect approach?<br>
><br>
><br>
> Again, agree on this... having the mix between the two seems like it<br>
> will just create confusion IMO.  The same strategy as suggested above<br>
> could work here as well.<br>
><br>
><br>
>     My final comment on all of this is that I'm not a huge fan of having<br>
>     snapshot create/delete in both the nova and cinder APIs.  I can't think<br>
>     of a better way to accomplish this, though.  We don't have a nova API<br>
>     only exposed internally to the deployment, and I don't think this<br>
>     feature is enough to warrant adding one.<br>
><br>
><br>
> So the internal nova API direction is more along the lines of what I was<br>
> suggesting.  To be honest I suspect there's the possibility of more<br>
> things fitting here in the future but I see your point.  The problem I<br>
> have is if these features aren't enough to justify it then are these<br>
> features worth enough to justify the confusion of using multiple<br>
> services/api's do do a volume snapshot?<br>
<br>
</div>Yeah, you're right on this.  Let's do it.<br>
<div class="HOEnZb"><div class="h5"><br>
--<br>
Russell Bryant<br>
<br>
_______________________________________________<br>
OpenStack-dev mailing list<br>
<a href="mailto:OpenStack-dev@lists.openstack.org">OpenStack-dev@lists.openstack.org</a><br>
<a href="http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev" target="_blank">http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev</a><br>
</div></div></blockquote></div><br></div><div class="gmail_extra"><div class="gmail_default" style="font-family:'courier new',monospace">Thanks for the feedback on this,</div><div class="gmail_default" style="font-family:'courier new',monospace">

John</div><br></div></div>