mirror of https://github.com/docker/docker-py.git
Implement context management, lifecycle and unittests.
Signed-off-by: Anca Iordache <anca.iordache@docker.com>
This commit is contained in:
parent
fcd0093050
commit
087b3f0a49
|
@ -38,7 +38,13 @@ class ContextAPI(object):
|
|||
>>> print(ctx.Metadata)
|
||||
{
|
||||
"Name": "test",
|
||||
<<<<<<< HEAD
|
||||
"Metadata": {},
|
||||
=======
|
||||
"Metadata": {
|
||||
"StackOrchestrator": "swarm"
|
||||
},
|
||||
>>>>>>> 64fdb32... Implement context management, lifecycle and unittests.
|
||||
"Endpoints": {
|
||||
"docker": {
|
||||
"Host": "unix:///var/run/docker.sock",
|
||||
|
@ -55,9 +61,13 @@ class ContextAPI(object):
|
|||
ctx = Context.load_context(name)
|
||||
if ctx:
|
||||
raise errors.ContextAlreadyExists(name)
|
||||
<<<<<<< HEAD
|
||||
endpoint = "docker"
|
||||
if orchestrator and orchestrator != "swarm":
|
||||
endpoint = orchestrator
|
||||
=======
|
||||
endpoint = "docker" if orchestrator == "swarm" else orchestrator
|
||||
>>>>>>> 64fdb32... Implement context management, lifecycle and unittests.
|
||||
ctx = Context(name, orchestrator)
|
||||
ctx.set_endpoint(
|
||||
endpoint, host, tls_cfg,
|
||||
|
@ -79,7 +89,13 @@ class ContextAPI(object):
|
|||
>>> print(ctx.Metadata)
|
||||
{
|
||||
"Name": "test",
|
||||
<<<<<<< HEAD
|
||||
"Metadata": {},
|
||||
=======
|
||||
"Metadata": {
|
||||
"StackOrchestrator": "swarm"
|
||||
},
|
||||
>>>>>>> 64fdb32... Implement context management, lifecycle and unittests.
|
||||
"Endpoints": {
|
||||
"docker": {
|
||||
"Host": "unix:///var/run/docker.sock",
|
||||
|
|
|
@ -57,7 +57,11 @@ class Context:
|
|||
self, name="docker", host=None, tls_cfg=None,
|
||||
skip_tls_verify=False, def_namespace=None):
|
||||
self.endpoints[name] = {
|
||||
<<<<<<< HEAD
|
||||
"Host": get_context_host(host, not skip_tls_verify),
|
||||
=======
|
||||
"Host": get_context_host(host),
|
||||
>>>>>>> 64fdb32... Implement context management, lifecycle and unittests.
|
||||
"SkipTLSVerify": skip_tls_verify
|
||||
}
|
||||
if def_namespace:
|
||||
|
@ -71,6 +75,7 @@ class Context:
|
|||
|
||||
@classmethod
|
||||
def load_context(cls, name):
|
||||
<<<<<<< HEAD
|
||||
meta = Context._load_meta(name)
|
||||
if meta:
|
||||
instance = cls(
|
||||
|
@ -78,6 +83,11 @@ class Context:
|
|||
orchestrator=meta["Metadata"].get("StackOrchestrator", None),
|
||||
endpoints=meta.get("Endpoints", None))
|
||||
instance.context_type = meta["Metadata"].get("Type", None)
|
||||
=======
|
||||
name, orchestrator, endpoints = Context._load_meta(name)
|
||||
if name:
|
||||
instance = cls(name, orchestrator, endpoints=endpoints)
|
||||
>>>>>>> 64fdb32... Implement context management, lifecycle and unittests.
|
||||
instance._load_certs()
|
||||
instance.meta_path = get_meta_dir(name)
|
||||
return instance
|
||||
|
@ -85,6 +95,7 @@ class Context:
|
|||
|
||||
@classmethod
|
||||
def _load_meta(cls, name):
|
||||
<<<<<<< HEAD
|
||||
meta_file = get_meta_file(name)
|
||||
if not os.path.isfile(meta_file):
|
||||
return None
|
||||
|
@ -109,6 +120,27 @@ class Context:
|
|||
v.get("SkipTLSVerify", True))
|
||||
|
||||
return metadata
|
||||
=======
|
||||
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"]["StackOrchestrator"],
|
||||
metadata["Endpoints"])
|
||||
return None, None, None
|
||||
>>>>>>> 64fdb32... Implement context management, lifecycle and unittests.
|
||||
|
||||
def _load_certs(self):
|
||||
certs = {}
|
||||
|
@ -177,15 +209,19 @@ class Context:
|
|||
result.update(self.Storage)
|
||||
return result
|
||||
|
||||
<<<<<<< HEAD
|
||||
def is_docker_host(self):
|
||||
return self.context_type is None
|
||||
|
||||
=======
|
||||
>>>>>>> 64fdb32... Implement context management, lifecycle and unittests.
|
||||
@property
|
||||
def Name(self):
|
||||
return self.name
|
||||
|
||||
@property
|
||||
def Host(self):
|
||||
<<<<<<< HEAD
|
||||
if not self.orchestrator or self.orchestrator == "swarm":
|
||||
endpoint = self.endpoints.get("docker", None)
|
||||
if endpoint:
|
||||
|
@ -193,6 +229,11 @@ class Context:
|
|||
return None
|
||||
|
||||
return self.endpoints[self.orchestrator].get("Host", None)
|
||||
=======
|
||||
if self.orchestrator == "swarm":
|
||||
return self.endpoints["docker"]["Host"]
|
||||
return self.endpoints[self.orchestrator]["Host"]
|
||||
>>>>>>> 64fdb32... Implement context management, lifecycle and unittests.
|
||||
|
||||
@property
|
||||
def Orchestrator(self):
|
||||
|
@ -200,19 +241,31 @@ class Context:
|
|||
|
||||
@property
|
||||
def Metadata(self):
|
||||
<<<<<<< HEAD
|
||||
meta = {}
|
||||
if self.orchestrator:
|
||||
meta = {"StackOrchestrator": self.orchestrator}
|
||||
return {
|
||||
"Name": self.name,
|
||||
"Metadata": meta,
|
||||
=======
|
||||
return {
|
||||
"Name": self.name,
|
||||
"Metadata": {
|
||||
"StackOrchestrator": self.orchestrator
|
||||
},
|
||||
>>>>>>> 64fdb32... Implement context management, lifecycle and unittests.
|
||||
"Endpoints": self.endpoints
|
||||
}
|
||||
|
||||
@property
|
||||
def TLSConfig(self):
|
||||
key = self.orchestrator
|
||||
<<<<<<< HEAD
|
||||
if not key or key == "swarm":
|
||||
=======
|
||||
if key == "swarm":
|
||||
>>>>>>> 64fdb32... Implement context management, lifecycle and unittests.
|
||||
key = "docker"
|
||||
if key in self.tls_cfg.keys():
|
||||
return self.tls_cfg[key]
|
||||
|
|
Loading…
Reference in New Issue