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/e93def6de7b1a088d230b32 > 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['$filter'] > ) > > 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) > > >