2222from leptonai .api .v1 .types .common import LeptonVisibility , Metadata
2323from leptonai .api .v1 .types .deployment import (
2424 LeptonContainer ,
25- LeptonDeployment ,
26- LeptonDeploymentUserSpec ,
2725 LeptonResourceAffinity ,
2826 Mount ,
29- ResourceRequirement ,
3027)
31- from leptonai .api .v1 .types .job import LeptonJob
28+ from leptonai .api .v1 .types .job import LeptonJob , LeptonJobUserSpec
3229
3330from nemo_run .core .execution .lepton import LeptonExecutor , LeptonJobState
3431from nemo_run .core .packaging .git import GitArchivePackager
@@ -173,26 +170,23 @@ def test_copy_directory_data_command_fails(self, mock_tempdir):
173170 @patch ("nemo_run.core.execution.lepton.APIClient" )
174171 def test_move_data_success (self , mock_APIClient , mock_datetime , mock_copy ):
175172 mock_instance = MagicMock ()
176- mock_deployment_api = MagicMock ()
177- mock_instance .deployment = mock_deployment_api
178- mock_deployment_api .create = MagicMock ()
173+ mock_job_api = MagicMock ()
174+ mock_instance .job = mock_job_api
179175 mock_copy .return_value = ["sh" , "-c" , "echo 'hello world'" ]
180176 mock_APIClient .return_value = mock_instance
181177 mock_client = mock_APIClient .return_value
182178 mock_nodegroup = MagicMock ()
183- mock_datetime = MagicMock ()
184179 mock_datetime_now = MagicMock ()
185- mock_datetime .now = mock_datetime_now
186- mock_timestamp = MagicMock ()
187- mock_datetime_now .timestamp = MagicMock ()
188- mock_timestamp .return_value = "1"
180+ mock_datetime .now .return_value = mock_datetime_now
181+ mock_datetime_now .timestamp .return_value = 1
189182 mock_client .nodegroup = mock_nodegroup
190183 mock_nodegroup .list_all .return_value = [
191184 SimpleNamespace (metadata = SimpleNamespace (name = "123456" , id_ = "my-node-id" ))
192185 ]
193186 mock_nodegroup .list_nodes .return_value = [
194187 SimpleNamespace (metadata = SimpleNamespace (id_ = "10-10-10-10" ))
195188 ]
189+ mock_job_api .get .return_value = SimpleNamespace (status = SimpleNamespace (state = "Completed" ))
196190
197191 executor = LeptonExecutor (
198192 container_image = "nvcr.io/nvidia/test:latest" ,
@@ -203,32 +197,35 @@ def test_move_data_success(self, mock_APIClient, mock_datetime, mock_copy):
203197
204198 executor .move_data ()
205199
206- spec = LeptonDeploymentUserSpec (
207- container = LeptonContainer (
208- image = "busybox:1.37.0" ,
209- command = ["sh" , "-c" , "echo 'hello world'" ],
210- ),
211- mounts = [Mount (path = "/workspace" , mount_path = "/workspace" )],
212- )
213- spec .resource_requirement = ResourceRequirement (
200+ expected_cmd = ["sh" , "-c" , "echo 'hello world'" ]
201+ expected_spec = LeptonJobUserSpec (
214202 resource_shape = "cpu.small" ,
215203 affinity = LeptonResourceAffinity (
216204 allowed_dedicated_node_groups = ["my-node-id" ],
217205 allowed_nodes_in_node_group = ["10-10-10-10" ],
218206 ),
219- min_replicas = 1 ,
220- max_replicas = 1 ,
207+ container = LeptonContainer (
208+ image = "busybox:1.37.0" ,
209+ command = expected_cmd ,
210+ ),
211+ completions = 1 ,
212+ parallelism = 1 ,
213+ mounts = [Mount (path = "/workspace" , mount_path = "/workspace" )],
221214 )
215+
222216 custom_name = "data-mover-1"
223- deployment = LeptonDeployment (
217+ expected_job = LeptonJob (
224218 metadata = Metadata (
225- id = custom_name , name = custom_name , visibility = LeptonVisibility ("private" )
219+ id = custom_name ,
220+ name = custom_name ,
221+ visibility = LeptonVisibility ("private" ),
226222 ),
227- spec = spec ,
223+ spec = expected_spec ,
228224 )
229225
230- mock_copy .assert_called_once_with ("" , "" )
231- mock_deployment_api .create .assert_called_once_with (deployment )
226+ mock_copy .assert_called_once_with (executor .job_dir , executor .lepton_job_dir )
227+ mock_job_api .create .assert_called_once_with (expected_job )
228+ mock_job_api .delete .assert_called_once_with (mock_job_api .create .return_value .metadata .id_ )
232229
233230 def test_node_group_id (self ):
234231 mock_client = MagicMock (
0 commit comments