def test_k8s_agent_deploy_flow_raises(monkeypatch, cloud_api): k8s_config = MagicMock() monkeypatch.setattr("kubernetes.config", k8s_config) batch_client = MagicMock() batch_client.create_namespaced_job.return_value = {} monkeypatch.setattr( "kubernetes.client.BatchV1Api", MagicMock(retrurn_value=batch_client) ) agent = KubernetesAgent() with pytest.raises(ValueError): agent.deploy_flow( flow_run=GraphQLResult( { "flow": GraphQLResult( { "storage": Local().serialize(), "id": "id", "environment": LocalEnvironment().serialize(), "core_version": "0.13.0", } ), "id": "id", } ) ) assert not agent.batch_client.create_namespaced_job.called
def test_k8s_agent_deploy_flow_uses_environment_metadata( monkeypatch, runner_token): k8s_config = MagicMock() monkeypatch.setattr("kubernetes.config", k8s_config) batch_client = MagicMock() batch_client.create_namespaced_job.return_value = {} monkeypatch.setattr("kubernetes.client.BatchV1Api", MagicMock(retrurn_value=batch_client)) agent = KubernetesAgent() agent.deploy_flow(flow_run=GraphQLResult({ "flow": GraphQLResult({ "storage": Local().serialize(), "environment": RemoteEnvironment(metadata={ "image": "repo/name:tag" }).serialize(), "id": "id", }), "id": "id", })) assert agent.batch_client.create_namespaced_job.called assert ( agent.batch_client.create_namespaced_job.call_args[1]["body"]["spec"] ["template"]["spec"]["containers"][0]["image"] == "repo/name:tag")
def test_k8s_agent_deploy_flow(core_version, command, monkeypatch, cloud_api): k8s_config = MagicMock() monkeypatch.setattr("kubernetes.config", k8s_config) batch_client = MagicMock() batch_client.create_namespaced_job.return_value = {} monkeypatch.setattr("kubernetes.client.BatchV1Api", MagicMock(retrurn_value=batch_client)) agent = KubernetesAgent() agent.deploy_flow(flow_run=GraphQLResult({ "flow": GraphQLResult({ "storage": Docker(registry_url="test", image_name="name", image_tag="tag").serialize(), "environment": LocalEnvironment().serialize(), "id": "id", "core_version": core_version, }), "id": "id", })) assert agent.batch_client.create_namespaced_job.called assert (agent.batch_client.create_namespaced_job.call_args[1]["namespace"] == "default") assert (agent.batch_client.create_namespaced_job.call_args[1]["body"] ["apiVersion"] == "batch/v1") assert agent.batch_client.create_namespaced_job.call_args[1]["body"][ "spec"]["template"]["spec"]["containers"][0]["args"] == [command]
def test_k8s_agent_deploy_flow(monkeypatch, runner_token): k8s_config = MagicMock() monkeypatch.setattr("kubernetes.config", k8s_config) batch_client = MagicMock() batch_client.create_namespaced_job.return_value = {} monkeypatch.setattr("kubernetes.client.BatchV1Api", MagicMock(retrurn_value=batch_client)) agent = KubernetesAgent() agent.deploy_flow(flow_run=GraphQLResult({ "flow": GraphQLResult({ "storage": Docker(registry_url="test", image_name="name", image_tag="tag").serialize(), "environment": RemoteEnvironment().serialize(), "id": "id", }), "id": "id", })) assert agent.batch_client.create_namespaced_job.called assert (agent.batch_client.create_namespaced_job.call_args[1]["namespace"] == "default") assert (agent.batch_client.create_namespaced_job.call_args[1]["body"] ["apiVersion"] == "batch/v1")
def test_k8s_agent_deploy_flow_uses_environment_metadata(monkeypatch, cloud_api): k8s_config = MagicMock() monkeypatch.setattr("kubernetes.config", k8s_config) batch_client = MagicMock() monkeypatch.setattr( "kubernetes.client.BatchV1Api", MagicMock(return_value=batch_client) ) core_client = MagicMock() core_client.list_namespaced_pod.return_value = MagicMock(items=[]) monkeypatch.setattr( "kubernetes.client.CoreV1Api", MagicMock(return_value=core_client) ) get_jobs = MagicMock(return_value=[]) monkeypatch.setattr( "prefect.agent.kubernetes.agent.KubernetesAgent.manage_jobs", get_jobs, ) agent = KubernetesAgent() agent.deploy_flow( flow_run=GraphQLResult( { "flow": GraphQLResult( { "storage": Local().serialize(), "environment": LocalEnvironment( metadata={"image": "repo/name:tag"} ).serialize(), "id": "id", "core_version": "0.13.0", } ), "id": "id", } ) ) assert agent.batch_client.create_namespaced_job.called assert ( agent.batch_client.create_namespaced_job.call_args[1]["body"]["spec"][ "template" ]["spec"]["containers"][0]["image"] == "repo/name:tag" )