Implant vid-app-common org.onap.vid.job (main and test)
[vid.git] / vid-app-common / src / main / java / org / onap / vid / model / aaiTree / VpnBinding.kt
1 package org.onap.vid.model.aaiTree
2
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
10
11 @JsonIgnoreProperties(ignoreUnknown = true)
12 @JsonInclude(JsonInclude.Include.NON_NULL)
13 class VpnBinding(aaiNode: AAITreeNode) : Node(aaiNode) {
14     @JsonCreator
15     constructor() : this(AAITreeNode())
16     var region: String? = null
17     var customerId: String? = null
18     var routeTargets: List<RouteTarget>? = null
19 }
20
21 val LOGGER: EELFLoggerDelegate = EELFLoggerDelegate.getLogger(VpnBinding::class.java)
22
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")
29
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"))
37     }
38
39     return vpnBinding
40 }
41
42 @JsonIgnoreProperties(ignoreUnknown = true)
43 data class RouteTarget(
44
45         @JsonAlias("global-route-target")
46         val globalRouteTarget: String? = null,
47
48         @JsonAlias("route-target-role")
49         val routeTargetRole: String? = null
50 )