+
+func (rh *Resthook) GetPolicyInstance(policyTypeId models.PolicyTypeID, policyInstanceID models.PolicyInstanceID) (interface{}, error) {
+ a1.Logger.Debug("GetPolicyInstance1")
+
+ var keys [1]string
+
+ typekey := a1PolicyPrefix + strconv.FormatInt((int64(policyTypeId)), 10)
+ keys[0] = typekey
+
+ a1.Logger.Debug("key1 : %+v", typekey)
+
+ valmap, err := rh.db.Get(a1MediatorNs, keys[:])
+ if len(valmap) == 0 {
+ a1.Logger.Debug("policy type Not Present for policyid : %v", policyTypeId)
+ return "{}", policyTypeNotFoundError
+ }
+
+ if err != nil {
+ a1.Logger.Error("error in retrieving policy type. err: %v", err)
+ return "{}", err
+ }
+
+ if valmap[typekey] == nil {
+ a1.Logger.Debug("policy type Not Present for policyid : %v", policyTypeId)
+ return "{}", policyTypeNotFoundError
+ }
+
+ a1.Logger.Debug("keysmap : %+v", valmap[typekey])
+
+ instancekey := a1InstancePrefix + strconv.FormatInt((int64(policyTypeId)), 10) + "." + string(policyInstanceID)
+ a1.Logger.Debug("key2 : %+v", instancekey)
+ keys[0] = instancekey
+ instanceMap, err := rh.db.Get(a1MediatorNs, keys[:])
+ if err != nil {
+ a1.Logger.Error("policy instance error : %v", err)
+ }
+ a1.Logger.Debug("policyinstancetype map : %+v", instanceMap)
+
+ if instanceMap[instancekey] == nil {
+ a1.Logger.Debug("policy instance Not Present for policyinstaneid : %v", policyInstanceID)
+ return "{}", policyInstanceNotFoundError
+ }
+
+ valStr := fmt.Sprint(instanceMap[instancekey])
+ return valStr, nil
+}
+
+func (rh *Resthook) GetAllPolicyInstance(policyTypeId models.PolicyTypeID) ([]models.PolicyInstanceID, error) {
+ a1.Logger.Debug("GetAllPolicyInstance")
+ 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, 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]
+ a1.Logger.Debug("pti %+v", pti)
+ policyTypeInstances = append(policyTypeInstances, models.PolicyInstanceID(pti))
+ }
+ }
+
+ if len(policyTypeInstances) == 0 {
+ a1.Logger.Debug("policy instance Not Present ")
+ }
+
+ a1.Logger.Debug("return : %+v", policyTypeInstances)
+ return policyTypeInstances, nil
+}
+
+func (rh *Resthook) DeletePolicyType(policyTypeId models.PolicyTypeID) error {
+ a1.Logger.Debug("DeletePolicyType")
+
+ policyinstances, err := rh.GetAllPolicyInstance(policyTypeId)
+ if err != nil {
+ a1.Logger.Error("error in retrieving policy. err: %v", err)
+ return err
+ }
+
+ var keys [1]string
+ key := a1PolicyPrefix + strconv.FormatInt((int64(policyTypeId)), 10)
+ keys[0] = key
+ if len(policyinstances) == 0 {
+ err := rh.db.Remove(a1MediatorNs, keys[:])
+ if err != nil {
+ a1.Logger.Error("error in deleting policy type err: %v", err)
+ return err
+ }
+ } else {
+ a1.Logger.Error("tried to delete a type that isn't empty")
+ return policyTypeCanNotBeDeletedError
+ }
+ return nil
+}