func (p *dockerProvisioner) AddNode(opts provision.AddNodeOptions) error { node := cluster.Node{ Address: opts.Address, Metadata: opts.Metadata, CreationStatus: cluster.NodeCreationStatusPending, CaCert: opts.CaCert, ClientCert: opts.ClientCert, ClientKey: opts.ClientKey, } if len(opts.CaCert) == 0 && len(p.caCert) > 0 { node.CaCert = p.caCert node.ClientCert = p.clientCert node.ClientKey = p.clientKey } err := p.Cluster().Register(node) if err != nil { return err } q, err := queue.Queue() if err != nil { return err } jobParams := monsterqueue.JobParams{"endpoint": opts.Address, "metadata": opts.Metadata} var job monsterqueue.Job if opts.WaitTO != 0 { job, err = q.EnqueueWait(internalNodeContainer.QueueTaskName, jobParams, opts.WaitTO) } else { _, err = q.Enqueue(internalNodeContainer.QueueTaskName, jobParams) } if err == nil && job != nil { _, err = job.Result() } return err }