github.com/cloud-foundations/dominator@v0.0.0-20221004181915-6e4fee580046/cmd/imagetool/addImageimage.go (about)

     1  package main
     2  
     3  import (
     4  	"errors"
     5  	"fmt"
     6  
     7  	"github.com/Cloud-Foundations/Dominator/imageserver/client"
     8  	"github.com/Cloud-Foundations/Dominator/lib/image"
     9  	"github.com/Cloud-Foundations/Dominator/lib/log"
    10  	objectclient "github.com/Cloud-Foundations/Dominator/lib/objectserver/client"
    11  	"github.com/Cloud-Foundations/Dominator/lib/srpc"
    12  )
    13  
    14  func addImageimageSubcommand(args []string, logger log.DebugLogger) error {
    15  	imageSClient, objectClient := getClients()
    16  	err := addImageimage(imageSClient, objectClient, args[0], args[1], args[2],
    17  		args[3])
    18  	if err != nil {
    19  		return fmt.Errorf("Error adding image: \"%s\"\t%s", args[0], err)
    20  	}
    21  	return nil
    22  }
    23  
    24  func addImageimage(imageSClient *srpc.Client,
    25  	objectClient *objectclient.ObjectClient,
    26  	name, oldImageName, filterFilename, triggersFilename string) error {
    27  	imageExists, err := client.CheckImage(imageSClient, name)
    28  	if err != nil {
    29  		return errors.New("error checking for image existence: " + err.Error())
    30  	}
    31  	if imageExists {
    32  		return errors.New("image exists")
    33  	}
    34  	newImage := new(image.Image)
    35  	if err := loadImageFiles(newImage, objectClient, filterFilename,
    36  		triggersFilename); err != nil {
    37  		return err
    38  	}
    39  	fs, err := getFsOfImage(imageSClient, oldImageName)
    40  	if err != nil {
    41  		return err
    42  	}
    43  	if err := spliceComputedFiles(fs); err != nil {
    44  		return err
    45  	}
    46  	if fs, err = applyDeleteFilter(fs); err != nil {
    47  		return err
    48  	}
    49  	fs = fs.Filter(newImage.Filter)
    50  	newImage.FileSystem = fs
    51  	return addImage(imageSClient, name, newImage)
    52  }