summaryrefslogtreecommitdiffstats
path: root/cns-libs/cnslibs/common/docker_libs.py
diff options
context:
space:
mode:
Diffstat (limited to 'cns-libs/cnslibs/common/docker_libs.py')
-rw-r--r--cns-libs/cnslibs/common/docker_libs.py91
1 files changed, 91 insertions, 0 deletions
diff --git a/cns-libs/cnslibs/common/docker_libs.py b/cns-libs/cnslibs/common/docker_libs.py
new file mode 100644
index 00000000..c47f8b77
--- /dev/null
+++ b/cns-libs/cnslibs/common/docker_libs.py
@@ -0,0 +1,91 @@
+from glusto.core import Glusto as g
+
+
+DOCKER_FILE_PATH = "/etc/sysconfig/docker"
+
+
+def _docker_update_registry(hostname, registry, registry_type):
+ '''
+ This function updates docker registry
+ Args:
+ hostname (str): hostname on which want to setup
+ the docker
+ registry (str): add regsitry url that needs to be added
+ in docker file.
+ ex: "ADD_REGISTRY='--add-registry registry.access.stage.redhat.com'"
+ registry_type (str): type of registry
+ ex: add or insecure
+ '''
+ try:
+ conn = g.rpyc_get_connection(hostname, user="root")
+ if conn is None:
+ g.log.error("Failed to get rpyc connection of node %s"
+ % hostname)
+ return False
+
+ if not conn.modules.os.path.exists(DOCKER_FILE_PATH):
+ g.log.error("Unable to locate %s in node %s"
+ % (DOCKER_FILE_PATH, hostname))
+ return False
+
+ registry_flag = False
+ lookup_str = "%s_REGISTRY=" % registry_type.upper()
+ for line in conn.modules.fileinput.input(
+ DOCKER_FILE_PATH, inplace=True):
+ if lookup_str in line:
+ registry_flag = True
+ if registry not in line:
+ line = line if "#" in line else "#" + line
+ conn.modules.sys.stdout.write(line)
+ conn.modules.sys.stdout.write(registry)
+ continue
+ conn.modules.sys.stdout.write(line)
+
+ if not registry_flag:
+ with conn.builtin.open(DOCKER_FILE_PATH, 'a+') as docker_file:
+ docker_file.write(registry + '\n')
+
+ except Exception as err:
+ g.log.error("failed to edit docker file with %s-registry "
+ "%s on %s" % (registry_type, err, hostname))
+ return False
+ finally:
+ g.rpyc_close_connection(hostname, user="root")
+
+ g.log.info("Sucessfully edited docker file with %s-registry "
+ "on %s" % (registry_type, hostname))
+ return True
+
+
+def docker_add_registry(hostname, registry_url):
+ '''
+ This function edits /etc/sysconfig/docker file with ADD_REGISTRY
+ Args:
+ hostname (str): hostname on which want to setup
+ the docker
+ registry_url (str): add regsitry url that needs to be added
+ in docker file.
+ ex: "ADD_REGISTRY='--add-registry registry.access.stage.redhat.com'"
+ Returns:
+ bool: True if successful,
+ otherwise False
+ '''
+ return _docker_update_registry(hostname, registry_url, 'add')
+
+
+def docker_insecure_registry(hostname, registry_url):
+ '''
+ This function edits /etc/sysconfig/docker file with INSECURE_REGISTRY
+ Args:
+ hostname (str): hostname on which want to setup
+ the docker
+ registry_url (str): insecure registry url that needs to be added
+ in docker file.
+ ex: "INSECURE_REGISTRY=
+ '--insecure-registry registry.access.stage.redhat.com'"
+ Returns:
+ bool: True if successful,
+ otherwise False
+
+ '''
+ return _docker_update_registry(hostname, registry_url, 'insecure')