blob: c43e3571f3c2a42dcb56a778e760f0394b902ddc [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.
# Initialize the storage layer we use to persist some CIMI entities
# and attributes.
#
# By default the database backend is sqlite3
require_relative '../db'
# We want to enable validation plugin for all database models
#
Sequel::Model.plugin :validation_class_methods
Sequel::Model.plugin :after_initialize
# Enable Sequel migrations extension
Sequel.extension :migration
# The default sqlite3 database can be overridden with the 'DATABASE_LOCATION'
# environment variable.
#
# For more details about possible values see:
# http://sequel.rubyforge.org/rdoc/files/doc/opening_databases_rdoc.html
#
unless location = ENV['DATABASE_LOCATION']
if ENV['RACK_ENV'] == 'test'
if RUBY_PLATFORM=='java'
location = 'jdbc:sqlite::memory'
else
location = 'sqlite:/'
end
else
sequel_driver = (RUBY_PLATFORM=='java') ? 'jdbc:sqlite:' : 'sqlite://'
location = "#{sequel_driver}#{File.join(BASE_STORAGE_DIR, 'db.sqlite')}"
end
end
database = Deltacloud::initialize_database(location)
# Detect if there are some pending migrations to run.
# We don't actually run migrations during server startup, just print
# a warning to console
#
DATABASE_MIGRATIONS_DIR = File.join(File.dirname(__FILE__), '..', '..', 'db', 'migrations')
unless Sequel::Migrator.is_current?(database, DATABASE_MIGRATIONS_DIR)
# Do not exit when this intitializer is included from deltacloud-db-upgrade
# script
#
if ENV['RACK_ENV'] == 'test' || ENV['DB_UPGRADE']
Sequel::Migrator.apply(database, DATABASE_MIGRATIONS_DIR)
else
warn "WARNING: The database needs to be upgraded. Run: 'deltacloud-db-upgrade' command."
exit(1)
end
end