blob: 73714382c2ac99bb8152b223d3349a3fd0d97beb [file] [log] [blame]
# Licensed to the Apache Software Foundation (ASF) under one or more
# contributor license agreements. See the NOTICE file distributed with
# this work for additional information regarding copyright ownership. The
# ASF licenses this file to you under the Apache License, Version 2.0 (the
# "License"); you may not use this file except in compliance with the
# License. You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
# License for the specific language governing permissions and limitations
# under the License.
module Deltacloud
def self.connect(location)
if ENV['API_VERBOSE']
if Deltacloud.respond_to? :config
logger = Deltacloud.config[:cimi].logger
else
logger = ::Logger.new($stdout)
end
end
@db = Sequel.connect(location, :logger => logger)
end
def self.database
@db
end
def self.initialize_database(location)
db = connect(location)
db.create_table?(:providers) {
primary_key :id
column :driver, :string, { :null => false }
column :url, :string
index [ :url, :driver ] if !db.table_exists?(:providers)
}
db.create_table?(:entities) {
primary_key :id
unless db.table_exists?(:entities)
foreign_key :provider_id, :providers, { :index => true, :null => false }
end
column :created_at, :timestamp
# Base
unless db.table_exists?(:entities)
column :model, :string, { :index => true, :null => false, :default => 'entity' }
end
# Map Entity to Deltacloud model
# (like: Machine => Instance)
column :be_kind, :string
column :be_id, :string
# Entity
column :name, :string
column :description, :string
column :ent_properties, :string, { :text => true }
column :machine_config, :string
column :machine_image, :string
column :network, :string
column :ip, :string
column :hostname, :string
column :allocation, :string
column :default_gateway, :string
column :dns, :string
column :protocol, :string
column :mask, :string
column :format, :string
column :capacity, :string
column :volume_config, :string
column :volume_image, :string
}
db
end
end