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

Reply via email to