> From: "[email protected]" <[email protected]> > To: [email protected] > Cc: "Michal Fojtik" <[email protected]> > Sent: Wednesday, November 28, 2012 12:24:28 PM > Subject: Re: CIMI MachineVolumes collection attach/detach volume > > On 28/11/12 14:24, Michal Fojtik wrote: > > On 11/28, [email protected] wrote: > > > > Nicely done. ACK to this series. I also prepared a patch[1] for > > Sinatra::Rabbit to support operations with same name but different > > HTTP > > method. But I think having a sub-collection here is better idea :-) > > > > Thanks a lot for doing that - I tested it and it works fine (comments > on > the pull request). I think its still very useful to have this ability > because it means we can expose the 'attach' volume route as > > PUT /cimi/machines/:id/volumes (now we have /volume_attach) > > and still have the regular > > GET /cimi/machines/:id/volumes > > marios > > > One minor nit: There are no unit tests for this stuff :) > > > > [1] https://github.com/mifo/sinatra-rabbit/pull/12 > > > >> > >> Attach volume to Machine > >> > >> XML: > >> > >> curl -v --user "mockuser:mockpassword" -H "Content-Type: > >> application/xml" > >> -H "Accept: application/xml" -X PUT -d > >> '<MachineVolume > >> xmlns="http://schemas.dmtf.org/cimi/1/MachineVolume"> > >> <initialLocation> /dev/sdf </initialLocation> > >> <volume href="http://localhost:3001/cimi/volumes/vol2"/> > >> </MachineVolume>' > >> http://localhost:3001/cimi/machines/inst1/volume_attach > >> > >> JSON: > >> > >> curl -v --user "mockuser:mockpassword" -H "Content-Type: > >> application/json" > >> -H "Accept: application/xml" -X PUT -d > >> '{"resourceURI":"http://schemas.dmtf.org/cimi/1/MachineVolume", > >> "initialLocation": "/dev/sdf", > >> "volume": {"href":"http://localhost:3001/cimi/volumes/vol2"}}' > >> http://localhost:3001/cimi/machines/inst1/volume_attach > >> > >> Detach volume (remove MachineVolume from the > >> MachineVolumeCollection): > >> > >> curl -v --user "mockuser:mockpassword" -H "Accept: > >> application/xml" > >> -X DELETE > >> http://localhost:3001/cimi/machines/inst1/volumes/vol2
The above works to detach a volume from a machine. However, you can create a volume, and never attach it. In the case that I want to delete this volume (w/o ever attaching it), I tried: curl -X DELETE --user "mockuser:mockpassword" "http://cloud-qe-3.idm.lab.bos.redhat.com:3001/cimi/volumes/Volume1354146026?format=xml" and got ... <error status='500' url='/cimi/volumes/Volume1354146026'> "DELETE /cimi/volumes/Volume1354146166 HTTP/1.1" 500 1518 0.0385 E, [2012-11-28T18:43:45.570420 #17963] ERROR -- 500: [TypeError] nil is not a symbol /home/dcloud/workspace/deltacloud/server/lib/cimi/collections/volumes.rb:19:in `respond_to?' /home/dcloud/workspace/deltacloud/server/lib/cimi/collections/volumes.rb:19:in `block in <class:Volumes>' /usr/local/share/gems/gems/sinatra-rabbit-1.1.3/lib/sinatra/rabbit/base.rb:384:in `block in control' /usr/local/share/gems/gems/sinatra-1.3.3/lib/sinatra/base.rb:1265:in `call' /usr/local/share/gems/gems/sinatra-1.3.3/lib/sinatra/base.rb:1265:in `block in compile!' /usr/local/share/gems/gems/sinatra-1.3.3/lib/sinatra/base.rb:835:in `[]' /usr/local/share/gems/gems/sinatra-1.3.3/lib/sinatra/base.rb:835:in `block (3 levels) in route!' /usr/local/share/gems/gems/sinatra-1.3.3/lib/sinatra/base.rb:851:in `route_eval' /usr/local/share/gems/gems/sinatra-1.3.3/lib/sinatra/base.rb:835:in `block (2 levels) in route!' /usr/local/share/gems/gems/sinatra-1.3.3/lib/sinatra/base.rb:872:in `block in process_route' /usr/local/share/gems/gems/sinatra-1.3.3/lib/sinatra/base.rb:870:in `catch' > >> > >> > >> write-up and more info @ > >> http://mariosandreou.com/deltacloud/cloud_API/2012/11/28/cimi-machine-volumes-collection.html > >> > >> marios > > > >
