################################################################################
#   Copyright (c) 2017, WSO2 Inc. (http://www.wso2.org) All Rights Reserved
#
#   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.
################################################################################

  # Carbon Configuration Parameters
wso2.carbon:
    # value to uniquely identify a server
  id: wso2-sp
    # server name
  name: WSO2 Stream Processor
    # ports used by this server
  ports:
      # port offset
    offset: 2

  # Configuration used for the databridge communication
databridge.config:
    # No of worker threads to consume events
    # THIS IS A MANDATORY FIELD
  workerThreads: 10
    # Maximum amount of messages that can be queued internally in MB
    # THIS IS A MANDATORY FIELD
  maxEventBufferCapacity: 10000000
    # Queue size; the maximum number of events that can be stored in the queue
    # THIS IS A MANDATORY FIELD
  eventBufferSize: 2000
    # Keystore file path
    # THIS IS A MANDATORY FIELD
  keyStoreLocation : ${sys:carbon.home}/resources/security/wso2carbon.jks
    # Keystore password
    # THIS IS A MANDATORY FIELD
  keyStorePassword : wso2carbon
    # Session Timeout value in mins
    # THIS IS A MANDATORY FIELD
  clientTimeoutMin: 30
    # Data receiver configurations
    # THIS IS A MANDATORY FIELD
  dataReceivers:
  -
      # Data receiver configuration
    dataReceiver:
        # Data receiver type
        # THIS IS A MANDATORY FIELD
      type: Thrift
        # Data receiver properties
      properties:
        tcpPort: '7611'
        sslPort: '7711'

  -
      # Data receiver configuration
    dataReceiver:
        # Data receiver type
        # THIS IS A MANDATORY FIELD
      type: Binary
        # Data receiver properties
      properties:
        tcpPort: '9611'
        sslPort: '9711'
        tcpReceiverThreadPoolSize: '100'
        sslReceiverThreadPoolSize: '100'
        hostName: 0.0.0.0

  # Configuration of the Data Agents - to publish events through databridge
data.agent.config:
    # Data agent configurations
    # THIS IS A MANDATORY FIELD
  agents:
  -
      # Data agent configuration
    agentConfiguration:
        # Data agent name
        # THIS IS A MANDATORY FIELD
      name: Thrift
        # Data endpoint class
        # THIS IS A MANDATORY FIELD
      dataEndpointClass: org.wso2.carbon.databridge.agent.endpoint.thrift.ThriftDataEndpoint
        # Data publisher strategy
      publishingStrategy: async
        # Trust store path
      trustStorePath: '${sys:carbon.home}/resources/security/client-truststore.jks'
        # Trust store password
      trustStorePassword: 'wso2carbon'
        # Queue Size
      queueSize: 32768
        # Batch Size
      batchSize: 200
        # Core pool size
      corePoolSize: 1
        # Socket timeout in milliseconds
      socketTimeoutMS: 30000
        # Maximum pool size
      maxPoolSize: 1
        # Keep alive time in pool
      keepAliveTimeInPool: 20
        # Reconnection interval
      reconnectionInterval: 30
        # Max transport pool size
      maxTransportPoolSize: 250
        # Max idle connections
      maxIdleConnections: 250
        # Eviction time interval
      evictionTimePeriod: 5500
        # Min idle time in pool
      minIdleTimeInPool: 5000
        # Secure max transport pool size
      secureMaxTransportPoolSize: 250
        # Secure max idle connections
      secureMaxIdleConnections: 250
        # secure eviction time period
      secureEvictionTimePeriod: 5500
        # Secure min idle time in pool
      secureMinIdleTimeInPool: 5000
        # SSL enabled protocols
      sslEnabledProtocols: TLSv1,TLSv1.1,TLSv1.2
        # Ciphers
      ciphers: SSL_RSA_WITH_RC4_128_MD5,SSL_RSA_WITH_RC4_128_SHA,TLS_RSA_WITH_AES_128_CBC_SHA,TLS_DHE_RSA_WITH_AES_128_CBC_SHA,TLS_DHE_DSS_WITH_AES_128_CBC_SHA,SSL_RSA_WITH_3DES_EDE_CBC_SHA,SSL_DHE_RSA_WITH_3DES_EDE_CBC_SHA,SSL_DHE_DSS_WITH_3DES_EDE_CBC_SHA
  -
      # Data agent configuration
    agentConfiguration:
        # Data agent name
        # THIS IS A MANDATORY FIELD
      name: Binary
        # Data endpoint class
        # THIS IS A MANDATORY FIELD
      dataEndpointClass: org.wso2.carbon.databridge.agent.endpoint.binary.BinaryDataEndpoint
        # Data publisher strategy
      publishingStrategy: async
        # Trust store path
      trustStorePath: '${sys:carbon.home}/resources/security/client-truststore.jks'
        # Trust store password
      trustStorePassword: 'wso2carbon'
        # Queue Size
      queueSize: 32768
        # Batch Size
      batchSize: 200
        # Core pool size
      corePoolSize: 1
        # Socket timeout in milliseconds
      socketTimeoutMS: 30000
        # Maximum pool size
      maxPoolSize: 1
        # Keep alive time in pool
      keepAliveTimeInPool: 20
        # Reconnection interval
      reconnectionInterval: 30
        # Max transport pool size
      maxTransportPoolSize: 250
        # Max idle connections
      maxIdleConnections: 250
        # Eviction time interval
      evictionTimePeriod: 5500
        # Min idle time in pool
      minIdleTimeInPool: 5000
        # Secure max transport pool size
      secureMaxTransportPoolSize: 250
        # Secure max idle connections
      secureMaxIdleConnections: 250
        # secure eviction time period
      secureEvictionTimePeriod: 5500
        # Secure min idle time in pool
      secureMinIdleTimeInPool: 5000
        # SSL enabled protocols
      sslEnabledProtocols: TLSv1,TLSv1.1,TLSv1.2
        # Ciphers
      ciphers: SSL_RSA_WITH_RC4_128_MD5,SSL_RSA_WITH_RC4_128_SHA,TLS_RSA_WITH_AES_128_CBC_SHA,TLS_DHE_RSA_WITH_AES_128_CBC_SHA,TLS_DHE_DSS_WITH_AES_128_CBC_SHA,SSL_RSA_WITH_3DES_EDE_CBC_SHA,SSL_DHE_RSA_WITH_3DES_EDE_CBC_SHA,SSL_DHE_DSS_WITH_3DES_EDE_CBC_SHA

  # Deployment configuration parameters
wso2.artifact.deployment:
    # Scheduler update interval
  updateInterval: 5

  # HA Configuration
state.persistence:
  enabled: false
  intervalInMin: 1
  revisionsToKeep: 2
  class: org.wso2.carbon.stream.processor.core.persistence.FileSystemPersistenceStore
  config:
    location: siddhi-app-persistence

  # Secure Vault Configuration
wso2.securevault:
  secretRepository:
    type: org.wso2.carbon.secvault.repository.DefaultSecretRepository
    parameters:
      privateKeyAlias: wso2carbon
      keystoreLocation: ${sys:carbon.home}/resources/security/securevault.jks
      secretPropertiesFile: ${sys:carbon.home}/conf/${sys:wso2.runtime}/secrets.properties
  masterKeyReader:
    type: org.wso2.carbon.secvault.reader.DefaultMasterKeyReader
    parameters:
      masterKeyReaderFile: ${sys:carbon.home}/conf/${sys:wso2.runtime}/master-keys.yaml


# Data Sources Configuration
wso2.datasources:
  dataSources:
  - name: BUSINESS_RULES_DB
    description: The datasource used for dashboard feature
    jndiConfig:
      name: jdbc/BUSINESS_RULES_DB
      useJndiReference: true
    definition:
      type: RDBMS
      configuration:
        jdbcUrl: 'jdbc:h2:${sys:carbon.home}/wso2/${sys:wso2.runtime}/database/BUSINESS_RULES_DB;DB_CLOSE_ON_EXIT=FALSE;LOCK_TIMEOUT=60000;MVCC=TRUE'
        username: wso2carbon
        password: wso2carbon
        driverClassName: org.h2.Driver
        maxPoolSize: 50
        idleTimeout: 60000
        connectionTestQuery: SELECT 1
        validationTimeout: 30000
        isAutoCommit: false

  # Dashboard data source
  - name: WSO2_STATUS_DASHBOARD_DB
    description: The datasource used for dashboard feature
    jndiConfig:
      name: jdbc/wso2_status_dashboard
      useJndiReference: true
    definition:
      type: RDBMS
      configuration:
        jdbcUrl: 'jdbc:h2:${sys:carbon.home}/wso2/${sys:wso2.runtime}/database/wso2_status_dashboard;DB_CLOSE_ON_EXIT=FALSE;LOCK_TIMEOUT=60000;MVCC=TRUE'
        username: wso2carbon
        password: wso2carbon
        driverClassName: org.h2.Driver
        maxPoolSize: 50
        idleTimeout: 60000
        connectionTestQuery: SELECT 1
        validationTimeout: 30000
        isAutoCommit: false

  # carbon metrics data source
  - name: WSO2_METRICS_DB
    description: The datasource used for dashboard feature
    jndiConfig:
      name: jdbc/WSO2MetricsDB
    definition:
      type: RDBMS
      configuration:
        jdbcUrl: 'jdbc:h2:${sys:carbon.home}/wso2/dashboard/database/metrics;AUTO_SERVER=TRUE'
        username: wso2carbon
        password: wso2carbon
        driverClassName: org.h2.Driver
        maxPoolSize: 50
        idleTimeout: 60000
        connectionTestQuery: SELECT 1
        validationTimeout: 30000
        isAutoCommit: false

  - name: WSO2_PERMISSIONS_DB
    description: The datasource used for dashboard feature
    jndiConfig:
      name: jdbc/PERMISSION_DB
      useJndiReference: true
    definition:
      type: RDBMS
      configuration:
        jdbcUrl: 'jdbc:h2:${sys:carbon.home}/wso2/${sys:wso2.runtime}/database/PERMISSION_DB;IFEXISTS=TRUE;DB_CLOSE_ON_EXIT=FALSE;LOCK_TIMEOUT=60000;MVCC=TRUE'
        username: wso2carbon
        password: wso2carbon
        driverClassName: org.h2.Driver
        maxPoolSize: 50
        idleTimeout: 60000
        connectionTestQuery: SELECT 1
        validationTimeout: 30000
        isAutoCommit: false

wso2.business.rules.manager:
  datasource: BUSINESS_RULES_DB
  deployment_configs:
    -
     #ip:port of the node
     localhost:9090:
       # uuids of rule templates which are needed to be deployed on the node given above
       - stock-data-analysis
       - stock-exchange-input
       - stock-exchange-output
       - identifying-continuous-production-decrease
  username: admin
  password: admin

  queries:
    -
     mappings:
        CREATE_BUSINESS_RULES_TABLE:
        ADD_BUSINESS_RULE:
        UPDATE_BUSINESS_RULE:
        UPDATE_DEPLOYMENT_STATUS:
        UPDATE_ARTIFACT_COUNT:
        RETRIEVE_BUSINESS_RULE:
        RETRIEVE_ALL:
        RETRIEVE_ARTIFACT_COUNT:
        RETRIEVE_DEPLOYMENT_STATUS:
        DELETE_BUSINESS_RULE:
        CREATE_RULE_TEMPLATES_TABLE:
        ADD_RULE_TEMPLATE:
        RETRIEVE_ALL_RULE_TEMPLATES:
        DELETE_RULE_TEMPLATE:

     type: default
     version: default

wso2.transport.http:
  transportProperties:
    - name: "server.bootstrap.socket.timeout"
      value: 60
    - name: "client.bootstrap.socket.timeout"
      value: 60
    - name: "latency.metrics.enabled"
      value: true

  listenerConfigurations:
    - id: "default-https"
      host: "0.0.0.0"
      port: 9643
      scheme: https
      keyStoreFile: "${carbon.home}/resources/security/wso2carbon.jks"
      keyStorePassword: wso2carbon
      certPass: wso2carbon
