in backend/bms_app/inventory_manager/services.py [0:0]
def process_bms_instance_data(instance_data, overwrite):
"""Process input data re one bms server.
Save bms sever, update it or skip it.
Clear source db config if needed.
"""
bms_server = db.session.query(BMSServer) \
.filter(BMSServer.name == instance_data['name']) \
.first()
if bms_server:
if overwrite:
# Overwrite bms_target if it has not been deployed yet
# or mapped source_db is deployable.
mapped_source_db = db.session.query(SourceDB) \
.outerjoin(Mapping) \
.filter(Mapping.bms_id == bms_server.id) \
.first()
if mapped_source_db and mapped_source_db.is_deployable:
update_object(bms_server, instance_data)
# Reset some parameters in the Config because
# the bms_target parameters have changed.
config = mapped_source_db.config
if config:
clear_bms_target_params(config)
elif not mapped_source_db:
update_object(bms_server, instance_data)
else:
bms_server = BMSServer(**instance_data)
db.session.add(bms_server)