def sdict(self): result = self.run_local( self._kubectl + ["get", "-o", "json", self.KIND, self.resource_name]) if result.return_code == 0: full_json_response = json.loads(result.stdout.decode('utf-8')) if full_json_response.get("status", {}).get("phase") == "Terminating": # this resource is currently being deleted, consider it gone return None return { 'manifest': json.dumps(reduce_dict( full_json_response, self.nuke_k8s_status(json.loads(self.manifest)), ), indent=4, sort_keys=True) } elif result.return_code == 1 and "NotFound" in result.stderr.decode( 'utf-8'): return None else: io.debug(result.stdout.decode('utf-8')) io.debug(result.stderr.decode('utf-8')) raise RuntimeError( _("error getting state of {}, check `bw --debug`".format( self.id)))
def sdict(self): result = run_local([ "kubectl", "--context={}".format(self.node.kubectl_context), "--namespace={}".format(self.namespace), "get", "-o", "json", self.KUBECTL_RESOURCE_TYPE, self.resource_name, ]) if result.return_code == 0: full_json_response = json.loads(result.stdout) if full_json_response.get("status", {}).get("phase") == "Terminating": # this resource is currently being deleted, consider it gone return None return {'manifest': json.dumps(reduce_dict( full_json_response, json.loads(self.manifest), ), indent=4, sort_keys=True)} elif result.return_code == 1 and "NotFound" in result.stderr.decode('utf-8'): return None else: io.debug(result.stdout.decode('utf-8')) io.debug(result.stderr.decode('utf-8')) raise RuntimeError(_("error getting state of {}, check `bw --debug`".format(self.id)))
def test_reduce_dict_simple(): assert reduce_dict( { 'a': 1, 'b': 2 }, {'a': 3}, ) == { 'a': 1 }
def test_reduce_dict_nested(): full_dict = { 'a': [{ 'b': 1, 'c': 2, }], 'd': 3, } template_dict = { 'a': [{ 'b': None, }], 'd': None, 'e': None, } assert reduce_dict(full_dict, template_dict) == { 'a': [{ 'b': 1, }], 'd': 3, }
def test_reduce_dict_list_and_dict(): assert reduce_dict( [1, 2, 3], {'a': 4}, ) == [1, 2, 3]
def test_reduce_dict_two_lists(): assert reduce_dict( [1, 2, 3], [1, 2], ) == [1, 2, 3]
def test_reduce_dict_simple(): assert reduce_dict( {'a': 1, 'b': 2}, {'a': 3}, ) == {'a': 1}