Esempio n. 1
0
// buildTransferRequests builds the DPN ReplicationTransfer requests
// that we need to create with the new DPN bag. The ReplicationTransfers
// will be attached to the DPNIngestManifest and saved in our local DPN
// REST server, after we save the DPN bag.
func (recorder *DPNIngestRecorder) buildTransferRequests(manifest *models.DPNIngestManifest) {
	localNode := recorder.getLocalNode(manifest)
	if manifest.RecordSummary.HasErrors() {
		return
	}
	remoteNodes := recorder.chooseReplicationNodes(manifest, localNode)
	if manifest.RecordSummary.HasErrors() {
		return
	}
	for _, toNode := range remoteNodes {
		domain, err := localNode.FQDN()
		if err != nil {
			manifest.RecordSummary.AddError("Can't get FQDN from node %s. APIRoot is %s. "+
				"Error is %v", localNode.Namespace, localNode.APIRoot, err)
			return
		}
		link := fmt.Sprintf("dpn.%s@%s:outbound/%s.tar",
			toNode, domain, manifest.DPNBag.UUID)
		xfer, err := manifest.BuildReplicationTransfer(
			recorder.Context.Config.DPN.LocalNode, toNode, link)
		if err != nil {
			manifest.RecordSummary.AddError("Error building ReplicationTransfer: %v ", err)
			return
		}
		manifest.ReplicationTransfers = append(manifest.ReplicationTransfers, xfer)
	}
}