mirror of
https://github.com/NVIDIA/nvidia-container-toolkit
synced 2024-11-25 21:39:10 +00:00
Factor linkCreation into method
Signed-off-by: Evan Lezar <elezar@nvidia.com>
This commit is contained in:
parent
126c004ee0
commit
b0f7a3809f
@ -129,22 +129,12 @@ func (m command) run(c *cli.Context, cfg *config) error {
|
|||||||
m.logger.Debugf("%v is not a symlink", candidate)
|
m.logger.Debugf("%v is not a symlink", candidate)
|
||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
linkPath, err := changeRoot(cfg.hostRoot, containerRoot, candidate)
|
|
||||||
if err != nil {
|
|
||||||
m.logger.Warnf("Failed to resolve path for link %v relative to %v: %v", candidate, cfg.hostRoot, err)
|
|
||||||
continue
|
|
||||||
}
|
|
||||||
|
|
||||||
if created[linkPath] {
|
err = m.createLink(created, cfg.hostRoot, containerRoot, targets[0], candidate)
|
||||||
m.logger.Debugf("Link %v already created", linkPath)
|
|
||||||
continue
|
|
||||||
}
|
|
||||||
|
|
||||||
target, err := changeRoot(cfg.hostRoot, "/", targets[0])
|
|
||||||
if err != nil {
|
if err != nil {
|
||||||
m.logger.Warnf("Failed to resolve path for target %v relative to %v: %v", target, cfg.hostRoot, err)
|
m.logger.Warnf("Failed to create link %v: %v", []string{targets[0], candidate}, err)
|
||||||
continue
|
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
linkPath, err := changeRoot(cfg.hostRoot, containerRoot, candidate)
|
linkPath, err := changeRoot(cfg.hostRoot, containerRoot, candidate)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
@ -174,6 +164,34 @@ func (m command) run(c *cli.Context, cfg *config) error {
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (m command) createLink(created map[string]bool, hostRoot string, containerRoot string, target string, link string) error {
|
||||||
|
linkPath, err := changeRoot(hostRoot, containerRoot, link)
|
||||||
|
if err != nil {
|
||||||
|
m.logger.Warnf("Failed to resolve path for link %v relative to %v: %v", link, containerRoot, err)
|
||||||
|
}
|
||||||
|
if created[linkPath] {
|
||||||
|
m.logger.Debugf("Link %v already created", linkPath)
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
targetPath, err := changeRoot(hostRoot, "/", target)
|
||||||
|
if err != nil {
|
||||||
|
m.logger.Warnf("Failed to resolve path for target %v relative to %v: %v", target, "/", err)
|
||||||
|
}
|
||||||
|
|
||||||
|
m.logger.Infof("Symlinking %v to %v", linkPath, targetPath)
|
||||||
|
err = os.MkdirAll(filepath.Dir(linkPath), 0755)
|
||||||
|
if err != nil {
|
||||||
|
return fmt.Errorf("failed to create directory: %v", err)
|
||||||
|
}
|
||||||
|
err = os.Symlink(target, linkPath)
|
||||||
|
if err != nil {
|
||||||
|
return fmt.Errorf("failed to create symlink: %v", err)
|
||||||
|
}
|
||||||
|
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
func changeRoot(current string, new string, path string) (string, error) {
|
func changeRoot(current string, new string, path string) (string, error) {
|
||||||
if !filepath.IsAbs(path) {
|
if !filepath.IsAbs(path) {
|
||||||
return path, nil
|
return path, nil
|
||||||
|
Loading…
Reference in New Issue
Block a user