~ubuntu-branches/ubuntu/trusty/heat/trusty-security

« back to all changes in this revision

Viewing changes to heat/db/sqlalchemy/models.py

  • Committer: Package Import Robot
  • Author(s): Chuck Short
  • Date: 2013-09-08 21:51:19 UTC
  • mto: This revision was merged to the branch mainline in revision 14.
  • Revision ID: package-import@ubuntu.com-20130908215119-7tcek6gn73275x5k
Tags: upstream-2013.2~b3
ImportĀ upstreamĀ versionĀ 2013.2~b3

Show diffs side-by-side

added added

removed removed

Lines of Context:
17
17
 
18
18
import sqlalchemy
19
19
 
 
20
from sqlalchemy.dialects import mysql
20
21
from sqlalchemy.orm import relationship, backref, object_mapper
21
22
from sqlalchemy.exc import IntegrityError
22
23
from sqlalchemy.ext.declarative import declarative_base
32
33
BASE = declarative_base()
33
34
 
34
35
 
35
 
class Json(types.TypeDecorator, types.MutableType):
 
36
class Json(types.TypeDecorator):
36
37
    impl = types.Text
37
38
 
 
39
    def load_dialect_impl(self, dialect):
 
40
        if dialect.name == 'mysql':
 
41
            return dialect.type_descriptor(mysql.LONGTEXT())
 
42
        else:
 
43
            return self.impl
 
44
 
38
45
    def process_bind_param(self, value, dialect):
39
46
        return dumps(value)
40
47
 
41
48
    def process_result_value(self, value, dialect):
42
49
        return loads(value)
43
50
 
 
51
# TODO(leizhang) When we removed sqlalchemy 0.7 dependence
 
52
# we can import MutableDict directly and remove ./mutable.py
 
53
try:
 
54
    from sqlalchemy.ext.mutable import MutableDict as sa_MutableDict
 
55
    sa_MutableDict.associate_with(Json)
 
56
except ImportError:
 
57
    from heat.db.sqlalchemy.mutable import MutableDict
 
58
    MutableDict.associate_with(Json)
 
59
 
44
60
 
45
61
class HeatBase(object):
46
62
    """Base class for Heat Models."""
84
100
 
85
101
    def delete(self, session=None):
86
102
        """Delete this object."""
87
 
        self.deleted = True
88
 
        self.deleted_at = timeutils.utcnow()
89
103
        if not session:
90
104
            session = Session.object_session(self)
91
105
            if not session:
193
207
    id = sqlalchemy.Column(sqlalchemy.Integer, primary_key=True)
194
208
    username = sqlalchemy.Column(sqlalchemy.String)
195
209
    password = sqlalchemy.Column(sqlalchemy.String)
196
 
    service_user = sqlalchemy.Column(sqlalchemy.String)
197
 
    service_password = sqlalchemy.Column(sqlalchemy.String)
198
210
    tenant = sqlalchemy.Column(sqlalchemy.String)
199
211
    auth_url = sqlalchemy.Column(sqlalchemy.String)
200
 
    aws_auth_url = sqlalchemy.Column(sqlalchemy.String)
201
212
    tenant_id = sqlalchemy.Column(sqlalchemy.String)
202
 
    aws_creds = sqlalchemy.Column(sqlalchemy.String)
 
213
    trust_id = sqlalchemy.Column(sqlalchemy.String)
 
214
    trustor_user_id = sqlalchemy.Column(sqlalchemy.String)
203
215
    stack = relationship(Stack, backref=backref('user_creds'))
204
216
 
205
217
 
216
228
 
217
229
    resource_action = sqlalchemy.Column(sqlalchemy.String)
218
230
    resource_status = sqlalchemy.Column(sqlalchemy.String)
219
 
    logical_resource_id = sqlalchemy.Column(sqlalchemy.String)
 
231
    resource_name = sqlalchemy.Column(sqlalchemy.String)
220
232
    physical_resource_id = sqlalchemy.Column(sqlalchemy.String)
221
233
    resource_status_reason = sqlalchemy.Column(sqlalchemy.String)
222
234
    resource_type = sqlalchemy.Column(sqlalchemy.String)
263
275
    stack = relationship(Stack, backref=backref('resources'))
264
276
    data = relationship(ResourceData,
265
277
                        cascade="all,delete",
266
 
                        backref=backref('resource', lazy='joined'))
 
278
                        backref=backref('resource'))
267
279
 
268
280
 
269
281
class WatchRule(BASE, HeatBase):