lxd/storage_volumes_utils.go
func storagePoolVolumeUsedByGet(s *state.State, project, volumeName string, volumeTypeName string) ([]string, error) {
	// Handle container volumes
	if volumeTypeName == "container" {
		cName, sName, snap := containerGetParentAndSnapshotName(volumeName)

		if snap {
			return []string{fmt.Sprintf("/%s/containers/%s/snapshots/%s", version.APIVersion, cName, sName)}, nil
		}

		return []string{fmt.Sprintf("/%s/containers/%s", version.APIVersion, cName)}, nil
	}

	// Handle image volumes
	if volumeTypeName == "image" {
		return []string{fmt.Sprintf("/%s/images/%s", version.APIVersion, volumeName)}, nil
	}

	// Look for containers using this volume
	ctsUsingVolume, err := storagePoolVolumeUsedByContainersGet(s,
		project, volumeName, volumeTypeName)
	if err != nil {
		return []string{}, err
	}

	volumeUsedBy := []string{}
	for _, ct := range ctsUsingVolume {
		volumeUsedBy = append(volumeUsedBy,
			fmt.Sprintf("/%s/containers/%s", version.APIVersion, ct))
	}

	profiles, err := profilesUsingPoolVolumeGetNames(s.Cluster, volumeName, volumeTypeName)
	if err != nil {
		return []string{}, err
	}

	if len(volumeUsedBy) == 0 && len(profiles) == 0 {
		return []string{}, nil
	}

	for _, pName := range profiles {
		volumeUsedBy = append(volumeUsedBy, fmt.Sprintf("/%s/profiles/%s", version.APIVersion, pName))
	}

	return volumeUsedBy, nil
}
func storagePoolVolumeUsedByGet(s *state.State, project, volumeName string, volumeTypeName string) ([]string, error) {
	// Handle container volumes
	if volumeTypeName == "container" {
		cName, sName, snap := containerGetParentAndSnapshotName(volumeName)

		if snap {
			return []string{fmt.Sprintf("/%s/containers/%s/snapshots/%s", version.APIVersion, cName, sName)}, nil
		}

		return []string{fmt.Sprintf("/%s/containers/%s", version.APIVersion, cName)}, nil
	}

	// Handle image volumes
	if volumeTypeName == "image" {
		return []string{fmt.Sprintf("/%s/images/%s", version.APIVersion, volumeName)}, nil
	}

	// Look for containers using this volume
	ctsUsingVolume, err := storagePoolVolumeUsedByContainersGet(s,
		project, volumeName, volumeTypeName)
	if err != nil {
		return []string{}, err
	}

	volumeUsedBy := []string{}
	for _, ct := range ctsUsingVolume {
		volumeUsedBy = append(volumeUsedBy,
			fmt.Sprintf("/%s/containers/%s", version.APIVersion, ct))
	}

	profiles, err := profilesUsingPoolVolumeGetNames(s.Cluster, volumeName, volumeTypeName)
	if err != nil {
		return []string{}, err
	}

	if len(volumeUsedBy) == 0 && len(profiles) == 0 {
		return []string{}, nil
	}

	for _, pName := range profiles {
		volumeUsedBy = append(volumeUsedBy, fmt.Sprintf("/%s/profiles/%s", version.APIVersion, pName))
	}

	return volumeUsedBy, nil
}
func storagePoolVolumeUsedByGet ( s * state . State , project , volumeName string , volumeTypeName string ) ( [ ] string , error ) { // Handle container volumes if volumeTypeName == " " { cName , sName , snap := containerGetParentAndSnapshotName ( volumeName ) if snap { return [ ] string { fmt . Sprintf ( " " , version . APIVersion , cName , sName ) } , nil } return [ ] string { fmt . Sprintf ( " " , version . APIVersion , cName ) } , nil } // Handle image volumes if volumeTypeName == " " { return [ ] string { fmt . Sprintf ( " " , version . APIVersion , volumeName ) } , nil } // Look for containers using this volume ctsUsingVolume , err := storagePoolVolumeUsedByContainersGet ( s , project , volumeName , volumeTypeName ) if err != nil { return [ ] string { } , err } volumeUsedBy := [ ] string { } for _ , ct := range ctsUsingVolume { volumeUsedBy = append ( volumeUsedBy , fmt . Sprintf ( " " , version . APIVersion , ct ) ) } profiles , err := profilesUsingPoolVolumeGetNames ( s . Cluster , volumeName , volumeTypeName ) if err != nil { return [ ] string { } , err } if len ( volumeUsedBy ) == 0 && len ( profiles ) == 0 { return [ ] string { } , nil } for _ , pName := range profiles { volumeUsedBy = append ( volumeUsedBy , fmt . Sprintf ( " " , version . APIVersion , pName ) ) } return volumeUsedBy , nil }
// volumeUsedBy = append(volumeUsedBy, fmt.Sprintf("/%s/containers/%s", version.APIVersion, ct))
volumeUsedBy = append ( volumeUsedBy fmt . Sprintf ( / %s / containers / %s version . APIVersion ct ))