5e3b37aac8
In this commit we added new murano service called murano-cfapi. It's Cloud Foundry Service Broker API implementation for OpenStack. * add new entrypoint for murano-cfapi * add provision/deprovision operations for Cloud Foundry. partial-implement: bp cloudfoundry-api-support Change-Id: I5cdb612774f5e46ec7fc787f961e5c7e16ed8501
92 lines
3.1 KiB
Python
92 lines
3.1 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.
|
|
|
|
from oslo_db import exception
|
|
import sqlalchemy
|
|
|
|
from murano.db import models
|
|
from murano.db import session as db_session
|
|
|
|
|
|
def set_tenant_for_org(cf_org_id, tenant):
|
|
"""Store tenant-org link to db"""
|
|
unit = db_session.get_session()
|
|
try:
|
|
with unit.begin():
|
|
org = models.CFOrganization()
|
|
org.id = cf_org_id
|
|
org.tenant = tenant
|
|
unit.add(org)
|
|
except exception.DBDuplicateEntry:
|
|
unit.execute(sqlalchemy.update(models.CFOrganization).where(
|
|
models.CFOrganization.id == cf_org_id).values(
|
|
tenant=tenant))
|
|
|
|
|
|
def set_environment_for_space(cf_space_id, environment_id):
|
|
"""Store env-space link to db"""
|
|
unit = db_session.get_session()
|
|
try:
|
|
with unit.begin():
|
|
space = models.CFSpace()
|
|
space.id = cf_space_id
|
|
space.environment_id = environment_id
|
|
unit.add(space)
|
|
except exception.DBDuplicateEntry:
|
|
unit.execute(sqlalchemy.update(models.CFSpace).where(
|
|
models.CFSpace.id == cf_space_id).values(
|
|
environment_id=environment_id))
|
|
|
|
|
|
def set_instance_for_service(instance_id, service_id, environment_id, tenant):
|
|
"""Store env-space link to db"""
|
|
unit = db_session.get_session()
|
|
try:
|
|
with unit.begin():
|
|
connection = models.CFServiceInstance()
|
|
connection.id = instance_id
|
|
connection.service_id = service_id
|
|
connection.environment_id = environment_id
|
|
connection.tenant = tenant
|
|
unit.add(connection)
|
|
except exception.DBDuplicateEntry:
|
|
unit.execute(sqlalchemy.update(models.CFServiceInstance).where(
|
|
models.CFServiceInstance.id == instance_id).values(
|
|
environment_id=environment_id))
|
|
|
|
|
|
def get_environment_for_space(cf_space_id):
|
|
"""Take env id related to space from db"""
|
|
unit = db_session.get_session()
|
|
connection = unit.query(models.CFSpace).get(cf_space_id)
|
|
return connection.environment_id
|
|
|
|
|
|
def get_tenant_for_org(cf_org_id):
|
|
"""Take tenant id related to org from db"""
|
|
unit = db_session.get_session()
|
|
connection = unit.query(models.CFOrganization).get(cf_org_id)
|
|
return connection.tenant
|
|
|
|
|
|
def get_service_for_instance(instance_id):
|
|
unit = db_session.get_session()
|
|
connection = unit.query(models.CFServiceInstance).get(instance_id)
|
|
return connection
|
|
|
|
|
|
def delete_environment_from_space(environment_id):
|
|
unit = db_session.get_session()
|
|
unit.query(models.CFSpace).filter(
|
|
models.CFSpace.environment_id == environment_id).delete(
|
|
synchronize=False)
|