canonical / lxd

Powerful system container and virtual machine manager
https://canonical.com/lxd
GNU Affero General Public License v3.0
4.38k stars 931 forks source link

lxd init --preseed does not inform users about given ignored keys #11106

Closed aciba90 closed 2 years ago

aciba90 commented 2 years ago

Required information

Issue description

While performing a non-interactive configuration of LXD via preseed YAML, if the yaml contains unknown keys, then LXD is correctly configured and the user is not notified about those unknown/ignored keys.

I would expect LXD issuing some kind of warning/message better informing the user about ignored preseed keys.

I am worried about users passing not yet supported keys in older LXD versions. As for example, in LXD < 4.12, projects is not yet supported to be preseed-configured, and as far as I can tell, the only way for the user to realize this is explicitly checking the LXD project configuration.

Some examples of not universally supported preseed keys:

Steps to reproduce

  1. Perform echo "foo: 3.14" | lxd init --preseed --debug 2> lxd.log.
  2. Try to find some warning about it:
    $ grep foo lxd.log
    $ sudo dmesg | grep foo
    $ grep /var/snap/lxd/common/lxd/logs/lxd.log foo

Information to attach

Output of echo "foo: 3.14" | lxd init --preseed --debug:

time="2022-11-10T12:12:22Z" level=debug msg="Connecting to a local LXD over a Unix socket"
time="2022-11-10T12:12:22Z" level=debug msg="Sending request to LXD" etag= method=GET url="http://unix.socket/1.0"
time="2022-11-10T12:12:22Z" level=debug msg="Got response struct from LXD"
time="2022-11-10T12:12:22Z" level=debug msg="\n\t{\n\t\t\"config\": {},\n\t\t\"api_extensions\": [\n\t\t\t\"storage_zfs_remove_snapshots\",\n\t\t\t\"container_host_shutdown_timeout\",\n\t\t\t\"container_stop_priority\",\n\t\t\t\"container_syscall_filtering\",\n\t\t\t\"auth_pki\",\n\t\t\t\"container_last_used_at\",\n\t\t\t\"etag\",\n\t\t\t\"patch\",\n\t\t\t\"usb_devices\",\n\t\t\t\"https_allowed_credentials\",\n\t\t\t\"image_compression_algorithm\",\n\t\t\t\"directory_manipulation\",\n\t\t\t\"container_cpu_time\",\n\t\t\t\"storage_zfs_use_refquota\",\n\t\t\t\"storage_lvm_mount_options\",\n\t\t\t\"network\",\n\t\t\t\"profile_usedby\",\n\t\t\t\"container_push\",\n\t\t\t\"container_exec_recording\",\n\t\t\t\"certificate_update\",\n\t\t\t\"container_exec_signal_handling\",\n\t\t\t\"gpu_devices\",\n\t\t\t\"container_image_properties\",\n\t\t\t\"migration_progress\",\n\t\t\t\"id_map\",\n\t\t\t\"network_firewall_filtering\",\n\t\t\t\"network_routes\",\n\t\t\t\"storage\",\n\t\t\t\"file_delete\",\n\t\t\t\"file_append\",\n\t\t\t\"network_dhcp_expiry\",\n\t\t\t\"storage_lvm_vg_rename\",\n\t\t\t\"storage_lvm_thinpool_rename\",\n\t\t\t\"network_vlan\",\n\t\t\t\"image_create_aliases\",\n\t\t\t\"container_stateless_copy\",\n\t\t\t\"container_only_migration\",\n\t\t\t\"storage_zfs_clone_copy\",\n\t\t\t\"unix_device_rename\",\n\t\t\t\"storage_lvm_use_thinpool\",\n\t\t\t\"storage_rsync_bwlimit\",\n\t\t\t\"network_vxlan_interface\",\n\t\t\t\"storage_btrfs_mount_options\",\n\t\t\t\"entity_description\",\n\t\t\t\"image_force_refresh\",\n\t\t\t\"storage_lvm_lv_resizing\",\n\t\t\t\"id_map_base\",\n\t\t\t\"file_symlinks\",\n\t\t\t\"container_push_target\",\n\t\t\t\"network_vlan_physical\",\n\t\t\t\"storage_images_delete\",\n\t\t\t\"container_edit_metadata\",\n\t\t\t\"container_snapshot_stateful_migration\",\n\t\t\t\"storage_driver_ceph\",\n\t\t\t\"storage_ceph_user_name\",\n\t\t\t\"resource_limits\",\n\t\t\t\"storage_volatile_initial_source\",\n\t\t\t\"storage_ceph_force_osd_reuse\",\n\t\t\t\"storage_block_filesystem_btrfs\",\n\t\t\t\"resources\",\n\t\t\t\"kernel_limits\",\n\t\t\t\"storage_api_volume_rename\",\n\t\t\t\"macaroon_authentication\",\n\t\t\t\"network_sriov\",\n\t\t\t\"console\",\n\t\t\t\"restrict_devlxd\",\n\t\t\t\"migration_pre_copy\",\n\t\t\t\"infiniband\",\n\t\t\t\"maas_network\",\n\t\t\t\"devlxd_events\",\n\t\t\t\"proxy\",\n\t\t\t\"network_dhcp_gateway\",\n\t\t\t\"file_get_symlink\",\n\t\t\t\"network_leases\",\n\t\t\t\"unix_device_hotplug\",\n\t\t\t\"storage_api_local_volume_handling\",\n\t\t\t\"operation_description\",\n\t\t\t\"clustering\",\n\t\t\t\"event_lifecycle\",\n\t\t\t\"storage_api_remote_volume_handling\",\n\t\t\t\"nvidia_runtime\",\n\t\t\t\"container_mount_propagation\",\n\t\t\t\"container_backup\",\n\t\t\t\"devlxd_images\",\n\t\t\t\"container_local_cross_pool_handling\",\n\t\t\t\"proxy_unix\",\n\t\t\t\"proxy_udp\",\n\t\t\t\"clustering_join\",\n\t\t\t\"proxy_tcp_udp_multi_port_handling\",\n\t\t\t\"network_state\",\n\t\t\t\"proxy_unix_dac_properties\",\n\t\t\t\"container_protection_delete\",\n\t\t\t\"unix_priv_drop\",\n\t\t\t\"pprof_http\",\n\t\t\t\"proxy_haproxy_protocol\",\n\t\t\t\"network_hwaddr\",\n\t\t\t\"proxy_nat\",\n\t\t\t\"network_nat_order\",\n\t\t\t\"container_full\",\n\t\t\t\"candid_authentication\",\n\t\t\t\"backup_compression\",\n\t\t\t\"candid_config\",\n\t\t\t\"nvidia_runtime_config\",\n\t\t\t\"storage_api_volume_snapshots\",\n\t\t\t\"storage_unmapped\",\n\t\t\t\"projects\",\n\t\t\t\"candid_config_key\",\n\t\t\t\"network_vxlan_ttl\",\n\t\t\t\"container_incremental_copy\",\n\t\t\t\"usb_optional_vendorid\",\n\t\t\t\"snapshot_scheduling\",\n\t\t\t\"snapshot_schedule_aliases\",\n\t\t\t\"container_copy_project\",\n\t\t\t\"clustering_server_address\",\n\t\t\t\"clustering_image_replication\",\n\t\t\t\"container_protection_shift\",\n\t\t\t\"snapshot_expiry\",\n\t\t\t\"container_backup_override_pool\",\n\t\t\t\"snapshot_expiry_creation\",\n\t\t\t\"network_leases_location\",\n\t\t\t\"resources_cpu_socket\",\n\t\t\t\"resources_gpu\",\n\t\t\t\"resources_numa\",\n\t\t\t\"kernel_features\",\n\t\t\t\"id_map_current\",\n\t\t\t\"event_location\",\n\t\t\t\"storage_api_remote_volume_snapshots\",\n\t\t\t\"network_nat_address\",\n\t\t\t\"container_nic_routes\",\n\t\t\t\"rbac\",\n\t\t\t\"cluster_internal_copy\",\n\t\t\t\"seccomp_notify\",\n\t\t\t\"lxc_features\",\n\t\t\t\"container_nic_ipvlan\",\n\t\t\t\"network_vlan_sriov\",\n\t\t\t\"storage_cephfs\",\n\t\t\t\"container_nic_ipfilter\",\n\t\t\t\"resources_v2\",\n\t\t\t\"container_exec_user_group_cwd\",\n\t\t\t\"container_syscall_intercept\",\n\t\t\t\"container_disk_shift\",\n\t\t\t\"storage_shifted\",\n\t\t\t\"resources_infiniband\",\n\t\t\t\"daemon_storage\",\n\t\t\t\"instances\",\n\t\t\t\"image_types\",\n\t\t\t\"resources_disk_sata\",\n\t\t\t\"clustering_roles\",\n\t\t\t\"images_expiry\",\n\t\t\t\"resources_network_firmware\",\n\t\t\t\"backup_compression_algorithm\",\n\t\t\t\"ceph_data_pool_name\",\n\t\t\t\"container_syscall_intercept_mount\",\n\t\t\t\"compression_squashfs\",\n\t\t\t\"container_raw_mount\",\n\t\t\t\"container_nic_routed\",\n\t\t\t\"container_syscall_intercept_mount_fuse\",\n\t\t\t\"container_disk_ceph\",\n\t\t\t\"virtual-machines\",\n\t\t\t\"image_profiles\",\n\t\t\t\"clustering_architecture\",\n\t\t\t\"resources_disk_id\",\n\t\t\t\"storage_lvm_stripes\",\n\t\t\t\"vm_boot_priority\",\n\t\t\t\"unix_hotplug_devices\",\n\t\t\t\"api_filtering\",\n\t\t\t\"instance_nic_network\",\n\t\t\t\"clustering_sizing\",\n\t\t\t\"firewall_driver\",\n\t\t\t\"projects_limits\",\n\t\t\t\"container_syscall_intercept_hugetlbfs\",\n\t\t\t\"limits_hugepages\",\n\t\t\t\"container_nic_routed_gateway\",\n\t\t\t\"projects_restrictions\",\n\t\t\t\"custom_volume_snapshot_expiry\",\n\t\t\t\"volume_snapshot_scheduling\",\n\t\t\t\"trust_ca_certificates\",\n\t\t\t\"snapshot_disk_usage\",\n\t\t\t\"clustering_edit_roles\",\n\t\t\t\"container_nic_routed_host_address\",\n\t\t\t\"container_nic_ipvlan_gateway\",\n\t\t\t\"resources_usb_pci\",\n\t\t\t\"resources_cpu_threads_numa\",\n\t\t\t\"resources_cpu_core_die\",\n\t\t\t\"api_os\",\n\t\t\t\"container_nic_routed_host_table\",\n\t\t\t\"container_nic_ipvlan_host_table\",\n\t\t\t\"container_nic_ipvlan_mode\",\n\t\t\t\"resources_system\",\n\t\t\t\"images_push_relay\",\n\t\t\t\"network_dns_search\",\n\t\t\t\"container_nic_routed_limits\",\n\t\t\t\"instance_nic_bridged_vlan\",\n\t\t\t\"network_state_bond_bridge\",\n\t\t\t\"usedby_consistency\",\n\t\t\t\"custom_block_volumes\",\n\t\t\t\"clustering_failure_domains\",\n\t\t\t\"resources_gpu_mdev\",\n\t\t\t\"console_vga_type\",\n\t\t\t\"projects_limits_disk\",\n\t\t\t\"network_type_macvlan\",\n\t\t\t\"network_type_sriov\",\n\t\t\t\"container_syscall_intercept_bpf_devices\",\n\t\t\t\"network_type_ovn\",\n\t\t\t\"projects_networks\",\n\t\t\t\"projects_networks_restricted_uplinks\",\n\t\t\t\"custom_volume_backup\",\n\t\t\t\"backup_override_name\",\n\t\t\t\"storage_rsync_compression\",\n\t\t\t\"network_type_physical\",\n\t\t\t\"network_ovn_external_subnets\",\n\t\t\t\"network_ovn_nat\",\n\t\t\t\"network_ovn_external_routes_remove\",\n\t\t\t\"tpm_device_type\",\n\t\t\t\"storage_zfs_clone_copy_rebase\",\n\t\t\t\"gpu_mdev\",\n\t\t\t\"resources_pci_iommu\",\n\t\t\t\"resources_network_usb\",\n\t\t\t\"resources_disk_address\",\n\t\t\t\"network_physical_ovn_ingress_mode\",\n\t\t\t\"network_ovn_dhcp\",\n\t\t\t\"network_physical_routes_anycast\",\n\t\t\t\"projects_limits_instances\",\n\t\t\t\"network_state_vlan\",\n\t\t\t\"instance_nic_bridged_port_isolation\",\n\t\t\t\"instance_bulk_state_change\",\n\t\t\t\"network_gvrp\",\n\t\t\t\"instance_pool_move\",\n\t\t\t\"gpu_sriov\",\n\t\t\t\"pci_device_type\",\n\t\t\t\"storage_volume_state\",\n\t\t\t\"network_acl\",\n\t\t\t\"migration_stateful\",\n\t\t\t\"disk_state_quota\",\n\t\t\t\"storage_ceph_features\",\n\t\t\t\"projects_compression\",\n\t\t\t\"projects_images_remote_cache_expiry\",\n\t\t\t\"certificate_project\",\n\t\t\t\"network_ovn_acl\",\n\t\t\t\"projects_images_auto_update\",\n\t\t\t\"projects_restricted_cluster_target\",\n\t\t\t\"images_default_architecture\",\n\t\t\t\"network_ovn_acl_defaults\",\n\t\t\t\"gpu_mig\",\n\t\t\t\"project_usage\",\n\t\t\t\"network_bridge_acl\",\n\t\t\t\"warnings\",\n\t\t\t\"projects_restricted_backups_and_snapshots\",\n\t\t\t\"clustering_join_token\",\n\t\t\t\"clustering_description\",\n\t\t\t\"server_trusted_proxy\",\n\t\t\t\"clustering_update_cert\",\n\t\t\t\"storage_api_project\",\n\t\t\t\"server_instance_driver_operational\",\n\t\t\t\"server_supported_storage_drivers\",\n\t\t\t\"event_lifecycle_requestor_address\",\n\t\t\t\"resources_gpu_usb\",\n\t\t\t\"clustering_evacuation\",\n\t\t\t\"network_ovn_nat_address\",\n\t\t\t\"network_bgp\",\n\t\t\t\"network_forward\",\n\t\t\t\"custom_volume_refresh\",\n\t\t\t\"network_counters_errors_dropped\",\n\t\t\t\"metrics\",\n\t\t\t\"image_source_project\",\n\t\t\t\"clustering_config\",\n\t\t\t\"network_peer\",\n\t\t\t\"linux_sysctl\",\n\t\t\t\"network_dns\",\n\t\t\t\"ovn_nic_acceleration\",\n\t\t\t\"certificate_self_renewal\",\n\t\t\t\"instance_project_move\",\n\t\t\t\"storage_volume_project_move\",\n\t\t\t\"cloud_init\",\n\t\t\t\"network_dns_nat\",\n\t\t\t\"database_leader\",\n\t\t\t\"instance_all_projects\",\n\t\t\t\"clustering_groups\",\n\t\t\t\"ceph_rbd_du\",\n\t\t\t\"instance_get_full\",\n\t\t\t\"qemu_metrics\",\n\t\t\t\"gpu_mig_uuid\",\n\t\t\t\"event_project\",\n\t\t\t\"clustering_evacuation_live\",\n\t\t\t\"instance_allow_inconsistent_copy\",\n\t\t\t\"network_state_ovn\",\n\t\t\t\"storage_volume_api_filtering\",\n\t\t\t\"image_restrictions\",\n\t\t\t\"storage_zfs_export\",\n\t\t\t\"network_dns_records\",\n\t\t\t\"storage_zfs_reserve_space\",\n\t\t\t\"network_acl_log\",\n\t\t\t\"storage_zfs_blocksize\",\n\t\t\t\"metrics_cpu_seconds\",\n\t\t\t\"instance_snapshot_never\",\n\t\t\t\"certificate_token\",\n\t\t\t\"instance_nic_routed_neighbor_probe\",\n\t\t\t\"event_hub\",\n\t\t\t\"agent_nic_config\",\n\t\t\t\"projects_restricted_intercept\",\n\t\t\t\"metrics_authentication\",\n\t\t\t\"images_target_project\",\n\t\t\t\"cluster_migration_inconsistent_copy\",\n\t\t\t\"cluster_ovn_chassis\",\n\t\t\t\"container_syscall_intercept_sched_setscheduler\",\n\t\t\t\"storage_lvm_thinpool_metadata_size\",\n\t\t\t\"storage_volume_state_total\",\n\t\t\t\"instance_file_head\",\n\t\t\t\"resources_pci_vpd\",\n\t\t\t\"qemu_raw_conf\",\n\t\t\t\"storage_cephfs_fscache\",\n\t\t\t\"vsock_api\",\n\t\t\t\"storage_volumes_all_projects\"\n\t\t],\n\t\t\"api_status\": \"stable\",\n\t\t\"api_version\": \"1.0\",\n\t\t\"auth\": \"trusted\",\n\t\t\"public\": false,\n\t\t\"auth_methods\": [\n\t\t\t\"tls\"\n\t\t],\n\t\t\"environment\": {\n\t\t\t\"addresses\": [],\n\t\t\t\"architectures\": [\n\t\t\t\t\"x86_64\",\n\t\t\t\t\"i686\"\n\t\t\t],\n\t\t\t\"certificate\": \"-----BEGIN CERTIFICATE-----\\nMIIB/jCCAYSgAwIBAgIRAO0SN3KIZzwxu79k8IH71uUwCgYIKoZIzj0EAwMwMjEc\\nMBoGA1UEChMTbGludXhjb250YWluZXJzLm9yZzESMBAGA1UEAwwJcm9vdEB2bS1q\\nMB4XDTIyMTExMDExNTQwNloXDTMyMTEwNzExNTQwNlowMjEcMBoGA1UEChMTbGlu\\ndXhjb250YWluZXJzLm9yZzESMBAGA1UEAwwJcm9vdEB2bS1qMHYwEAYHKoZIzj0C\\nAQYFK4EEACIDYgAEh1CErEpwBhOmCz0JDH3H6CcBQ4k8//7f4P4ZqNaWr4zw5jpU\\nMxoijvVfd7Z6+lTAtpXeHeO7Oa5fvpEEPH8DKNGbHDKMljvzgKXLgUF1iBdMY0i8\\nrs6H8uIQ0KDHqpdIo14wXDAOBgNVHQ8BAf8EBAMCBaAwEwYDVR0lBAwwCgYIKwYB\\nBQUHAwEwDAYDVR0TAQH/BAIwADAnBgNVHREEIDAeggR2bS1qhwR/AAABhxAAAAAA\\nAAAAAAAAAAAAAAABMAoGCCqGSM49BAMDA2gAMGUCMQDSpCvcjkCXbepLc5Cp8PgH\\nz98vkQBlzFV19djCYC0lcy5z5kscwJbJF+bSGRLcnT0CMFcrrf7tccAaHDAkIfmf\\nIaGLjRoBRGHAEldVWdEivdg41r393mZdaOj0An/CxH/AuQ==\\n-----END CERTIFICATE-----\\n\",\n\t\t\t\"certificate_fingerprint\": \"565edf70ea0b738261cff8922a4bd9f3a63622fafb0a27a8cb65fb94629b16c0\",\n\t\t\t\"driver\": \"qemu | lxc\",\n\t\t\t\"driver_version\": \"7.0.0 | 5.0.1\",\n\t\t\t\"firewall\": \"nftables\",\n\t\t\t\"kernel\": \"Linux\",\n\t\t\t\"kernel_architecture\": \"x86_64\",\n\t\t\t\"kernel_features\": {\n\t\t\t\t\"idmapped_mounts\": \"true\",\n\t\t\t\t\"netnsid_getifaddrs\": \"true\",\n\t\t\t\t\"seccomp_listener\": \"true\",\n\t\t\t\t\"seccomp_listener_continue\": \"true\",\n\t\t\t\t\"shiftfs\": \"false\",\n\t\t\t\t\"uevent_injection\": \"true\",\n\t\t\t\t\"unpriv_fscaps\": \"true\"\n\t\t\t},\n\t\t\t\"kernel_version\": \"5.15.0-1020-kvm\",\n\t\t\t\"lxc_features\": {\n\t\t\t\t\"cgroup2\": \"true\",\n\t\t\t\t\"core_scheduling\": \"true\",\n\t\t\t\t\"devpts_fd\": \"true\",\n\t\t\t\t\"idmapped_mounts_v2\": \"true\",\n\t\t\t\t\"mount_injection_file\": \"true\",\n\t\t\t\t\"network_gateway_device_route\": \"true\",\n\t\t\t\t\"network_ipvlan\": \"true\",\n\t\t\t\t\"network_l2proxy\": \"true\",\n\t\t\t\t\"network_phys_macvlan_mtu\": \"true\",\n\t\t\t\t\"network_veth_router\": \"true\",\n\t\t\t\t\"pidfd\": \"true\",\n\t\t\t\t\"seccomp_allow_deny_syntax\": \"true\",\n\t\t\t\t\"seccomp_notify\": \"true\",\n\t\t\t\t\"seccomp_proxy_send_notify_fd\": \"true\"\n\t\t\t},\n\t\t\t\"os_name\": \"Ubuntu\",\n\t\t\t\"os_version\": \"22.04\",\n\t\t\t\"project\": \"default\",\n\t\t\t\"server\": \"lxd\",\n\t\t\t\"server_clustered\": false,\n\t\t\t\"server_event_mode\": \"full-mesh\",\n\t\t\t\"server_name\": \"vm-j\",\n\t\t\t\"server_pid\": 1228,\n\t\t\t\"server_version\": \"5.0.1\",\n\t\t\t\"storage\": \"\",\n\t\t\t\"storage_version\": \"\",\n\t\t\t\"storage_supported_drivers\": [\n\t\t\t\t{\n\t\t\t\t\t\"Name\": \"zfs\",\n\t\t\t\t\t\"Version\": \"2.1.4-0ubuntu0.1\",\n\t\t\t\t\t\"Remote\": false\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"Name\": \"ceph\",\n\t\t\t\t\t\"Version\": \"15.2.16\",\n\t\t\t\t\t\"Remote\": true\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"Name\": \"btrfs\",\n\t\t\t\t\t\"Version\": \"5.4.1\",\n\t\t\t\t\t\"Remote\": false\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"Name\": \"cephfs\",\n\t\t\t\t\t\"Version\": \"15.2.16\",\n\t\t\t\t\t\"Remote\": true\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"Name\": \"dir\",\n\t\t\t\t\t\"Version\": \"1\",\n\t\t\t\t\t\"Remote\": false\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"Name\": \"lvm\",\n\t\t\t\t\t\"Version\": \"2.03.07(2) (2019-11-30) / 1.02.167 (2019-11-30) / 4.45.0\",\n\t\t\t\t\t\"Remote\": false\n\t\t\t\t}\n\t\t\t]\n\t\t}\n\t}"
time="2022-11-10T12:12:22Z" level=debug msg="Sending request to LXD" etag= method=GET url="http://unix.socket/1.0"
time="2022-11-10T12:12:22Z" level=debug msg="Got response struct from LXD"
time="2022-11-10T12:12:22Z" level=debug msg="\n\t{\n\t\t\"config\": {},\n\t\t\"api_extensions\": [\n\t\t\t\"storage_zfs_remove_snapshots\",\n\t\t\t\"container_host_shutdown_timeout\",\n\t\t\t\"container_stop_priority\",\n\t\t\t\"container_syscall_filtering\",\n\t\t\t\"auth_pki\",\n\t\t\t\"container_last_used_at\",\n\t\t\t\"etag\",\n\t\t\t\"patch\",\n\t\t\t\"usb_devices\",\n\t\t\t\"https_allowed_credentials\",\n\t\t\t\"image_compression_algorithm\",\n\t\t\t\"directory_manipulation\",\n\t\t\t\"container_cpu_time\",\n\t\t\t\"storage_zfs_use_refquota\",\n\t\t\t\"storage_lvm_mount_options\",\n\t\t\t\"network\",\n\t\t\t\"profile_usedby\",\n\t\t\t\"container_push\",\n\t\t\t\"container_exec_recording\",\n\t\t\t\"certificate_update\",\n\t\t\t\"container_exec_signal_handling\",\n\t\t\t\"gpu_devices\",\n\t\t\t\"container_image_properties\",\n\t\t\t\"migration_progress\",\n\t\t\t\"id_map\",\n\t\t\t\"network_firewall_filtering\",\n\t\t\t\"network_routes\",\n\t\t\t\"storage\",\n\t\t\t\"file_delete\",\n\t\t\t\"file_append\",\n\t\t\t\"network_dhcp_expiry\",\n\t\t\t\"storage_lvm_vg_rename\",\n\t\t\t\"storage_lvm_thinpool_rename\",\n\t\t\t\"network_vlan\",\n\t\t\t\"image_create_aliases\",\n\t\t\t\"container_stateless_copy\",\n\t\t\t\"container_only_migration\",\n\t\t\t\"storage_zfs_clone_copy\",\n\t\t\t\"unix_device_rename\",\n\t\t\t\"storage_lvm_use_thinpool\",\n\t\t\t\"storage_rsync_bwlimit\",\n\t\t\t\"network_vxlan_interface\",\n\t\t\t\"storage_btrfs_mount_options\",\n\t\t\t\"entity_description\",\n\t\t\t\"image_force_refresh\",\n\t\t\t\"storage_lvm_lv_resizing\",\n\t\t\t\"id_map_base\",\n\t\t\t\"file_symlinks\",\n\t\t\t\"container_push_target\",\n\t\t\t\"network_vlan_physical\",\n\t\t\t\"storage_images_delete\",\n\t\t\t\"container_edit_metadata\",\n\t\t\t\"container_snapshot_stateful_migration\",\n\t\t\t\"storage_driver_ceph\",\n\t\t\t\"storage_ceph_user_name\",\n\t\t\t\"resource_limits\",\n\t\t\t\"storage_volatile_initial_source\",\n\t\t\t\"storage_ceph_force_osd_reuse\",\n\t\t\t\"storage_block_filesystem_btrfs\",\n\t\t\t\"resources\",\n\t\t\t\"kernel_limits\",\n\t\t\t\"storage_api_volume_rename\",\n\t\t\t\"macaroon_authentication\",\n\t\t\t\"network_sriov\",\n\t\t\t\"console\",\n\t\t\t\"restrict_devlxd\",\n\t\t\t\"migration_pre_copy\",\n\t\t\t\"infiniband\",\n\t\t\t\"maas_network\",\n\t\t\t\"devlxd_events\",\n\t\t\t\"proxy\",\n\t\t\t\"network_dhcp_gateway\",\n\t\t\t\"file_get_symlink\",\n\t\t\t\"network_leases\",\n\t\t\t\"unix_device_hotplug\",\n\t\t\t\"storage_api_local_volume_handling\",\n\t\t\t\"operation_description\",\n\t\t\t\"clustering\",\n\t\t\t\"event_lifecycle\",\n\t\t\t\"storage_api_remote_volume_handling\",\n\t\t\t\"nvidia_runtime\",\n\t\t\t\"container_mount_propagation\",\n\t\t\t\"container_backup\",\n\t\t\t\"devlxd_images\",\n\t\t\t\"container_local_cross_pool_handling\",\n\t\t\t\"proxy_unix\",\n\t\t\t\"proxy_udp\",\n\t\t\t\"clustering_join\",\n\t\t\t\"proxy_tcp_udp_multi_port_handling\",\n\t\t\t\"network_state\",\n\t\t\t\"proxy_unix_dac_properties\",\n\t\t\t\"container_protection_delete\",\n\t\t\t\"unix_priv_drop\",\n\t\t\t\"pprof_http\",\n\t\t\t\"proxy_haproxy_protocol\",\n\t\t\t\"network_hwaddr\",\n\t\t\t\"proxy_nat\",\n\t\t\t\"network_nat_order\",\n\t\t\t\"container_full\",\n\t\t\t\"candid_authentication\",\n\t\t\t\"backup_compression\",\n\t\t\t\"candid_config\",\n\t\t\t\"nvidia_runtime_config\",\n\t\t\t\"storage_api_volume_snapshots\",\n\t\t\t\"storage_unmapped\",\n\t\t\t\"projects\",\n\t\t\t\"candid_config_key\",\n\t\t\t\"network_vxlan_ttl\",\n\t\t\t\"container_incremental_copy\",\n\t\t\t\"usb_optional_vendorid\",\n\t\t\t\"snapshot_scheduling\",\n\t\t\t\"snapshot_schedule_aliases\",\n\t\t\t\"container_copy_project\",\n\t\t\t\"clustering_server_address\",\n\t\t\t\"clustering_image_replication\",\n\t\t\t\"container_protection_shift\",\n\t\t\t\"snapshot_expiry\",\n\t\t\t\"container_backup_override_pool\",\n\t\t\t\"snapshot_expiry_creation\",\n\t\t\t\"network_leases_location\",\n\t\t\t\"resources_cpu_socket\",\n\t\t\t\"resources_gpu\",\n\t\t\t\"resources_numa\",\n\t\t\t\"kernel_features\",\n\t\t\t\"id_map_current\",\n\t\t\t\"event_location\",\n\t\t\t\"storage_api_remote_volume_snapshots\",\n\t\t\t\"network_nat_address\",\n\t\t\t\"container_nic_routes\",\n\t\t\t\"rbac\",\n\t\t\t\"cluster_internal_copy\",\n\t\t\t\"seccomp_notify\",\n\t\t\t\"lxc_features\",\n\t\t\t\"container_nic_ipvlan\",\n\t\t\t\"network_vlan_sriov\",\n\t\t\t\"storage_cephfs\",\n\t\t\t\"container_nic_ipfilter\",\n\t\t\t\"resources_v2\",\n\t\t\t\"container_exec_user_group_cwd\",\n\t\t\t\"container_syscall_intercept\",\n\t\t\t\"container_disk_shift\",\n\t\t\t\"storage_shifted\",\n\t\t\t\"resources_infiniband\",\n\t\t\t\"daemon_storage\",\n\t\t\t\"instances\",\n\t\t\t\"image_types\",\n\t\t\t\"resources_disk_sata\",\n\t\t\t\"clustering_roles\",\n\t\t\t\"images_expiry\",\n\t\t\t\"resources_network_firmware\",\n\t\t\t\"backup_compression_algorithm\",\n\t\t\t\"ceph_data_pool_name\",\n\t\t\t\"container_syscall_intercept_mount\",\n\t\t\t\"compression_squashfs\",\n\t\t\t\"container_raw_mount\",\n\t\t\t\"container_nic_routed\",\n\t\t\t\"container_syscall_intercept_mount_fuse\",\n\t\t\t\"container_disk_ceph\",\n\t\t\t\"virtual-machines\",\n\t\t\t\"image_profiles\",\n\t\t\t\"clustering_architecture\",\n\t\t\t\"resources_disk_id\",\n\t\t\t\"storage_lvm_stripes\",\n\t\t\t\"vm_boot_priority\",\n\t\t\t\"unix_hotplug_devices\",\n\t\t\t\"api_filtering\",\n\t\t\t\"instance_nic_network\",\n\t\t\t\"clustering_sizing\",\n\t\t\t\"firewall_driver\",\n\t\t\t\"projects_limits\",\n\t\t\t\"container_syscall_intercept_hugetlbfs\",\n\t\t\t\"limits_hugepages\",\n\t\t\t\"container_nic_routed_gateway\",\n\t\t\t\"projects_restrictions\",\n\t\t\t\"custom_volume_snapshot_expiry\",\n\t\t\t\"volume_snapshot_scheduling\",\n\t\t\t\"trust_ca_certificates\",\n\t\t\t\"snapshot_disk_usage\",\n\t\t\t\"clustering_edit_roles\",\n\t\t\t\"container_nic_routed_host_address\",\n\t\t\t\"container_nic_ipvlan_gateway\",\n\t\t\t\"resources_usb_pci\",\n\t\t\t\"resources_cpu_threads_numa\",\n\t\t\t\"resources_cpu_core_die\",\n\t\t\t\"api_os\",\n\t\t\t\"container_nic_routed_host_table\",\n\t\t\t\"container_nic_ipvlan_host_table\",\n\t\t\t\"container_nic_ipvlan_mode\",\n\t\t\t\"resources_system\",\n\t\t\t\"images_push_relay\",\n\t\t\t\"network_dns_search\",\n\t\t\t\"container_nic_routed_limits\",\n\t\t\t\"instance_nic_bridged_vlan\",\n\t\t\t\"network_state_bond_bridge\",\n\t\t\t\"usedby_consistency\",\n\t\t\t\"custom_block_volumes\",\n\t\t\t\"clustering_failure_domains\",\n\t\t\t\"resources_gpu_mdev\",\n\t\t\t\"console_vga_type\",\n\t\t\t\"projects_limits_disk\",\n\t\t\t\"network_type_macvlan\",\n\t\t\t\"network_type_sriov\",\n\t\t\t\"container_syscall_intercept_bpf_devices\",\n\t\t\t\"network_type_ovn\",\n\t\t\t\"projects_networks\",\n\t\t\t\"projects_networks_restricted_uplinks\",\n\t\t\t\"custom_volume_backup\",\n\t\t\t\"backup_override_name\",\n\t\t\t\"storage_rsync_compression\",\n\t\t\t\"network_type_physical\",\n\t\t\t\"network_ovn_external_subnets\",\n\t\t\t\"network_ovn_nat\",\n\t\t\t\"network_ovn_external_routes_remove\",\n\t\t\t\"tpm_device_type\",\n\t\t\t\"storage_zfs_clone_copy_rebase\",\n\t\t\t\"gpu_mdev\",\n\t\t\t\"resources_pci_iommu\",\n\t\t\t\"resources_network_usb\",\n\t\t\t\"resources_disk_address\",\n\t\t\t\"network_physical_ovn_ingress_mode\",\n\t\t\t\"network_ovn_dhcp\",\n\t\t\t\"network_physical_routes_anycast\",\n\t\t\t\"projects_limits_instances\",\n\t\t\t\"network_state_vlan\",\n\t\t\t\"instance_nic_bridged_port_isolation\",\n\t\t\t\"instance_bulk_state_change\",\n\t\t\t\"network_gvrp\",\n\t\t\t\"instance_pool_move\",\n\t\t\t\"gpu_sriov\",\n\t\t\t\"pci_device_type\",\n\t\t\t\"storage_volume_state\",\n\t\t\t\"network_acl\",\n\t\t\t\"migration_stateful\",\n\t\t\t\"disk_state_quota\",\n\t\t\t\"storage_ceph_features\",\n\t\t\t\"projects_compression\",\n\t\t\t\"projects_images_remote_cache_expiry\",\n\t\t\t\"certificate_project\",\n\t\t\t\"network_ovn_acl\",\n\t\t\t\"projects_images_auto_update\",\n\t\t\t\"projects_restricted_cluster_target\",\n\t\t\t\"images_default_architecture\",\n\t\t\t\"network_ovn_acl_defaults\",\n\t\t\t\"gpu_mig\",\n\t\t\t\"project_usage\",\n\t\t\t\"network_bridge_acl\",\n\t\t\t\"warnings\",\n\t\t\t\"projects_restricted_backups_and_snapshots\",\n\t\t\t\"clustering_join_token\",\n\t\t\t\"clustering_description\",\n\t\t\t\"server_trusted_proxy\",\n\t\t\t\"clustering_update_cert\",\n\t\t\t\"storage_api_project\",\n\t\t\t\"server_instance_driver_operational\",\n\t\t\t\"server_supported_storage_drivers\",\n\t\t\t\"event_lifecycle_requestor_address\",\n\t\t\t\"resources_gpu_usb\",\n\t\t\t\"clustering_evacuation\",\n\t\t\t\"network_ovn_nat_address\",\n\t\t\t\"network_bgp\",\n\t\t\t\"network_forward\",\n\t\t\t\"custom_volume_refresh\",\n\t\t\t\"network_counters_errors_dropped\",\n\t\t\t\"metrics\",\n\t\t\t\"image_source_project\",\n\t\t\t\"clustering_config\",\n\t\t\t\"network_peer\",\n\t\t\t\"linux_sysctl\",\n\t\t\t\"network_dns\",\n\t\t\t\"ovn_nic_acceleration\",\n\t\t\t\"certificate_self_renewal\",\n\t\t\t\"instance_project_move\",\n\t\t\t\"storage_volume_project_move\",\n\t\t\t\"cloud_init\",\n\t\t\t\"network_dns_nat\",\n\t\t\t\"database_leader\",\n\t\t\t\"instance_all_projects\",\n\t\t\t\"clustering_groups\",\n\t\t\t\"ceph_rbd_du\",\n\t\t\t\"instance_get_full\",\n\t\t\t\"qemu_metrics\",\n\t\t\t\"gpu_mig_uuid\",\n\t\t\t\"event_project\",\n\t\t\t\"clustering_evacuation_live\",\n\t\t\t\"instance_allow_inconsistent_copy\",\n\t\t\t\"network_state_ovn\",\n\t\t\t\"storage_volume_api_filtering\",\n\t\t\t\"image_restrictions\",\n\t\t\t\"storage_zfs_export\",\n\t\t\t\"network_dns_records\",\n\t\t\t\"storage_zfs_reserve_space\",\n\t\t\t\"network_acl_log\",\n\t\t\t\"storage_zfs_blocksize\",\n\t\t\t\"metrics_cpu_seconds\",\n\t\t\t\"instance_snapshot_never\",\n\t\t\t\"certificate_token\",\n\t\t\t\"instance_nic_routed_neighbor_probe\",\n\t\t\t\"event_hub\",\n\t\t\t\"agent_nic_config\",\n\t\t\t\"projects_restricted_intercept\",\n\t\t\t\"metrics_authentication\",\n\t\t\t\"images_target_project\",\n\t\t\t\"cluster_migration_inconsistent_copy\",\n\t\t\t\"cluster_ovn_chassis\",\n\t\t\t\"container_syscall_intercept_sched_setscheduler\",\n\t\t\t\"storage_lvm_thinpool_metadata_size\",\n\t\t\t\"storage_volume_state_total\",\n\t\t\t\"instance_file_head\",\n\t\t\t\"resources_pci_vpd\",\n\t\t\t\"qemu_raw_conf\",\n\t\t\t\"storage_cephfs_fscache\",\n\t\t\t\"vsock_api\",\n\t\t\t\"storage_volumes_all_projects\"\n\t\t],\n\t\t\"api_status\": \"stable\",\n\t\t\"api_version\": \"1.0\",\n\t\t\"auth\": \"trusted\",\n\t\t\"public\": false,\n\t\t\"auth_methods\": [\n\t\t\t\"tls\"\n\t\t],\n\t\t\"environment\": {\n\t\t\t\"addresses\": [],\n\t\t\t\"architectures\": [\n\t\t\t\t\"x86_64\",\n\t\t\t\t\"i686\"\n\t\t\t],\n\t\t\t\"certificate\": \"-----BEGIN CERTIFICATE-----\\nMIIB/jCCAYSgAwIBAgIRAO0SN3KIZzwxu79k8IH71uUwCgYIKoZIzj0EAwMwMjEc\\nMBoGA1UEChMTbGludXhjb250YWluZXJzLm9yZzESMBAGA1UEAwwJcm9vdEB2bS1q\\nMB4XDTIyMTExMDExNTQwNloXDTMyMTEwNzExNTQwNlowMjEcMBoGA1UEChMTbGlu\\ndXhjb250YWluZXJzLm9yZzESMBAGA1UEAwwJcm9vdEB2bS1qMHYwEAYHKoZIzj0C\\nAQYFK4EEACIDYgAEh1CErEpwBhOmCz0JDH3H6CcBQ4k8//7f4P4ZqNaWr4zw5jpU\\nMxoijvVfd7Z6+lTAtpXeHeO7Oa5fvpEEPH8DKNGbHDKMljvzgKXLgUF1iBdMY0i8\\nrs6H8uIQ0KDHqpdIo14wXDAOBgNVHQ8BAf8EBAMCBaAwEwYDVR0lBAwwCgYIKwYB\\nBQUHAwEwDAYDVR0TAQH/BAIwADAnBgNVHREEIDAeggR2bS1qhwR/AAABhxAAAAAA\\nAAAAAAAAAAAAAAABMAoGCCqGSM49BAMDA2gAMGUCMQDSpCvcjkCXbepLc5Cp8PgH\\nz98vkQBlzFV19djCYC0lcy5z5kscwJbJF+bSGRLcnT0CMFcrrf7tccAaHDAkIfmf\\nIaGLjRoBRGHAEldVWdEivdg41r393mZdaOj0An/CxH/AuQ==\\n-----END CERTIFICATE-----\\n\",\n\t\t\t\"certificate_fingerprint\": \"565edf70ea0b738261cff8922a4bd9f3a63622fafb0a27a8cb65fb94629b16c0\",\n\t\t\t\"driver\": \"qemu | lxc\",\n\t\t\t\"driver_version\": \"7.0.0 | 5.0.1\",\n\t\t\t\"firewall\": \"nftables\",\n\t\t\t\"kernel\": \"Linux\",\n\t\t\t\"kernel_architecture\": \"x86_64\",\n\t\t\t\"kernel_features\": {\n\t\t\t\t\"idmapped_mounts\": \"true\",\n\t\t\t\t\"netnsid_getifaddrs\": \"true\",\n\t\t\t\t\"seccomp_listener\": \"true\",\n\t\t\t\t\"seccomp_listener_continue\": \"true\",\n\t\t\t\t\"shiftfs\": \"false\",\n\t\t\t\t\"uevent_injection\": \"true\",\n\t\t\t\t\"unpriv_fscaps\": \"true\"\n\t\t\t},\n\t\t\t\"kernel_version\": \"5.15.0-1020-kvm\",\n\t\t\t\"lxc_features\": {\n\t\t\t\t\"cgroup2\": \"true\",\n\t\t\t\t\"core_scheduling\": \"true\",\n\t\t\t\t\"devpts_fd\": \"true\",\n\t\t\t\t\"idmapped_mounts_v2\": \"true\",\n\t\t\t\t\"mount_injection_file\": \"true\",\n\t\t\t\t\"network_gateway_device_route\": \"true\",\n\t\t\t\t\"network_ipvlan\": \"true\",\n\t\t\t\t\"network_l2proxy\": \"true\",\n\t\t\t\t\"network_phys_macvlan_mtu\": \"true\",\n\t\t\t\t\"network_veth_router\": \"true\",\n\t\t\t\t\"pidfd\": \"true\",\n\t\t\t\t\"seccomp_allow_deny_syntax\": \"true\",\n\t\t\t\t\"seccomp_notify\": \"true\",\n\t\t\t\t\"seccomp_proxy_send_notify_fd\": \"true\"\n\t\t\t},\n\t\t\t\"os_name\": \"Ubuntu\",\n\t\t\t\"os_version\": \"22.04\",\n\t\t\t\"project\": \"default\",\n\t\t\t\"server\": \"lxd\",\n\t\t\t\"server_clustered\": false,\n\t\t\t\"server_event_mode\": \"full-mesh\",\n\t\t\t\"server_name\": \"vm-j\",\n\t\t\t\"server_pid\": 1228,\n\t\t\t\"server_version\": \"5.0.1\",\n\t\t\t\"storage\": \"\",\n\t\t\t\"storage_version\": \"\",\n\t\t\t\"storage_supported_drivers\": [\n\t\t\t\t{\n\t\t\t\t\t\"Name\": \"zfs\",\n\t\t\t\t\t\"Version\": \"2.1.4-0ubuntu0.1\",\n\t\t\t\t\t\"Remote\": false\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"Name\": \"ceph\",\n\t\t\t\t\t\"Version\": \"15.2.16\",\n\t\t\t\t\t\"Remote\": true\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"Name\": \"btrfs\",\n\t\t\t\t\t\"Version\": \"5.4.1\",\n\t\t\t\t\t\"Remote\": false\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"Name\": \"cephfs\",\n\t\t\t\t\t\"Version\": \"15.2.16\",\n\t\t\t\t\t\"Remote\": true\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"Name\": \"dir\",\n\t\t\t\t\t\"Version\": \"1\",\n\t\t\t\t\t\"Remote\": false\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"Name\": \"lvm\",\n\t\t\t\t\t\"Version\": \"2.03.07(2) (2019-11-30) / 1.02.167 (2019-11-30) / 4.45.0\",\n\t\t\t\t\t\"Remote\": false\n\t\t\t\t}\n\t\t\t]\n\t\t}\n\t}"
stgraber commented 2 years ago

I suspect this is a case where using yaml.UnmarshalStrict would be reasonable.