File tree Expand file tree Collapse file tree 7 files changed +66
-0
lines changed Expand file tree Collapse file tree 7 files changed +66
-0
lines changed Original file line number Diff line number Diff line change 6464*  [ ` download ` ] ( #download ) : Download a file using curl
6565*  [ ` enable_replica ` ] ( #enable_replica ) : Execute the enable replica puppet command
6666*  [ ` filesize ` ] ( #filesize ) : Return the size of a file in bytes
67+ *  [ ` get_group_rules ` ] ( #get_group_rules ) : Run on a PE primary node to return the rules currently applied to the PE Infrastructure Agent group
6768*  [ ` get_peadm_config ` ] ( #get_peadm_config ) : Run on a PE primary node to return the currently configured PEAdm parameters
6869*  [ ` get_psql_version ` ] ( #get_psql_version ) : Run on a PE PSQL node to return the major version of the PSQL server currently installed
6970*  [ ` infrastatus ` ] ( #infrastatus ) : Runs puppet infra status and returns the output
@@ -1185,6 +1186,12 @@ Data type: `String`
11851186
11861187Path to the file to return the size of
11871188
1189+ ### <a  name =" get_group_rules " ></a >` get_group_rules `   
1190+ 
1191+ Run on a PE primary node to return the rules currently applied to the PE Infrastructure Agent group
1192+ 
1193+ ** Supports noop?**  false
1194+ 
11881195### <a  name =" get_peadm_config " ></a >` get_peadm_config `   
11891196
11901197Run on a PE primary node to return the currently configured PEAdm parameters
Original file line number Diff line number Diff line change 261261    #  the existing groups are correct enough to function until the upgrade is
262262    #  performed.
263263    if  (versioncmp($pe_version , ' 2019.7.0' 
264+       $rules  = run_task(' peadm::get_group_rules' $primary_target ).first.value[' _output' 
265+       $rules_formatted  = stdlib::to_json_pretty(parsejson($rules ))
266+       out::message("WARNING:  The following existing rules on the PE Infrastructure Agent group will be overwritten with default values:\n ${rules_formatted} " )
267+ 
264268      apply($primary_target ) { 
265269        class { 'peadm::setup::node_manager_yaml': 
266270          primary_host => $primary_target .peadm::certname(), 
Original file line number Diff line number Diff line change 326326      default                                       => $primary_postgresql_target .peadm::certname(),
327327    }
328328
329+     $rules  = run_task(' peadm::get_group_rules' $primary_target ).first.value[' _output' 
330+     $rules_formatted  = stdlib::to_json_pretty(parsejson($rules ))
331+     out::message("WARNING:  The following existing rules on the PE Infrastructure Agent group will be overwritten with default values:\n ${rules_formatted} " )
332+ 
329333    apply($primary_target ) { 
330334      class { 'peadm::setup::node_manager_yaml': 
331335        primary_host => $primary_target .peadm::certname(), 
Original file line number Diff line number Diff line change 2020
2121    expect_task ( 'peadm::cert_data' ) . return_for_targets ( 'primary'  =>  trustedjson ) 
2222    expect_task ( 'peadm::read_file' ) . always_return ( {  'content'  =>  '2021.7.9'  } ) 
23+     expect_task ( 'peadm::get_group_rules' ) . return_for_targets ( 'primary'  =>  {  '_output'  =>  '{"rules": []}'  } ) 
2324
2425    # For some reason, expect_plan() was not working?? 
2526    allow_plan ( 'peadm::modify_certificate' ) . always_return ( { } ) 
Original file line number Diff line number Diff line change @@ -22,6 +22,7 @@ def allow_standard_non_returning_calls
2222
2323  it  'minimum variables to run'  do 
2424    allow_standard_non_returning_calls 
25+     expect_task ( 'peadm::get_group_rules' ) . return_for_targets ( 'primary'  =>  {  '_output'  =>  '{"rules": []}'  } ) 
2526
2627    expect_task ( 'peadm::read_file' ) 
2728      . with_params ( 'path'  =>  '/opt/puppetlabs/server/pe_build' ) 
@@ -36,6 +37,7 @@ def allow_standard_non_returning_calls
3637
3738  it  'runs with a primary, compilers, but no replica'  do 
3839    allow_standard_non_returning_calls 
40+     expect_task ( 'peadm::get_group_rules' ) . return_for_targets ( 'primary'  =>  {  '_output'  =>  '{"rules": []}'  } ) 
3941
4042    expect_task ( 'peadm::read_file' ) 
4143      . with_params ( 'path'  =>  '/opt/puppetlabs/server/pe_build' ) 
@@ -92,6 +94,7 @@ def allow_standard_non_returning_calls
9294        . always_return ( {  'content'  =>  installed_version  } ) 
9395
9496      expect_task ( 'peadm::cert_data' ) . return_for_targets ( 'primary'  =>  trusted_primary ) 
97+       expect_task ( 'peadm::get_group_rules' ) . return_for_targets ( 'primary'  =>  {  '_output'  =>  '{"rules": []}'  } ) 
9598    end 
9699
97100    it  'updates pe.conf if r10k_known_hosts is set'  do 
Original file line number Diff line number Diff line change 1+ {
2+   "description" : " Run on a PE primary node to return the rules currently applied to the PE Infrastructure Agent group" 
3+   "parameters" : { },
4+   "input_method" : " stdin" 
5+ }
Original file line number Diff line number Diff line change 1+ #!/opt/puppetlabs/puppet/bin/ruby 
2+ # frozen_string_literal: true 
3+ 
4+ require  'json' 
5+ require  'net/http' 
6+ require  'puppet' 
7+ 
8+ # GetInfrastructureAgentGroupRules task class 
9+ class  GetInfrastructureAgentGroupRules 
10+   def  execute! 
11+     infrastructure_agent_group  =  groups . find  {  |obj | obj [ 'name' ]  == 'PE Infrastructure Agent'  } 
12+     if  infrastructure_agent_group 
13+       puts  JSON . pretty_generate ( infrastructure_agent_group [ 'rule' ] ) 
14+     else 
15+       puts  JSON . pretty_generate ( {  'error'  =>  'PE Infrastructure Agent group does not exist'  } ) 
16+     end 
17+   end 
18+ 
19+   def  groups 
20+     net  =  https ( 4433 ) 
21+     res  =  net . get ( '/classifier-api/v1/groups' ) 
22+     JSON . parse ( res . body ) 
23+   end 
24+ 
25+   def  https ( port ) 
26+     https  =  Net ::HTTP . new ( Puppet . settings [ :certname ] ,  port ) 
27+     https . use_ssl  =  true 
28+     https . cert  =  OpenSSL ::X509 ::Certificate . new ( File . read ( Puppet . settings [ :hostcert ] ) ) 
29+     https . key  =  OpenSSL ::PKey ::RSA . new ( File . read ( Puppet . settings [ :hostprivkey ] ) ) 
30+     https . verify_mode  =  OpenSSL ::SSL ::VERIFY_PEER 
31+     https . ca_file  =  Puppet . settings [ :localcacert ] 
32+     https 
33+   end 
34+ end 
35+ 
36+ # Run the task unless an environment flag has been set, signaling not to. The 
37+ # environment flag is used to disable auto-execution and enable Ruby unit 
38+ # testing of this task. 
39+ unless  ENV [ 'RSPEC_UNIT_TEST_MODE' ] 
40+   Puppet . initialize_settings 
41+   GetInfrastructureAgentGroupRules . new . execute! 
42+ end 
 
 
   
 
     
   
   
          
    
    
     
    
      
     
     
    You can’t perform that action at this time.
  
 
    
  
    
      
        
     
       
      
     
   
 
    
    
  
 
  
 
     
    
0 commit comments