aboutsummaryrefslogtreecommitdiffstats
path: root/vid-app-common/src/main/java/org/onap/vid/model/aaiTree/VpnBinding.kt
blob: d43bf26f0fde4af16f9dc2999bc87c74e8900460 (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
package org.onap.vid.model.aaiTree

import com.fasterxml.jackson.annotation.JsonAlias
import com.fasterxml.jackson.annotation.JsonCreator
import com.fasterxml.jackson.annotation.JsonIgnoreProperties
import com.fasterxml.jackson.annotation.JsonInclude
import com.fasterxml.jackson.core.type.TypeReference
import org.onap.portalsdk.core.logging.logic.EELFLoggerDelegate
import org.onap.vid.utils.JACKSON_OBJECT_MAPPER

@JsonIgnoreProperties(ignoreUnknown = true)
@JsonInclude(JsonInclude.Include.NON_NULL)
class VpnBinding(aaiNode: AAITreeNode) : Node(aaiNode) {
    @JsonCreator
    constructor() : this(AAITreeNode())
    var region: String? = null
    var customerId: String? = null
    var routeTargets: List<RouteTarget>? = null
}

val LOGGER: EELFLoggerDelegate = EELFLoggerDelegate.getLogger(VpnBinding::class.java)

fun from(node: AAITreeNode): VpnBinding {
    val vpnBinding = VpnBinding(node)
    vpnBinding.platformName = Node.readValueAsStringFromAdditionalProperties(node, "vpn-platform")
    vpnBinding.instanceType = Node.readValueAsStringFromAdditionalProperties(node, "vpn-type")
    vpnBinding.region = Node.readValueAsStringFromAdditionalProperties(node, "vpn-region")
    vpnBinding.customerId = Node.readValueAsStringFromAdditionalProperties(node, "customer-vpn-id")

    vpnBinding.routeTargets = try {
        JACKSON_OBJECT_MAPPER.convertValue(
                node.additionalProperties.getOrDefault("route-targets", emptyList<RouteTarget>()),
                object : TypeReference<List<RouteTarget>>() {})
    } catch (exception: Exception) {
        LOGGER.error("Failed to parse route-targets of vpn with id:${vpnBinding.instanceId}", exception)
        listOf(RouteTarget("ParsingFailure", "ParsingFailure"))
    }

    return vpnBinding
}

@JsonIgnoreProperties(ignoreUnknown = true)
data class RouteTarget(

        @JsonAlias("global-route-target")
        val globalRouteTarget: String? = null,

        @JsonAlias("route-target-role")
        val routeTargetRole: String? = null
)