# 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.

[/]
# tools.secureheaders.on = True
tools.sessions.on = True
# increase security on sessions
tools.sessions.secure = True
tools.sessions.httponly = True
tools.encode.on: True,
tools.encode.encoding: 'utf-8'
tools.response_headers.on = True

# tools.auth_basic.on: True,
# tools.auth_basic.realm: 'localhost',
# tools.auth_basic.checkpassword: get_tokens


[/static]
tools.staticdir.on: True
tools.staticdir.dir: "/app/NBI/osm_nbi/html_public"


[global]
server.socket_host: "0.0.0.0"
server.socket_port: 9999

server.ssl_module: "builtin"
server.ssl_certificate: "./http/cert.pem"
server.ssl_private_key: "./http/privkey.pem"
server.ssl_pass_phrase: "osm4u"
server.thread_pool: 10

# Uncomment for allow basic authentication apart from bearer
# auth.allow_basic_authentication: True

log.screen: False
log.access_file: ""
log.error_file: ""

log.level: "DEBUG"
#log.file: /var/log/osm/nbi.log


[database]
driver: "mongo"            # mongo or memory
host:   "mongo"            # hostname or IP
port: 27017
name: "osm"
# user: "user"
# password: "password"
# commonkey: "commonkey"

[prometheus]
host: "prometheus"         #hostname or IP
port: 9090

loglevel:  "DEBUG"
#logfile: /var/log/osm/nbi-database.log


[storage]
driver: "local"            # local filesystem
# for local provide file path
path: "/app/storage"       #"/home/atierno/OSM/osm/NBI/local/storage"

loglevel:  "DEBUG"
#logfile: /var/log/osm/nbi-storage.log

[message]
driver: "kafka"             # local or kafka
# for local provide file path
path: "/app/storage/kafka"
host: "kafka"
port: 9092

loglevel:  "DEBUG"
#logfile: /var/log/osm/nbi-message.log
group_id: "nbi-server"

[authentication]
backend: "internal"         # internal or keystone
# Only for test. It works without authorization using the provided user and project:
# user_not_authorized: "admin"
# project_not_authorized: "admin"

[rbac]
# roles_to_operations: "roles_to_operations.yml"  # initial role generation when database
