]> git.proxmox.com Git - pve-client.git/blame - PVE/APIClient/Commands/config.pm
config list: correctly return and format data
[pve-client.git] / PVE / APIClient / Commands / config.pm
CommitLineData
41d185e8
DM
1package PVE::APIClient::Commands::config;
2
3use strict;
4use warnings;
5use Data::Dumper;
6
b4007425 7use PVE::APIClient::Helpers;
c9138c03 8use PVE::APIClient::JSONSchema qw(get_standard_option);
ca3269f4 9use PVE::APIClient::Tools qw(extract_param);
41d185e8
DM
10use PVE::APIClient::Config;
11
c9138c03 12use PVE::APIClient::CLIHandler;
41d185e8 13
c9138c03 14use base qw(PVE::APIClient::CLIHandler);
41d185e8 15
e42d9cfe
DM
16my $list_return_props = { %{PVE::APIClient::DefaultsConfig->updateSchema(1)->{properties}} };
17delete $list_return_props->{delete};
18
41d185e8
DM
19__PACKAGE__->register_method ({
20 name => 'list',
21 path => 'list',
22 method => 'GET',
23 description => "Dump default configuration.",
24 parameters => {
25 additionalProperties => 0,
26 },
e42d9cfe
DM
27 returns => {
28 type => 'object',
29 properties => $list_return_props,
30 },
41d185e8
DM
31 code => sub {
32
33 my $config = PVE::APIClient::Config->load();
b4007425 34
41d185e8
DM
35 my $defaults = PVE::APIClient::Config->get_defaults($config);
36
e42d9cfe 37 $defaults->{digest} = $config->{digest};
b4007425 38
e42d9cfe 39 return $defaults;
41d185e8
DM
40 }});
41
42__PACKAGE__->register_method ({
43 name => 'set',
44 path => 'set',
45 method => 'PUT',
46 description => "Update a remote configuration.",
47 parameters => PVE::APIClient::DefaultsConfig->updateSchema(1),
48 returns => { type => 'null'},
49 code => sub {
50 my ($param) = @_;
51
41d185e8
DM
52 my $digest = extract_param($param, 'digest');
53 my $delete = extract_param($param, 'delete');
54
b4007425
DM
55 my $code = sub {
56 my $config = PVE::APIClient::Config->load();
57 my $defaults = PVE::APIClient::Config->get_defaults($config);
58
59 my $plugin = PVE::APIClient::Config->lookup('defaults');
60 my $opts = $plugin->check_config('defaults', $param, 0, 1);
61
62 foreach my $k (%$opts) {
63 $defaults->{$k} = $opts->{$k};
41d185e8 64 }
41d185e8 65
b4007425
DM
66 if ($delete) {
67 my $options = $plugin->private()->{options}->{'defaults'};
68 foreach my $k (PVE::APIClient::Tools::split_list($delete)) {
69 my $d = $options->{$k} ||
70 die "no such option '$k'\n";
71 die "unable to delete required option '$k'\n"
72 if !$d->{optional};
73 die "unable to delete fixed option '$k'\n"
74 if $d->{fixed};
75 delete $defaults->{$k};
76 }
77 }
78
79 PVE::APIClient::Config->save($config);
80 };
81
82 PVE::APIClient::Config->lock_config(undef, $code);
41d185e8
DM
83
84 return undef;
85 }});
86
87
88our $cmddef = {
89 set => [ __PACKAGE__, 'set',],
e42d9cfe 90 list => [__PACKAGE__, 'list', undef, undef, sub { PVE::APIClient::Helpers::print_result(@_);}],
41d185e8
DM
91};
92
931;