]>
git.proxmox.com Git - pmg-api.git/blob - src/PMG/API2/NodeConfig.pm
1 package PMG
::API2
::NodeConfig
;
6 use PVE
::JSONSchema
qw(get_standard_option);
7 use PVE
::Tools
qw(extract_param);
11 use base
qw(PVE::RESTHandler);
13 __PACKAGE__-
>register_method ({
17 description
=> "Get node configuration options.",
20 permissions
=> { check
=> [ 'admin', 'audit' ] },
22 additionalProperties
=> 0,
24 node
=> get_standard_option
('pve-node'),
27 returns
=> PMG
::NodeConfig
::acme_config_schema
({
30 description
=> 'Prevent changes if current configuration file has different SHA1 digest. This can be used to prevent concurrent modifications.',
38 return PMG
::NodeConfig
::load_config
();
41 __PACKAGE__-
>register_method ({
45 description
=> "Set node configuration options.",
48 permissions
=> { check
=> [ 'admin', 'audit' ] },
49 parameters
=> PMG
::NodeConfig
::acme_config_schema
({
51 type
=> 'string', format
=> 'pve-configid-list',
52 description
=> "A list of settings you want to delete.",
57 description
=> 'Prevent changes if current configuration file has different SHA1 digest. This can be used to prevent concurrent modifications.',
61 node
=> get_standard_option
('pve-node'),
63 returns
=> { type
=> "null" },
67 my $node = extract_param
($param, 'node');
68 my $delete = extract_param
($param, 'delete');
69 my $digest = extract_param
($param, 'digest');
71 PMG
::NodeConfig
::lock_config
(sub {
72 my $conf = PMG
::NodeConfig
::load_config
();
74 PVE
::Tools
::assert_if_modified
($digest, delete $conf->{digest
});
76 foreach my $opt (PVE
::Tools
::split_list
($delete)) {
80 foreach my $opt (keys %$param) {
81 $conf->{$opt} = $param->{$opt};
84 #validate the acme config (check for duplicates)
85 PMG
::NodeConfig
::get_acme_conf
($conf);
87 PMG
::NodeConfig
::write_config
($conf);