Skip to content

Commit

Permalink
Work in progress
Browse files Browse the repository at this point in the history
  • Loading branch information
RaphaelGauthier committed Dec 15, 2023
1 parent 65eb3b3 commit 12984ba
Show file tree
Hide file tree
Showing 5 changed files with 68 additions and 4 deletions.
18 changes: 17 additions & 1 deletion webapp/sources/rudder/rudder-web/src/main/elm/sources/Rules.elm
Original file line number Diff line number Diff line change
Expand Up @@ -105,6 +105,19 @@ update msg model =
Err err ->
processApiError "Getting change request settings" err model

GetPendingChangeRequests res ->
case res of
Ok cr ->
let
ui = model.ui
newUi = case ui.crSettings of
Just settings -> { ui | crSettings = Just { settings | pendingChangeRequests = cr } }
Nothing -> ui
in
( { model | ui = newUi } , Cmd.none )
Err err ->
processApiError "Getting pending change requests" err model

GetGroupsTreeResult res ->
case res of
Ok t ->
Expand All @@ -131,14 +144,17 @@ update msg model =
Ok r ->
let
newModel = {model | mode = RuleForm (RuleDetails (Just r) r Information defaultRulesUI Nothing Nothing Nothing []) }
getPendingCR = case model.ui.crSettings of
Nothing -> Cmd.none
Just settings -> if settings.enableChangeRequest then (getPendingChangeRequests newModel) else Cmd.none
getChanges = case Dict.get r.id.value model.changes of
Nothing -> []
Just changes ->
case List.Extra.last changes of
Nothing -> []
Just lastChanges -> [ getRepairedReports newModel r.id lastChanges.start lastChanges.end ]
in
(newModel, Cmd.batch (getRulesComplianceDetails r.id newModel :: getRuleNodesDirectives r.id newModel :: getChanges) )
(newModel, Cmd.batch (getRulesComplianceDetails r.id newModel :: getRuleNodesDirectives r.id newModel :: getPendingCR :: getChanges ) )
Err err ->
processApiError "Getting Rule details" err model

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ import Url.Builder exposing (QueryParameter, int, string)
import Rules.DataTypes exposing (..)
import Rules.JsonDecoder exposing (..)
import Rules.JsonEncoder exposing (..)
import Rules.ChangeRequest exposing (changeRequestParameters, decodeGetChangeRequestSettings)
import Rules.ChangeRequest exposing (changeRequestParameters, decodeGetChangeRequestSettings, decodePendingChangeRequests)

--
-- This files contains all API calls for the Rules UI
Expand Down Expand Up @@ -111,6 +111,21 @@ getCrSettings model =
in
req

getPendingChangeRequests : Model -> Cmd Msg
getPendingChangeRequests model =
let
req =
request
{ method = "GET"
, headers = []
, url = getUrl model [ "changeRequests" ] []
, body = emptyBody
, expect = expectJson GetPendingChangeRequests decodePendingChangeRequests
, timeout = Nothing
, tracker = Nothing
}
in
req

getGroupsTree : Model -> Cmd Msg
getGroupsTree model =
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,14 @@ import Url.Builder
--
-- Module to handle change request settings
--
type Status = Unknown | Cancelled | Open | PendingValidation | PendingDeployment | Deployed

type alias ChangeRequest =
{ id : Int
, name : String
, description : String
, status : Status
}

type alias ChangeRequestSettings =
{ enableChangeMessage : Bool
Expand All @@ -16,6 +24,7 @@ type alias ChangeRequestSettings =
, changeRequestName : String
, message : String
, displayMessagePrompt : Bool
, pendingChangeRequests : List ChangeRequest
}

decodeGetChangeRequestSettings : Decoder ChangeRequestSettings
Expand All @@ -32,6 +41,30 @@ decodeChangeRequestSettings =
|> hardcoded ""
|> hardcoded ""
|> hardcoded False
|> hardcoded []

decodePendingChangeRequests : Decoder (List ChangeRequest)
decodePendingChangeRequests =
at [ "data" ] (list decodeChangeRequest)

decodeChangeRequest : Decoder ChangeRequest
decodeChangeRequest =
succeed ChangeRequest
|> required "id" int
|> required "displayName" string
|> required "description" string
|> required "status" ( string |> andThen (\s -> toStatus s) )

toStatus : String -> Decoder Status
toStatus str =
succeed ( case str of
"Deployed" -> Deployed
"Pending deployment" -> PendingDeployment
"Cancelled" -> Cancelled
"Pending validation" -> PendingValidation
"Open" -> Open
_ -> Unknown
)

changeRequestParameters: Maybe ChangeRequestSettings -> List Url.Builder.QueryParameter
changeRequestParameters changeRequestSettings =
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ import Http exposing (Error)
import Time.ZonedDateTime exposing (ZonedDateTime)

import Compliance.DataTypes exposing (..)
import Rules.ChangeRequest exposing (ChangeRequestSettings)
import Rules.ChangeRequest exposing (ChangeRequestSettings, ChangeRequest)

--
-- All our data types
Expand Down Expand Up @@ -283,6 +283,7 @@ type Msg
| GetRuleDetailsResult (Result Error Rule)
| GetPolicyModeResult (Result Error String)
| GetChangeRequestSettings (Result Error ChangeRequestSettings)
| GetPendingChangeRequests (Result Error (List ChangeRequest))
| GetCategoryDetailsResult (Result Error (Category Rule))
| GetRulesComplianceResult (Result Error (List RuleComplianceGlobal))
| GetRuleNodesDirectivesResult RuleId (Result Error RuleNodesDirectives)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -72,7 +72,6 @@ buildTagsContainer rule editMode details =

informationTab: Model -> RuleDetails -> Html Msg
informationTab model details =

let
isNewRule = Maybe.Extra.isNothing details.originRule
rule = details.rule
Expand Down

0 comments on commit 12984ba

Please sign in to comment.