diff --git a/webapp/sources/rudder/rudder-web/src/main/elm/rules/sources/ApiCalls.elm b/webapp/sources/rudder/rudder-web/src/main/elm/rules/sources/ApiCalls.elm index 47eb47e027f..838909f8589 100644 --- a/webapp/sources/rudder/rudder-web/src/main/elm/rules/sources/ApiCalls.elm +++ b/webapp/sources/rudder/rudder-web/src/main/elm/rules/sources/ApiCalls.elm @@ -136,6 +136,23 @@ getRulesCompliance model = in send GetRulesComplianceResult req +getNodesList : Model -> Cmd Msg +getNodesList model = + let + req = + request + { method = "GET" + , headers = [] + , url = getUrl model "/nodes" + , body = emptyBody + , expect = expectJson decodeGetNodesList + , timeout = Nothing + , withCredentials = False + } + in + send GetNodesList req + + saveRuleDetails : Rule -> Bool -> Model -> Cmd Msg saveRuleDetails ruleDetails creation model = let diff --git a/webapp/sources/rudder/rudder-web/src/main/elm/rules/sources/DataTypes.elm b/webapp/sources/rudder/rudder-web/src/main/elm/rules/sources/DataTypes.elm index b415cb5bb91..21879639842 100644 --- a/webapp/sources/rudder/rudder-web/src/main/elm/rules/sources/DataTypes.elm +++ b/webapp/sources/rudder/rudder-web/src/main/elm/rules/sources/DataTypes.elm @@ -56,6 +56,13 @@ type alias Technique = , directives : List Directive } +type alias NodeInfo = + { id : String + , hostname : String + , description : String + , policyMode : String + } + type alias Category a = { id : String , name : String @@ -199,6 +206,7 @@ type alias Model = , techniquesTree : Category Technique , rulesCompliance : List RuleCompliance , directives : List Directive + , nodes : List NodeInfo , ui : UI } @@ -223,6 +231,7 @@ type Msg | GetRulesResult (Result Error (Category Rule)) | GetGroupsTreeResult (Result Error (Category Group)) | GetTechniquesTreeResult (Result Error ((Category Technique, List Technique))) + | GetNodesList (Result Error (List NodeInfo)) | DeleteRule (Result Error (RuleId, String)) | DeleteCategory (Result Error (String, String)) | DisableRule diff --git a/webapp/sources/rudder/rudder-web/src/main/elm/rules/sources/Init.elm b/webapp/sources/rudder/rudder-web/src/main/elm/rules/sources/Init.elm index ed4fa113547..25a240aba5a 100644 --- a/webapp/sources/rudder/rudder-web/src/main/elm/rules/sources/Init.elm +++ b/webapp/sources/rudder/rudder-web/src/main/elm/rules/sources/Init.elm @@ -12,10 +12,11 @@ init flags = initCategory = Category "" "" "" (SubCategories []) [] initFilters = Filters (TableFilters Name True "") (TreeFilters "" []) initUI = UI initFilters initFilters initFilters NoModal flags.hasWriteRights - initModel = Model flags.contextPath Loading "" initCategory initCategory initCategory [] [] initUI + initModel = Model flags.contextPath Loading "" initCategory initCategory initCategory [] [] [] initUI listInitActions = [ getPolicyMode initModel + , getNodesList initModel , getRulesCompliance initModel , getGroupsTree initModel , getTechniquesTree initModel diff --git a/webapp/sources/rudder/rudder-web/src/main/elm/rules/sources/JsonDecoder.elm b/webapp/sources/rudder/rudder-web/src/main/elm/rules/sources/JsonDecoder.elm index 9444e446f9a..49f2c9c97a1 100644 --- a/webapp/sources/rudder/rudder-web/src/main/elm/rules/sources/JsonDecoder.elm +++ b/webapp/sources/rudder/rudder-web/src/main/elm/rules/sources/JsonDecoder.elm @@ -233,3 +233,15 @@ decodeTargets = string ] + +decodeGetNodesList : Decoder (List NodeInfo) +decodeGetNodesList = + D.at ["data", "nodes" ] (D.list decodeNodeInfo) + +decodeNodeInfo : Decoder NodeInfo +decodeNodeInfo = + succeed NodeInfo + |> required "id" D.string + |> required "hostname" D.string + |> required "description" D.string + |> required "policyMode" D.string \ No newline at end of file diff --git a/webapp/sources/rudder/rudder-web/src/main/elm/rules/sources/Rules.elm b/webapp/sources/rudder/rudder-web/src/main/elm/rules/sources/Rules.elm index 17642ecf25b..ba3fc10ef9a 100644 --- a/webapp/sources/rudder/rudder-web/src/main/elm/rules/sources/Rules.elm +++ b/webapp/sources/rudder/rudder-web/src/main/elm/rules/sources/Rules.elm @@ -111,6 +111,13 @@ update msg model = Err err -> (model, Cmd.none) + GetNodesList res -> + case res of + Ok nodes -> + ({model | nodes = nodes}, Cmd.none) + Err err -> + processApiError "Getting Nodes list" err model + OpenRuleDetails rId True -> (model, Cmd.batch [getRuleDetails model rId, pushUrl ("rule", rId.value)]) OpenRuleDetails rId False ->