aboutsummaryrefslogtreecommitdiffstats
path: root/ms/blueprintsprocessor/modules/inbounds/health-api-common/src/main/kotlin/org/onap/ccsdk/cds/blueprintsprocessor/healthapi/configuration/HealthCheckProperties.kt
blob: ab1f9eb54b0eec7142739e5e8e385e4a8737b8ef (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
/*
 * Copyright © 2019-2020 Orange.
 *
 * 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.
 */

package org.onap.ccsdk.cds.blueprintsprocessor.healthapi.configuration

import org.onap.ccsdk.cds.blueprintsprocessor.healthapi.domain.ServiceEndpoint
import org.onap.ccsdk.cds.blueprintsprocessor.healthapi.domain.ServiceName
import org.springframework.beans.factory.annotation.Value
import org.springframework.context.annotation.Configuration
import org.springframework.context.annotation.PropertySource

@Configuration
@PropertySource("classpath:application.properties")
open class HealthCheckProperties {

    @Value("\${blueprintprocessor.healthcheck.baseUrl:}")
    private val bluePrintProcessorBaseURL: String? = null

    @Value("#{'\${blueprintprocessor.healthcheck.mapping-service-name-with-service-link:}'.split(']')}")
    private val blueprintprocessorServiceMapping: List<String>? = null

    @Value("\${cdslistener.healthcheck.baseUrl:}")
    private val cdsListenerBaseURL: String? = null

    @Value("#{'\${cdslistener.healthcheck.mapping-service-name-with-service-link:}'.split(']')}")
    private val cdsListenerServiceMapping: List<String>? = null

    open fun getBlueprintBaseURL(): String? {
        return bluePrintProcessorBaseURL
    }

    open fun getCDSListenerBaseURL(): String? {
        return cdsListenerBaseURL
    }

    open fun getBlueprintServiceInformation(): List<ServiceEndpoint> {
        val serviceName = ServiceName.BLUEPRINT
        return getListOfServiceEndPoints(blueprintprocessorServiceMapping, serviceName)
    }

    open fun getCDSListenerServiceInformation(): List<ServiceEndpoint> {
        val serviceName = ServiceName.CDSLISTENER
        return getListOfServiceEndPoints(cdsListenerServiceMapping, serviceName)
    }

    private fun getListOfServiceEndPoints(serviceMapping: List<String>?, serviceName: ServiceName): MutableList<ServiceEndpoint> {
        val serviceEndpoints = mutableListOf<ServiceEndpoint>()
        if (serviceMapping != null) {
            for (element in serviceMapping) {
                fillListOfService(serviceName, element, serviceEndpoints)
            }
        }
        return serviceEndpoints
    }

    private fun fillListOfService(serviceName: ServiceName, element: String, listOfCDSListenerServiceEndpoint: MutableList<ServiceEndpoint>) {
        val serviceEndpointInfo = element.split(",/")
        val serviceEndpoint = getServiceEndpoint(serviceEndpointInfo)
        if (serviceName.equals(ServiceName.CDSLISTENER))
            serviceEndpoint.serviceLink = cdsListenerBaseURL + serviceEndpoint.serviceLink
        else if (serviceName.equals(ServiceName.BLUEPRINT))
            serviceEndpoint.serviceLink = bluePrintProcessorBaseURL + serviceEndpoint.serviceLink
        listOfCDSListenerServiceEndpoint.add(serviceEndpoint)
    }

    private fun getServiceEndpoint(serviceEndpointInfo: List<String>): ServiceEndpoint {
        return ServiceEndpoint(
            removeSpecialCharacter(serviceEndpointInfo[0]), removeSpecialCharacter(serviceEndpointInfo[1])
        )
    }

    private fun removeSpecialCharacter(value: String): String {
        return value.replaceFirst(",[", "")
            .replace("[", "")
            .replace("]", "")
    }
}