sts-sponsors team mailing list archive
-
sts-sponsors team
-
Mailing list archive
-
Message #03352
Re: [Merge] ~troyanov/maas:migrate-node-power-credentials into maas:master
Review: Approve
nice! +1
one tiny nit inline
Diff comments:
> diff --git a/src/maasserver/migrations/maasserver/0290_migrate_node_power_parameters.py b/src/maasserver/migrations/maasserver/0290_migrate_node_power_parameters.py
> new file mode 100644
> index 0000000..1295dfc
> --- /dev/null
> +++ b/src/maasserver/migrations/maasserver/0290_migrate_node_power_parameters.py
> @@ -0,0 +1,79 @@
> +# Generated by Django 3.2.12 on 2022-11-15 15:12
> +
> +from collections import defaultdict
> +from datetime import datetime
> +
> +from django.db import migrations
> +
> +
> +def move_secrets(apps, schema_editor):
> + BMC = apps.get_model("maasserver", "BMC")
> + Secret = apps.get_model("maasserver", "Secret")
> +
> + now = datetime.utcnow()
> +
> + bmc_secrets = {}
> +
> + power_driver_secrets = defaultdict(
> + set,
> + {
> + "amt": {"power_pass"},
> + "apc": {},
> + "dli": {"power_pass"},
> + "eaton": {},
these empty ones can now be dropped (thanks to defaultdict)
> + "hmc": {"power_pass"},
> + "hmcz": {"power_pass"},
> + "ipmi": {"power_pass": "k_g"},
> + "manual": {},
> + "moonshot": {"power_pass"},
> + "mscm": {"power_pass"},
> + "msftocs": {"power_pass"},
> + "nova": {"os_password"},
> + "openbmc": {"power_pass"},
> + "proxmox": {"power_pass": "power_token_secret"},
> + "raritan": {},
> + "recs_box": {"power_pass"},
> + "redfish": {"power_pass"},
> + "sm15k": {"power_pass"},
> + "ucsm": {"power_pass"},
> + "vmware": {"power_pass"},
> + "webhook": {"power_pass": "power_token"},
> + "wedge": {"power_pass"},
> + "lxd": {"password": "key"},
> + "virsh": {"power_pass"},
> + },
> + )
> +
> + for bmc_id, power_type, power_parameters in BMC.objects.values_list(
> + "id", "power_type", "power_parameters"
> + ):
> +
> + secrets = {}
> + parameters = {}
> + for name, value in power_parameters.items():
> + if name in power_driver_secrets[power_type]:
> + secrets[name] = value
> + else:
> + parameters[name] = value
> +
> + bmc_secrets[bmc_id] = secrets
> + BMC.objects.filter(id=bmc_id).update(power_parameters=parameters)
> +
> + Secret.objects.bulk_create(
> + Secret(
> + path=f"bmc/{bmc_id}/power-parameters",
> + value=secret,
> + created=now,
> + updated=now,
> + )
> + for bmc_id, secret in bmc_secrets.items()
> + )
> +
> +
> +class Migration(migrations.Migration):
> +
> + dependencies = [
> + ("maasserver", "0289_vault_secret"),
> + ]
> +
> + operations = [migrations.RunPython(move_secrets)]
--
https://code.launchpad.net/~troyanov/maas/+git/maas/+merge/431804
Your team MAAS Committers is subscribed to branch maas:master.
References