ansible_spec 0.2.24 → 0.2.25
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/CHANGELOG.md +3 -0
- data/lib/ansible_spec/load_ansible.rb +35 -3
- data/lib/ansible_spec/version.rb +1 -1
- data/spec/case/get_variable/group_each_vars_parent_child/group_vars/all.yml +6 -0
- data/spec/case/get_variable/group_each_vars_parent_child/group_vars/group1/vars +4 -0
- data/spec/case/get_variable/group_each_vars_parent_child/group_vars/group2/vars +4 -0
- data/spec/case/get_variable/group_each_vars_parent_child/group_vars/parentgroup/vars +5 -0
- data/spec/case/get_variable/group_each_vars_parent_child/hosts +13 -0
- data/spec/case/get_variable/group_each_vars_parent_child/site.yml +6 -0
- data/spec/case/get_variable/group_each_vars_parent_child/site1.yml +6 -0
- data/spec/case/get_variable/group_each_vars_parent_child/site2.yml +6 -0
- data/spec/case/get_variable/group_each_vars_parent_child/site3.yml +6 -0
- data/spec/get_variable_spec.rb +108 -0
- data/spec/load_ansible_spec.rb +223 -0
- metadata +20 -2
    
        checksums.yaml
    CHANGED
    
    | @@ -1,7 +1,7 @@ | |
| 1 1 | 
             
            ---
         | 
| 2 2 | 
             
            SHA256:
         | 
| 3 | 
            -
              metadata.gz:  | 
| 4 | 
            -
              data.tar.gz:  | 
| 3 | 
            +
              metadata.gz: c590bfdd84716132e5a14c1ac3aa372aada32bbbc6f5e80e20c412db07cdcd48
         | 
| 4 | 
            +
              data.tar.gz: bc136b7cc0ee1af57b2d9b4183de15b0efe20747b36b8cf023d4a5c3f6b51873
         | 
| 5 5 | 
             
            SHA512:
         | 
| 6 | 
            -
              metadata.gz:  | 
| 7 | 
            -
              data.tar.gz:  | 
| 6 | 
            +
              metadata.gz: adfac09e9e273d179093a7d9aed9bec84b67cca40136958d6b387d6e2454370f2d1ebb3fc918d3ee508ad97b1e124da5b553c349596f1ab5e8372fb7792d33f8
         | 
| 7 | 
            +
              data.tar.gz: aaea9c5fc67e8d9bf3f4966ba4673baac23229cc78a6d4e1a7cdee360eec7fc48920d50eed0d5c3f080583afe65677d3b73bda2925c64b35e7188e7cd8bf758d
         | 
    
        data/CHANGELOG.md
    CHANGED
    
    | @@ -1,3 +1,6 @@ | |
| 1 | 
            +
            # v0.2.25
         | 
| 2 | 
            +
            - Merge [#118 Incorporate group parent child relationships into variable assignment hierarchy](https://github.com/volanja/ansible_spec/pull/118) by [rbramwell](https://github.com/rbramwell)
         | 
| 3 | 
            +
             | 
| 1 4 | 
             
            # v0.2.24
         | 
| 2 5 | 
             
            - Merge [#117 Feature resolve variables](https://github.com/volanja/ansible_spec/pull/117) by [RebelCodeBase](https://github.com/RebelCodeBase)
         | 
| 3 6 |  | 
| @@ -8,9 +8,15 @@ require 'ansible_spec/vendor/hash' | |
| 8 8 |  | 
| 9 9 | 
             
            module AnsibleSpec
         | 
| 10 10 | 
             
              # param: inventory file of Ansible
         | 
| 11 | 
            +
              # param: return_type 'groups' or 'groups_parent_child_relationships'
         | 
| 11 12 | 
             
              # return: Hash {"group" => ["192.168.0.1","192.168.0.2"]}
         | 
| 12 13 | 
             
              # return: Hash {"group" => [{"name" => "192.168.0.1","uri" => "192.168.0.1", "port" => 22},...]}
         | 
| 13 | 
            -
               | 
| 14 | 
            +
              # return: Hash {"pg" => ["server", "databases"]}
         | 
| 15 | 
            +
              def self.load_targets(file, return_type = 'groups')
         | 
| 16 | 
            +
                if not ['groups', 'groups_parent_child_relationships'].include?(return_type)
         | 
| 17 | 
            +
                  raise ArgumentError, "Variable return_type must be value 'groups' or 'groups_parent_child_relationships'"
         | 
| 18 | 
            +
                end
         | 
| 19 | 
            +
             | 
| 14 20 | 
             
                if File.executable?(file)
         | 
| 15 21 | 
             
                  return get_dynamic_inventory(file)
         | 
| 16 22 | 
             
                end
         | 
| @@ -67,8 +73,12 @@ module AnsibleSpec | |
| 67 73 |  | 
| 68 74 | 
             
                # parse children [group:children]
         | 
| 69 75 | 
             
                search = Regexp.new(":children".to_s)
         | 
| 76 | 
            +
                groups_parent_child_relationships = Hash.new
         | 
| 70 77 | 
             
                groups.keys.each{|k|
         | 
| 71 78 | 
             
                  unless (k =~ search).nil?
         | 
| 79 | 
            +
                    # get parent child relationships
         | 
| 80 | 
            +
                    k_parent = k.gsub(search,'')
         | 
| 81 | 
            +
                    groups_parent_child_relationships["#{k_parent}"] = groups["#{k}"]
         | 
| 72 82 | 
             
                    # get group parent & merge parent
         | 
| 73 83 | 
             
                    groups.merge!(get_parent(groups,search,k))
         | 
| 74 84 | 
             
                    # delete group children
         | 
| @@ -77,7 +87,15 @@ module AnsibleSpec | |
| 77 87 | 
             
                    end
         | 
| 78 88 | 
             
                  end
         | 
| 79 89 | 
             
                }
         | 
| 80 | 
            -
             | 
| 90 | 
            +
             | 
| 91 | 
            +
                return_value = groups # default
         | 
| 92 | 
            +
                if return_type == 'groups'
         | 
| 93 | 
            +
                  return_value = groups
         | 
| 94 | 
            +
                elsif return_type == 'groups_parent_child_relationships'
         | 
| 95 | 
            +
                  return_value = groups_parent_child_relationships
         | 
| 96 | 
            +
                end
         | 
| 97 | 
            +
             | 
| 98 | 
            +
                return return_value
         | 
| 81 99 | 
             
              end
         | 
| 82 100 |  | 
| 83 101 | 
             
              # param  hash   {"server"=>["192.168.0.103"], "databases"=>["192.168.0.104"], "pg:children"=>["server", "databases"]}
         | 
| @@ -488,7 +506,21 @@ module AnsibleSpec | |
| 488 506 |  | 
| 489 507 | 
             
                # each group vars
         | 
| 490 508 | 
             
                if p[group_idx].has_key?('group')
         | 
| 491 | 
            -
                   | 
| 509 | 
            +
                  # get groups parent child relationships
         | 
| 510 | 
            +
                  playbook, inventoryfile = load_ansiblespec
         | 
| 511 | 
            +
                  groups_rels = load_targets(inventoryfile, return_type='groups_parent_child_relationships')
         | 
| 512 | 
            +
                  # get parental lineage
         | 
| 513 | 
            +
                  g = p[group_idx]['group']
         | 
| 514 | 
            +
                  groups_stack = Array.new
         | 
| 515 | 
            +
                  groups_stack << g
         | 
| 516 | 
            +
                  groups_rels.keys.each{|k|
         | 
| 517 | 
            +
                    groups_stack << k if (groups_rels[k].include?(g))
         | 
| 518 | 
            +
                  }
         | 
| 519 | 
            +
                  # get vars from parents groups then child group
         | 
| 520 | 
            +
                  groups_parents_then_child = groups_stack.reverse.flatten
         | 
| 521 | 
            +
                  groups_parents_then_child.each{|group|
         | 
| 522 | 
            +
                    vars = load_vars_file(vars ,"#{vars_dirs_path}group_vars/#{group}", true)
         | 
| 523 | 
            +
                  }
         | 
| 492 524 | 
             
                end
         | 
| 493 525 |  | 
| 494 526 | 
             
                # each host vars
         | 
    
        data/lib/ansible_spec/version.rb
    CHANGED
    
    
    
        data/spec/get_variable_spec.rb
    CHANGED
    
    | @@ -254,6 +254,114 @@ describe "get_variablesの実行" do | |
| 254 254 | 
             
                end
         | 
| 255 255 | 
             
              end
         | 
| 256 256 |  | 
| 257 | 
            +
              context 'Correct operation : group vars for group1 hosts ' do
         | 
| 258 | 
            +
                before do
         | 
| 259 | 
            +
                  @current_dir = Dir.pwd()
         | 
| 260 | 
            +
                  Dir.chdir('spec/case/get_variable/group_each_vars_parent_child/')
         | 
| 261 | 
            +
                  ENV["PLAYBOOK"] = 'site1.yml'
         | 
| 262 | 
            +
                  ENV["INVENTORY"] = 'hosts'
         | 
| 263 | 
            +
                  ENV["VARS_DIRS_PATH"] = ''
         | 
| 264 | 
            +
                  @res = AnsibleSpec.get_variables("192.168.1.1", 0, "group1")
         | 
| 265 | 
            +
                end
         | 
| 266 | 
            +
             | 
| 267 | 
            +
                it 'res is hash' do
         | 
| 268 | 
            +
                  expect(@res.instance_of?(Hash)).to be_truthy
         | 
| 269 | 
            +
                end
         | 
| 270 | 
            +
             | 
| 271 | 
            +
                it 'exist 6 pair in Hash' do
         | 
| 272 | 
            +
                  expect(@res.length).to eq 6
         | 
| 273 | 
            +
                end
         | 
| 274 | 
            +
             | 
| 275 | 
            +
                it 'exist each pair' do
         | 
| 276 | 
            +
                  expect(@res).to include( {"role_var"=>"group1"},
         | 
| 277 | 
            +
                                           {"site_var"=>"group1"},
         | 
| 278 | 
            +
                                           {"host_var"=>"group1"},
         | 
| 279 | 
            +
                                           {"group_var"=>"group1"},
         | 
| 280 | 
            +
                                           {"group_var_parent"=>"parentgroup"},
         | 
| 281 | 
            +
                                           {"group_all_var"=>"group all"}
         | 
| 282 | 
            +
                                         )
         | 
| 283 | 
            +
                end
         | 
| 284 | 
            +
             | 
| 285 | 
            +
                after do
         | 
| 286 | 
            +
                  ENV.delete('PLAYBOOK')
         | 
| 287 | 
            +
                  ENV.delete('INVENTORY')
         | 
| 288 | 
            +
                  ENV.delete('VARS_DIRS_PATH')
         | 
| 289 | 
            +
                  Dir.chdir(@current_dir)
         | 
| 290 | 
            +
                end
         | 
| 291 | 
            +
              end
         | 
| 292 | 
            +
             | 
| 293 | 
            +
              context 'Correct operation : group vars for group2 hosts ' do
         | 
| 294 | 
            +
                before do
         | 
| 295 | 
            +
                  @current_dir = Dir.pwd()
         | 
| 296 | 
            +
                  Dir.chdir('spec/case/get_variable/group_each_vars_parent_child/')
         | 
| 297 | 
            +
                  ENV["PLAYBOOK"] = 'site2.yml'
         | 
| 298 | 
            +
                  ENV["INVENTORY"] = 'hosts'
         | 
| 299 | 
            +
                  ENV["VARS_DIRS_PATH"] = ''
         | 
| 300 | 
            +
                  @res = AnsibleSpec.get_variables("192.168.1.2", 0, "group2")
         | 
| 301 | 
            +
                end
         | 
| 302 | 
            +
             | 
| 303 | 
            +
                it 'res is hash' do
         | 
| 304 | 
            +
                  expect(@res.instance_of?(Hash)).to be_truthy
         | 
| 305 | 
            +
                end
         | 
| 306 | 
            +
             | 
| 307 | 
            +
                it 'exist 6 pair in Hash' do
         | 
| 308 | 
            +
                  expect(@res.length).to eq 6
         | 
| 309 | 
            +
                end
         | 
| 310 | 
            +
             | 
| 311 | 
            +
                it 'exist each pair' do
         | 
| 312 | 
            +
                  expect(@res).to include( {"role_var"=>"group2"},
         | 
| 313 | 
            +
                                           {"site_var"=>"group2"},
         | 
| 314 | 
            +
                                           {"host_var"=>"group2"},
         | 
| 315 | 
            +
                                           {"group_var"=>"group2"},
         | 
| 316 | 
            +
                                           {"group_var_parent"=>"parentgroup"},
         | 
| 317 | 
            +
                                           {"group_all_var"=>"group all"}
         | 
| 318 | 
            +
                                         )
         | 
| 319 | 
            +
                end
         | 
| 320 | 
            +
             | 
| 321 | 
            +
                after do
         | 
| 322 | 
            +
                  ENV.delete('PLAYBOOK')
         | 
| 323 | 
            +
                  ENV.delete('INVENTORY')
         | 
| 324 | 
            +
                  ENV.delete('VARS_DIRS_PATH')
         | 
| 325 | 
            +
                  Dir.chdir(@current_dir)
         | 
| 326 | 
            +
                end
         | 
| 327 | 
            +
              end
         | 
| 328 | 
            +
             | 
| 329 | 
            +
              context 'Correct operation : group vars for parentgroup hosts ' do
         | 
| 330 | 
            +
                before do
         | 
| 331 | 
            +
                  @current_dir = Dir.pwd()
         | 
| 332 | 
            +
                  Dir.chdir('spec/case/get_variable/group_each_vars_parent_child/')
         | 
| 333 | 
            +
                  ENV["PLAYBOOK"] = 'site3.yml'
         | 
| 334 | 
            +
                  ENV["INVENTORY"] = 'hosts'
         | 
| 335 | 
            +
                  ENV["VARS_DIRS_PATH"] = ''
         | 
| 336 | 
            +
                  @res = AnsibleSpec.get_variables("192.168.1.1", 0, "parentgroup")
         | 
| 337 | 
            +
                end
         | 
| 338 | 
            +
             | 
| 339 | 
            +
                it 'res is hash' do
         | 
| 340 | 
            +
                  expect(@res.instance_of?(Hash)).to be_truthy
         | 
| 341 | 
            +
                end
         | 
| 342 | 
            +
             | 
| 343 | 
            +
                it 'exist 6 pair in Hash' do
         | 
| 344 | 
            +
                  expect(@res.length).to eq 6
         | 
| 345 | 
            +
                end
         | 
| 346 | 
            +
             | 
| 347 | 
            +
                it 'exist each pair' do
         | 
| 348 | 
            +
                  expect(@res).to include( {"role_var"=>"parentgroup"},
         | 
| 349 | 
            +
                                           {"site_var"=>"parentgroup"},
         | 
| 350 | 
            +
                                           {"host_var"=>"parentgroup"},
         | 
| 351 | 
            +
                                           {"group_var"=>"parentgroup"},
         | 
| 352 | 
            +
                                           {"group_var_parent"=>"parentgroup"},
         | 
| 353 | 
            +
                                           {"group_all_var"=>"group all"}
         | 
| 354 | 
            +
                                         )
         | 
| 355 | 
            +
                end
         | 
| 356 | 
            +
             | 
| 357 | 
            +
                after do
         | 
| 358 | 
            +
                  ENV.delete('PLAYBOOK')
         | 
| 359 | 
            +
                  ENV.delete('INVENTORY')
         | 
| 360 | 
            +
                  ENV.delete('VARS_DIRS_PATH')
         | 
| 361 | 
            +
                  Dir.chdir(@current_dir)
         | 
| 362 | 
            +
                end
         | 
| 363 | 
            +
              end
         | 
| 364 | 
            +
             | 
| 257 365 | 
             
            end
         | 
| 258 366 |  | 
| 259 367 | 
             
            describe "get_hash_behaviourの実行" do
         | 
    
        data/spec/load_ansible_spec.rb
    CHANGED
    
    | @@ -400,6 +400,229 @@ EOF | |
| 400 400 | 
             
                end
         | 
| 401 401 | 
             
              end
         | 
| 402 402 |  | 
| 403 | 
            +
              context 'load_targets:Test invalid return_type' do
         | 
| 404 | 
            +
                tmp_hosts = 'hosts'
         | 
| 405 | 
            +
                content_excpetion_msg = "Variable return_type must be value 'groups' or 'groups_parent_child_relationships'"
         | 
| 406 | 
            +
                before do
         | 
| 407 | 
            +
                  content_h = <<'EOF'
         | 
| 408 | 
            +
            [server]
         | 
| 409 | 
            +
            192.168.0.103
         | 
| 410 | 
            +
            192.168.0.104 ansible_ssh_port=22
         | 
| 411 | 
            +
             | 
| 412 | 
            +
            [databases]
         | 
| 413 | 
            +
            192.168.0.105
         | 
| 414 | 
            +
            192.168.0.106 ansible_ssh_port=5555
         | 
| 415 | 
            +
             | 
| 416 | 
            +
            [pg:children]
         | 
| 417 | 
            +
            server
         | 
| 418 | 
            +
            databases
         | 
| 419 | 
            +
            EOF
         | 
| 420 | 
            +
                  create_file(tmp_hosts,content_h)
         | 
| 421 | 
            +
                  begin
         | 
| 422 | 
            +
                    @res = AnsibleSpec.load_targets(tmp_hosts, return_type='some_invalid_option')
         | 
| 423 | 
            +
                  rescue ArgumentError => e
         | 
| 424 | 
            +
                    @res = e.message
         | 
| 425 | 
            +
                  end
         | 
| 426 | 
            +
                end
         | 
| 427 | 
            +
             | 
| 428 | 
            +
                it 'res is string' do
         | 
| 429 | 
            +
                  expect(@res.instance_of?(String)).to be_truthy
         | 
| 430 | 
            +
                end
         | 
| 431 | 
            +
             | 
| 432 | 
            +
                it 'exist 1 string' do
         | 
| 433 | 
            +
                  expect(@res.length).to eq content_excpetion_msg.length
         | 
| 434 | 
            +
                end
         | 
| 435 | 
            +
             | 
| 436 | 
            +
                it 'exist string' do
         | 
| 437 | 
            +
                  expect(@res).to include(content_excpetion_msg)
         | 
| 438 | 
            +
                end
         | 
| 439 | 
            +
             | 
| 440 | 
            +
                after do
         | 
| 441 | 
            +
                  File.delete(tmp_hosts)
         | 
| 442 | 
            +
                end
         | 
| 443 | 
            +
              end
         | 
| 444 | 
            +
             | 
| 445 | 
            +
              context 'load_targets:Return groups; default return_type (="groups")' do
         | 
| 446 | 
            +
                tmp_hosts = 'hosts'
         | 
| 447 | 
            +
                before do
         | 
| 448 | 
            +
                  content_h = <<'EOF'
         | 
| 449 | 
            +
            [server]
         | 
| 450 | 
            +
            192.168.0.103
         | 
| 451 | 
            +
            192.168.0.104 ansible_ssh_port=22
         | 
| 452 | 
            +
             | 
| 453 | 
            +
            [databases]
         | 
| 454 | 
            +
            192.168.0.105
         | 
| 455 | 
            +
            192.168.0.106 ansible_ssh_port=5555
         | 
| 456 | 
            +
             | 
| 457 | 
            +
            [pg:children]
         | 
| 458 | 
            +
            server
         | 
| 459 | 
            +
            databases
         | 
| 460 | 
            +
            EOF
         | 
| 461 | 
            +
                  create_file(tmp_hosts,content_h)
         | 
| 462 | 
            +
                  @res = AnsibleSpec.load_targets(tmp_hosts)
         | 
| 463 | 
            +
                end
         | 
| 464 | 
            +
             | 
| 465 | 
            +
                it 'res is hash' do
         | 
| 466 | 
            +
                  expect(@res.instance_of?(Hash)).to be_truthy
         | 
| 467 | 
            +
                end
         | 
| 468 | 
            +
             | 
| 469 | 
            +
                it 'exist 1 group' do
         | 
| 470 | 
            +
                  expect(@res.length).to eq 3
         | 
| 471 | 
            +
                end
         | 
| 472 | 
            +
             | 
| 473 | 
            +
                it 'exist group' do
         | 
| 474 | 
            +
                  expect(@res.key?('server')).to be_truthy
         | 
| 475 | 
            +
                  expect(@res.key?('databases')).to be_truthy
         | 
| 476 | 
            +
                  expect(@res.key?('pg')).to be_truthy
         | 
| 477 | 
            +
                  expect(@res.key?('pg:children')).not_to be_truthy
         | 
| 478 | 
            +
                end
         | 
| 479 | 
            +
             | 
| 480 | 
            +
                it 'pg 192.168.0.103' do
         | 
| 481 | 
            +
                  obj = @res['pg'][0]
         | 
| 482 | 
            +
                  expect(obj.instance_of?(Hash)).to be_truthy
         | 
| 483 | 
            +
                  expect(obj).to include({'name' => '192.168.0.103',
         | 
| 484 | 
            +
                                          'uri' => '192.168.0.103',
         | 
| 485 | 
            +
                                          'port' => 22})
         | 
| 486 | 
            +
                end
         | 
| 487 | 
            +
             | 
| 488 | 
            +
                it 'pg 192.168.0.104 ansible_ssh_port=22' do
         | 
| 489 | 
            +
                  obj = @res['pg'][1]
         | 
| 490 | 
            +
                  expect(obj.instance_of?(Hash)).to be_truthy
         | 
| 491 | 
            +
                  expect(obj['name']).to eq '192.168.0.104 ansible_ssh_port=22'
         | 
| 492 | 
            +
                  expect(obj['uri']).to eq '192.168.0.104'
         | 
| 493 | 
            +
                  expect(obj['port']).to eq 22
         | 
| 494 | 
            +
                end
         | 
| 495 | 
            +
             | 
| 496 | 
            +
                it 'pg 192.168.0.105' do
         | 
| 497 | 
            +
                  obj = @res['pg'][2]
         | 
| 498 | 
            +
                  expect(obj.instance_of?(Hash)).to be_truthy
         | 
| 499 | 
            +
                  expect(obj).to include({'name' => '192.168.0.105',
         | 
| 500 | 
            +
                                          'uri' => '192.168.0.105',
         | 
| 501 | 
            +
                                          'port' => 22})
         | 
| 502 | 
            +
                end
         | 
| 503 | 
            +
             | 
| 504 | 
            +
                it 'pg 192.168.0.106 ansible_ssh_port=5555' do
         | 
| 505 | 
            +
                  obj = @res['pg'][3]
         | 
| 506 | 
            +
                  expect(obj.instance_of?(Hash)).to be_truthy
         | 
| 507 | 
            +
                  expect(obj['name']).to eq '192.168.0.106 ansible_ssh_port=5555'
         | 
| 508 | 
            +
                  expect(obj['uri']).to eq '192.168.0.106'
         | 
| 509 | 
            +
                  expect(obj['port']).to eq 5555
         | 
| 510 | 
            +
                end
         | 
| 511 | 
            +
             | 
| 512 | 
            +
                after do
         | 
| 513 | 
            +
                  File.delete(tmp_hosts)
         | 
| 514 | 
            +
                end
         | 
| 515 | 
            +
              end
         | 
| 516 | 
            +
             | 
| 517 | 
            +
              context 'load_targets:Return groups; return_type="groups"' do
         | 
| 518 | 
            +
                tmp_hosts = 'hosts'
         | 
| 519 | 
            +
                before do
         | 
| 520 | 
            +
                  content_h = <<'EOF'
         | 
| 521 | 
            +
            [server]
         | 
| 522 | 
            +
            192.168.0.103
         | 
| 523 | 
            +
            192.168.0.104 ansible_ssh_port=22
         | 
| 524 | 
            +
             | 
| 525 | 
            +
            [databases]
         | 
| 526 | 
            +
            192.168.0.105
         | 
| 527 | 
            +
            192.168.0.106 ansible_ssh_port=5555
         | 
| 528 | 
            +
             | 
| 529 | 
            +
            [pg:children]
         | 
| 530 | 
            +
            server
         | 
| 531 | 
            +
            databases
         | 
| 532 | 
            +
            EOF
         | 
| 533 | 
            +
                  create_file(tmp_hosts,content_h)
         | 
| 534 | 
            +
                  @res = AnsibleSpec.load_targets(tmp_hosts, return_type='groups')
         | 
| 535 | 
            +
                end
         | 
| 536 | 
            +
             | 
| 537 | 
            +
                it 'res is hash' do
         | 
| 538 | 
            +
                  expect(@res.instance_of?(Hash)).to be_truthy
         | 
| 539 | 
            +
                end
         | 
| 540 | 
            +
             | 
| 541 | 
            +
                it 'exist 1 group' do
         | 
| 542 | 
            +
                  expect(@res.length).to eq 3
         | 
| 543 | 
            +
                end
         | 
| 544 | 
            +
             | 
| 545 | 
            +
                it 'exist group' do
         | 
| 546 | 
            +
                  expect(@res.key?('server')).to be_truthy
         | 
| 547 | 
            +
                  expect(@res.key?('databases')).to be_truthy
         | 
| 548 | 
            +
                  expect(@res.key?('pg')).to be_truthy
         | 
| 549 | 
            +
                  expect(@res.key?('pg:children')).not_to be_truthy
         | 
| 550 | 
            +
                end
         | 
| 551 | 
            +
             | 
| 552 | 
            +
                it 'pg 192.168.0.103' do
         | 
| 553 | 
            +
                  obj = @res['pg'][0]
         | 
| 554 | 
            +
                  expect(obj.instance_of?(Hash)).to be_truthy
         | 
| 555 | 
            +
                  expect(obj).to include({'name' => '192.168.0.103',
         | 
| 556 | 
            +
                                          'uri' => '192.168.0.103',
         | 
| 557 | 
            +
                                          'port' => 22})
         | 
| 558 | 
            +
                end
         | 
| 559 | 
            +
             | 
| 560 | 
            +
                it 'pg 192.168.0.104 ansible_ssh_port=22' do
         | 
| 561 | 
            +
                  obj = @res['pg'][1]
         | 
| 562 | 
            +
                  expect(obj.instance_of?(Hash)).to be_truthy
         | 
| 563 | 
            +
                  expect(obj['name']).to eq '192.168.0.104 ansible_ssh_port=22'
         | 
| 564 | 
            +
                  expect(obj['uri']).to eq '192.168.0.104'
         | 
| 565 | 
            +
                  expect(obj['port']).to eq 22
         | 
| 566 | 
            +
                end
         | 
| 567 | 
            +
             | 
| 568 | 
            +
                it 'pg 192.168.0.105' do
         | 
| 569 | 
            +
                  obj = @res['pg'][2]
         | 
| 570 | 
            +
                  expect(obj.instance_of?(Hash)).to be_truthy
         | 
| 571 | 
            +
                  expect(obj).to include({'name' => '192.168.0.105',
         | 
| 572 | 
            +
                                          'uri' => '192.168.0.105',
         | 
| 573 | 
            +
                                          'port' => 22})
         | 
| 574 | 
            +
                end
         | 
| 575 | 
            +
             | 
| 576 | 
            +
                it 'pg 192.168.0.106 ansible_ssh_port=5555' do
         | 
| 577 | 
            +
                  obj = @res['pg'][3]
         | 
| 578 | 
            +
                  expect(obj.instance_of?(Hash)).to be_truthy
         | 
| 579 | 
            +
                  expect(obj['name']).to eq '192.168.0.106 ansible_ssh_port=5555'
         | 
| 580 | 
            +
                  expect(obj['uri']).to eq '192.168.0.106'
         | 
| 581 | 
            +
                  expect(obj['port']).to eq 5555
         | 
| 582 | 
            +
                end
         | 
| 583 | 
            +
             | 
| 584 | 
            +
                after do
         | 
| 585 | 
            +
                  File.delete(tmp_hosts)
         | 
| 586 | 
            +
                end
         | 
| 587 | 
            +
              end
         | 
| 588 | 
            +
             | 
| 589 | 
            +
              context 'load_targets:Return groups parent child relationships; return_type="groups_parent_child_relationships"' do
         | 
| 590 | 
            +
                tmp_hosts = 'hosts'
         | 
| 591 | 
            +
                before do
         | 
| 592 | 
            +
                  content_h = <<'EOF'
         | 
| 593 | 
            +
            [server]
         | 
| 594 | 
            +
            192.168.0.103
         | 
| 595 | 
            +
            192.168.0.104 ansible_ssh_port=22
         | 
| 596 | 
            +
             | 
| 597 | 
            +
            [databases]
         | 
| 598 | 
            +
            192.168.0.105
         | 
| 599 | 
            +
            192.168.0.106 ansible_ssh_port=5555
         | 
| 600 | 
            +
             | 
| 601 | 
            +
            [pg:children]
         | 
| 602 | 
            +
            server
         | 
| 603 | 
            +
            databases
         | 
| 604 | 
            +
            EOF
         | 
| 605 | 
            +
                  create_file(tmp_hosts,content_h)
         | 
| 606 | 
            +
                  @res = AnsibleSpec.load_targets(tmp_hosts, return_type='groups_parent_child_relationships')
         | 
| 607 | 
            +
                end
         | 
| 608 | 
            +
             | 
| 609 | 
            +
                it 'res is hash' do
         | 
| 610 | 
            +
                  expect(@res.instance_of?(Hash)).to be_truthy
         | 
| 611 | 
            +
                end
         | 
| 612 | 
            +
             | 
| 613 | 
            +
                it 'exist 1 group parent child relationship in Hash' do
         | 
| 614 | 
            +
                  expect(@res.length).to eq 1
         | 
| 615 | 
            +
                end
         | 
| 616 | 
            +
             | 
| 617 | 
            +
                it 'exist each pair' do
         | 
| 618 | 
            +
                  expect(@res).to include({"pg"=>["server", "databases"]})
         | 
| 619 | 
            +
                end
         | 
| 620 | 
            +
             | 
| 621 | 
            +
                after do
         | 
| 622 | 
            +
                  File.delete(tmp_hosts)
         | 
| 623 | 
            +
                end
         | 
| 624 | 
            +
              end
         | 
| 625 | 
            +
             | 
| 403 626 | 
             
            end
         | 
| 404 627 |  | 
| 405 628 | 
             
            describe "load_playbookの実行" do
         | 
    
        metadata
    CHANGED
    
    | @@ -1,14 +1,14 @@ | |
| 1 1 | 
             
            --- !ruby/object:Gem::Specification
         | 
| 2 2 | 
             
            name: ansible_spec
         | 
| 3 3 | 
             
            version: !ruby/object:Gem::Version
         | 
| 4 | 
            -
              version: 0.2. | 
| 4 | 
            +
              version: 0.2.25
         | 
| 5 5 | 
             
            platform: ruby
         | 
| 6 6 | 
             
            authors:
         | 
| 7 7 | 
             
            - volanja
         | 
| 8 8 | 
             
            autorequire: 
         | 
| 9 9 | 
             
            bindir: bin
         | 
| 10 10 | 
             
            cert_chain: []
         | 
| 11 | 
            -
            date: 2018-08- | 
| 11 | 
            +
            date: 2018-08-26 00:00:00.000000000 Z
         | 
| 12 12 | 
             
            dependencies:
         | 
| 13 13 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 14 14 | 
             
              name: bundler
         | 
| @@ -184,6 +184,15 @@ files: | |
| 184 184 | 
             
            - spec/case/get_variable/group_each_vars/group_vars/group1.yml
         | 
| 185 185 | 
             
            - spec/case/get_variable/group_each_vars/hosts
         | 
| 186 186 | 
             
            - spec/case/get_variable/group_each_vars/site.yml
         | 
| 187 | 
            +
            - spec/case/get_variable/group_each_vars_parent_child/group_vars/all.yml
         | 
| 188 | 
            +
            - spec/case/get_variable/group_each_vars_parent_child/group_vars/group1/vars
         | 
| 189 | 
            +
            - spec/case/get_variable/group_each_vars_parent_child/group_vars/group2/vars
         | 
| 190 | 
            +
            - spec/case/get_variable/group_each_vars_parent_child/group_vars/parentgroup/vars
         | 
| 191 | 
            +
            - spec/case/get_variable/group_each_vars_parent_child/hosts
         | 
| 192 | 
            +
            - spec/case/get_variable/group_each_vars_parent_child/site.yml
         | 
| 193 | 
            +
            - spec/case/get_variable/group_each_vars_parent_child/site1.yml
         | 
| 194 | 
            +
            - spec/case/get_variable/group_each_vars_parent_child/site2.yml
         | 
| 195 | 
            +
            - spec/case/get_variable/group_each_vars_parent_child/site3.yml
         | 
| 187 196 | 
             
            - spec/case/get_variable/group_host_playbook/group_vars/all.yml
         | 
| 188 197 | 
             
            - spec/case/get_variable/group_host_playbook/group_vars/group1.yml
         | 
| 189 198 | 
             
            - spec/case/get_variable/group_host_playbook/host_vars/192.168.1.1.yml
         | 
| @@ -362,6 +371,15 @@ test_files: | |
| 362 371 | 
             
            - spec/case/get_variable/group_each_vars/group_vars/group1.yml
         | 
| 363 372 | 
             
            - spec/case/get_variable/group_each_vars/hosts
         | 
| 364 373 | 
             
            - spec/case/get_variable/group_each_vars/site.yml
         | 
| 374 | 
            +
            - spec/case/get_variable/group_each_vars_parent_child/group_vars/all.yml
         | 
| 375 | 
            +
            - spec/case/get_variable/group_each_vars_parent_child/group_vars/group1/vars
         | 
| 376 | 
            +
            - spec/case/get_variable/group_each_vars_parent_child/group_vars/group2/vars
         | 
| 377 | 
            +
            - spec/case/get_variable/group_each_vars_parent_child/group_vars/parentgroup/vars
         | 
| 378 | 
            +
            - spec/case/get_variable/group_each_vars_parent_child/hosts
         | 
| 379 | 
            +
            - spec/case/get_variable/group_each_vars_parent_child/site.yml
         | 
| 380 | 
            +
            - spec/case/get_variable/group_each_vars_parent_child/site1.yml
         | 
| 381 | 
            +
            - spec/case/get_variable/group_each_vars_parent_child/site2.yml
         | 
| 382 | 
            +
            - spec/case/get_variable/group_each_vars_parent_child/site3.yml
         | 
| 365 383 | 
             
            - spec/case/get_variable/group_host_playbook/group_vars/all.yml
         | 
| 366 384 | 
             
            - spec/case/get_variable/group_host_playbook/group_vars/group1.yml
         | 
| 367 385 | 
             
            - spec/case/get_variable/group_host_playbook/host_vars/192.168.1.1.yml
         |