apiVersion: v1
data:
  deployment.yaml: |-
    ################################################################################
    #   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:
        type: wso2-apim-analytics
        # value to uniquely identify a server
        id: wso2-am-analytics
        # server name
        name: WSO2 API Manager Analytics Server
        # ports used by this server
        ports:
            # port offset
            offset: 1

    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"
                host: "0.0.0.0"
                port: 9091
            -
                id: "msf4j-https"
                host: "0.0.0.0"
                port: 9444
                scheme: https
                keyStoreFile: "${carbon.home}/resources/security/wso2carbon.jks"
                keyStorePassword: wso2carbon
                certPass: wso2carbon

        senderConfigurations:
            -
                id: "http-sender"

    siddhi.stores.query.api:
        transportProperties:
            -
                name: "server.bootstrap.socket.timeout"
                value: 60
            -
                name: "client.bootstrap.socket.timeout"
                value: 60
            -
                name: "latency.metrics.enabled"
                value: true

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

        # 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.1,TLSv1.2
                    # Ciphers
                    ciphers: TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256,TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256,TLS_DHE_RSA_WITH_AES_128_CBC_SHA256,TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA,TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA,TLS_DHE_RSA_WITH_AES_128_CBC_SHA,TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256,TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256,TLS_DHE_RSA_WITH_AES_128_GCM_SHA256
            -
                # 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.1,TLSv1.2
                    # Ciphers
                    ciphers: TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256,TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256,TLS_DHE_RSA_WITH_AES_128_CBC_SHA256,TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA,TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA,TLS_DHE_RSA_WITH_AES_128_CBC_SHA,TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256,TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256,TLS_DHE_RSA_WITH_AES_128_GCM_SHA256

    # This is the main configuration for metrics
    wso2.metrics:
        # Enable Metrics
        enabled: false
        reporting:
            console:
                - # The name for the Console Reporter
                    name: Console

                    # Enable Console Reporter
                    enabled: false

                    # Polling Period in seconds.
                    # This is the period for polling metrics from the metric registry and printing in the console
                    pollingPeriod: 5

    wso2.metrics.jdbc:
        # Data Source Configurations for JDBC Reporters
        dataSource:
            # Default Data Source Configuration
            - &JDBC01
                # JNDI name of the data source to be used by the JDBC Reporter.
                # This data source should be defined in a *-datasources.xml file in conf/datasources directory.
                dataSourceName: java:comp/env/jdbc/WSO2MetricsDB
                # Schedule regular deletion of metrics data older than a set number of days.
                # It is recommended that you enable this job to ensure your metrics tables do not get extremely large.
                # Deleting data older than seven days should be sufficient.
                scheduledCleanup:
                    # Enable scheduled cleanup to delete Metrics data in the database.
                    enabled: true

                    # The scheduled job will cleanup all data older than the specified days
                    daysToKeep: 3

                    # This is the period for each cleanup operation in seconds.
                    scheduledCleanupPeriod: 86400

        # The JDBC Reporter is in the Metrics JDBC Core feature
        reporting:
            # The JDBC Reporter configurations will be ignored if the Metrics JDBC Core feature is not available in runtime
            jdbc:
                - # The name for the JDBC Reporter
                    name: JDBC

                    # Enable JDBC Reporter
                    enabled: true

                    # Source of Metrics, which will be used to identify each metric in database -->
                    # Commented to use the hostname by default
                    # source: Carbon

                    # Alias referring to the Data Source configuration
                    dataSource: *JDBC01

                    # Polling Period in seconds.
                    # This is the period for polling metrics from the metric registry and updating the database with the values
                    pollingPeriod: 60

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

        # Periodic Persistence Configuration
    state.persistence:
        enabled: false
        intervalInMin: 1
        revisionsToKeep: 2
        persistenceStore: org.wso2.carbon.streaming.integrator.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

        # Datasource Configurations
    wso2.datasources:
        dataSources:
            # 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: 30
                      idleTimeout: 60000
                      connectionTestQuery: SELECT 1
                      validationTimeout: 30000
                      isAutoCommit: false

            - name: WSO2_PERMISSIONS_DB
              description: The datasource used for permission 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: 10
                      idleTimeout: 60000
                      connectionTestQuery: SELECT 1
                      validationTimeout: 30000
                      isAutoCommit: false

            - name: GEO_LOCATION_DATA
              description: "The data source used for geo location database"
              jndiConfig:
                  name: jdbc/GEO_LOCATION_DATA
              definition:
                  type: RDBMS
                  configuration:
                      jdbcUrl: 'jdbc:h2:${sys:carbon.home}/wso2/worker/database/GEO_LOCATION_DATA;AUTO_SERVER=TRUE'
                      username: wso2carbon
                      password: wso2carbon
                      driverClassName: org.h2.Driver
                      maxPoolSize: 50
                      idleTimeout: 60000
                      validationTimeout: 30000
                      isAutoCommit: false

            - name: APIM_ANALYTICS_DB
              description: "The datasource used for APIM statistics aggregated data."
              jndiConfig:
                  name: jdbc/APIM_ANALYTICS_DB
              definition:
                  type: RDBMS
                  configuration:
                      jdbcUrl: 'jdbc:mysql://mysql-svc:3306/WSO2AM_STATS_DB?useSSL=false&allowPublicKeyRetrieval=true'
                      username: wso2carbon
                      password: wso2carbon
                      driverClassName: com.mysql.cj.jdbc.Driver
                      maxPoolSize: 50
                      idleTimeout: 60000
                      connectionTestQuery: SELECT 1
                      validationTimeout: 30000
                      isAutoCommit: false

            #Main datasource used in API Manager
            - name: AM_DB
              description: Main datasource used by API Manager
              jndiConfig:
                  name: jdbc/AM_DB
              definition:
                  type: RDBMS
                  configuration:
                      jdbcUrl: "jdbc:mysql://mysql-svc:3306/WSO2AM_APIMGT_DB?useSSL=false&allowPublicKeyRetrieval=true"
                      username: wso2carbon
                      password: wso2carbon
                      driverClassName: com.mysql.cj.jdbc.Driver
                      maxPoolSize: 10
                      idleTimeout: 60000
                      connectionTestQuery: SELECT 1
                      validationTimeout: 30000
                      isAutoCommit: false

            - name: WSO2AM_MGW_ANALYTICS_DB
              description: "The datasource used for APIM MGW analytics data."
              jndiConfig:
                  name: jdbc/WSO2AM_MGW_ANALYTICS_DB
              definition:
                  type: RDBMS
                  configuration:
                      jdbcUrl: 'jdbc:h2:${sys:carbon.home}/wso2/worker/database/WSO2AM_MGW_ANALYTICS_DB;AUTO_SERVER=TRUE'
                      username: wso2carbon
                      password: wso2carbon
                      driverClassName: org.h2.Driver
                      maxPoolSize: 50
                      idleTimeout: 60000
                      connectionTestQuery: SELECT 1
                      validationTimeout: 30000
                      isAutoCommit: false
            -
                name: WSO2_CLUSTER_DB
                description: "The datasource used by cluster coordinators in HA deployment"
                definition:
                    type: RDBMS
                    configuration:
                        connectionTestQuery: "SELECT 1"
                        driverClassName: org.h2.Driver
                        idleTimeout: 60000
                        isAutoCommit: false
                        jdbcUrl: "jdbc:h2:${sys:carbon.home}/wso2/${sys:wso2.runtime}/database/WSO2_CLUSTER_DB;DB_CLOSE_ON_EXIT=FALSE;LOCK_TIMEOUT=60000;AUTO_SERVER=TRUE"
                        maxPoolSize: 10
                        password: wso2carbon
                        username: wso2carbon
                        validationTimeout: 30000

    siddhi:
        refs:
            - ref:
                  name: 'grpcSource'
                  type: 'grpc'
                  properties:
                      receiver.url : grpc://localhost:9806/org.wso2.grpc.EventService/consume
        extensions:
            -
                extension:
                    name: 'findCountryFromIP'
                    namespace: 'geo'
                    properties:
                        geoLocationResolverClass: org.wso2.extension.siddhi.execution.geo.internal.impl.DefaultDBBasedGeoLocationResolver
                        isCacheEnabled: true
                        cacheSize: 10000
                        isPersistInDatabase: true
                        datasource: GEO_LOCATION_DATA
            -
                extension:
                    name: 'findCityFromIP'
                    namespace: 'geo'
                    properties:
                        geoLocationResolverClass: org.wso2.extension.siddhi.execution.geo.internal.impl.DefaultDBBasedGeoLocationResolver
                        isCacheEnabled: true
                        cacheSize: 10000
                        isPersistInDatabase: true
                        datasource: GEO_LOCATION_DATA
            #Enabling GRPC Service with an Extension
            -
                extension:
                    name: 'grpc'
                    namespace: 'source'
                    properties:
                        keyStoreFile : ${sys:carbon.home}/resources/security/wso2carbon.jks
                        keyStorePassword : wso2carbon
                        keyStoreAlgorithm : SunX509
                        trustStoreFile : ${sys:carbon.home}/resources/security/client-truststore.jks
                        trustStorePassword : wso2carbon
                        trustStoreAlgorithm : SunX509

        # Cluster Configuration
    cluster.config:
        enabled: false
        groupId:  sp
        coordinationStrategyClass: org.wso2.carbon.cluster.coordinator.rdbms.RDBMSCoordinationStrategy
        strategyConfig:
            datasource: WSO2_CLUSTER_DB
            heartbeatInterval: 1000
            heartbeatMaxRetry: 2
            eventPollingInterval: 1000

    # Authentication configuration
    auth.configs:
        type: 'local'        # Type of the IdP client used
        userManager:
            adminRole: admin   # Admin role which is granted all permissions
            userStore:         # User store
                users:
                    -
                        user:
                            username: admin
                            password: YWRtaW4=
                            roles: 1
                roles:
                    -
                        role:
                            id: 1
                            displayName: admin

        # Configuration to enable apim alerts
        #analytics.solutions:
        #  APIM-alerts.enabled: true


        # Sample of deployment.config for Two node HA
        #deployment.config:
        #  type: ha
        #  eventSyncServer:
        #    host: localhost
        #    port: 9893
        #    advertisedHost: localhost
        #    advertisedPort: 9893
        #    bossThreads: 10
        #    workerThreads: 10
        #  eventSyncClientPool:
        #    maxActive: 10
        #    maxTotal: 10
        #    maxIdle: 10
        #    maxWait: 60000
        #    minEvictableIdleTimeMillis: 120000

        # Sample of deployment.config for Distributed deployment
    #deployment.config:
    #  type: distributed
    #  httpsInterface:
    #    host: 192.168.1.3
    #    port: 9443
    #    username: admin
    #    password: admin
    #  leaderRetryInterval: 10000
    #  resourceManagers:
    #    - host: 192.168.1.1
    #      port: 9543
    #      username: admin
    #      password: admin
    #    - host: 192.168.1.2
    #      port: 9543
    #      username: admin
    #      password: admin
kind: ConfigMap
metadata:
  creationTimestamp: "2020-01-24T12:07:05Z"
  name: wso2am-p1-analytics-worker-conf
  namespace: wso2-system
  resourceVersion: "774168"
  selfLink: /api/v1/namespaces/default/configmaps/wso2am-p1-analytics-worker-conf-cluster-1
  uid: 09575950-3ea2-11ea-be52-42010aa000c5