How to join multiple parts of one data container

23 views
Skip to first unread message

Michal Švamberg

unread,
Jul 26, 2023, 8:42:56 AM7/26/23
to help-c...@googlegroups.com
Hi all,
I have big data container (more than 4K) with all debian repository, as this:
<pre>
{
  "debian_10": {
    "debian": {
      "Components": "main contrib non-free",
      "Suites": [
        "buster",
        "buster-backports"
      ],
      "URIs": "http://deb.debian.org/debian"
    },
    "debian-security": {
      "Components": "main contrib non-free",
      "Suites": [
...
</pre>

I want shorting this data to server, this is running perfect:
"myrepos" data => '[ repos[debian_12] ,  repos[debian_11] ]';

But when i need more specific repository
"myrepos" data => '[ repos[debian_10][debian] ,  repos[debian_10][debian-security] ]'
I get this error:
error: Error parsing JSON expression '[debian] ,  repos[debian_10][debian-security] ]': Unable to parse json data as array, did not start with '['

How can I access the second levels of the data container and serialize them?

Thanks.
Michal Svamberg

Nick Anderson

unread,
Jul 26, 2023, 10:11:43 AM7/26/23
to help-cfengine
Can you post some standalone policy that reproduces the issue?

Michal Švamberg

unread,
Jul 27, 2023, 4:10:09 AM7/27/23
to help-cfengine
Hi,
the simplified source code is in the email attachment. When I run it:
# cf-agent -Kf ./test.cf -C --show-evaluated-vars=default:main\\.level
   error: Error parsing JSON expression '[hwraid] ]': Unable to parse json data as array, did not start with '['
   error: Error parsing JSON expression '[hwraid] ]': Unable to parse json data as array, did not start with '['
   error: Error parsing JSON expression '[icinga], repos[ubuntu_16][hwraid] ]': Unable to parse json data as array, did not start with '['
   error: Error parsing JSON expression '[icinga], repos[ubuntu_16][hwraid] ]': Unable to parse json data as array, did not start with '['
...
Variable name                            Variable value                                               Meta tags                                Comment                                
default:main.level1_serialized           [{"debian":{"Suites":["bookworm","bookworm-backports","bookworm-proposed-updates","bookworm-updates"],"URIs":"http://deb.debian.org/debian"},"debian-security":{"Suites":["bookworm-security"],"URIs":"http://deb.debian.org/debian-security"},"icinga":{"Suites":["icinga-bookworm"],"URIs":"https://packages.icinga.com/debian"}},{"hwraid":{"Suites":["stretch"],"Types":["deb"],"URIs":"https://hwraid.le-vert.net/debian"},"ubuntu":{"Suites":["xenial","xenial-backports","xenial-proposed","xenial-updates","xenial-security"],"URIs":"http://cz.archive.ubuntu.com/ubuntu"},"ubuntu-security":{"Suites":["xenial-security"],"URIs":"http://cz.archive.ubuntu.com/ubuntu"}}] source=promise                                                                  
default:main.level1_single               [{"hwraid":{"Suites":["stretch"],"Types":["deb"],"URIs":"https://hwraid.le-vert.net/debian"},"ubuntu":{"Suites":["xenial","xenial-backports","xenial-proposed","xenial-updates","xenial-security"],"URIs":"http://cz.archive.ubuntu.com/ubuntu"},"ubuntu-security":{"Suites":["xenial-security"],"URIs":"http://cz.archive.ubuntu.com/ubuntu"}}] source=promise   

I get level1* variables only. Is there any way to do this for the second level as well?

Thanks
Michal Svamberg

Dne středa 26. července 2023 v 16:11:43 UTC+2 uživatel nick.a...@northern.tech napsal:
test.cf

Bas van der Vlies

unread,
Jul 27, 2023, 5:19:13 AM7/27/23
to Michal Švamberg, help-cfengine


On 27/07/2023 10:10, Michal Švamberg wrote:
> Hi,
> the simplified source code is in the email attachment. When I run it:
> # cf-agent -Kf ./test.cf -C --show-evaluated-vars=default:main\\.level
>    error: Error parsing JSON expression '[hwraid] ]': Unable to parse
> json data as array, did not start with '['
>    error: Error parsing JSON expression '[hwraid] ]': Unable to parse
> json data as array, did not start with '['
>    error: Error parsing JSON expression '[icinga],
> repos[ubuntu_16][hwraid] ]': Unable to parse json data as array, did not
> start with '['
>    error: Error parsing JSON expression '[icinga],
> repos[ubuntu_16][hwraid] ]': Unable to parse json data as array, did not
> start with '['
> ...
> Variable name                            Variable value
>                               Meta tags
>  Comment
> default:main.level1_serialized
> [{"debian":{"Suites":["bookworm","bookworm-backports","bookworm-proposed-updates","bookworm-updates"],"URIs":"http://deb.debian.org/debian"},"debian-security":{"Suites":["bookworm-security"],"URIs":"http://deb.debian.org/debian-security"},"icinga":{"Suites":["icinga-bookworm"],"URIs":"https://packages.icinga.com/debian"}},{"hwraid":{"Suites":["stretch"],"Types":["deb"],"URIs":"https://hwraid.le-vert.net/debian"},"ubuntu":{"Suites":["xenial","xenial-backports","xenial-proposed","xenial-updates","xenial-security"],"URIs":"http://cz.archive.ubuntu.com/ubuntu"},"ubuntu-security":{"Suites":["xenial-security"],"URIs":"http://cz.archive.ubuntu.com/ubuntu"}}] source=promise
> default:main.level1_single
> [{"hwraid":{"Suites":["stretch"],"Types":["deb"],"URIs":"https://hwraid.le-vert.net/debian"},"ubuntu":{"Suites":["xenial","xenial-backports","xenial-proposed","xenial-updates","xenial-security"],"URIs":"http://cz.archive.ubuntu.com/ubuntu"},"ubuntu-security":{"Suites":["xenial-security"],"URIs":"http://cz.archive.ubuntu.com/ubuntu"}}] source=promise
>
> I get level1* variables only. Is there any way to do this for the second
> level as well?
>

Michal,

The problem is that in JSON you can have a list of dictionaries/hashes
but not a list of items, eg:
```
[


Types: [ deb ],


URIs: https://hwraid.le-vert.net/debian


]
```

jq '.' list.json
```
11:16 r10n17.lisa.surfsara.nl:~
root# jq '.' list.json
parse error: ':' not as part of an object at line 2, column 12
```


--
--
Bas van der Vlies
| High Performance Computing & Visualization | SURF| Science Park 140 |
1098 XG Amsterdam
| T +31 (0) 20 800 1300 | bas.van...@surf.nl | www.surf.nl |

Bas van der Vlies

unread,
Jul 27, 2023, 7:34:16 AM7/27/23
to Michal Švamberg, help-cfengine
Michal,

It is indeed strange i got it working but I think you had the same
solution:
* "level2_single" data => mergedata('[]', "repos[ubuntu_16][hwraid]");

and the second one does not make sense for me `level1_serialized`
because the keys for me get override because they are the same

What is the main difference that level 1 returns:
* keywords with hashes --> debian --> { values } => I assume a
getlist function()

level2 is only returning
* keyword:value => want is not a list somehow

On 27/07/2023 12:54, Michal Švamberg wrote:
> I'm sorry, I forgot the attachment.
> Michal
>
> čt 27. 7. 2023 v 12:52 odesílatel Michal Švamberg <svam...@gmail.com
> <mailto:svam...@gmail.com>> napsal:
>
> Hi Bas,
> I fixed mistakes in JSON (remove commas at end of lists), now is it
> valid.
> I tried some changes in JSON structure (change hash to list, ...)
> without solving the problem.
> The base question is why work:
> "level1_single" data => '[ repos[ubuntu_16] ]';
> but not working
> "level1_single" data => '[ repos[ubuntu_16][hwraid] ]';
> Both keys ("ubuntu_16" and "hwraid") are hashes, not lists. The
> inside structure is irrelevant (or not?).
>
> Thanks
> Michal Svamberg
>
>
>
> čt 27. 7. 2023 v 11:19 odesílatel Bas van der Vlies
> <bas.van...@surf.nl <mailto:bas.van...@surf.nl>> napsal:
>
>
>
> On 27/07/2023 10:10, Michal Švamberg wrote:
> > Hi,
> > the simplified source code is in the email attachment. When I
> run it:
> > # cf-agent -Kf ./test.cf <http://test.cf> -C
> --show-evaluated-vars=default:main\\.level
> >     error: Error parsing JSON expression '[hwraid] ]': Unable
> to parse
> > json data as array, did not start with '['
> >     error: Error parsing JSON expression '[hwraid] ]': Unable
> to parse
> > json data as array, did not start with '['
> >     error: Error parsing JSON expression '[icinga],
> > repos[ubuntu_16][hwraid] ]': Unable to parse json data as
> array, did not
> > start with '['
> >     error: Error parsing JSON expression '[icinga],
> > repos[ubuntu_16][hwraid] ]': Unable to parse json data as
> array, did not
> > start with '['
> > ...
> > Variable name                            Variable value
> >                                Meta tags
> >   Comment
> > default:main.level1_serialized
> >
> [{"debian":{"Suites":["bookworm","bookworm-backports","bookworm-proposed-updates","bookworm-updates"],"URIs":"http://deb.debian.org/debian <http://deb.debian.org/debian>"},"debian-security":{"Suites":["bookworm-security"],"URIs":"http://deb.debian.org/debian-security <http://deb.debian.org/debian-security>"},"icinga":{"Suites":["icinga-bookworm"],"URIs":"https://packages.icinga.com/debian <https://packages.icinga.com/debian>"}},{"hwraid":{"Suites":["stretch"],"Types":["deb"],"URIs":"https://hwraid.le-vert.net/debian <https://hwraid.le-vert.net/debian>"},"ubuntu":{"Suites":["xenial","xenial-backports","xenial-proposed","xenial-updates","xenial-security"],"URIs":"http://cz.archive.ubuntu.com/ubuntu <http://cz.archive.ubuntu.com/ubuntu>"},"ubuntu-security":{"Suites":["xenial-security"],"URIs":"http://cz.archive.ubuntu.com/ubuntu <http://cz.archive.ubuntu.com/ubuntu>"}}] source=promise
> > default:main.level1_single
> >
> [{"hwraid":{"Suites":["stretch"],"Types":["deb"],"URIs":"https://hwraid.le-vert.net/debian <https://hwraid.le-vert.net/debian>"},"ubuntu":{"Suites":["xenial","xenial-backports","xenial-proposed","xenial-updates","xenial-security"],"URIs":"http://cz.archive.ubuntu.com/ubuntu <http://cz.archive.ubuntu.com/ubuntu>"},"ubuntu-security":{"Suites":["xenial-security"],"URIs":"http://cz.archive.ubuntu.com/ubuntu <http://cz.archive.ubuntu.com/ubuntu>"}}] source=promise
> >
> > I get level1* variables only. Is there any way to do this for
> the second
> > level as well?
> >
>
> Michal,
>
>   The problem is that in JSON you can have a list of
> dictionaries/hashes
> but not a list of items, eg:
> ```
> [
>
>
>      Types: [ deb ],
>
>
>      URIs: https://hwraid.le-vert.net/debian
> <https://hwraid.le-vert.net/debian>
>
>
> ]
> ```
>
> jq '.' list.json
> ```
> 11:16 r10n17.lisa.surfsara.nl:~
> root# jq '.' list.json
> parse error: ':' not as part of an object at line 2, column 12
> ```
>
>
> --
> --
> Bas van der Vlies
> | High Performance Computing & Visualization | SURF| Science
> Park 140 |
> 1098 XG  Amsterdam
> | T +31 (0) 20 800 1300  | bas.van...@surf.nl
> <mailto:bas.van...@surf.nl> | www.surf.nl
> <http://www.surf.nl> |

Michal Švamberg

unread,
Jul 27, 2023, 9:55:25 AM7/27/23
to Bas van der Vlies, help-cfengine
Hi all,
I have a solution (thanks to Bas):

    "level1_ubuntu" data => '@(repos[ubuntu_16])';
    "level1_debian" data => '@(repos[debian_12])';
    "level2_list" data => '[ level1_ubuntu[hwraid], level1_debian[icinga] ]';

That works, but there are too many lines. Is there a better solution?

Thanks
Michal



čt 27. 7. 2023 v 13:34 odesílatel Bas van der Vlies <bas.van...@surf.nl> napsal:
test.cf

Nick Anderson

unread,
Jul 28, 2023, 11:49:00 AM7/28/23
to svam...@gmail.com, help-cfengine

Hi all, I have a solution (thanks to Bas):

"level1_ubuntu" data => '@(repos[ubuntu_16])'; "level1_debian" data => '@(repos[debian_12])'; "level2_list" data => '[ level1_ubuntu[hwraid], level1_debian[icinga] ]';

That works, but there are too many lines. Is there a better solution?

Too many lines?

You mean level1_<everydistrorelease>, level2_list <everylevel1_distro[KEY]>?

I kind of imagine that getindices() could help but it starts to look like a lot of programming in a state oriented DSL. Makes me think that it might be a better fit for something else outside CFEngine. Perhaps some pre-processing scripts to munge the data into the formats you need.

While you can do some of this in CFEngine, (and I am usually tempted to try quite hard because I find it entertaining, and also prize the value of not relying on anything external) it can become a yak shaving exercise that winds up having a higher maintenance burden.

Message has been deleted

Nick Anderson

unread,
Jul 28, 2023, 12:44:52 PM7/28/23
to help-c...@googlegroups.com

While you can do some of this in CFEngine, (and I am usually tempted to try quite hard because I find it entertaining, and also prize the value of not relying on anything external) it can become a yak shaving exercise that winds up having a higher maintenance burden.

Oh, renamed variable fixed and re-sent.

Couldn't resist some fun Friday yak shaving … I think this did what you wanted.

Nearly what you had originally, just tweaked ever so slightly to move the bundle to example and called it from __main__.

bundle agent __main__
{
  methods:
      "example";
}
bundle agent example
{
vars:
  any::
    "repos" data => '
{
  "ubuntu_16": {
    "ubuntu": {
      "URIs": "http://cz.archive.ubuntu.com/ubuntu",
      "Suites": [ "xenial", "xenial-backports", "xenial-proposed", "xenial-updates", "xenial-security" ]
    },
    "ubuntu-security": {
      "URIs": "http://cz.archive.ubuntu.com/ubuntu",
      "Suites": [ "xenial-security" ]
    },
    "hwraid": {
      "URIs": "https://hwraid.le-vert.net/debian",
      "Suites": [ "stretch" ]
    }
  },
  "debian_12": {
    "debian": {
      "URIs": "http://deb.debian.org/debian",
      "Suites": [ "bookworm", "bookworm-backports", "bookworm-proposed-updates", "bookworm-updates" ]
    },
    "debian-security": {
      "URIs": "http://deb.debian.org/debian-security",
      "Suites": [ "bookworm-security" ]
    },
    "icinga": {
      "URIs": "https://packages.icinga.com/debian",
      "Suites": [ "icinga-bookworm" ]
    }
  }
}
';
      "l1_keys" slist => getindices( "repos" );

      # this working
      "level1_ubuntu" data => '@(repos[ubuntu_16])';
      "level1_debian" data => '@(repos[debian_12])';

      "level2_list" data => '[ level1_ubuntu[hwraid], level1_debian[icinga] ]';

}

# cf-agent --no-lock --show-evaluated-vars=default:example --file /tmp/example.cf
Variable name                            Variable value                                               Meta tags                                Comment
default:example.l1_keys                   {"ubuntu_16","debian_12"}                                   source=promise
default:example.level1_debian            {"debian":{"Suites":["bookworm","bookworm-backports","bookworm-proposed-updates","bookworm-updates"],"URIs":"http://deb.debian.org/debian"},"debian-security":{"Suites":["bookworm-security"],"URIs":"http://deb.debian.org/debian-security"},"icinga":{"Suites":["icinga-bookworm"],"URIs":"https://packages.icinga.com/debian"}} source=promise
default:example.level1_ubuntu            {"hwraid":{"Suites":["stretch"],"URIs":"https://hwraid.le-vert.net/debian"},"ubuntu":{"Suites":["xenial","xenial-backports","xenial-proposed","xenial-updates","xenial-security"],"URIs":"http://cz.archive.ubuntu.com/ubuntu"},"ubuntu-security":{"Suites":["xenial-security"],"URIs":"http://cz.archive.ubuntu.com/ubuntu"}} source=promise
default:example.level2_list              [{"Suites":["stretch"],"URIs":"https://hwraid.le-vert.net/debian"},{"Suites":["icinga-bookworm"],"URIs":"https://packages.icinga.com/debian"}] source=promise
default:example.repos                    {"debian_12":{"debian":{"Suites":["bookworm","bookworm-backports","bookworm-proposed-updates","bookworm-updates"],"URIs":"http://deb.debian.org/debian"},"debian-security":{"Suites":["bookworm-security"],"URIs":"http://deb.debian.org/debian-security"},"icinga":{"Suites":["icinga-bookworm"],"URIs":"https://packages.icinga.com/debian"}},"ubuntu_16":{"hwraid":{"Suites":["stretch"],"URIs":"https://hwraid.le-vert.net/debian"},"ubuntu":{"Suites":["xenial","xenial-backports","xenial-proposed","xenial-updates","xenial-security"],"URIs":"http://cz.archive.ubuntu.com/ubuntu"},"ubuntu-security":{"Suites":["xenial-security"],"URIs":"http://cz.archive.ubuntu.com/ubuntu"}}} source=promise

A bit more dynamic …

Here instead of explicitly defining a variable for each level 1 key we did it dynamically by using a list derived from getindices().

bundle agent __main__
{
  methods:
      "example";
}
bundle agent example
{
vars:
  any::
    "repos" data => '
{
  "ubuntu_16": {
    "ubuntu": {
      "URIs": "http://cz.archive.ubuntu.com/ubuntu",
      "Suites": [ "xenial", "xenial-backports", "xenial-proposed", "xenial-updates", "xenial-security" ]
    },
    "ubuntu-security": {
      "URIs": "http://cz.archive.ubuntu.com/ubuntu",
      "Suites": [ "xenial-security" ]
    },
    "hwraid": {
      "URIs": "https://hwraid.le-vert.net/debian",
      "Suites": [ "stretch" ]
    }
  },
  "debian_12": {
    "debian": {
      "URIs": "http://deb.debian.org/debian",
      "Suites": [ "bookworm", "bookworm-backports", "bookworm-proposed-updates", "bookworm-updates" ]
    },
    "debian-security": {
      "URIs": "http://deb.debian.org/debian-security",
      "Suites": [ "bookworm-security" ]
    },
    "icinga": {
      "URIs": "https://packages.icinga.com/debian",
      "Suites": [ "icinga-bookworm" ]
    }
  }
}
';
      "l1_keys" slist => getindices( "repos" );

      # this working
      # "level1_ubuntu" data => '@(repos[ubuntu_16])';
      # "level1_debian" data => '@(repos[debian_12])';

      # I know you had ubuntu and not the specific ubuntu but what about ubuntu_18 and 16 both being present?
      "level1_$(l1_keys)" data => '@(repos[$(l1_keys)])';


    "level2_list" data => '[ level1_ubuntu_16[hwraid], level1_debian_12[icinga] ]';

}
# cf-agent --no-lock --show-evaluated-vars=default:example --file /tmp/example.cf
Variable name                            Variable value                                               Meta tags                                Comment
default:example.l1_keys                   {"ubuntu_16","debian_12"}                                   source=promise
default:example.level1_debian_12         {"debian":{"Suites":["bookworm","bookworm-backports","bookworm-proposed-updates","bookworm-updates"],"URIs":"http://deb.debian.org/debian"},"debian-security":{"Suites":["bookworm-security"],"URIs":"http://deb.debian.org/debian-security"},"icinga":{"Suites":["icinga-bookworm"],"URIs":"https://packages.icinga.com/debian"}} source=promise
default:example.level1_ubuntu_16         {"hwraid":{"Suites":["stretch"],"URIs":"https://hwraid.le-vert.net/debian"},"ubuntu":{"Suites":["xenial","xenial-backports","xenial-proposed","xenial-updates","xenial-security"],"URIs":"http://cz.archive.ubuntu.com/ubuntu"},"ubuntu-security":{"Suites":["xenial-security"],"URIs":"http://cz.archive.ubuntu.com/ubuntu"}} source=promise
default:example.level2_list              [{"Suites":["stretch"],"URIs":"https://hwraid.le-vert.net/debian"},{"Suites":["icinga-bookworm"],"URIs":"https://packages.icinga.com/debian"}] source=promise
default:example.repos                    {"debian_12":{"debian":{"Suites":["bookworm","bookworm-backports","bookworm-proposed-updates","bookworm-updates"],"URIs":"http://deb.debian.org/debian"},"debian-security":{"Suites":["bookworm-security"],"URIs":"http://deb.debian.org/debian-security"},"icinga":{"Suites":["icinga-bookworm"],"URIs":"https://packages.icinga.com/debian"}},"ubuntu_16":{"hwraid":{"Suites":["stretch"],"URIs":"https://hwraid.le-vert.net/debian"},"ubuntu":{"Suites":["xenial","xenial-backports","xenial-proposed","xenial-updates","xenial-security"],"URIs":"http://cz.archive.ubuntu.com/ubuntu"},"ubuntu-security":{"Suites":["xenial-security"],"URIs":"http://cz.archive.ubuntu.com/ubuntu"}}} source=promise

Even more dynamic …

Here instead of explicitly listing out each variable name reference you used to expand into a data container array we first generated the string you would have used between [ and ].

I will leave it for others to judge but this is the sort of thing that would probably be very good to add as an acceptance test in cfengine core. Care to make a pull request?

bundle agent __main__
{
  methods:
      "example";
}
bundle agent example
{
vars:
  any::
    "repos" data => '
{
  "ubuntu_16": {
    "ubuntu": {
      "URIs": "http://cz.archive.ubuntu.com/ubuntu",
      "Suites": [ "xenial", "xenial-backports", "xenial-proposed", "xenial-updates", "xenial-security" ]
    },
    "ubuntu-security": {
      "URIs": "http://cz.archive.ubuntu.com/ubuntu",
      "Suites": [ "xenial-security" ]
    },
    "hwraid": {
      "URIs": "https://hwraid.le-vert.net/debian",
      "Suites": [ "stretch" ]
    }
  },
  "debian_12": {
    "debian": {
      "URIs": "http://deb.debian.org/debian",
      "Suites": [ "bookworm", "bookworm-backports", "bookworm-proposed-updates", "bookworm-updates" ]
    },
    "debian-security": {
      "URIs": "http://deb.debian.org/debian-security",
      "Suites": [ "bookworm-security" ]
    },
    "icinga": {
      "URIs": "https://packages.icinga.com/debian",
      "Suites": [ "icinga-bookworm" ]
    }
  }
}
';
      "l1_keys" slist => getindices( "repos" );
      "l2_keys[$(l1_keys)]" slist =>  getindices( "repos[$(l1_keys)]" );
      "l2_keys_combined" slist => getvalues( l2_keys ); # This combines them all so you have a list of all level2 keys

      # this working
      # "level1_ubuntu" data => '@(repos[ubuntu_16])';
      # "level1_debian" data => '@(repos[debian_12])';

      # I know you had ubuntu and not the specific ubuntu but what about
      # ubuntu_18 and 16 both being present? Then they would collide and last
      # one would win. So, I just use the distro verison specific key names
      "level1_$(l1_keys)" data => '@(repos[$(l1_keys)])', meta => { "level1_keys" };

      # "level2_list" data => '[ level1_ubuntu_16[hwraid], level1_debian_12[icinga] ]';

      # :/
      # OK, so it wasn't a terrible amout of yak shaving. I probably only have enough to make slippers here.
      # I use an associatiave array to generate the variable names you used to define =level2_list=
      "YakShavingVarnames[$(l1_keys)]" string => "level1_$(l1_keys)[$(l2_keys[$(l1_keys)])]";
      # I joined them togehter with =,= just like you did.
      "YakShavinString" string => join( ", ", getvalues( YakShavingVarnames ) );
      # I expanded them so that it was just like y ou did
      "level2_list" data => data_expand('[ $(YakShavinString) ]');
}
# cf-agent --no-lock --show-evaluated-vars=default:example --file /tmp/example.cf
Variable name                            Variable value                                               Meta tags                                Comment
default:example.YakShavinString          level1_debian_12[icinga], level1_ubuntu_16[hwraid]           source=promise
default:example.YakShavingVarnames[debian_12] level1_debian_12[icinga]                                     source=promise
default:example.YakShavingVarnames[ubuntu_16] level1_ubuntu_16[hwraid]                                     source=promise
default:example.l1_keys                   {"ubuntu_16","debian_12"}                                   source=promise
default:example.l2_keys[debian_12]        {"debian","debian-security","icinga"}                       source=promise
default:example.l2_keys[ubuntu_16]        {"ubuntu","ubuntu-security","hwraid"}                       source=promise
default:example.l2_keys_combined          {"debian","debian-security","icinga","ubuntu","ubuntu-security","hwraid"} source=promise
default:example.level1_debian_12         {"debian":{"Suites":["bookworm","bookworm-backports","bookworm-proposed-updates","bookworm-updates"],"URIs":"http://deb.debian.org/debian"},"debian-security":{"Suites":["bookworm-security"],"URIs":"http://deb.debian.org/debian-security"},"icinga":{"Suites":["icinga-bookworm"],"URIs":"https://packages.icinga.com/debian"}} source=promise,level1_keys
default:example.level1_ubuntu_16         {"hwraid":{"Suites":["stretch"],"URIs":"https://hwraid.le-vert.net/debian"},"ubuntu":{"Suites":["xenial","xenial-backports","xenial-proposed","xenial-updates","xenial-security"],"URIs":"http://cz.archive.ubuntu.com/ubuntu"},"ubuntu-security":{"Suites":["xenial-security"],"URIs":"http://cz.archive.ubuntu.com/ubuntu"}} source=promise,level1_keys
default:example.level2_list              [{"Suites":["icinga-bookworm"],"URIs":"https://packages.icinga.com/debian"},{"Suites":["stretch"],"URIs":"https://hwraid.le-vert.net/debian"}] source=promise
default:example.repos                    {"debian_12":{"debian":{"Suites":["bookworm","bookworm-backports","bookworm-proposed-updates","bookworm-updates"],"URIs":"http://deb.debian.org/debian"},"debian-security":{"Suites":["bookworm-security"],"URIs":"http://deb.debian.org/debian-security"},"icinga":{"Suites":["icinga-bookworm"],"URIs":"https://packages.icinga.com/debian"}},"ubuntu_16":{"hwraid":{"Suites":["stretch"],"URIs":"https://hwraid.le-vert.net/debian"},"ubuntu":{"Suites":["xenial","xenial-backports","xenial-proposed","xenial-updates","xenial-security"],"URIs":"http://cz.archive.ubuntu.com/ubuntu"},"ubuntu-security":{"Suites":["xenial-security"],"URIs":"http://cz.archive.ubuntu.com/ubuntu"}}} source=promise
Reply all
Reply to author
Forward
0 new messages