github.com/Cloud-Foundations/Dominator@v0.3.4/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], logger)
    18  	if err != nil {
    19  		return fmt.Errorf("error adding image: \"%s\": %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,
    27  	logger log.DebugLogger) error {
    28  	imageExists, err := client.CheckImage(imageSClient, name)
    29  	if err != nil {
    30  		return errors.New("error checking for image existence: " + err.Error())
    31  	}
    32  	if imageExists {
    33  		return errors.New("image exists")
    34  	}
    35  	newImage := new(image.Image)
    36  	if err := loadImageFiles(newImage, objectClient, filterFilename,
    37  		triggersFilename); err != nil {
    38  		return err
    39  	}
    40  	img, err := getTypedImage(oldImageName)
    41  	if err != nil {
    42  		return err
    43  	}
    44  	if err := spliceComputedFiles(img.FileSystem); err != nil {
    45  		return err
    46  	}
    47  	fs, err := applyDeleteFilter(img.FileSystem, img.Filter)
    48  	if err != nil {
    49  		return err
    50  	}
    51  	fs = fs.Filter(newImage.Filter)
    52  	newImage.FileSystem = fs
    53  	return addImage(imageSClient, name, newImage, logger)
    54  }