Add missing bay_create_timeout to bay object

Currently bay-show command always shows "0" in bay_create_timeout, this
is confusing for users, store bay_create_timeout into db so that bay-show
will return correct bay_create_timeout value.

Change-Id: Icaea11d7d298bd6245a50c464bff6ff20292e092
Closes-Bug: #1521146
This commit is contained in:
Yang Hongyang 2015-12-02 16:54:56 +08:00
parent 534e44c546
commit f0749cc56c
7 changed files with 39 additions and 4 deletions

View File

@ -0,0 +1,31 @@
# 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.
"""add bay_create_timeout to bay
Revision ID: 40f325033343
Revises: 5977879072a7
Create Date: 2015-12-02 16:38:54.697413
"""
# revision identifiers, used by Alembic.
revision = '40f325033343'
down_revision = '5977879072a7'
from alembic import op
import sqlalchemy as sa
def upgrade():
op.add_column('bay', sa.Column('bay_create_timeout',
sa.Integer(), nullable=True))

View File

@ -117,6 +117,7 @@ class Bay(Base):
master_count = Column(Integer())
status = Column(String(20))
status_reason = Column(Text)
bay_create_timeout = Column(Integer())
discovery_url = Column(String(255))
master_addresses = Column(JSONEncodedList)
# (yuanying) if we use barbican,

View File

@ -26,7 +26,8 @@ from magnum.objects import fields as m_fields
class Bay(base.MagnumPersistentObject, base.MagnumObject,
base.MagnumObjectDictCompat):
# Version 1.0: Initial version
VERSION = '1.0'
# Version 1.1: Added 'bay_create_timeout' field
VERSION = '1.1'
dbapi = dbapi.get_instance()
@ -40,6 +41,7 @@ class Bay(base.MagnumPersistentObject, base.MagnumObject,
'stack_id': fields.StringField(nullable=True),
'status': m_fields.BayStatusField(nullable=True),
'status_reason': fields.StringField(nullable=True),
'bay_create_timeout': fields.IntegerField(nullable=True),
'api_address': fields.StringField(nullable=True),
'node_addresses': fields.ListOfStringsField(nullable=True),
'node_count': fields.IntegerField(nullable=True),

View File

@ -400,6 +400,8 @@ class TestPost(api_base.FunctionalTest):
return_created_at = timeutils.parse_isotime(
response.json['created_at']).replace(tzinfo=None)
self.assertEqual(test_time, return_created_at)
self.assertEqual(bdict['bay_create_timeout'],
response.json['bay_create_timeout'])
@mock.patch('magnum.api.attr_validator.validate_os_resources')
def test_create_bay_set_project_id_and_user_id(self, mock_valid_os_res):

View File

@ -39,8 +39,6 @@ def baymodel_post_data(**kw):
def bay_post_data(**kw):
bay = utils.get_test_bay(**kw)
# the timeout property is a part of the request and doesn't persist
# in the bay db
bay['bay_create_timeout'] = kw.get('bay_create_timeout', 15)
internal = bay_controller.BayPatchType.internal_attrs()
return remove_internal(bay, internal)

View File

@ -89,6 +89,7 @@ def get_test_bay(**kw):
'stack_id': kw.get('stack_id', '047c6319-7abd-4bd9-a033-8c6af0173cd0'),
'status': kw.get('status', 'CREATE_IN_PROGRESS'),
'status_reason': kw.get('status_reason', 'Completed successfully'),
'bay_create_timeout': kw.get('bay_create_timeout', 0),
'api_address': kw.get('api_address', '172.17.2.3'),
'node_addresses': kw.get('node_addresses', ['172.17.2.4']),
'node_count': kw.get('node_count', 3),

View File

@ -423,7 +423,7 @@ class _TestObject(object):
# For more information on object version testing, read
# http://docs.openstack.org/developer/magnum/objects.html
object_data = {
'Bay': '1.0-35edde13ad178e9419e7ea8b6d580bcd',
'Bay': '1.1-aa9937c7453c0fdb9165bd2a83640ed9',
'BayLock': '1.0-7d1eb08cf2070523bd210369c7a2e076',
'BayModel': '1.8-a4bb0976be245f06edbd1db087a18071',
'Certificate': '1.0-2aff667971b85c1edf8d15684fd7d5e2',