knife-ec2 2.1.3 → 2.1.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: 101ad79cef06c0ed4fefa6a7a7268472f8be49c7af9b4db0069769084a24f17e
4
- data.tar.gz: 9645491d5482a1058b21d43ee933ab6a4e0a2f50bfded899a03ff530e63e127f
3
+ metadata.gz: 62b16f2073f8b2ee3ef35518c860b18f0e16a6734aa9f5578ed768e5ef4072af
4
+ data.tar.gz: 8334d4b0fb87418ddb12a244114067b1ff41c39a2bcf0e95f9c03d3812d6c672
5
5
  SHA512:
6
- metadata.gz: 14c05f935d5c5c8b706ab43b8628732f4745845a7f064aa257b5d51ecc75c793738d9609cfae45455a5349d040db71ed3a7ea287900abe280e10e93497c08fbb
7
- data.tar.gz: 3d6c72dd313f4144d782b91e213fb2fca0e0243c8fdb1742c4590c8142eda6e75f9574ef05d0153a11289fa7c7df469cd02991331aa99ba724a5874eb54dce2b
6
+ metadata.gz: 73b53887684bd8a895d761a1d89d2777daf7778b731524a13b055757bfbd4d83630052805cc584a40057736eb461f65d40fee6dc45ed434720ce62aa35957f58
7
+ data.tar.gz: f4de7a408a71457a8fa67ee99e071447331d73e842aed67bf1ccbe07e64bc8164e868b9fda32ae867b7bed885057f68c525b140af51c49c1f553741a1f5dd1c4
@@ -25,6 +25,10 @@ class Chef
25
25
  class Knife
26
26
  class Ec2ServerCreate < Chef::Knife::Bootstrap
27
27
 
28
+ GP_VOLUME_TYPES = %w{gp2 gp3}.freeze
29
+ IOPS_VOLUME_TYPES = %w{io1 io2}.freeze
30
+ EBS_VOLUME_TYPES = (%w{standard st1 sc1} + GP_VOLUME_TYPES + IOPS_VOLUME_TYPES).freeze
31
+
28
32
  include Knife::Ec2Base
29
33
 
30
34
  deps do
@@ -161,12 +165,12 @@ class Chef
161
165
 
162
166
  option :ebs_volume_type,
163
167
  long: "--ebs-volume-type TYPE",
164
- description: "Possible values are standard (magnetic) | io1 | gp2 | sc1 | st1. Default is gp2",
165
- default: "gp2"
168
+ description: "Possible values are #{EBS_VOLUME_TYPES.join(" | ")}. Default is gp3",
169
+ default: "gp3"
166
170
 
167
171
  option :ebs_provisioned_iops,
168
172
  long: "--provisioned-iops IOPS",
169
- description: "IOPS rate, only used when ebs volume type is 'io1'",
173
+ description: "IOPS rate, only used when ebs volume type is '#{IOPS_VOLUME_TYPES.join(" or ")}'",
170
174
  default: nil
171
175
 
172
176
  option :validation_key_url,
@@ -495,13 +499,11 @@ class Chef
495
499
  end
496
500
 
497
501
  def validation_key_path
498
- @validation_key_path ||= begin
499
- if URI(config[:validation_key_url]).scheme == "file"
500
- URI(config[:validation_key_url]).path
501
- else
502
- validation_key_tmpfile.path
503
- end
504
- end
502
+ @validation_key_path ||= if URI(config[:validation_key_url]).scheme == "file"
503
+ URI(config[:validation_key_url]).path
504
+ else
505
+ validation_key_tmpfile.path
506
+ end
505
507
  end
506
508
 
507
509
  # @return [Tempfile]
@@ -521,16 +523,14 @@ class Chef
521
523
  end
522
524
 
523
525
  def s3_validation_key
524
- @s3_validation_key ||= begin
525
- Chef::Knife::S3Source.fetch(config[:validation_key_url])
526
- end
526
+ @s3_validation_key ||= Chef::Knife::S3Source.fetch(config[:validation_key_url], config)
527
527
  end
528
528
 
529
529
  def s3_secret
530
530
  @s3_secret ||= begin
531
531
  return false unless config[:s3_secret]
532
532
 
533
- Chef::Knife::S3Source.fetch(config[:s3_secret])
533
+ Chef::Knife::S3Source.fetch(config[:s3_secret], config)
534
534
  end
535
535
  end
536
536
 
@@ -616,18 +616,18 @@ class Chef
616
616
  end
617
617
  end
618
618
 
619
- if config[:ebs_provisioned_iops] && (config[:ebs_volume_type] != "io1")
620
- ui.error("--provisioned-iops option is only supported for volume type of 'io1'")
619
+ if config[:ebs_provisioned_iops] && !IOPS_VOLUME_TYPES.include?(config[:ebs_volume_type])
620
+ ui.error("--provisioned-iops option is only supported for volume type of '#{IOPS_VOLUME_TYPES.join(" or ")}'")
621
621
  exit 1
622
622
  end
623
623
 
624
- if (config[:ebs_volume_type] == "io1") && config[:ebs_provisioned_iops].nil?
625
- ui.error("--provisioned-iops option is required when using volume type of 'io1'")
624
+ if IOPS_VOLUME_TYPES.include?(config[:ebs_volume_type]) && config[:ebs_provisioned_iops].nil?
625
+ ui.error("--provisioned-iops option is required when using volume type of '#{IOPS_VOLUME_TYPES.join(" or ")}'")
626
626
  exit 1
627
627
  end
628
628
 
629
- if config[:ebs_volume_type] && ! %w{gp2 io1 standard st1 sc1}.include?(config[:ebs_volume_type])
630
- ui.error("--ebs-volume-type must be 'standard' or 'io1' or 'gp2' or 'st1' or 'sc1'")
629
+ if config[:ebs_volume_type] && ! EBS_VOLUME_TYPES.include?(config[:ebs_volume_type])
630
+ ui.error("--ebs-volume-type must be '#{EBS_VOLUME_TYPES.join("' or '")}'")
631
631
  msg opt_parser
632
632
  exit 1
633
633
  end
@@ -682,10 +682,12 @@ class Chef
682
682
  # validation for ebs_size and ebs_volume_type and ebs_encrypted
683
683
  if !config[:ebs_size]
684
684
  errors << "--ebs-encrypted option requires valid --ebs-size to be specified."
685
- elsif (config[:ebs_volume_type] == "gp2") && ! config[:ebs_size].to_i.between?(1, 16384)
686
- errors << "--ebs-size should be in between 1-16384 for 'gp2' ebs volume type."
685
+ elsif (GP_VOLUME_TYPES.include?(config[:ebs_volume_type])) && ! config[:ebs_size].to_i.between?(1, 16384)
686
+ errors << "--ebs-size should be in between 1-16384 for '#{GP_VOLUME_TYPES.join("' or '")}' ebs volume type."
687
687
  elsif (config[:ebs_volume_type] == "io1") && ! config[:ebs_size].to_i.between?(4, 16384)
688
688
  errors << "--ebs-size should be in between 4-16384 for 'io1' ebs volume type."
689
+ elsif (config[:ebs_volume_type] == "io2") && ! config[:ebs_size].to_i.between?(4, 65536)
690
+ errors << "--ebs-size should be in between 4-65536 for 'io2' ebs volume type."
689
691
  elsif (config[:ebs_volume_type] == "standard") && ! config[:ebs_size].to_i.between?(1, 1024)
690
692
  errors << "--ebs-size should be in between 1-1024 for 'standard' ebs volume type."
691
693
  end
@@ -757,8 +759,8 @@ class Chef
757
759
  user = connection_user.split("\\")
758
760
  if (user[0] == ".") || (user[0] == "") || (user.length == 1)
759
761
  user_related_commands = <<~EOH
760
- net user /add #{connection_user.delete('.\\')} #{windows_password} #{@allow_long_password};
761
- net localgroup Administrators /add #{connection_user.delete('.\\')};
762
+ net user /add #{connection_user.delete(".\\")} #{windows_password} #{@allow_long_password};
763
+ net localgroup Administrators /add #{connection_user.delete(".\\")};
762
764
  EOH
763
765
  end
764
766
  <<~EOH
@@ -953,7 +955,7 @@ class Chef
953
955
  ebs: {
954
956
  delete_on_termination: delete_term,
955
957
  volume_size: ebs_size,
956
- volume_type: config[:ebs_volume_type], # accepts standard, io1, gp2, sc1, st1
958
+ volume_type: config[:ebs_volume_type], # accepts standard, io1, io2, gp2, gp3, sc1, st1
957
959
  },
958
960
  }]
959
961
  attributes[:block_device_mappings][0][:ebs][:iops] = iops_rate unless iops_rate.nil? || iops_rate.empty?
@@ -1139,15 +1141,13 @@ class Chef
1139
1141
  # Otherwise assign public DNS or public IP.
1140
1142
  # @return [String]
1141
1143
  def connect_attribute
1142
- @connect_attribute ||= begin
1143
- if !!config[:server_connect_attribute]
1144
- config[:server_connect_attribute]
1145
- elsif vpc_mode? && !(subnet_public_ip_on_launch? || config[:associate_public_ip] || config[:associate_eip])
1146
- "private_ip_address"
1147
- else
1148
- server.public_dns_name ? "public_dns_name" : "public_ip_address"
1149
- end
1150
- end
1144
+ @connect_attribute ||= if !!config[:server_connect_attribute]
1145
+ config[:server_connect_attribute]
1146
+ elsif vpc_mode? && !(subnet_public_ip_on_launch? || config[:associate_public_ip] || config[:associate_eip])
1147
+ "private_ip_address"
1148
+ else
1149
+ server.public_dns_name ? "public_dns_name" : "public_ip_address"
1150
+ end
1151
1151
  end
1152
1152
 
1153
1153
  def create_tags(hashed_tags)
@@ -234,13 +234,11 @@ class Chef
234
234
  # if default location exists on disk fallback to that
235
235
  # @return [String, nil] location to aws credentials file or nil if none exists
236
236
  def aws_cred_file_location
237
- @cred_file ||= begin
238
- if !config[:aws_credential_file].nil?
239
- config[:aws_credential_file]
240
- else
241
- Chef::Util::PathHelper.home(".aws", "credentials") if ::File.exist?(Chef::Util::PathHelper.home(".aws", "credentials"))
242
- end
243
- end
237
+ @cred_file ||= if !config[:aws_credential_file].nil?
238
+ config[:aws_credential_file]
239
+ else
240
+ Chef::Util::PathHelper.home(".aws", "credentials") if ::File.exist?(Chef::Util::PathHelper.home(".aws", "credentials"))
241
+ end
244
242
  end
245
243
 
246
244
  # @return [String]
@@ -17,11 +17,12 @@
17
17
  class Chef
18
18
  class Knife
19
19
  class S3Source
20
- attr_accessor :url
20
+ attr_accessor :url, :config
21
21
 
22
- def self.fetch(url)
22
+ def self.fetch(url, config)
23
23
  source = Chef::Knife::S3Source.new
24
24
  source.url = url
25
+ source.config = config
25
26
  source.body
26
27
  end
27
28
 
@@ -1,6 +1,6 @@
1
1
  module Knife
2
2
  module Ec2
3
- VERSION = "2.1.3".freeze
3
+ VERSION = "2.1.6".freeze
4
4
  MAJOR, MINOR, TINY = VERSION.split(".")
5
5
  end
6
6
  end
metadata CHANGED
@@ -1,29 +1,29 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: knife-ec2
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.1.3
4
+ version: 2.1.6
5
5
  platform: ruby
6
6
  authors:
7
7
  - Chef Software, Inc.
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2021-01-15 00:00:00.000000000 Z
11
+ date: 2024-04-02 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
- name: chef
14
+ name: knife
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
- - - ">="
17
+ - - "~>"
18
18
  - !ruby/object:Gem::Version
19
- version: '15.11'
19
+ version: '18.0'
20
20
  type: :runtime
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
- - - ">="
24
+ - - "~>"
25
25
  - !ruby/object:Gem::Version
26
- version: '15.11'
26
+ version: '18.0'
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: aws-sdk-s3
29
29
  requirement: !ruby/object:Gem::Requirement
@@ -84,7 +84,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
84
84
  requirements:
85
85
  - - ">="
86
86
  - !ruby/object:Gem::Version
87
- version: '2.6'
87
+ version: '3.1'
88
88
  required_rubygems_version: !ruby/object:Gem::Requirement
89
89
  requirements:
90
90
  - - ">="