From a9c118ca3a0b433c668a4c4ce0ede2cea295cc23 Mon Sep 17 00:00:00 2001 From: dottorblaster Date: Mon, 26 Aug 2024 12:50:02 +0000 Subject: [PATCH] deploy: 3d7df1543a3d8a41708490f3ecaf5dd07dca44d3 --- Wanda.DataCase.html | 6 +- Wanda.Executions.Execution.html | 2 +- Wanda.Repo.html | 152 ++++++++++++++++---------------- Wanda.epub | Bin 535649 -> 535646 bytes gatherers.html | 2 +- hack_on_wanda.html | 2 +- readme.html | 8 +- specification.html | 6 +- 8 files changed, 89 insertions(+), 89 deletions(-) diff --git a/Wanda.DataCase.html b/Wanda.DataCase.html index e5981d7c..e5b2aff0 100644 --- a/Wanda.DataCase.html +++ b/Wanda.DataCase.html @@ -204,9 +204,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 754a7b66..135d818e 100644 --- a/Wanda.Executions.Execution.html +++ b/Wanda.Executions.Execution.html @@ -250,7 +250,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 08fc83b0..369be0c7 100644 --- a/Wanda.Repo.html +++ b/Wanda.Repo.html @@ -147,7 +147,7 @@

-

Callback implementation for Ecto.Repo.aggregate/3.

+

Callback implementation for Ecto.Repo.aggregate/3.

@@ -157,7 +157,7 @@

-

Callback implementation for Ecto.Repo.aggregate/4.

+

Callback implementation for Ecto.Repo.aggregate/4.

@@ -167,7 +167,7 @@

-

Callback implementation for Ecto.Repo.all/2.

+

Callback implementation for Ecto.Repo.all/2.

@@ -177,7 +177,7 @@

-

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

+

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

@@ -187,7 +187,7 @@

-

Callback implementation for Ecto.Repo.checkout/2.

+

Callback implementation for Ecto.Repo.checkout/2.

@@ -205,7 +205,7 @@

-

Callback implementation for Ecto.Repo.config/0.

+

Callback implementation for Ecto.Repo.config/0.

@@ -215,7 +215,7 @@

-

Callback implementation for Ecto.Repo.default_options/1.

+

Callback implementation for Ecto.Repo.default_options/1.

@@ -225,7 +225,7 @@

-

Callback implementation for Ecto.Repo.delete/2.

+

Callback implementation for Ecto.Repo.delete/2.

@@ -235,7 +235,7 @@

-

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

+

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

@@ -245,7 +245,7 @@

-

Callback implementation for Ecto.Repo.delete_all/2.

+

Callback implementation for Ecto.Repo.delete_all/2.

@@ -266,7 +266,7 @@

-

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

+

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

@@ -287,7 +287,7 @@

-

Callback implementation for Ecto.Repo.get/3.

+

Callback implementation for Ecto.Repo.get/3.

@@ -297,7 +297,7 @@

-

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

+

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

@@ -307,7 +307,7 @@

-

Callback implementation for Ecto.Repo.get_by/3.

+

Callback implementation for Ecto.Repo.get_by/3.

@@ -317,7 +317,7 @@

-

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

+

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

@@ -327,7 +327,7 @@

-

Callback implementation for Ecto.Repo.get_dynamic_repo/0.

+

Callback implementation for Ecto.Repo.get_dynamic_repo/0.

@@ -337,7 +337,7 @@

-

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

+

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

@@ -347,7 +347,7 @@

-

Callback implementation for Ecto.Repo.insert/2.

+

Callback implementation for Ecto.Repo.insert/2.

@@ -357,7 +357,7 @@

-

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

+

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

@@ -367,7 +367,7 @@

-

Callback implementation for Ecto.Repo.insert_all/3.

+

Callback implementation for Ecto.Repo.insert_all/3.

@@ -377,7 +377,7 @@

-

Callback implementation for Ecto.Repo.insert_or_update/2.

+

Callback implementation for Ecto.Repo.insert_or_update/2.

@@ -387,7 +387,7 @@

-

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

+

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

@@ -397,7 +397,7 @@

-

Callback implementation for Ecto.Repo.load/2.

+

Callback implementation for Ecto.Repo.load/2.

@@ -407,7 +407,7 @@

-

Callback implementation for Ecto.Repo.one/2.

+

Callback implementation for Ecto.Repo.one/2.

@@ -417,7 +417,7 @@

-

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

+

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

@@ -427,7 +427,7 @@

-

Callback implementation for Ecto.Repo.preload/3.

+

Callback implementation for Ecto.Repo.preload/3.

@@ -437,7 +437,7 @@

-

Callback implementation for Ecto.Repo.prepare_query/3.

+

Callback implementation for Ecto.Repo.prepare_query/3.

@@ -447,7 +447,7 @@

-

Callback implementation for Ecto.Repo.put_dynamic_repo/1.

+

Callback implementation for Ecto.Repo.put_dynamic_repo/1.

@@ -497,7 +497,7 @@

-

Callback implementation for Ecto.Repo.reload/2.

+

Callback implementation for Ecto.Repo.reload/2.

@@ -507,7 +507,7 @@

-

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

+

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

@@ -517,7 +517,7 @@

-

Callback implementation for Ecto.Repo.rollback/1.

+

Callback implementation for Ecto.Repo.rollback/1.

@@ -527,7 +527,7 @@

-

Callback implementation for Ecto.Repo.start_link/1.

+

Callback implementation for Ecto.Repo.start_link/1.

@@ -537,7 +537,7 @@

-

Callback implementation for Ecto.Repo.stop/1.

+

Callback implementation for Ecto.Repo.stop/1.

@@ -547,7 +547,7 @@

-

Callback implementation for Ecto.Repo.stream/2.

+

Callback implementation for Ecto.Repo.stream/2.

@@ -567,7 +567,7 @@

-

Callback implementation for Ecto.Repo.transaction/2.

+

Callback implementation for Ecto.Repo.transaction/2.

@@ -577,7 +577,7 @@

-

Callback implementation for Ecto.Repo.update/2.

+

Callback implementation for Ecto.Repo.update/2.

@@ -587,7 +587,7 @@

-

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

+

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

@@ -597,7 +597,7 @@

-

Callback implementation for Ecto.Repo.update_all/3.

+

Callback implementation for Ecto.Repo.update_all/3.

@@ -635,7 +635,7 @@

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

Callback implementation for Ecto.Repo.aggregate/3.

+

Callback implementation for Ecto.Repo.aggregate/3.

@@ -657,7 +657,7 @@

aggregate(queryable, aggregate, field, opts
-

Callback implementation for Ecto.Repo.aggregate/4.

+

Callback implementation for Ecto.Repo.aggregate/4.

@@ -681,7 +681,7 @@

all(queryable, opts \\ [])

-

Callback implementation for Ecto.Repo.all/2.

+

Callback implementation for Ecto.Repo.all/2.

@@ -703,7 +703,7 @@

checked_out?()

-

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

+

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

@@ -727,7 +727,7 @@

checkout(fun, opts \\ [])

-

Callback implementation for Ecto.Repo.checkout/2.

+

Callback implementation for Ecto.Repo.checkout/2.

@@ -771,7 +771,7 @@

config()

-

Callback implementation for Ecto.Repo.config/0.

+

Callback implementation for Ecto.Repo.config/0.

@@ -793,7 +793,7 @@

default_options(operation)

-

Callback implementation for Ecto.Repo.default_options/1.

+

Callback implementation for Ecto.Repo.default_options/1.

@@ -817,7 +817,7 @@

delete(struct, opts \\ [])

-

Callback implementation for Ecto.Repo.delete/2.

+

Callback implementation for Ecto.Repo.delete/2.

@@ -841,7 +841,7 @@

delete!(struct, opts \\ [])

-

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

+

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

@@ -865,7 +865,7 @@

delete_all(queryable, opts \\ [])

-

Callback implementation for Ecto.Repo.delete_all/2.

+

Callback implementation for Ecto.Repo.delete_all/2.

@@ -914,7 +914,7 @@

exists?(queryable, opts \\ [])

-

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

+

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

@@ -963,7 +963,7 @@

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

-

Callback implementation for Ecto.Repo.get/3.

+

Callback implementation for Ecto.Repo.get/3.

@@ -987,7 +987,7 @@

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

-

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

+

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

@@ -1011,7 +1011,7 @@

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

-

Callback implementation for Ecto.Repo.get_by/3.

+

Callback implementation for Ecto.Repo.get_by/3.

@@ -1035,7 +1035,7 @@

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

-

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

+

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

@@ -1057,7 +1057,7 @@

get_dynamic_repo()

-

Callback implementation for Ecto.Repo.get_dynamic_repo/0.

+

Callback implementation for Ecto.Repo.get_dynamic_repo/0.

@@ -1079,7 +1079,7 @@

in_transaction?()

-

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

+

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

@@ -1103,7 +1103,7 @@

insert(struct, opts \\ [])

-

Callback implementation for Ecto.Repo.insert/2.

+

Callback implementation for Ecto.Repo.insert/2.

@@ -1127,7 +1127,7 @@

insert!(struct, opts \\ [])

-

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

+

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

@@ -1151,7 +1151,7 @@

insert_all(schema_or_source, entries, opts
-

Callback implementation for Ecto.Repo.insert_all/3.

+

Callback implementation for Ecto.Repo.insert_all/3.

@@ -1175,7 +1175,7 @@

insert_or_update(changeset, opts \\ [])

-

Callback implementation for Ecto.Repo.insert_or_update/2.

+

Callback implementation for Ecto.Repo.insert_or_update/2.

@@ -1199,7 +1199,7 @@

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

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

+

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

@@ -1221,7 +1221,7 @@

load(schema_or_types, data)

-

Callback implementation for Ecto.Repo.load/2.

+

Callback implementation for Ecto.Repo.load/2.

@@ -1245,7 +1245,7 @@

one(queryable, opts \\ [])

-

Callback implementation for Ecto.Repo.one/2.

+

Callback implementation for Ecto.Repo.one/2.

@@ -1269,7 +1269,7 @@

one!(queryable, opts \\ [])

-

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

+

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

@@ -1293,7 +1293,7 @@

preload(struct_or_structs_or_nil, preloads,
-

Callback implementation for Ecto.Repo.preload/3.

+

Callback implementation for Ecto.Repo.preload/3.

@@ -1315,7 +1315,7 @@

prepare_query(operation, query, opts)

-

Callback implementation for Ecto.Repo.prepare_query/3.

+

Callback implementation for Ecto.Repo.prepare_query/3.

@@ -1337,7 +1337,7 @@

put_dynamic_repo(dynamic)

-

Callback implementation for Ecto.Repo.put_dynamic_repo/1.

+

Callback implementation for Ecto.Repo.put_dynamic_repo/1.

@@ -1465,7 +1465,7 @@

reload(queryable, opts \\ [])

-

Callback implementation for Ecto.Repo.reload/2.

+

Callback implementation for Ecto.Repo.reload/2.

@@ -1489,7 +1489,7 @@

reload!(queryable, opts \\ [])

-

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

+

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

@@ -1517,7 +1517,7 @@

rollback(value)

-

Callback implementation for Ecto.Repo.rollback/1.

+

Callback implementation for Ecto.Repo.rollback/1.

@@ -1541,7 +1541,7 @@

start_link(opts \\ [])

-

Callback implementation for Ecto.Repo.start_link/1.

+

Callback implementation for Ecto.Repo.start_link/1.

@@ -1565,7 +1565,7 @@

stop(timeout \\ 5000)

-

Callback implementation for Ecto.Repo.stop/1.

+

Callback implementation for Ecto.Repo.stop/1.

@@ -1589,7 +1589,7 @@

stream(queryable, opts \\ [])

-

Callback implementation for Ecto.Repo.stream/2.

+

Callback implementation for Ecto.Repo.stream/2.

@@ -1635,7 +1635,7 @@

transaction(fun_or_multi, opts \\ [])

-

Callback implementation for Ecto.Repo.transaction/2.

+

Callback implementation for Ecto.Repo.transaction/2.

@@ -1659,7 +1659,7 @@

update(struct, opts \\ [])

-

Callback implementation for Ecto.Repo.update/2.

+

Callback implementation for Ecto.Repo.update/2.

@@ -1683,7 +1683,7 @@

update!(struct, opts \\ [])

-

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

+

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

@@ -1707,7 +1707,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 ec19f98b93d044367e66efaecee6b599b527f2ea..b22cc124fa64fcacd4df544174df053edaed760c 100644 GIT binary patch delta 18073 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

JfUe{=hv<>r+Kz~2?_6nJ3S zlT--+B!y~#txfFgTANzWzOOU`4=U7(i+$D7Ye>ViOSt#+?=h2J=4% z$bSwj2n@miQb0kEZ%uLnAYaZB!oU#!1BwPWV*r_`9^E~@=wtUB2Ikcj3=G8Ue~%p4 zEA1F;9YQcECJ+r8Eej@)6gCMgg9&+S=25fy&=+|E0|v%G2nGfc#($3-*hFv)CXfee z{*zQ^9v|d#*$0GyfqcjJ-y;XMyf&u0mK^fh5iA@Y{NpFS(04w;*jNxRWMFnIASKkR z3gjG4=4Xu2PZIEZs=sXn-F$^u{3QzmgZ*EdkLmvbS7HIFpz-b5P=RSVVPKjs{%>Xk z;3F&`9Te0l#=g~-hY0id`!{_XFfTTc4jO|lHY6rvuq!r@7J8lnIfqLt2ctl?U%*Vb zKmsWD;1MMUM#cdOLQOwz-Pj^P?h+uqNdHfe0bpYsARlz+1G<-U1Tg{k>^s;52S^UK z`;LSKUcmd?=tmG2aGPz9B0O+wClUY*+0{V-FJk|dOW;D}QJw#l6GBy?O@Bv$D*ONM zf2bF1f(Nm8-;0C`p2z)bYVXk$Xy{2)HiSeBHT9HA{%&$AB$XgY6aCxO9AINSAP*D- z%0}zIgmg6(E({FwKl!48EAfDW&_>$F1CqkaFCc-jNq|IPl@%m3Fb6)606IJ5KUMO9 zz+%Kee0b88{~@TrLqvZ=EWw9pAFltEt>Od8phjT{AndlyzwFlENa$d55y4-* z508L?-TxOLPXuIwD$hU4LVy2HMhEo=?HyzJ&)ncjNPMv7U=u>108}A~5TYP(_E%w; z5XeXUI2~{TFA2Xw(pQDt7>fUsKKa%Eu;^gJE6D!bV@6O9_Vw?lz$*k053t}UBA`6f z!y*yH!_329EjwZ$+T)hk( z0>D1JkPriL{+6cF&B1nVNcz-}@ITa!78A>1;)O~N6&kQ}peI@$;?IC&)OrTIgOoXXJ+4$fVbpSS4 z8Da<8deE&$5*QfRT^JaGe?r3oyHf(`p`m3$48Y!kzf%I4ph~0CZh^j#d}1N_5dEW6 z1V*3&GD4L&s32ZVJON-T9{?fPj0%Vi4g9c;k(CkBUH*_p`*-{Se4toba1f;WK(Pk; zTDG5HVPHPP{om^G!T+yaqW}N~7=;>$4fRPu4e`kt@IM(j*q-`tLxLV<$szxfVS;Bv zAjpl2;eassC97~$mn<-1FmF*Ofy%SzdnN>xs1tA+*TSOArw3N z$i+>6;$qPPiJ)9oS_oGu`-$tF4L}9k(Ec^<@hD2me-aJl1Ms1NL7UsyMmTUB($}vc zLk%*>|9j-X)`E{||6WwfJ5X&Or>rid)cgzTt$Z@7Pxp5=QtW~xt|0b4L#7MEf2}=U zDYI&yprv$>rhpVMa36$#TWosbVt#{6i2t?*6+J{W)%+v^euwn2E&bnIJRe0$txqEF zRsiPz8hQ9pbo}#4gv9W-fKf6)xZPckTvG7wJ^(VqG>K8!$YXzSMdTyH2t1{oh@kg@;M8kFD) zM&NU3I~+m+gKL<1R3!oL&OkCkW&JyY{#hgVM_&hQ%mjokE`XDmAo{ASkNU)qYXdY; z*Z-^={2x_pW}pbvwF)z2^1T6DGykp4&;S3cOet^zef%%D)<{SkQq92b|3Od z93c6-LT;k|z0F%V1%QtqAj6A< 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 de25873a..20a012eb 100644 --- a/hack_on_wanda.html +++ b/hack_on_wanda.html @@ -137,7 +137,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 6b990ffc..1bcb84d9 100644 --- a/readme.html +++ b/readme.html @@ -267,14 +267,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 61d572f4..e4d002f9 100644 --- a/specification.html +++ b/specification.html @@ -516,12 +516,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.