cheese-chef-provisioning-azurerm 1.0.8 → 1.0.9

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 0bd53a70d8bfd0e4caf6fcc087dc766c4ebd8b09
4
- data.tar.gz: 3bb6edada005df509ef2708873a5a5b0ede8617c
3
+ metadata.gz: c5c47e2b7a91c076c2c010a02370d37bc2beb132
4
+ data.tar.gz: e8aaaa45c30b2af2098c67e959f37326ee7e44d4
5
5
  SHA512:
6
- metadata.gz: 220b6f59eaeb8ea3b7a4f8101017aa29f0687950f4d761464071ad628161cd034273a5832b5315810b59049ae056d534f4ce15bfdf77cf3c076a36d2c7b7ceee
7
- data.tar.gz: 51b8efd3b60eaea97451900000f45a137ac238c80038d1460992cebe528a209bc4cecedae4d2cff3c5be26a5eab28b81aeb89ce1cffbb249a14e2dc75b5fa164
6
+ metadata.gz: 981d9906121adf3e10bac08aad928f0ec335b703d86099e313e1880fdb88ba0253728227a61c39bff9f3c070cf5de9af543a1556f9b087529fed7fb0b72b52c5
7
+ data.tar.gz: 2fde2c7d49c8f17a4d1cc55cb0ecdcfac8c4bbd9a54cd06d3c8270a44e27ae7835bdc9d369b5dadd46e47e9776abd96a8d73f7f25b719e4d6a8bdce8485c8297
@@ -101,13 +101,13 @@ class Chef
101
101
 
102
102
  def data_disk_owner_id
103
103
  try_azure_operation('getting data disk') do
104
- compute_management_client.disks.get(new_resource.resource_group, new_resource.name).owner_id
104
+ compute_management_client.disks.get(new_resource.resource_group, new_resource.name).managed_by
105
105
  end
106
106
  end
107
107
 
108
108
  def data_disk_owner_id_silent
109
109
  try_azure_operation('getting data disk', true) do
110
- compute_management_client.disks.get(new_resource.resource_group, new_resource.name).owner_id
110
+ compute_management_client.disks.get(new_resource.resource_group, new_resource.name).managed_by
111
111
  end
112
112
  end
113
113
 
@@ -112,7 +112,26 @@ class Chef
112
112
 
113
113
  if availability_set
114
114
  action_handler.report_progress "Looking for availability_set #{availability_set}."
115
- availability_set_id = azure_vm_service.availability_sets.get(resource_group_name, availability_set).id
115
+ begin
116
+ availability_set_id = azure_vm_service.availability_sets.get(resource_group_name, availability_set).id
117
+ rescue MsRestAzure::AzureOperationError => e
118
+ if e.error_code.eql?('ResourceNotFound')
119
+ action_handler.report_progress "availability_set #{availability_set} not found, Creating it..."
120
+ sku = Azure::ARM::Compute::Models::Sku.new.tap do |sku|
121
+ sku.name = 'Aligned'
122
+ end
123
+ aSet = Azure::ARM::Compute::Models::AvailabilitySet.new.tap do |set|
124
+ set.platform_fault_domain_count = 3
125
+ set.platform_update_domain_count = 3
126
+ set.location = location
127
+ set.sku = sku
128
+ end
129
+ res = azure_vm_service.availability_sets.create_or_update(resource_group_name, availability_set, aSet)
130
+ availability_set_id = res.id
131
+ else
132
+ raise e
133
+ end
134
+ end
116
135
  raise "availability_set #{availability_set} under resource group #{resource_group_name} was not found." unless availability_set_id
117
136
  availabilitySet = MsRestAzure::SubResource.new.tap do |subResource|
118
137
  subResource.id = availability_set_id
@@ -128,7 +147,7 @@ class Chef
128
147
  if os_disk_exist
129
148
  action_handler.report_progress "OS disk with the name #{vm_name}_os_disk already exist."
130
149
  action_handler.report_progress 'checking attached status...'
131
- if os_disk_exist.owner_id.nil?
150
+ if os_disk_exist.managed_by.nil?
132
151
  action_handler.report_progress "OS disk #{vm_name} not attached to any VM. Using this..."
133
152
  os_disk = Azure::ARM::Compute::Models::OSDisk.new.tap do |os_disk|
134
153
  os_disk.create_option = 'attach'
@@ -359,8 +378,9 @@ class Chef
359
378
  end
360
379
  end
361
380
 
362
- probe = Azure::ARM::Network::Models::Probe.new.tap do |prb|
363
- lb_options[:probes].each do |prbes|
381
+ probes = []
382
+ lb_options[:probes].each do |prbes|
383
+ probe = Azure::ARM::Network::Models::Probe.new.tap do |prb|
364
384
  prb.name = prbes[:name]
365
385
  prb.port = prbes[:port]
366
386
  prb.protocol = prbes[:protocol]
@@ -372,6 +392,7 @@ class Chef
372
392
  prb.interval_in_seconds = prbes[:interval_in_seconds]
373
393
  prb.number_of_probes = prbes[:number_of_probes]
374
394
  end
395
+ probes.push(probe)
375
396
  end
376
397
 
377
398
  lb = Azure::ARM::Network::Models::LoadBalancer.new.tap do |lbinfo|
@@ -379,7 +400,7 @@ class Chef
379
400
  lbinfo.tags = tags
380
401
  lbinfo.frontend_ipconfigurations = [frontend_ipconf]
381
402
  lbinfo.backend_address_pools = backend_pool
382
- lbinfo.probes = [probe]
403
+ lbinfo.probes = probes
383
404
  end
384
405
 
385
406
  lb_update(resource_group, lb_spec.name, lb) # inital build
@@ -389,11 +410,18 @@ class Chef
389
410
  machine_specs.each do |ivm|
390
411
  vmnic = azure_net_service.network_interfaces.get(resource_group, ivm.name)
391
412
  mylb.backend_address_pools.each do |pool|
392
- vmnic.ip_configurations.first.load_balancer_backend_address_pools = [pool] # mylb.backend_address_pools
413
+ lb_backend_pools = vmnic.ip_configurations.first.load_balancer_backend_address_pools
414
+ if lb_backend_pools
415
+ lb_backend_pools.each do |backend_pool|
416
+ next if backend_pool.id.eql?(pool.id)
417
+ vmnic.ip_configurations.first.load_balancer_backend_address_pools.push(pool)
418
+ end
419
+ else
420
+ vmnic.ip_configurations.first.load_balancer_backend_address_pools = [pool]
421
+ end
393
422
  azure_net_service.network_interfaces.create_or_update(resource_group, ivm.name, vmnic)
394
423
  end
395
424
  end
396
-
397
425
  frontend_ipconf_sub = MsRestAzure::SubResource.new.tap do |subresource|
398
426
  subresource.id = azure_net_service.load_balancers.get(resource_group, lb_spec.name).frontend_ipconfigurations.first.id
399
427
  end
@@ -402,13 +430,12 @@ class Chef
402
430
  subresource.id = mylb.backend_address_pools.first.id
403
431
  end
404
432
 
405
- probe_sub = MsRestAzure::SubResource.new.tap do |subresource|
406
- subresource.id = azure_net_service.load_balancers.get(resource_group, lb_spec.name).probes.first.id
407
- end
408
-
409
433
  unless lb_options[:inboundNatRules].nil?
410
- inboudnat = Azure::ARM::Network::Models::InboundNatRule.new.tap do |inat|
411
- lb_options[:inboundNatRules].each do |ibnat|
434
+ inboudnats = []
435
+ inat_machines = {}
436
+ lb_options[:inboundNatRules].each do |ibnat|
437
+ inboudnat = Azure::ARM::Network::Models::InboundNatRule.new.tap do |inat|
438
+ inat_machines[ibnat[:name]] = find_vm_name(machine_specs, ibnat[:backend_ipconfiguration])
412
439
  inat.name = ibnat[:name]
413
440
  inat.frontend_port = ibnat[:frontend_port]
414
441
  inat.backend_port = ibnat[:backend_port]
@@ -417,11 +444,16 @@ class Chef
417
444
  inat.idle_timeout_in_minutes = ibnat[:idle_timeout_in_minutes]
418
445
  inat.frontend_ipconfiguration = frontend_ipconf_sub
419
446
  end
447
+ inboudnats.push(inboudnat)
420
448
  end
421
449
  end
422
450
 
423
- lbrules = Azure::ARM::Network::Models::LoadBalancingRule.new.tap do |lbrs|
424
- lb_options[:loadBalancingRules].each do |lbr|
451
+ lbrules = []
452
+ lb_options[:loadBalancingRules].each do |lbr|
453
+ probe_sub = MsRestAzure::SubResource.new.tap do |subresource|
454
+ subresource.id = find_probe_id(resource_group, lb_spec.name, lbr[:probe])
455
+ end
456
+ lbrule = Azure::ARM::Network::Models::LoadBalancingRule.new.tap do |lbrs|
425
457
  lbrs.name = lbr[:name]
426
458
  lbrs.backend_address_pool = backend_ipconf_sub
427
459
  lbrs.protocol = lbr[:protocol]
@@ -434,6 +466,7 @@ class Chef
434
466
  lbrs.backend_address_pool = backend_ipconf_sub
435
467
  lbrs.probe = probe_sub
436
468
  end
469
+ lbrules.push(lbrule)
437
470
  end
438
471
 
439
472
  lb = Azure::ARM::Network::Models::LoadBalancer.new.tap do |lbinfo|
@@ -442,12 +475,48 @@ class Chef
442
475
  lbinfo.frontend_ipconfigurations = [frontend_ipconf]
443
476
  lbinfo.backend_address_pools = backend_pool
444
477
  unless lb_options[:inboundNatRules].nil?
445
- lbinfo.inbound_nat_rules = [inboudnat]
478
+ lbinfo.inbound_nat_rules = inboudnats
446
479
  end
447
- lbinfo.probes = [probe]
448
- lbinfo.load_balancing_rules = [lbrules]
480
+ lbinfo.probes = probes
481
+ lbinfo.load_balancing_rules = lbrules
449
482
  end
483
+
450
484
  lb_update(resource_group, lb_spec.name, lb) # update additions build
485
+ mylb = azure_net_service.load_balancers.get(resource_group, lb_spec.name)
486
+ if lb_options[:inboundNatRules]
487
+ mylb.inbound_nat_rules.each do |inat|
488
+ vm_name = inat_machines[inat.name]
489
+ vmnic = azure_net_service.network_interfaces.get(resource_group, vm_name)
490
+ lb_inbound_nat_rules = vmnic.ip_configurations.first.load_balancer_inbound_nat_rules
491
+ if lb_inbound_nat_rules
492
+ lb_inbound_nat_rules.each do |inat_rule|
493
+ next if inat_rule.id.eql?(inat.id)
494
+ vmnic.ip_configurations.first.load_balancer_inbound_nat_rules.push(inat)
495
+ end
496
+ else
497
+ vmnic.ip_configurations.first.load_balancer_inbound_nat_rules = [inat]
498
+ end
499
+ azure_net_service.network_interfaces.create_or_update(resource_group, vm_name, vmnic)
500
+ end
501
+ end
502
+
503
+ lb_spec.reference = {
504
+ 'frontend_ipconfigurations' => mylb.frontend_ipconfigurations.first.private_ipaddress,
505
+ 'allocated_at' => Time.now.utc.to_s,
506
+ }
507
+ end
508
+
509
+ def find_vm_name(machine_specs, vm_name)
510
+ machine_specs.each do |vm|
511
+ return vm.name if vm.name.include?(vm_name)
512
+ end
513
+ end
514
+
515
+ def find_probe_id(resource_group, lb_name, probe_name)
516
+ probes = azure_net_service.load_balancers.get(resource_group, lb_name).probes
517
+ probes.each do |probe|
518
+ return probe.id if probe.name.eql?(probe_name)
519
+ end
451
520
  end
452
521
 
453
522
  def lb_update(resource_group, name, lb)
@@ -457,6 +526,9 @@ class Chef
457
526
  def destroy_load_balancer(action_handler, lb_spec, lb_options)
458
527
  raise "#{lb_spec.name} hasn't recived a resource group. Unable to destroy." unless lb_options.resource_group
459
528
  azure_net_service.load_balancers.delete(lb_options.resource_group, lb_spec.name)
529
+
530
+ # Remove LB spec from databag
531
+ lb_spec.delete(action_handler)
460
532
  end
461
533
 
462
534
  private
@@ -1,7 +1,7 @@
1
1
  class Chef
2
2
  module Provisioning
3
3
  module AzureRM
4
- VERSION = '1.0.8'.freeze
4
+ VERSION = '1.0.9'.freeze
5
5
  end
6
6
  end
7
7
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: cheese-chef-provisioning-azurerm
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.8
4
+ version: 1.0.9
5
5
  platform: ruby
6
6
  authors:
7
7
  - Stuart Preston
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2017-09-29 00:00:00.000000000 Z
12
+ date: 2017-10-30 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: chef
@@ -17,84 +17,84 @@ dependencies:
17
17
  requirements:
18
18
  - - "~>"
19
19
  - !ruby/object:Gem::Version
20
- version: '12.17'
20
+ version: 12.20.3
21
21
  type: :runtime
22
22
  prerelease: false
23
23
  version_requirements: !ruby/object:Gem::Requirement
24
24
  requirements:
25
25
  - - "~>"
26
26
  - !ruby/object:Gem::Version
27
- version: '12.17'
27
+ version: 12.20.3
28
28
  - !ruby/object:Gem::Dependency
29
29
  name: chef-provisioning
30
30
  requirement: !ruby/object:Gem::Requirement
31
31
  requirements:
32
32
  - - "~>"
33
33
  - !ruby/object:Gem::Version
34
- version: '2.2'
34
+ version: 2.5.0
35
35
  type: :runtime
36
36
  prerelease: false
37
37
  version_requirements: !ruby/object:Gem::Requirement
38
38
  requirements:
39
39
  - - "~>"
40
40
  - !ruby/object:Gem::Version
41
- version: '2.2'
41
+ version: 2.5.0
42
42
  - !ruby/object:Gem::Dependency
43
43
  name: azure_mgmt_resources
44
44
  requirement: !ruby/object:Gem::Requirement
45
45
  requirements:
46
46
  - - "~>"
47
47
  - !ruby/object:Gem::Version
48
- version: '0.10'
48
+ version: 0.14.0
49
49
  type: :runtime
50
50
  prerelease: false
51
51
  version_requirements: !ruby/object:Gem::Requirement
52
52
  requirements:
53
53
  - - "~>"
54
54
  - !ruby/object:Gem::Version
55
- version: '0.10'
55
+ version: 0.14.0
56
56
  - !ruby/object:Gem::Dependency
57
57
  name: azure_mgmt_storage
58
58
  requirement: !ruby/object:Gem::Requirement
59
59
  requirements:
60
60
  - - "~>"
61
61
  - !ruby/object:Gem::Version
62
- version: '0.10'
62
+ version: 0.14.0
63
63
  type: :runtime
64
64
  prerelease: false
65
65
  version_requirements: !ruby/object:Gem::Requirement
66
66
  requirements:
67
67
  - - "~>"
68
68
  - !ruby/object:Gem::Version
69
- version: '0.10'
69
+ version: 0.14.0
70
70
  - !ruby/object:Gem::Dependency
71
71
  name: azure_mgmt_compute
72
72
  requirement: !ruby/object:Gem::Requirement
73
73
  requirements:
74
74
  - - "~>"
75
75
  - !ruby/object:Gem::Version
76
- version: '0.10'
76
+ version: 0.14.0
77
77
  type: :runtime
78
78
  prerelease: false
79
79
  version_requirements: !ruby/object:Gem::Requirement
80
80
  requirements:
81
81
  - - "~>"
82
82
  - !ruby/object:Gem::Version
83
- version: '0.10'
83
+ version: 0.14.0
84
84
  - !ruby/object:Gem::Dependency
85
85
  name: azure_mgmt_network
86
86
  requirement: !ruby/object:Gem::Requirement
87
87
  requirements:
88
88
  - - "~>"
89
89
  - !ruby/object:Gem::Version
90
- version: '0.10'
90
+ version: 0.14.0
91
91
  type: :runtime
92
92
  prerelease: false
93
93
  version_requirements: !ruby/object:Gem::Requirement
94
94
  requirements:
95
95
  - - "~>"
96
96
  - !ruby/object:Gem::Version
97
- version: '0.10'
97
+ version: 0.14.0
98
98
  - !ruby/object:Gem::Dependency
99
99
  name: bundler
100
100
  requirement: !ruby/object:Gem::Requirement