.. This work is licensed under a Creative Commons Attribution 4.0 International License.
.. http://creativecommons.org/licenses/by/4.0

=============
Configuration
=============

.. contents::
   :depth: 3
..

Global Configuration
====================

environment.json
----------------

::

    {
        # Environment name
        "name": "xxx",
        
        # Environment description
        "description": "OpenSource-xxx",
        "json_class": "Chef::Environment",
        "chef_type": "environment",

        "default_attributes": {
            "disableHttp": false,
            # IPs used for docker configuration
            "CS_VIP": "yyy",
            "BE_VIP": "yyy",
            "ONBOARDING_BE_VIP": "yyy",
            "FE_VIP": "yyy",
            "ES_VIP": "yyy",
            "KB_VIP": "yyy",
            "DCAE_BE_VIP": "yyy",
            "DCAE_FE_VIP": "yyy",
            "interfaces": {
                "application": "eth0",
                "private": "eth1"
            },

            # Configuration parameters used in portal properties
            "ECompP": {
                "ecomp_rest_url": "http://portal.api.simpledemo.onap.org:8989/ONAPPORTAL/auxapi",
                "ecomp_redirect_url": "http://portal.api.simpledemo.openecomp.org:8989/ECOMPPORTAL/login.htm",
                "cipher_key": "AGLDdG4D04BKm2IxIWEr8o==",
                "portal_user": "Ipwxi2oLvDxctMA1royaRw1W0jhucLx+grHzci3ePIA=",
                "portal_pass": "j85yNhyIs7zKYbR1VlwEfNhS6b7Om4l0Gx5O8931sCI="
            },

            # Configuration parameters used by SDC to work with Dmaap
            "UEB": {
                "PublicKey": "iPIxkpAMI8qTcQj8",
                "SecretKey": "Ehq3WyT4bkif4zwgEbvshGal",
                "fqdn": ["10.0.11.1", "10.0.11.1"]
            },

            # IPs used for docker configuration
            "Nodes": {
                "CS": ["yyy"],
                "BE": "yyy",
                "ONBOARDING_BE": "yyy",
                "FE": "yyy",
                "ES": ["yyy"],
                "KB":  "yyy"
            },
            "Plugins": {
               "DCAE": {
                  "dcae_discovery_url": "yyy",
                  "dcae_source_url": "yyy"
               },
               "WORKFLOW": {
                  "workflow_discovery_url": "yyy",
                  "workflow_source_url": "yyy"
               }
            },
            "VnfRepo": {
                "vnfRepoPort": "8702",
                "vnfRepoHost": "10.0.14.1"
            }
        },
        "override_attributes": {

            # FE and BE listening ports
            "FE": {
                "http_port": "8181",
                "https_port": "9443"
            },
            "BE": {
                "http_port": "8080",
                "https_port": "8443"
            },
            "ONBOARDING_BE": {
               "http_port": "8081",
               "https_port": "8445"
            },

            # Cassandra configuration
            "cassandra": {
                "concurrent_reads": "32",
                "num_tokens": "256",
                "data_dir": "/var/lib/cassandra/data",
                "hinted_handoff_enabled": "true",
                "cassandra_user": "sdc_user",
                "cassandra_password": "changeme",
                "concurrent_writes": "32",
                "cluster_name": "SDC-CS-",
                "datacenter_name": "SDC-CS-",
                "multithreaded_compaction": "false",
                "cache_dir": "/var/lib/cassandra/saved_caches",
                "log_file": "/var/lib/cassandra/log/system.log",
                "phi_convict_threshold": "8",
                "commitlog_dir": "/var/lib/cassandra/commitlog",
                "socket_read_timeout": "20000",
                "socket_connect_timeout": "20000",
                "janusgraph_connection_timeout": "10000"
            }
        }
    }



Backend Configurations
======================

Catalog Configurations
----------------------

BE-configuration.yaml
**********************



::

    # Request headers for identification of the user that made the request
    identificationHeaderFields:
    - HTTP_IV_USER
    - HTTP_CSP_FIRSTNAME
    - HTTP_CSP_LASTNAME
    - HTTP_IV_REMOTE_ADDRESS
    - HTTP_CSP_WSTYPE

    # Catalog backend hostname
    beFqdn: <%= @catalog_ip %>

    # Catalog backend http port
    beHttpPort: <%= @catalog_port %>

    # Catalog backend http context
    beContext: /sdc/rest/config/get

    # Catalog backend protocol
    beProtocol: http

    # Catalog backend ssl port
    beSslPort: <%= @ssl_port %>

    # Catalog backend configuration version
    version: 1.1.0

    # Catalog backend configuration release date
    released: 2012-11-30

    # Catalog tosca current conformance version
    toscaConformanceLevel: 5.0

    # Catalog minimum tosca conformance version
    minToscaConformanceLevel: 3.0

    # JanusGraph configuration file location
    janusGraphCfgFile: /var/lib/jetty/config/catalog-be/janusgraph.properties

    # Does JanusGraph hold the persistence data in memory
    janusGraphInMemoryGraph: false

    # The timeout for JanusGraph to lock on an object in a transaction
    janusGraphLockTimeout: 1800

    # The interval to try and reconnect to JanusGraph DB when it is down during SDC startup
    janusGraphReconnectIntervalInSeconds: 3

    # The read timeout towards JanusGraph DB when health check is invoked
    janusGraphHealthCheckReadTimeout: 1

    # The interval to try and reconnect to UEB health check when it is down during SDC startup
    uebHealthCheckReconnectIntervalInSeconds: 15

    # The read timeout towards UEB when health check is invoked
    uebHealthCheckReadTimeout: 4

    # Protocols being used in SDC
    protocols:
        - http
        - https

    # Default imports
    # Under each import there is the file the data will be imported from
    defaultImports:
        - nodes:
            file: nodes.yml
        - datatypes:
            file: data.yml
        - capabilities:
            file: capabilities.yml
        - relationships:
            file: relationships.yml
        - groups:
            file: groups.yml
        - policies:
            file: policies.yml
        - annotations:
            file: annotations.yml

    # Users
    # Deprecated. Will be removed in future releases
    users:
        tom: passwd
        bob: passwd

    cassandraConfig:
        # Cassandra hostname
        cassandraHosts: <%= @cassandra_ip %>

        # Cassandra local data center name
        localDataCenter: <%= @DC_NAME %>

        # The read timeout towards Cassandra when health check is invoked
        reconnectTimeout : 30000
        # The amount of time the Cassandra client will wait for a socket
        socketReadTimeout: <%= @socket_read_timeout %>
        # The amount of time the Cassandra client will wait for a response
        socketConnectTimeout: <%= @socket_connect_timeout %>

        # Should authentication be used when accessing Cassandra
        authenticate: true

        # Username for accessing Cassandra
        username: asdc_user

        # Password for accessing Cassandra
        password: {{cassandra_password}}

        # Should ssl be used
        ssl: false

        # Location of .truststore file
        truststorePath : /config/.truststore

        # The .truststore file password
        truststorePassword : changeme

        # Keyspaces configuration for Cassandra
        keySpaces:
            - { name: dox, replicationStrategy: NetworkTopologyStrategy, replicationInfo: ['<%= @DC_NAME %>','<%= @rep_factor %>']}
            - { name: sdcaudit, replicationStrategy: NetworkTopologyStrategy, replicationInfo: ['<%= @DC_NAME %>','<%= @rep_factor %>']}
            - { name: sdcartifact, replicationStrategy: NetworkTopologyStrategy, replicationInfo: ['<%= @DC_NAME %>','<%= @rep_factor %>']}
            - { name: sdccomponent, replicationStrategy: NetworkTopologyStrategy, replicationInfo: ['<%= @DC_NAME %>','<%= @rep_factor %>']}
            - { name: sdcrepository, replicationStrategy: NetworkTopologyStrategy, replicationInfo: ['<%= @DC_NAME %>','<%= @rep_factor %>']}


    # Artifact types placeholder
    artifactTypes:
        - CHEF
        - PUPPET
        - SHELL
        - YANG
        - YANG_XML
        - HEAT
        - BPEL
        - DG_XML
        - MURANO_PKG
        - WORKFLOW
        - NETWORK_CALL_FLOW
        - TOSCA_TEMPLATE
        - TOSCA_CSAR
        - AAI_SERVICE_MODEL
        - AAI_VF_MODEL
        - AAI_VF_MODULE_MODEL
        - AAI_VF_INSTANCE_MODEL
        - OTHER
        - SNMP_POLL
        - SNMP_TRAP
        - GUIDE
        - PLAN

    # License types placeholder
    licenseTypes:
        - User
        - Installation
        - CPU

    # Resource types placeholder
    resourceTypes: &allResourceTypes
        - VFC
        - CP
        - VL
        - VF
        - CR
        - VFCMT
        - Abstract
        - CVFC

    #Deployment resource artifacts placeHolder
    deploymentResourceArtifacts:

    # Deployment resource instance artifact placeholders
    # For each artifact the following properties exist:
    #
    # displayName - The display name of the artifact
    # type - The type of the artifact
    # description - The description of the artifact
    # fileExtension - The file extension of the artifact file for uploading
    deploymentResourceInstanceArtifacts:
        heatEnv:
            displayName: "HEAT ENV"
            type: HEAT_ENV
            description: "Auto-generated HEAT Environment deployment artifact"
            fileExtension: "env"
        VfHeatEnv:
            displayName: "VF HEAT ENV"
            type: HEAT_ENV
            description: "VF Auto-generated HEAT Environment deployment artifact"
            fileExtension: "env"

    # Tosca artifacts placeholders
    # For each artifact there is a template and a csar.
    # For each one the following properties exists:
    #
    # artifactName - The suffix of the artifact file
    # displayName - The display name of the artifact
    # type - The type of the artifact
    # description - The description of the artifact
    toscaArtifacts:
        assetToscaTemplate:
            artifactName: -template.yml
            displayName: Tosca Template
            type: TOSCA_TEMPLATE
            description: TOSCA representation of the asset
        assetToscaCsar:
            artifactName: -csar.csar
            displayName: Tosca Model
            type: TOSCA_CSAR
            description: TOSCA definition package of the asset

    # Resource category to exclude
    excludeResourceCategory:
        - Generic

    # Resource type to exclude
    excludeResourceType:
        - PNF
        - CR
    # Informational resource artifacts placeHolder
    # For each artifact the following properties exists:
    #
    # displayName - The display name of the artifact
    # type - The type of the artifact
    informationalResourceArtifacts:
        features:
            displayName: Features
            type: OTHER
    capacity:
        displayName: Capacity
        type: OTHER
    vendorTestResult:
        displayName: Vendor Test Result
        type: OTHER
    testScripts:
        displayName: Test Scripts
        type: OTHER
    CloudQuestionnaire:
        displayName: Cloud Questionnaire (completed)
        type: OTHER
    HEATTemplateFromVendor:
        displayName: HEAT Template from Vendor
        type: HEAT
    resourceSecurityTemplate:
        displayName: Resource Security Template
        type: OTHER

    # Service category to exclude
    excludeServiceCategory:

    # Informational service artifacts placeHolder
    # For each artifact the following properties exists:
    #
    # displayName - The display name of the artifact
    # type - The type of the artifact
    informationalServiceArtifacts:
        serviceArtifactPlan:
            displayName: Service Artifact Plan
            type: OTHER
        summaryOfImpactsToECOMPElements:
            displayName: Summary of impacts to ECOMP elements,OSSs, BSSs
            type: OTHER
        controlLoopFunctions:
            displayName: Control Loop Functions
            type: OTHER
        dimensioningInfo:
            displayName: Dimensioning Info
            type: OTHER
        affinityRules:
            displayName: Affinity Rules
            type: OTHER
        operationalPolicies:
            displayName: Operational Policies
            type: OTHER
        serviceSpecificPolicies:
            displayName: Service-specific Policies
            type: OTHER
        engineeringRules:
            displayName: Engineering Rules (ERD)
            type: OTHER
        distributionInstructions:
            displayName: Distribution Instructions
            type: OTHER
        certificationTestResults:
            displayName: TD Certification Test Results
            type: OTHER
        deploymentVotingRecord:
            displayName: Deployment Voting Record
            type: OTHER
        serviceQuestionnaire:
            displayName: Service Questionnaire
            type: OTHER
        serviceSecurityTemplate:
            displayName: Service Security Template
            type: OTHER

    # Service api artifacts placeHolder
    # For each artifact the following properties exists:
    #
    # displayName - The display name of the artifact
    # type - The type of the artifact
    serviceApiArtifacts:
        configuration:
            displayName: Configuration
            type: OTHER
        instantiation:
            displayName: Instantiation
            type: OTHER
        monitoring:
            displayName: Monitoring
            type: OTHER
        reporting:
            displayName: Reporting
            type: OTHER
        logging:
            displayName: Logging
            type: OTHER
        testing:
            displayName: Testing
            type: OTHER

    # The maximum number of keys permitted for additional information on service
    additionalInformationMaxNumberOfKeys: 50

    # Collect process statistics
    systemMonitoring:

        # Should monitoring be enabled
        enabled: false

        # In case of going through the FE server proxy the information to the BE
        isProxy: false

        # What is the interval of the statistics collection
        probeIntervalInSeconds: 15

    defaultHeatArtifactTimeoutMinutes: 60

    # Service deployment artifacts placeHolder
    # For each artifact the following properties exists:
    #
    # acceptedTypes - File types that can be uploaded as each artifact
    serviceDeploymentArtifacts:
        YANG_XML:
            acceptedTypes:
                - xml
        VNF_CATALOG:
            acceptedTypes:
                - xml
        MODEL_INVENTORY_PROFILE:
            acceptedTypes:
                - xml
        MODEL_QUERY_SPEC:
            acceptedTypes:
                - xml
        UCPE_LAYER_2_CONFIGURATION:
            acceptedTypes:
                - xml

    #AAI Artifacts
        AAI_SERVICE_MODEL:
            acceptedTypes:
                - xml
        AAI_VF_MODULE_MODEL:
            acceptedTypes:
                - xml
        AAI_VF_INSTANCE_MODEL:
            acceptedTypes:
                - xml
        UCPE_LAYER_2_CONFIGURATION:
            acceptedTypes:
                - xml
        OTHER:
            acceptedTypes:

    #PLAN
        PLAN:
            acceptedTypes:
                - xml
    WORKFLOW:
            acceptedTypes:
    # Resource deployment artifacts placeHolder
    # For each artifact the following properties exists:
    #
    # acceptedTypes - File types that can be uploaded as each artifact
    # validForRespurceTypes - Resource types that support each artifact.
    # If left empty it means all resource types are valid
    resourceDeploymentArtifacts:
        HEAT:
            acceptedTypes:
                - yaml
                - yml
            validForResourceTypes: *allResourceTypes
        HEAT_VOL:
            acceptedTypes:
                - yaml
                - yml
            validForResourceTypes: *allResourceTypes
        HEAT_NET:
            acceptedTypes:
                - yaml
                - yml
            validForResourceTypes: *allResourceTypes
        HEAT_NESTED:
            acceptedTypes:
                - yaml
                - yml
            validForResourceTypes: *allResourceTypes
        HEAT_ARTIFACT:
            acceptedTypes:
            validForResourceTypes: *allResourceTypes
        YANG_XML:
            acceptedTypes:
                - xml
            validForResourceTypes: *allResourceTypes
        VNF_CATALOG:
            acceptedTypes:
                - xml
            validForResourceTypes: *allResourceTypes
        VF_LICENSE:
            acceptedTypes:
                - xml
            validForResourceTypes: *allResourceTypes
        VENDOR_LICENSE:
            acceptedTypes:
                - xml
            validForResourceTypes: *allResourceTypes
        MODEL_INVENTORY_PROFILE:
            acceptedTypes:
                - xml
            validForResourceTypes: *allResourceTypes
        MODEL_QUERY_SPEC:
            acceptedTypes:
                - xml
            validForResourceTypes: *allResourceTypes
        LIFECYCLE_OPERATIONS:
            acceptedTypes:
                - yaml
                - yml
            validForResourceTypes:
                - VF
                - VFC
        VES_EVENTS:
            acceptedTypes:
                - yaml
                - yml
            validForResourceTypes: *allResourceTypes
        PERFORMANCE_COUNTER:
            acceptedTypes:
                - csv
            validForResourceTypes: *allResourceTypes
        APPC_CONFIG:
            acceptedTypes:
            validForResourceTypes:
                - VF
        DCAE_TOSCA:
            acceptedTypes:
                - yml
                - yaml
            validForResourceTypes:
                - VF
                - VFCMT
        DCAE_JSON:
            acceptedTypes:
                - json
            validForResourceTypes:
                - VF
                - VFCMT
        DCAE_POLICY:
            acceptedTypes:
                - emf
            validForResourceTypes:
                - VF
                - VFCMT
        DCAE_DOC:
            acceptedTypes:
            validForResourceTypes:
                - VF
                - VFCMT
        DCAE_EVENT:
            acceptedTypes:
            validForResourceTypes:
                - VF
                - VFCMT
        AAI_VF_MODEL:
            acceptedTypes:
                - xml
            validForResourceTypes:
                - VF
        AAI_VF_MODULE_MODEL:
            acceptedTypes:
                - xml
            validForResourceTypes:
                - VF
        OTHER:
            acceptedTypes:
            validForResourceTypes: *allResourceTypes
        SNMP_POLL:
            acceptedTypes:
            validForResourceTypes: *allResourceTypes
        SNMP_TRAP:
            acceptedTypes:
            validForResourceTypes: *allResourceTypes

    #PLAN
        PLAN:
            acceptedTypes:
                - xml
            validForResourceTypes:
                - VF
                - VFC
    WORKFLOW:
        acceptedTypes:

    # Resource instance deployment artifacts placeHolder
    # For each artifact the following properties exists:
    #
    # acceptedTypes - File types that can be uploaded as each artifact
    # validForRespurceTypes - Resource types that support each artifact.
    # If left empty it means all resource types are valid
    resourceInstanceDeploymentArtifacts:
        HEAT_ENV:
            acceptedTypes:
                - env
        VF_MODULES_METADATA:
            acceptedTypes:
                - json
        VES_EVENTS:
            acceptedTypes:
                - yaml
                - yml
        PERFORMANCE_COUNTER:
            acceptedTypes:
                - csv
        DCAE_INVENTORY_TOSCA:
            acceptedTypes:
                - yml
                - yaml
        DCAE_INVENTORY_JSON:
            acceptedTypes:
                - json
        DCAE_INVENTORY_POLICY:
          acceptedTypes:
                - emf
        DCAE_INVENTORY_DOC:
          acceptedTypes:
        DCAE_INVENTORY_BLUEPRINT:
          acceptedTypes:
        DCAE_INVENTORY_EVENT:
          acceptedTypes:
        SNMP_POLL:
            acceptedTypes:
            validForResourceTypes: *allResourceTypes
        SNMP_TRAP:
            acceptedTypes:
            validForResourceTypes: *allResourceTypes

    #PLAN
        PLAN:
            acceptedTypes:
                - xml

    # Resource informational artifacts placeHolder
    # For each artifact the following properties exists:
    #
    # acceptedTypes - File types that can be uploaded as each artifact
    # validForRespurceTypes - Resource types that support each artifact.
    # If left empty it means all resource types are valid
    resourceInformationalArtifacts:
        CHEF:
            acceptedTypes:
            validForResourceTypes: *allResourceTypes
        PUPPET:
            acceptedTypes:
            validForResourceTypes: *allResourceTypes
        SHELL:
            acceptedTypes:
            validForResourceTypes: *allResourceTypes
        YANG:
            acceptedTypes:
            validForResourceTypes: *allResourceTypes
        YANG_XML:
            acceptedTypes:
            validForResourceTypes: *allResourceTypes
        HEAT:
            acceptedTypes:
            validForResourceTypes: *allResourceTypes
        BPEL:
            acceptedTypes:
            validForResourceTypes: *allResourceTypes
        DG_XML:
            acceptedTypes:
            validForResourceTypes: *allResourceTypes
        MURANO_PKG:
            acceptedTypes:
            validForResourceTypes: *allResourceTypes
        OTHER:
            acceptedTypes:
            validForResourceTypes:
                - VFC
                - CVFC
                - CP
                - VL
                - VF
                - CR
                - VFCMT
                - Abstract
                - PNF
        SNMP_POLL:
            acceptedTypes:
            validForResourceTypes: *allResourceTypes
        SNMP_TRAP:
            acceptedTypes:
            validForResourceTypes: *allResourceTypes
        GUIDE:
            acceptedTypes:
            validForResourceTypes:
                - VF
                - VFC
                - CVFC

    # Requirements needed to be fulfilled before certification
    requirementsToFulfillBeforeCert:

    # Capabilities needed to be fulfilled before certification
    capabilitiesToConsumeBeforeCert:

    # Urls that should not be logged
    unLoggedUrls:
       - /sdc2/rest/healthCheck

    # When component is being set as deleted those are the clean configurations
    cleanComponentsConfiguration:

        # The interval to check for deleted components to clean
        cleanIntervalInMinutes: 1440

        # The components types to delete
        componentsToClean:
           - Resource
           - Service

    # Deprecated. Will be removed in future releases
    artifactsIndex: resources

    # Used to add header and footer to heatENV files generated by SDC
    heatEnvArtifactHeader: ""
    heatEnvArtifactFooter: ""

    onboarding:

        # Onboarding protocol
        protocol: http

        # Onboarding backend hostname
        host: <%= @host_ip %>

        # Onboarding backend http port
        port: <%= @catalog_port %>

        # The url that being used when downloading CSARs
        downloadCsarUri: "/onboarding-api/v1.0/vendor-software-products/packages"

        # Url for onboarding health check
        healthCheckUri: "/onboarding-api/v1.0/healthcheck"

    dcae:
        # The ip of the onboarding docker
        host: <%= @dcae_be_vip %>
        # The protocol to use
        protocol: <https/http>
        # The port the docker is listening on
        port: <port>
        # The url of the health check to use
        healthCheckUri: "/dcae/healthCheck"


    #GSS IDNS
    # Switchover configuration is used for Geo redundancy to provide automatic failovers
    switchoverDetector:
        gBeFqdn:
        gFeFqdn:
        beVip: 1.2.3.4
        feVip: 1.2.3.4
        beResolveAttempts: 3
        feResolveAttempts: 3
        enabled: false
        interval: 60
        changePriorityUser: onapsdc
        changePriorityPassword: changeme
        publishNetworkUrl:
        publishNetworkBody: '{"note":"comment"}'
        groups:
          beSet: { changePriorityUrl: "", changePriorityBody: '{"name":"","uri":"","no_ad_redirection":false,"v4groups":{"failover_groups":["","","failover_policy":["FAILALL"]},"comment":"","intended_app_proto":"DNS"}'}
          feSet: { changePriorityUrl: "", changePriorityBody: '{"name":"","uri":"","no_ad_redirection":false,"v4groups":{"failover_groups":["",""],"failover_policy":["FAILALL"]},"comment":"","intended_app_proto":"DNS"}'}

    # Cache for datatypes. Improving run times for data type search
    applicationL1Cache:
        datatypes:
            enabled: true
            firstRunDelay: 10
            pollIntervalInSec: 60

    # Deprecated. Will be removed in future releases
    applicationL2Cache:
        enabled: false
        catalogL1Cache:
            enabled: false
            resourcesSizeInCache: 300
            servicesSizeInCache: 200
            productsSizeInCache: 100
        queue:
            syncIntervalInSecondes: 43200
            waitOnShutDownInMinutes: 10
            numberOfCacheWorkers: 4

    # Validators for Tosca properties
    toscaValidators:
        stringMaxLength: 2500

    # Should audit be disabled
    disableAudit: false

    # VF module validations properties
    vfModuleProperties:
        min_vf_module_instances:
            forBaseModule: 1
            forNonBaseModule: 0
        max_vf_module_instances:
            forBaseModule: 1
            forNonBaseModule:
        initial_count:
            forBaseModule: 1
            forNonBaseModule: 0
        vf_module_type:
            forBaseModule: Base
            forNonBaseModule: Expansion

    # For each generic node type defining its corresponding class
    genericAssetNodeTypes:
        VFC: org.openecomp.resource.abstract.nodes.VFC
        CVFC: org.openecomp.resource.abstract.nodes.VFC
        VF : org.openecomp.resource.abstract.nodes.VF
        PNF: org.openecomp.resource.abstract.nodes.PNF
        Service: org.openecomp.resource.abstract.nodes.service
    # tenant isolation configuration
    workloadContext: Production
    # tenant isolation configuration
    environmentContext:
        defaultValue: General_Revenue-Bearing
        validValues:
           - Critical_Revenue-Bearing
           - Vital_Revenue-Bearing
           - Essential_Revenue-Bearing
           - Important_Revenue-Bearing
           - Needed_Revenue-Bearing
           - Useful_Revenue-Bearing
           - General_Revenue-Bearing
           - Critical_Non-Revenue
           - Vital_Non-Revenue
           - Essential_Non-Revenue
           - Important_Non-Revenue
           - Needed_Non-Revenue
           - Useful_Non-Revenue
           - General_Non-Revenue
    # tenant isolation configuration
    dmaapConsumerConfiguration:
        hosts: localhost:3905
        consumerGroup: sdc
        consumerId: mama
        timeoutMs: 15000
        limit: 1
        pollingInterval: 2
        topic: topic
        latitude: 32.109333
        longitude: 34.855499
        version: 1.0
        serviceName: localhost/events
        environment: TEST
        partner: BOT_R
        routeOffer: MR1
        protocol: https
        contenttype: application/json
        dme2TraceOn: true
        aftEnvironment: AFTUAT
        aftDme2ConnectionTimeoutMs: 15000
        aftDme2RoundtripTimeoutMs: 240000
        aftDme2ReadTimeoutMs: 50000
        dme2preferredRouterFilePath: DME2preferredRouter.txt
        timeLimitForNotificationHandleMs: 120000
        credential:
            username: user
            password:
    # tenant isolation configuration
    dmeConfiguration:
        dme2Search: DME2SEARCH
        dme2Resolve: DME2RESOLVE
    # definition for policies types that cannot by created by api
    excludedPolicyTypesMapping:
       # VF:
        #  - a.b.c
        #  - c.d.e
        #CR:
        #  - x.y.z
    # definition for group types that cannot by created by api
    excludedGroupTypesMapping:
        CR:
           - org.openecomp.groups.VfModule
           - org.openecomp.groups.heat.HeatStack
           - tosca.groups.Root
        PNF:
           - org.openecomp.groups.VfModule
           - org.openecomp.groups.heat.HeatStack
           - tosca.groups.Root
        VF:
           - org.openecomp.groups.VfModule
           - org.openecomp.groups.heat.HeatStack
           - tosca.groups.Root
        Service:
           - org.openecomp.groups.VfModule
           - org.openecomp.groups.heat.HeatStack
           - tosca.groups.Root

    healthStatusExclude:
       - DE
       - DMAAP
       - DCAE

    # This configuration entry lists all node type names prefix that shall be allowed on SDC.
    definedResourceNamespace:
       - org.openecomp.resource.

BE-distribution-engine-configuration.yaml
*****************************************

::

    # UEB servers list
    uebServers:
        <% node['UEB']['fqdn'].each do |conn| -%>
            - <%= conn %>
        <% end -%>

    # UEB public key
    uebPublicKey: <%= node['UEB']['PublicKey'] %>

    # UEB secret key
    uebSecretKey: <%= node['UEB']['SecretKey'] %>

    # Topic name for receiving distribution notification
    distributionNotifTopicName:  SDC-DISTR-NOTIF-TOPIC

    # Topic name for distribution status
    distributionStatusTopicName: SDC-DISTR-STATUS-TOPIC

    # Distribution initialization retry interval time
    initRetryIntervalSec: 5

    # Distribution initialization maximum interval time
    initMaxIntervalSec: 60

    # Deprecated. Will be removed in future releases
    distribNotifServiceArtifactTypes:
        info:
            - MURANO-PKG

    # Deprecated. Will be removed in future releases
    distribNotifResourceArtifactTypes:
        lifecycle:
            - HEAT
            - DG-XML

    # Distribution environments
    environments:
        - <%= node.chef_environment %>

    distributionStatusTopic:

        # Distribution status polling interval
        pollingIntervalSec: 60

        # Distribution status fetch time
        fetchTimeSec: 15

        # Distribution status consumer group
        consumerGroup: sdc-<%= node.chef_environment %>

        # Distribution status consumer id
        consumerId: sdc-<%= node.chef_environment %>1

    distributionNotificationTopic:

        # Minimum pool size for distribution notifications
        minThreadPoolSize: 0

        # Maximum pool size for distribution notifications
        maxThreadPoolSize: 10

        # Maximum waiting time after sending a notification
        maxWaitingAfterSendingSeconds: 5

    # Deprecated. Will be removed in future releases
    createTopic:
        partitionCount: 1
        replicationCount: 1

    # STarting the distribution engine
    startDistributionEngine: true

    #This is false by default, since ONAP Dmaap currently doesn't support https
    # Should https be used with Dmaap
    useHttpsWithDmaap: false
    opEnvRecoveryIntervalSec: 180
    allowedTimeBeforeStaleSec: 300
    # aai configuration for tenant isolation
    aaiConfig:
       httpRequestConfig:
          serverRootUrl: https://aai.onap.org:8443
          resourceNamespaces:
             operationalEnvironments: /aai/v12/cloud-infrastructure/operational-environments

       httpClientConfig:
          timeouts:
             readTimeoutMs: 5000
             connectTimeoutMs: 1000
          clientCertificate:
             keyStore: /opt/app/jetty/base/be/etc/non-prod.jks
             keyStorePassword: changeme
          headers:
             X-FromAppId: asdc
          numOfRetries: 3
    # mso configuration for tenant isolation
    msoConfig:
       httpRequestConfig:
          serverRootUrl: http://127.0.0.1:8080/onap/mso/infra/modelDistributions/v1
          resourceNamespaces:
             distributions: /distributions

       httpClientConfig:
           timeouts:
              readTimeoutMs: 2000
              connectTimeoutMs: 500
           basicAuthorization:
              userName: sdc
              password: changeme
           numOfRetries: 3

    currentArtifactInstallationTimeout: 120

BE-janusgraph.properties
************************

::

    # JanusGraph storage backend
    storage.backend=cassandra

    # JanusGraph storage hostname
    storage.hostname=<%= @CASSANDRA_IP %>

    # JanusGraph storage port
    storage.port=9042

    # JanusGraph storage username
    storage.username=<%= @CASSANDRA_USR %>

    # JanusGraph storage password
    storage.password=<%= @CASSANDRA_PWD %>

    # JanusGraph storage connection timeout
    storage.connection-timeout=10000

    # JanusGraph cassandra keyspace name
    storage.cassandra.keyspace=sdctitan

    # Is JanusGraph cassandra ssl is enabled
    storage.cassandra.ssl.enabled=false

    # JanusGraph cassandra ssl truststore file location
    storage.cassandra.ssl.truststore.location=/var/lib/jetty/config/.truststore

    # JanusGraph cassandra ssl truststore file password
    storage.cassandra.ssl.truststore.password=changeme

    # Should JanusGraph use cache
    cache.db-cache = false

    # How long in milliseconds should the cache keep entries before flushing them
    cache.db-cache-clean-wait = 20

    # Default expiration time in milliseconds for entries in the cache
    cache.db-cache-time = 180000

    # Size of JanusGraph database cache
    cache.db-cache-size = 0.5

    # JanusGraph cassandra read consistency level
    storage.cassandra.read-consistency-level=LOCAL_QUORUM

    # JanusGraph cassandra write consistency level
    storage.cassandra.write-consistency-level=LOCAL_QUORUM

    # JanusGraph cassandra replication strategy class name
    storage.cassandra.replication-strategy-class=org.apache.cassandra.locator.NetworkTopologyStrategy

    # JanusGraph cassandra replication startegy options
    storage.cassandra.replication-strategy-options=<%= @DC_NAME %>,<%= @rep_factor %>

    # JanusGraph cassandra local data center name
    storage.cassandra.astyanax.local-datacenter=<%= @DC_NAME %>

    # Number of times the system attempts to acquire a lock before giving up and throwing an exception
    storage.lock.retries=5

    # Number of milliseconds the system waits for a lock application to be acknowledged by the storage backend
    storage.lock.wait-time=500


Onboarding configuration
------------------------

BE-onboarding-configuration.yaml
********************************

::

    notifications:

        # Backend onboarding notifications polling interval in milliseconds
        pollingIntervalMsec: 2000

        # Backend onboarding notifications selection size
        selectionSize: 100

        # Backend onboarding notifications backend hostname
        beHost: <%= @catalog_ip %>

        # Backend onboarding notifications backend http port
        beHttpPort: <%= @catalog_port %>
    # Casandra configuration
    cassandraConfig:
        cassandraHosts: [<%= @cassandra_ip %>]
        localDataCenter: <%= @DC_NAME %>
        reconnectTimeout : 30000
        socketReadTimeout: <%= @socket_read_timeout %>
        socketConnectTimeout: <%= @socket_connect_timeout %>
        authenticate: true
        username: <%= @cassandra_usr %>
        password: <%= @cassandra_pwd %>
        ssl: <%= @cassandra_ssl_enabled %>
        truststorePath: /config/truststore
        truststorePassword: <%= @cassandra_truststore_password %>

externaltesting-configuration.yaml
**********************************

::

    # configuration to make available to the front end of this feature
    client:
      enabled: true
    # array of endpoints that SDC-BE should connect with for external testing
    # id,label,enabled,url[,scenariofilter][,apikey]
    endpoints:
      - vtp:VTP,true,http://<hostname>[:<port>]/onapapi/vnfsdk-marketplace,c.*
      - repository:Repository,false,http://<ovphostname>[:<ovpport>]



vnfrepo-configuration.yaml
**************************

::

    # The port on which the vnfsdk is licensing
    vnfRepoPort: <port>
    # The ip where vnfdk is deployed
    vnfRepoHost: <ip>
    # The url used for querying the vnf sdk for available CSARs
    getVnfUri: /onapapi/vnfsdk-marketplace/v1/PackageResource/csars
    # The url used for downloading the the CSAR from vnf sdk
    downloadVnfUri: /onapapi/vnfsdk-marketplace/v1/PackageResource/csars/%s/files



Frontend Configuration
======================
Catalog configuration
---------------------

FE-configuration.yaml
*********************

::

    # Catalog frontend hostname
    feFqdn: <%= @fe_host_ip %>

    # Catalog backend hostname
    beHost: <%= @be_host_ip %>

    # Catalog backend http port
    beHttpPort: <%= @catalog_port %>

    # Catalog backend http context
    beContext: /sdc2/rest/v1/catalog/upload/resources

    # Catalog backend protocol
    beProtocol: http

    # Catalog backend ssl port
    beSslPort: <%= @ssl_port %>

    # Threadpool size for handling requests
    threadpoolSize: 50

    # Request processing timeout (seconds)
    requestTimeout: 10

    # Health check timeout in milliseconds
    healthCheckSocketTimeoutInMs: 5000

    # Health check inteval in seconds
    healthCheckIntervalInSeconds: 5

    onboarding:

        # Onboarding protocol
        protocol: http

        # Onboarding frontend hostname
        host: <%= @fe_host_ip %>

        # Onboarding frontend port
        port: 8181

        # Onboarding frontend health check url
        healthCheckUri: "/onboarding/v1.0/healthcheck"

    # Request headers for identification of the user that made the request
    identificationHeaderFields:
        -
            - &HTTP_IV_USER HTTP_IV_USER
            - &iv-user iv-user
        -
            - &USER_ID USER_ID
            - &user-id user-id
        -
            - &HTTP_CSP_ATTUID HTTP_CSP_ATTUID
            - &csp-attuid csp-attuid
        -
            - &HTTP_CSP_WSTYPE HTTP_CSP_WSTYPE
            - &csp-wstype csp-wstype

    # Optional request headers
    optionalHeaderFields:
        -
            - &HTTP_CSP_FIRSTNAME HTTP_CSP_FIRSTNAME
            - &csp-firstname csp-firstname
        -
            - &HTTP_CSP_LASTNAME HTTP_CSP_LASTNAME
            - &csp-lastname csp-lastname
        -
            - &HTTP_IV_REMOTE_ADDRESS HTTP_IV_REMOTE_ADDRESS
            - &iv-remote-address iv-remote-address
        -
            - &HTTP_CSP_EMAIL HTTP_CSP_EMAIL
            - &csp-email csp-email

    # Frontend configuration version
    version: 1.0

    # Frontend configuration release date
    released: 2012-11-30

    # Connection parameters
    connection:
        url: jdbc:mysql://localhost:3306/db
        poolSize: 17

    # Protocols being used in SDC
    protocols:
        - http
        - https

    # Collect process statistics
    systemMonitoring:

        # Should monitoring be enabled
        enabled: false

        # In case of going through the FE server proxy the information to the BE
        isProxy: true

        # What is the interval of the statistics collection
        probeIntervalInSeconds: 15


FE-plugins-configuration.yaml
*****************************
::

   # definition of the plugins that exist in sdc
   # we have a pre-defined list of plugins that are connected to the system.
   # the plugins define where they are shown, to whom and on what elements
   pluginsList:
        # the DCAE-DS is the SDC monitoring design studio this entry defines there use as part of the service level context
      - pluginId: DCAED
        # this defines from which url to chek that they are available
        pluginDiscoveryUrl: <%= @dcae_discovery_url %>
        # this defines from wht URL will ther you be served.
        pluginSourceUrl: <%= @dcae_source_url %>
        #thsi defines the plugin state name used by the UI for sending messages.
        pluginStateUrl: "dcaed"
        # the display options for the plugin
        pluginDisplayOptions:
           # the plugin will be displayed in the context of a catalog item
           context:
               # what will the option tag in the ui will be called
               displayName: "Monitoring"
               # under what catalog item to display it
               displayContext: ["SERVICE"]
               # what user roles will have the option to access the plugin
               displayRoles: ["DESIGNER"]
        # DCAE-DS as a tab
      - pluginId: DCAE-DS
        pluginDiscoveryUrl: <%= @dcae_dt_discovery_url %>
        pluginSourceUrl: <%= @dcae_dt_source_url %>
        pluginStateUrl: "dcae-ds"
        pluginDisplayOptions:
          tab:
              displayName: "DCAE-DS"
              displayRoles: ["DESIGNER"]
        #work flow plugin
      - pluginId: WORKFLOW
        pluginDiscoveryUrl: <%= @workflow_discovery_url %>
        pluginSourceUrl: <%= @workflow_source_url %>
        pluginStateUrl: "workflowDesigner"
        pluginDisplayOptions:
           tab:
               displayName: "WORKFLOW"
               displayRoles: ["DESIGNER", "TESTER"]

   # how long we will wait for the plugin to respond before cutting it.
   connectionTimeout: 1000

FE-workspace-configuration.yaml
*******************************
::

    # this file contains the different configurable UI workspace items that can be set according to resource and service type.
    # the workspaceMenuConfiguration entry defines the workspace menus that are displayed according to type/subtype of the component in the workspace
    # in addition, they can also be disabled for specific roles. the key is the resource type or service type and it will return the list of the menu
    # items that will be displayed.
    #
    # each key had a list of menu items with the following data:
    #   - text: display text,
    #   - state: the state for the screen
    #   - action: action associated
    #   - index: optional - an integer that will be used to decide on the order of appearance
    # following are 2 example
    workspaceMenuConfiguration:
      VFC:
      - text: General
        action: onMenuItemPressed
        state: workspace.general
      - text: Deployment Artifact
        action: onMenuItemPressed
        state: workspace.deployment_artifacts
      - text: Information Artifact
        action: onMenuItemPressed
        state: workspace.information_artifacts
      - text: TOSCA Artifacts
        action: onMenuItemPressed
        state: workspace.tosca_artifacts
      - text: Properties
        action: onMenuItemPressed
        state: workspace.properties
      - text: Attributes
        action: onMenuItemPressed
        state: workspace.attributes
      - text: Req. & Capabilities
        action: onMenuItemPressed
        state: workspace.reqAndCap
      - text: Activity Log
        action: onMenuItemPressed
        state: workspace.activity_log
      SERVICE:
      - text: General
        action: onMenuItemPressed
        state: workspace.general
      - text: TOSCA Artifacts
        action: onMenuItemPressed
        state: workspace.tosca_artifacts
      - text: Composition
        action: onMenuItemPressed
        state: workspace.composition.details
      - text: Operation
        action: onMenuItemPressed
        state: workspace.interface_operation
      - text: Activity Log
        action: onMenuItemPressed
        state: workspace.activity_log
      - text: Management Workflow
        action: onMenuItemPressed
        state: workspace.management_workflow
      - text: 'Network Call Flow '
        action: onMenuItemPressed
        state: workspace.network_call_flow
      - text: Distribution
        action: onMenuItemPressed
        state: workspace.distribution
        disabledRoles:
        - ADMIN
        - TESTER
        - GOVERNOR
        - DESIGNER
      - text: Deployment
        action: onMenuItemPressed
        state: workspace.deployment
      - text: Properties Assignment
        action: onMenuItemPressed
        state: workspace.properties_assignment
      - text: Outputs
        action: onMenuItemPressed
        state: workspace.outputs_assignment
      - text: Req. & Capabilities
        action: onMenuItemPressed
        state: workspace.reqAndCapEditable


Onboarding configuration
------------------------

FE-onboarding-configuration.yaml
********************************

::

    notifications:

        # Frontend onboarding notifications polling interval in milliseconds
        pollingIntervalMsec: 2000

        # Frontend onboarding notifications selection size
        selectionSize: 100

        # Frontend onboarding notifications backend hostname
        beHost: <%= @catalog_ip %>

        # Frontend onboarding notifications backend http port
        beHttpPort: <%= @catalog_port %>


