~rogpeppe/juju-core/themue-058-debug-log-api

« back to all changes in this revision

Viewing changes to environs/imagemetadata/testing/testing.go

  • Committer: Frank Mueller
  • Date: 2014-01-23 14:14:49 UTC
  • mfrom: (2152.1.95 juju-core)
  • Revision ID: frank.mueller@canonical.com-20140123141449-b30l57y7gs3wjkpw
debugger: merged trunk and fixed permission and interface problems

Show diffs side-by-side

added added

removed removed

Lines of Context:
6
6
import (
7
7
        "fmt"
8
8
        "io/ioutil"
9
 
        "path/filepath"
 
9
        "path"
10
10
        "sort"
11
11
 
12
12
        gc "launchpad.net/gocheck"
13
13
 
 
14
        "launchpad.net/juju-core/environs/filestorage"
14
15
        "launchpad.net/juju-core/environs/imagemetadata"
15
16
        "launchpad.net/juju-core/environs/simplestreams"
 
17
        "launchpad.net/juju-core/environs/storage"
16
18
        "launchpad.net/juju-core/utils/set"
17
19
)
18
20
 
19
 
// ParseMetadata loads ImageMetadata from the specified directory.
20
 
func ParseMetadata(c *gc.C, metadataDir string) []*imagemetadata.ImageMetadata {
 
21
// ParseMetadataFromDir loads ImageMetadata from the specified directory.
 
22
func ParseMetadataFromDir(c *gc.C, metadataDir string) []*imagemetadata.ImageMetadata {
 
23
        stor, err := filestorage.NewFileStorageReader(metadataDir)
 
24
        c.Assert(err, gc.IsNil)
 
25
        return ParseMetadataFromStorage(c, stor)
 
26
}
 
27
 
 
28
// ParseMetadataFromStorage loads ImageMetadata from the specified storage reader.
 
29
func ParseMetadataFromStorage(c *gc.C, stor storage.StorageReader) []*imagemetadata.ImageMetadata {
 
30
        source := storage.NewStorageSimpleStreamsDataSource(stor, "images")
 
31
 
 
32
        // Find the simplestreams index file.
21
33
        params := simplestreams.ValueParams{
22
34
                DataType:      "image-ids",
23
35
                ValueTemplate: imagemetadata.ImageMetadata{},
24
36
        }
25
 
 
26
 
        metadataPath := filepath.Join(metadataDir, "images")
27
 
        source := simplestreams.NewURLDataSource("file://"+metadataPath, simplestreams.VerifySSLHostnames)
28
 
 
29
37
        const requireSigned = false
30
38
        indexPath := simplestreams.UnsignedIndex
31
39
        indexRef, err := simplestreams.GetIndexWithFormat(
36
44
        imageIndexMetadata := indexRef.Indexes["com.ubuntu.cloud:custom"]
37
45
        c.Assert(imageIndexMetadata, gc.NotNil)
38
46
 
39
 
        data, err := ioutil.ReadFile(filepath.Join(metadataPath, imageIndexMetadata.ProductsFilePath))
 
47
        // Read the products file contents.
 
48
        r, err := stor.Get(path.Join("images", imageIndexMetadata.ProductsFilePath))
 
49
        defer r.Close()
 
50
        c.Assert(err, gc.IsNil)
 
51
        data, err := ioutil.ReadAll(r)
40
52
        c.Assert(err, gc.IsNil)
41
53
 
 
54
        // Parse the products file metadata.
42
55
        url, err := source.URL(imageIndexMetadata.ProductsFilePath)
43
56
        c.Assert(err, gc.IsNil)
44
57
        cloudMetadata, err := simplestreams.ParseCloudMetadata(data, "products:1.0", url, imagemetadata.ImageMetadata{})
45
58
        c.Assert(err, gc.IsNil)
46
59
 
 
60
        // Collate the metadata.
47
61
        imageMetadataMap := make(map[string]*imagemetadata.ImageMetadata)
48
62
        var expectedProductIds set.Strings
49
63
        var imageVersions set.Strings