def wait_for_deployment(self, name, ns): """ Waits for the given deployment to have the desired number of replicas. """ logger.info("Checking status for deployment %s/%s" % (ns, name)) kubectl("-n %s rollout status deployment/%s" % (ns, name)) kubectl("get pods -n %s -o wide" % ns)
def is_it_gone_yet(res_name, res_type): try: kubectl("get %s %s -n%s" % (res_type, res_name, ns), logerr=False) raise self.StillThere except subprocess.CalledProcessError: # Success pass
def check_pod_status(self, ns): pods = self.cluster.list_namespaced_pod(ns) for pod in pods.items: logger.info("%s\t%s\t%s", pod.metadata.name, pod.metadata.namespace, pod.status.phase) if pod.status.phase != 'Running': kubectl("describe po %s -n %s" % (pod.metadata.name, pod.metadata.namespace)) assert pod.status.phase == 'Running'
def delete_and_confirm(self, name, resource_type, ns="default"): try: kubectl("delete %s %s -n%s" % (resource_type, name, ns)) except subprocess.CalledProcessError: pass def is_it_gone_yet(res_name, res_type): try: kubectl("get %s %s -n%s" % (res_type, res_name, ns), logerr=False) raise self.StillThere except subprocess.CalledProcessError: # Success pass retry_until_success(is_it_gone_yet, retries=10, wait_time=10, function_args=[name, resource_type])
def scale_deployment(self, deployment, ns, replicas): return kubectl("scale deployment %s -n %s --replicas %s" % (deployment, ns, replicas)).strip()