22
33nvidia_version = "1.2.3"
44SOURCE_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"
69imex_binary = '/usr/bin/nvidia-imex'
710imex_ctl_binary = '/usr/bin/nvidia-imex-ctl'
8- queue_name = 'queue-name'
9- compute_resource_name = 'compute-resource-name'
1011cluster_artifacts_s3_url = 'https://aws_region-aws-parallelcluster.s3.aws_region.AWS_DOMAIN'
1112
1213class ConvergeNvidiaImex
@@ -18,6 +19,14 @@ def self.install(chef_run)
1819 end
1920 end
2021
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+
2130 def self . configure ( chef_run )
2231 chef_run . converge_dsl ( 'aws-parallelcluster-platform' ) do
2332 nvidia_imex 'configure' do
@@ -231,7 +240,6 @@ def self.configure(chef_run)
231240 cached ( :node ) { chef_run . node }
232241
233242 before do
234- chef_run . node . override [ 'cluster' ] [ 'nvidia' ] [ 'imex' ] [ 'shared_dir' ] = nvidia_imex_shared_dir
235243 chef_run . node . override [ 'cluster' ] [ 'artifacts_s3_url' ] = cluster_artifacts_s3_url
236244 chef_run . node . override [ 'cluster' ] [ 'region' ] = 'aws_region'
237245 chef_run . node . override [ 'cluster' ] [ 'sources_dir' ] = SOURCE_DIR
@@ -241,7 +249,6 @@ def self.configure(chef_run)
241249 end
242250 if platform == 'amazon' && version == '2'
243251 it 'does not install nvidia-imex' do
244- is_expected . not_to create_directory ( nvidia_imex_shared_dir )
245252 is_expected . not_to install_install_packages ( 'Install nvidia-imex' )
246253 . with ( packages : "#{ nvidia_imex_name } " )
247254 . with ( action : %i( install ) )
@@ -254,7 +261,6 @@ def self.configure(chef_run)
254261 else
255262
256263 it 'installs nvidia-imex' do
257- is_expected . to create_directory ( nvidia_imex_shared_dir )
258264 if platform == 'ubuntu'
259265 is_expected . to create_if_missing_remote_file ( "#{ SOURCE_DIR } /#{ nvidia_imex_package } -#{ nvidia_imex_version } .deb" ) . with (
260266 source : "#{ cluster_artifacts_s3_url } /dependencies/nvidia_imex/#{ url_suffix } .deb" ,
@@ -294,6 +300,38 @@ def self.configure(chef_run)
294300 end
295301end
296302
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+
297335describe 'nvidia_imex:configure' do
298336 [ %w( false ) , [ false ] , %w( no ) , %w( true ) , [ true ] , %w( yes ) ] . each do |force_indicator |
299337 for_all_oses do |platform , version |
@@ -329,54 +367,27 @@ def self.configure(chef_run)
329367 before do
330368 chef_run . node . override [ 'cluster' ] [ 'region' ] = 'aws_region'
331369 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
333370 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
336371
337372 ConvergeNvidiaImex . configure ( chef_run )
338373 end
339374
340375 if ( platform == 'amazon' && version == '2' ) || %w( HeadNode LoginNode ) . include? ( node_type )
341376 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 } " )
343378 . with ( source : 'nvidia-imex/nvidia-imex-nodes.erb' )
344379 . with ( user : 'root' )
345380 . with ( group : 'root' )
346381 . 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" } )
359382 is_expected . not_to start_service ( 'nvidia-imex' ) . with_action ( %i( enable start ) ) . with_supports ( { status : true } )
360383 end
361384 else
362385 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 } " )
364387 . with ( source : 'nvidia-imex/nvidia-imex-nodes.erb' )
365388 . with ( user : 'root' )
366389 . with ( group : 'root' )
367390 . 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" } )
380391 is_expected . to start_service ( 'nvidia-imex' ) . with_action ( %i( enable start ) ) . with_supports ( { status : true } )
381392 end
382393 end
0 commit comments