Merge "Change software_config storage of config and io columns"
This commit is contained in:
commit
96ea6d4cd9
|
@ -0,0 +1,34 @@
|
|||
# vim: tabstop=4 shiftwidth=4 softtabstop=4
|
||||
|
||||
# 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.
|
||||
|
||||
from heat.db.sqlalchemy.types import LongText
|
||||
from heat.db.sqlalchemy.types import Json
|
||||
|
||||
import sqlalchemy
|
||||
|
||||
|
||||
def upgrade(migrate_engine):
|
||||
meta = sqlalchemy.MetaData(bind=migrate_engine)
|
||||
software_config = sqlalchemy.Table('software_config', meta, autoload=True)
|
||||
software_config.c.config.alter(type=Json)
|
||||
software_config.c.io.drop()
|
||||
|
||||
|
||||
def downgrade(migrate_engine):
|
||||
meta = sqlalchemy.MetaData(bind=migrate_engine)
|
||||
software_config = sqlalchemy.Table('software_config', meta, autoload=True)
|
||||
software_config.c.config.alter(type=LongText)
|
||||
|
||||
io = sqlalchemy.Column('io', Json)
|
||||
io.create(software_config)
|
|
@ -26,7 +26,6 @@ from heat.openstack.common.db.sqlalchemy import models
|
|||
from heat.openstack.common.db.sqlalchemy import session
|
||||
from sqlalchemy.orm.session import Session
|
||||
from heat.db.sqlalchemy.types import Json
|
||||
from heat.db.sqlalchemy.types import LongText
|
||||
|
||||
BASE = declarative_base()
|
||||
get_session = session.get_session
|
||||
|
@ -269,8 +268,7 @@ class SoftwareConfig(BASE, HeatBase):
|
|||
name = sqlalchemy.Column('name', sqlalchemy.String(255),
|
||||
nullable=True)
|
||||
group = sqlalchemy.Column('group', sqlalchemy.String(255))
|
||||
config = sqlalchemy.Column('config', LongText)
|
||||
io = sqlalchemy.Column('io', Json)
|
||||
config = sqlalchemy.Column('config', Json)
|
||||
tenant = sqlalchemy.Column(
|
||||
'tenant', sqlalchemy.String(256), nullable=False)
|
||||
|
||||
|
|
|
@ -318,10 +318,10 @@ def format_software_config(sc):
|
|||
api.SOFTWARE_CONFIG_ID: sc.id,
|
||||
api.SOFTWARE_CONFIG_NAME: sc.name,
|
||||
api.SOFTWARE_CONFIG_GROUP: sc.group,
|
||||
api.SOFTWARE_CONFIG_CONFIG: sc.config,
|
||||
api.SOFTWARE_CONFIG_INPUTS: sc.io['inputs'],
|
||||
api.SOFTWARE_CONFIG_OUTPUTS: sc.io['outputs'],
|
||||
api.SOFTWARE_CONFIG_OPTIONS: sc.io['options']
|
||||
api.SOFTWARE_CONFIG_CONFIG: sc.config['config'],
|
||||
api.SOFTWARE_CONFIG_INPUTS: sc.config['inputs'],
|
||||
api.SOFTWARE_CONFIG_OUTPUTS: sc.config['outputs'],
|
||||
api.SOFTWARE_CONFIG_OPTIONS: sc.config['options']
|
||||
}
|
||||
return result
|
||||
|
||||
|
|
|
@ -1080,14 +1080,15 @@ class EngineService(service.Service):
|
|||
@request_context
|
||||
def create_software_config(self, cnxt, group, name, config,
|
||||
inputs, outputs, options):
|
||||
|
||||
sc = db_api.software_config_create(cnxt, {
|
||||
'group': group,
|
||||
'name': name,
|
||||
'config': config,
|
||||
'io': {
|
||||
'config': {
|
||||
'inputs': inputs,
|
||||
'outputs': outputs,
|
||||
'options': options
|
||||
'options': options,
|
||||
'config': config
|
||||
},
|
||||
'tenant': cnxt.tenant_id})
|
||||
return api.format_software_config(sc)
|
||||
|
|
|
@ -234,3 +234,6 @@ class TestHeatMigrations(test_migrations.BaseMigrationTestCase,
|
|||
|
||||
def _check_036(self, engine, data):
|
||||
self.assertColumnExists(engine, 'stack', 'stack_user_project_id')
|
||||
|
||||
def _check_038(self, engine, data):
|
||||
self.assertColumnNotExists(engine, 'software_config', 'io')
|
||||
|
|
|
@ -761,12 +761,12 @@ class FormatSoftwareConfigDeploymentTest(HeatTestCase):
|
|||
config = mock.Mock()
|
||||
config.name = 'config_mysql'
|
||||
config.group = 'Heat::Shell'
|
||||
config.config = '#!/bin/bash\n'
|
||||
config.id = str(uuid.uuid4())
|
||||
config.io = {
|
||||
config.config = {
|
||||
'inputs': [{'name': 'bar'}],
|
||||
'outputs': [{'name': 'result'}],
|
||||
'options': {}
|
||||
'options': {},
|
||||
'config': '#!/bin/bash\n'
|
||||
}
|
||||
return config
|
||||
|
||||
|
|
|
@ -622,16 +622,19 @@ class SqlAlchemyTest(HeatTestCase):
|
|||
db_api.software_config_get,
|
||||
self.ctx,
|
||||
str(uuid.uuid4()))
|
||||
io = {'inputs': [{'name': 'foo'}, {'name': 'bar'}],
|
||||
'outputs': [{'name': 'result'}]}
|
||||
tenant_id = self.ctx.tenant_id
|
||||
conf = ('#!/bin/bash\n'
|
||||
'echo "$bar and $foo"\n')
|
||||
config = {
|
||||
'inputs': [{'name': 'foo'}, {'name': 'bar'}],
|
||||
'outputs': [{'name': 'result'}],
|
||||
'config': conf,
|
||||
'options': {}
|
||||
}
|
||||
tenant_id = self.ctx.tenant_id
|
||||
values = {'name': 'config_mysql',
|
||||
'tenant': tenant_id,
|
||||
'group': 'Heat::Shell',
|
||||
'config': conf,
|
||||
'io': io}
|
||||
'config': config}
|
||||
config = db_api.software_config_create(
|
||||
self.ctx, values)
|
||||
config_id = config.id
|
||||
|
@ -640,8 +643,7 @@ class SqlAlchemyTest(HeatTestCase):
|
|||
self.assertEqual('config_mysql', config.name)
|
||||
self.assertEqual(tenant_id, config.tenant)
|
||||
self.assertEqual('Heat::Shell', config.group)
|
||||
self.assertEqual(conf, config.config)
|
||||
self.assertEqual(io, config.io)
|
||||
self.assertEqual(conf, config.config['config'])
|
||||
self.ctx.tenant_id = None
|
||||
self.assertRaises(
|
||||
exception.NotFound,
|
||||
|
|
Loading…
Reference in New Issue