Ejemplo n.º 1
0
 def get_metadata(self, charm_name):
     """Get the associated metadata for a given charm, eg ``wordpress``"""
     metadata = MetaData(
         os.path.join(test_repository_path, "series", charm_name,
                      "metadata.yaml"))
     self.assertEqual(metadata.name, charm_name)
     return metadata
Ejemplo n.º 2
0
class CharmBundle(CharmBase):
    """ZIP-archive that contains charm directory content."""

    def __init__(self, path):
        self.path = isinstance(path, file) and path.name or path
        try:
            zf = ZipFile(path, 'r')
        except BadZipfile, exc:
            raise CharmError(path, "must be a zip file (%s)" % exc)

        if "metadata.yaml" not in zf.namelist():
            raise CharmError(
                path, "charm does not contain required file 'metadata.yaml'")
        self.metadata = MetaData()
        self.metadata.parse(zf.read("metadata.yaml"))

        try:
            revision_content = zf.read("revision")
        except KeyError:
            revision_content = None
        self._revision = get_revision(
            revision_content, self.metadata, self.path)
        if self._revision is None:
            raise CharmError(self.path, "has no revision")

        self.config = ConfigOptions()
        if "config.yaml" in zf.namelist():
            self.config.parse(zf.read("config.yaml"))
Ejemplo n.º 3
0
 def test_metadata_fallback(self):
     metadata = MetaData()
     self.assertEquals(get_revision(None, metadata, None), None)
     metadata.parse(
         yaml.dump({
             "name": "x",
             "summary": "y",
             "description": "z",
             "revision": 33
         }))
     self.assertEquals(get_revision(None, metadata, None), 33)
Ejemplo n.º 4
0
    def __init__(self, client, charm_id, charm_data):
        self._client = client
        self._charm_url = CharmURL.parse(charm_id)
        self._charm_url.assert_revision()

        self._metadata = MetaData()
        self._metadata.parse_serialization_data(charm_data["metadata"])

        self._config = ConfigOptions()
        self._config.parse(charm_data["config"])

        # Just a health check:
        assert self._metadata.name == self.name

        self._sha256 = charm_data["sha256"]

        self._bundle_url = charm_data.get("url")
Ejemplo n.º 5
0
    def __init__(self, path):
        self.path = path
        self.metadata = MetaData(os.path.join(path, "metadata.yaml"))

        revision_content = None
        revision_path = os.path.join(self.path, "revision")
        if os.path.exists(revision_path):
            with open(revision_path) as f:
                revision_content = f.read()
        self._revision = get_revision(revision_content, self.metadata,
                                      self.path)
        if self._revision is None:
            self.set_revision(0)
        elif revision_content is None:
            self.set_revision(self._revision)

        self.config = ConfigOptions()
        self.config.load(os.path.join(path, "config.yaml"))
        self._temp_bundle = None
        self._temp_bundle_file = None
Ejemplo n.º 6
0
 def test_path_argument_loads_charm_info(self):
     info = MetaData(sample_path)
     self.assertEquals(info.name, "dummy")
Ejemplo n.º 7
0
 def setUp(self):
     self.metadata = MetaData()
     self.sample = sample_configuration