lxd/db/images.go
func (c *Cluster) imageFill(id int, image *api.Image, create, expire, used, upload *time.Time, arch int) error {
	// Some of the dates can be nil in the DB, let's process them.
	if create != nil {
		image.CreatedAt = *create
	} else {
		image.CreatedAt = time.Time{}
	}

	if expire != nil {
		image.ExpiresAt = *expire
	} else {
		image.ExpiresAt = time.Time{}
	}

	if used != nil {
		image.LastUsedAt = *used
	} else {
		image.LastUsedAt = time.Time{}
	}

	image.Architecture, _ = osarch.ArchitectureName(arch)

	// The upload date is enforced by NOT NULL in the schema, so it can never be nil.
	image.UploadedAt = *upload

	// Get the properties
	q := "SELECT key, value FROM images_properties where image_id=?"
	var key, value, name, desc string
	inargs := []interface{}{id}
	outfmt := []interface{}{key, value}
	results, err := queryScan(c.db, q, inargs, outfmt)
	if err != nil {
		return err
	}

	properties := map[string]string{}
	for _, r := range results {
		key = r[0].(string)
		value = r[1].(string)
		properties[key] = value
	}

	image.Properties = properties

	// Get the aliases
	q = "SELECT name, description FROM images_aliases WHERE image_id=?"
	inargs = []interface{}{id}
	outfmt = []interface{}{name, desc}
	results, err = queryScan(c.db, q, inargs, outfmt)
	if err != nil {
		return err
	}

	aliases := []api.ImageAlias{}
	for _, r := range results {
		name = r[0].(string)
		desc = r[1].(string)
		a := api.ImageAlias{Name: name, Description: desc}
		aliases = append(aliases, a)
	}

	image.Aliases = aliases

	_, source, err := c.ImageSourceGet(id)
	if err == nil {
		image.UpdateSource = &source
	}

	return nil
}
func (c *Cluster) imageFill(id int, image *api.Image, create, expire, used, upload *time.Time, arch int) error {
	// Some of the dates can be nil in the DB, let's process them.
	if create != nil {
		image.CreatedAt = *create
	} else {
		image.CreatedAt = time.Time{}
	}

	if expire != nil {
		image.ExpiresAt = *expire
	} else {
		image.ExpiresAt = time.Time{}
	}

	if used != nil {
		image.LastUsedAt = *used
	} else {
		image.LastUsedAt = time.Time{}
	}

	image.Architecture, _ = osarch.ArchitectureName(arch)

	// The upload date is enforced by NOT NULL in the schema, so it can never be nil.
	image.UploadedAt = *upload

	// Get the properties
	q := "SELECT key, value FROM images_properties where image_id=?"
	var key, value, name, desc string
	inargs := []interface{}{id}
	outfmt := []interface{}{key, value}
	results, err := queryScan(c.db, q, inargs, outfmt)
	if err != nil {
		return err
	}

	properties := map[string]string{}
	for _, r := range results {
		key = r[0].(string)
		value = r[1].(string)
		properties[key] = value
	}

	image.Properties = properties

	// Get the aliases
	q = "SELECT name, description FROM images_aliases WHERE image_id=?"
	inargs = []interface{}{id}
	outfmt = []interface{}{name, desc}
	results, err = queryScan(c.db, q, inargs, outfmt)
	if err != nil {
		return err
	}

	aliases := []api.ImageAlias{}
	for _, r := range results {
		name = r[0].(string)
		desc = r[1].(string)
		a := api.ImageAlias{Name: name, Description: desc}
		aliases = append(aliases, a)
	}

	image.Aliases = aliases

	_, source, err := c.ImageSourceGet(id)
	if err == nil {
		image.UpdateSource = &source
	}

	return nil
}
func ( c * Cluster ) imageFill ( id int , image * api . Image , create , expire , used , upload * time . Time , arch int ) error { // Some of the dates can be nil in the DB, let's process them. if create != nil { image . CreatedAt = * create } else { image . CreatedAt = time . Time { } } if expire != nil { image . ExpiresAt = * expire } else { image . ExpiresAt = time . Time { } } if used != nil { image . LastUsedAt = * used } else { image . LastUsedAt = time . Time { } } image . Architecture , _ = osarch . ArchitectureName ( arch ) // The upload date is enforced by NOT NULL in the schema, so it can never be nil. image . UploadedAt = * upload // Get the properties q := " " var key , value , name , desc string inargs := [ ] interface { } { id } outfmt := [ ] interface { } { key , value } results , err := queryScan ( c . db , q , inargs , outfmt ) if err != nil { return err } properties := map [ string ] string { } for _ , r := range results { key = r [ 0 ] . ( string ) value = r [ 1 ] . ( string ) properties [ key ] = value } image . Properties = properties // Get the aliases q = " " inargs = [ ] interface { } { id } outfmt = [ ] interface { } { name , desc } results , err = queryScan ( c . db , q , inargs , outfmt ) if err != nil { return err } aliases := [ ] api . ImageAlias { } for _ , r := range results { name = r [ 0 ] . ( string ) desc = r [ 1 ] . ( string ) a := api . ImageAlias { Name : name , Description : desc } aliases = append ( aliases , a ) } image . Aliases = aliases _ , source , err := c . ImageSourceGet ( id ) if err == nil { image . UpdateSource = & source } return nil }
// Fill extra image fields such as properties and alias. This is called after
// fetching a single row from the images table.
Fill extra image fields such as properties and alias . This is called after fetching a single row from the images table .