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

Fabian Grünbichler f.gruenbichler at proxmox.com
Wed Dec 6 16:25:20 CET 2017


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 ;)

> +	    },
> +	    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