[pve-devel] [PATCH pve-client v3] Add per remote configurable defaults

René Jochum r.jochum at proxmox.com
Thu Jun 21 12:32:28 CEST 2018


Thanks for looking over it.

On 2018-06-21 12:20, Dietmar Maurer wrote:
> comments inline
>
>> On June 21, 2018 at 9:25 AM René Jochum <r.jochum at proxmox.com> wrote:
>>
>>
>> Signed-off-by: René Jochum <r.jochum at proxmox.com>
>> ---
>> v2: Added defaults per remote.
>> v3: Simplified code by using "pveclient remote set" 
>>
>>  PVE/APIClient/Commands/lxc.pm | 16 ++++++++++++++--
>>  PVE/APIClient/Config.pm       | 29 +++++++++++++++++++++++------
>>  2 files changed, 37 insertions(+), 8 deletions(-)
>>
>> diff --git a/PVE/APIClient/Commands/lxc.pm b/PVE/APIClient/Commands/lxc.pm
>> index 3add2dd..0601453 100644
>> --- a/PVE/APIClient/Commands/lxc.pm
>> +++ b/PVE/APIClient/Commands/lxc.pm
>> @@ -428,7 +428,12 @@ __PACKAGE__->register_method ({
>>  	    '/nodes/{node}/lxc', 'POST', {
>>  		remote => get_standard_option('pveclient-remote-name'),
>>  		vmid => get_standard_option('pve-vmid'),
>> -		node => get_standard_option('pve-node'),
>> +		node => {
>> +		    description => "The cluster node name.",
>> +		    type => 'string', format => 'pve-node',
>> +		    optional => 1,
>> +		    default => 'localhost | default node'
>> +		}
> You can use something like:
>
>  node => get_standard_option('pve-node', {
> 		    optional => 1,
> 		    default => 'localhost | default node'
>  }),
kk, thanks.
>
>
>
>>  		quiet => {
>>  		    description => "Suppress log output.",
>>  		    type => 'boolean',
>> @@ -453,6 +458,13 @@ __PACKAGE__->register_method ({
>>  	my $background = PVE::APIClient::Tools::extract_param($param, 'background');
>>  
>>  	my $config = PVE::APIClient::Config->load();
>> +	my $remote_config = PVE::APIClient::Config->lookup_remote($config, $remote);
>> +
>> +	if (!$node) {
>> +	    $node = $remote_config->{default_node} // 'localhost';
>> +	}
>> +	$param->{storage} = $param->{storage} // $remote_config->{default_storage}
>> // 'local';
> Is 'local' really a good default (containers are disabled on 'local' per
> default)?
'local' was the only one that I could think of.
>
>> +
>>  	my $conn = PVE::APIClient::Config->remote_conn($config, $remote);
>>  
>>  	my $upid = $conn->post("/nodes/$node/lxc", $param);
>> @@ -496,7 +508,7 @@ __PACKAGE__->register_method ({
>>      }});
>>  
>>  our $cmddef = {
>> -    create => [ __PACKAGE__, 'create', ['remote', 'vmid', 'node']],
>> +    create => [ __PACKAGE__, 'create', ['remote', 'vmid']],
>>      destroy => [ __PACKAGE__, 'destroy', ['remote', 'vmid']],
>>      enter => [ __PACKAGE__, 'enter', ['remote', 'vmid']],
>>  };
>> diff --git a/PVE/APIClient/Config.pm b/PVE/APIClient/Config.pm
>> index a783ab3..73e8f5d 100644
>> --- a/PVE/APIClient/Config.pm
>> +++ b/PVE/APIClient/Config.pm
>> @@ -261,18 +261,36 @@ sub properties {
>>  	    optional => 1,
>>  	    maxLength => 4096,
>>  	},
>> +
>> +	default_node => {
>> +	    description => "The default Node to create guests on.",
>> +	    type => 'string',
>> +	    optional => 1,
>> +	    maxLength => 4096,
>> +	    default => 'localhost',
>> +	},
> Why don't you use the standard option definition here?
Overlooked that I can use it, will do.
>
>> +	default_storage => {
>> +	    description => "The default storage to create guests on.",
>> +	    type => 'string',
>> +	    optional => 1,
>> +	    maxLength => 4096,
>> +	    default => 'local',
>> +	},
> Why don't you use the standard option 'pve-storage-id' here?
Same as above.
>
>>      };
>>  }
>>  
>>  sub options {
>>      return {
>> -	name => { optional => 0 },
>> -	host => { optional => 0 },
>> +	name => { optional => 1 },
>> +	host => { optional => 0, fixed => 1 },
> unrelated change? - should go into a separate patch.
>
>>  	comment => { optional => 1 },
>> -	username => { optional => 0 },
>> +	username => { optional => 0, fixed => 1 },
> same here
>
>>  	password => { optional => 1 },
>> -	port => { optional => 1 },
>> -	fingerprint => { optional => 1 },
>> +	port => { optional => 1, fixed => 1 },
>> +	fingerprint => { optional => 0, fixed => 1 },
> why 'fixed'?
That makes the option none editable.
>
>> +
>> +	default_node => { optional => 1 },
>> +	default_storage => { optional => 1 },
>>     };
>>  }
>>  
>> @@ -295,7 +313,6 @@ sub type {
>>  
>>  sub options {
>>      return {
>> -	name => { optional => 1 },
>>  	username => { optional => 1 },
>>  	port => { optional => 1 },
>>     };
>> -- 
>> 2.11.0






More information about the pve-devel mailing list