2
2
3
3
nvidia_version = "1.2.3"
4
4
SOURCE_DIR = 'SOURCE_DIR' . freeze
5
- nvidia_imex_shared_dir = "SHARED_DIR/nvidia-imex"
5
+ nvidia_imex_dir = "/etc/nvidia-imex"
6
+ imex_main_conf_file = "#{ nvidia_imex_dir } /config.cfg"
7
+ imex_nodes_conf_file = "#{ nvidia_imex_dir } /nodes_config.cfg"
8
+ imex_service_file = "/etc/systemd/system/nvidia-imex.service"
6
9
imex_binary = '/usr/bin/nvidia-imex'
7
10
imex_ctl_binary = '/usr/bin/nvidia-imex-ctl'
8
- queue_name = 'queue-name'
9
- compute_resource_name = 'compute-resource-name'
10
11
cluster_artifacts_s3_url = 'https://aws_region-aws-parallelcluster.s3.aws_region.AWS_DOMAIN'
11
12
12
13
class ConvergeNvidiaImex
@@ -18,6 +19,14 @@ def self.install(chef_run)
18
19
end
19
20
end
20
21
22
+ def self . create_configuration_files ( chef_run )
23
+ chef_run . converge_dsl ( 'aws-parallelcluster-platform' ) do
24
+ nvidia_imex 'create_configuration_files' do
25
+ action :create_configuration_files
26
+ end
27
+ end
28
+ end
29
+
21
30
def self . configure ( chef_run )
22
31
chef_run . converge_dsl ( 'aws-parallelcluster-platform' ) do
23
32
nvidia_imex 'configure' do
@@ -231,7 +240,7 @@ def self.configure(chef_run)
231
240
cached ( :node ) { chef_run . node }
232
241
233
242
before do
234
- chef_run . node . override [ 'cluster' ] [ 'nvidia' ] [ 'imex' ] [ 'shared_dir' ] = nvidia_imex_shared_dir
243
+ chef_run . node . override [ 'cluster' ] [ 'nvidia' ] [ 'imex' ] [ 'shared_dir' ] = nvidia_imex_dir
235
244
chef_run . node . override [ 'cluster' ] [ 'artifacts_s3_url' ] = cluster_artifacts_s3_url
236
245
chef_run . node . override [ 'cluster' ] [ 'region' ] = 'aws_region'
237
246
chef_run . node . override [ 'cluster' ] [ 'sources_dir' ] = SOURCE_DIR
@@ -241,7 +250,6 @@ def self.configure(chef_run)
241
250
end
242
251
if platform == 'amazon' && version == '2'
243
252
it 'does not install nvidia-imex' do
244
- is_expected . not_to create_directory ( nvidia_imex_shared_dir )
245
253
is_expected . not_to install_install_packages ( 'Install nvidia-imex' )
246
254
. with ( packages : "#{ nvidia_imex_name } " )
247
255
. with ( action : %i( install ) )
@@ -254,7 +262,6 @@ def self.configure(chef_run)
254
262
else
255
263
256
264
it 'installs nvidia-imex' do
257
- is_expected . to create_directory ( nvidia_imex_shared_dir )
258
265
if platform == 'ubuntu'
259
266
is_expected . to create_if_missing_remote_file ( "#{ SOURCE_DIR } /#{ nvidia_imex_package } -#{ nvidia_imex_version } .deb" ) . with (
260
267
source : "#{ cluster_artifacts_s3_url } /dependencies/nvidia_imex/#{ url_suffix } .deb" ,
@@ -294,6 +301,41 @@ def self.configure(chef_run)
294
301
end
295
302
end
296
303
304
+ describe 'nvidia_imex:create_configuration_files' do
305
+ for_all_oses do |platform , version |
306
+ context "on #{ platform } #{ version } " do
307
+ cached ( :chef_run ) do
308
+ runner = runner ( platform : platform , version : version , step_into : [ 'nvidia_imex' ] )
309
+ runner . node . override [ 'cluster' ] [ 'nvidia' ] [ 'imex' ] [ 'conf_dir' ] = nvidia_imex_dir
310
+ runner . node . override [ 'cluster' ] [ 'nvidia' ] [ 'imex' ] [ 'main_config' ] = imex_main_conf_file
311
+ runner . node . override [ 'cluster' ] [ 'nvidia' ] [ 'imex' ] [ 'nodes_config' ] = imex_nodes_conf_file
312
+ ConvergeNvidiaImex . create_configuration_files ( runner )
313
+ end
314
+ cached ( :node ) { chef_run . node }
315
+
316
+ it 'does create Imex configuration files' do
317
+ is_expected . to create_template ( "#{ imex_nodes_conf_file } " )
318
+ . with ( source : 'nvidia-imex/nvidia-imex-nodes.erb' )
319
+ . with ( user : 'root' )
320
+ . with ( group : 'root' )
321
+ . with ( mode : '0755' )
322
+ is_expected . to create_template ( "#{ imex_main_conf_file } " )
323
+ . with ( source : 'nvidia-imex/nvidia-imex-config.erb' )
324
+ . with ( user : 'root' )
325
+ . with ( group : 'root' )
326
+ . with ( mode : '0755' )
327
+ . with ( variables : { imex_nodes_config_file_path : "#{ imex_nodes_conf_file } " } )
328
+ is_expected . to create_template ( imex_service_file )
329
+ . with ( source : 'nvidia-imex/nvidia-imex.service.erb' )
330
+ . with ( user : 'root' )
331
+ . with ( group : 'root' )
332
+ . with ( mode : '0644' )
333
+ . with ( variables : { imex_main_config_file_path : "#{ imex_main_conf_file } " } )
334
+ end
335
+ end
336
+ end
337
+ end
338
+
297
339
describe 'nvidia_imex:configure' do
298
340
[ %w( false ) , [ false ] , %w( no ) , %w( true ) , [ true ] , %w( yes ) ] . each do |force_indicator |
299
341
for_all_oses do |platform , version |
@@ -329,54 +371,30 @@ def self.configure(chef_run)
329
371
before do
330
372
chef_run . node . override [ 'cluster' ] [ 'region' ] = 'aws_region'
331
373
chef_run . node . override [ 'cluster' ] [ 'nvidia' ] [ 'imex' ] [ 'force_configuration' ] = force_indicator
332
- chef_run . node . override [ 'cluster' ] [ 'nvidia' ] [ 'imex' ] [ 'shared_dir' ] = nvidia_imex_shared_dir
374
+ chef_run . node . override [ 'cluster' ] [ 'nvidia' ] [ 'imex' ] [ 'conf_dir' ] = nvidia_imex_dir
375
+ chef_run . node . override [ 'cluster' ] [ 'nvidia' ] [ 'imex' ] [ 'main_config' ] = imex_main_conf_file
376
+ chef_run . node . override [ 'cluster' ] [ 'nvidia' ] [ 'imex' ] [ 'nodes_config' ] = imex_nodes_conf_file
333
377
chef_run . node . override [ 'cluster' ] [ 'node_type' ] = node_type
334
- chef_run . node . override [ 'cluster' ] [ 'scheduler_queue_name' ] = queue_name
335
- chef_run . node . override [ 'cluster' ] [ 'scheduler_compute_resource_name' ] = compute_resource_name
336
378
337
379
ConvergeNvidiaImex . configure ( chef_run )
338
380
end
339
381
340
382
if ( platform == 'amazon' && version == '2' ) || %w( HeadNode LoginNode ) . include? ( node_type )
341
383
it 'does not configure nvidia-imex' do
342
- is_expected . not_to create_if_missing_template ( "#{ nvidia_imex_shared_dir } /nodes_config_ #{ queue_name } _ #{ compute_resource_name } .cfg " )
384
+ is_expected . not_to create_if_missing_template ( "#{ imex_nodes_conf_file } " )
343
385
. with ( source : 'nvidia-imex/nvidia-imex-nodes.erb' )
344
386
. with ( user : 'root' )
345
387
. with ( group : 'root' )
346
388
. with ( mode : '0755' )
347
- is_expected . not_to create_if_missing_template ( "#{ nvidia_imex_shared_dir } /config_#{ queue_name } _#{ compute_resource_name } .cfg" )
348
- . with ( source : 'nvidia-imex/nvidia-imex-config.erb' )
349
- . with ( user : 'root' )
350
- . with ( group : 'root' )
351
- . with ( mode : '0755' )
352
- . with ( variables : { imex_nodes_config_file_path : "#{ nvidia_imex_shared_dir } /nodes_config_#{ queue_name } _#{ compute_resource_name } .cfg" } )
353
- is_expected . not_to create_template ( "/etc/systemd/system/nvidia-imex.service" )
354
- . with ( source : 'nvidia-imex/nvidia-imex.service.erb' )
355
- . with ( user : 'root' )
356
- . with ( group : 'root' )
357
- . with ( mode : '0644' )
358
- . with ( variables : { imex_main_config_file_path : "#{ nvidia_imex_shared_dir } /config_#{ queue_name } _#{ compute_resource_name } .cfg" } )
359
389
is_expected . not_to start_service ( 'nvidia-imex' ) . with_action ( %i( enable start ) ) . with_supports ( { status : true } )
360
390
end
361
391
else
362
392
it 'it starts nvidia-imex service' do
363
- is_expected . to create_if_missing_template ( "#{ nvidia_imex_shared_dir } /nodes_config_ #{ queue_name } _ #{ compute_resource_name } .cfg " )
393
+ is_expected . to create_if_missing_template ( "#{ imex_nodes_conf_file } " )
364
394
. with ( source : 'nvidia-imex/nvidia-imex-nodes.erb' )
365
395
. with ( user : 'root' )
366
396
. with ( group : 'root' )
367
397
. with ( mode : '0755' )
368
- is_expected . to create_if_missing_template ( "#{ nvidia_imex_shared_dir } /config_#{ queue_name } _#{ compute_resource_name } .cfg" )
369
- . with ( source : 'nvidia-imex/nvidia-imex-config.erb' )
370
- . with ( user : 'root' )
371
- . with ( group : 'root' )
372
- . with ( mode : '0755' )
373
- . with ( variables : { imex_nodes_config_file_path : "#{ nvidia_imex_shared_dir } /nodes_config_#{ queue_name } _#{ compute_resource_name } .cfg" } )
374
- is_expected . to create_template ( "/etc/systemd/system/nvidia-imex.service" )
375
- . with ( source : 'nvidia-imex/nvidia-imex.service.erb' )
376
- . with ( user : 'root' )
377
- . with ( group : 'root' )
378
- . with ( mode : '0644' )
379
- . with ( variables : { imex_main_config_file_path : "#{ nvidia_imex_shared_dir } /config_#{ queue_name } _#{ compute_resource_name } .cfg" } )
380
398
is_expected . to start_service ( 'nvidia-imex' ) . with_action ( %i( enable start ) ) . with_supports ( { status : true } )
381
399
end
382
400
end
0 commit comments