Ejemplo n.º 1
0
    def save(self):
        meta_dir = get_meta_dir(self.name)
        if not os.path.isdir(meta_dir):
            os.makedirs(meta_dir)
        with open(get_meta_file(self.name), "w") as f:
            f.write(json.dumps(self.Metadata))

        tls_dir = get_tls_dir(self.name)
        for endpoint, tls in self.tls_cfg.items():
            if not os.path.isdir(os.path.join(tls_dir, endpoint)):
                os.makedirs(os.path.join(tls_dir, endpoint))

            ca_file = tls.ca_cert
            if ca_file:
                copyfile(
                    ca_file,
                    os.path.join(tls_dir, endpoint, os.path.basename(ca_file)))

            if tls.cert:
                cert_file, key_file = tls.cert
                copyfile(
                    cert_file,
                    os.path.join(tls_dir, endpoint,
                                 os.path.basename(cert_file)))
                copyfile(
                    key_file,
                    os.path.join(tls_dir, endpoint,
                                 os.path.basename(key_file)))

        self.meta_path = get_meta_dir(self.name)
        self.tls_path = get_tls_dir(self.name)
Ejemplo n.º 2
0
    def _load_meta(cls, name):
        meta_file = get_meta_file(name)
        if not os.path.isfile(meta_file):
            return None

        metadata = {}
        try:
            with open(meta_file) as f:
                metadata = json.load(f)
        except (OSError, KeyError, ValueError) as e:
            # unknown format
            raise Exception("""Detected corrupted meta file for
                context {} : {}""".format(name, e))

        # for docker endpoints, set defaults for
        # Host and SkipTLSVerify fields
        for k, v in metadata["Endpoints"].items():
            if k != "docker":
                continue
            metadata["Endpoints"][k]["Host"] = v.get(
                "Host", get_context_host(None, False))
            metadata["Endpoints"][k]["SkipTLSVerify"] = bool(
                v.get("SkipTLSVerify", True))

        return metadata
Ejemplo n.º 3
0
    def _load_meta(cls, name):
        metadata = {}
        meta_file = get_meta_file(name)
        if os.path.isfile(meta_file):
            with open(meta_file) as f:
                try:
                    with open(meta_file) as f:
                        metadata = json.load(f)
                    for k, v in metadata["Endpoints"].items():
                        metadata["Endpoints"][k]["SkipTLSVerify"] = bool(
                            v["SkipTLSVerify"])
                except (IOError, KeyError, ValueError) as e:
                    # unknown format
                    raise Exception("""Detected corrupted meta file for
                        context {} : {}""".format(name, e))

            return (metadata["Name"],
                    metadata["Metadata"].get("StackOrchestrator",
                                             None), metadata["Endpoints"])
        return None, None, None