summaryrefslogtreecommitdiffstats
path: root/docker-compose/docker-compose.yml
blob: b845840f499043d6ff4737e8f30d67ec1a67a8c5 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
# ============LICENSE_START=======================================================
# Copyright (c) 2020 Pantheon.tech.
# Modifications Copyright (C) 2021 Bell Canada.
# Modifications Copyright (C) 2022-2023 Nordix Foundation.
# ================================================================================
# 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.
# ============LICENSE_END=========================================================

services:

  ### docker-compose --profile dmi-service up -d -> run CPS services incl. dmi-plugin ###
  ### docker-compose --profile dmi-stub --profile monitoring up -d -> run CPS with stubbed dmi-plugin (for registration performance testing)
  ### to disable notifications make notification.enabled to false & comment out kafka/zookeeper services ###

  dbpostgresql:
    container_name: dbpostgresql
    image: postgres:14.1-alpine
    ports:
      - ${DB_PORT:-5432}:5432
    environment:
      POSTGRES_DB: cpsdb
      POSTGRES_USER: ${DB_USERNAME:-cps}
      POSTGRES_PASSWORD: ${DB_PASSWORD:-cps}

  cps-and-ncmp:
    container_name: cps-and-ncmp
    image: ${DOCKER_REPO:-nexus3.onap.org:10003}/onap/cps-and-ncmp:${CPS_VERSION:-latest}
    ports:
      - ${CPS_CORE_PORT:-8883}:8080
      - ${CPS_CORE_DEBUG_PORT:-5005}:5005
    environment:
      CPS_USERNAME: ${CPS_CORE_USERNAME:-cpsuser}
      CPS_PASSWORD: ${CPS_CORE_PASSWORD:-cpsr0cks!}
      DB_HOST: ${DB_HOST:-dbpostgresql}
      DB_USERNAME: ${DB_USERNAME:-cps}
      DB_PASSWORD: ${DB_PASSWORD:-cps}
      DMI_USERNAME: ${DMI_USERNAME:-cpsuser}
      DMI_PASSWORD: ${DMI_PASSWORD:-cpsr0cks!}
      KAFKA_BOOTSTRAP_SERVER: kafka:29092
      notification.enabled: 'true'
      notification.async.executor.time-out-value-in-ms: 2000
      NOTIFICATION_DATASPACE_FILTER_PATTERNS: '.*'
      NCMP_TIMERS_ADVISED-MODULES-SYNC_SLEEP-TIME-MS: ${ADVISED_MODULES_SYNC_SLEEP_TIME_MS:-30000}
      NCMP_TIMERS_CM-HANDLE-DATA-SYNC_SLEEP-TIME-MS: ${CMHANDLE_DATA_SYNC_SLEEP_TIME_MS:-30000}
      JAVA_TOOL_OPTIONS: -agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=*:5005
    restart: unless-stopped
    depends_on:
      - dbpostgresql

  ### if kafka is not required comment out zookeeper and kafka ###
  zookeeper:
    image: confluentinc/cp-zookeeper:6.2.1
    container_name: zookeeper
    ports:
      - '2181:2181'
    environment:
      ZOOKEEPER_CLIENT_PORT: 2181

  kafka:
    image: confluentinc/cp-kafka:6.2.1
    container_name: kafka
    ports:
      - '9092:9092'
    depends_on:
      - zookeeper
    environment:
      KAFKA_BROKER_ID: 1
      KAFKA_ZOOKEEPER_CONNECT: zookeeper:2181
      KAFKA_LISTENER_SECURITY_PROTOCOL_MAP: PLAINTEXT:PLAINTEXT,CONNECTIONS_FROM_HOST:PLAINTEXT
      KAFKA_ADVERTISED_LISTENERS: PLAINTEXT://kafka:29092,CONNECTIONS_FROM_HOST://localhost:9092
      KAFKA_OFFSETS_TOPIC_REPLICATION_FACTOR: 1

  ncmp-dmi-plugin:
    container_name: ncmp-dmi-plugin
    image: ${DOCKER_REPO:-nexus3.onap.org:10003}/onap/ncmp-dmi-plugin:${DMI_VERSION:-1.4.0-SNAPSHOT-latest}
    ports:
      - ${DMI_PORT:-8783}:8080
    environment:
      CPS_USERNAME: ${CPS_CORE_USERNAME:-cpsuser}
      CPS_PASSWORD: ${CPS_CORE_PASSWORD:-cpsr0cks!}
      CPS_CORE_HOST: ${CPS_CORE_HOST:-cps-and-ncmp}
      CPS_CORE_PORT: ${CPS_CORE_PORT:-8080}
      CPS_CORE_USERNAME: ${CPS_CORE_USERNAME:-cpsuser}
      CPS_CORE_PASSWORD: ${CPS_CORE_PASSWORD:-cpsr0cks!}
      SDNC_HOST: ${SDNC_HOST:-sdnc}
      SDNC_PORT: ${SDNC_PORT:-8181}
      SDNC_USERNAME: ${SDNC_USERNAME:-admin}
      SDNC_PASSWORD: ${SDNC_PASSWORD:-Kp8bJ4SXszM0WXlhak3eHlcse2gAw84vaoGGmJvUy2U}
      DMI_SERVICE_URL: ${DMI_SERVICE_URL:-http://ncmp-dmi-plugin:8783}
      DMI_SERVICE_NAME: ${DMI_SERVICE_NAME:-dminame1}
      DMI_USERNAME: ${DMI_USERNAME:-cpsuser}
      DMI_PASSWORD: ${DMI_PASSWORD:-cpsr0cks!}
      KAFKA_BOOTSTRAP_SERVER: kafka:29092
      notification.data-updated.enabled: 'true'
      NOTIFICATION_DATASPACE_FILTER_PATTERNS: '.*'
    restart: unless-stopped
    profiles:
      - dmi-service

  ncmp-dmi-plugin-demo-and-csit-stub:
    container_name: ncmp-dmi-plugin-demo-and-csit-stub
    image: ${DOCKER_REPO:-nexus3.onap.org:10003}/onap/dmi-plugin-demo-and-csit-stub:${DMI_DEMO_STUB_VERSION:-latest}
    ports:
      - ${DMI_DEMO_STUB_PORT:-8784}:8092
    environment:
      KAFKA_BOOTSTRAP_SERVER: kafka:29092
      NCMP_CONSUMER_GROUP_ID: ncmp-group
      NCMP_ASYNC_M2M_TOPIC: ncmp-async-m2m
    restart: unless-stopped
    profiles:
      - dmi-stub
      - dmi-service

  prometheus:
    container_name: prometheus-container
    image: prom/prometheus:latest
    ports:
      - 9090:9090
    restart: always
    volumes:
      - ./prometheus.yml:/etc/prometheus/prometheus.yml
    profiles:
      - monitoring

  grafana:
    image: grafana/grafana-oss:latest
    user: ""
    container_name: grafana-container
    depends_on:
      prometheus:
        condition: service_started
    ports:
      - 3000:3000
    volumes:
      - grafana:/var/lib/grafana
    environment:
      - GF_SECURITY_ADMIN_PASSWORD=admin
      - GF_SERVER_DOMAIN:localhost
    profiles:
      - monitoring

volumes:
  grafana:
t;BUNDLE_NAME> ``` ### Accessing the API Explorer The API Explorer is a GUI provided by OpenDaylight Open Source Framework. This GUI is very useful to send API calls from APIs that are either developed by APPC or SDN-C frameworks. In order to make these REST calls, some APIs use the [RESTCONF](http://sdntutorials.com/what-is-restconf/) protocol to make such calls. Currently, the APIs that have a Directed Graph (DG) mapped to it are the ones that can be tested which are the SDN-C APIs and APPC "appc-provider" APIs (LCM APIs will be available to test in later releases). In order to access this GUI, you need to go to the following website which will prompt for ODL user credentials in order to authenticate (more details on generic API Explorer [here](https://wiki.opendaylight.org/view/OpenDaylight_Controller:MD-SAL:Restconf_API_Explorer)): - http://localhost:8282/apidoc/explorer/index.html (change localhost to your VM's public IP). # APPC Configuration Model APPC Configuration model involves using "default.properties" files (which are usually located in each of the APPC Features - ../<APPC_FEATURE_BUNDLE>/src/<MAIN_OR_TEST>/resources/org/onap/appc/default.properties) for APPC Feature that have default (or null) property values inside the core APPC code. These default (or null) properties should be overwritten in the properties file called "appc.properties" located in the APPC Deployment code (../installation/src/main/appc-properties/appc.properties). Each APPC component depends on the property values that are defined for them in order to function properly. For example, the APPC Feature "appc-rest-adapter" located in the APPC Core repo is used to listen to events that are being sent and received in the form of DMaaP Messages through a DMaaP Server Instance (which is usually defined as a RESTful API Layer over the Apache Kafka Framework). The properties for this feature need to be defined to point to the right DMaaP set of events to make sure that we are sending and receiving the proper messages on DMaaP. Currently, there are two ways to change properties for APPC Features: - Permanent Change: In appc.properties, change property values as needed and commit changes in your current git repo where your APPC Deployment code repo is at. Then, run your Jenkins job that deploys the APPC Docker Image (make sure the Jenkins Job configuration points to the branch where you just commited the properties change) to make sure that APPC Docker Image contains latest changes of appc.properties from the beginning (of course, the Host VM where the docker containers will be deployed at needs to update images with "docker-compose pull" to pick up the changes you just committed and compiled). - Temporary Change (for quick testing/debugging): In the APPC Docker Container, find the appc.properties file in /opt/onap/appc/properties/appc.properties and make changes as needed. Then, restart the APPC Docker Container by running "docker stop <APPC_DOCKER_CONTAINER>" then "docker start <APPC_DOCKER_CONTAINER>") (NOTE: This approach will lose all changes done in appc.properties if the docker container is destroyed instead of stopped). # Additional Notes - For more information on a current list of available properties for APPC Features, please go to README.md located in the installation directory path of the APPC Deployment Code. - More documentation can be found on the ONAP Wiki's [APPC Documentation Page](https://wiki.onap.org/display/DW/Controllers) and in ONAP's [Read the docs](http://onap.readthedocs.io/en/latest/release/index.html#projects) documentation site.