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,6 @@ 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
235
243
chef_run . node . override [ 'cluster' ] [ 'artifacts_s3_url' ] = cluster_artifacts_s3_url
236
244
chef_run . node . override [ 'cluster' ] [ 'region' ] = 'aws_region'
237
245
chef_run . node . override [ 'cluster' ] [ 'sources_dir' ] = SOURCE_DIR
@@ -241,7 +249,6 @@ def self.configure(chef_run)
241
249
end
242
250
if platform == 'amazon' && version == '2'
243
251
it 'does not install nvidia-imex' do
244
- is_expected . not_to create_directory ( nvidia_imex_shared_dir )
245
252
is_expected . not_to install_install_packages ( 'Install nvidia-imex' )
246
253
. with ( packages : "#{ nvidia_imex_name } " )
247
254
. with ( action : %i( install ) )
@@ -254,7 +261,6 @@ def self.configure(chef_run)
254
261
else
255
262
256
263
it 'installs nvidia-imex' do
257
- is_expected . to create_directory ( nvidia_imex_shared_dir )
258
264
if platform == 'ubuntu'
259
265
is_expected . to create_if_missing_remote_file ( "#{ SOURCE_DIR } /#{ nvidia_imex_package } -#{ nvidia_imex_version } .deb" ) . with (
260
266
source : "#{ cluster_artifacts_s3_url } /dependencies/nvidia_imex/#{ url_suffix } .deb" ,
@@ -294,6 +300,38 @@ def self.configure(chef_run)
294
300
end
295
301
end
296
302
303
+ describe 'nvidia_imex:create_configuration_files' do
304
+ for_all_oses do |platform , version |
305
+ context "on #{ platform } #{ version } " do
306
+ cached ( :chef_run ) do
307
+ runner = runner ( platform : platform , version : version , step_into : [ 'nvidia_imex' ] )
308
+ ConvergeNvidiaImex . create_configuration_files ( runner )
309
+ end
310
+ cached ( :node ) { chef_run . node }
311
+
312
+ it 'does create Imex configuration files' do
313
+ is_expected . to create_template ( "#{ imex_nodes_conf_file } " )
314
+ . with ( source : 'nvidia-imex/nvidia-imex-nodes.erb' )
315
+ . with ( user : 'root' )
316
+ . with ( group : 'root' )
317
+ . with ( mode : '0755' )
318
+ is_expected . to create_template ( "#{ imex_main_conf_file } " )
319
+ . with ( source : 'nvidia-imex/nvidia-imex-config.erb' )
320
+ . with ( user : 'root' )
321
+ . with ( group : 'root' )
322
+ . with ( mode : '0755' )
323
+ . with ( variables : { imex_nodes_config_file_path : "#{ imex_nodes_conf_file } " } )
324
+ is_expected . to create_template ( imex_service_file )
325
+ . with ( source : 'nvidia-imex/nvidia-imex.service.erb' )
326
+ . with ( user : 'root' )
327
+ . with ( group : 'root' )
328
+ . with ( mode : '0644' )
329
+ . with ( variables : { imex_main_config_file_path : "#{ imex_main_conf_file } " } )
330
+ end
331
+ end
332
+ end
333
+ end
334
+
297
335
describe 'nvidia_imex:configure' do
298
336
[ %w( false ) , [ false ] , %w( no ) , %w( true ) , [ true ] , %w( yes ) ] . each do |force_indicator |
299
337
for_all_oses do |platform , version |
@@ -329,54 +367,27 @@ def self.configure(chef_run)
329
367
before do
330
368
chef_run . node . override [ 'cluster' ] [ 'region' ] = 'aws_region'
331
369
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
333
370
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
371
337
372
ConvergeNvidiaImex . configure ( chef_run )
338
373
end
339
374
340
375
if ( platform == 'amazon' && version == '2' ) || %w( HeadNode LoginNode ) . include? ( node_type )
341
376
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 " )
377
+ is_expected . not_to create_if_missing_template ( "#{ imex_nodes_conf_file } " )
343
378
. with ( source : 'nvidia-imex/nvidia-imex-nodes.erb' )
344
379
. with ( user : 'root' )
345
380
. with ( group : 'root' )
346
381
. 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
382
is_expected . not_to start_service ( 'nvidia-imex' ) . with_action ( %i( enable start ) ) . with_supports ( { status : true } )
360
383
end
361
384
else
362
385
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 " )
386
+ is_expected . to create_if_missing_template ( "#{ imex_nodes_conf_file } " )
364
387
. with ( source : 'nvidia-imex/nvidia-imex-nodes.erb' )
365
388
. with ( user : 'root' )
366
389
. with ( group : 'root' )
367
390
. 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
391
is_expected . to start_service ( 'nvidia-imex' ) . with_action ( %i( enable start ) ) . with_supports ( { status : true } )
381
392
end
382
393
end
0 commit comments