Example #1
0
func CreateLocalVolumes() error {
	drv, err := nvidia.GetDriverVersion()
	if err != nil {
		return err
	}
	vols, err := nvidia.LookupVolumes("")
	if err != nil {
		return err
	}

	for _, v := range vols {
		n := fmt.Sprintf("%s_%s", v.Name, drv)
		if _, err := docker.InspectVolume(n); err == nil {
			if err = docker.RemoveVolume(n); err != nil {
				return fmt.Errorf("cannot remove %s: volume is in use", n)
			}
		}

		if err := docker.CreateVolume(n); err != nil {
			return err
		}
		path, err := docker.InspectVolume(n)
		if err != nil {
			docker.RemoveVolume(n)
			return err
		}
		if err := v.CreateAt(path); err != nil {
			docker.RemoveVolume(n)
			return err
		}
		fmt.Println(n)
	}
	return nil
}
Example #2
0
func CreateLocalVolumes() error {
	drv, err := nvidia.GetDriverVersion()
	if err != nil {
		return err
	}
	vols, err := nvidia.LookupVolumes("")
	if err != nil {
		return err
	}

	for _, v := range vols {
		n := fmt.Sprintf("%s_%s", v.Name, drv)
		if err := docker.CreateVolume(n); err != nil {
			return err
		}
		path, err := docker.InspectVolume(n)
		if err != nil {
			return err
		}
		if err := volumeEmpty(n, path); err != nil {
			return err
		}
		if err := v.CreateAt(path); err != nil {
			return err
		}
		fmt.Println(n)
	}
	return nil
}
Example #3
0
func volumesArgs(vols []string) ([]string, error) {
	args := make([]string, 0, len(vols))

	drv, err := nvidia.GetDriverVersion()
	if err != nil {
		return nil, err
	}
	for _, vol := range nvidia.Volumes {
		for _, v := range vols {
			if v == vol.Name {
				// Check if the volume exists locally otherwise fallback to using the plugin
				n := fmt.Sprintf("%s_%s", vol.Name, drv)
				if _, err := docker.InspectVolume(n); err == nil {
					args = append(args, fmt.Sprintf("--volume=%s:%s:ro", n, vol.Mountpoint))
				} else {
					args = append(args, fmt.Sprintf("--volume-driver=%s", nvidia.DockerPlugin))
					args = append(args, fmt.Sprintf("--volume=%s:%s:ro", n, vol.Mountpoint))
				}
				break
			}
		}
	}
	return args, nil
}