openwhisk.home={{ openwhisk_home }}

python.27=python
nginx.conf.dir={{ nginx.confdir }}
testing.auth={{ openwhisk_home }}/ansible/files/auth.guest
vcap.services.file=

whisk.logs.dir={{ whisk_logs_dir }}
whisk.coverage.logs.dir={{ coverage_logs_dir | default('') }}
environment.type={{ environmentInformation.type }}
whisk.ssl.client.verification={{ nginx.ssl.verify_client }}
whisk.ssl.cert={{ nginx.ssl.path }}/{{ nginx.ssl.cert }}
whisk.ssl.key={{ nginx.ssl.path }}/{{ nginx.ssl.key }}
whisk.ssl.challenge=openwhisk

{#
 # the whisk.api.host.name must be a name that can resolve form inside an action container,
 # or an ip address reachable from inside the action container.
 #
 # the whisk.api.localhost.name must be a name that resolves from the client; it is either the
 # whisk_api_host_name if it is defined, an environment specific localhost name, or the default
 # localhost name.
 #
 # the whisk.api.vanity.subdomain.parts indicates how many conforming parts the router is configured to
 # match in the subdomain, which it rewrites into a namespace; each part must match ([a-zA-Z0-9]+)
 # with parts separated by a single dash.
 #}
whisk.api.host.proto={{ whisk_api_host_proto | default('https') }}
whisk.api.host.port={{ whisk_api_host_port | default('443') }}
whisk.api.host.name={{ whisk_api_host_name | default(groups['edge'] | first) }}
whisk.api.localhost.name={{ whisk_api_localhost_name | default(whisk_api_host_name) | default(whisk_api_localhost_name_default) }}
whisk.api.vanity.subdomain.parts=1

whisk.action.concurrency={{ runtimes_enable_concurrency | default(false) }}
whisk.feature.requireApiKeyAnnotation={{ whisk.feature_flags.require_api_key_annotation | default(true) }}
whisk.feature.requireResponsePayload={{ whisk.feature_flags.require_response_payload | default(true) }}

runtimes.manifest={{ runtimesManifest | to_json }}

limits.actions.invokes.perMinute={{ limits.invocationsPerMinute }}
limits.actions.invokes.concurrent={{ limits.concurrentInvocations }}
limits.triggers.fires.perMinute={{ limits.firesPerMinute }}
limits.actions.sequence.maxLength={{ limits.sequenceMaxLength }}

edge.host={{ groups["edge"]|first }}
kafka.hosts={{ kafka_connect_string }}
redis.host={{ groups["redis"]|default([""])|first }}
router.host={{ groups["edge"]|first }}
zookeeper.hosts={{ zookeeper_connect_string }}
invoker.hosts={{ groups["invokers"] | map('extract', hostvars, 'ansible_host') | list | join(",") }}

edge.host.apiport=443
kafkaras.host.port={{ kafka.ras.port }}
redis.host.port={{ redis.port }}
invoker.hosts.basePort={{ invoker.port }}

controller.hosts={{ groups["controllers"] | map('extract', hostvars, 'ansible_host') | list | join(",") }}
controller.host.basePort={{ controller.basePort }}
controller.instances={{ controller.instances }}
controller.protocol={{ controller.protocol }}

invoker.container.network=bridge
invoker.container.policy={{ invoker_container_policy_name | default()}}
invoker.container.dns={{ invoker_container_network_dns_servers | default()}}
invoker.useRunc={{ invoker.useRunc }}

main.docker.endpoint={{ hostvars[groups["controllers"]|first].ansible_host }}:{{ docker.port }}

docker.registry={{ docker_registry }}
docker.image.prefix={{ docker.image.prefix }}
#use.docker.registry=false
docker.port={{ docker.port }}
docker.timezone.mount=
docker.image.tag={{ docker.image.tag }}
docker.tls.cmd=
docker.addHost.cmd=
docker.dns.cmd={{ docker_dns }}
docker.restart.opts={{ docker.restart.policy }}

db.provider={{ db.provider }}
db.protocol={{ db.protocol }}
db.host={{ db.host }}
db.port={{ db.port }}
db.username={{ db.credentials.admin.user }}
db.password={{ db.credentials.admin.pass }}
db.prefix={{ db_prefix }}
db.whisk.auths={{ db.whisk.auth }}
db.whisk.actions={{ db.whisk.actions }}
db.whisk.activations={{ db.whisk.activations }}
db.hostsList={{ groups["db"] | map('extract', hostvars, 'ansible_host') | list | join(",") }}
db.instances={{ db.instances }}

apigw.auth.user={{apigw_auth_user}}
apigw.auth.pwd={{apigw_auth_pwd}}
apigw.host.v2={{apigw_host_v2}}
