// MarshalToolsMetadataIndexJSON marshals tools metadata to index JSON. // // updated is the time at which the JSON file was updated. func MarshalToolsMetadataIndexJSON(metadata []*ToolsMetadata, updated time.Time) (out []byte, err error) { productIds := make([]string, len(metadata)) for i, t := range metadata { productIds[i], err = t.productId() if err != nil { return nil, err } } var indices simplestreams.Indices indices.Updated = updated.Format(time.RFC1123Z) indices.Format = "index:1.0" indices.Indexes = map[string]*simplestreams.IndexMetadata{ ToolsContentId: &simplestreams.IndexMetadata{ Updated: indices.Updated, Format: "products:1.0", DataType: "content-download", ProductsFilePath: ProductMetadataPath, ProductIds: set.NewStrings(productIds...).SortedValues(), }, } return json.MarshalIndent(&indices, "", " ") }
// MarshalImageMetadataIndexJSON marshals image metadata to index JSON. // // updated is the time at which the JSON file was updated. func MarshalImageMetadataIndexJSON(metadata []*ImageMetadata, cloudSpec []simplestreams.CloudSpec, updated time.Time) (out []byte, err error) { productIds := make([]string, len(metadata)) for i, t := range metadata { productIds[i] = t.productId() } var indices simplestreams.Indices indices.Updated = updated.Format(time.RFC1123Z) indices.Format = "index:1.0" indices.Indexes = map[string]*simplestreams.IndexMetadata{ ImageContentId: &simplestreams.IndexMetadata{ CloudName: "custom", Updated: indices.Updated, Format: "products:1.0", DataType: "image-ids", ProductsFilePath: ProductMetadataPath, ProductIds: set.NewStrings(productIds...).SortedValues(), Clouds: cloudSpec, }, } return json.MarshalIndent(&indices, "", " ") }