aboutsummaryrefslogtreecommitdiffstats
path: root/pkg/model/mesages.go
diff options
context:
space:
mode:
authorgururajarao79 <gb00566633@techmahindra.com>2024-11-22 14:28:41 +0100
committergururajarao79 <gb00566633@techmahindra.com>2024-11-27 13:26:18 +0100
commit542b9d143da57bcb3894f730c9ca2200aa7b89cb (patch)
treeb72c52f5bc3aad77c82600b8541d6db2a55ef651 /pkg/model/mesages.go
parent55772eebb9ec2bb12cd16e5c2531dceb0860ad5b (diff)
phase1 opa pdp changesHEADmaster
For details on scope and implementation, please check. https://lf-onap.atlassian.net/wiki/spaces/DW/pages/51150925/OPA+PDP Code Coverage Total: 70.8% Issue-ID: POLICY-5156 Change-Id: Ied07ee1596e9f447183fb715baaa68c704a9fe99 Signed-off-by: gururajarao79 <gb00566633@techmahindra.com>
Diffstat (limited to 'pkg/model/mesages.go')
-rw-r--r--pkg/model/mesages.go111
1 files changed, 111 insertions, 0 deletions
diff --git a/pkg/model/mesages.go b/pkg/model/mesages.go
new file mode 100644
index 0000000..a4451d7
--- /dev/null
+++ b/pkg/model/mesages.go
@@ -0,0 +1,111 @@
+// -
+// ========================LICENSE_START=================================
+// Copyright (C) 2024: Deutsche Telecom
+//
+// 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.
+// ========================LICENSE_END===================================
+
+// Defines structure for messages exchanged between PDP and PAP
+// Refer: https://docs.onap.org/projects/onap-policy-parent/en/latest/pap/InternalPapPdp.html
+// for attribute level details of each message.
+package model
+
+import (
+ "encoding/json"
+ "fmt"
+)
+
+// PdpMessageType represents the type of PDP message.
+type PdpMessageType int
+
+// Enumerate the possible PDP message types
+// https://github.com/onap/policy-models
+// models-pdp/src/main/java/org/onap/policy/models/pdp/enums/PdpMessageType.java
+const (
+ PDP_STATUS PdpMessageType = iota
+ PDP_UPDATE
+ PDP_STATE_CHANGE
+ PDP_HEALTH_CHECK
+ PDP_TOPIC_CHECK
+)
+
+// String representation of PdpMessageType
+func (msgType PdpMessageType) String() string {
+ switch msgType {
+ case PDP_STATUS:
+ return "PDP_STATUS"
+ case PDP_UPDATE:
+ return "PDP_UPDATE"
+ case PDP_STATE_CHANGE:
+ return "PDP_STATE_CHANGE"
+ case PDP_HEALTH_CHECK:
+ return "PDP_HEALTH_CHECK"
+ case PDP_TOPIC_CHECK:
+ return "PDP_TOPIC_CHECK"
+ default:
+ return fmt.Sprintf("Unknown PdpMessageType: %d", msgType)
+ }
+}
+
+func (p PdpMessageType) MarshalJSON() ([]byte, error) {
+ return json.Marshal(p.String())
+}
+
+// PdpStatus represents the PDP_STATUS message sent from PDP to PAP.
+// https://github.com/onap/policy-models
+// models-pdp/src/main/java/org/onap/policy/models/pdp/concepts/PdpStatus.java
+type PdpStatus struct {
+ MessageType PdpMessageType `json:"messageName"`
+ PdpType string `json:"pdpType"`
+ State PdpState `json:"state"`
+ Healthy PdpHealthStatus `json:"healthy"`
+ Description string `json:"description"`
+ PdpResponse *PdpResponseDetails `json:"response"`
+ Policies []ToscaConceptIdentifier `json:"policies"`
+ Name string `json:"name"`
+ RequestID string `json:"requestId"`
+ PdpGroup string `json:"pdpGroup"`
+ PdpSubgroup *string `json:"pdpSubgroup"`
+ TimestampMs string `json:"timestampMs"`
+ DeploymentInstanceInfo string `json:"deploymentInstanceInfo"`
+}
+
+// PDP_UPDATE sent by PAP to PDP.
+// https://github.com/onap/policy-models
+// models-pdp/src/main/java/org/onap/policy/models/pdp/concepts/PdpUpdate.java
+type PdpUpdate struct {
+ Source string `json:"source" validate:"required"`
+ PdpHeartbeatIntervalMs int64 `json:"pdpHeartbeatIntervalMs" validate:"required"`
+ MessageType string `json:"messageName" validate:"required"`
+ PoliciesToBeDeloyed []string `json:"policiesToBeDeployed" validate:"required"`
+ policiesToBeUndeployed []ToscaConceptIdentifier `json:"policiesToBeUndeployed"`
+ Name string `json:"name" validate:"required"`
+ TimestampMs int64 `json:"timestampMs" validate:"required"`
+ PdpGroup string `json:"pdpGroup" validate:"required"`
+ PdpSubgroup string `json:"pdpSubgroup" validate:"required"`
+ RequestId string `json:"requestId" validate:"required"`
+}
+
+// PDP_STATE_CHANGE sent by PAP to PDP.
+// https://github.com/onap/policy-models
+// models-pdp/src/main/java/org/onap/policy/models/pdp/concepts/PdpStateChange.java
+type PdpStateChange struct {
+ Source string `json:"source"`
+ State string `json:"state"`
+ MessageType string `json:"messageName"`
+ Name string `json:"name"`
+ TimestampMs int64 `json:"timestampMs"`
+ PdpGroup string `json:"pdpGroup"`
+ PdpSubgroup string `json:"pdpSubgroup"`
+ RequestId string `json:"requestId"`
+}