[pve-devel] [RFC cluster v2 10/10] api/cluster: add join_info endpoint

Thomas Lamprecht t.lamprecht at proxmox.com
Wed Dec 6 16:49:31 CET 2017


On 12/06/2017 04:25 PM, Fabian Grünbichler wrote:
> small nit inline
> 
> On Mon, Dec 04, 2017 at 12:11:17PM +0100, Thomas Lamprecht wrote:
>> Returns all relevant information for joining this cluster securely
>> over the API.
>>
>> Signed-off-by: Thomas Lamprecht <t.lamprecht at proxmox.com>
>> ---
>>  data/PVE/API2/ClusterConfig.pm | 42 ++++++++++++++++++++++++++++++++++++++++++
>>  1 file changed, 42 insertions(+)
>>
>> diff --git a/data/PVE/API2/ClusterConfig.pm b/data/PVE/API2/ClusterConfig.pm
>> index 9bbefaf..11005e6 100644
>> --- a/data/PVE/API2/ClusterConfig.pm
>> +++ b/data/PVE/API2/ClusterConfig.pm
>> @@ -206,6 +206,48 @@ my $peer_can_use_api = sub {
>>  };
>>  
>>  __PACKAGE__->register_method ({
>> +    name => 'join_info',
>> +    path => 'join',
>> +    method => 'GET',
>> +    description => "Returns the information needed to join this cluster.",
>> +    parameters => {
>> +	additionalProperties => 0,
>> +	properties => { },
>> +    },
>> +    returns => {
>> +	type => 'object',
>> +	additionalProperties => 0,
>> +	properties => {
>> +	    ip_addr => { type => 'string', format => 'ip' },
>> +	    fingerprint => {
>> +		type => 'string',
>> +		pattern => '^(:?[A-Z0-9]{2}:){31}[A-Z0-9]{2}$',
> 
> might make sense to make this a proper format from the get-go - we'll
> need it once we re-start our multi-cluster-manager efforts anyway ;)
> 

seems also reasonable to me.

much thanks for the initial review!!

>> +	    },
>> +	    totem => { type => 'object' },
>> +	    config_digest => { type => 'string' },
>> +	},
>> +    },
>> +    code => sub {
>> +	my ($param) = @_;
>> +
>> +	my $nodename = PVE::INotify::nodename();
>> +
>> +	PVE::Cluster::cfs_update(1);
>> +	my $conf = PVE::Cluster::cfs_read_file('corosync.conf');
>> +	my $totem_cfg = $conf->{main}->{totem} // {};
>> +	my $corosync_config_digest = $conf->{digest};
>> +
>> +	my $res = {
>> +	    fingerprint => PVE::Cluster::get_node_fingerprint($nodename),
>> +	    ip_addr => scalar(PVE::Cluster::remote_node_ip($nodename)),
>> +	    totem => $totem_cfg,
>> +	    config_digest => $corosync_config_digest,
>> +	};
>> +
>> +	return $res;
>> +    }});
>> +
>> +__PACKAGE__->register_method ({
>>      name => 'join',
>>      path => 'join',
>>      method => 'POST',
>> -- 
>> 2.11.0
>>
>>
>> _______________________________________________
>> pve-devel mailing list
>> pve-devel at pve.proxmox.com
>> https://pve.proxmox.com/cgi-bin/mailman/listinfo/pve-devel






More information about the pve-devel mailing list