45 lines
1.3 KiB
Python
45 lines
1.3 KiB
Python
from charmhelpers.core import hookenv, unitdata
|
|
|
|
|
|
def get_sandbox_image():
|
|
"""
|
|
Return the container image location for the sandbox_image.
|
|
|
|
Set an appropriate sandbox image based on known registries. Precedence should be:
|
|
- related docker-registry
|
|
- default charmed k8s registry (if related to kubernetes)
|
|
- upstream
|
|
|
|
:return: str container image location
|
|
"""
|
|
db = unitdata.kv()
|
|
canonical_registry = "rocks.canonical.com:443/cdk"
|
|
upstream_registry = "k8s.gcr.io"
|
|
|
|
docker_registry = db.get("registry", None)
|
|
if docker_registry:
|
|
sandbox_registry = docker_registry["url"]
|
|
else:
|
|
try:
|
|
deployment = hookenv.goal_state()
|
|
except NotImplementedError:
|
|
relations = []
|
|
for rid in hookenv.relation_ids("containerd"):
|
|
relations.append(hookenv.remote_service_name(rid))
|
|
else:
|
|
relations = deployment.get("relations", {}).get("containerd", {})
|
|
|
|
if any(
|
|
k in relations
|
|
for k in (
|
|
"kubernetes-control-plane",
|
|
"kubernetes-master", # wokeignore:rule=master
|
|
"kubernetes-worker",
|
|
)
|
|
):
|
|
sandbox_registry = canonical_registry
|
|
else:
|
|
sandbox_registry = upstream_registry
|
|
|
|
return "{}/pause:3.6".format(sandbox_registry)
|