Hi Marios, Michal,

I've updated my code with Marios' feedback.

https://github.com/dkoper/deltacloud-core/commit/38b09c16609219b21bb83db
7f4384fe016593d7e

I'm much closer now, export is working as expected (advertised properly,
parameters are passed into the driver method correctly).
I'm still having two issues with import:

A POST to /cimi/systems/import returns "Sinatra doesn't know this
ditty.".
A POST to /cimi/systems/UZXC0GRT-ZG8ZJCJ07/import (which is incorrect as
import is on systems, not a particular system) is accepted and leads to
my driver's import_system method being invoked.

Also, the advertised url is incorrect:

<operation rel="http://schemas.dmtf.org/cimi/1/action/import";
href="http://localhost:3001/cimi/systems/:id/import"; />

Note the ':id' in the href.

I assume the two are related.
I tried to create the import Sinatra route similar to the show action.
What am I missing?

https://github.com/dkoper/deltacloud-core/commit/38b09c16609219b21bb83db
7f4384fe016593d7e#L1R108

Cheers,
Dies Koper


> -----Original Message-----
> From: mar...@redhat.com [mailto:mandr...@redhat.com]
> Sent: Monday, 20 May 2013 5:05 PM
> To: dev@deltacloud.apache.org
> Cc: Koper, Dies
> Subject: Re: how does create_xxx_url work?
> 
> On 20/05/13 07:45, Koper, Dies wrote:
> > Hi Michal, all
> >
> > I've started on the implementation of system import/export,
advertising
> > the operations on the collections and resources.
> > The export operation seems to work: I can expose the url in a
system,
> it
> > shows up when I retrieve the system, and when I do a POST on that
url,
> > my driver's export_system method is invoked.
> >
> >
> https://github.com/dkoper/deltacloud-core/commit/e93def6de7b1a088d23
> 0b32
> > 842a349059f12e88c
> >
> > I'm having problems with the import operation.
> > I'm following the add operation as example.
> >
> > The add operation seems to be processed in two locations:
> > Base.rb:
> >     def self.list(ctx)
> > ...
> >       params[:add_url] = create_url(ctx)
> >       if model_class == CIMI::Model::System
> >         params[:system] = id
> >       end
> >       model_class.list(id, entries,
> >
> params).select_by(ctx.params['$select']).filter_by(ctx.params['$filt
> er']
> > )
> >
> > with create_url:
> >     def self.create_url(ctx)
> >       cimi_create = "create_#{model_name}_url"
> >       dcloud_create = ctx.deltacloud_create_method_for(model_name)
> >       if(ctx.respond_to?(cimi_create) &&
> >          ctx.driver.respond_to?(dcloud_create)) ||
> provides?(model_name)
> >         ctx.send(cimi_create)
> >       end
> >     end
> >
> > Collections.rb:
> > ...
> >       params[:entries] = entries
> >       params[:count] = params[:entries].size
> >       if params[:add_url]
> >         params[:operations] ||= []
> >         params[:operations] << { :rel => "add", :href =>
> > params.delete(:add_url) }
> >       end
> >       collection_class.new(params)
> > ...
> >
> >
> > So I have added similar code for import (see url above), but
> > ctx.respond_to?(cimi_import) in my self.import_url returns nil for
me.
> > Should I be doing this differently? Or do I need to add other code
> > elsewhere for this operation to work?
> >
> > ...
> > I just noticed that I didn't require_relative the import and export
> > classes in service.rb. When I add that, I get an error:
> >
> > 18 cloud providers loaded.
> >
> d:/sources/OSS/cloud/deltacloud-core/server/lib/cimi/service/base.rb
> :34:
> > in `const_get': uninitialized constant
> CIMI::Model::SystemTemplateImport
> > (NameError)
> >         from
> >
> d:/sources/OSS/cloud/deltacloud-core/server/lib/cimi/service/base.rb
> :34:
> > in `model_class'
> >         from
> >
> d:/sources/OSS/cloud/deltacloud-core/server/lib/cimi/service/base.rb
> :47:
> > in `inherited'
> >         from
> >
> d:/sources/OSS/cloud/deltacloud-core/server/lib/cimi/service/system_
> temp
> > late_import.rb:16:in `<top (required)>'
> >
> > What am I missing?
> >
> > Thanks,
> > Dies Koper
> 
> OH, and to answer $TITLE, see
> server/lib/deltacloud/helpers/rabbit_helper.rb I *think* (i.e. I don't
> think we have similar code defined for CIMI, it just re-uses this
> deltacloud helper)
> 
> >
> >
> >
> 


Reply via email to