1 package org.onap.vid.model.aaiTree
3 import com.fasterxml.jackson.annotation.JsonAlias
4 import com.fasterxml.jackson.annotation.JsonCreator
5 import com.fasterxml.jackson.annotation.JsonIgnoreProperties
6 import com.fasterxml.jackson.annotation.JsonInclude
7 import com.fasterxml.jackson.core.type.TypeReference
8 import org.onap.portalsdk.core.logging.logic.EELFLoggerDelegate
9 import org.onap.vid.utils.JACKSON_OBJECT_MAPPER
11 @JsonIgnoreProperties(ignoreUnknown = true)
12 @JsonInclude(JsonInclude.Include.NON_NULL)
13 class VpnBinding(aaiNode: AAITreeNode) : Node(aaiNode) {
15 constructor() : this(AAITreeNode())
16 var region: String? = null
17 var customerId: String? = null
18 var routeTargets: List<RouteTarget>? = null
21 val LOGGER: EELFLoggerDelegate = EELFLoggerDelegate.getLogger(VpnBinding::class.java)
23 fun from(node: AAITreeNode): VpnBinding {
24 val vpnBinding = VpnBinding(node)
25 vpnBinding.platformName = Node.readValueAsStringFromAdditionalProperties(node, "vpn-platform")
26 vpnBinding.instanceType = Node.readValueAsStringFromAdditionalProperties(node, "vpn-type")
27 vpnBinding.region = Node.readValueAsStringFromAdditionalProperties(node, "vpn-region")
28 vpnBinding.customerId = Node.readValueAsStringFromAdditionalProperties(node, "customer-vpn-id")
30 vpnBinding.routeTargets = try {
31 JACKSON_OBJECT_MAPPER.convertValue(
32 node.additionalProperties.getOrDefault("route-targets", emptyList<RouteTarget>()),
33 object : TypeReference<List<RouteTarget>>() {})
34 } catch (exception: Exception) {
35 LOGGER.error("Failed to parse route-targets of vpn with id:${vpnBinding.instanceId}", exception)
36 listOf(RouteTarget("ParsingFailure", "ParsingFailure"))
42 @JsonIgnoreProperties(ignoreUnknown = true)
43 data class RouteTarget(
45 @JsonAlias("global-route-target")
46 val globalRouteTarget: String? = null,
48 @JsonAlias("route-target-role")
49 val routeTargetRole: String? = null