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
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"))
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)
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")
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
def test_path_argument_loads_charm_info(self): info = MetaData(sample_path) self.assertEquals(info.name, "dummy")
def setUp(self): self.metadata = MetaData() self.sample = sample_configuration