cem_acpt 0.8.4 → 0.8.6

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 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