summaryrefslogtreecommitdiffstats
path: root/ms/blueprintsprocessor/modules/blueprints/resource-dict/src/main/kotlin/org/onap/ccsdk/cds/controllerblueprints/resource/dict/ResourceDefinition.kt
blob: f34099ea880f5ea620489e9fcb5809b8b7af0138 (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
/*
 *  Copyright © 2018 IBM.
 *  Modifications Copyright © 2017-2018 AT&T Intellectual Property.
 *
 *  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.controllerblueprints.resource.dict

import com.fasterxml.jackson.annotation.JsonFormat
import com.fasterxml.jackson.annotation.JsonProperty
import com.fasterxml.jackson.databind.JsonNode
import org.onap.ccsdk.cds.controllerblueprints.core.data.NodeTemplate
import org.onap.ccsdk.cds.controllerblueprints.core.data.PropertyDefinition
import java.io.Serializable
import java.util.Date

open class ResourceDefinition {

    @JsonProperty(value = "name", required = true)
    lateinit var name: String

    @JsonProperty(value = "property", required = true)
    lateinit var property: PropertyDefinition

    var tags: String? = null

    /** The default group for Resource Definition is "default" */
    @JsonProperty(value = "group", required = true)
    var group: String = "default"

    @JsonProperty(value = "updated-by")
    lateinit var updatedBy: String

    @JsonProperty(value = "sources", required = true)
    lateinit var sources: MutableMap<String, NodeTemplate>
}

open class ResourceAssignment {

    @JsonProperty(value = "name", required = true)
    lateinit var name: String

    @JsonProperty(value = "property")
    var property: PropertyDefinition? = null

    @JsonProperty("input-param")
    var inputParameter: Boolean = false

    @JsonProperty("dictionary-name")
    var dictionaryName: String? = null

    @JsonProperty("dictionary-source")
    var dictionarySource: String? = null

    /** Modified Source definition,  Capability Source will use for script reference changes,
     * Rest Source will use for extra headers etc **/
    @JsonProperty("dictionary-source-definition")
    var dictionarySourceDefinition: NodeTemplate? = null

    /** Duplicate field : Shall be used directly from Dictionary Source definition dependencies. **/
    @JsonProperty("dependencies")
    var dependencies: MutableList<String>? = null

    @JsonProperty("version")
    var version: Int = 0

    @JsonProperty("status")
    var status: String? = null

    @JsonProperty("message")
    var message: String? = null

    @JsonProperty("updated-date")
    @JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd'T'HH:mm:ss.SSS'Z'")
    var updatedDate: Date? = null

    @JsonProperty("updated-by")
    var updatedBy: String? = null

    /** input & output key-mapping with their resolved values **/
    var keyIdentifiers: MutableList<KeyIdentifier> = mutableListOf()

    override fun toString(): String {
        return """
            [
                name = $name
                status = $status
                required = ${property?.required}
                dependencies = $dependencies
                dictionaryName = $dictionaryName
                dictionarySource = $dictionarySource
            ]
            """.trimIndent()
    }
}

data class KeyIdentifier(val name: String, val value: JsonNode)

/**
 * Data class for exposing summary of resource resolution
 */
data class ResolutionSummary(
    val name: String,
    val value: JsonNode?,
    val required: Boolean?,
    val type: String?,
    @JsonProperty("key-identifiers")
    val keyIdentifiers: MutableList<KeyIdentifier>,
    @JsonProperty("dictionary-name")
    val dictionaryName: String?,
    @JsonProperty("request-payload")
    val requestPayload: JsonNode?,
    @JsonProperty("dictionary-source")
    val dictionarySource: String?,
    @JsonProperty("status")
    val status: String?,
    @JsonProperty("message")
    val message: String?
)
/**
 * Interface for Source Definitions (ex Input Source,
 * Default Source, Database Source, Rest Sources, etc)
 */
interface ResourceSource : Serializable

open class ResourceSourceMapping {
    lateinit var resourceSourceMappings: MutableMap<String, String>
}