Apply black formatter to dcorch/db

This commit applies the Black format to the `dcorch/db`
files to ensure that it adheres to the Black code style guidelines.

Test Plan:
PASS: Success in stx-distcloud-tox-black

Story: 2011149
Task: 50445

Change-Id: I2560e5947fd1561e6b97b31dc2e735690813b340
Signed-off-by: Hugo Brito <hugo.brito@windriver.com>
This commit is contained in:
Hugo Brito
2024-06-26 16:12:00 -03:00
committed by Hugo Nicodemos
parent fb82532bbf
commit 51bee5a605
15 changed files with 795 additions and 718 deletions

View File

@@ -28,7 +28,7 @@ from oslo_db import api
CONF = cfg.CONF CONF = cfg.CONF
_BACKEND_MAPPING = {'sqlalchemy': 'dcorch.db.sqlalchemy.api'} _BACKEND_MAPPING = {"sqlalchemy": "dcorch.db.sqlalchemy.api"}
IMPL = api.DBAPI.from_config(CONF, backend_mapping=_BACKEND_MAPPING) IMPL = api.DBAPI.from_config(CONF, backend_mapping=_BACKEND_MAPPING)
@@ -116,10 +116,10 @@ def db_version(engine):
return IMPL.db_version(engine) return IMPL.db_version(engine)
def service_create(context, service_id, host=None, binary=None, def service_create(context, service_id, host=None, binary=None, topic=None):
topic=None): return IMPL.service_create(
return IMPL.service_create(context, service_id=service_id, host=host, context, service_id=service_id, host=host, binary=binary, topic=topic
binary=binary, topic=topic) )
def service_update(context, service_id, values=None): def service_update(context, service_id, values=None):
@@ -142,51 +142,60 @@ def subcloud_get(context, region_id):
return IMPL.subcloud_get(context, region_id) return IMPL.subcloud_get(context, region_id)
def subcloud_get_all(context, region_name=None, def subcloud_get_all(
management_state=None, context,
availability_status=None, region_name=None,
initial_sync_state=None): management_state=None,
return IMPL.subcloud_get_all(context, region_name=region_name, availability_status=None,
management_state=management_state, initial_sync_state=None,
availability_status=availability_status, ):
initial_sync_state=initial_sync_state) return IMPL.subcloud_get_all(
context,
region_name=region_name,
def subcloud_capabilities_get_all(context, region_name=None,
management_state=None,
availability_status=None,
initial_sync_state=None):
return IMPL.subcloud_capabilities_get_all(
context, region_name=region_name,
management_state=management_state, management_state=management_state,
availability_status=availability_status, availability_status=availability_status,
initial_sync_state=initial_sync_state) initial_sync_state=initial_sync_state,
)
def subcloud_sync_update_all_to_in_progress(context, def subcloud_capabilities_get_all(
management_state, context,
availability_status, region_name=None,
initial_sync_state, management_state=None,
sync_requests): availability_status=None,
initial_sync_state=None,
):
return IMPL.subcloud_capabilities_get_all(
context,
region_name=region_name,
management_state=management_state,
availability_status=availability_status,
initial_sync_state=initial_sync_state,
)
def subcloud_sync_update_all_to_in_progress(
context, management_state, availability_status, initial_sync_state, sync_requests
):
return IMPL.subcloud_sync_update_all_to_in_progress( return IMPL.subcloud_sync_update_all_to_in_progress(
context, context,
management_state=management_state, management_state=management_state,
availability_status=availability_status, availability_status=availability_status,
initial_sync_state=initial_sync_state, initial_sync_state=initial_sync_state,
sync_requests=sync_requests) sync_requests=sync_requests,
)
def subcloud_audit_update_all_to_in_progress(context, def subcloud_audit_update_all_to_in_progress(
management_state, context, management_state, availability_status, initial_sync_state, audit_interval
availability_status, ):
initial_sync_state,
audit_interval):
return IMPL.subcloud_audit_update_all_to_in_progress( return IMPL.subcloud_audit_update_all_to_in_progress(
context, context,
management_state=management_state, management_state=management_state,
availability_status=availability_status, availability_status=availability_status,
initial_sync_state=initial_sync_state, initial_sync_state=initial_sync_state,
audit_interval=audit_interval) audit_interval=audit_interval,
)
def subcloud_create(context, region_name, values): def subcloud_create(context, region_name, values):
@@ -201,21 +210,24 @@ def subcloud_delete(context, region_name):
return IMPL.subcloud_delete(context, region_name) return IMPL.subcloud_delete(context, region_name)
def subcloud_update_initial_state(context, subcloud_name, def subcloud_update_initial_state(
pre_initial_sync_state, initial_sync_state): context, subcloud_name, pre_initial_sync_state, initial_sync_state
):
return IMPL.subcloud_update_initial_state( return IMPL.subcloud_update_initial_state(
context, subcloud_name, pre_initial_sync_state, initial_sync_state) context, subcloud_name, pre_initial_sync_state, initial_sync_state
)
def subcloud_update_all_initial_state(context, pre_initial_sync_state, def subcloud_update_all_initial_state(
initial_sync_state): context, pre_initial_sync_state, initial_sync_state
):
return IMPL.subcloud_update_all_initial_state( return IMPL.subcloud_update_all_initial_state(
context, pre_initial_sync_state, initial_sync_state) context, pre_initial_sync_state, initial_sync_state
)
def resource_get_by_type_and_master_id(context, resource_type, master_id): def resource_get_by_type_and_master_id(context, resource_type, master_id):
return IMPL.resource_get_by_type_and_master_id( return IMPL.resource_get_by_type_and_master_id(context, resource_type, master_id)
context, resource_type, master_id)
def resource_get_by_id(context, id): def resource_get_by_id(context, id):
@@ -254,10 +266,10 @@ def subcloud_resources_get_by_resource(context, resource_id):
return IMPL.subcloud_resources_get_by_resource(context, resource_id) return IMPL.subcloud_resources_get_by_resource(context, resource_id)
def subcloud_resource_get_by_resource_and_subcloud( def subcloud_resource_get_by_resource_and_subcloud(context, resource_id, subcloud_id):
context, resource_id, subcloud_id):
return IMPL.subcloud_resource_get_by_resource_and_subcloud( return IMPL.subcloud_resource_get_by_resource_and_subcloud(
context, resource_id, subcloud_id) context, resource_id, subcloud_id
)
def subcloud_resources_get_all(context): def subcloud_resources_get_all(context):
@@ -265,13 +277,11 @@ def subcloud_resources_get_all(context):
def subcloud_resource_create(context, subcloud_id, resource_id, values): def subcloud_resource_create(context, subcloud_id, resource_id, values):
return IMPL.subcloud_resource_create(context, return IMPL.subcloud_resource_create(context, subcloud_id, resource_id, values)
subcloud_id, resource_id, values)
def subcloud_resource_update(context, subcloud_resource_id, values): def subcloud_resource_update(context, subcloud_resource_id, values):
return IMPL.subcloud_resource_update(context, return IMPL.subcloud_resource_update(context, subcloud_resource_id, values)
subcloud_resource_id, values)
def subcloud_resource_delete(context, subcloud_resource_id): def subcloud_resource_delete(context, subcloud_resource_id):
@@ -286,10 +296,10 @@ def orch_job_get_all(context, resource_id=None):
return IMPL.orch_job_get_all(context, resource_id=resource_id) return IMPL.orch_job_get_all(context, resource_id=resource_id)
def orch_job_create(context, resource_id, endpoint_type, def orch_job_create(context, resource_id, endpoint_type, operation_type, values):
operation_type, values): return IMPL.orch_job_create(
return IMPL.orch_job_create(context, resource_id, endpoint_type, context, resource_id, endpoint_type, operation_type, values
operation_type, values) )
def orch_job_update(context, orch_job_id, values): def orch_job_update(context, orch_job_id, values):
@@ -312,11 +322,9 @@ def orch_request_get_all(context, orch_job_id=None):
return IMPL.orch_request_get_all(context, orch_job_id=orch_job_id) return IMPL.orch_request_get_all(context, orch_job_id=orch_job_id)
def orch_request_get_by_attrs(context, def orch_request_get_by_attrs(
endpoint_type, context, endpoint_type, resource_type=None, target_region_name=None, states=None
resource_type=None, ):
target_region_name=None,
states=None):
"""Query OrchRequests by attributes. """Query OrchRequests by attributes.
:param context: authorization context :param context: authorization context
@@ -331,12 +339,12 @@ def orch_request_get_by_attrs(context,
endpoint_type, endpoint_type,
resource_type=resource_type, resource_type=resource_type,
target_region_name=target_region_name, target_region_name=target_region_name,
states=states) states=states,
)
def orch_request_create(context, orch_job_id, target_region_name, values): def orch_request_create(context, orch_job_id, target_region_name, values):
return IMPL.orch_request_create(context, orch_job_id, return IMPL.orch_request_create(context, orch_job_id, target_region_name, values)
target_region_name, values)
def orch_request_create_bulk(context, orch_requests): def orch_request_create_bulk(context, orch_requests):
@@ -356,8 +364,7 @@ def orch_request_delete_by_subcloud(context, region_name):
def orch_request_delete_previous_failed_requests(context, delete_timestamp): def orch_request_delete_previous_failed_requests(context, delete_timestamp):
return IMPL.orch_request_delete_previous_failed_requests( return IMPL.orch_request_delete_previous_failed_requests(context, delete_timestamp)
context, delete_timestamp)
# Periodic cleanup # Periodic cleanup
@@ -370,18 +377,17 @@ def subcloud_sync_get(context, subcloud_name, endpoint_type):
def subcloud_sync_update(context, subcloud_name, endpoint_type, values): def subcloud_sync_update(context, subcloud_name, endpoint_type, values):
return IMPL.subcloud_sync_update(context, subcloud_name, endpoint_type, return IMPL.subcloud_sync_update(context, subcloud_name, endpoint_type, values)
values)
def subcloud_sync_update_all(context, management_state, endpoint_type, values): def subcloud_sync_update_all(context, management_state, endpoint_type, values):
return IMPL.subcloud_sync_update_all(context, management_state, endpoint_type, return IMPL.subcloud_sync_update_all(
values) context, management_state, endpoint_type, values
)
def subcloud_sync_create(context, subcloud_name, endpoint_type, values): def subcloud_sync_create(context, subcloud_name, endpoint_type, values):
return IMPL.subcloud_sync_create(context, subcloud_name, endpoint_type, return IMPL.subcloud_sync_create(context, subcloud_name, endpoint_type, values)
values)
def subcloud_sync_delete(context, subcloud_name, endpoint_type): def subcloud_sync_delete(context, subcloud_name, endpoint_type):

File diff suppressed because it is too large Load Diff

View File

@@ -1,5 +1,10 @@
#!/usr/bin/env python #!/usr/bin/env python
# Copyright (c) 2024 Wind River Systems, Inc.
#
# SPDX-License-Identifier: Apache-2.0
#
from migrate.versioning.shell import main from migrate.versioning.shell import main
if __name__ == '__main__': if __name__ == "__main__":
main(debug='False') main(debug="False")

View File

@@ -1,4 +1,4 @@
# Copyright (c) 2017-2018, 2024 Wind River Inc. # Copyright (c) 2017-2018, 2024 Wind River Inc.
# All Rights Reserved. # All Rights Reserved.
# Licensed under the Apache License, Version 2.0 (the "License"); you may # 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 # not use this file except in compliance with the License. You may obtain
@@ -32,9 +32,9 @@ from oslo_config import cfg
import sqlalchemy import sqlalchemy
QUOTA_CLASS_NAME_DEFAULT = 'default' QUOTA_CLASS_NAME_DEFAULT = "default"
CONF = cfg.CONF CONF = cfg.CONF
CONF.import_group('dc_orch_global_limit', 'dcorch.common.config') CONF.import_group("dc_orch_global_limit", "dcorch.common.config")
def upgrade(migrate_engine): def upgrade(migrate_engine):
@@ -42,55 +42,55 @@ def upgrade(migrate_engine):
meta.bind = migrate_engine meta.bind = migrate_engine
quotas = sqlalchemy.Table( quotas = sqlalchemy.Table(
'quotas', meta, "quotas",
sqlalchemy.Column('id', sqlalchemy.Integer, meta,
primary_key=True, nullable=False), sqlalchemy.Column("id", sqlalchemy.Integer, primary_key=True, nullable=False),
sqlalchemy.Column('project_id', sqlalchemy.String(36)), sqlalchemy.Column("project_id", sqlalchemy.String(36)),
sqlalchemy.Column('resource', sqlalchemy.String(255), nullable=False), sqlalchemy.Column("resource", sqlalchemy.String(255), nullable=False),
sqlalchemy.Column('hard_limit', sqlalchemy.Integer, nullable=False), sqlalchemy.Column("hard_limit", sqlalchemy.Integer, nullable=False),
sqlalchemy.Column('capabilities', sqlalchemy.Text), sqlalchemy.Column("capabilities", sqlalchemy.Text),
sqlalchemy.Column('created_at', sqlalchemy.DateTime), sqlalchemy.Column("created_at", sqlalchemy.DateTime),
sqlalchemy.Column('updated_at', sqlalchemy.DateTime), sqlalchemy.Column("updated_at", sqlalchemy.DateTime),
sqlalchemy.Column('deleted_at', sqlalchemy.DateTime), sqlalchemy.Column("deleted_at", sqlalchemy.DateTime),
sqlalchemy.Column('deleted', sqlalchemy.Integer), sqlalchemy.Column("deleted", sqlalchemy.Integer),
mysql_engine='InnoDB', mysql_engine="InnoDB",
mysql_charset='utf8' mysql_charset="utf8",
) )
quota_classes = sqlalchemy.Table( quota_classes = sqlalchemy.Table(
'quota_classes', meta, "quota_classes",
sqlalchemy.Column('id', sqlalchemy.Integer, meta,
primary_key=True, nullable=False), sqlalchemy.Column("id", sqlalchemy.Integer, primary_key=True, nullable=False),
sqlalchemy.Column('class_name', sqlalchemy.String(length=255), sqlalchemy.Column("class_name", sqlalchemy.String(length=255), index=True),
index=True), sqlalchemy.Column("capabilities", sqlalchemy.Text),
sqlalchemy.Column('capabilities', sqlalchemy.Text), sqlalchemy.Column("created_at", sqlalchemy.DateTime),
sqlalchemy.Column('created_at', sqlalchemy.DateTime), sqlalchemy.Column("updated_at", sqlalchemy.DateTime),
sqlalchemy.Column('updated_at', sqlalchemy.DateTime), sqlalchemy.Column("deleted_at", sqlalchemy.DateTime),
sqlalchemy.Column('deleted_at', sqlalchemy.DateTime), sqlalchemy.Column("deleted", sqlalchemy.Integer),
sqlalchemy.Column('deleted', sqlalchemy.Integer), sqlalchemy.Column("resource", sqlalchemy.String(length=255)),
sqlalchemy.Column('resource', sqlalchemy.String(length=255)), sqlalchemy.Column("hard_limit", sqlalchemy.Integer, nullable=True),
sqlalchemy.Column('hard_limit', sqlalchemy.Integer, mysql_engine="InnoDB",
nullable=True), mysql_charset="utf8",
mysql_engine='InnoDB',
mysql_charset='utf8'
) )
service = sqlalchemy.Table( service = sqlalchemy.Table(
'service', meta, "service",
sqlalchemy.Column('id', sqlalchemy.String(36), meta,
primary_key=True, nullable=False), sqlalchemy.Column(
sqlalchemy.Column('host', sqlalchemy.String(length=255)), "id", sqlalchemy.String(36), primary_key=True, nullable=False
sqlalchemy.Column('binary', sqlalchemy.String(length=255)), ),
sqlalchemy.Column('topic', sqlalchemy.String(length=255)), sqlalchemy.Column("host", sqlalchemy.String(length=255)),
sqlalchemy.Column('disabled', sqlalchemy.Boolean, default=False), sqlalchemy.Column("binary", sqlalchemy.String(length=255)),
sqlalchemy.Column('disabled_reason', sqlalchemy.String(length=255)), sqlalchemy.Column("topic", sqlalchemy.String(length=255)),
sqlalchemy.Column('capabilities', sqlalchemy.Text), sqlalchemy.Column("disabled", sqlalchemy.Boolean, default=False),
sqlalchemy.Column('created_at', sqlalchemy.DateTime), sqlalchemy.Column("disabled_reason", sqlalchemy.String(length=255)),
sqlalchemy.Column('updated_at', sqlalchemy.DateTime), sqlalchemy.Column("capabilities", sqlalchemy.Text),
sqlalchemy.Column('deleted_at', sqlalchemy.DateTime), sqlalchemy.Column("created_at", sqlalchemy.DateTime),
sqlalchemy.Column('deleted', sqlalchemy.Integer), sqlalchemy.Column("updated_at", sqlalchemy.DateTime),
mysql_engine='InnoDB', sqlalchemy.Column("deleted_at", sqlalchemy.DateTime),
mysql_charset='utf8' sqlalchemy.Column("deleted", sqlalchemy.Integer),
mysql_engine="InnoDB",
mysql_charset="utf8",
) )
tables = ( tables = (
@@ -108,25 +108,33 @@ def upgrade(migrate_engine):
meta.drop_all(tables=tables[:index]) meta.drop_all(tables=tables[:index])
raise raise
# pylint: disable-next=no-value-for-parameter rows = (
rows = quota_classes.count().where( quota_classes.count() # pylint: disable=no-value-for-parameter
quota_classes.c.class_name == 'default').execute().scalar() .where(quota_classes.c.class_name == "default")
.execute()
.scalar()
)
# Do not add entries if there are already 'default' entries. We don't # Do not add entries if there are already 'default' entries. We don't want to write
# want to write over something the user added. # over something the user added.
if not rows: if not rows:
created_at = datetime.datetime.now() created_at = datetime.datetime.now()
# Set default quota limits # Set default quota limits
qci = quota_classes.insert() # pylint: disable=E1120 qci = quota_classes.insert() # pylint: disable=no-value-for-parameter
for resource, default in CONF.dc_orch_global_limit.items(): for resource, default in CONF.dc_orch_global_limit.items():
qci.execute({'created_at': created_at, qci.execute(
'class_name': QUOTA_CLASS_NAME_DEFAULT, {
'resource': resource[6:], "created_at": created_at,
'hard_limit': default, "class_name": QUOTA_CLASS_NAME_DEFAULT,
'deleted': 0}) "resource": resource[6:],
"hard_limit": default,
"deleted": 0,
}
)
def downgrade(migrate_engine): def downgrade(migrate_engine):
raise NotImplementedError('Database downgrade not supported - ' raise NotImplementedError(
'would drop all tables') "Database downgrade not supported - would drop all tables"
)

View File

@@ -1,4 +1,4 @@
# Copyright (c) 2017-2018 Wind River Inc. # Copyright (c) 2017-2018, 2024 Wind River Inc.
# All Rights Reserved. # All Rights Reserved.
# #
# Licensed under the Apache License, Version 2.0 (the "License"); you may # Licensed under the Apache License, Version 2.0 (the "License"); you may
@@ -21,181 +21,165 @@ def upgrade(migrate_engine):
meta.bind = migrate_engine meta.bind = migrate_engine
subcloud = sqlalchemy.Table( subcloud = sqlalchemy.Table(
'subcloud', meta, "subcloud",
sqlalchemy.Column('id', sqlalchemy.Integer, meta,
primary_key=True, nullable=False), sqlalchemy.Column("id", sqlalchemy.Integer, primary_key=True, nullable=False),
sqlalchemy.Column('uuid', sqlalchemy.String(36), unique=True), sqlalchemy.Column("uuid", sqlalchemy.String(36), unique=True),
sqlalchemy.Column("region_name", sqlalchemy.String(255), unique=True),
sqlalchemy.Column('region_name', sqlalchemy.String(255), unique=True), sqlalchemy.Column("software_version", sqlalchemy.String(255)),
sqlalchemy.Column('software_version', sqlalchemy.String(255)), sqlalchemy.Column("management_state", sqlalchemy.String(64)),
sqlalchemy.Column(
sqlalchemy.Column('management_state', sqlalchemy.String(64)), "availability_status", sqlalchemy.String(64), default="offline"
sqlalchemy.Column('availability_status', sqlalchemy.String(64), ),
default="offline"), sqlalchemy.Column("capabilities", sqlalchemy.Text),
sqlalchemy.Column('capabilities', sqlalchemy.Text), sqlalchemy.Column("created_at", sqlalchemy.DateTime),
sqlalchemy.Column("updated_at", sqlalchemy.DateTime),
sqlalchemy.Column('created_at', sqlalchemy.DateTime), sqlalchemy.Column("deleted_at", sqlalchemy.DateTime),
sqlalchemy.Column('updated_at', sqlalchemy.DateTime), sqlalchemy.Column("deleted", sqlalchemy.Integer),
sqlalchemy.Column('deleted_at', sqlalchemy.DateTime), sqlalchemy.Index("subcloud_region_name_idx", "region_name"),
sqlalchemy.Column('deleted', sqlalchemy.Integer), mysql_engine="InnoDB",
mysql_charset="utf8",
sqlalchemy.Index('subcloud_region_name_idx', 'region_name'),
mysql_engine='InnoDB',
mysql_charset='utf8'
) )
subcloud_alarms = sqlalchemy.Table( subcloud_alarms = sqlalchemy.Table(
'subcloud_alarms', meta, "subcloud_alarms",
sqlalchemy.Column('id', sqlalchemy.Integer, meta,
primary_key=True, nullable=False), sqlalchemy.Column("id", sqlalchemy.Integer, primary_key=True, nullable=False),
sqlalchemy.Column('uuid', sqlalchemy.String(36), unique=True), sqlalchemy.Column("uuid", sqlalchemy.String(36), unique=True),
sqlalchemy.Column("region_name", sqlalchemy.String(255), unique=True),
sqlalchemy.Column('region_name', sqlalchemy.String(255), unique=True), sqlalchemy.Column("critical_alarms", sqlalchemy.Integer),
sqlalchemy.Column('critical_alarms', sqlalchemy.Integer), sqlalchemy.Column("major_alarms", sqlalchemy.Integer),
sqlalchemy.Column('major_alarms', sqlalchemy.Integer), sqlalchemy.Column("minor_alarms", sqlalchemy.Integer),
sqlalchemy.Column('minor_alarms', sqlalchemy.Integer), sqlalchemy.Column("warnings", sqlalchemy.Integer),
sqlalchemy.Column('warnings', sqlalchemy.Integer), sqlalchemy.Column("cloud_status", sqlalchemy.String(64)),
sqlalchemy.Column('cloud_status', sqlalchemy.String(64)), sqlalchemy.Column("capabilities", sqlalchemy.Text),
sqlalchemy.Column('capabilities', sqlalchemy.Text), sqlalchemy.Column("created_at", sqlalchemy.DateTime),
sqlalchemy.Column("updated_at", sqlalchemy.DateTime),
sqlalchemy.Column('created_at', sqlalchemy.DateTime), sqlalchemy.Column("deleted_at", sqlalchemy.DateTime),
sqlalchemy.Column('updated_at', sqlalchemy.DateTime), sqlalchemy.Column("deleted", sqlalchemy.Integer),
sqlalchemy.Column('deleted_at', sqlalchemy.DateTime), sqlalchemy.Index("subcloud_alarm_region_name_idx", "region_name"),
sqlalchemy.Column('deleted', sqlalchemy.Integer), mysql_engine="InnoDB",
mysql_charset="utf8",
sqlalchemy.Index('subcloud_alarm_region_name_idx', 'region_name'),
mysql_engine='InnoDB',
mysql_charset='utf8'
) )
resource = sqlalchemy.Table( resource = sqlalchemy.Table(
'resource', meta, "resource",
sqlalchemy.Column('id', sqlalchemy.Integer, meta,
primary_key=True, nullable=False), sqlalchemy.Column("id", sqlalchemy.Integer, primary_key=True, nullable=False),
sqlalchemy.Column('uuid', sqlalchemy.String(36), unique=True), sqlalchemy.Column("uuid", sqlalchemy.String(36), unique=True),
sqlalchemy.Column("resource_type", sqlalchemy.String(128)),
sqlalchemy.Column('resource_type', sqlalchemy.String(128)), sqlalchemy.Column("master_id", sqlalchemy.String(255)),
sqlalchemy.Column('master_id', sqlalchemy.String(255)), sqlalchemy.Column("created_at", sqlalchemy.DateTime),
sqlalchemy.Column("updated_at", sqlalchemy.DateTime),
sqlalchemy.Column('created_at', sqlalchemy.DateTime), sqlalchemy.Column("deleted_at", sqlalchemy.DateTime),
sqlalchemy.Column('updated_at', sqlalchemy.DateTime), sqlalchemy.Column("deleted", sqlalchemy.Integer),
sqlalchemy.Column('deleted_at', sqlalchemy.DateTime), sqlalchemy.Column("capabilities", sqlalchemy.Text),
sqlalchemy.Column('deleted', sqlalchemy.Integer), sqlalchemy.Index("resource_resource_type_idx", "resource_type"),
sqlalchemy.Column('capabilities', sqlalchemy.Text), sqlalchemy.Index("resource_master_id_idx", "master_id"),
sqlalchemy.Index('resource_resource_type_idx', 'resource_type'),
sqlalchemy.Index('resource_master_id_idx', 'master_id'),
sqlalchemy.UniqueConstraint( sqlalchemy.UniqueConstraint(
'resource_type', 'master_id', 'deleted', "resource_type",
name='uniq_resource0resource_type0master_id0deleted'), "master_id",
"deleted",
mysql_engine='InnoDB', name="uniq_resource0resource_type0master_id0deleted",
mysql_charset='utf8' ),
mysql_engine="InnoDB",
mysql_charset="utf8",
) )
subcloud_resource = sqlalchemy.Table( subcloud_resource = sqlalchemy.Table(
'subcloud_resource', meta, "subcloud_resource",
sqlalchemy.Column('id', sqlalchemy.Integer, meta,
primary_key=True, nullable=False), sqlalchemy.Column("id", sqlalchemy.Integer, primary_key=True, nullable=False),
sqlalchemy.Column('uuid', sqlalchemy.String(36), unique=True), sqlalchemy.Column("uuid", sqlalchemy.String(36), unique=True),
sqlalchemy.Column("subcloud_resource_id", sqlalchemy.String(255)),
sqlalchemy.Column('subcloud_resource_id', sqlalchemy.String(255)),
# Could have also gotten this from subcloud.region_name # Could have also gotten this from subcloud.region_name
sqlalchemy.Column('subcloud_name', sqlalchemy.String(255)), sqlalchemy.Column("subcloud_name", sqlalchemy.String(255)),
# Is this resource managed or unmanaged # Is this resource managed or unmanaged
sqlalchemy.Column('shared_config_state', sqlalchemy.String(64), sqlalchemy.Column(
default="managed"), "shared_config_state", sqlalchemy.String(64), default="managed"
sqlalchemy.Column('capabilities', sqlalchemy.Text), ),
sqlalchemy.Column("capabilities", sqlalchemy.Text),
sqlalchemy.Column('resource_id', sqlalchemy.Integer, sqlalchemy.Column(
sqlalchemy.ForeignKey('resource.id', "resource_id",
ondelete='CASCADE')), sqlalchemy.Integer,
sqlalchemy.ForeignKey("resource.id", ondelete="CASCADE"),
),
# primary_key=True), # primary_key=True),
sqlalchemy.Column('subcloud_id', sqlalchemy.Integer, sqlalchemy.Column(
sqlalchemy.ForeignKey('subcloud.id', "subcloud_id",
ondelete='CASCADE')), sqlalchemy.Integer,
sqlalchemy.ForeignKey("subcloud.id", ondelete="CASCADE"),
),
# primary_key=True), # primary_key=True),
sqlalchemy.Column("created_at", sqlalchemy.DateTime),
sqlalchemy.Column('created_at', sqlalchemy.DateTime), sqlalchemy.Column("updated_at", sqlalchemy.DateTime),
sqlalchemy.Column('updated_at', sqlalchemy.DateTime), sqlalchemy.Column("deleted_at", sqlalchemy.DateTime),
sqlalchemy.Column('deleted_at', sqlalchemy.DateTime), sqlalchemy.Column("deleted", sqlalchemy.Integer),
sqlalchemy.Column('deleted', sqlalchemy.Integer), sqlalchemy.Index("subcloud_resource_resource_id_idx", "resource_id"),
sqlalchemy.Index('subcloud_resource_resource_id_idx', 'resource_id'),
sqlalchemy.UniqueConstraint( sqlalchemy.UniqueConstraint(
'resource_id', 'subcloud_id', "resource_id",
name='uniq_subcloud_resource0resource_id0subcloud_id'), "subcloud_id",
name="uniq_subcloud_resource0resource_id0subcloud_id",
mysql_engine='InnoDB', ),
mysql_charset='utf8' mysql_engine="InnoDB",
mysql_charset="utf8",
) )
orch_job = sqlalchemy.Table( orch_job = sqlalchemy.Table(
'orch_job', meta, "orch_job",
sqlalchemy.Column('id', sqlalchemy.Integer, meta,
primary_key=True, nullable=False), sqlalchemy.Column("id", sqlalchemy.Integer, primary_key=True, nullable=False),
sqlalchemy.Column('uuid', sqlalchemy.String(36), unique=True), sqlalchemy.Column("uuid", sqlalchemy.String(36), unique=True),
sqlalchemy.Column("user_id", sqlalchemy.String(128)),
sqlalchemy.Column('user_id', sqlalchemy.String(128)), sqlalchemy.Column("project_id", sqlalchemy.String(128)),
sqlalchemy.Column('project_id', sqlalchemy.String(128)),
# filledin by x_orch_api # filledin by x_orch_api
sqlalchemy.Column('endpoint_type', sqlalchemy.String(255), sqlalchemy.Column("endpoint_type", sqlalchemy.String(255), nullable=False),
nullable=False),
# sqlalchemy.Column('resource_type', sqlalchemy.String(255), # sqlalchemy.Column('resource_type', sqlalchemy.String(255),
# nullable=False), # nullable=False),
sqlalchemy.Column("source_resource_id", sqlalchemy.String(255)),
sqlalchemy.Column('source_resource_id', sqlalchemy.String(255)),
# http type: e.g. post/put/patch/delete # http type: e.g. post/put/patch/delete
sqlalchemy.Column('operation_type', sqlalchemy.String(255)), sqlalchemy.Column("operation_type", sqlalchemy.String(255)),
sqlalchemy.Column(
sqlalchemy.Column('resource_id', sqlalchemy.Integer, "resource_id", sqlalchemy.Integer, sqlalchemy.ForeignKey("resource.id")
sqlalchemy.ForeignKey('resource.id')), ),
sqlalchemy.Column("resource_info", sqlalchemy.Text),
sqlalchemy.Column('resource_info', sqlalchemy.Text), sqlalchemy.Column("capabilities", sqlalchemy.Text),
sqlalchemy.Column('capabilities', sqlalchemy.Text), sqlalchemy.Column("created_at", sqlalchemy.DateTime),
sqlalchemy.Column("updated_at", sqlalchemy.DateTime),
sqlalchemy.Column('created_at', sqlalchemy.DateTime), sqlalchemy.Column("deleted_at", sqlalchemy.DateTime),
sqlalchemy.Column('updated_at', sqlalchemy.DateTime), sqlalchemy.Column("deleted", sqlalchemy.Integer),
sqlalchemy.Column('deleted_at', sqlalchemy.DateTime), sqlalchemy.Index("orch_job_endpoint_type_idx", "endpoint_type"),
sqlalchemy.Column('deleted', sqlalchemy.Integer),
sqlalchemy.Index('orch_job_endpoint_type_idx', 'endpoint_type'),
# sqlalchemy.Index('orch_job_resource_type_idx', 'resource_type'), # sqlalchemy.Index('orch_job_resource_type_idx', 'resource_type'),
mysql_engine="InnoDB",
mysql_engine='InnoDB', mysql_charset="utf8",
mysql_charset='utf8'
) )
orch_request = sqlalchemy.Table( orch_request = sqlalchemy.Table(
'orch_request', meta, "orch_request",
sqlalchemy.Column('id', sqlalchemy.Integer, meta,
primary_key=True, nullable=False), sqlalchemy.Column("id", sqlalchemy.Integer, primary_key=True, nullable=False),
sqlalchemy.Column('uuid', sqlalchemy.String(36), unique=True), sqlalchemy.Column("uuid", sqlalchemy.String(36), unique=True),
sqlalchemy.Column("state", sqlalchemy.String(128)),
sqlalchemy.Column('state', sqlalchemy.String(128)), sqlalchemy.Column("try_count", sqlalchemy.Integer, default=0),
sqlalchemy.Column('try_count', sqlalchemy.Integer, default=0), sqlalchemy.Column("api_version", sqlalchemy.String(128)),
sqlalchemy.Column('api_version', sqlalchemy.String(128)), sqlalchemy.Column("target_region_name", sqlalchemy.String(255)),
sqlalchemy.Column('target_region_name', sqlalchemy.String(255)), sqlalchemy.Column("capabilities", sqlalchemy.Text),
sqlalchemy.Column('capabilities', sqlalchemy.Text), sqlalchemy.Column(
"orch_job_id", sqlalchemy.Integer, sqlalchemy.ForeignKey("orch_job.id")
sqlalchemy.Column('orch_job_id', sqlalchemy.Integer, ),
sqlalchemy.ForeignKey('orch_job.id')), sqlalchemy.Column("created_at", sqlalchemy.DateTime),
sqlalchemy.Column("updated_at", sqlalchemy.DateTime),
sqlalchemy.Column('created_at', sqlalchemy.DateTime), sqlalchemy.Column("deleted_at", sqlalchemy.DateTime),
sqlalchemy.Column('updated_at', sqlalchemy.DateTime), sqlalchemy.Column("deleted", sqlalchemy.Integer),
sqlalchemy.Column('deleted_at', sqlalchemy.DateTime), sqlalchemy.Index("orch_request_idx", "state"),
sqlalchemy.Column('deleted', sqlalchemy.Integer),
sqlalchemy.Index('orch_request_idx', 'state'),
sqlalchemy.UniqueConstraint( sqlalchemy.UniqueConstraint(
'target_region_name', 'orch_job_id', 'deleted', "target_region_name",
name='uniq_orchreq0target_region_name0orch_job_id0deleted'), "orch_job_id",
"deleted",
mysql_engine='InnoDB', name="uniq_orchreq0target_region_name0orch_job_id0deleted",
mysql_charset='utf8' ),
mysql_engine="InnoDB",
mysql_charset="utf8",
) )
tables = ( tables = (
@@ -204,7 +188,7 @@ def upgrade(migrate_engine):
resource, resource,
subcloud_resource, subcloud_resource,
orch_job, orch_job,
orch_request orch_request,
) )
for index, table in enumerate(tables): for index, table in enumerate(tables):
@@ -218,5 +202,6 @@ def upgrade(migrate_engine):
def downgrade(migrate_engine): def downgrade(migrate_engine):
raise NotImplementedError('Database downgrade not supported - ' raise NotImplementedError(
'would drop all tables') "Database downgrade not supported - would drop all tables"
)

View File

@@ -1,4 +1,4 @@
# Copyright (c) 2020 Wind River Inc. # Copyright (c) 2020, 2024 Wind River Inc.
# All Rights Reserved. # All Rights Reserved.
# #
# Licensed under the Apache License, Version 2.0 (the "License"); you may # Licensed under the Apache License, Version 2.0 (the "License"); you may
@@ -20,14 +20,15 @@ def upgrade(migrate_engine):
meta = sqlalchemy.MetaData() meta = sqlalchemy.MetaData()
meta.bind = migrate_engine meta.bind = migrate_engine
subcloud = sqlalchemy.Table('subcloud', meta, autoload=True) subcloud = sqlalchemy.Table("subcloud", meta, autoload=True)
# Add the initial_sync_state attribute # Add the initial_sync_state attribute
subcloud.create_column(sqlalchemy.Column('initial_sync_state', subcloud.create_column(
sqlalchemy.String(64), sqlalchemy.Column("initial_sync_state", sqlalchemy.String(64), default="none")
default="none")) )
def downgrade(migrate_engine): def downgrade(migrate_engine):
raise NotImplementedError('Database downgrade not supported - ' raise NotImplementedError(
'would drop all tables') "Database downgrade not supported - would drop all tables"
)

View File

@@ -1,4 +1,4 @@
# Copyright (c) 2020-2021 Wind River Systems, Inc. # Copyright (c) 2020-2021, 2024 Wind River Systems, Inc.
# Licensed under the Apache License, Version 2.0 (the "License"); you may # 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 # not use this file except in compliance with the License. You may obtain
# a copy of the License at # a copy of the License at
@@ -19,10 +19,11 @@ def upgrade(migrate_engine):
meta = sqlalchemy.MetaData() meta = sqlalchemy.MetaData()
meta.bind = migrate_engine meta.bind = migrate_engine
subcloud_alarms = sqlalchemy.Table('subcloud_alarms', meta, autoload=True) subcloud_alarms = sqlalchemy.Table("subcloud_alarms", meta, autoload=True)
subcloud_alarms.drop() subcloud_alarms.drop()
def downgrade(migrate_engine): def downgrade(migrate_engine):
raise NotImplementedError('Database downgrade not supported - ' raise NotImplementedError(
'would drop all tables') "Database downgrade not supported - would drop all tables"
)

View File

@@ -1,4 +1,4 @@
# Copyright (c) 2020 Wind River Inc. # Copyright (c) 2020, 2024 Wind River Inc.
# All Rights Reserved. # All Rights Reserved.
# #
# Licensed under the Apache License, Version 2.0 (the "License"); you may # Licensed under the Apache License, Version 2.0 (the "License"); you may
@@ -15,19 +15,20 @@
from sqlalchemy import MetaData, Table, Index from sqlalchemy import MetaData, Table, Index
ORCH_JOB_ID_INDEX_NAME = 'orch_request_orch_job_id_idx' ORCH_JOB_ID_INDEX_NAME = "orch_request_orch_job_id_idx"
UPDATED_AT_STATE_INDEX_NAME = 'orch_request_updated_at_state_idx' UPDATED_AT_STATE_INDEX_NAME = "orch_request_updated_at_state_idx"
DELETED_AT_INDEX_NAME = 'orch_request_deleted_at_idx' DELETED_AT_INDEX_NAME = "orch_request_deleted_at_idx"
def upgrade(migrate_engine): def upgrade(migrate_engine):
meta = MetaData() meta = MetaData()
meta.bind = migrate_engine meta.bind = migrate_engine
orch_request = Table('orch_request', meta, autoload=True) orch_request = Table("orch_request", meta, autoload=True)
index = Index(UPDATED_AT_STATE_INDEX_NAME, index = Index(
orch_request.c.updated_at, orch_request.c.state) UPDATED_AT_STATE_INDEX_NAME, orch_request.c.updated_at, orch_request.c.state
)
index.create(migrate_engine) index.create(migrate_engine)
index = Index(DELETED_AT_INDEX_NAME, orch_request.c.deleted_at) index = Index(DELETED_AT_INDEX_NAME, orch_request.c.deleted_at)
@@ -38,5 +39,6 @@ def upgrade(migrate_engine):
def downgrade(migrate_engine): def downgrade(migrate_engine):
raise NotImplementedError('Database downgrade not supported - ' raise NotImplementedError(
'would drop all tables') "Database downgrade not supported - would drop all tables"
)

View File

@@ -1,4 +1,4 @@
# Copyright (c) 2020 Wind River Inc. # Copyright (c) 2020, 2024 Wind River Inc.
# All Rights Reserved. # All Rights Reserved.
# Licensed under the Apache License, Version 2.0 (the "License"); you may # 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 # not use this file except in compliance with the License. You may obtain
@@ -33,25 +33,26 @@ def upgrade(migrate_engine):
meta.bind = migrate_engine meta.bind = migrate_engine
sync_lock = sqlalchemy.Table( sync_lock = sqlalchemy.Table(
'sync_lock', meta, "sync_lock",
sqlalchemy.Column('id', sqlalchemy.Integer, meta,
primary_key=True, nullable=False), sqlalchemy.Column("id", sqlalchemy.Integer, primary_key=True, nullable=False),
sqlalchemy.Column('subcloud_name', sqlalchemy.String(length=255), sqlalchemy.Column(
nullable=False), "subcloud_name", sqlalchemy.String(length=255), nullable=False
sqlalchemy.Column('endpoint_type', sqlalchemy.String(255)), ),
sqlalchemy.Column('engine_id', sqlalchemy.String(length=36), sqlalchemy.Column("endpoint_type", sqlalchemy.String(255)),
nullable=False), sqlalchemy.Column("engine_id", sqlalchemy.String(length=36), nullable=False),
sqlalchemy.Column('action', sqlalchemy.String(64)), sqlalchemy.Column("action", sqlalchemy.String(64)),
sqlalchemy.Column('created_at', sqlalchemy.DateTime), sqlalchemy.Column("created_at", sqlalchemy.DateTime),
sqlalchemy.Column('updated_at', sqlalchemy.DateTime), sqlalchemy.Column("updated_at", sqlalchemy.DateTime),
sqlalchemy.Column('deleted_at', sqlalchemy.DateTime), sqlalchemy.Column("deleted_at", sqlalchemy.DateTime),
sqlalchemy.Column('deleted', sqlalchemy.Integer), sqlalchemy.Column("deleted", sqlalchemy.Integer),
sqlalchemy.UniqueConstraint( sqlalchemy.UniqueConstraint(
'subcloud_name', 'endpoint_type', 'action', "subcloud_name",
name='uniq_sync_lock0subcloud_name0endpoint_type0action'), "endpoint_type",
"action",
mysql_engine='InnoDB', name="uniq_sync_lock0subcloud_name0endpoint_type0action",
mysql_charset='utf8' ),
mysql_engine="InnoDB",
mysql_charset="utf8",
) )
sync_lock.create() sync_lock.create()

View File

@@ -1,4 +1,4 @@
# Copyright (c) 2020 Wind River Inc. # Copyright (c) 2020, 2024 Wind River Inc.
# All Rights Reserved. # All Rights Reserved.
# #
# Licensed under the Apache License, Version 2.0 (the "License"); you may # Licensed under the Apache License, Version 2.0 (the "License"); you may
@@ -21,40 +21,41 @@ def upgrade(migrate_engine):
meta = sqlalchemy.MetaData() meta = sqlalchemy.MetaData()
meta.bind = migrate_engine meta.bind = migrate_engine
sqlalchemy.Table('subcloud', meta, autoload=True) sqlalchemy.Table("subcloud", meta, autoload=True)
subcloud_sync = sqlalchemy.Table( subcloud_sync = sqlalchemy.Table(
'subcloud_sync', meta, "subcloud_sync",
sqlalchemy.Column('id', sqlalchemy.Integer, meta,
primary_key=True, nullable=False), sqlalchemy.Column("id", sqlalchemy.Integer, primary_key=True, nullable=False),
sqlalchemy.Column('subcloud_id', sqlalchemy.Integer, sqlalchemy.Column(
sqlalchemy.ForeignKey('subcloud.id', "subcloud_id",
ondelete='CASCADE')), sqlalchemy.Integer,
sqlalchemy.Column('subcloud_name', sqlalchemy.String(255)), sqlalchemy.ForeignKey("subcloud.id", ondelete="CASCADE"),
sqlalchemy.Column('endpoint_type', sqlalchemy.String(255), ),
default="none"), sqlalchemy.Column("subcloud_name", sqlalchemy.String(255)),
sqlalchemy.Column('sync_request', sqlalchemy.String(64), sqlalchemy.Column("endpoint_type", sqlalchemy.String(255), default="none"),
default="none"), sqlalchemy.Column("sync_request", sqlalchemy.String(64), default="none"),
sqlalchemy.Column('sync_status_reported', sqlalchemy.String(64), sqlalchemy.Column(
default="none"), "sync_status_reported", sqlalchemy.String(64), default="none"
sqlalchemy.Column('sync_status_report_time', sqlalchemy.DateTime), ),
sqlalchemy.Column('audit_status', sqlalchemy.String(64), sqlalchemy.Column("sync_status_report_time", sqlalchemy.DateTime),
default="none"), sqlalchemy.Column("audit_status", sqlalchemy.String(64), default="none"),
sqlalchemy.Column('last_audit_time', sqlalchemy.DateTime), sqlalchemy.Column("last_audit_time", sqlalchemy.DateTime),
sqlalchemy.Column("created_at", sqlalchemy.DateTime),
sqlalchemy.Column('created_at', sqlalchemy.DateTime), sqlalchemy.Column("updated_at", sqlalchemy.DateTime),
sqlalchemy.Column('updated_at', sqlalchemy.DateTime), sqlalchemy.Column("deleted_at", sqlalchemy.DateTime),
sqlalchemy.Column('deleted_at', sqlalchemy.DateTime), sqlalchemy.Column("deleted", sqlalchemy.Integer),
sqlalchemy.Column('deleted', sqlalchemy.Integer), sqlalchemy.Index(
"subcloud_sync_subcloud_name_endpoint_type_idx",
sqlalchemy.Index('subcloud_sync_subcloud_name_endpoint_type_idx', "subcloud_name",
'subcloud_name', "endpoint_type",
'endpoint_type'), ),
sqlalchemy.UniqueConstraint( sqlalchemy.UniqueConstraint(
'subcloud_name', 'endpoint_type', "subcloud_name",
name='uniq_subcloud_sync0subcloud_name0endpoint_type'), "endpoint_type",
name="uniq_subcloud_sync0subcloud_name0endpoint_type",
mysql_engine='InnoDB', ),
mysql_charset='utf8' mysql_engine="InnoDB",
mysql_charset="utf8",
) )
subcloud_sync.create() subcloud_sync.create()

View File

@@ -11,9 +11,9 @@ def upgrade(migrate_engine):
meta = sqlalchemy.MetaData() meta = sqlalchemy.MetaData()
meta.bind = migrate_engine meta.bind = migrate_engine
sync_lock = sqlalchemy.Table('sync_lock', meta, autoload=True) sync_lock = sqlalchemy.Table("sync_lock", meta, autoload=True)
sync_lock.drop() sync_lock.drop()
def downgrade(migrate_engine): def downgrade(migrate_engine):
raise NotImplementedError('Database downgrade not supported.') raise NotImplementedError("Database downgrade not supported.")

View File

@@ -1,4 +1,5 @@
# Copyright (c) 2015 Ericsson AB. # Copyright (c) 2015 Ericsson AB.
# Copyright (c) 2024 Wind River Systems, Inc.
# All Rights Reserved. # All Rights Reserved.
# #
# Licensed under the Apache License, Version 2.0 (the "License"); you may # Licensed under the Apache License, Version 2.0 (the "License"); you may
@@ -22,19 +23,15 @@ INIT_VERSION = 0
def db_sync(engine, version=None): def db_sync(engine, version=None):
path = os.path.join(os.path.abspath(os.path.dirname(__file__)), path = os.path.join(os.path.abspath(os.path.dirname(__file__)), "migrate_repo")
'migrate_repo') return oslo_migration.db_sync(engine, path, version, init_version=INIT_VERSION)
return oslo_migration.db_sync(engine, path, version,
init_version=INIT_VERSION)
def db_version(engine): def db_version(engine):
path = os.path.join(os.path.abspath(os.path.dirname(__file__)), path = os.path.join(os.path.abspath(os.path.dirname(__file__)), "migrate_repo")
'migrate_repo')
return oslo_migration.db_version(engine, path, INIT_VERSION) return oslo_migration.db_version(engine, path, INIT_VERSION)
def db_version_control(engine, version=None): def db_version_control(engine, version=None):
path = os.path.join(os.path.abspath(os.path.dirname(__file__)), path = os.path.join(os.path.abspath(os.path.dirname(__file__)), "migrate_repo")
'migrate_repo')
return oslo_migration.db_version_control(engine, path, version) return oslo_migration.db_version_control(engine, path, version)

View File

@@ -21,8 +21,7 @@ import json
from oslo_db.sqlalchemy import models from oslo_db.sqlalchemy import models
from sqlalchemy.orm import session as orm_session from sqlalchemy.orm import session as orm_session
from sqlalchemy import (Column, Integer, String, Boolean, Index, schema, from sqlalchemy import Column, Integer, String, Boolean, Index, schema, DateTime
DateTime)
from sqlalchemy.ext.declarative import declarative_base from sqlalchemy.ext.declarative import declarative_base
from sqlalchemy import ForeignKey, UniqueConstraint from sqlalchemy import ForeignKey, UniqueConstraint
from sqlalchemy.types import TypeDecorator, VARCHAR from sqlalchemy.types import TypeDecorator, VARCHAR
@@ -56,12 +55,10 @@ class JSONEncodedDict(TypeDecorator):
return value return value
class OrchestratorBase(models.ModelBase, class OrchestratorBase(models.ModelBase, models.SoftDeleteMixin, models.TimestampMixin):
models.SoftDeleteMixin,
models.TimestampMixin):
"""Base class for Orchestrator Models.""" """Base class for Orchestrator Models."""
__table_args__ = {'mysql_engine': 'InnoDB'} __table_args__ = {"mysql_engine": "InnoDB"}
def expire(self, session=None, attrs=None): def expire(self, session=None, attrs=None):
if not session: if not session:
@@ -99,12 +96,16 @@ class Quota(BASE, OrchestratorBase):
Null, then the resource is unlimited. Null, then the resource is unlimited.
""" """
__tablename__ = 'quotas' __tablename__ = "quotas"
__table_args__ = ( __table_args__ = (
schema.UniqueConstraint("project_id", "resource", "deleted", schema.UniqueConstraint(
name="uniq_quotas0project_id0resource0deleted" "project_id",
),) "resource",
"deleted",
name="uniq_quotas0project_id0resource0deleted",
),
)
id = Column(Integer, primary_key=True) id = Column(Integer, primary_key=True)
@@ -139,11 +140,11 @@ class QuotaClass(BASE, OrchestratorBase):
class Service(BASE, OrchestratorBase): class Service(BASE, OrchestratorBase):
""""Orchestrator service engine registry""" """Orchestrator service engine registry"""
__tablename__ = 'service' __tablename__ = "service"
id = Column('id', String(36), primary_key=True, nullable=False) id = Column("id", String(36), primary_key=True, nullable=False)
host = Column(String(255)) host = Column(String(255))
@@ -162,54 +163,59 @@ class Service(BASE, OrchestratorBase):
class Subcloud(BASE, OrchestratorBase): class Subcloud(BASE, OrchestratorBase):
"""Represents a Distributed Cloud subcloud""" """Represents a Distributed Cloud subcloud"""
__tablename__ = 'subcloud' __tablename__ = "subcloud"
__table_args__ = ( __table_args__ = (Index("subcloud_region_name_idx", "region_name"),)
Index('subcloud_region_name_idx', 'region_name'),
)
id = Column(Integer, primary_key=True, nullable=False, autoincrement=True) id = Column(Integer, primary_key=True, nullable=False, autoincrement=True)
uuid = Column(String(36), unique=True) uuid = Column(String(36), unique=True)
region_name = Column('region_name', String(255), unique=True) # keystone region_name = Column("region_name", String(255), unique=True) # keystone
software_version = Column('software_version', String(255)) software_version = Column("software_version", String(255))
# dc manager updates the management and availability # dc manager updates the management and availability
# default management_state is None; could be set to 'deleting' # default management_state is None; could be set to 'deleting'
management_state = Column('management_state', String(64)) management_state = Column("management_state", String(64))
availability_status = Column('availability_status', String(64), availability_status = Column(
default=dccommon_consts.AVAILABILITY_OFFLINE) "availability_status", String(64), default=dccommon_consts.AVAILABILITY_OFFLINE
)
capabilities = Column(JSONEncodedDict) capabilities = Column(JSONEncodedDict)
initial_sync_state = Column('initial_sync_state', String(64), initial_sync_state = Column(
default=consts.INITIAL_SYNC_STATE_NONE) "initial_sync_state", String(64), default=consts.INITIAL_SYNC_STATE_NONE
management_ip = Column('management_ip', String(64)) )
management_ip = Column("management_ip", String(64))
class Resource(BASE, OrchestratorBase): class Resource(BASE, OrchestratorBase):
"""Represents a Distributed Cloud Orchestrator Resource""" """Represents a Distributed Cloud Orchestrator Resource"""
__tablename__ = 'resource' __tablename__ = "resource"
__table_args__ = ( __table_args__ = (
Index('resource_resource_type_idx', 'resource_type'), Index("resource_resource_type_idx", "resource_type"),
Index('resource_master_id_idx', 'master_id'), Index("resource_master_id_idx", "master_id"),
UniqueConstraint( UniqueConstraint(
'resource_type', 'master_id', 'deleted', "resource_type",
name='uniq_resource0resource_type0master_id0deleted'), "master_id",
"deleted",
name="uniq_resource0resource_type0master_id0deleted",
),
) )
id = Column(Integer, primary_key=True, nullable=False, autoincrement=True) id = Column(Integer, primary_key=True, nullable=False, autoincrement=True)
uuid = Column(String(36), unique=True) uuid = Column(String(36), unique=True)
capabilities = Column(JSONEncodedDict) capabilities = Column(JSONEncodedDict)
resource_type = Column(String(128)) # e.g. quota_x,flavor_extra_spec,dns.. resource_type = Column(String(128)) # e.g. quota_x,flavor_extra_spec,dns..
master_id = Column(String(255)) # id/uuid of resource in central region master_id = Column(String(255)) # id/uuid of resource in central region
class SubcloudResource(BASE, OrchestratorBase): class SubcloudResource(BASE, OrchestratorBase):
"""Represents a Distributed Cloud Orchestrator Subcloud Resource""" """Represents a Distributed Cloud Orchestrator Subcloud Resource"""
__tablename__ = 'subcloud_resource' __tablename__ = "subcloud_resource"
__table_args__ = ( __table_args__ = (
Index('subcloud_resource_resource_id_idx', 'resource_id'), Index("subcloud_resource_resource_id_idx", "resource_id"),
UniqueConstraint( UniqueConstraint(
'resource_id', 'subcloud_id', "resource_id",
name='uniq_subcloud_resource0resource_id0subcloud_id'), "subcloud_id",
name="uniq_subcloud_resource0resource_id0subcloud_id",
),
) )
id = Column(Integer, primary_key=True, nullable=False, autoincrement=True) id = Column(Integer, primary_key=True, nullable=False, autoincrement=True)
@@ -218,18 +224,19 @@ class SubcloudResource(BASE, OrchestratorBase):
# Could get subcloud_name (or target_region) from subcloud.region_name # Could get subcloud_name (or target_region) from subcloud.region_name
# subcloud_name = Column('subcloud_name', String(255)) # subcloud_name = Column('subcloud_name', String(255))
# Is this resource managed or unmanaged by orchestrator for some subcloud # Is this resource managed or unmanaged by orchestrator for some subcloud
shared_config_state = Column('shared_config_state', String(255), shared_config_state = Column("shared_config_state", String(255), default="managed")
default="managed")
capabilities = Column(JSONEncodedDict) capabilities = Column(JSONEncodedDict)
subcloud_resource_id = Column(String(255)) # usually uuid, sometimes id subcloud_resource_id = Column(String(255)) # usually uuid, sometimes id
# if either resource_id or subcloud_id is set as primary key, id does not # if either resource_id or subcloud_id is set as primary key, id does not
# autoincrement # autoincrement
resource_id = Column('resource_id', Integer, resource_id = Column(
ForeignKey('resource.id', ondelete='CASCADE')) "resource_id", Integer, ForeignKey("resource.id", ondelete="CASCADE")
)
subcloud_id = Column('subcloud_id', Integer, subcloud_id = Column(
ForeignKey('subcloud.id', ondelete='CASCADE')) "subcloud_id", Integer, ForeignKey("subcloud.id", ondelete="CASCADE")
)
# todo: we shouldn't allow more than one row to have the same # todo: we shouldn't allow more than one row to have the same
# resource_id/subcloud_id tuple # resource_id/subcloud_id tuple
@@ -237,16 +244,14 @@ class SubcloudResource(BASE, OrchestratorBase):
class OrchJob(BASE, OrchestratorBase): class OrchJob(BASE, OrchestratorBase):
"""Orchestrator Job registry""" """Orchestrator Job registry"""
__tablename__ = 'orch_job' __tablename__ = "orch_job"
__table_args__ = ( __table_args__ = (Index("orch_job_endpoint_type_idx", "endpoint_type"),)
Index('orch_job_endpoint_type_idx', 'endpoint_type'),
)
id = Column(Integer, primary_key=True, nullable=False, autoincrement=True) id = Column(Integer, primary_key=True, nullable=False, autoincrement=True)
uuid = Column(String(36), unique=True) uuid = Column(String(36), unique=True)
user_id = Column('user_id', String(128)) user_id = Column("user_id", String(128))
project_id = Column('project_id', String(128)) project_id = Column("project_id", String(128))
# Filled in by x_orch_api e.g. platform, volumev2, compute, network # Filled in by x_orch_api e.g. platform, volumev2, compute, network
endpoint_type = Column(String(255), nullable=False) endpoint_type = Column(String(255), nullable=False)
@@ -256,8 +261,9 @@ class OrchJob(BASE, OrchestratorBase):
operation_type = Column(String(255)) # http type: post/put/patch/delete operation_type = Column(String(255)) # http type: post/put/patch/delete
capabilities = Column(JSONEncodedDict) capabilities = Column(JSONEncodedDict)
resource_id = Column('resource_id', Integer, resource_id = Column(
ForeignKey('resource.id')) # nullable=False? "resource_id", Integer, ForeignKey("resource.id")
) # nullable=False?
# resource_info cannot be derived from resource.master_values # resource_info cannot be derived from resource.master_values
# Represents resource info for a specific API call. In case of update, it # Represents resource info for a specific API call. In case of update, it
@@ -267,17 +273,20 @@ class OrchJob(BASE, OrchestratorBase):
# formatted dict. The exact contents will vary depending on resource. # formatted dict. The exact contents will vary depending on resource.
resource_info = Column(String()) resource_info = Column(String())
orchrequests = relationship('OrchRequest', backref='orch_job') orchrequests = relationship("OrchRequest", backref="orch_job")
# orch_status can be derived from the underlying OrchRequests state # orch_status can be derived from the underlying OrchRequests state
class OrchRequest(BASE, OrchestratorBase): class OrchRequest(BASE, OrchestratorBase):
__tablename__ = 'orch_request' __tablename__ = "orch_request"
__table_args__ = ( __table_args__ = (
Index('orch_request_state_idx', 'state'), Index("orch_request_state_idx", "state"),
UniqueConstraint( UniqueConstraint(
'target_region_name', 'orch_job_id', 'deleted', "target_region_name",
name='uniq_orchreq0target_region_name0orch_job_id0deleted'), "orch_job_id",
"deleted",
name="uniq_orchreq0target_region_name0orch_job_id0deleted",
),
) )
id = Column(Integer, primary_key=True, nullable=False, autoincrement=True) id = Column(Integer, primary_key=True, nullable=False, autoincrement=True)
@@ -292,20 +301,20 @@ class OrchRequest(BASE, OrchestratorBase):
target_region_name = Column(String(255)) target_region_name = Column(String(255))
capabilities = Column(JSONEncodedDict) capabilities = Column(JSONEncodedDict)
orch_job_id = Column('orch_job_id', Integer, orch_job_id = Column(
ForeignKey('orch_job.id'), primary_key=True) "orch_job_id", Integer, ForeignKey("orch_job.id"), primary_key=True
)
class SubcloudSync(BASE, OrchestratorBase): class SubcloudSync(BASE, OrchestratorBase):
"""Store subcloud sync information to allow coordination of dcorch workload """Store subcloud sync information to allow coordination of dcorch workload"""
""" __tablename__ = "subcloud_sync"
__tablename__ = 'subcloud_sync'
id = Column(Integer, primary_key=True) id = Column(Integer, primary_key=True)
subcloud_id = Column('subcloud_id', Integer, subcloud_id = Column(
ForeignKey('subcloud.id', ondelete='CASCADE')) "subcloud_id", Integer, ForeignKey("subcloud.id", ondelete="CASCADE")
)
subcloud_name = Column(String(255), nullable=False) subcloud_name = Column(String(255), nullable=False)
endpoint_type = Column(String(255), default="none") endpoint_type = Column(String(255), default="none")
sync_request = Column(String(64), default=consts.SYNC_STATUS_NONE) sync_request = Column(String(64), default=consts.SYNC_STATUS_NONE)

View File

@@ -1,5 +1,5 @@
# Copyright (c) 2015 Ericsson AB. # Copyright (c) 2015 Ericsson AB.
# Copyright (c) 2020-2022 Wind River Systems, Inc. # Copyright (c) 2020-2022, 2024 Wind River Systems, Inc.
# All Rights Reserved. # All Rights Reserved.
# #
# Licensed under the Apache License, Version 2.0 (the "License"); you may # Licensed under the Apache License, Version 2.0 (the "License"); you may
@@ -46,8 +46,8 @@ class LazyPluggable(object):
return getattr(backend, key) return getattr(backend, key)
IMPL = LazyPluggable('backend', sqlalchemy='dcorch.db.sqlalchemy.api') IMPL = LazyPluggable("backend", sqlalchemy="dcorch.db.sqlalchemy.api")
def purge_deleted(age, granularity='days'): def purge_deleted(age, granularity="days"):
IMPL.purge_deleted(age, granularity) IMPL.purge_deleted(age, granularity)

View File

@@ -27,6 +27,7 @@ formatted_modules = [
"dcdbsync", "dcdbsync",
"dcorch/api", "dcorch/api",
"dcorch/common", "dcorch/common",
"dcorch/db",
] ]