420 lines
13 KiB
Python
420 lines
13 KiB
Python
# Licensed 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.
|
|
|
|
'''
|
|
Interface for database access.
|
|
|
|
SQLAlchemy is currently the only supported backend.
|
|
'''
|
|
|
|
from oslo_config import cfg
|
|
from oslo_db import api
|
|
|
|
CONF = cfg.CONF
|
|
|
|
|
|
_BACKEND_MAPPING = {'sqlalchemy': 'senlin.db.sqlalchemy.api'}
|
|
|
|
IMPL = api.DBAPI.from_config(CONF, backend_mapping=_BACKEND_MAPPING)
|
|
|
|
|
|
def get_engine():
|
|
return IMPL.get_engine()
|
|
|
|
|
|
def get_session():
|
|
return IMPL.get_session()
|
|
|
|
|
|
# Clusters
|
|
def cluster_create(context, values):
|
|
return IMPL.cluster_create(context, values)
|
|
|
|
|
|
def cluster_get(context, cluster_id, show_deleted=False, tenant_safe=True):
|
|
return IMPL.cluster_get(context, cluster_id, show_deleted=show_deleted,
|
|
tenant_safe=tenant_safe)
|
|
|
|
|
|
def cluster_get_by_name(context, cluster_name):
|
|
return IMPL.cluster_get_by_name(context, cluster_name)
|
|
|
|
|
|
def cluster_get_by_short_id(context, short_id):
|
|
return IMPL.cluster_get_by_short_id(context, short_id)
|
|
|
|
|
|
def cluster_get_next_index(context, cluster_id):
|
|
return IMPL.cluster_get_next_index(context, cluster_id)
|
|
|
|
|
|
def cluster_get_by_name_and_parent(context, cluster_name, parent):
|
|
return IMPL.cluster_get_by_name_and_parent(context, cluster_name, parent)
|
|
|
|
|
|
def cluster_get_all(context, limit=None, marker=None, sort_keys=None,
|
|
sort_dir=None, filters=None, tenant_safe=True,
|
|
show_deleted=False, show_nested=False):
|
|
return IMPL.cluster_get_all(context, limit, marker, sort_keys, sort_dir,
|
|
filters, tenant_safe, show_deleted,
|
|
show_nested)
|
|
|
|
|
|
def cluster_get_all_by_parent(context, parent):
|
|
return IMPL.cluster_get_all_by_parent(context, parent)
|
|
|
|
|
|
def cluster_count_all(context, filters=None, tenant_safe=True,
|
|
show_deleted=False, show_nested=False):
|
|
return IMPL.cluster_count_all(context, filters=filters,
|
|
tenant_safe=tenant_safe,
|
|
show_deleted=show_deleted,
|
|
show_nested=show_nested)
|
|
|
|
|
|
def cluster_update(context, cluster_id, values):
|
|
return IMPL.cluster_update(context, cluster_id, values)
|
|
|
|
|
|
def cluster_delete(context, cluster_id):
|
|
return IMPL.cluster_delete(context, cluster_id)
|
|
|
|
|
|
# Nodes
|
|
def node_create(context, values):
|
|
return IMPL.node_create(context, values)
|
|
|
|
|
|
def node_get(context, node_id, show_deleted=False):
|
|
return IMPL.node_get(context, node_id, show_deleted=show_deleted)
|
|
|
|
|
|
def node_get_by_name(context, name, show_deleted=False):
|
|
return IMPL.node_get_by_name(context, name, show_deleted=show_deleted)
|
|
|
|
|
|
def node_get_by_short_id(context, short_id, show_deleted=False):
|
|
return IMPL.node_get_by_short_id(context, short_id,
|
|
show_deleted=show_deleted)
|
|
|
|
|
|
def node_get_all(context, cluster_id=None, show_deleted=False,
|
|
limit=None, marker=None, sort_keys=None, sort_dir=None,
|
|
filters=None, tenant_safe=True):
|
|
return IMPL.node_get_all(context, cluster_id=cluster_id,
|
|
show_deleted=show_deleted,
|
|
limit=limit, marker=marker,
|
|
sort_keys=sort_keys, sort_dir=sort_dir,
|
|
filters=filters, tenant_safe=tenant_safe)
|
|
|
|
|
|
def node_get_all_by_cluster(context, cluster_id):
|
|
return IMPL.node_get_all_by_cluster(context, cluster_id)
|
|
|
|
|
|
def node_get_by_name_and_cluster(context, node_name, cluster_id):
|
|
return IMPL.node_get_by_name_and_cluster(context,
|
|
node_name, cluster_id)
|
|
|
|
|
|
def node_get_by_physical_id(context, physical_id):
|
|
return IMPL.node_get_by_physical_id(context, physical_id)
|
|
|
|
|
|
def node_update(context, node_id, values):
|
|
return IMPL.node_update(context, node_id, values)
|
|
|
|
|
|
def node_migrate(context, node_id, to_cluster, timestamp):
|
|
return IMPL.node_migrate(context, node_id, to_cluster, timestamp)
|
|
|
|
|
|
def node_delete(context, node_id, force=False):
|
|
return IMPL.node_delete(context, node_id, force)
|
|
|
|
|
|
# Locks
|
|
def cluster_lock_acquire(cluster_id, action_id, scope):
|
|
return IMPL.cluster_lock_acquire(cluster_id, action_id, scope)
|
|
|
|
|
|
def cluster_lock_release(cluster_id, action_id, scope):
|
|
return IMPL.cluster_lock_release(cluster_id, action_id, scope)
|
|
|
|
|
|
def cluster_lock_steal(node_id, action_id):
|
|
return IMPL.cluster_lock_steal(node_id, action_id)
|
|
|
|
|
|
def node_lock_acquire(node_id, action_id):
|
|
return IMPL.node_lock_acquire(node_id, action_id)
|
|
|
|
|
|
def node_lock_release(node_id, action_id):
|
|
return IMPL.node_lock_release(node_id, action_id)
|
|
|
|
|
|
def node_lock_steal(node_id, action_id):
|
|
return IMPL.node_lock_steal(node_id, action_id)
|
|
|
|
|
|
# Policies
|
|
def policy_create(context, values):
|
|
return IMPL.policy_create(context, values)
|
|
|
|
|
|
def policy_get(context, policy_id, show_deleted=False):
|
|
return IMPL.policy_get(context, policy_id, show_deleted=show_deleted)
|
|
|
|
|
|
def policy_get_by_name(context, name, show_deleted=False):
|
|
return IMPL.policy_get_by_name(context, name, show_deleted=show_deleted)
|
|
|
|
|
|
def policy_get_by_short_id(context, short_id, show_deleted=False):
|
|
return IMPL.policy_get_by_short_id(context, short_id,
|
|
show_deleted=show_deleted)
|
|
|
|
|
|
def policy_get_all(context, limit=None, marker=None, sort_keys=None,
|
|
sort_dir=None, filters=None, show_deleted=False):
|
|
return IMPL.policy_get_all(context, limit=limit, marker=marker,
|
|
sort_keys=sort_keys, sort_dir=sort_dir,
|
|
filters=filters, show_deleted=show_deleted)
|
|
|
|
|
|
def policy_update(context, policy_id, values):
|
|
return IMPL.policy_update(context, policy_id, values)
|
|
|
|
|
|
def policy_delete(context, policy_id, force=False):
|
|
return IMPL.policy_delete(context, policy_id, force)
|
|
|
|
|
|
# Cluster-Policy Associations
|
|
def cluster_policy_get(context, cluster_id, policy_id):
|
|
return IMPL.cluster_policy_get(context, cluster_id, policy_id)
|
|
|
|
|
|
def cluster_policy_get_all(context, cluster_id, filters=None,
|
|
sort_keys=None, sort_dir=None):
|
|
return IMPL.cluster_policy_get_all(context, cluster_id, filters=filters,
|
|
sort_keys=sort_keys, sort_dir=sort_dir)
|
|
|
|
|
|
def cluster_policy_attach(context, cluster_id, policy_id, values):
|
|
return IMPL.cluster_policy_attach(context, cluster_id, policy_id, values)
|
|
|
|
|
|
def cluster_policy_detach(context, cluster_id, policy_id):
|
|
return IMPL.cluster_policy_detach(context, cluster_id, policy_id)
|
|
|
|
|
|
def cluster_policy_update(context, cluster_id, policy_id, values):
|
|
return IMPL.cluster_policy_update(context, cluster_id, policy_id, values)
|
|
|
|
|
|
# Profiles
|
|
def profile_create(context, values):
|
|
return IMPL.profile_create(context, values)
|
|
|
|
|
|
def profile_get(context, profile_id, show_deleted=False):
|
|
return IMPL.profile_get(context, profile_id, show_deleted=show_deleted)
|
|
|
|
|
|
def profile_get_by_name(context, name, show_deleted=False):
|
|
return IMPL.profile_get_by_name(context, name, show_deleted=show_deleted)
|
|
|
|
|
|
def profile_get_by_short_id(context, short_id):
|
|
return IMPL.profile_get_by_short_id(context, short_id)
|
|
|
|
|
|
def profile_get_all(context, limit=None, marker=None, sort_keys=None,
|
|
sort_dir=None, filters=None, show_deleted=False):
|
|
return IMPL.profile_get_all(context, limit=limit, marker=marker,
|
|
sort_keys=sort_keys, sort_dir=sort_dir,
|
|
filters=filters, show_deleted=show_deleted)
|
|
|
|
|
|
def profile_update(context, profile_id, values):
|
|
return IMPL.profile_update(context, profile_id, values)
|
|
|
|
|
|
def profile_delete(context, profile_id):
|
|
return IMPL.profile_delete(context, profile_id)
|
|
|
|
|
|
# Events
|
|
def event_create(context, values):
|
|
return IMPL.event_create(context, values)
|
|
|
|
|
|
def event_get(context, event_id):
|
|
return IMPL.event_get(context, event_id)
|
|
|
|
|
|
def event_get_by_short_id(context, short_id):
|
|
return IMPL.event_get_by_short_id(context, short_id)
|
|
|
|
|
|
def event_get_all(context, limit=None, marker=None, sort_keys=None,
|
|
sort_dir=None, filters=None, tenant_safe=True,
|
|
show_deleted=False):
|
|
|
|
return IMPL.event_get_all(context, limit=limit, marker=marker,
|
|
sort_keys=sort_keys, sort_dir=sort_dir,
|
|
filters=filters, tenant_safe=tenant_safe,
|
|
show_deleted=show_deleted)
|
|
|
|
|
|
def event_count_by_cluster(context, cluster_id):
|
|
return IMPL.event_count_by_cluster(context, cluster_id)
|
|
|
|
|
|
def event_get_all_by_cluster(context, cluster_id, limit=None, marker=None,
|
|
sort_keys=None, sort_dir=None, filters=None):
|
|
return IMPL.event_get_all_by_cluster(context, cluster_id,
|
|
limit=limit, marker=marker,
|
|
sort_keys=sort_keys,
|
|
sort_dir=sort_dir,
|
|
filters=filters)
|
|
|
|
|
|
# Webhooks
|
|
def webhook_create(context, values):
|
|
return IMPL.webhook_create(context, values)
|
|
|
|
|
|
def webhook_get(context, webhook_id, show_deleted=False):
|
|
return IMPL.webhook_get(context, webhook_id, show_deleted=show_deleted)
|
|
|
|
|
|
def webhook_get_by_name(context, name, show_deleted=False):
|
|
return IMPL.webhook_get_by_name(context, name, show_deleted=show_deleted)
|
|
|
|
|
|
def webhook_get_all(context, show_deleted=False, limit=None,
|
|
marker=None, sort_keys=None, sort_dir=None,
|
|
filters=None, tenant_safe=True):
|
|
return IMPL.webhook_get_all(context, show_deleted=show_deleted,
|
|
limit=limit, marker=marker,
|
|
sort_keys=sort_keys, sort_dir=sort_dir,
|
|
filters=filters, tenant_safe=tenant_safe)
|
|
|
|
|
|
def webhook_get_all_by_obj_id(context, obj_id):
|
|
return IMPL.webhook_get_all_by_obj_id(context, obj_id)
|
|
|
|
|
|
def webhook_get_all_by_obj_type(context, obj_type):
|
|
return IMPL.webhook_get_all_by_obj_type(context, obj_type)
|
|
|
|
|
|
def webhook_delete(context, webhook_id, force=False):
|
|
return IMPL.webhook_delete(context, webhook_id, force)
|
|
|
|
|
|
# Actions
|
|
def action_create(context, values):
|
|
return IMPL.action_create(context, values)
|
|
|
|
|
|
def action_get(context, action_id):
|
|
return IMPL.action_get(context, action_id)
|
|
|
|
|
|
def action_get_by_name(context, name):
|
|
return IMPL.action_get_by_name(context, name)
|
|
|
|
|
|
def action_get_by_short_id(context, short_id):
|
|
return IMPL.action_get_by_short_id(context, short_id)
|
|
|
|
|
|
def action_get_1st_ready(context):
|
|
return IMPL.action_get_1st_ready(context)
|
|
|
|
|
|
def action_get_all_ready(context):
|
|
return IMPL.action_get_all_ready(context)
|
|
|
|
|
|
def action_get_all_by_owner(context, owner):
|
|
return IMPL.action_get_all_by_owner(context, owner)
|
|
|
|
|
|
def action_get_all(context, filters=None, limit=None, marker=None,
|
|
sort_keys=None, sort_dir=None, show_deleted=False):
|
|
return IMPL.action_get_all(context, filters=filters,
|
|
limit=limit, marker=marker,
|
|
sort_keys=sort_keys, sort_dir=sort_dir,
|
|
show_deleted=show_deleted)
|
|
|
|
|
|
def action_add_dependency(context, depended, dependent):
|
|
return IMPL.action_add_dependency(context, depended, dependent)
|
|
|
|
|
|
def action_del_dependency(context, depended, dependent):
|
|
return IMPL.action_del_dependency(context, depended, dependent)
|
|
|
|
|
|
def action_mark_succeeded(context, action_id, timestamp):
|
|
return IMPL.action_mark_succeeded(context, action_id, timestamp)
|
|
|
|
|
|
def action_mark_failed(context, action_id, timestamp, reason=None):
|
|
return IMPL.action_mark_failed(context, action_id, timestamp, reason)
|
|
|
|
|
|
def action_mark_cancelled(context, action_id, timestamp):
|
|
return IMPL.action_mark_cancelled(context, action_id, timestamp)
|
|
|
|
|
|
def action_acquire(context, action_id, owner, timestamp):
|
|
return IMPL.action_acquire(context, action_id, owner, timestamp)
|
|
|
|
|
|
def action_abandon(context, action_id):
|
|
return IMPL.action_abandon(context, action_id)
|
|
|
|
|
|
def action_lock_check(context, action_id, owner=None):
|
|
'''Check whether an action has been locked(by a owner).'''
|
|
return IMPL.action_lock_check(context, action_id, owner)
|
|
|
|
|
|
def action_signal(context, action_id, value):
|
|
'''Send signal to an action via DB.'''
|
|
return IMPL.action_signal(context, action_id, value)
|
|
|
|
|
|
def action_signal_query(context, action_id):
|
|
'''Query signal status for the sepcified action.'''
|
|
return IMPL.action_signal_query(context, action_id)
|
|
|
|
|
|
def action_delete(context, action_id, force=False):
|
|
return IMPL.action_delete(context, action_id, force)
|
|
|
|
|
|
def db_sync(engine, version=None):
|
|
"""Migrate the database to `version` or the most recent version."""
|
|
return IMPL.db_sync(engine, version=version)
|
|
|
|
|
|
def db_version(engine):
|
|
"""Display the current database version."""
|
|
return IMPL.db_version(engine)
|