def set_pv_reclaim_policy(self, name, policy, **kwargs): options_string = convert_kwargs_to_options_string(kwargs) logging.debug( f'sudo gravity exec kubectl patch pv {name} -p \'{{"spec":{{"persistentVolumeReclaimPolicy":"{policy}"}}}}\' {options_string}' ) return self._host.SshDirect.execute( f'sudo gravity exec kubectl patch pv {name} -p \'{{"spec":{{"persistentVolumeReclaimPolicy":"{policy}"}}}}\' {options_string}' )
def delete_pod_by_label(self, label_value, label_name="app", force="false", grace_period=60, **kwargs): options_string = convert_kwargs_to_options_string(kwargs) self._host.SshDirect.execute( f"sudo gravity exec kubectl delete pod --force={force} --grace-period={grace_period} --selector={label_name}={label_value} {options_string}" )
def re_run_job(self, name, **kwargs): options_string = convert_kwargs_to_options_string(kwargs) job_dict = self.get_job(name, **kwargs) del job_dict['spec']['selector'] del job_dict['spec']['template']['metadata']['labels'] del job_dict['status'] tmp_file = tempfile.NamedTemporaryFile(dir='/tmp', delete=True) with open(tmp_file.name, 'w') as f: json.dump(job_dict, f) f.flush() self._host.SshDirect.put(tmp_file.name, remotedir='/tmp') self._host.SshDirect.execute( f"sudo gravity exec kubectl replace --force -f /host/{tmp_file.name} {options_string}" ) wait_for_predicate_nothrow( lambda: self.get_job(name)['status']['succeeded'] == 1, 180)
def get_deployment(self, name, **kwargs): options_string = convert_kwargs_to_options_string(kwargs) return self.get(f"deployment {name}", options_string)
def expose_deployment(self, name, port=30015, **kwargs): options_string = convert_kwargs_to_options_string(kwargs) return self.expose( f"deployment {name}", f"--type=LoadBalancer --port={port} {options_string}")
def scale_statefulset(self, name, replicas=1, **kwargs): options_string = convert_kwargs_to_options_string(kwargs) return self.scale(name, "statefulset", replicas, options_string)
def scale_deployment(self, name, replicas=100, **kwargs): options_string = convert_kwargs_to_options_string(kwargs) return self.scale(name, "deployment", replicas, options_string)
def create_deployment(self, name, image, **kwargs): options_string = convert_kwargs_to_options_string(kwargs) return self.create(f"deployment {name}", f"--image={image} {options_string}")
def get_job(self, name, **kwargs): options_string = convert_kwargs_to_options_string(kwargs) res = self._host.SshDirect.execute( f"sudo gravity exec kubectl get job {name} --output json {options_string}" ) return json.loads(res)
def get_pv_by_pvc_name(self, name, **kwargs): options_string = convert_kwargs_to_options_string(kwargs) return self._host.SshDirect.execute( f"sudo gravity exec kubectl get pvc {name} -o jsonpath='{{.spec.volumeName}}' {options_string}" )
def delete_pvc(self, name, **kwargs): options_string = convert_kwargs_to_options_string(kwargs) return self._host.SshDirect.execute( f"sudo gravity exec kubectl delete pvc {name} {options_string}")
def delete_pod_by_service_name(self, service_name, **kwargs): service_name_selector_query = f"--selector=app=={service_name}" options_string = convert_kwargs_to_options_string(kwargs) self.delete(resource=f"pod {service_name_selector_query}", options=options_string)
def configmap_json(self, name, **kwargs): options_string = convert_kwargs_to_options_string(kwargs) return self.get(resource=f"configmaps {name}", options=options_string)
def delete_deployment(self, name="", **kwargs): options_string = convert_kwargs_to_options_string( kwargs, format_with_equals_sign=True) self.delete(f"deployment {name}", options_string)
def delete_svc(self, svc_name, **kwargs): options_string = convert_kwargs_to_options_string( kwargs, format_with_equals_sign=True) self.delete(f"svc {svc_name}", options_string)