lxd/api_cluster.go
func clusterPutDisable(d *Daemon) Response {
	// Close the cluster database
	err := d.cluster.Close()
	if err != nil {
		return SmartError(err)
	}

	// Update our TLS configuration using our original certificate.
	for _, suffix := range []string{"crt", "key", "ca"} {
		path := filepath.Join(d.os.VarDir, "cluster."+suffix)
		if !shared.PathExists(path) {
			continue
		}
		err := os.Remove(path)
		if err != nil {
			return InternalError(err)
		}
	}
	cert, err := util.LoadCert(d.os.VarDir)
	if err != nil {
		return InternalError(errors.Wrap(err, "failed to parse node certificate"))
	}

	// Reset the cluster database and make it local to this node.
	d.endpoints.NetworkUpdateCert(cert)
	err = d.gateway.Reset(cert)
	if err != nil {
		return SmartError(err)
	}

	// Re-open the cluster database
	address, err := node.HTTPSAddress(d.db)
	if err != nil {
		return SmartError(err)
	}
	store := d.gateway.ServerStore()
	d.cluster, err = db.OpenCluster(
		"db.bin", store, address, "/unused/db/dir",
		d.config.DqliteSetupTimeout,
		dqlite.WithDialFunc(d.gateway.DialFunc()),
		dqlite.WithContext(d.gateway.Context()),
	)
	if err != nil {
		return SmartError(err)
	}

	// Stop the clustering tasks
	d.stopClusterTasks()

	// Remove the cluster flag from the agent
	version.UserAgentFeatures(nil)

	return EmptySyncResponse
}
func clusterPutDisable(d *Daemon) Response {
	// Close the cluster database
	err := d.cluster.Close()
	if err != nil {
		return SmartError(err)
	}

	// Update our TLS configuration using our original certificate.
	for _, suffix := range []string{"crt", "key", "ca"} {
		path := filepath.Join(d.os.VarDir, "cluster."+suffix)
		if !shared.PathExists(path) {
			continue
		}
		err := os.Remove(path)
		if err != nil {
			return InternalError(err)
		}
	}
	cert, err := util.LoadCert(d.os.VarDir)
	if err != nil {
		return InternalError(errors.Wrap(err, "failed to parse node certificate"))
	}

	// Reset the cluster database and make it local to this node.
	d.endpoints.NetworkUpdateCert(cert)
	err = d.gateway.Reset(cert)
	if err != nil {
		return SmartError(err)
	}

	// Re-open the cluster database
	address, err := node.HTTPSAddress(d.db)
	if err != nil {
		return SmartError(err)
	}
	store := d.gateway.ServerStore()
	d.cluster, err = db.OpenCluster(
		"db.bin", store, address, "/unused/db/dir",
		d.config.DqliteSetupTimeout,
		dqlite.WithDialFunc(d.gateway.DialFunc()),
		dqlite.WithContext(d.gateway.Context()),
	)
	if err != nil {
		return SmartError(err)
	}

	// Stop the clustering tasks
	d.stopClusterTasks()

	// Remove the cluster flag from the agent
	version.UserAgentFeatures(nil)

	return EmptySyncResponse
}
func clusterPutDisable ( d * Daemon ) Response { // Close the cluster database err := d . cluster . Close ( ) if err != nil { return SmartError ( err ) } // Update our TLS configuration using our original certificate. for _ , suffix := range [ ] string { " " , " " , " " } { path := filepath . Join ( d . os . VarDir , " " + suffix ) if ! shared . PathExists ( path ) { continue } err := os . Remove ( path ) if err != nil { return InternalError ( err ) } } cert , err := util . LoadCert ( d . os . VarDir ) if err != nil { return InternalError ( errors . Wrap ( err , " " ) ) } // Reset the cluster database and make it local to this node. d . endpoints . NetworkUpdateCert ( cert ) err = d . gateway . Reset ( cert ) if err != nil { return SmartError ( err ) } // Re-open the cluster database address , err := node . HTTPSAddress ( d . db ) if err != nil { return SmartError ( err ) } store := d . gateway . ServerStore ( ) d . cluster , err = db . OpenCluster ( " " , store , address , " " , d . config . DqliteSetupTimeout , dqlite . WithDialFunc ( d . gateway . DialFunc ( ) ) , dqlite . WithContext ( d . gateway . Context ( ) ) , ) if err != nil { return SmartError ( err ) } // Stop the clustering tasks d . stopClusterTasks ( ) // Remove the cluster flag from the agent version . UserAgentFeatures ( nil ) return EmptySyncResponse }
// Disable clustering on a node.
Disable clustering on a node .