func (c *Cluster) ImageGetFromAnyProject(fingerprint string) (int, *api.Image, error) {
	var create, expire, used, upload *time.Time // These hold the db-returned times

	// The object we'll actually return
	image := api.Image{}
	id := -1
	arch := -1

	// These two humongous things will be filled by the call to DbQueryRowScan
	outfmt := []interface{}{&id, &image.Fingerprint, &image.Filename,
		&image.Size, &image.Cached, &image.Public, &image.AutoUpdate, &arch,
		&create, &expire, &used, &upload}

	inargs := []interface{}{fingerprint}
	query := `
        SELECT
            images.id, fingerprint, filename, size, cached, public, auto_update, architecture,
            creation_date, expiry_date, last_use_date, upload_date
        FROM images
        WHERE fingerprint = ?
        LIMIT 1`

	err := dbQueryRowScan(c.db, query, inargs, outfmt)
	if err != nil {
		if err == sql.ErrNoRows {
			return -1, nil, ErrNoSuchObject
		}

		return -1, nil, err // Likely: there are no rows for this fingerprint
	}

	err = c.imageFill(id, &image, create, expire, used, upload, arch)
	if err != nil {
		return -1, nil, errors.Wrapf(err, "Fill image details")
	}

	return id, &image, nil
}
func (c *Cluster) ImageGetFromAnyProject(fingerprint string) (int, *api.Image, error) {
	var create, expire, used, upload *time.Time 

	
	image := api.Image{}
	id := -1
	arch := -1

	
	outfmt := []interface{}{&id, &image.Fingerprint, &image.Filename,
		&image.Size, &image.Cached, &image.Public, &image.AutoUpdate, &arch,
		&create, &expire, &used, &upload}

	inargs := []interface{}{fingerprint}
	query := `
        SELECT
            images.id, fingerprint, filename, size, cached, public, auto_update, architecture,
            creation_date, expiry_date, last_use_date, upload_date
        FROM images
        WHERE fingerprint = ?
        LIMIT 1`

	err := dbQueryRowScan(c.db, query, inargs, outfmt)
	if err != nil {
		if err == sql.ErrNoRows {
			return -1, nil, ErrNoSuchObject
		}

		return -1, nil, err 
	}

	err = c.imageFill(id, &image, create, expire, used, upload, arch)
	if err != nil {
		return -1, nil, errors.Wrapf(err, "Fill image details")
	}

	return id, &image, nil
}
func ( c * Cluster ) ImageGetFromAnyProject ( fingerprint string ) ( int , * api . Image , error ) { var create , expire , used , upload * time . Time // These hold the db-returned times // The object we'll actually return image := api . Image { } id := - 1 arch := - 1 // These two humongous things will be filled by the call to DbQueryRowScan outfmt := [ ] interface { } { & id , & image . Fingerprint , & image . Filename , & image . Size , & image . Cached , & image . Public , & image . AutoUpdate , & arch , & create , & expire , & used , & upload } inargs := [ ] interface { } { fingerprint } query := `
        SELECT
            images.id, fingerprint, filename, size, cached, public, auto_update, architecture,
            creation_date, expiry_date, last_use_date, upload_date
        FROM images
        WHERE fingerprint = ?
        LIMIT 1` err := dbQueryRowScan ( c . db , query , inargs , outfmt ) if err != nil { if err == sql . ErrNoRows { return - 1 , nil , ErrNoSuchObject } return - 1 , nil , err // Likely: there are no rows for this fingerprint } err = c . imageFill ( id , & image , create , expire , used , upload , arch ) if err != nil { return - 1 , nil , errors . Wrapf ( err , " " ) } return id , & image , nil }
// ImageGetFromAnyProject returns an image matching the given fingerprint, if
// it exists in any project.
ImageGetFromAnyProject returns an image matching the given fingerprint if it exists in any project .