From 63d038829b53f8be7789cb7e87edc710931c0d54 Mon Sep 17 00:00:00 2001 From: dottorblaster Date: Wed, 14 Aug 2024 14:35:46 +0000 Subject: [PATCH] deploy: 40552c3e77297fbbd86f0aecc52f3dbd5dc3f2f2 --- Wanda.DataCase.html | 6 +- Wanda.Executions.Execution.html | 2 +- Wanda.Repo.html | 166 ++++++++++++++++---------------- Wanda.epub | Bin 534354 -> 534375 bytes gatherers.html | 2 +- hack_on_wanda.html | 2 +- readme.html | 8 +- specification.html | 6 +- 8 files changed, 96 insertions(+), 96 deletions(-) diff --git a/Wanda.DataCase.html b/Wanda.DataCase.html index 1a09fc47..23a545df 100644 --- a/Wanda.DataCase.html +++ b/Wanda.DataCase.html @@ -208,9 +208,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.Executions.Execution.html b/Wanda.Executions.Execution.html index 9a9eadb4..e277d158 100644 --- a/Wanda.Executions.Execution.html +++ b/Wanda.Executions.Execution.html @@ -254,7 +254,7 @@

changeset(execution, params)

-
@spec changeset(t() | Ecto.Changeset.t(), map()) :: Ecto.Changeset.t()
+
@spec changeset(t() | Ecto.Changeset.t(), map()) :: Ecto.Changeset.t()
diff --git a/Wanda.Repo.html b/Wanda.Repo.html index 125f7c4c..de2c23ec 100644 --- a/Wanda.Repo.html +++ b/Wanda.Repo.html @@ -151,7 +151,7 @@

-

Callback implementation for Ecto.Repo.aggregate/3.

+

Callback implementation for Ecto.Repo.aggregate/3.

@@ -161,7 +161,7 @@

-

Callback implementation for Ecto.Repo.aggregate/4.

+

Callback implementation for Ecto.Repo.aggregate/4.

@@ -171,7 +171,7 @@

-

Callback implementation for Ecto.Repo.all/2.

+

Callback implementation for Ecto.Repo.all/2.

@@ -181,7 +181,7 @@

-

Callback implementation for Ecto.Repo.checked_out?/0.

+

Callback implementation for Ecto.Repo.checked_out?/0.

@@ -191,7 +191,7 @@

-

Callback implementation for Ecto.Repo.checkout/2.

+

Callback implementation for Ecto.Repo.checkout/2.

@@ -209,7 +209,7 @@

-

Callback implementation for Ecto.Repo.config/0.

+

Callback implementation for Ecto.Repo.config/0.

@@ -219,7 +219,7 @@

-

Callback implementation for Ecto.Repo.default_options/1.

+

Callback implementation for Ecto.Repo.default_options/1.

@@ -229,7 +229,7 @@

-

Callback implementation for Ecto.Repo.delete/2.

+

Callback implementation for Ecto.Repo.delete/2.

@@ -239,7 +239,7 @@

-

Callback implementation for Ecto.Repo.delete!/2.

+

Callback implementation for Ecto.Repo.delete!/2.

@@ -249,7 +249,7 @@

-

Callback implementation for Ecto.Repo.delete_all/2.

+

Callback implementation for Ecto.Repo.delete_all/2.

@@ -270,7 +270,7 @@

-

Callback implementation for Ecto.Repo.exists?/2.

+

Callback implementation for Ecto.Repo.exists?/2.

@@ -291,7 +291,7 @@

-

Callback implementation for Ecto.Repo.get/3.

+

Callback implementation for Ecto.Repo.get/3.

@@ -301,7 +301,7 @@

-

Callback implementation for Ecto.Repo.get!/3.

+

Callback implementation for Ecto.Repo.get!/3.

@@ -311,7 +311,7 @@

-

Callback implementation for Ecto.Repo.get_by/3.

+

Callback implementation for Ecto.Repo.get_by/3.

@@ -321,7 +321,7 @@

-

Callback implementation for Ecto.Repo.get_by!/3.

+

Callback implementation for Ecto.Repo.get_by!/3.

@@ -331,7 +331,7 @@

-

Callback implementation for Ecto.Repo.get_dynamic_repo/0.

+

Callback implementation for Ecto.Repo.get_dynamic_repo/0.

@@ -341,7 +341,7 @@

-

Callback implementation for Ecto.Repo.in_transaction?/0.

+

Callback implementation for Ecto.Repo.in_transaction?/0.

@@ -351,7 +351,7 @@

-

Callback implementation for Ecto.Repo.insert/2.

+

Callback implementation for Ecto.Repo.insert/2.

@@ -361,7 +361,7 @@

-

Callback implementation for Ecto.Repo.insert!/2.

+

Callback implementation for Ecto.Repo.insert!/2.

@@ -371,7 +371,7 @@

-

Callback implementation for Ecto.Repo.insert_all/3.

+

Callback implementation for Ecto.Repo.insert_all/3.

@@ -381,7 +381,7 @@

-

Callback implementation for Ecto.Repo.insert_or_update/2.

+

Callback implementation for Ecto.Repo.insert_or_update/2.

@@ -391,7 +391,7 @@

-

Callback implementation for Ecto.Repo.insert_or_update!/2.

+

Callback implementation for Ecto.Repo.insert_or_update!/2.

@@ -401,7 +401,7 @@

-

Callback implementation for Ecto.Repo.load/2.

+

Callback implementation for Ecto.Repo.load/2.

@@ -411,7 +411,7 @@

-

Callback implementation for Ecto.Repo.one/2.

+

Callback implementation for Ecto.Repo.one/2.

@@ -421,7 +421,7 @@

-

Callback implementation for Ecto.Repo.one!/2.

+

Callback implementation for Ecto.Repo.one!/2.

@@ -431,7 +431,7 @@

-

Callback implementation for Ecto.Repo.preload/3.

+

Callback implementation for Ecto.Repo.preload/3.

@@ -441,7 +441,7 @@

-

Callback implementation for Ecto.Repo.prepare_query/3.

+

Callback implementation for Ecto.Repo.prepare_query/3.

@@ -451,7 +451,7 @@

-

Callback implementation for Ecto.Repo.put_dynamic_repo/1.

+

Callback implementation for Ecto.Repo.put_dynamic_repo/1.

@@ -501,7 +501,7 @@

-

Callback implementation for Ecto.Repo.reload/2.

+

Callback implementation for Ecto.Repo.reload/2.

@@ -511,7 +511,7 @@

-

Callback implementation for Ecto.Repo.reload!/2.

+

Callback implementation for Ecto.Repo.reload!/2.

@@ -521,7 +521,7 @@

-

Callback implementation for Ecto.Repo.rollback/1.

+

Callback implementation for Ecto.Repo.rollback/1.

@@ -531,7 +531,7 @@

-

Callback implementation for Ecto.Repo.start_link/1.

+

Callback implementation for Ecto.Repo.start_link/1.

@@ -541,7 +541,7 @@

-

Callback implementation for Ecto.Repo.stop/1.

+

Callback implementation for Ecto.Repo.stop/1.

@@ -551,7 +551,7 @@

-

Callback implementation for Ecto.Repo.stream/2.

+

Callback implementation for Ecto.Repo.stream/2.

@@ -571,7 +571,7 @@

-

Callback implementation for Ecto.Repo.transaction/2.

+

Callback implementation for Ecto.Repo.transaction/2.

@@ -581,7 +581,7 @@

-

Callback implementation for Ecto.Repo.update/2.

+

Callback implementation for Ecto.Repo.update/2.

@@ -591,7 +591,7 @@

-

Callback implementation for Ecto.Repo.update!/2.

+

Callback implementation for Ecto.Repo.update!/2.

@@ -601,7 +601,7 @@

-

Callback implementation for Ecto.Repo.update_all/3.

+

Callback implementation for Ecto.Repo.update_all/3.

@@ -639,7 +639,7 @@

aggregate(queryable, aggregate, opts \\ [])
-

Callback implementation for Ecto.Repo.aggregate/3.

+

Callback implementation for Ecto.Repo.aggregate/3.

@@ -661,7 +661,7 @@

aggregate(queryable, aggregate, field, opts
-

Callback implementation for Ecto.Repo.aggregate/4.

+

Callback implementation for Ecto.Repo.aggregate/4.

@@ -685,7 +685,7 @@

all(queryable, opts \\ [])

-

Callback implementation for Ecto.Repo.all/2.

+

Callback implementation for Ecto.Repo.all/2.

@@ -707,7 +707,7 @@

checked_out?()

-

Callback implementation for Ecto.Repo.checked_out?/0.

+

Callback implementation for Ecto.Repo.checked_out?/0.

@@ -731,7 +731,7 @@

checkout(fun, opts \\ [])

-

Callback implementation for Ecto.Repo.checkout/2.

+

Callback implementation for Ecto.Repo.checkout/2.

@@ -775,7 +775,7 @@

config()

-

Callback implementation for Ecto.Repo.config/0.

+

Callback implementation for Ecto.Repo.config/0.

@@ -797,7 +797,7 @@

default_options(operation)

-

Callback implementation for Ecto.Repo.default_options/1.

+

Callback implementation for Ecto.Repo.default_options/1.

@@ -821,7 +821,7 @@

delete(struct, opts \\ [])

-

Callback implementation for Ecto.Repo.delete/2.

+

Callback implementation for Ecto.Repo.delete/2.

@@ -845,7 +845,7 @@

delete!(struct, opts \\ [])

-

Callback implementation for Ecto.Repo.delete!/2.

+

Callback implementation for Ecto.Repo.delete!/2.

@@ -869,7 +869,7 @@

delete_all(queryable, opts \\ [])

-

Callback implementation for Ecto.Repo.delete_all/2.

+

Callback implementation for Ecto.Repo.delete_all/2.

@@ -894,7 +894,7 @@

disconnect_all(interval, opts \\ [])

A convenience function for SQL-based repositories that forces all connections in the -pool to disconnect within the given interval.

See Ecto.Adapters.SQL.disconnect_all/3 for more information.

+pool to disconnect within the given interval.

See Ecto.Adapters.SQL.disconnect_all/3 for more information.

@@ -918,7 +918,7 @@

exists?(queryable, opts \\ [])

-

Callback implementation for Ecto.Repo.exists?/2.

+

Callback implementation for Ecto.Repo.exists?/2.

@@ -943,7 +943,7 @@

explain(operation, queryable, opts \\ [])

A convenience function for SQL-based repositories that executes an EXPLAIN statement or similar -depending on the adapter to obtain statistics for the given query.

See Ecto.Adapters.SQL.explain/4 for more information.

+depending on the adapter to obtain statistics for the given query.

See Ecto.Adapters.SQL.explain/4 for more information.

@@ -967,7 +967,7 @@

get(queryable, id, opts \\ [])

-

Callback implementation for Ecto.Repo.get/3.

+

Callback implementation for Ecto.Repo.get/3.

@@ -991,7 +991,7 @@

get!(queryable, id, opts \\ [])

-

Callback implementation for Ecto.Repo.get!/3.

+

Callback implementation for Ecto.Repo.get!/3.

@@ -1015,7 +1015,7 @@

get_by(queryable, clauses, opts \\ [])

-

Callback implementation for Ecto.Repo.get_by/3.

+

Callback implementation for Ecto.Repo.get_by/3.

@@ -1039,7 +1039,7 @@

get_by!(queryable, clauses, opts \\ [])

-

Callback implementation for Ecto.Repo.get_by!/3.

+

Callback implementation for Ecto.Repo.get_by!/3.

@@ -1061,7 +1061,7 @@

get_dynamic_repo()

-

Callback implementation for Ecto.Repo.get_dynamic_repo/0.

+

Callback implementation for Ecto.Repo.get_dynamic_repo/0.

@@ -1083,7 +1083,7 @@

in_transaction?()

-

Callback implementation for Ecto.Repo.in_transaction?/0.

+

Callback implementation for Ecto.Repo.in_transaction?/0.

@@ -1107,7 +1107,7 @@

insert(struct, opts \\ [])

-

Callback implementation for Ecto.Repo.insert/2.

+

Callback implementation for Ecto.Repo.insert/2.

@@ -1131,7 +1131,7 @@

insert!(struct, opts \\ [])

-

Callback implementation for Ecto.Repo.insert!/2.

+

Callback implementation for Ecto.Repo.insert!/2.

@@ -1155,7 +1155,7 @@

insert_all(schema_or_source, entries, opts
-

Callback implementation for Ecto.Repo.insert_all/3.

+

Callback implementation for Ecto.Repo.insert_all/3.

@@ -1179,7 +1179,7 @@

insert_or_update(changeset, opts \\ [])

-

Callback implementation for Ecto.Repo.insert_or_update/2.

+

Callback implementation for Ecto.Repo.insert_or_update/2.

@@ -1203,7 +1203,7 @@

insert_or_update!(changeset, opts \\ []) -

Callback implementation for Ecto.Repo.insert_or_update!/2.

+

Callback implementation for Ecto.Repo.insert_or_update!/2.

@@ -1225,7 +1225,7 @@

load(schema_or_types, data)

-

Callback implementation for Ecto.Repo.load/2.

+

Callback implementation for Ecto.Repo.load/2.

@@ -1249,7 +1249,7 @@

one(queryable, opts \\ [])

-

Callback implementation for Ecto.Repo.one/2.

+

Callback implementation for Ecto.Repo.one/2.

@@ -1273,7 +1273,7 @@

one!(queryable, opts \\ [])

-

Callback implementation for Ecto.Repo.one!/2.

+

Callback implementation for Ecto.Repo.one!/2.

@@ -1297,7 +1297,7 @@

preload(struct_or_structs_or_nil, preloads,
-

Callback implementation for Ecto.Repo.preload/3.

+

Callback implementation for Ecto.Repo.preload/3.

@@ -1319,7 +1319,7 @@

prepare_query(operation, query, opts)

-

Callback implementation for Ecto.Repo.prepare_query/3.

+

Callback implementation for Ecto.Repo.prepare_query/3.

@@ -1341,7 +1341,7 @@

put_dynamic_repo(dynamic)

-

Callback implementation for Ecto.Repo.put_dynamic_repo/1.

+

Callback implementation for Ecto.Repo.put_dynamic_repo/1.

@@ -1367,7 +1367,7 @@

query(sql, params \\ [], opts \\ [])

-

A convenience function for SQL-based repositories that executes the given query.

See Ecto.Adapters.SQL.query/4 for more information.

+

A convenience function for SQL-based repositories that executes the given query.

See Ecto.Adapters.SQL.query/4 for more information.

@@ -1393,7 +1393,7 @@

query!(sql, params \\ [], opts \\ [])

-

A convenience function for SQL-based repositories that executes the given query.

See Ecto.Adapters.SQL.query!/4 for more information.

+

A convenience function for SQL-based repositories that executes the given query.

See Ecto.Adapters.SQL.query!/4 for more information.

@@ -1419,7 +1419,7 @@

query_many(sql, params \\ [], opts \\ []) -

A convenience function for SQL-based repositories that executes the given multi-result query.

See Ecto.Adapters.SQL.query_many/4 for more information.

+

A convenience function for SQL-based repositories that executes the given multi-result query.

See Ecto.Adapters.SQL.query_many/4 for more information.

@@ -1445,7 +1445,7 @@

query_many!(sql, params \\ [], opts \\ [])<
-

A convenience function for SQL-based repositories that executes the given multi-result query.

See Ecto.Adapters.SQL.query_many!/4 for more information.

+

A convenience function for SQL-based repositories that executes the given multi-result query.

See Ecto.Adapters.SQL.query_many!/4 for more information.

@@ -1469,7 +1469,7 @@

reload(queryable, opts \\ [])

-

Callback implementation for Ecto.Repo.reload/2.

+

Callback implementation for Ecto.Repo.reload/2.

@@ -1493,7 +1493,7 @@

reload!(queryable, opts \\ [])

-

Callback implementation for Ecto.Repo.reload!/2.

+

Callback implementation for Ecto.Repo.reload!/2.

@@ -1521,7 +1521,7 @@

rollback(value)

-

Callback implementation for Ecto.Repo.rollback/1.

+

Callback implementation for Ecto.Repo.rollback/1.

@@ -1545,7 +1545,7 @@

start_link(opts \\ [])

-

Callback implementation for Ecto.Repo.start_link/1.

+

Callback implementation for Ecto.Repo.start_link/1.

@@ -1569,7 +1569,7 @@

stop(timeout \\ 5000)

-

Callback implementation for Ecto.Repo.stop/1.

+

Callback implementation for Ecto.Repo.stop/1.

@@ -1593,7 +1593,7 @@

stream(queryable, opts \\ [])

-

Callback implementation for Ecto.Repo.stream/2.

+

Callback implementation for Ecto.Repo.stream/2.

@@ -1615,7 +1615,7 @@

to_sql(operation, queryable)

-

A convenience function for SQL-based repositories that translates the given query to SQL.

See Ecto.Adapters.SQL.to_sql/3 for more information.

+

A convenience function for SQL-based repositories that translates the given query to SQL.

See Ecto.Adapters.SQL.to_sql/3 for more information.

@@ -1639,7 +1639,7 @@

transaction(fun_or_multi, opts \\ [])

-

Callback implementation for Ecto.Repo.transaction/2.

+

Callback implementation for Ecto.Repo.transaction/2.

@@ -1663,7 +1663,7 @@

update(struct, opts \\ [])

-

Callback implementation for Ecto.Repo.update/2.

+

Callback implementation for Ecto.Repo.update/2.

@@ -1687,7 +1687,7 @@

update!(struct, opts \\ [])

-

Callback implementation for Ecto.Repo.update!/2.

+

Callback implementation for Ecto.Repo.update!/2.

@@ -1711,7 +1711,7 @@

update_all(queryable, updates, opts \\ [])<
-

Callback implementation for Ecto.Repo.update_all/3.

+

Callback implementation for Ecto.Repo.update_all/3.

diff --git a/Wanda.epub b/Wanda.epub index 7a6702e3345a7a79a9de1b1643588cacc745d4ee..5fd7fe81b220aea8da4b7e1d9c3e1f8208cf504a 100644 GIT binary patch delta 18490 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 CiiXYr delta 18767 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 diff --git a/gatherers.html b/gatherers.html index 299a9be5..4aa6859b 100644 --- a/gatherers.html +++ b/gatherers.html @@ -136,7 +136,7 @@

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)

diff --git a/hack_on_wanda.html b/hack_on_wanda.html index ff60b77c..7f683a34 100644 --- a/hack_on_wanda.html +++ b/hack_on_wanda.html @@ -142,7 +142,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

diff --git a/readme.html b/readme.html index 49ad7945..606410f3 100644 --- a/readme.html +++ b/readme.html @@ -272,14 +272,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
-}

+}

diff --git a/specification.html b/specification.html index 2dcdf291..12094935 100644 --- a/specification.html +++ b/specification.html @@ -521,12 +521,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.