Lock instances support in Mogan(part 1)

This patch adds locked and locked_by columes to the data model
of mogan instances.

Change-Id: I12a10277a86809e5a5e89fbe81c5910f37de21fd
Partially-Implements: bp lock-instances
This commit is contained in:
zhangjl 2017-02-07 09:13:31 +00:00
parent ccfdc3b5cb
commit 79174c35b8
5 changed files with 11 additions and 2 deletions

View File

@ -88,6 +88,8 @@ def upgrade():
sa.Column('node_uuid', sa.String(length=36), nullable=True),
sa.Column('extra', sa.Text(), nullable=True),
sa.Column('deleted', sa.Integer(), nullable=False),
sa.Column('locked', sa.Boolean(), nullable=True),
sa.Column('locked_by', sa.Enum('admin', 'owner'), nullable=True),
sa.PrimaryKeyConstraint('id'),
sa.UniqueConstraint('uuid', name='uniq_instances0uuid'),
mysql_ENGINE='InnoDB',

View File

@ -21,7 +21,7 @@ from oslo_db import options as db_options
from oslo_db.sqlalchemy import models
from oslo_db.sqlalchemy import types as db_types
import six.moves.urllib.parse as urlparse
from sqlalchemy import Boolean, Column, DateTime, ForeignKey
from sqlalchemy import Boolean, Column, DateTime, Enum, ForeignKey
from sqlalchemy import orm
from sqlalchemy import schema, String, Integer
from sqlalchemy.ext.declarative import declarative_base
@ -84,6 +84,9 @@ class Instance(Base):
extra = Column(db_types.JsonEncodedDict)
deleted = Column(Boolean, default=False)
locked = Column(Boolean)
locked_by = Column(Enum('owner', 'admin'))
class InstanceTypes(Base):
"""Represents possible types for instances."""

View File

@ -46,6 +46,8 @@ class Instance(base.MoganObject, object_base.VersionedObjectDictCompat):
'extra': object_fields.FlexibleDictField(nullable=True),
'deleted': object_fields.BooleanField(default=False),
'deleted_at': object_fields.DateTimeField(nullable=True),
'locked': object_fields.BooleanField(default=False),
'locked_by': object_fields.StringField(nullable=True),
}
@staticmethod

View File

@ -62,6 +62,8 @@ def get_test_instance(**kw):
'deleted': kw.get('deleted', False),
'updated_at': kw.get('updated_at'),
'created_at': kw.get('created_at'),
'locked': kw.get('locked', False),
'locked_by': kw.get('locked_by', None),
}

View File

@ -382,7 +382,7 @@ class _TestObject(object):
# version bump. It is md5 hash of object fields and remotable methods.
# The fingerprint values should only be changed if there is a version bump.
expected_object_fingerprints = {
'Instance': '1.0-c3a73e3ec189aa09dc430b389c81b11f',
'Instance': '1.0-51d866ba4ccec2e2e17ead134ad13e95',
'InstanceType': '1.0-589b096651fcdb30898ff50f748dd948',
'MyObj': '1.1-aad62eedc5a5cc8bcaf2982c285e753f',
'FakeNode': '1.0-07813a70fee67557d8a71ad96f31cee7',