From 314dc51f96d941ced7847d0cc74ce2e1f9f6bdda Mon Sep 17 00:00:00 2001 From: nelsonkopliku Date: Fri, 15 Sep 2023 16:21:32 +0000 Subject: [PATCH] deploy: 8512404e227c8acfcd3ab591dc3008659e751ce5 --- Wanda.DataCase.html | 6 +++--- Wanda.epub | Bin 508312 -> 508316 bytes gatherers.html | 2 +- hack_on_wanda.html | 2 +- readme.html | 8 ++++---- specification.html | 6 +++--- 6 files changed, 12 insertions(+), 12 deletions(-) diff --git a/Wanda.DataCase.html b/Wanda.DataCase.html index 66617c9b..ca430782 100644 --- a/Wanda.DataCase.html +++ b/Wanda.DataCase.html @@ -186,9 +186,9 @@

errors_on(changeset)

-

A helper that transforms changeset errors into a map of messages.

assert {:error, changeset} = Accounts.create_user(%{password: "short"})
-assert "password is too short" in errors_on(changeset).password
-assert %{password: ["password is too short"]} = errors_on(changeset)
+

A helper that transforms changeset errors into a map of messages.

assert {:error, changeset} = Accounts.create_user(%{password: "short"})
+assert "password is too short" in errors_on(changeset).password
+assert %{password: ["password is too short"]} = errors_on(changeset)
diff --git a/Wanda.epub b/Wanda.epub index f1c974f9545b124d8cc4d6c39abdda0e5f4a29c5..44ead95a55672979fe6138966d77769bdbcc312c 100644 GIT binary patch delta 12729 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 Ghx~t-%WUQV delta 12707 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 Introduction -

Gatherers can be thought of as functions:

  • they have a name
  • they accept argument(s)
  • they return a value, the gathered Fact

Facts Gathering process in a nutshell

fact = gatherer(argument)

+

Gatherers can be thought of as functions:

  • they have a name
  • they accept argument(s)
  • they return a value, the gathered Fact

Facts Gathering process in a nutshell

fact = gatherer(argument)

Available Gatherers diff --git a/hack_on_wanda.html b/hack_on_wanda.html index 04d4d7df..649ddf05 100644 --- a/hack_on_wanda.html +++ b/hack_on_wanda.html @@ -120,7 +120,7 @@

Ensure Compatibility with asdf

-

asdf allows using specific versions of programming language tools that are known to be compatible with the project, rather than relying on the version that's installed globally on the host system.

In order to use asdf, follow the official asdf getting started guide.

Install all required asdf plugins from .tool-versions inside the web repository.

cut -d' ' -f1 .tool-versions|xargs -i asdf plugin add  {}

Set up the asdf environment

asdf install

+

asdf allows using specific versions of programming language tools that are known to be compatible with the project, rather than relying on the version that's installed globally on the host system.

In order to use asdf, follow the official asdf getting started guide.

Install all required asdf plugins from .tool-versions inside the web repository.

cut -d' ' -f1 .tool-versions|xargs -i asdf plugin add  {}

Set up the asdf environment

asdf install

Development environment diff --git a/readme.html b/readme.html index 4dcfc432..8c79b833 100644 --- a/readme.html +++ b/readme.html @@ -250,14 +250,14 @@

Often times knowing the returned value of the gathered facts is not a trivial thing, more during the implementation of new checks.

To better debug the fact gathering process and the returned values, the facts subcommand of trento-agent is a really useful tool. This command helps to see in the target itself what the gathered fact looks like. This is specially interesting when the returned value is a complex object or the target under test is modified and the check developer wants to see how this affects the gathered fact.

The command can be used as:

./trento-agent facts gather --gatherer corosync.conf --argument totem.token
 # To see the currently available gatherers and their names
-# ./trento-agent facts list

Which would return the next where the Value is the available value in the written check:

{
+# ./trento-agent facts list

Which would return the next where the Value is the available value in the written check:

{
   "Name": "totem.token",
   "CheckID": "",
-  "Value": {
+  "Value": {
     "Value": 30000
-  },
+  },
   "Error": null
-}

+}

Adding new Checks diff --git a/specification.html b/specification.html index f5c7b761..ce9a4e86 100644 --- a/specification.html +++ b/specification.html @@ -423,12 +423,12 @@

- name: bar_expectation expect: facts.bar == values.expected_bar
  • Pipe the expression language functions vertically in order to provide a better visual output of the code.
    So this:

      expectations:
         - name: some_expectation
    -      expect: facts.foo.find(|item| item.id == "super").properties.find(|prop| prop.name == "good").value

    would be:

      expectations:
    +      expect: facts.foo.find(|item| item.id == "super").properties.find(|prop| prop.name == "good").value

    would be:

      expectations:
         - name: some_expectation
           expect: |
             facts.foo
    -        .find(|item| item.id == "super").properties
    -        .find(|prop| prop.name == "good").value

    Note: Keep in mind that some functions such as sort and drain run in-place modifications, so they cannot be piped.

  • + .find(|item| item.id == "super").properties + .find(|prop| prop.name == "good").value

    Note: Keep in mind that some functions such as sort and drain run in-place modifications, so they cannot be piped.