Commit 7d6df71e authored by Ayesha Ayub's avatar Ayesha Ayub
Browse files

add checks for matched sessions in BWM

parent 936b610c
Loading
Loading
Loading
Loading
+62 −0
Original line number Diff line number Diff line
@@ -806,6 +806,24 @@ func bandwidthAllocationPatch(w http.ResponseWriter, r *http.Request) {
				newSessionFilter = append(newSessionFilter, BwInfoSessionFilter(filter))
			}
			newBwInfo.SessionFilter = newSessionFilter

			if *bwInfoDeltaInput.RequestType == 1 {
				if len(bwInfoDeltaInput.SessionFilter) >= 0 {
					sessionSlice := make([]BwInfoSessionFilter, 0)
					for index, singleSessionFilter := range newBwInfo.SessionFilter {
						if index == 0 {
							sessionSlice = append(sessionSlice, singleSessionFilter)
						} else {
							sessionSlice, err = sessionContains(sessionSlice, singleSessionFilter)
							if err != nil {
								errHandlerProblemDetails(w, "err.Error()", http.StatusBadRequest)
								return
							}
						}
					}
				}
			}

			err = validateUpdateRequestType(&newBwInfo, &bwInfoStored, w)
			if err != nil {
				log.Error(err.Error())
@@ -935,6 +953,19 @@ func bandwidthAllocationPost(w http.ResponseWriter, r *http.Request) {
			log.Error("sessionFilter attribute is Missing.")
			errHandlerProblemDetails(w, "sessionFilter attribute is Missing.", http.StatusBadRequest)
			return
		} else {
			sessionSlice := make([]BwInfoSessionFilter, 0)
			for index, singleSessionFilter := range bwInfo.SessionFilter {
				if index == 0 {
					sessionSlice = append(sessionSlice, singleSessionFilter)
				} else {
					sessionSlice, err = sessionContains(sessionSlice, singleSessionFilter)
					if err != nil {
						errHandlerProblemDetails(w, "err.Error()", http.StatusBadRequest)
						return
					}
				}
			}
		}
	}

@@ -1295,6 +1326,25 @@ func bandwidthAllocationPut(w http.ResponseWriter, r *http.Request) {
	// validate the requested changes in Request Type (session/application specific)
	if bwInfoInput.RequestType != nil {
		if (*bwInfoInput.RequestType == 0) || (*bwInfoInput.RequestType == 1) {

			if *bwInfoInput.RequestType == 1 {

				if len(bwInfoInput.SessionFilter) > 0 {
					sessionSlice := make([]BwInfoSessionFilter, 0)
					for index, singleSessionFilter := range bwInfoInput.SessionFilter {
						if index == 0 {
							sessionSlice = append(sessionSlice, singleSessionFilter)
						} else {
							sessionSlice, err = sessionContains(sessionSlice, singleSessionFilter)
							if err != nil {
								errHandlerProblemDetails(w, "err.Error()", http.StatusBadRequest)
								return
							}
						}
					}
				}
			}

			err = validateUpdateRequestType(&bwInfoInput, &bwInfoStored, w)
			if err != nil {
				log.Error(err.Error())
@@ -2063,3 +2113,15 @@ func addBwBufferResource(bwInfoInput *BwInfo, w http.ResponseWriter) error {
	}
	return nil
}

func sessionContains(sessionSlice []BwInfoSessionFilter, singleSessionFilter BwInfoSessionFilter) ([]BwInfoSessionFilter, error) {
	for _, sessionSlice1 := range sessionSlice {
		if reflect.DeepEqual(singleSessionFilter, sessionSlice1) {
			err := errors.New("SessionFilter contains same sessions")
			return nil, err
		} else {
			sessionSlice = append(sessionSlice, singleSessionFilter)
		}
	}
	return sessionSlice, nil
}