Resolve issues with service deletion

Corrected cascades and relations between entities

Change-Id: I6b2cd2dbc29bbd5a51e30235cd0669d9c29e20d4
This commit is contained in:
Serg Melikyan 2013-05-24 16:49:41 +04:00
parent 68a7715820
commit 9d13fb7b24
2 changed files with 20 additions and 5 deletions

View File

@ -64,7 +64,7 @@ class Controller(object):
log.debug(_('ActiveDirectory:Delete <EnvId: {0}, Id: {1}>'.
format(environment_id, active_directory_id)))
draft = get_draft(request.context.session)
draft = get_draft(session_id=request.context.session)
items = [service for service in draft['services']['activeDirectories']
if service['id'] != active_directory_id]
draft['services']['activeDirectories'] = items

View File

@ -21,7 +21,7 @@ from sqlalchemy import Column, String, BigInteger, TypeDecorator, ForeignKey
from sqlalchemy.ext.compiler import compiles
from sqlalchemy.ext.declarative import declarative_base
from sqlalchemy import DateTime, Text
from sqlalchemy.orm import relationship, backref, object_mapper
from sqlalchemy.orm import relationship, object_mapper
from muranoapi.common import uuidutils
from muranoapi.openstack.common import timeutils
@ -102,6 +102,11 @@ class Environment(BASE, ModelBase):
tenant_id = Column(String(32), nullable=False)
description = Column(JsonBlob(), nullable=False, default={})
sessions = relationship("Session", backref='environment',
cascade='save-update, merge, delete')
statuses = relationship("Status", backref='environment',
cascade='save-update, merge, delete')
def to_dict(self):
dictionary = super(Environment, self).to_dict()
del dictionary['description']
@ -113,9 +118,7 @@ class Session(BASE, ModelBase):
id = Column(String(32), primary_key=True, default=uuidutils.generate_uuid)
environment_id = Column(String(32), ForeignKey('environment.id'))
environment = relationship(Environment,
backref=backref('session'),
uselist=False, lazy='joined')
user_id = Column(String(36), nullable=False)
state = Column(String(36), nullable=False)
description = Column(JsonBlob(), nullable=False)
@ -123,6 +126,9 @@ class Session(BASE, ModelBase):
def to_dict(self):
dictionary = super(Session, self).to_dict()
del dictionary['description']
#object relations may be not loaded yet
if 'environment' in dictionary:
del dictionary['environment']
return dictionary
@ -136,6 +142,15 @@ class Status(BASE, ModelBase):
session_id = Column(String(32), ForeignKey('session.id'))
text = Column(Text(), nullable=False)
def to_dict(self):
dictionary = super(Status, self).to_dict()
#object relations may be not loaded yet
if 'session' in dictionary:
del dictionary['session']
if 'environment' in dictionary:
del dictionary['environment']
return dictionary
def register_models(engine):
"""