annotate mod_groups_migration/mod_groups_migration.lua @ 5668:ecfd7aece33b

mod_measure_modules: Report module statuses via OpenMetrics Someone in the chat asked about a health check endpoint, which reminded me of mod_http_status, which provides access to module statuses with full details. After that, this idea came about, which seems natural. As noted in the README, it could be used to monitor that critical modules are in fact loaded correctly. As more modules use the status API, the more useful this module and mod_http_status becomes.
author Kim Alvefur <zash@zash.se>
date Fri, 06 Oct 2023 18:34:39 +0200
parents dd3bfe8f182e
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
4387
e5b4ebacbf7a mod_groups_migration: module helping migration to groups
Jonas Schäfer <jonas@wielicki.name>
parents:
diff changeset
1 local host = module.host;
e5b4ebacbf7a mod_groups_migration: module helping migration to groups
Jonas Schäfer <jonas@wielicki.name>
parents:
diff changeset
2 local usermanager = require"core.usermanager";
e5b4ebacbf7a mod_groups_migration: module helping migration to groups
Jonas Schäfer <jonas@wielicki.name>
parents:
diff changeset
3
e5b4ebacbf7a mod_groups_migration: module helping migration to groups
Jonas Schäfer <jonas@wielicki.name>
parents:
diff changeset
4 local mod_groups = module:depends("groups_internal");
e5b4ebacbf7a mod_groups_migration: module helping migration to groups
Jonas Schäfer <jonas@wielicki.name>
parents:
diff changeset
5 local default_group_id = module:get_option("group_default_id", "default");
4416
dd3bfe8f182e mod_groups_migration: make default group name configurable
Jonas Schäfer <jonas@wielicki.name>
parents: 4391
diff changeset
6 local default_group_name = module:get_option("group_default_name", "default");
4387
e5b4ebacbf7a mod_groups_migration: module helping migration to groups
Jonas Schäfer <jonas@wielicki.name>
parents:
diff changeset
7
e5b4ebacbf7a mod_groups_migration: module helping migration to groups
Jonas Schäfer <jonas@wielicki.name>
parents:
diff changeset
8 local function trigger_migration()
e5b4ebacbf7a mod_groups_migration: module helping migration to groups
Jonas Schäfer <jonas@wielicki.name>
parents:
diff changeset
9 if mod_groups.exists(default_group_id) then
e5b4ebacbf7a mod_groups_migration: module helping migration to groups
Jonas Schäfer <jonas@wielicki.name>
parents:
diff changeset
10 module:log("debug", "skipping migration, group exists already")
e5b4ebacbf7a mod_groups_migration: module helping migration to groups
Jonas Schäfer <jonas@wielicki.name>
parents:
diff changeset
11 return
e5b4ebacbf7a mod_groups_migration: module helping migration to groups
Jonas Schäfer <jonas@wielicki.name>
parents:
diff changeset
12 end
e5b4ebacbf7a mod_groups_migration: module helping migration to groups
Jonas Schäfer <jonas@wielicki.name>
parents:
diff changeset
13 module:log("info", "migrating to mod_groups!")
e5b4ebacbf7a mod_groups_migration: module helping migration to groups
Jonas Schäfer <jonas@wielicki.name>
parents:
diff changeset
14
e5b4ebacbf7a mod_groups_migration: module helping migration to groups
Jonas Schäfer <jonas@wielicki.name>
parents:
diff changeset
15 local group_id = default_group_id;
4416
dd3bfe8f182e mod_groups_migration: make default group name configurable
Jonas Schäfer <jonas@wielicki.name>
parents: 4391
diff changeset
16 local ok, err = mod_groups.create({name=default_group_name}, true, group_id);
4387
e5b4ebacbf7a mod_groups_migration: module helping migration to groups
Jonas Schäfer <jonas@wielicki.name>
parents:
diff changeset
17 if not ok then
e5b4ebacbf7a mod_groups_migration: module helping migration to groups
Jonas Schäfer <jonas@wielicki.name>
parents:
diff changeset
18 module:log("error", "failed to create group: %s", err)
e5b4ebacbf7a mod_groups_migration: module helping migration to groups
Jonas Schäfer <jonas@wielicki.name>
parents:
diff changeset
19 return
e5b4ebacbf7a mod_groups_migration: module helping migration to groups
Jonas Schäfer <jonas@wielicki.name>
parents:
diff changeset
20 end
e5b4ebacbf7a mod_groups_migration: module helping migration to groups
Jonas Schäfer <jonas@wielicki.name>
parents:
diff changeset
21
e5b4ebacbf7a mod_groups_migration: module helping migration to groups
Jonas Schäfer <jonas@wielicki.name>
parents:
diff changeset
22 for user in usermanager.users(host) do
e5b4ebacbf7a mod_groups_migration: module helping migration to groups
Jonas Schäfer <jonas@wielicki.name>
parents:
diff changeset
23 mod_groups.add_member(group_id, user, true);
e5b4ebacbf7a mod_groups_migration: module helping migration to groups
Jonas Schäfer <jonas@wielicki.name>
parents:
diff changeset
24 module:log("debug", "added %s to %s", user, group_id)
e5b4ebacbf7a mod_groups_migration: module helping migration to groups
Jonas Schäfer <jonas@wielicki.name>
parents:
diff changeset
25 end
e5b4ebacbf7a mod_groups_migration: module helping migration to groups
Jonas Schäfer <jonas@wielicki.name>
parents:
diff changeset
26 module:log("debug", "synchronising group %s", group_id)
e5b4ebacbf7a mod_groups_migration: module helping migration to groups
Jonas Schäfer <jonas@wielicki.name>
parents:
diff changeset
27 mod_groups.sync(group_id)
e5b4ebacbf7a mod_groups_migration: module helping migration to groups
Jonas Schäfer <jonas@wielicki.name>
parents:
diff changeset
28 module:log("info", "added all users to group %s", group_id)
e5b4ebacbf7a mod_groups_migration: module helping migration to groups
Jonas Schäfer <jonas@wielicki.name>
parents:
diff changeset
29 end
e5b4ebacbf7a mod_groups_migration: module helping migration to groups
Jonas Schäfer <jonas@wielicki.name>
parents:
diff changeset
30
e5b4ebacbf7a mod_groups_migration: module helping migration to groups
Jonas Schäfer <jonas@wielicki.name>
parents:
diff changeset
31 module:hook_global("server-started", trigger_migration, -100)