]> git.proxmox.com Git - pve-client.git/blob - PVE/APIClient/Commands/remote.pm
use new PVE::APIClient::Config class, register_standard_option 'pveclient-remote...
[pve-client.git] / PVE / APIClient / Commands / remote.pm
1 package PVE::APIClient::Commands::remote;
2
3 use strict;
4 use warnings;
5
6 use PVE::JSONSchema qw(register_standard_option get_standard_option);
7 use PVE::APIClient::Config;
8
9 use PVE::CLIHandler;
10
11 use base qw(PVE::CLIHandler);
12
13 my $remote_name_regex = qr(\w+);
14
15 my $complete_remote_name = sub {
16
17 my $conf = PVE::APIClient::Config::load_config();
18
19 my $res = [];
20
21 foreach my $k (keys %$conf) {
22 if ($k =~ m/^remote_($remote_name_regex)$/) {
23 push @$res, $1;
24 }
25 }
26
27 return $res;
28 };
29
30 register_standard_option('pveclient-remote-name', {
31 description => "The name of the remote.",
32 type => 'string',
33 pattern => $remote_name_regex,
34 completion => $complete_remote_name,
35 });
36
37 __PACKAGE__->register_method ({
38 name => 'add',
39 path => 'add',
40 method => 'POST',
41 description => "Add a remote to your config file.",
42 parameters => {
43 additionalProperties => 0,
44 properties => {
45 name => get_standard_option('pveclient-remote-name', { completion => sub {} }),
46 host => {
47 description => "The host, either host, host:port or https://host:port",
48 type => 'string',
49 },
50 username => {
51 description => "The username.",
52 type => 'string',
53 optional => 1,
54 },
55 },
56 },
57 returns => { type => 'null'},
58 code => sub {
59 my ($param) = @_;
60
61 die "implement me";
62
63 }});
64
65 __PACKAGE__->register_method ({
66 name => 'remove',
67 path => 'remove',
68 method => 'DELETE',
69 description => "Removes a remote from your config file.",
70 parameters => {
71 additionalProperties => 0,
72 properties => {
73 name => get_standard_option('pveclient-remote-name'),
74 },
75 },
76 returns => { type => 'null'},
77 code => sub {
78 my ($param) = @_;
79
80 die "implement me";
81
82 }});
83
84 our $cmddef = {
85 add => [ __PACKAGE__, 'add', ['name', 'host']],
86 remove => [ __PACKAGE__, 'remove', ['name']],
87 };
88
89 1;