def test_replace_namespaced(client: lightkube.Client): req = respx.put("https://localhost:9443/api/v1/namespaces/default/pods/xy").respond(json={'metadata': {'name': 'xy'}}) pod = client.replace(Pod(metadata=ObjectMeta(name="xy"))) assert req.calls[0][0].read() == b'{"metadata": {"name": "xy"}}' assert pod.metadata.name == 'xy' respx.put("https://localhost:9443/api/v1/namespaces/other/pods/xz").respond(json={'metadata': {'name': 'xz'}}) pod = client.replace(Pod(metadata=ObjectMeta(name="xz")), namespace='other') assert pod.metadata.name == 'xz' # namespace inside object definition need to match with provided namespace parameter. with pytest.raises(ValueError): client.replace(Pod(metadata=ObjectMeta(name="xx", namespace='ns1')), namespace='ns2')
def test_namespaced_methods(obj_name): client = Client() config = ConfigMap( metadata=ObjectMeta(name=obj_name, namespace='default'), data={'key1': 'value1', 'key2': 'value2'} ) # create config = client.create(config) try: assert config.metadata.name == obj_name assert config.data['key1'] == 'value1' assert config.data['key2'] == 'value2' # replace config.data['key1'] = 'new value' config = client.replace(config) assert config.data['key1'] == 'new value' assert config.data['key2'] == 'value2' # patch with PatchType.STRATEGIC patch = {'metadata': {'labels': {'app': 'xyz'}}} config = client.patch(ConfigMap, name=obj_name, obj=patch) assert config.metadata.labels['app'] == 'xyz' # get config2 = client.get(ConfigMap, name=obj_name) assert config.metadata.creationTimestamp == config2.metadata.creationTimestamp # list configs = [config.metadata.name for config in client.list(ConfigMap)] assert obj_name in configs finally: client.delete(ConfigMap, name=obj_name)
def test_replace_global(client: lightkube.Client): req = respx.put("https://localhost:9443/api/v1/nodes/xx").respond(json={'metadata': {'name': 'xx'}}) pod = client.replace(Node(metadata=ObjectMeta(name="xx"))) assert req.calls[0][0].read() == b'{"metadata": {"name": "xx"}}' assert pod.metadata.name == 'xx'