func (s *archiveDataSuite) SetUpTest(c *gc.C) { s.IsolationSuite.SetUpTest(c) meta, err := backups.NewMetadataJSONReader(bytes.NewBufferString(`{` + `"ID":"20140909-115934.asdf-zxcv-qwe",` + `"Checksum":"123af2cef",` + `"ChecksumFormat":"SHA-1, base64 encoded",` + `"Size":10,` + `"Stored":"0001-01-01T00:00:00Z",` + `"Started":"2014-09-09T11:59:34Z",` + `"Finished":"2014-09-09T12:00:34Z",` + `"Notes":"",` + `"Environment":"asdf-zxcv-qwe",` + `"Machine":"0",` + `"Hostname":"myhost",` + `"Version":"1.21-alpha3"` + `}` + "\n")) c.Assert(err, jc.ErrorIsNil) archiveFile := s.newArchiveFile(c, meta) compressed, err := ioutil.ReadAll(archiveFile) c.Assert(err, jc.ErrorIsNil) gzr, err := gzip.NewReader(bytes.NewBuffer(compressed)) c.Assert(err, jc.ErrorIsNil) data, err := ioutil.ReadAll(gzr) c.Assert(err, jc.ErrorIsNil) s.archiveFile = bytes.NewBuffer(compressed) s.data = data s.meta = meta }
func (s *metadataSuite) TestNewMetadataJSONReader(c *gc.C) { file := bytes.NewBufferString(`{` + `"ID":"20140909-115934.asdf-zxcv-qwe",` + `"Checksum":"123af2cef",` + `"ChecksumFormat":"SHA-1, base64 encoded",` + `"Size":10,` + `"Stored":"0001-01-01T00:00:00Z",` + `"Started":"2014-09-09T11:59:34Z",` + `"Finished":"2014-09-09T12:00:34Z",` + `"Notes":"",` + `"Environment":"asdf-zxcv-qwe",` + `"Machine":"0",` + `"Hostname":"myhost",` + `"Version":"1.21-alpha3"` + `}` + "\n") meta, err := backups.NewMetadataJSONReader(file) c.Assert(err, jc.ErrorIsNil) c.Check(meta.ID(), gc.Equals, "20140909-115934.asdf-zxcv-qwe") c.Check(meta.Checksum(), gc.Equals, "123af2cef") c.Check(meta.ChecksumFormat(), gc.Equals, "SHA-1, base64 encoded") c.Check(meta.Size(), gc.Equals, int64(10)) c.Check(meta.Stored(), gc.IsNil) c.Check(meta.Started.Unix(), gc.Equals, int64(1410263974)) c.Check(meta.Finished.Unix(), gc.Equals, int64(1410264034)) c.Check(meta.Notes, gc.Equals, "") c.Check(meta.Origin.Environment, gc.Equals, "asdf-zxcv-qwe") c.Check(meta.Origin.Machine, gc.Equals, "0") c.Check(meta.Origin.Hostname, gc.Equals, "myhost") c.Check(meta.Origin.Version.String(), gc.Equals, "1.21-alpha3") }
func (s *workspaceSuite) SetUpTest(c *gc.C) { s.IsolationSuite.SetUpTest(c) meta, err := backups.NewMetadataJSONReader(bytes.NewBufferString(`{` + `"ID":"20140909-115934.asdf-zxcv-qwe",` + `"Checksum":"123af2cef",` + `"ChecksumFormat":"SHA-1, base64 encoded",` + `"Size":10,` + `"Stored":"0001-01-01T00:00:00Z",` + `"Started":"2014-09-09T11:59:34Z",` + `"Finished":"2014-09-09T12:00:34Z",` + `"Notes":"",` + `"Environment":"9f484882-2f18-4fd2-967d-db9663db7bea",` + `"Machine":"0",` + `"Hostname":"myhost",` + `"Version":"1.21-alpha3"` + `}` + "\n")) c.Assert(err, jc.ErrorIsNil) files := []bt.File{ { Name: "var/lib/juju/tools/1.21-alpha2.1-trusty-amd64/jujud", Content: "<some binary data goes here>", }, { Name: "var/lib/juju/system-identity", Content: "<an ssh key goes here>", }, } dump := []bt.File{ { Name: "juju", IsDir: true, }, { Name: "juju/machines.bson", Content: "<BSON data goes here>", }, { Name: "oplog.bson", Content: "<BSON data goes here>", }, } archiveFile, err := bt.NewArchive(meta, files, dump) c.Assert(err, jc.ErrorIsNil) s.archiveFile = archiveFile s.meta = meta }
func extractMachineID(archive *os.File) (string, error) { paths := backups.NewCanonicalArchivePaths() gzr, err := gzip.NewReader(archive) if err != nil { return "", errors.Annotate(err, fmt.Sprintf("cannot unzip %q", archive.Name())) } defer gzr.Close() metaFile, err := findFileInTar(gzr, paths.MetadataFile) if errors.IsNotFound(err) { // Older archives don't have a metadata file and always have machine-0. return "0", nil } if err != nil { return "", errors.Trace(err) } meta, err := backups.NewMetadataJSONReader(metaFile) if err != nil { return "", errors.Trace(err) } return meta.Origin.Machine, nil }