"gerrit.o-ran-sc.org/r/ric-plt/a1/pkg/a1"
"gerrit.o-ran-sc.org/r/ric-plt/a1/pkg/models"
"gerrit.o-ran-sc.org/r/ric-plt/sdlgo"
+
"github.com/santhosh-tekuri/jsonschema/v5"
"gopkg.in/yaml.v2"
)
a1PolicyPrefix = "a1.policy_type."
a1MediatorNs = "A1m_ns"
a1InstancePrefix = "a1.policy_instance."
+ a1InstanceMetadataPrefix = "a1.policy_inst_metadata."
+ a1HandlerPrefix = "a1.policy_handler."
)
var typeAlreadyError = errors.New("Policy Type already exists")
return nil
}
+
+
func toStringKeys(val interface{}) (interface{}, error) {
var err error
switch val := val.(type) {
return operation, nil
}
+func (rh *Resthook) storePolicyInstanceMetadata(policyTypeId models.PolicyTypeID, policyInstanceID models.PolicyInstanceID) (bool, error) {
+
+ creation_timestamp := time.Now()
+ instanceMetadataKey := a1InstanceMetadataPrefix + strconv.FormatInt((int64(policyTypeId)), 10) + "." + string(policyInstanceID)
+
+ a1.Logger.Debug("key : %+v", instanceMetadataKey)
+
+ var metadatajson []interface{}
+ metadatajson = append(metadatajson, map[string]string{"created_at": creation_timestamp.Format("2006-01-02 15:04:05"), "has_been_deleted": "False"})
+ metadata, _ := json.Marshal(metadatajson)
+
+ a1.Logger.Debug("policyinstanceMetaData to create : %+v", string(metadata))
+
+ err := rh.db.Set(a1MediatorNs, instanceMetadataKey, string(metadata))
+
+ if err != nil {
+ a1.Logger.Error("error :%+v", err)
+ return false, err
+ }
+
+ a1.Logger.Debug("Policy Instance Meta Data created at :%+v", creation_timestamp)
+
+ return true, nil
+}
+
func (rh *Resthook) CreatePolicyInstance(policyTypeId models.PolicyTypeID, policyInstanceID models.PolicyInstanceID, httpBody interface{}) error {
a1.Logger.Debug("CreatePolicyInstance function")
// validate the PUT against the schema
httpBodyString := fmt.Sprint((httpBody))
isvalid := validate(httpBodyString, schemaString)
if isvalid {
- operation, err := rh.StorePolicyInstance(policyTypeId, policyInstanceID, httpBody)
+ var operation string
+ operation, err = rh.StorePolicyInstance(policyTypeId, policyInstanceID, httpBody)
if err != nil {
a1.Logger.Error("error :%+v", err)
return err
}
a1.Logger.Debug("policy instance :%+v", operation)
+ iscreated,errmetadata := rh.StorePolicyInstanceMetadata(policyTypeId, policyInstanceID)
+ if errmetadata != nil {
+ a1.Logger.Error("error :%+v", errmetadata)
+ return errmetadata
+ }
+ if iscreated {
+ a1.Logger.Debug("policy instance metadata created")
+ }
} else {
a1.Logger.Error("%+v", invalidJsonSchema)
return invalidJsonSchema
return valStr, nil
}
-func (rh *Resthook) GetAllPolicyInstance(policyTypeId models.PolicyTypeID) []models.PolicyInstanceID {
+func (rh *Resthook) GetAllPolicyInstance(policyTypeId models.PolicyTypeID) []models.PolicyInstanceID ,error {
a1.Logger.Debug("GetAllPolicyInstance")
- var policyTypeInstances []models.PolicyInstanceID
+ var policyTypeInstances = []models.PolicyInstanceID{}
keys, err := rh.db.GetAll("A1m_ns")
if err != nil {
a1.Logger.Error("error in retrieving policy. err: %v", err)
- return policyTypeInstances
+ return policyTypeInstances ,err
}
a1.Logger.Debug("keys : %+v", keys)
typekey := a1InstancePrefix + strconv.FormatInt((int64(policyTypeId)), 10) + "."
+
for _, key := range keys {
if strings.HasPrefix(strings.TrimLeft(key, " "), typekey) {
pti := strings.Split(strings.Trim(key, " "), typekey)[1]
}
}
+ if len(policyTypeInstances)==0{
+ a1.Logger.Debug("policy instance Not Present ")
+ }
+
a1.Logger.Debug("return : %+v", policyTypeInstances)
- return policyTypeInstances
+ return policyTypeInstances ,nil
}