mixlib-install 3.0.0 → 3.1.0

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.
Files changed (33) hide show
  1. checksums.yaml +4 -4
  2. data/.travis.yml +9 -4
  3. data/CHANGELOG.md +3 -0
  4. data/acceptance/Gemfile +2 -0
  5. data/acceptance/ubuntu_install_command/terraform/application.tf +1 -1
  6. data/acceptance/ubuntu_install_sh/terraform/application.tf +1 -1
  7. data/acceptance/{powershell_install_ps1 → windows-nano}/.acceptance/acceptance-cookbook/.gitignore +0 -0
  8. data/acceptance/windows-nano/.acceptance/acceptance-cookbook/libraries/chef_extentions.rb +74 -0
  9. data/acceptance/{powershell_install_ps1 → windows-nano}/.acceptance/acceptance-cookbook/metadata.rb +0 -0
  10. data/acceptance/windows-nano/.acceptance/acceptance-cookbook/recipes/destroy.rb +1 -0
  11. data/acceptance/windows-nano/.acceptance/acceptance-cookbook/recipes/provision.rb +49 -0
  12. data/acceptance/windows-nano/.acceptance/acceptance-cookbook/recipes/verify.rb +9 -0
  13. data/acceptance/windows-nano/inspec/verify.rb +11 -0
  14. data/acceptance/windows-nano/terraform/application.tf +59 -0
  15. data/acceptance/{powershell_install_ps1 → windows-nano}/terraform/aws.tf +0 -0
  16. data/acceptance/windows-nano/terraform/variables.tf +10 -0
  17. data/acceptance/windows-server-2012r2/.acceptance/acceptance-cookbook/.gitignore +2 -0
  18. data/acceptance/windows-server-2012r2/.acceptance/acceptance-cookbook/metadata.rb +2 -0
  19. data/acceptance/{powershell_install_ps1 → windows-server-2012r2}/.acceptance/acceptance-cookbook/recipes/destroy.rb +0 -0
  20. data/acceptance/{powershell_install_ps1 → windows-server-2012r2}/.acceptance/acceptance-cookbook/recipes/provision.rb +0 -0
  21. data/acceptance/{powershell_install_ps1 → windows-server-2012r2}/.acceptance/acceptance-cookbook/recipes/verify.rb +0 -0
  22. data/acceptance/{powershell_install_ps1 → windows-server-2012r2}/inspec/verify.rb +0 -0
  23. data/acceptance/{powershell_install_ps1 → windows-server-2012r2}/terraform/application.tf +1 -1
  24. data/acceptance/windows-server-2012r2/terraform/aws.tf +8 -0
  25. data/acceptance/{powershell_install_ps1 → windows-server-2012r2}/terraform/variables.tf +0 -0
  26. data/ci/before-script.sh +1 -1
  27. data/ci/run-acceptance-tests.sh +2 -2
  28. data/lib/mixlib/install/artifact_info.rb +4 -0
  29. data/lib/mixlib/install/backend/base.rb +13 -6
  30. data/lib/mixlib/install/options.rb +13 -4
  31. data/lib/mixlib/install/util.rb +2 -2
  32. data/lib/mixlib/install/version.rb +1 -1
  33. metadata +21 -11
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 085161439c62c8a919ce8fd06074c085188d9335
4
- data.tar.gz: 0f728caf3f8d6c8ce78dea5e8b627acb95febc05
3
+ metadata.gz: 8e92952408c7ab6f65b6613a45e2debc1cecc561
4
+ data.tar.gz: da6e6ae0fff21cf77a0823883f72788a95dc7434
5
5
  SHA512:
6
- metadata.gz: ebcdac43be5b9a3b0b335d81b77afd8a442309b6c28f95f7db3a1564e5c810809755dce7f25aeff924cac8e2d575d2c73110006f87a77a77991e4ade20e4645c
7
- data.tar.gz: 87e953ca7d176419053774b3f3515c161b786dba36442dcd7b7cdad87fb5e337b11177ae0b208e740d5a3d9980f7672aa09678a181caa7ab85e966a7cb8dad79
6
+ metadata.gz: 210497a42f51a085c00170ad28d77bff5861fbc0c12588ac091fcd7b5268e494b97b792c08f17c1f3bd4f21784420b12e452c9e0a0861b578c13730867364a79
7
+ data.tar.gz: 8a7b5fe062d3d3f842bbc5e3e031fcb293ca27df61f961d5671ec66bbc56304c6e024128cd62e4f2b398e811974d0009999c251930ba42b2b6f6ac1dc1f3e46d
data/.travis.yml CHANGED
@@ -14,10 +14,13 @@ addons:
14
14
 
15
15
  matrix:
16
16
  include:
17
- - rvm: 2.2.5
18
- env: CHEF_ACCEPTANCE=false
19
- - rvm: 2.3.0
20
- env: CHEF_ACCEPTANCE=true
17
+ - rvm: 2.2
18
+ - rvm: 2.3
19
+ env: SUITE=ubuntu
20
+ - rvm: 2.3
21
+ env: SUITE=windows-server-2012r2
22
+ - rvm: 2.3
23
+ env: SUITE=windows-nano
21
24
 
22
25
  before_script:
23
26
  - ci/before-script.sh
@@ -34,5 +37,7 @@ env:
34
37
  - secure: "b/O77C/ebnrXw/xSTRMcAuhmUz9QH//jfh3XSQrZF2lRJZJbAbfL3L3SPLqQmPkMDJWCAJrs82umQJkZ0RJtSqX5ZzPUqdf2v5O4CyrfMqhQbsEA9GGUlBNaQmSWUHvOCPQZzI5GWMxgQb9Bhl4+ZekUoTgNZBjvh9uAHWuT1c1fNt5pHDYMXg4wyEnyF8tzLRVD5eTJwkKd+BodM1BUvdOITYv2xl6hlg7ZoJbo+onIVc8sRTnEjGiuprhaVyMSeTNSzxa/3jDxeX+HnJ/2HwpenIBXoSskZZViZHMd1Vy2sDUfYPfDjqwr389b8SInCehe1cCD8ouAr/7614IXxwoWSMjrVgkboB+KteRZyz0qVoqCpdS6NX0YBmu5I8T6jHr3OXVwVbcK03FrFhnS2Hg+oLhKLPKMvIFQ5347DEZ1LBv0ol//ltjk/cZX11yLiF2TrrDzSca3jb7kN/LJZ2AbGQdLJnqEhBm4NznHlPYfibLum0QwNXR/lZ47OJjBQnKc9nlN+iEOKbhby6/SCnW30xWJoMfNIULmW79heaNip16wDV0DBu44mmbKcFA6KMrNFex2+QpZGmNwbWJrwnvaJqVc6FNpRtNdShQ/81vJpn5Z6KKz676EHsM6LcXha1WnNj3eLYipWIg+4OSSmHJgRiuNC4JsgsYCaBfrDw8="
35
38
  # secret access key
36
39
  - secure: "Ut5ARdSnWiFVAtRZ7U+CPgihi59J/KgsMFXunJjBCYyfwaDxrIsAbjddhP3lu2d/xLtvQ26SodhnMh6VMfgBFljY1s4lgjlZU2xU5RCpXFsEhUzHjryVTEgEWYgWkGrTfvalB9gnrsRxiyOh6ZvlW7QoPED+j75FSGwj6rjGCYf/7oUa3Qlt2Pymma5ijjvemgcIEKngO7Dnh3dpFR/J4S0AZdZG6HtJvYpQ2gdvH5faFjYlKHp8W/PMuOuxq2w8Pcjw009VgOjLoFAFYhFWX3hGd0b+N1xBHJDlqaBk2UCCqaKtYrhAsgQNkFiPMmNdDUtscjKx81A8fBUJOUhUxWBFhL3QM2ymuZziPQcnikpi6EPRHRyv3P6MOSyEB2DPpzFq/tEniTBW6o9QL6dHYOaPm/CBtUJ36gEvrSEJQZyhxUTQdamjWIMOTcq1/uwjp0T28rdth0o4BoGALkNQxjaV9iPHBCNtZgPdLoG9v/5CyGwlRQaY6JSVxBHdRcD9+BfwLT84K+68NPo7xXBBar0B1kBOLExI3EHLTxaspkicM2DINicUZk+SNFdInuiByv9NT7sWWbISnk6EagxPxu8D2p1zcMh6cJ8DfFz0rws+ndGiPwInjoslSV7N8Ndi4j9nTKtv9qAImJlthzPDbHY8ghz0TrXWdtwzPet7j2s="
40
+ # region
41
+ - secure: "AJSnI8RyC2NKc91+NFerdZibfCCOZ/nfm0SoSCobYbgqB8R4ii1OqHBFaG+HAA4RnxwOoMm/C+lxRkdK6GcztJSzjOx4bTJE8FfFQ1i+LvLRTuQRL1v9iLfJN0O5iJszq4ecm3jSsFYGpCh1z9OCJEnqaEya9ZNfY7U4wpCy4DG6oIUCxKRtXRUaBOqli+6SqeR/CJxp4ws7lzIu5gSWwuWoqTijO3iR3xLT0EIOkguaTfXD3lTzPhfGvV4LMd/Z/cHqxbVnLEpDCaOwiurHQOGvN9RU3vpOhH0d518QqWw0dQdu3o3cAf6wK+TZNdKo2ooDU9JccqcPS5dPiM+doqqEC55Lxfj2l+BMUeyteZt5YdtELDDe49M7gziGSfqNc8bcWFEu5mPpl0jBd4cvp1EiJNlqNK10HAr/jiI/QGSTX0FK+kpWo56E1uWbgxrLZWAnN7g7sE8y80SLE2AlGlb/MzvpNRoJcGjxltxpznbQJ5Q9EUm3vbzCgOMX0BAgeHciwX6CSTrWIciUmbRrXfZ/9NPLrNph6qQ5I3uJ77CvK3pzpUqEt9L0HJ+Wh6ZBxwFsiddtBFNE0lqV6/FkU9ws1ovF5o9jOTE7mzq4ve6GAtqCnIxmHDq/plw0idbmzuHnsehgLD1ZksYl2WIXsWWOApLIH1U+YzGNyGnLqhk="
37
42
  # windows admin password
38
43
  - secure: "lxe9NYpwV19g2mBa7aQoJX372hktSSn/g5oU1GDWYpi59YwpbYXP/Al/XXwq1ZfNzN+BlXw3tJPlVaEkfSQBi0AaWLJ6Kw5+a4tkIkwMyMPJQh+pKnADZK2pd+Hhrr7CRtnaT6w4V2sZCIfcdlLnKmez/BMNNdBn1+WAfE+aN224JK43rXxgLe4B9CcXCsUUORh6nJbB5f60D15qYokDu7ILi0RufyfyiJulqxIsXVNKtnUXOJRXZvDOPp9Y+2ur0HmVK7aiWr6JwXtODgrrDzZiWq99eR2ErDJB1AFUVMmudUykf5SWyivhvB4RStYDIIpG8EXrIhRKP+k9o4loqQBRcRBGvEMLdyupi7TzuryzK7j2XzhJFD9Eg+50Y5By87lRfvltuAJaDkRPfwIzSbWsh0Lb7YwUXI9a+bJebsteTPSFjb1YOYvkQCV2CB5pH68QInw8Hu9o2hmUkuoNWqqvVaxDI8z3peympfFlVtvTC9eOI60Tdv+pSCyQhBN0/II8FT/fylwQsOL+i8Hez9NIRdaRkx0JEpY56NloErd4An9zpY/xCAa/6JfzMWn7eD673MRVJW0u/j5IGuRAksuUlGZTQS+qudF4ZgVJaacm6qARULaesuCNbufZYtRB0Hg+GINQrUSfYKBw6BZUk2T9ZQ2zFsnF12k0yl9Qr7I="
data/CHANGELOG.md CHANGED
@@ -1,5 +1,8 @@
1
1
  # Change Log
2
2
 
3
+ ## [3.1.0]
4
+ - Add support for Windows Nano 2016 (returns appx packages)
5
+
3
6
  ## [3.0.0]
4
7
  - [Breaking API Change] `Options` validation added to ensure that when any platform option is set they are all provided (platform, platform_version, architecture)
5
8
  - [Breaking API Change] The `platform_version_compatibility_mode` option will automatically be set to `true` when no platform options are provided
data/acceptance/Gemfile CHANGED
@@ -4,3 +4,5 @@ gem "mixlib-install", path: "../"
4
4
  gem "chef"
5
5
  gem "chef-acceptance", github: "chef/chef-acceptance"
6
6
  gem "inspec"
7
+ gem "aws-sdk"
8
+ gem "winrm"
@@ -60,7 +60,7 @@ resource "aws_instance" "mixlib_install_sh" {
60
60
  X-Dept = "EngServ"
61
61
  X-Contact = "pwright"
62
62
  X-Production = "false"
63
- X-Environment = "development"
63
+ X-Environment = "acceptance"
64
64
  X-Application = "mixlib-install"
65
65
  }
66
66
 
@@ -60,7 +60,7 @@ resource "aws_instance" "mixlib_install_sh" {
60
60
  X-Dept = "EngServ"
61
61
  X-Contact = "pwright"
62
62
  X-Production = "false"
63
- X-Environment = "development"
63
+ X-Environment = "acceptance"
64
64
  X-Application = "mixlib-install"
65
65
  }
66
66
 
@@ -0,0 +1,74 @@
1
+ class Chef
2
+ class Recipe
3
+ def run_tf(command)
4
+ execute "terraform #{command}" do
5
+ cwd "#{node['chef-acceptance']['suite-dir']}/terraform"
6
+ end
7
+ end
8
+ end
9
+
10
+ class Resource
11
+ def instance_ip
12
+ @instance_ip ||= tf_state["modules"].first["resources"]["aws_instance.windows_server_nano_ami"]["primary"]["attributes"]["public_ip"]
13
+ end
14
+
15
+ def instance_id
16
+ @instance_id ||= tf_state["modules"].first["resources"]["aws_instance.windows_server_nano_ami"]["primary"]["id"]
17
+ end
18
+
19
+ def windows_password
20
+ @windows_password ||= begin
21
+ require "aws-sdk"
22
+
23
+ ec2 = Aws::EC2::Resource.new
24
+ instance = ec2.instance(instance_id)
25
+ instance.wait_until_running
26
+
27
+ # AWS periodically needs more time to retrieve the windows password. Retry.
28
+ time = 3 * 60 # try up to 3 minutes
29
+ interval = 5 # every 5 seconds
30
+ tries = time / interval
31
+ begin
32
+ password = instance.decrypt_windows_password("#{ENV['HOME']}/.ssh/es-infrastructure.pem")
33
+ rescue RuntimeError => e
34
+ if e.message =~ /password not available yet/
35
+ unless (tries -= 1).zero?
36
+ sleep interval
37
+ retry
38
+ end
39
+ else
40
+ raise e
41
+ end
42
+ end
43
+
44
+ password
45
+ end
46
+ end
47
+
48
+ def run_shell(script, type = :powershell)
49
+ require "winrm"
50
+
51
+ opts = {
52
+ endpoint: "http://#{instance_ip}:5985/wsman",
53
+ user: "Administrator",
54
+ password: windows_password
55
+ }
56
+
57
+ conn = WinRM::Connection.new(opts)
58
+
59
+ conn.shell(type) do |shell|
60
+ output = shell.run(script) do |stdout, stderr|
61
+ STDOUT.print stdout
62
+ STDERR.print stderr
63
+ end
64
+ Chef::Log.info "The script exited with exit code #{output.exitcode}"
65
+ end
66
+ end
67
+
68
+ private
69
+
70
+ def tf_state
71
+ @tfstate ||= JSON.parse(::File.read("#{node['chef-acceptance']['suite-dir']}/terraform/terraform.tfstate"))
72
+ end
73
+ end
74
+ end
@@ -0,0 +1,49 @@
1
+ run_tf "plan"
2
+
3
+ run_tf "apply"
4
+
5
+ ruby_block "install via winrm api" do
6
+ block do
7
+ # We do this hackery to ensure we load mixlib-install from source
8
+ install_command = "install -project angry-omnibus-toolchain -channel current -version 1.1.57"
9
+
10
+ shellout_command = <<-EOF.gsub /^\s*/, ""
11
+ bundle exec ruby -e "require 'mixlib/install';\
12
+ puts Mixlib::Install.install_ps1, '#{install_command}'"
13
+ EOF
14
+
15
+ require "mixlib/shellout"
16
+
17
+ print_script = Mixlib::ShellOut.new(
18
+ shellout_command,
19
+ cwd: node['chef-acceptance']['suite-dir']
20
+ )
21
+ print_script.run_command
22
+
23
+ run_shell(print_script.stdout)
24
+ end
25
+ end
26
+
27
+ ruby_block "set omnibus paths" do
28
+ block do
29
+ toolchain_install_dir = File.join('c:', 'opscode', 'angry-omnibus-toolchain')
30
+
31
+ omnibus_env = []
32
+ omnibus_env << File.join(toolchain_install_dir, 'embedded', 'bin')
33
+ omnibus_env << File.join(toolchain_install_dir, 'embedded', 'bin', 'mingw64', 'bin')
34
+ omnibus_env << File.join(toolchain_install_dir, 'embedded', 'bin', 'usr', 'bin')
35
+ omnibus_env << File.join(toolchain_install_dir, 'embedded', 'git', 'cmd')
36
+ omnibus_env << File.join(toolchain_install_dir, 'embedded', 'git', 'mingw64', 'libexec', 'git-core')
37
+
38
+ # Join paths by semi-colons then replace forwardslashes with backslashes
39
+ omnibus_path = omnibus_env.join(";").gsub("/", "\\")
40
+
41
+ # Permanently set omnibus path to machine PATH
42
+ script = <<-EOF.gsub /^\s*/, ""
43
+ $env:path += ';#{omnibus_path}'
44
+ setx PATH $env:path /M
45
+ EOF
46
+
47
+ run_shell(script)
48
+ end
49
+ end
@@ -0,0 +1,9 @@
1
+ execute "run inspec" do
2
+ command lazy { "inspec exec verify.rb -t winrm://Administrator@#{instance_ip} --password $WINDOWS_PASSWORD" }
3
+ cwd "#{node['chef-acceptance']['suite-dir']}/inspec"
4
+ environment(
5
+ lazy {
6
+ { "WINDOWS_PASSWORD" => windows_password }
7
+ }
8
+ )
9
+ end
@@ -0,0 +1,11 @@
1
+ describe command("git --version") do
2
+ its("stdout") { should match "git version" }
3
+ end
4
+
5
+ describe command("ruby --version") do
6
+ its("stdout") { should match "ruby.*[x64-mingw32]" }
7
+ end
8
+
9
+ describe command("gcc --version") do
10
+ its("stdout") { should match "gcc.exe" }
11
+ end
@@ -0,0 +1,59 @@
1
+ data "aws_ami" "windows_ami" {
2
+ most_recent = true
3
+
4
+ filter {
5
+ name = "owner-alias"
6
+ values = ["amazon"]
7
+ }
8
+
9
+ filter {
10
+ name = "name"
11
+ values = ["Windows_Server-2016-English-Nano-Base-*"]
12
+ }
13
+
14
+ filter {
15
+ name = "architecture"
16
+ values = ["x86_64"]
17
+ }
18
+
19
+ filter {
20
+ name = "virtualization-type"
21
+ values = ["hvm"]
22
+ }
23
+
24
+ filter {
25
+ name = "block-device-mapping.volume-type"
26
+ values = ["gp2"]
27
+ }
28
+
29
+ filter {
30
+ name = "image-type"
31
+ values = ["machine"]
32
+ }
33
+ }
34
+
35
+ resource "aws_instance" "windows_server_nano_ami" {
36
+ count = 1
37
+
38
+ ami = "${data.aws_ami.windows_ami.id}"
39
+ instance_type = "${var.aws_instance_type}"
40
+ key_name = "es-infrastructure"
41
+
42
+ associate_public_ip_address = true
43
+
44
+ subnet_id = "subnet-11ac0174" # Planet Releng Public Subnet
45
+ source_dest_check = false
46
+
47
+ vpc_security_group_ids = [
48
+ "sg-96274af3",
49
+ ]
50
+
51
+ tags {
52
+ # ChefOps's AWS standard tags:
53
+ X-Dept = "EngServ"
54
+ X-Contact = "pwright"
55
+ X-Production = "false"
56
+ X-Environment = "acceptance"
57
+ X-Application = "mixlib-install"
58
+ }
59
+ }
@@ -0,0 +1,10 @@
1
+ # Region to create infrastructure in
2
+ variable "aws_region" {
3
+ type = "string"
4
+ default = "us-west-2"
5
+ }
6
+
7
+ variable "aws_instance_type" {
8
+ type = "string"
9
+ default = "t2.micro"
10
+ }
@@ -0,0 +1,2 @@
1
+ name 'acceptance-cookbook'
2
+
@@ -72,7 +72,7 @@ EOF
72
72
  X-Dept = "EngServ"
73
73
  X-Contact = "pwright"
74
74
  X-Production = "false"
75
- X-Environment = "development"
75
+ X-Environment = "acceptance"
76
76
  X-Application = "mixlib-install"
77
77
  }
78
78
 
@@ -0,0 +1,8 @@
1
+ # Restrict operation of terraform to chef-es profile so that
2
+ # we do not create resources in other aws profiles.
3
+ # We assume user has configured standard aws credentials
4
+ # under ~/.aws/credentials or with $AWS_SHARED_CREDENTIALS_FILE
5
+ provider "aws" {
6
+ region = "${var.aws_region}"
7
+ profile = "chef-aws"
8
+ }
data/ci/before-script.sh CHANGED
@@ -3,7 +3,7 @@
3
3
  set -evx
4
4
 
5
5
  # Don't run acceptance tests on forks. The decryption keys are not available.
6
- if [ "${CHEF_ACCEPTANCE}" = "true" ] && [[ $encrypted_e2edbb28e76c_key ]]; then
6
+ if [[ $SUITE ]] && [[ $encrypted_e2edbb28e76c_key ]]; then
7
7
 
8
8
  # download terraform
9
9
  wget "https://releases.hashicorp.com/terraform/0.7.4/terraform_0.7.4_linux_amd64.zip" -O tf.zip
@@ -3,11 +3,11 @@
3
3
  set -evx
4
4
 
5
5
  # Don't run acceptance tests on forks. The decryption keys are not available.
6
- if [ "${CHEF_ACCEPTANCE}" = "true" ] && [[ $encrypted_e2edbb28e76c_key ]]; then
6
+ if [[ $SUITE ]] && [[ $encrypted_e2edbb28e76c_key ]]; then
7
7
  # setup acceptance tests
8
8
  cd acceptance
9
9
  export BUNDLE_GEMFILE=$PWD/Gemfile
10
10
  bundle install
11
11
  # run acceptances tests and force cleanup
12
- bundle exec chef-acceptance test --force-destroy
12
+ bundle exec chef-acceptance test $SUITE --force-destroy
13
13
  fi
@@ -76,6 +76,10 @@ module Mixlib
76
76
  def clone_with(data)
77
77
  ArtifactInfo.new(self.to_hash.merge(data))
78
78
  end
79
+
80
+ def appx_artifact?
81
+ url.end_with?(".appx")
82
+ end
79
83
  end
80
84
  end
81
85
  end
@@ -26,8 +26,6 @@ module Mixlib
26
26
  class Base
27
27
  attr_reader :options
28
28
 
29
- SUPPORTED_WINDOWS_DESKTOP_VERSIONS = %w{7 8 8.1 10}
30
-
31
29
  def initialize(options)
32
30
  @options = options
33
31
  end
@@ -123,14 +121,14 @@ module Mixlib
123
121
  return closest_compatible_artifact
124
122
  end
125
123
 
126
- # Return an exception if we get to the end of the method
124
+ # Return an exception if we get to the end of the method
127
125
  raise ArtifactsNotFound, <<-EOF
128
126
  No artifacts found matching criteria.
129
127
  product name: #{options.product_name}
130
128
  channel: #{options.channel}
131
129
  version: #{options.product_version}
132
130
  platform: #{options.platform}
133
- platform version: #{options.platform_version}
131
+ platform version: #{options.original_platform_version}
134
132
  architecture: #{options.architecture}
135
133
  compatibility mode: #{options.platform_version_compatibility_mode}
136
134
  EOF
@@ -146,6 +144,15 @@ EOF
146
144
  new_artifacts = [ ]
147
145
  native_artifacts = [ ]
148
146
 
147
+ # We only return appx packages when a nano platform version is requested.
148
+ if options.class::SUPPORTED_WINDOWS_NANO_VERSIONS.include?(options.original_platform_version)
149
+ return artifacts.find_all { |a| a.appx_artifact? }
150
+
151
+ # Otherwise, we only return msi artifacts and remove all appx packages
152
+ else
153
+ artifacts.delete_if { |a| a.appx_artifact? }
154
+ end
155
+
149
156
  artifacts.each do |r|
150
157
  next if r.platform != "windows"
151
158
 
@@ -241,7 +248,7 @@ EOF
241
248
  # See https://docs.chef.io/platforms.html
242
249
  #
243
250
  def map_custom_windows_desktop_versions(desktop_version)
244
- server_version = Util.map_windows_desktop_version(desktop_version)
251
+ server_version = Util.map_windows_version(desktop_version)
245
252
 
246
253
  # Windows desktop 10 officially maps to server 2016.
247
254
  # However, we don't test on server 2016 at this time, so we default to 2012r2
@@ -255,7 +262,7 @@ EOF
255
262
  # options hash allows overriding any valid attribute
256
263
  #
257
264
  def clone_windows_desktop_artifacts(base_artifact, options = {})
258
- SUPPORTED_WINDOWS_DESKTOP_VERSIONS.collect do |dv|
265
+ @options.class::SUPPORTED_WINDOWS_DESKTOP_VERSIONS.collect do |dv|
259
266
  options[:platform_version] = dv
260
267
  options[:url] = base_artifact.url.gsub("\/#{base_artifact.platform_version}\/", "\/#{map_custom_windows_desktop_versions(dv)}\/")
261
268
 
@@ -25,7 +25,7 @@ module Mixlib
25
25
  class Options
26
26
  class InvalidOptions < ArgumentError; end
27
27
 
28
- attr_reader :options, :errors
28
+ attr_reader :options, :errors, :original_platform_version
29
29
 
30
30
  SUPPORTED_ARCHITECTURES = %w{
31
31
  i386
@@ -62,13 +62,20 @@ module Mixlib
62
62
  :user_agent_headers,
63
63
  ]
64
64
 
65
+ SUPPORTED_WINDOWS_DESKTOP_VERSIONS = %w{7 8 8.1 10}
66
+
67
+ SUPPORTED_WINDOWS_NANO_VERSIONS = %w{2016nano}
68
+
65
69
  def initialize(options)
66
70
  @options = options
67
71
  @errors = []
68
72
 
73
+ # Store original platform version in cases where we must remap it
74
+ @original_platform_version = options[:platform_version]
75
+
69
76
  resolve_platform_version_compatibility_mode!
70
77
 
71
- map_windows_desktop_versions! if for_windows?
78
+ map_windows_versions!
72
79
 
73
80
  validate!
74
81
  end
@@ -213,8 +220,10 @@ Must provide platform, platform version and architecture when specifying any pla
213
220
  end
214
221
  end
215
222
 
216
- def map_windows_desktop_versions!
217
- options[:platform_version] = Util.map_windows_desktop_version(platform_version)
223
+ def map_windows_versions!
224
+ return unless for_windows?
225
+
226
+ options[:platform_version] = Util.map_windows_version(platform_version)
218
227
  end
219
228
 
220
229
  def all_or_none?(items)
@@ -130,13 +130,13 @@ module Mixlib
130
130
  user_agents.flatten.compact.uniq.join(" ")
131
131
  end
132
132
 
133
- def map_windows_desktop_version(version)
133
+ def map_windows_version(version)
134
134
  # This logic does not try to compare and determine proper versions based on conditions or ranges.
135
135
  # These are here to improve UX for desktop versions.
136
136
  case version
137
137
  when /^10/
138
138
  "2016"
139
- when /^6.3/, /^8.1/
139
+ when /^6.3/, /^8.1/, /2016nano/
140
140
  "2012r2"
141
141
  when /^6.2/, /^8/
142
142
  "2012"
@@ -1,5 +1,5 @@
1
1
  module Mixlib
2
2
  class Install
3
- VERSION = "3.0.0"
3
+ VERSION = "3.1.0"
4
4
  end
5
5
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: mixlib-install
3
3
  version: !ruby/object:Gem::Version
4
- version: 3.0.0
4
+ version: 3.1.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Thom May
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2017-03-09 00:00:00.000000000 Z
12
+ date: 2017-03-24 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: mixlib-shellout
@@ -216,15 +216,6 @@ files:
216
216
  - acceptance/.gitignore
217
217
  - acceptance/Gemfile
218
218
  - acceptance/README.md
219
- - acceptance/powershell_install_ps1/.acceptance/acceptance-cookbook/.gitignore
220
- - acceptance/powershell_install_ps1/.acceptance/acceptance-cookbook/metadata.rb
221
- - acceptance/powershell_install_ps1/.acceptance/acceptance-cookbook/recipes/destroy.rb
222
- - acceptance/powershell_install_ps1/.acceptance/acceptance-cookbook/recipes/provision.rb
223
- - acceptance/powershell_install_ps1/.acceptance/acceptance-cookbook/recipes/verify.rb
224
- - acceptance/powershell_install_ps1/inspec/verify.rb
225
- - acceptance/powershell_install_ps1/terraform/application.tf
226
- - acceptance/powershell_install_ps1/terraform/aws.tf
227
- - acceptance/powershell_install_ps1/terraform/variables.tf
228
219
  - acceptance/ubuntu_install_command/.acceptance/acceptance-cookbook/.gitignore
229
220
  - acceptance/ubuntu_install_command/.acceptance/acceptance-cookbook/metadata.rb
230
221
  - acceptance/ubuntu_install_command/.acceptance/acceptance-cookbook/recipes/destroy.rb
@@ -243,6 +234,25 @@ files:
243
234
  - acceptance/ubuntu_install_sh/terraform/application.tf
244
235
  - acceptance/ubuntu_install_sh/terraform/aws.tf
245
236
  - acceptance/ubuntu_install_sh/terraform/variables.tf
237
+ - acceptance/windows-nano/.acceptance/acceptance-cookbook/.gitignore
238
+ - acceptance/windows-nano/.acceptance/acceptance-cookbook/libraries/chef_extentions.rb
239
+ - acceptance/windows-nano/.acceptance/acceptance-cookbook/metadata.rb
240
+ - acceptance/windows-nano/.acceptance/acceptance-cookbook/recipes/destroy.rb
241
+ - acceptance/windows-nano/.acceptance/acceptance-cookbook/recipes/provision.rb
242
+ - acceptance/windows-nano/.acceptance/acceptance-cookbook/recipes/verify.rb
243
+ - acceptance/windows-nano/inspec/verify.rb
244
+ - acceptance/windows-nano/terraform/application.tf
245
+ - acceptance/windows-nano/terraform/aws.tf
246
+ - acceptance/windows-nano/terraform/variables.tf
247
+ - acceptance/windows-server-2012r2/.acceptance/acceptance-cookbook/.gitignore
248
+ - acceptance/windows-server-2012r2/.acceptance/acceptance-cookbook/metadata.rb
249
+ - acceptance/windows-server-2012r2/.acceptance/acceptance-cookbook/recipes/destroy.rb
250
+ - acceptance/windows-server-2012r2/.acceptance/acceptance-cookbook/recipes/provision.rb
251
+ - acceptance/windows-server-2012r2/.acceptance/acceptance-cookbook/recipes/verify.rb
252
+ - acceptance/windows-server-2012r2/inspec/verify.rb
253
+ - acceptance/windows-server-2012r2/terraform/application.tf
254
+ - acceptance/windows-server-2012r2/terraform/aws.tf
255
+ - acceptance/windows-server-2012r2/terraform/variables.tf
246
256
  - bin/mixlib-install
247
257
  - ci/before-script.sh
248
258
  - ci/es-infrastructure.pem.enc