def process_bms_instance_data()

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)