From 077fe09f401d32bac7117d0ac923414454792dbd Mon Sep 17 00:00:00 2001 From: nelsonkopliku Date: Wed, 11 Oct 2023 12:16:03 +0000 Subject: [PATCH] deploy: 1111d500f421caeed3ca46ff08997e157ef30a6d --- Wanda.DataCase.html | 6 +++--- Wanda.epub | Bin 512451 -> 512447 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 9f1ee828..7a898f78 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 edce3584b00b07549e8f0e0947efe8ee70e70464..a618b659da8f51d083ab98596663749016796cbe 100644 GIT binary patch delta 10447 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 delta 10375 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 Ktc4%QkpBm38x 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 503f74af..0a846af3 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 f1a99080..3ff16f09 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 f0238215..9fa59775 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.