func makeTools(c *gc.C, metadataDir, stream string, versionStrings []string, withCheckSum bool) coretools.List { toolsDir := filepath.Join(metadataDir, storage.BaseToolsPath, stream) c.Assert(os.MkdirAll(toolsDir, 0755), gc.IsNil) var toolsList coretools.List for _, versionString := range versionStrings { binary, err := version.ParseBinary(versionString) if err != nil { c.Assert(err, jc.Satisfies, series.IsUnknownOSForSeriesError) } path := filepath.Join(toolsDir, fmt.Sprintf("juju-%s.tgz", binary)) data := binary.String() err = ioutil.WriteFile(path, []byte(data), 0644) c.Assert(err, jc.ErrorIsNil) tool := &coretools.Tools{ Version: binary, URL: path, } if withCheckSum { tool.Size, tool.SHA256 = SHA256sum(c, path) } toolsList = append(toolsList, tool) } // Write the tools metadata. stor, err := filestorage.NewFileStorageWriter(metadataDir) c.Assert(err, jc.ErrorIsNil) err = tools.MergeAndWriteMetadata(stor, stream, stream, toolsList, false) c.Assert(err, jc.ErrorIsNil) // Sign metadata err = envtesting.SignTestTools(stor) c.Assert(err, jc.ErrorIsNil) return toolsList }
func UseTestImageData(stor envstorage.Storage, cred *identity.Credentials) { // Put some image metadata files into the public storage. t := template.Must(template.New("").Parse(indexData)) var metadata bytes.Buffer if err := t.Execute(&metadata, cred); err != nil { panic(fmt.Errorf("cannot generate index metdata: %v", err)) } data := metadata.Bytes() stor.Put(simplestreams.UnsignedIndex("v1", 1), bytes.NewReader(data), int64(len(data))) stor.Put( productMetadatafile, strings.NewReader(imagesData), int64(len(imagesData))) envtesting.SignTestTools(stor) }