Added support for OsloConfigFile

Change-Id: Ib9aaf7e16be0920696690b86cdcb14e06f1b643c
This commit is contained in:
Kanagaraj Manickam 2016-03-23 18:06:57 +05:30
parent 0a765fe3ae
commit 72e7f2cd38
6 changed files with 152 additions and 0 deletions

View File

@ -125,3 +125,8 @@ class ServiceWorkerNotFound(NotFound):
class ConfigNotFound(NotFound):
msg_fmt = ("Config %(config_id)s does not found")
error_code = 0x0a001
class ConfigFileNotFound(NotFound):
msg_fmt = ("Config file %(config_file_id)s does not found")
error_code = 0x0b001

View File

@ -184,6 +184,33 @@ class ServiceProcessor(object):
service_component)
# TODO(mrkanag) what to do when service_components size is > 1
# config file
for cfg_f in self.registration_info['config_file_list']:
try:
config_file = db_api.config_file_create(
context,
dict(name=cfg_f,
file=self.registration_info[
'config_file_dict'][cfg_f],
service_component_id=service_component.id))
LOG.info('Oslo config file %s is created' % config_file)
except exception.AlreadyExist:
config_files = \
db_api.config_file_get_by_name_for_service_component(
context,
service_component_id=service_component.id,
name=cfg_f
)
if len(config_files) == 1:
config_file = \
db_api.config_file_update(
context,
config_files[0].id,
dict(file=self.registration_info[
'config_file_dict'][cfg_f]))
LOG.info('Oslo config file %s is existing and is updated'
% config_file)
# Service Worker
try:
service_worker = db_api.service_worker_create(

View File

@ -344,6 +344,40 @@ def config_delete(context, _id):
return IMPL.config_delete(context, _id)
def config_file_create(context, values):
return IMPL.config_file_create(context, values)
def config_file_update(context, _id, values):
return IMPL.config_file_update(context, _id, values)
def config_file_get(context, _id):
return IMPL.config_file_get(context, _id)
def config_file_get_by_name(context, name):
return IMPL.config_file_get_by_name(context, name)
def config_file_get_by_name_for_service_component(
context,
service_component_id,
name=None):
return IMPL.config_file_get_by_name_for_service_component(
context,
service_component_id,
name)
def config_file_get_all(context):
return IMPL.config_file_get_all(context)
def config_file_delete(context, _id):
return IMPL.config_file_delete(context, _id)
def service_perspective_get(context, service_id,
include_details=False):
return IMPL.service_perspective_get(context,

View File

@ -177,6 +177,7 @@ def upgrade():
def downgrade():
op.drop_table('oslo_config_file')
op.drop_table('oslo_config')
op.drop_table('device_driver')
op.drop_table('service_worker')

View File

@ -548,6 +548,55 @@ def config_delete(context, _id):
return _delete(context, models.OsloConfig, _id)
# Config file
def config_file_create(context, values):
return _create(context, models.OsloConfigFile(), values)
def config_file_update(context, _id, values):
return _update(context, models.OsloConfigFile, _id, values)
def config_file_get(context, _id):
config = _get(context, models.OsloConfigFile, _id)
if config is None:
raise exception.ConfigFileNotFound(config_file_id=_id)
return config
def config_file_get_by_name(context, name):
config = _get_by_name(context, models.OsloConfigFile, name)
if config is None:
raise exception.ConfigFileNotFound(config_file_id=name)
return config
def config_file_get_by_name_for_service_component(
context,
service_component_id,
name=None):
query = _model_query(context, models.OsloConfigFile). \
filter_by(service_component_id=service_component_id)
if name is not None:
query = query.filter_by(name=name)
return query.all()
def config_file_get_all(context):
return _get_all(context, models.OsloConfigFile)
def _config_file_get_all_by(context, **kwargs):
return _get_all_by(context, models.OsloConfigFile, **kwargs)
def config_file_delete(context, _id):
return _delete(context, models.OsloConfigFile, _id)
# REST-API
def service_perspective_get(context, service_id, include_details=False):
# 1. itr over Service Components and find name vs set of components
@ -827,6 +876,18 @@ def view_360(context):
view['region'][rg.id]['service_node'][srv_nd.id][
'service_component'][srv_cmp.id] = dict()
view['region'][rg.id]['service_node'][srv_nd.id][
'service_component'][srv_cmp.id]['config_file'] = dict()
cfg_fl_lst = config_file_get_by_name_for_service_component(
context,
service_component_id=srv_cmp.id
)
for cfg_fl in cfg_fl_lst:
# config file
view['region'][rg.id]['service_node'][srv_nd.id][
'service_component'][srv_cmp.id][
'config_file'][cfg_fl.name] = cfg_fl.file
view['region'][rg.id]['service_node'][srv_nd.id][
'service_component'][srv_cmp.id]['service'] = srv_id
view['region'][rg.id]['service_node'][srv_nd.id][

View File

@ -330,3 +330,27 @@ class OsloConfig(BASE,
sqlalchemy.ForeignKey('service_worker.id'),
nullable=False
)
class OsloConfigFile(BASE,
NamosBase,
SoftDelete,
Extra):
__tablename__ = 'oslo_config_file'
__table_args__ = (
UniqueConstraint("name", "service_component_id"),
)
name = sqlalchemy.Column(sqlalchemy.String(255),
# unique=True,
nullable=False,
default=lambda: str(uuid.uuid4()))
file = sqlalchemy.Column(
sqlalchemy.Text
)
service_component_id = sqlalchemy.Column(
Uuid,
sqlalchemy.ForeignKey('service_component.id'),
nullable=False
)