func run()

in internal/cmd/grow_container.go [96:125]


func run(ctx context.Context, utility diskutil.DiskUtil, args growContainer) error {
	di, err := getTargetDiskInfo(ctx, utility, args.id)
	if err != nil {
		return fmt.Errorf("cannot grow container: %w", err)
	}

	logrus.WithField("device_id", di.DeviceIdentifier).Info("Attempting to grow container...")
	if err := diskutil.GrowContainer(ctx, utility, di); err != nil {
		// Don't treat FreeSpaceErrors as fatal, instead exit quietly since there's nothing else to do.
		if errors.As(err, &diskutil.FreeSpaceError{}) {
			logrus.WithField("id", args.id).Info("Nothing to do without free space, stopping command")
			return nil
		}

		return err
	}

	logrus.WithField("device_id", di.ParentWholeDisk).Info("Fetching updated information for device...")
	updatedDi, err := getTargetDiskInfo(ctx, utility, di.ParentWholeDisk)
	if err != nil {
		logrus.WithError(err).Error("Error while fetching updated disk information")
		return err
	}
	logrus.WithFields(logrus.Fields{
		"device_id":  di.DeviceIdentifier,
		"total_size": humanize.Bytes(updatedDi.TotalSize),
	}).Info("Successfully grew device to maximum size")

	return nil
}