cem_acpt 0.8.4 → 0.8.6

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
  SHA256:
3
- metadata.gz: 787d1c625a43532fe24478c1dd0e6a078737121e0fd3f0c9b3de33dd4d2f8e2d
4
- data.tar.gz: 64eae38282ae2ade5ecbff398f297842114d9f7ed702f9460997836e551c7d75
3
+ metadata.gz: 8b20898f83c35c92ab9276fe4753a82aca2da25da72169d35600b6dba3c27435
4
+ data.tar.gz: 4ef575b47bfee5102cf5c8effb6a50183cfc927da524ab319b135f2654211726
5
5
  SHA512:
6
- metadata.gz: 955300268e06a6a00a0a7ab3849b2a2f5e3dd05e46b9020d9c5ecc5d999e14fff229947a9e9c47db8071a8b3fa4b2cd740070b5b5a53dd69e97092fb57676ec4
7
- data.tar.gz: 14cde5b14ebdf22baa7c720355c596e6825eed11b775bfd9a15baa695ececdb3cc63d0bf56c38e5e7d3dd862151ddd7ca3932c9583aed7eeed1966d1e9eebd02
6
+ metadata.gz: 19414bc367fdb4a101b9969ebb3a76276712238455947648f0434c1df748b959013fcfe0206491cee841709554d3738021e1524dee646e4e40c1f967ccf73729
7
+ data.tar.gz: 3366d39bedcb059f2f8d848aae6f872677e62c9593b59021286e1a4bfaa1eb2939f0574dc83aab643cd180e04909c948c5d2a0b27ef05c63f7db0808dd8239b6
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- cem_acpt (0.8.4)
4
+ cem_acpt (0.8.6)
5
5
  async-http (>= 0.60, < 0.70)
6
6
  bcrypt_pbkdf (>= 1.0, < 2.0)
7
7
  deep_merge (>= 1.2, < 2.0)
@@ -143,4 +143,4 @@ DEPENDENCIES
143
143
  rubocop-rspec
144
144
 
145
145
  BUNDLED WITH
146
- 2.4.18
146
+ 2.4.19
@@ -81,6 +81,7 @@ module CemAcpt
81
81
  'rhel' => 'EnterpriseLinuxFamily',
82
82
  'alma' => 'EnterpriseLinuxFamily',
83
83
  'oel' => 'EnterpriseLinuxFamily',
84
+ 'rocky' => 'EnterpriseLinuxFamily',
84
85
  'windows' => 'WindowsFamily',
85
86
  }.freeze
86
87
 
@@ -144,7 +144,11 @@ module CemAcpt
144
144
  end
145
145
 
146
146
  def terraform
147
- @terraform ||= CemAcpt::Provision::TerraformCmd.new(@image_terraform_dir, @environment)
147
+ # Instead of passing in @image_terraform_dir, we pass in @working_dir. The reason being
148
+ # @image_terraform_dir is the parent directory that has path like ~/.cem_acpt/terraform/image/gcp (gcp being the platform)
149
+ # We want to pass the working directory that has the linux and windows directories in it
150
+ # which we can then further manipulate to get the correct path.
151
+ @terraform ||= CemAcpt::Provision::TerraformCmd.new(@working_dir, @environment)
148
152
  end
149
153
 
150
154
  def new_environment(config)
@@ -21,6 +21,7 @@ module Platform
21
21
  nd = {}
22
22
  nd[:machine_type] = gcp_machine_type
23
23
  nd[:disk_size] = gcp_disk_size
24
+ nd[:max_run_duration] = gcp_max_run_duration
24
25
  nd[:image] = image_name if image_name
25
26
  nd[:test_name] = @test_data[:test_name] if @test_data&.key?(:test_name)
26
27
  nd
@@ -68,4 +69,8 @@ module Platform
68
69
  def gcp_disk_size
69
70
  @gcp_disk_size ||= (@config.get('node_data.disk_size') || 40)
70
71
  end
72
+
73
+ def gcp_max_run_duration
74
+ @gcp_max_run_duration ||= (@config.get('node_data.max_run_duration') || 3600)
75
+ end
71
76
  end
@@ -7,7 +7,7 @@ module CemAcpt
7
7
  # Class provides methods for gathering provision data for Linux nodes
8
8
  class Linux < OsData
9
9
  def self.valid_names
10
- %w[centos rhel oel alma]
10
+ %w[centos rhel oel alma rocky]
11
11
  end
12
12
 
13
13
  def self.valid_versions
@@ -89,11 +89,17 @@ module CemAcpt
89
89
  end
90
90
 
91
91
  def chdir(opts = {})
92
- [extract_arg!(opts, :chdir), working_dir, Dir.pwd].each do |d|
92
+ [Dir.pwd, working_dir, extract_arg!(opts, :chdir)].each do |d|
93
93
  next if d.nil? || d.empty?
94
94
 
95
95
  d = File.expand_path(d)
96
- return "-chdir=#{d}" if File.directory?(d)
96
+
97
+ # Added a check for main.tf to make sure we're in the right directory and have necessary file whhen running terraform
98
+ # There are three possible path that we can be in:
99
+ # 1. The working directory that was passed in, which is usually the created temporary directory
100
+ # 2. The current directory that this code is being executed from (usually in a linux or windows directory of working directory)
101
+ # 3. The working directory that was passed in, but with a linux or windows directory appended to it
102
+ return "-chdir=#{d}" if File.directory?(d) && File.exist?(File.join(d, 'main.tf'))
97
103
 
98
104
  logger.warn('CemAcpt::Provision::TerraformCmd') { "Directory #{d} does not exist, using next..." }
99
105
  end
@@ -121,7 +127,9 @@ module CemAcpt
121
127
  k = k.to_s
122
128
  k.tr!('_', '-')
123
129
  if k == 'vars'
124
- v.map { |vk, vv| "-var '#{vk}=#{vv}'" }.join(' ')
130
+ # Included a check for Hash so that we can generate JSON to pass to terraform.
131
+ # If not a Hash, then we just pass the value as is, which is a string.
132
+ v.map { |vk, vv| "-var='#{vk}=#{vv.is_a?(Hash) ? JSON.generate(vv) : vv}'" }.join(' ')
125
133
  elsif %w[input lock refresh].include?(k) # These are boolean flags with values
126
134
  "-#{k}=#{v}"
127
135
  elsif v.nil? || (v.respond_to?(:empty) && v.empty?) || v.is_a?(TrueClass)
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module CemAcpt
4
- VERSION = '0.8.4'
4
+ VERSION = '0.8.6'
5
5
  end
@@ -49,6 +49,7 @@ variable "node_data" {
49
49
  machine_type = string
50
50
  image = string
51
51
  disk_size = number
52
+ max_run_duration = number
52
53
  test_name = string
53
54
  goss_file = string
54
55
  puppet_manifest = string
@@ -58,7 +59,7 @@ variable "node_data" {
58
59
  }))
59
60
  }
60
61
 
61
- provider "google" {
62
+ provider "google-beta" {
62
63
  credentials = file(var.credentials_file)
63
64
  project = var.project
64
65
  region = var.region
@@ -66,7 +67,7 @@ provider "google" {
66
67
  }
67
68
 
68
69
  resource "google_compute_instance" "acpt-test-node" {
69
- provider = google
70
+ provider = google-beta
70
71
  for_each = var.node_data
71
72
  name = each.key
72
73
  machine_type = each.value.machine_type
@@ -84,6 +85,9 @@ resource "google_compute_instance" "acpt-test-node" {
84
85
  automatic_restart = false
85
86
  provisioning_model = "SPOT"
86
87
  instance_termination_action = "DELETE"
88
+ max_run_duration {
89
+ seconds = each.value.max_run_duration
90
+ }
87
91
  }
88
92
 
89
93
  network_interface {
@@ -53,11 +53,12 @@ variable "node_data" {
53
53
  machine_type = string
54
54
  image = string
55
55
  disk_size = number
56
+ max_run_duration = number
56
57
  test_name = string
57
58
  }))
58
59
  }
59
60
 
60
- provider "google" {
61
+ provider "google-beta" {
61
62
  credentials = file(var.credentials_file)
62
63
  project = var.project
63
64
  region = var.region
@@ -65,7 +66,7 @@ provider "google" {
65
66
  }
66
67
 
67
68
  resource "google_compute_instance" "acpt-test-node" {
68
- provider = google
69
+ provider = google-beta
69
70
  for_each = var.node_data
70
71
  name = each.key
71
72
  machine_type = each.value.machine_type
@@ -83,6 +84,9 @@ resource "google_compute_instance" "acpt-test-node" {
83
84
  automatic_restart = false
84
85
  provisioning_model = "SPOT"
85
86
  instance_termination_action = "DELETE"
87
+ max_run_duration {
88
+ seconds = each.value.max_run_duration
89
+ }
86
90
  }
87
91
 
88
92
  network_interface {
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: cem_acpt
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.8.4
4
+ version: 0.8.6
5
5
  platform: ruby
6
6
  authors:
7
7
  - puppetlabs
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2023-09-14 00:00:00.000000000 Z
11
+ date: 2023-10-09 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: async-http
@@ -277,7 +277,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
277
277
  - !ruby/object:Gem::Version
278
278
  version: '0'
279
279
  requirements: []
280
- rubygems_version: 3.4.18
280
+ rubygems_version: 3.4.19
281
281
  signing_key:
282
282
  specification_version: 4
283
283
  summary: CEM Acceptance Tests