193 lines
5.0 KiB
Python
193 lines
5.0 KiB
Python
# Copyright (c) 2015 Huawei Technologies Co., Ltd.
|
|
# All Rights Reserved.
|
|
#
|
|
# 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.
|
|
"""
|
|
Defines interface for DB access.
|
|
"""
|
|
|
|
from oslo_config import cfg
|
|
from oslo_db import concurrency as db_concurrency
|
|
|
|
|
|
CONF = cfg.CONF
|
|
|
|
_BACKEND_MAPPING = {'sqlalchemy': 'terracotta.db.sqlalchemy.api'}
|
|
|
|
IMPL = db_concurrency.TpoolDbapiWrapper(CONF, backend_mapping=_BACKEND_MAPPING)
|
|
|
|
|
|
def select_cpu_mhz_for_vm(uuid, limit):
|
|
"""Select n last values of CPU MHz for a VM UUID.
|
|
|
|
:param uuid: The UUID of a VM.
|
|
:param limit: The number of last values to select.
|
|
:return: The list of n last CPU Mhz values.
|
|
"""
|
|
return IMPL.select_cpu_mhz_for_vm(uuid, limit)
|
|
|
|
|
|
def select_last_cpu_mhz_for_vms():
|
|
"""Select the last value of CPU MHz for all the VMs.
|
|
|
|
:return: A dict of VM UUIDs to the last CPU MHz values.
|
|
"""
|
|
return IMPL.select_last_cpu_mhz_for_vms()
|
|
|
|
|
|
def select_vm_id(uuid):
|
|
"""Select the ID of a VM by the VM UUID, or insert a new record.
|
|
|
|
:param uuid: The UUID of a VM.
|
|
:return: The ID of the VM.
|
|
"""
|
|
return IMPL.select_vm_id(uuid)
|
|
|
|
|
|
def insert_vm_cpu_mhz(data):
|
|
"""Insert a set of CPU MHz values for a set of VMs.
|
|
|
|
:param data: A dictionary of VM UUIDs and CPU MHz values.
|
|
"""
|
|
return IMPL.insert_vm_cpu_mhz()
|
|
|
|
|
|
def update_host(hostname, cpu_mhz, cpu_cores, ram):
|
|
"""Insert new or update the corresponding host record.
|
|
|
|
:param hostname: A host name.
|
|
:param cpu_mhz: The total CPU frequency of the host in MHz.
|
|
:param cpu_cores: The number of physical CPU cores.
|
|
:param ram: The total amount of RAM of the host in MB.
|
|
:return: The ID of the host.
|
|
"""
|
|
return update_host(hostname, cpu_mhz, cpu_cores, ram)
|
|
|
|
|
|
def insert_host_cpu_mhz(hostname, cpu_mhz):
|
|
"""Insert a CPU MHz value for a host.
|
|
|
|
:param hostname: A host name.
|
|
:param cpu_mhz: The CPU usage of the host in MHz.
|
|
"""
|
|
return IMPL.insert_host_cpu_mhz(hostname, cpu_mhz)
|
|
|
|
|
|
def select_cpu_mhz_for_host(hostname, limit):
|
|
"""Select n last values of CPU MHz for a host.
|
|
|
|
:param hostname: A host name.
|
|
:param limit: The number of last values to select.
|
|
:return: The list of n last CPU Mhz values.
|
|
"""
|
|
return IMPL.select_cpu_mhz_for_host(hostname, limit)
|
|
|
|
|
|
def select_last_cpu_mhz_for_hosts():
|
|
"""Select the last value of CPU MHz for all the hosts.
|
|
|
|
:return: A dict of host names to the last CPU MHz values.
|
|
"""
|
|
return IMPL.select_last_cpu_mhz_for_hosts()
|
|
|
|
|
|
def select_host_characteristics(self):
|
|
"""Select the characteristics of all the hosts.
|
|
|
|
:return: Three dicts of hostnames to CPU MHz, cores, and RAM.
|
|
"""
|
|
return IMPL.select_host_characteristics()
|
|
|
|
|
|
def select_host_id(hostname):
|
|
"""Select the ID of a host.
|
|
|
|
:param hostname: A host name.
|
|
:return: The ID of the host.
|
|
"""
|
|
return IMPL.select_host_id(hostname)
|
|
|
|
|
|
def select_host_ids():
|
|
"""Select the IDs of all the hosts.
|
|
|
|
:return: A dict of host names to IDs.
|
|
"""
|
|
return IMPL.select_host_ids()
|
|
|
|
|
|
def cleanup_vm_resource_usage(datetime_threshold):
|
|
"""Delete VM resource usage data older than the threshold.
|
|
|
|
:param datetime_threshold: A datetime threshold.
|
|
"""
|
|
IMPL.cleanup_vm_resource_usage(datetime_threshold)
|
|
|
|
|
|
def cleanup_host_resource_usage(sdatetime_threshold):
|
|
"""Delete host resource usage data older than the threshold.
|
|
|
|
:param datetime_threshold: A datetime threshold.
|
|
"""
|
|
IMPL.cleanup_host_resource_usage()
|
|
|
|
|
|
def insert_host_states(hosts):
|
|
"""Insert host states for a set of hosts.
|
|
|
|
:param hosts: A dict of hostnames to states (0, 1).
|
|
"""
|
|
IMPL.insert_host_states(hosts)
|
|
|
|
|
|
def select_host_states():
|
|
"""Select the current states of all the hosts.
|
|
|
|
:return: A dict of host names to states.
|
|
"""
|
|
return IMPL.select_host_states()
|
|
|
|
|
|
def select_active_hosts():
|
|
"""Select the currently active hosts.
|
|
|
|
:return: A list of host names.
|
|
"""
|
|
return IMPL.select_active_hosts()
|
|
|
|
|
|
def select_inactive_hosts():
|
|
"""Select the currently inactive hosts.
|
|
|
|
:return: A list of host names.
|
|
"""
|
|
return IMPL.select_inactive_hosts()
|
|
|
|
|
|
def insert_host_overload(hostname, overload):
|
|
"""Insert whether a host is overloaded.
|
|
|
|
:param hostname: A host name.
|
|
:param overload: Whether the host is overloaded.
|
|
"""
|
|
IMPL.insert_host_overload(hostname, overload)
|
|
|
|
|
|
def insert_vm_migration(vm, hostname):
|
|
"""Insert a VM migration.
|
|
|
|
:param hostname: A VM UUID.
|
|
:param hostname: A host name.
|
|
"""
|
|
IMPL.insert_vm_migration(vm, hostname)
|