in kinder/pkg/cluster/manager/manage.go [117:167]
func (c *ClusterManager) CopyFile(source, target string) error {
sourceNodes, sourcePath, err := c.ResolveNodesPath(source)
if err != nil {
return err
}
targetNodes, targetPath, err := c.ResolveNodesPath(target)
if err != nil {
return err
}
if sourceNodes == nil && targetNodes == nil {
return errors.Errorf("at least one between source and target must be a node/nodes in the cluster")
}
if sourceNodes != nil {
switch len(sourceNodes) {
case 1:
break // one source node selected: continue
case 0:
return errors.Errorf("no source node matches given criteria")
default:
return errors.Errorf("source can't be more than one node")
}
}
if targetNodes != nil && len(targetNodes) == 0 {
return errors.Errorf("no target node matches given criteria")
}
if sourceNodes != nil && targetNodes != nil {
// create tmp folder
// cp locally
return errors.Errorf("copy between nodes not implemented yet!")
}
if targetNodes == nil {
fmt.Printf("Copying from %s ...\n", sourceNodes[0].Name())
if err := sourceNodes[0].CopyFrom(sourcePath, targetPath); err != nil {
return err
}
}
for _, n := range targetNodes {
fmt.Printf("Copying to %s ...\n", n.Name())
if err := n.CopyTo(sourcePath, targetPath); err != nil {
return err
}
}
return nil
}