func backupFixStoragePool(c *db.Cluster, b backupInfo, useDefaultPool bool) error {
	var poolName string

	if useDefaultPool {
		// Get the default profile
		_, profile, err := c.ProfileGet("default", "default")
		if err != nil {
			return err
		}

		_, v, err := shared.GetRootDiskDevice(profile.Devices)
		if err != nil {
			return err
		}

		poolName = v["pool"]
	} else {
		poolName = b.Pool
	}

	// Get the default's profile pool
	_, pool, err := c.StoragePoolGet(poolName)
	if err != nil {
		return err
	}

	f := func(path string) error {
		// Read in the backup.yaml file.
		backup, err := slurpBackupFile(path)
		if err != nil {
			return err
		}

		rootDiskDeviceFound := false

		// Change the pool in the backup.yaml
		backup.Pool = pool
		if backup.Container.Devices != nil {
			devName, _, err := shared.GetRootDiskDevice(backup.Container.Devices)
			if err == nil {
				backup.Container.Devices[devName]["pool"] = poolName
				rootDiskDeviceFound = true
			}
		}

		if backup.Container.ExpandedDevices != nil {
			devName, _, err := shared.GetRootDiskDevice(backup.Container.ExpandedDevices)
			if err == nil {
				backup.Container.ExpandedDevices[devName]["pool"] = poolName
				rootDiskDeviceFound = true
			}
		}

		if !rootDiskDeviceFound {
			return fmt.Errorf("No root device could be found")
		}

		file, err := os.Create(path)
		if err != nil {
			return err
		}
		defer file.Close()

		data, err := yaml.Marshal(&backup)
		if err != nil {
			return err
		}

		_, err = file.Write(data)
		if err != nil {
			return err
		}

		return nil
	}

	err = f(shared.VarPath("storage-pools", pool.Name, "containers", b.Name, "backup.yaml"))
	if err != nil {
		return err
	}

	for _, snap := range b.Snapshots {
		err = f(shared.VarPath("storage-pools", pool.Name, "containers-snapshots", b.Name, snap,
			"backup.yaml"))
		if err != nil {
			return err
		}
	}
	return nil
}
func backupFixStoragePool(c *db.Cluster, b backupInfo, useDefaultPool bool) error {
	var poolName string

	if useDefaultPool {
		
		_, profile, err := c.ProfileGet("default", "default")
		if err != nil {
			return err
		}

		_, v, err := shared.GetRootDiskDevice(profile.Devices)
		if err != nil {
			return err
		}

		poolName = v["pool"]
	} else {
		poolName = b.Pool
	}

	
	_, pool, err := c.StoragePoolGet(poolName)
	if err != nil {
		return err
	}

	f := func(path string) error {
		
		backup, err := slurpBackupFile(path)
		if err != nil {
			return err
		}

		rootDiskDeviceFound := false

		
		backup.Pool = pool
		if backup.Container.Devices != nil {
			devName, _, err := shared.GetRootDiskDevice(backup.Container.Devices)
			if err == nil {
				backup.Container.Devices[devName]["pool"] = poolName
				rootDiskDeviceFound = true
			}
		}

		if backup.Container.ExpandedDevices != nil {
			devName, _, err := shared.GetRootDiskDevice(backup.Container.ExpandedDevices)
			if err == nil {
				backup.Container.ExpandedDevices[devName]["pool"] = poolName
				rootDiskDeviceFound = true
			}
		}

		if !rootDiskDeviceFound {
			return fmt.Errorf("No root device could be found")
		}

		file, err := os.Create(path)
		if err != nil {
			return err
		}
		defer file.Close()

		data, err := yaml.Marshal(&backup)
		if err != nil {
			return err
		}

		_, err = file.Write(data)
		if err != nil {
			return err
		}

		return nil
	}

	err = f(shared.VarPath("storage-pools", pool.Name, "containers", b.Name, "backup.yaml"))
	if err != nil {
		return err
	}

	for _, snap := range b.Snapshots {
		err = f(shared.VarPath("storage-pools", pool.Name, "containers-snapshots", b.Name, snap,
			"backup.yaml"))
		if err != nil {
			return err
		}
	}
	return nil
}
func backupFixStoragePool ( c * db . Cluster , b backupInfo , useDefaultPool bool ) error { var poolName string if useDefaultPool { // Get the default profile _ , profile , err := c . ProfileGet ( " " , " " ) if err != nil { return err } _ , v , err := shared . GetRootDiskDevice ( profile . Devices ) if err != nil { return err } poolName = v [ " " ] } else { poolName = b . Pool } // Get the default's profile pool _ , pool , err := c . StoragePoolGet ( poolName ) if err != nil { return err } f := func ( path string ) error { // Read in the backup.yaml file. backup , err := slurpBackupFile ( path ) if err != nil { return err } rootDiskDeviceFound := false // Change the pool in the backup.yaml backup . Pool = pool if backup . Container . Devices != nil { devName , _ , err := shared . GetRootDiskDevice ( backup . Container . Devices ) if err == nil { backup . Container . Devices [ devName ] [ " " ] = poolName rootDiskDeviceFound = true } } if backup . Container . ExpandedDevices != nil { devName , _ , err := shared . GetRootDiskDevice ( backup . Container . ExpandedDevices ) if err == nil { backup . Container . ExpandedDevices [ devName ] [ " " ] = poolName rootDiskDeviceFound = true } } if ! rootDiskDeviceFound { return fmt . Errorf ( " " ) } file , err := os . Create ( path ) if err != nil { return err } defer file . Close ( ) data , err := yaml . Marshal ( & backup ) if err != nil { return err } _ , err = file . Write ( data ) if err != nil { return err } return nil } err = f ( shared . VarPath ( " " , pool . Name , " " , b . Name , " " ) ) if err != nil { return err } for _ , snap := range b . Snapshots { err = f ( shared . VarPath ( " " , pool . Name , " " , b . Name , snap , " " ) ) if err != nil { return err } } return nil }
// fixBackupStoragePool changes the pool information in the backup.yaml. This
// is done only if the provided pool doesn't exist. In this case, the pool of
// the default profile will be used.
fixBackupStoragePool changes the pool information in the backup . yaml . This is done only if the provided pool doesn t exist . In this case the pool of the default profile will be used .