func Run()

in container_images/gce-img-resource/in/in_command.go [45:92]


func Run(destinationDir string, request Request) (Response, error) {
	err := os.MkdirAll(destinationDir, 0755)
	if err != nil {
		return Response{}, err
	}

	ctx := context.Background()
	computeService, err := compute.NewService(ctx)
	if err != nil {
		return Response{}, err
	}

	image, err := computeService.Images.Get(request.Source.Project, request.Version.Name).Do()
	if err != nil {
		return Response{}, err
	}

	creationTime, err := time.Parse(time.RFC3339, image.CreationTimestamp)
	if err != nil {
		return Response{}, err
	}
	if err := writeOutput(destinationDir, "creation_timestamp", fmt.Sprintf("%d", creationTime.Unix())); err != nil {
		return Response{}, err
	}
	if err := writeOutput(destinationDir, "name", request.Version.Name); err != nil {
		return Response{}, err
	}
	if err := writeOutput(destinationDir, "url", image.SelfLink); err != nil {
		return Response{}, err
	}
	if err := writeOutput(destinationDir, "version", request.Version.Version); err != nil {
		return Response{}, err
	}

	return Response{
		Version: gceimgresource.Version{
			Name:    request.Version.Name,
			Version: request.Version.Version,
		},
		Metadata: []Metadata{
			{Name: "creation_timestamp", Value: image.CreationTimestamp},
			{Name: "description", Value: image.Description},
			{Name: "image_id", Value: fmt.Sprintf("%d", image.Id)},
			{Name: "status", Value: image.Status},
			{Name: "url", Value: image.SelfLink},
		},
	}, nil
}