func makeTools(c *gc.C, metadataDir, subdir string, versionStrings []string, withCheckSum bool) coretools.List { toolsDir := filepath.Join(metadataDir, storage.BaseToolsPath) if subdir != "" { toolsDir = filepath.Join(toolsDir, subdir) } c.Assert(os.MkdirAll(toolsDir, 0755), gc.IsNil) var toolsList coretools.List for _, versionString := range versionStrings { binary := version.MustParseBinary(versionString) path := filepath.Join(toolsDir, fmt.Sprintf("juju-%s.tgz", binary)) data := binary.String() err := ioutil.WriteFile(path, []byte(data), 0644) c.Assert(err, gc.IsNil) 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, gc.IsNil) err = tools.MergeAndWriteMetadata(stor, toolsList, false) c.Assert(err, gc.IsNil) return toolsList }
func (c *ImageMetadataCommand) Run(context *cmd.Context) error { if err := c.setParams(context); err != nil { return err } out := context.Stdout im := &imagemetadata.ImageMetadata{ Id: c.ImageId, Arch: c.Arch, } cloudSpec := simplestreams.CloudSpec{ Region: c.Region, Endpoint: c.Endpoint, } targetStorage, err := filestorage.NewFileStorageWriter(c.Dir) if err != nil { return err } err = imagemetadata.MergeAndWriteMetadata(c.Series, []*imagemetadata.ImageMetadata{im}, &cloudSpec, targetStorage) if err != nil { return fmt.Errorf("image metadata files could not be created: %v", err) } dir := context.AbsPath(c.Dir) dest := filepath.Join(dir, storage.BaseImagesPath, "streams", "v1") fmt.Fprintf(out, fmt.Sprintf(helpDoc, dest, dir, dir)) return nil }
func (s *filestorageSuite) SetUpTest(c *gc.C) { s.dir = c.MkDir() var err error s.reader, err = filestorage.NewFileStorageReader(s.dir) c.Assert(err, gc.IsNil) s.writer, err = filestorage.NewFileStorageWriter(s.dir) c.Assert(err, gc.IsNil) }
// CreateLocalTestStorage returns the listener, which needs to be closed, and // the storage that is backed by a directory created in the running test's temp // directory. func CreateLocalTestStorage(c *gc.C) (closer io.Closer, stor storage.Storage, dataDir string) { dataDir = c.MkDir() underlying, err := filestorage.NewFileStorageWriter(dataDir) c.Assert(err, gc.IsNil) listener, err := httpstorage.Serve("localhost:0", underlying) c.Assert(err, gc.IsNil) stor = httpstorage.Client(listener.Addr().String()) closer = listener return }
func (s *bootstrapSuite) SetUpTest(c *gc.C) { s.JujuConnSuite.SetUpTest(c) s.env = &localStorageEnviron{ Environ: s.Conn.Environ, storageDir: c.MkDir(), } storage, err := filestorage.NewFileStorageWriter(s.env.storageDir) c.Assert(err, gc.IsNil) s.env.storage = storage }
func (s *ValidateImageMetadataSuite) makeLocalMetadata(c *gc.C, id, region, series, endpoint, stream string) error { im := &imagemetadata.ImageMetadata{ Id: id, Arch: "amd64", Stream: stream, } cloudSpec := simplestreams.CloudSpec{ Region: region, Endpoint: endpoint, } targetStorage, err := filestorage.NewFileStorageWriter(s.metadataDir) if err != nil { return err } err = imagemetadata.MergeAndWriteMetadata(series, []*imagemetadata.ImageMetadata{im}, &cloudSpec, targetStorage) if err != nil { return err } return nil }
// createImageMetadata creates some image metadata in a local directory. func createImageMetadata(c *gc.C) (string, []*imagemetadata.ImageMetadata) { // Generate some image metadata. im := []*imagemetadata.ImageMetadata{ { Id: "1234", Arch: "amd64", Version: "13.04", RegionName: "region", Endpoint: "endpoint", }, } cloudSpec := &simplestreams.CloudSpec{ Region: "region", Endpoint: "endpoint", } sourceDir := c.MkDir() sourceStor, err := filestorage.NewFileStorageWriter(sourceDir) c.Assert(err, gc.IsNil) err = imagemetadata.MergeAndWriteMetadata("raring", im, cloudSpec, sourceStor) c.Assert(err, gc.IsNil) return sourceDir, im }