class Environment(Base, TimestampMixin): """Represents a Environment in the metadata-store.""" __tablename__ = 'environment' id = sa.Column(sa.String(255), primary_key=True, default=uuidutils.generate_uuid) name = sa.Column(sa.String(255), nullable=False) tenant_id = sa.Column(sa.String(36), nullable=False) version = sa.Column(sa.BigInteger, nullable=False, default=0) description = sa.Column(st.JsonBlob(), nullable=False, default={}) networking = sa.Column(st.JsonBlob(), nullable=True, default={}) sessions = sa_orm.relationship("Session", backref='environment', cascade='save-update, merge, delete') tasks = sa_orm.relationship('Task', backref='environment', cascade='save-update, merge, delete') def to_dict(self): dictionary = super(Environment, self).to_dict() del dictionary['description'] return dictionary
class Environment(Base, TimestampMixin): """Represents an Environment in the metadata-store.""" __tablename__ = 'environment' __table_args__ = (sa.Index( 'ix_name_tenant_id', 'name', 'tenant_id', unique=True),) id = sa.Column(sa.String(255), primary_key=True, default=uuidutils.generate_uuid) name = sa.Column(sa.String(255), nullable=False) tenant_id = sa.Column(sa.String(36), nullable=False) description_text = sa.Column(sa.String(), nullable=False, default='') version = sa.Column(sa.BigInteger, nullable=False, default=0) description = sa.Column(st.JsonBlob(), nullable=False, default={}) sessions = sa_orm.relationship("Session", backref='environment', cascade='save-update, merge, delete') tasks = sa_orm.relationship('Task', backref='environment', cascade='save-update, merge, delete') cf_spaces = sa_orm.relationship("CFSpace", backref='environment', cascade='save-update, merge, delete') cf_serv_inst = sa_orm.relationship("CFServiceInstance", backref='environment', cascade='save-update, merge, delete') def to_dict(self): dictionary = super(Environment, self).to_dict() del dictionary['description'] return dictionary
class EnvironmentTemplate(Base, TimestampMixin): """Represents a Environment emplate in the metadata-store.""" __tablename__ = 'environment-template' id = sa.Column(sa.String(36), primary_key=True, default=uuidutils.generate_uuid) name = sa.Column(sa.String(255), nullable=False) tenant_id = sa.Column(sa.String(36), nullable=False) version = sa.Column(sa.BigInteger, nullable=False, default=0) description = sa.Column(st.JsonBlob(), nullable=False, default={}) networking = sa.Column(st.JsonBlob(), nullable=True, default={}) def to_dict(self): dictionary = super(EnvironmentTemplate, self).to_dict() if 'description' in dictionary: del dictionary['description'] return dictionary
class Package(Base, TimestampMixin): """Represents a meta information about application package.""" __tablename__ = 'package' __table_args__ = (sa.Index('ix_package_fqn_and_owner', 'fully_qualified_name', 'owner_id', unique=True), ) id = sa.Column(sa.String(36), primary_key=True, default=uuidutils.generate_uuid) archive = sa.Column(st.LargeBinary()) fully_qualified_name = sa.Column(sa.String(128), nullable=False) type = sa.Column(sa.String(20), nullable=False, default='class') author = sa.Column(sa.String(80), default='OpenStack') supplier = sa.Column(st.JsonBlob(), nullable=True, default={}) name = sa.Column(sa.String(80), nullable=False) enabled = sa.Column(sa.Boolean, default=True) description = sa.Column(sa.Text(), nullable=False, default='The description is not provided') is_public = sa.Column(sa.Boolean, default=False) tags = sa_orm.relationship("Tag", secondary=package_to_tag, cascade='save-update, merge', lazy='joined') logo = sa.Column(st.LargeBinary(), nullable=True) owner_id = sa.Column(sa.String(64), nullable=False) ui_definition = sa.Column(sa.Text) supplier_logo = sa.Column(sa.LargeBinary, nullable=True) categories = sa_orm.relationship("Category", secondary=package_to_category, cascade='save-update, merge', lazy='joined') class_definitions = sa_orm.relationship( "Class", cascade='save-update, merge, delete', lazy='joined', backref='package') def to_dict(self): d = self.__dict__.copy() not_serializable = [ '_sa_instance_state', 'archive', 'logo', 'ui_definition', 'supplier_logo' ] nested_objects = ['categories', 'tags', 'class_definitions'] for key in not_serializable: if key in d.keys(): del d[key] for key in nested_objects: d[key] = [a.name for a in d.get(key, [])] return d
class Task(Base, TimestampMixin): __tablename__ = 'task' id = sa.Column(sa.String(36), primary_key=True, default=uuidutils.generate_uuid) started = sa.Column(sa.DateTime, default=timeutils.utcnow, nullable=False) finished = sa.Column(sa.DateTime, default=None, nullable=True) description = sa.Column(st.JsonBlob(), nullable=False) environment_id = sa.Column(sa.String(255), sa.ForeignKey('environment.id')) action = sa.Column(st.JsonBlob()) statuses = sa_orm.relationship("Status", backref='task', cascade='save-update, merge, delete') result = sa.Column(st.JsonBlob(), nullable=True, default={}) def to_dict(self): dictionary = super(Task, self).to_dict() if 'statuses' in dictionary: del dictionary['statuses'] if 'environment' in dictionary: del dictionary['environment'] return dictionary
class Session(Base, TimestampMixin): __tablename__ = 'session' id = sa.Column(sa.String(36), primary_key=True, default=uuidutils.generate_uuid) environment_id = sa.Column(sa.String(255), sa.ForeignKey('environment.id')) user_id = sa.Column(sa.String(36), nullable=False) state = sa.Column(sa.String(36), nullable=False) description = sa.Column(st.JsonBlob(), nullable=False) version = sa.Column(sa.BigInteger, nullable=False, default=0) 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