On 01/15, jvlcek wrote: Hi Joe,
Thanks for trying and looking at this patch! > I did some minimal testing and response time seems faster. > > I tried creating a macine and machine_templates. I was not able > to create the machine_templates but that is very likely because I > was not doing it correctly. Can you please pass along an example > of how to create a machine_template? Sure, some sample MachineCreate XML/JSON files are already included in Deltacloud GIT repository (server/support/cimi), you can use them with the "curl" command: $ curl -d @support/cimi/machine_template.xml -H 'Content-Type: text/xml' \ --user 'mockuser:mockpassword' -X POST \ http://localhost:3001/cimi/machine_templates This should result into MachineTemplate creation. If you want to tweak attributes for new MachineTemplate, just edit 'machine_template.xml' file. That directory contains many other examples for entities we support. I mostly added them there while I was working on database stuff (for testing). > + DATABASE_LOCATION = ENV['DATABASE_LOCATION'] || > + 'sqlite://'+File.join('/', 'var', 'tmp', > "deltacloud-mock-#{ENV['USER']}", 'db.sqlite') > > - DATABASE_LOCATION = ENV['DATABASE_LOCATION'] || File.join('/', 'var', > 'tmp', "deltacloud-mock-#{ENV['USER']}", 'db.sqlite') > + def self.database(opts={}) > + opts[:logger] = ::Logger.new($stdout) if ENV['API_VERBOSE'] > + @db ||= Sequel.connect(DATABASE_LOCATION, opts) > + end > > > JoeV: Question/nit: > JoeV: > JoeV: Would it make more sense to allow DATABASE_LOCATION to specify > JoeV: the path to db.sqlite but still use "db.sqlite" at the end of the > path? The benefit for using 'full' path is that in some case you don't want to use sqlite as a database backend, but some other database (like postgres). In that case all you need to do is to set 'DATABASE_LOCATION' system env variable to something like: "postgres://...". > JoeV: Question/nit: > JoeV: > JoeV: Does sequel require the other files which "rake mock:fixtures:reset" > JoeV: populates in DATABASE_LOCATION or just "db.sqlite" ? If so: > JoeV: doesn't the Rakefile need to be updated to only populate > JoeV: DATABASE_LOCATION or just "db.sqlite" ? In some cases, like when you create a new Machine using the mock driver, Mock driver create YAML files and also add record to the database. To reset all this, you need to remove both mock YAML files and also the database file. The only complication could be situlation when you are using DB backend other than sqlite. In that case this rake task will of course don't rip off the database. > + database.create_table?(:providers) { > + primary_key :id > + > + column :driver, :string, { :null => false } > + column :url, :string > + index [ :url, :driver ] > + } > + > + database.create_table?(:entities) { > + primary_key :id > + foreign_key :provider_id, :providers, { :index => true, :null => > false } > + column :created_at, :timestamp > + > > JoeV: Question/nit: > JoeV: Why the "?" postfix for create_table"?" ? > JoeV: Does it return true on success? According to Sequel rdoc, the 'create_table?' method will create the table only if the table does not already exists. Without '?' suffix Sequel will try (and fail) to create the table structure every time you start Deltacloud. If you have 'verbose' mode turned on (-V deltacloudd parameter) you will in that case see very nasty sqlite error :-) Now you will see something like 'CREATE TABLE IF DOES NOT EXISTS' or something similar :-) -- Michal > > -- Michal Fojtik <[email protected]> Deltacloud API, CloudForms
