Compare commits

...

86 Commits

Author SHA1 Message Date
David Swan
8d1f9c50fc Release version 6.4.0 2020-11-09 14:38:58 +00:00
daianamezdrea
15b317e2ef Merge pull request #439 from david22swan/IAC-993
(IAC-993) - Removal of inappropriate terminology
2020-11-02 12:15:58 +02:00
Adrian Iurca
b0cb998506 Merge pull request #442 from kenyon/patch-1
README: add Ubuntu 20.04
2020-10-27 15:58:16 +02:00
Ciaran McCrisken
9ef2748ef3 (IAC-993) - Removal of inappropriate terminology 2020-10-26 10:26:16 +00:00
sanfrancrisko
3358b47dc7 Merge pull request #443 from daianamezdrea/main
[IAC-1208] - Add the good links for solving the 404 error and exclude sles
2020-10-26 10:18:35 +00:00
Daiana_Mezdrea
f90756d87c Add the good links for solving the 404 error and exclude sles 2020-10-23 14:33:40 +03:00
Kenyon Ralph
82bf74b42a README: add Ubuntu 20.04
Ubuntu 20.04 support was added in #428.
2020-10-22 12:02:15 -07:00
Paula Muir
11dc1f4c26 Merge pull request #435 from puppetlabs/pdksync_IAC-973-2
pdksync - (IAC-973) - Update travis/appveyor to run on new default branch `main`
2020-08-06 12:31:13 +01:00
David Swan
d26dc21d11 (IAC-973) - Update travis/appveyor to run on new default branch main 2020-08-04 15:42:38 +01:00
daianamezdrea
f991317131 Merge pull request #433 from timdeluxe/sapjava
Support SAP Javas (sapjvm / sapmachine)
2020-07-15 17:38:33 +03:00
timdeluxe
24ca4a662a Support SAP Javas (sapjvm / sapmachine) 2020-07-14 17:33:55 +02:00
daianamezdrea
cb1632ab17 Merge pull request #432 from puppetlabs/pdksync_IAC-890
pdksync - (IAC-890) - Implement CentOS 8 travis tests
2020-06-18 16:22:37 +03:00
David Swan
875d5c4205 (IAC-890) - Implement CentOS 8 travis tests 2020-06-16 16:24:49 +01:00
david22swan
5730588e55 Merge pull request #431 from puppetlabs/pdksync_maint/iac-886
pdksync - (IAC-886) Back out SLES 11 from release checks
2020-06-15 10:12:19 +01:00
Ciaran McCrisken
cf2ce99452 (IAC-886) Remove SLES 11 from release checks 2020-06-12 16:33:38 +01:00
david22swan
a38ae55c7f Merge pull request #430 from puppetlabs/release
Release merge-back version 6.3.0
2020-05-28 09:37:38 +01:00
David Swan
372b5d939a Release version 6.3.0 2020-05-27 15:46:26 +01:00
Paula Muir
c481a128da Merge pull request #429 from markt-de/adopt_symlink
(MODULES-10681) Add option to manage symlink to java::adopt
2020-05-27 13:52:34 +01:00
Frank Wall
06f1a56b31 (MODULES-10681) Add option to manage symlink to java::adopt
While here, convert the documentation to Puppet Strings and add
some basic unit tests.
2020-05-26 16:21:33 +02:00
daianamezdrea
236a115ed6 Merge pull request #428 from puppetlabs/pdksync_IAC-746
(IAC-746) - Add ubuntu 20.04 support
2020-05-21 11:24:54 +03:00
David Swan
e4912e071c (IAZ-746) - Set default params for Ubuntu 20.04 2020-05-20 17:30:56 +01:00
David Swan
43133c9a22 (IAC-746) - Add ubuntu 20.04 support 2020-05-20 15:44:44 +01:00
sheenaajay
e94f8521ef Merge pull request #427 from puppetlabs/pdksync_abs
pdksync - Use abs instead of vmpooler to provision test resources
2020-05-19 09:50:12 +01:00
Daniel Carabas
46e2a3b084 Switch to default spec_helper_acceptance file 2020-05-18 10:02:03 +03:00
Daniel Carabas
6de2b2db55 Change provision from vmpooler to abs 2020-05-18 09:55:46 +03:00
sanfrancrisko
07533d13cd Merge pull request #426 from puppetlabs/pdksync_PDK_UPDATE
pdksync - (maint) - Pdk Update
2020-05-14 11:27:16 +01:00
david22swan
484f27a79e (maint) - add back gems removed by pdk update 2020-05-14 09:28:50 +01:00
David Swan
622c3469a6 (maint) - Pdk Update 2020-05-12 15:39:48 +01:00
daianamezdrea
84bc80d881 Merge pull request #424 from puppetlabs/pdksync_dependency_gems_update
pdksync - Add dependency gems to development group
2020-04-27 15:26:03 +03:00
Daniel Carabas
602d630cf0 Add net-ssh dependency gems to development group 2020-04-27 14:26:51 +03:00
carabasdaniel
5a0d540d78 Merge pull request #421 from Filipovici-Andrei/master
(maint) correct test when java is not installed
2020-03-18 14:06:59 +02:00
gimmy
c3104ce39b (maint) correct test when java is not installed 2020-03-18 12:48:22 +02:00
cmccrisken-puppet
3d49162219 Merge pull request #416 from puppetlabs/pdksync_weekly_run
pdksync - Update weekly scheduled workflows
2020-03-12 12:09:54 +00:00
Daniel Carabas
01e717777f Update weekly workflow schedule 2020-03-12 11:48:35 +00:00
carabasdaniel
d9627f96e8 Merge pull request #419 from michaeltlombardi/maint/master/update-docker-image-names
(MAINT) Update docker image names
2020-03-10 09:42:47 +02:00
Michael T Lombardi
708a94f253 (MAINT) Update docker image names
Prior to this commit the provision file referenced the old
waffleimage repo for CI docker images to use. This commit
updates the file to point at litmusimage, which is the repo
the latest images are released to.
2020-03-09 21:46:58 -05:00
Michael T Lombardi (He/Him)
e0da673208 Merge pull request #418 from puppetlabs/pdksync_IAC-555
pdksync - (IAC-555) - Remove distelli-manifest.yml
2020-03-09 10:33:19 -05:00
David Swan
504fe4c0ff (IAC-555) - Remove distelli-manifest.yml 2020-03-06 12:37:46 +00:00
sheenaajay
f9ea9470d5 Merge pull request #417 from puppetlabs/pdksync_PDK_UPDATE
pdksync - (maint) - Pdk Update
2020-03-03 11:41:19 +00:00
David Swan
76cca5c33d (maint) - Pdk Update 2020-02-27 13:14:56 +00:00
sheenaajay
ab55fc141b Merge pull request #413 from puppetlabs/pdksync_weekly_run
pdksync - Add weekly scheduled workflows
2020-02-25 12:28:32 +00:00
Daniel Carabas
9551b4284b Add weekly workflow on default branch 2020-02-20 11:36:34 +02:00
carabasdaniel
ff922b58dc Merge pull request #412 from puppetlabs/release
Release merge-back v6.2.0
2020-02-19 11:41:56 +02:00
Daniel Carabas
2e16e093f2 Change Rspec test execution to serial mode 2020-02-19 09:03:21 +02:00
Auto-release
86a66d5732 Release version 6.2.0 2020-02-18 14:31:44 +00:00
sheenaajay
cc50bff4e2 Merge pull request #411 from carabasdaniel/master
[IAC-545] Skip acceptance tests for AdoptOpenJDK on SLES
2020-02-18 14:25:16 +00:00
Daniel Carabas
35dba98f4b Skip acceptance tests for AdoptOpenJDK on SLES 2020-02-18 15:35:38 +02:00
cmccrisken-puppet
35dcaf1cb5 Merge pull request #410 from puppetlabs/pdksync_IAC-215-2
pdksync - (IAC-215) - Implement use_litmus:true
2020-02-17 14:27:47 +00:00
David Swan
2e72a1e255 (IAC-215) - Pdk Update 2020-02-14 14:37:07 +00:00
David Swan
84654700bc (IAC-215) - Implement use_litmus:true 2020-02-14 14:29:32 +00:00
sheenaajay
9651f5e630 Merge pull request #370 from timdeluxe/adoptopenjdk
Support AdoptOpenJDK
2020-02-13 11:12:36 +00:00
Daniel Carabas
1cdeba11f1 Fix unit tests 2020-02-13 11:46:28 +02:00
daianamezdrea
11c314814e Merge pull request #406 from hdeheer/modern_facts
Replace legacy facts by modern facts
2020-02-11 14:09:02 +02:00
david22swan
358d1e85d0 Merge pull request #408 from puppetlabs/pdksync_pdksync-honeycombsetup
(IAC-365) updating tokens and dataset for honeycomb
2020-02-06 16:29:27 +00:00
sheena
415f1283d2 (IAC-365) updating tokens and dataset for honeycomb 2020-02-06 13:41:12 +00:00
Michael T Lombardi (He/Him)
db27f84760 Merge pull request #407 from puppetlabs/release
(maint) Merge back for release version 6.1.0
2020-02-03 15:43:05 -06:00
Auto-release
e54f5b4f08 Release version 6.1.0 2020-02-03 16:07:00 +00:00
Hubert de Heer
93cc972768 Replace legacy facts by modern facts
Fix minor puppet-lint issues.
2020-02-03 13:27:36 +01:00
lionce
84546ca9a7 Rebase with master, fix conflicts and rubocop issues 2020-01-16 15:39:32 +02:00
lionce
c4c56cd6c5 Merge pull request #405 from puppetlabs/pdksync_deb10
pdksync - (FM-8581) - Debian 10 added to travis and provision file refactored
2020-01-15 12:40:50 +02:00
Tim Eilers
61ace5ea01 Fixing several facts due to different version scheme and locations in
specific java versions
2020-01-14 14:19:14 +02:00
Tim Eilers
4f52cee832 Fixing java_version fact, because OpenJDK puts a date after version 2020-01-14 14:17:18 +02:00
Tim Eilers
4dbf9321eb Fix basedir management (correctly avoid duplicate resource declarations) 2020-01-14 14:15:52 +02:00
Tim Eilers
da548082fe Clean up code according to rubocop checks 2020-01-14 14:15:52 +02:00
Tim Eilers
c0748f164f Refactor and improve code with experience from testing.
Add spec and acceptance tests for new code.
Extend documentation for new AdoptOpenJDK feature.
2020-01-14 14:15:51 +02:00
Tim Eilers
a88f01321d Fixing install path for default values for jdk 8 and improving comparison when version was given as integer 2020-01-14 11:08:54 +02:00
Tim Eilers
4c336b3ca7 Fixing downloadfolder prefix for AdoptOpenJDK installation 2020-01-14 11:08:54 +02:00
Tim Eilers
f44bc27a17 Adding defined type for AdoptOpenJDK installation 2020-01-14 11:08:54 +02:00
David Swan
6cda8ef5ba (FM-8581) - Debian 10 added to travis and provision file refactored 2020-01-13 12:07:04 +00:00
david22swan
0a77898e3d Merge pull request #404 from puppetlabs/pdksync_travis-updates
pdksync - (maint) travis updates: bundler and slack
2019-12-17 09:41:48 +00:00
David Schmitt
2b641fd530 (maint) update travis to notify puppet slack 2019-12-16 20:57:22 +00:00
David Schmitt
1bfe4da05a (maint) update travis to not use bundle update --system 2019-12-16 20:14:40 +00:00
Molly Waggett
6bdf734416 (maint) Remove MAINTAINERS file 2019-12-10 10:14:10 -08:00
david22swan
c288dbec0e Merge pull request #403 from puppetlabs/pdksync_pdksync-disableforge
pdksync - "MODULES-10236 disable deploy_to_forge for the module"
2019-12-09 15:59:33 +00:00
sheena
aa255af5ad MODULES-10236 disable deploy_to_forge for the module 2019-12-06 14:39:12 +00:00
lionce
69a75c8e6a Merge pull request #402 from puppetlabs/pdksync_pdksync-addubuntu14
pdksync - "MODULES-10242 Add ubuntu14 support back to the modules"
2019-12-06 14:48:03 +02:00
sheena
60a4af1843 MODULES-10242 Add ubuntu14 support back to the modules 2019-12-06 11:24:25 +00:00
Daniel Carabas
4ad9ec6191 Add Github Actions release workflow 2019-12-03 12:37:39 +02:00
cmccrisken-puppet
0a09bce58f Merge pull request #401 from puppetlabs/pdksync_simplecov
(MODULES-10120) enable simplecov; update to PDK 1.14.1; minor cleanups
2019-11-29 12:28:43 +00:00
David Schmitt
26e9bcfc1a (maint) Update to PDK 1.14.1 2019-11-27 18:31:35 +00:00
David Schmitt
a57d124d7d (maint) enable simplecov for ruby codecoverage testing 2019-11-25 18:25:27 +00:00
David Schmitt
e300649623 (maint) update gitignore and pdkignore for .project file removal 2019-11-21 18:16:13 +00:00
David Schmitt
d30c38266b (maint) remove obsolete gepetto .project files 2019-11-21 18:06:18 +00:00
David Schmitt
4610ca34a8 (maint) mark .gitlab-ci.yml as deleted 2019-11-21 17:18:40 +00:00
David Schmitt
fb850647a8 (maint) sort and canonicalise .sync.yml 2019-11-21 17:17:50 +00:00
lionce
0d23711e7d Merge pull request #400 from puppetlabs/release
Merge back release version v6.0.0
2019-11-11 16:23:06 +02:00
40 changed files with 2210 additions and 406 deletions

71
.github/workflows/release.yml vendored Normal file
View File

@@ -0,0 +1,71 @@
name: "release"
on:
push:
branches:
- 'release'
jobs:
LitmusAcceptancePuppet5:
env:
HONEYCOMB_WRITEKEY: 7f3c63a70eecc61d635917de46bea4e6
HONEYCOMB_DATASET: litmus tests
runs-on: self-hosted
strategy:
matrix:
ruby_version: [2.5.x]
puppet_gem_version: [~> 6.0]
platform: [release_checks_5]
agent_family: ['puppet5']
steps:
- uses: actions/checkout@v1
- name: Litmus Parallel
uses: puppetlabs/action-litmus_parallel@main
with:
platform: ${{ matrix.platform }}
agent_family: ${{ matrix.agent_family }}
LitmusAcceptancePuppet6:
env:
HONEYCOMB_WRITEKEY: 7f3c63a70eecc61d635917de46bea4e6
HONEYCOMB_DATASET: litmus tests
runs-on: self-hosted
strategy:
matrix:
ruby_version: [2.5.x]
puppet_gem_version: [~> 6.0]
platform: [release_checks_6]
agent_family: ['puppet6']
steps:
- uses: actions/checkout@v1
- name: Litmus Parallel
uses: puppetlabs/action-litmus_parallel@main
with:
platform: ${{ matrix.platform }}
agent_family: ${{ matrix.agent_family }}
Spec:
runs-on: self-hosted
strategy:
matrix:
check: [spec, 'syntax lint metadata_lint check:symlinks check:git_ignore check:dot_underscore check:test_file rubocop']
ruby_version: [2.4.x, 2.5.x]
puppet_gem_version: [~> 5.0, ~> 6.0]
exclude:
- puppet_gem_version: ~> 5.0
check: 'syntax lint metadata_lint check:symlinks check:git_ignore check:dot_underscore check:test_file rubocop'
- ruby_version: 2.4.x
puppet_gem_version: ~> 6.0
- ruby_version: 2.5.x
puppet_gem_version: ~> 5.0
steps:
- uses: actions/checkout@v1
- name: Spec Tests
uses: puppetlabs/action-litmus_spec@main
with:
puppet_gem_versionm: ${{ matrix.puppet_gem_version }}
check: ${{ matrix.check }}

64
.github/workflows/weekly.yml vendored Normal file
View File

@@ -0,0 +1,64 @@
name: "weekly"
on:
schedule:
- cron: '0 5 * * 5'
jobs:
LitmusAcceptancePuppet5:
env:
HONEYCOMB_WRITEKEY: 7f3c63a70eecc61d635917de46bea4e6
HONEYCOMB_DATASET: litmus tests
runs-on: self-hosted
strategy:
matrix:
ruby_version: [2.5.x]
puppet_gem_version: [~> 6.0]
platform: [release_checks_5]
agent_family: ['puppet5']
steps:
- uses: actions/checkout@v1
- name: Litmus Parallel
uses: puppetlabs/action-litmus_parallel@main
with:
platform: ${{ matrix.platform }}
agent_family: ${{ matrix.agent_family }}
LitmusAcceptancePuppet6:
env:
HONEYCOMB_WRITEKEY: 7f3c63a70eecc61d635917de46bea4e6
HONEYCOMB_DATASET: litmus tests
runs-on: self-hosted
strategy:
matrix:
ruby_version: [2.5.x]
puppet_gem_version: [~> 6.0]
platform: [release_checks_6]
agent_family: ['puppet6']
steps:
- uses: actions/checkout@v1
- name: Litmus Parallel
uses: puppetlabs/action-litmus_parallel@main
with:
platform: ${{ matrix.platform }}
agent_family: ${{ matrix.agent_family }}
Spec:
runs-on: self-hosted
strategy:
matrix:
check: [parallel_spec, 'syntax lint metadata_lint check:symlinks check:git_ignore check:dot_underscore check:test_file rubocop']
ruby_version: [2.5.x]
puppet_gem_version: [~> 5.0, ~> 6.0]
exclude:
- puppet_gem_version: ~> 5.0
check: 'syntax lint metadata_lint check:symlinks check:git_ignore check:dot_underscore check:test_file rubocop'
- ruby_version: 2.5.x
puppet_gem_version: ~> 5.0
steps:
- uses: actions/checkout@v1
- name: Spec Tests
uses: puppetlabs/action-litmus_spec@main
with:
puppet_gem_version: ${{ matrix.puppet_gem_version }}
check: ${{ matrix.check }}

1
.gitignore vendored
View File

@@ -22,5 +22,6 @@
/convert_report.txt
/update_report.txt
.DS_Store
.project
.envrc
/inventory.yaml

View File

@@ -22,6 +22,7 @@
/convert_report.txt
/update_report.txt
.DS_Store
.project
.envrc
/inventory.yaml
/appveyor.yml

View File

@@ -1,23 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<projectDescription>
<name>puppetlabs-java</name>
<comment></comment>
<projects>
</projects>
<buildSpec>
<buildCommand>
<name>com.puppetlabs.geppetto.pp.dsl.ui.modulefileBuilder</name>
<arguments>
</arguments>
</buildCommand>
<buildCommand>
<name>org.eclipse.xtext.ui.shared.xtextBuilder</name>
<arguments>
</arguments>
</buildCommand>
</buildSpec>
<natures>
<nature>com.puppetlabs.geppetto.pp.dsl.ui.puppetNature</nature>
<nature>org.eclipse.xtext.ui.shared.xtextNature</nature>
</natures>
</projectDescription>

View File

@@ -40,6 +40,10 @@ Style/BlockDelimiters:
Description: Prefer braces for chaining. Mostly an aesthetical choice. Better to
be consistent then.
EnforcedStyle: braces_for_chaining
Style/BracesAroundHashParameters:
Description: Braces are required by Ruby 2.7. Cop removed from RuboCop v0.80.0.
See https://github.com/rubocop-hq/rubocop/pull/7643
Enabled: true
Style/ClassAndModuleChildren:
Description: Compact style reduces the required amount of indentation.
EnforcedStyle: compact

112
.sync.yml
View File

@@ -1,83 +1,45 @@
---
.gitignore:
required:
- ---.project
.gitlab-ci.yml:
unmanaged: true
.travis.yml:
".gitlab-ci.yml":
delete: true
".travis.yml":
global_env:
- HONEYCOMB_WRITEKEY="7f3c63a70eecc61d635917de46bea4e6",HONEYCOMB_DATASET="litmus tests"
deploy_to_forge:
enabled: false
branches:
- release
includes:
-
bundler_args:
dist: trusty
env: PLATFORMS=deb_puppet5
rvm: 2.5.1
before_script:
- bundle exec rake 'litmus:provision_list[travis_deb]'
- bundle exec bolt command run 'apt-get install wget -y' --inventoryfile inventory.yaml --nodes='localhost*'
- bundle exec rake 'litmus:install_agent[puppet5]'
- bundle exec rake litmus:install_module
script:
- bundle exec rake litmus:acceptance:parallel
services: docker
sudo: required
stage: acceptance
-
bundler_args:
dist: trusty
env: PLATFORMS=deb_puppet6
rvm: 2.5.1
before_script:
- bundle exec rake 'litmus:provision_list[travis_deb]'
- bundle exec bolt command run 'apt-get install wget -y' --inventoryfile inventory.yaml --nodes='localhost*'
- bundle exec rake 'litmus:install_agent[puppet6]'
- bundle exec rake litmus:install_module
script:
- bundle exec rake litmus:acceptance:parallel
services: docker
-
bundler_args:
dist: trusty
env: PLATFORMS=el_puppet5
rvm: 2.5.1
before_script:
- bundle exec rake 'litmus:provision_list[travis_el]'
- bundle exec rake 'litmus:install_agent[puppet5]'
- bundle exec rake litmus:install_module
script:
- bundle exec rake litmus:acceptance:parallel
services: docker
sudo: required
stage: acceptance
-
bundler_args:
dist: trusty
env: PLATFORMS=el_puppet6
rvm: 2.5.1
before_script:
- bundle exec rake 'litmus:provision_list[travis_el]'
- bundle exec rake 'litmus:install_agent[puppet6]'
- bundle exec rake litmus:install_module
script:
- bundle exec rake litmus:acceptance:parallel
services: docker
sudo: required
stage: acceptance
- release
use_litmus: true
litmus:
provision_list:
- ---travis_el
- travis_deb
- travis_el6
- travis_el7
- travis_el8
complex:
- collection:
puppet_collection:
- puppet6
provision_list:
- travis_ub_6
- collection:
puppet_collection:
- puppet5
provision_list:
- travis_ub_5
simplecov: true
notifications:
slack:
secure: Wf7Wz3KC0G9ngPiDcOIpSqcCfdvwKQqZdNH/z3GMcj/OipMAdyFSAVnBvikIl7L1c0LMU9ATEpub+jYzViT7RZywaNyer6SRAfs6MIgAYo4xxF/mOnDHAxXeUYAsBXXL4sS3NX2XWMPa9ZWUeuUQKth8O4STWgAX298QZLyYx5k=
appveyor.yml:
delete: true
Gemfile:
optional:
':development':
- gem: 'github_changelog_generator'
git: 'https://github.com/skywinder/github-changelog-generator'
ref: '20ee04ba1234e9e83eb2ffb5056e23d641c7a018'
condition: "Gem::Version.new(RUBY_VERSION.dup) >= Gem::Version.new('2.2.2')"
":development":
- gem: github_changelog_generator
git: https://github.com/skywinder/github-changelog-generator
ref: 20ee04ba1234e9e83eb2ffb5056e23d641c7a018
condition: Gem::Version.new(RUBY_VERSION.dup) >= Gem::Version.new('2.2.2')
spec/spec_helper.rb:
mock_with: ':rspec'
mock_with: ":rspec"
coverage_report: true

View File

@@ -1,28 +1,142 @@
---
os: linux
dist: xenial
language: ruby
cache: bundler
before_install:
- bundle -v
- rm -f Gemfile.lock
- gem update --system $RUBYGEMS_VERSION
- "# Update system gems if requested. This is useful to temporarily workaround troubles in the test runner"
- "# See https://github.com/puppetlabs/pdk-templates/commit/705154d5c437796b821691b707156e1b056d244f for an example of how this was used"
- "# Ignore exit code of SIGPIPE'd yes to not fail with shell's pipefail set"
- '[ -z "$RUBYGEMS_VERSION" ] || (yes || true) | gem update --system $RUBYGEMS_VERSION'
- gem --version
- bundle -v
script:
- 'bundle exec rake $CHECK'
- 'SIMPLECOV=yes bundle exec rake $CHECK'
bundler_args: --without system_tests
rvm:
- 2.5.3
- 2.5.7
env:
global:
- HONEYCOMB_WRITEKEY="7f3c63a70eecc61d635917de46bea4e6",HONEYCOMB_DATASET="litmus tests"
stages:
- static
- spec
- acceptance
-
if: tag =~ ^v\d
name: deploy
matrix:
jobs:
fast_finish: true
include:
-
before_script:
- "bundle exec rake 'litmus:provision_list[travis_ub_6]'"
- "bundle exec rake 'litmus:install_agent[puppet6]'"
- "bundle exec rake litmus:install_module"
bundler_args:
env: PLATFORMS=travis_ub_6_puppet6
rvm: 2.5.7
script: ["travis_wait 45 bundle exec rake litmus:acceptance:parallel"]
services: docker
stage: acceptance
-
before_script:
- "bundle exec rake 'litmus:provision_list[travis_ub_5]'"
- "bundle exec rake 'litmus:install_agent[puppet5]'"
- "bundle exec rake litmus:install_module"
bundler_args:
env: PLATFORMS=travis_ub_5_puppet5
rvm: 2.5.7
script: ["travis_wait 45 bundle exec rake litmus:acceptance:parallel"]
services: docker
stage: acceptance
-
before_script:
- "bundle exec rake 'litmus:provision_list[travis_deb]'"
- "bundle exec rake 'litmus:install_agent[puppet5]'"
- "bundle exec rake litmus:install_module"
bundler_args:
env: PLATFORMS=travis_deb_puppet5
rvm: 2.5.7
script: ["travis_wait 45 bundle exec rake litmus:acceptance:parallel"]
services: docker
stage: acceptance
-
before_script:
- "bundle exec rake 'litmus:provision_list[travis_el6]'"
- "bundle exec rake 'litmus:install_agent[puppet5]'"
- "bundle exec rake litmus:install_module"
bundler_args:
env: PLATFORMS=travis_el6_puppet5
rvm: 2.5.7
script: ["travis_wait 45 bundle exec rake litmus:acceptance:parallel"]
services: docker
stage: acceptance
-
before_script:
- "bundle exec rake 'litmus:provision_list[travis_el7]'"
- "bundle exec rake 'litmus:install_agent[puppet5]'"
- "bundle exec rake litmus:install_module"
bundler_args:
env: PLATFORMS=travis_el7_puppet5
rvm: 2.5.7
script: ["travis_wait 45 bundle exec rake litmus:acceptance:parallel"]
services: docker
stage: acceptance
-
before_script:
- "bundle exec rake 'litmus:provision_list[travis_el8]'"
- "bundle exec rake 'litmus:install_agent[puppet5]'"
- "bundle exec rake litmus:install_module"
bundler_args:
env: PLATFORMS=travis_el8_puppet5
rvm: 2.5.7
script: ["travis_wait 45 bundle exec rake litmus:acceptance:parallel"]
services: docker
stage: acceptance
-
before_script:
- "bundle exec rake 'litmus:provision_list[travis_deb]'"
- "bundle exec rake 'litmus:install_agent[puppet6]'"
- "bundle exec rake litmus:install_module"
bundler_args:
env: PLATFORMS=travis_deb_puppet6
rvm: 2.5.7
script: ["travis_wait 45 bundle exec rake litmus:acceptance:parallel"]
services: docker
stage: acceptance
-
before_script:
- "bundle exec rake 'litmus:provision_list[travis_el6]'"
- "bundle exec rake 'litmus:install_agent[puppet6]'"
- "bundle exec rake litmus:install_module"
bundler_args:
env: PLATFORMS=travis_el6_puppet6
rvm: 2.5.7
script: ["travis_wait 45 bundle exec rake litmus:acceptance:parallel"]
services: docker
stage: acceptance
-
before_script:
- "bundle exec rake 'litmus:provision_list[travis_el7]'"
- "bundle exec rake 'litmus:install_agent[puppet6]'"
- "bundle exec rake litmus:install_module"
bundler_args:
env: PLATFORMS=travis_el7_puppet6
rvm: 2.5.7
script: ["travis_wait 45 bundle exec rake litmus:acceptance:parallel"]
services: docker
stage: acceptance
-
before_script:
- "bundle exec rake 'litmus:provision_list[travis_el8]'"
- "bundle exec rake 'litmus:install_agent[puppet6]'"
- "bundle exec rake litmus:install_module"
bundler_args:
env: PLATFORMS=travis_el8_puppet6
rvm: 2.5.7
script: ["travis_wait 45 bundle exec rake litmus:acceptance:parallel"]
services: docker
stage: acceptance
-
env: CHECK="check:symlinks check:git_ignore check:dot_underscore check:test_file rubocop syntax lint metadata_lint"
stage: static
@@ -32,53 +146,14 @@ matrix:
stage: spec
-
env: PUPPET_GEM_VERSION="~> 6.0" CHECK=parallel_spec
rvm: 2.5.3
rvm: 2.5.7
stage: spec
-
env: DEPLOY_TO_FORGE=yes
stage: deploy
-
before_script: ["bundle exec rake 'litmus:provision_list[travis_deb]'", "bundle exec bolt command run 'apt-get install wget -y' --inventoryfile inventory.yaml --nodes='localhost*'", "bundle exec rake 'litmus:install_agent[puppet5]'", "bundle exec rake litmus:install_module"]
bundler_args:
dist: trusty
env: PLATFORMS=deb_puppet5
rvm: 2.5.1
script: ["bundle exec rake litmus:acceptance:parallel"]
services: docker
stage: acceptance
sudo: required
-
before_script: ["bundle exec rake 'litmus:provision_list[travis_deb]'", "bundle exec bolt command run 'apt-get install wget -y' --inventoryfile inventory.yaml --nodes='localhost*'", "bundle exec rake 'litmus:install_agent[puppet6]'", "bundle exec rake litmus:install_module"]
bundler_args:
dist: trusty
env: PLATFORMS=deb_puppet6
rvm: 2.5.1
script: ["bundle exec rake litmus:acceptance:parallel"]
services: docker
-
before_script: ["bundle exec rake 'litmus:provision_list[travis_el]'", "bundle exec rake 'litmus:install_agent[puppet5]'", "bundle exec rake litmus:install_module"]
bundler_args:
dist: trusty
env: PLATFORMS=el_puppet5
rvm: 2.5.1
script: ["bundle exec rake litmus:acceptance:parallel"]
services: docker
stage: acceptance
sudo: required
-
before_script: ["bundle exec rake 'litmus:provision_list[travis_el]'", "bundle exec rake 'litmus:install_agent[puppet6]'", "bundle exec rake litmus:install_module"]
bundler_args:
dist: trusty
env: PLATFORMS=el_puppet6
rvm: 2.5.1
script: ["bundle exec rake litmus:acceptance:parallel"]
services: docker
stage: acceptance
sudo: required
branches:
only:
- master
- main
- /^v\d/
- release
notifications:
email: false
slack:
secure: Wf7Wz3KC0G9ngPiDcOIpSqcCfdvwKQqZdNH/z3GMcj/OipMAdyFSAVnBvikIl7L1c0LMU9ATEpub+jYzViT7RZywaNyer6SRAfs6MIgAYo4xxF/mOnDHAxXeUYAsBXXL4sS3NX2XWMPa9ZWUeuUQKth8O4STWgAX298QZLyYx5k=

View File

@@ -1,6 +1,6 @@
{
"recommendations": [
"jpogran.puppet-vscode",
"puppet.puppet-vscode",
"rebornix.Ruby"
]
}

View File

@@ -2,22 +2,55 @@
All notable changes to this project will be documented in this file. The format is based on [Keep a Changelog](http://keepachangelog.com/en/1.0.0/) and this project adheres to [Semantic Versioning](http://semver.org).
## [v6.4.0](https://github.com/puppetlabs/puppetlabs-java/tree/v6.3.0) (2020-11-09)
[Full Changelog](https://github.com/puppetlabs/puppetlabs-java/compare/v6.3.0...v6.3.0)
### Added
- Add support for SAP Java \(sapjvm / sapmachine\) [\#433](https://github.com/puppetlabs/puppetlabs-java/pull/433) ([timdeluxe](https://github.com/timdeluxe))
### Fixed
- \[IAC-1208\] - Add the good links for solving the 404 error and exclude sles [\#443](https://github.com/puppetlabs/puppetlabs-java/pull/443) ([daianamezdrea](https://github.com/daianamezdrea))
- \(IAC-993\) - Removal of inappropriate terminology [\#439](https://github.com/puppetlabs/puppetlabs-java/pull/439) ([david22swan](https://github.com/david22swan))
## [v6.3.0](https://github.com/puppetlabs/puppetlabs-java/tree/v6.3.0) (2020-05-27)
[Full Changelog](https://github.com/puppetlabs/puppetlabs-java/compare/v6.2.0...v6.3.0)
### Added
- \(MODULES-10681\) Add option to manage symlink to java::adopt [\#429](https://github.com/puppetlabs/puppetlabs-java/pull/429) ([fraenki](https://github.com/fraenki))
- \(IAC-746\) - Add ubuntu 20.04 support [\#428](https://github.com/puppetlabs/puppetlabs-java/pull/428) ([david22swan](https://github.com/david22swan))
## [v6.2.0](https://github.com/puppetlabs/puppetlabs-java/tree/v6.2.0) (2020-02-18)
[Full Changelog](https://github.com/puppetlabs/puppetlabs-java/compare/v6.1.0...v6.2.0)
### Added
- Support AdoptOpenJDK [\#370](https://github.com/puppetlabs/puppetlabs-java/pull/370) ([timdeluxe](https://github.com/timdeluxe))
### Fixed
- Replace legacy facts by modern facts [\#406](https://github.com/puppetlabs/puppetlabs-java/pull/406) ([hdeheer](https://github.com/hdeheer))
## [v6.1.0](https://github.com/puppetlabs/puppetlabs-java/tree/v6.1.0) (2020-02-03)
[Full Changelog](https://github.com/puppetlabs/puppetlabs-java/compare/v6.0.0...v6.1.0)
## [v6.0.0](https://github.com/puppetlabs/puppetlabs-java/tree/v6.0.0) (2019-11-11)
[Full Changelog](https://github.com/puppetlabs/puppetlabs-java/compare/v5.0.1...v6.0.0)
### Changed
- pdksync - FM-8499 - remove ubuntu14 support [\#398](https://github.com/puppetlabs/puppetlabs-java/pull/398) ([lionce](https://github.com/lionce))
### Added
- \(FM-8676\) - Support added for CentOS 8 [\#399](https://github.com/puppetlabs/puppetlabs-java/pull/399) ([david22swan](https://github.com/david22swan))
- \(FM-8676\) Add CentOS 8 to supported OS list [\#399](https://github.com/puppetlabs/puppetlabs-java/pull/399) ([david22swan](https://github.com/david22swan))
- FM-8403 - add support Debain10 [\#387](https://github.com/puppetlabs/puppetlabs-java/pull/387) ([lionce](https://github.com/lionce))
### Fixed
- MODULES-10062 - fix acceptance tests on sles [\#397](https://github.com/puppetlabs/puppetlabs-java/pull/397) ([lionce](https://github.com/lionce))
- we need to check if java\_default\_home has a value before we attempt t… [\#391](https://github.com/puppetlabs/puppetlabs-java/pull/391) ([robmbrooks](https://github.com/robmbrooks))
- Add support for java 11, the default in debian buster 10 [\#386](https://github.com/puppetlabs/puppetlabs-java/pull/386) ([jhooyberghs](https://github.com/jhooyberghs))

View File

@@ -108,7 +108,7 @@ process as easy as possible.
To submit your changes via a GitHub pull request, we _highly_
recommend that you have them on a topic branch, instead of
directly on "master".
directly on "main".
It makes things much easier to keep track of, especially if
you decide to work on another thing before your first change
is merged in.

View File

@@ -1,5 +1,4 @@
source ENV['GEM_SOURCE'] || 'https://rubygems.org'
gem 'pdk', git: 'https://github.com/puppetlabs/pdk.git', branch: 'master'
def location_for(place_or_version, fake_version = nil)
git_url_regex = %r{\A(?<url>(https?|git)[:@][^#]*)(#(?<branch>.*))?}
@@ -25,10 +24,10 @@ group :development do
gem "json", '= 2.0.4', require: false if Gem::Requirement.create('~> 2.4.2').satisfied_by?(Gem::Version.new(RUBY_VERSION.dup))
gem "json", '= 2.1.0', require: false if Gem::Requirement.create(['>= 2.5.0', '< 2.7.0']).satisfied_by?(Gem::Version.new(RUBY_VERSION.dup))
gem "rb-readline", '= 0.5.5', require: false, platforms: [:mswin, :mingw, :x64_mingw]
gem "puppet-module-posix-default-r#{minor_version}", '~> 0.3', require: false, platforms: [:ruby]
gem "puppet-module-posix-dev-r#{minor_version}", '~> 0.3', require: false, platforms: [:ruby]
gem "puppet-module-win-default-r#{minor_version}", '~> 0.3', require: false, platforms: [:mswin, :mingw, :x64_mingw]
gem "puppet-module-win-dev-r#{minor_version}", '~> 0.3', require: false, platforms: [:mswin, :mingw, :x64_mingw]
gem "puppet-module-posix-default-r#{minor_version}", '~> 0.4', require: false, platforms: [:ruby]
gem "puppet-module-posix-dev-r#{minor_version}", '~> 0.4', require: false, platforms: [:ruby]
gem "puppet-module-win-default-r#{minor_version}", '~> 0.4', require: false, platforms: [:mswin, :mingw, :x64_mingw]
gem "puppet-module-win-dev-r#{minor_version}", '~> 0.4', require: false, platforms: [:mswin, :mingw, :x64_mingw]
gem "github_changelog_generator", require: false, git: 'https://github.com/skywinder/github-changelog-generator', ref: '20ee04ba1234e9e83eb2ffb5056e23d641c7a018' if Gem::Version.new(RUBY_VERSION.dup) >= Gem::Version.new('2.2.2')
end

View File

@@ -1,6 +0,0 @@
## Maintenance
Maintainers:
- Puppet Forge Modules Team `forge-modules |at| puppet |dot| com`
Tickets: https://tickets.puppet.com/browse/MODULES. Make sure to set component to `java`.

View File

@@ -55,9 +55,113 @@ java::download { 'jdk8' :
}
```
## AdoptOpenJDK
The defined type `java::adopt` installs one or more versions of AdoptOpenJDK Java. `java::adopt` depends on [puppet/archive](https://github.com/voxpupuli/puppet-archive).
```puppet
java::adopt { 'jdk8' :
ensure => 'present',
version => '8',
java => 'jdk',
}
java::adopt { 'jdk11' :
ensure => 'present',
version => '11',
java => 'jdk',
}
```
To install a specific release of a AdoptOpenJDK Java version, e.g. 8u202-b08, provide both parameters `version_major` and `version_minor` as follows:
```puppet
java::adopt { 'jdk8' :
ensure => 'present',
version_major => '8u202',
version_minor => 'b08',
java => 'jdk',
}
```
To install AdoptOpenJDK Java to a non-default basedir (defaults: /usr/lib/jvm for Debian; /usr/java for RedHat):
```puppet
java::adopt { 'jdk8' :
ensure => 'present',
version_major => '8u202',
version_minor => 'b08',
java => 'jdk',
basedir => '/custom/java',
}
```
To ensure that a custom basedir is a directory before AdoptOpenJDK Java is installed (note: manage separately for custom ownership or perms):
```puppet
java::adopt { 'jdk8' :
ensure => 'present',
version_major => '8u202',
version_minor => 'b08',
java => 'jdk',
manage_basedir => true,
basedir => '/custom/java',
}
```
## SAP Java (sapjvm / sapmachine)
SAP also offers JVM distributions. They are mostly required for their SAP products. In earlier versions it is called "sapjvm", in newer versions they call it "sapmachine".
The defined type `java::sap` installs one or more versions of sapjvm (if version 7 or 8) or sapmachine (if version > 8) Java. `java::sap` depends on [puppet/archive](https://github.com/voxpupuli/puppet-archive).
By using this defined type with versions 7 or 8 you agree with the EULA presented at https://tools.hana.ondemand.com/developer-license-3_1.txt!
```puppet
java::sap { 'sapjvm8' :
ensure => 'present',
version => '8',
java => 'jdk',
}
java::sap { 'sapmachine11' :
ensure => 'present',
version => '11',
java => 'jdk',
}
```
To install a specific release of a SAP Java version, e.g. sapjvm 8.1.063, provide parameter `version_full`:
```puppet
java::sap { 'jdk8' :
ensure => 'present',
version_full => '8.1.063',
java => 'jdk',
}
```
To install SAP Java to a non-default basedir (defaults: /usr/lib/jvm for Debian; /usr/java for RedHat):
```puppet
java::adopt { 'sapjvm8' :
ensure => 'present',
version_full => '8.1.063',
java => 'jdk',
basedir => '/custom/java',
}
```
To ensure that a custom basedir is a directory before SAP Java is installed (note: manage separately for custom ownership or perms):
```puppet
java::adopt { 'sapjvm8' :
ensure => 'present',
version_full => '8.1.063',
java => 'jdk',
manage_basedir => true,
basedir => '/custom/java',
}
```
## Reference
For information on the classes and types, see the [REFERENCE.md](https://github.com/puppetlabs/puppetlabs-java/blob/master/REFERENCE.md). For information on the facts, see below.
For information on the classes and types, see the [REFERENCE.md](https://github.com/puppetlabs/puppetlabs-java/blob/main/REFERENCE.md). For information on the facts, see below.
### Facts
@@ -73,7 +177,7 @@ The java module includes a few facts to describe the version of Java installed o
## Limitations
For an extensive list of supported operating systems, see [metadata.json](https://github.com/puppetlabs/puppetlabs-java/blob/master/metadata.json)
For an extensive list of supported operating systems, see [metadata.json](https://github.com/puppetlabs/puppetlabs-java/blob/main/metadata.json)
This module cannot guarantee installation of Java versions that are not available on platform repositories.
@@ -90,7 +194,7 @@ OpenJDK is supported on:
* Oracle Linux 6, 7
* Scientific Linux 6
* Debian 8, 9
* Ubuntu 14.04, 16.04, 18.04
* Ubuntu 14.04, 16.04, 18.04, 20.04
* Solaris 11
* SLES 11, 12
@@ -104,6 +208,24 @@ Oracle Java is supported on:
* CentOS 7
* Red Hat Enterprise Linux (RHEL) 7
AdoptOpenJDK Java is supported on:
* CentOS
* Red Hat Enterprise Linux (RHEL)
* Amazon Linux
* Debian
SAP Java 7 and 8 (=sapjvm) are supported (by SAP) on:
* SLES 12, 15
* Oracle Linux 7, 8
* Red Hat Enterprise Linux (RHEL) 7, 8
(however installations on other distributions mostly also work well)
For SAP Java > 8 (=sapmachine) please refer to the OpenJDK list as it is based on OpenJDK and has no special requirements.
### Known issues
Where Oracle change the format of the URLs to different installer packages, the curl to fetch the package may fail with a HTTP/404 error. In this case, passing a full known good URL using the `url` parameter will allow the module to still be able to install specific versions of the JRE/JDK. Note the `version_major` and `version_minor` parameters must be passed and must match the version downloaded using the known URL in the `url` parameter.

View File

@@ -18,7 +18,9 @@ options, even though those are not in the package repositories.
**Defined types**
* [`java::adopt`](#javaadopt): Install one or more versions of AdoptOpenJDK Java.
* [`java::download`](#javadownload): Installs Java from a url location.
* [`java::sap`](#javasap): Install one or more versions of SAPJVM or Sapmachine
## Classes
@@ -101,6 +103,114 @@ Default value: `undef`
## Defined types
### java::adopt
Defined Type java::adopt
#### Parameters
The following parameters are available in the `java::adopt` defined type.
##### `ensure`
Data type: `Any`
Install or remove the package.
Default value: 'present'
##### `version`
Data type: `Any`
Version of Java to install, e.g. '8' or '9'. Default values for major and minor versions will be used.
Default value: '8'
##### `version_major`
Data type: `Any`
Major version which should be installed, e.g. '8u101' or '9.0.4'. Must be used together with version_minor.
Default value: `undef`
##### `version_minor`
Data type: `Any`
Minor version which should be installed, e.g. 'b12' (for version = '8') or '11' (for version != '8'). Must be used together with version_major.
Default value: `undef`
##### `java`
Data type: `Any`
Type of Java Standard Edition to install, jdk or jre.
Default value: 'jdk'
##### `proxy_server`
Data type: `Any`
Specify a proxy server, with port number if needed. ie: https://example.com:8080. (passed to archive)
Default value: `undef`
##### `proxy_type`
Data type: `Any`
Proxy server type (none|http|https|ftp). (passed to archive)
Default value: `undef`
##### `basedir`
Data type: `Any`
Directory under which the installation will occur. If not set, defaults to
/usr/lib/jvm for Debian and /usr/java for RedHat.
Default value: `undef`
##### `manage_basedir`
Data type: `Any`
Whether to manage the basedir directory. Defaults to false.
Note: /usr/lib/jvm is managed for Debian by default, separate from this parameter.
Default value: `true`
##### `package_type`
Data type: `Any`
Type of installation package for specified version of java_se. java_se 6 comes
in a few installation package flavors and we need to account for them.
Optional forced package types: rpm, rpmbin, tar.gz
Default value: `undef`
##### `manage_symlink`
Data type: `Any`
Whether to manage a symlink that points to the installation directory. Defaults to false.
Default value: `false`
##### `symlink_name`
Data type: `Any`
The name for the optional symlink in the installation directory.
Default value: `undef`
### java::download
Defined Type java::download
@@ -233,3 +343,93 @@ The name for the optional symlink in the installation directory.
Default value: `undef`
### java::sap
Defined Type java::sap
#### Parameters
The following parameters are available in the `java::sap` defined type.
##### `ensure`
Data type: `Any`
Install or remove the package.
Default value: 'present'
##### `version`
Data type: `Any`
Version of Java to install, e.g. '8' or '9'. Default values for full versions will be used.
Default value: '8'
##### `version_full`
Data type: `Any`
Major version which should be installed, e.g. '8.1.063' or '11.0.7'. If used, "version" parameter is ignored.
Default value: `undef`
##### `java`
Data type: `Any`
Type of Java Edition to install, jdk or jre.
Default value: 'jdk'
##### `proxy_server`
Data type: `Any`
Specify a proxy server, with port number if needed. ie: https://example.com:8080. (passed to archive)
Default value: `undef`
##### `proxy_type`
Data type: `Any`
Proxy server type (none|http|https|ftp). (passed to archive)
Default value: `undef`
##### `basedir`
Data type: `Any`
Directory under which the installation will occur. If not set, defaults to
/usr/lib/jvm for Debian and /usr/java for RedHat.
Default value: `undef`
##### `manage_basedir`
Data type: `Any`
Whether to manage the basedir directory. Defaults to false.
Note: /usr/lib/jvm is managed for Debian by default, separate from this parameter.
Default value: `true`
##### `manage_symlink`
Data type: `Any`
Whether to manage a symlink that points to the installation directory. Defaults to false.
Default value: `false`
##### `symlink_name`
Data type: `Any`
The name for the optional symlink in the installation directory.
Default value: `undef`

View File

@@ -1,3 +1,5 @@
# frozen_string_literal: true
require 'puppet_litmus/rake_tasks' if Bundler.rubygems.find_name('puppet_litmus').any?
require 'puppetlabs_spec_helper/rake_tasks'
require 'puppet-syntax/tasks/puppet-syntax'
@@ -50,7 +52,7 @@ if Bundler.rubygems.find_name('github_changelog_generator').any?
config.header = "# Change log\n\nAll notable changes to this project will be documented in this file. The format is based on [Keep a Changelog](http://keepachangelog.com/en/1.0.0/) and this project adheres to [Semantic Versioning](http://semver.org)."
config.add_pr_wo_labels = true
config.issues = false
config.merge_prefix = "### UNCATEGORIZED PRS; GO LABEL THEM"
config.merge_prefix = "### UNCATEGORIZED PRS; LABEL THEM ON GITHUB"
config.configure_sections = {
"Changed" => {
"prefix" => "### Changed",
@@ -58,11 +60,11 @@ if Bundler.rubygems.find_name('github_changelog_generator').any?
},
"Added" => {
"prefix" => "### Added",
"labels" => ["feature", "enhancement"],
"labels" => ["enhancement", "feature"],
},
"Fixed" => {
"prefix" => "### Fixed",
"labels" => ["bugfix"],
"labels" => ["bug", "documentation", "bugfix"],
},
}
end
@@ -70,16 +72,15 @@ else
desc 'Generate a Changelog from GitHub'
task :changelog do
raise <<EOM
The changelog tasks depends on unreleased features of the github_changelog_generator gem.
The changelog tasks depends on recent features of the github_changelog_generator gem.
Please manually add it to your .sync.yml for now, and run `pdk update`:
---
Gemfile:
optional:
':development':
- gem: 'github_changelog_generator'
git: 'https://github.com/skywinder/github-changelog-generator'
ref: '20ee04ba1234e9e83eb2ffb5056e23d641c7a018'
condition: "Gem::Version.new(RUBY_VERSION.dup) >= Gem::Version.new('2.2.2')"
version: '~> 1.15'
condition: "Gem::Version.new(RUBY_VERSION.dup) >= Gem::Version.new('2.3.0')"
EOM
end
end

View File

@@ -1,25 +0,0 @@
team-modules/puppetlabs-java:
PreBuild:
- source /opt/rh/rh-ruby25/enable
- echo "--- LETS update BUNDLER ---"
- bundle install --path vendor/bundle --jobs 3
Build:
- echo "--- PROVISIONING ---"
- source /opt/rh/rh-ruby25/enable
- bundle exec rake litmus:provision_list[release_checks]
- cat inventory.yaml
- echo "--- AGENT INSTALLATION ---"
- bundle exec rake litmus:install_agent
- echo "--- MODULE INSTALLATION ---"
- bundle exec rake litmus:install_module
- echo "--- TESTS RUNNING ---"
- bundle exec rake litmus:acceptance:parallel
AfterBuildSuccess:
- source /opt/rh/rh-ruby25/enable
- bundle exec rake litmus:tear_down
AfterBuildFailure:
- source /opt/rh/rh-ruby25/enable
- bundle exec rake litmus:tear_down
CommitData:
- RepoType: Git
- RepoPath: .

View File

@@ -1,5 +1,5 @@
class { 'java':
package => 'jdk-8u25-linux-x64',
java_alternative => 'jdk1.8.0_25',
java_alternative_path => '/usr/java/jdk1.8.0_25/jre/bin/java'
java_alternative_path => '/usr/java/jdk1.8.0_25/jre/bin/java',
}

View File

@@ -7,6 +7,7 @@
#
# Caveats:
# Needs to list files recursively. Returns the first match
# Needs working java_major_version fact
#
# Notes:
# None
@@ -14,13 +15,18 @@ Facter.add(:java_libjvm_path) do
confine kernel: ['Linux', 'OpenBSD']
setcode do
java_default_home = Facter.value(:java_default_home)
if java_default_home
java_libjvm_file = Dir.glob("#{java_default_home}/**/lib/**/libjvm.so")
end
if java_libjvm_file.nil? || java_libjvm_file.empty?
nil
else
File.dirname(java_libjvm_file[0])
java_major_version = Facter.value(:java_major_version)
unless java_major_version.nil?
java_libjvm_file = if java_major_version.to_i >= 11
Dir.glob("#{java_default_home}/lib/**/libjvm.so")
else
Dir.glob("#{java_default_home}/jre/lib/**/libjvm.so")
end
if java_libjvm_file.nil? || java_libjvm_file.empty?
nil
else
File.dirname(java_libjvm_file[0])
end
end
end
end

View File

@@ -17,12 +17,10 @@ Facter.add(:java_major_version) do
setcode do
java_version = Facter.value(:java_version)
unless java_version.nil?
# First part > 1, use the first part as major version
java_version_first_number = java_version.strip.split('.')[0]
java_major_version = if java_version_first_number.to_i > 1
java_version_first_number
else
java_major_version = if java_version.strip[0..1] == '1.'
java_version.strip.split('_')[0].split('.')[1]
else
java_version.strip.split('.')[0]
end
end
end

View File

@@ -3,7 +3,7 @@
# Purpose: get Java's patch level
#
# Resolution:
# Uses java_version fact splits on the patch number (after _)
# Uses java_version fact splits on the patch number (after _ for 1.x and patch number for semver'ed javas)
#
# Caveats:
# none
@@ -15,13 +15,11 @@ Facter.add(:java_patch_level) do
setcode do
java_version = Facter.value(:java_version)
unless java_version.nil?
# First part > 1, use . as seperator to get patch level
java_version_first_number = java_version.strip.split('.')[0]
java_patch_level = if java_version_first_number.to_i > 1
java_version.strip.split('.')[2]
else
java_version.strip.split('_')[1]
end
if java_version.strip[0..1] == '1.'
java_patch_level = java_version.strip.split('_')[1] unless java_version.nil?
else
java_patch_level = java_version.strip.split('.')[2] unless java_version.nil?
end
end
end
java_patch_level

View File

@@ -4,7 +4,7 @@
#
# Resolution:
# Tests for presence of java, returns nil if not present
# returns output of "java -version" and splits on \n + '"'
# returns output of "java -version" and splits on '"'
#
# Caveats:
# none
@@ -24,8 +24,7 @@ Facter.add(:java_version) do
unless ['darwin'].include? Facter.value(:operatingsystem).downcase
version = nil
if Facter::Util::Resolution.which('java')
Facter::Util::Resolution.exec('java -Xmx12m -version 2>&1').lines.each { |line| version = $LAST_MATCH_INFO[1] if %r{^.+ version \"(.+)\".*$} =~ line }
Facter::Util::Resolution.exec('java -Xmx12m -version 2>&1').lines.each { |line| version = Regexp.last_match(1) if %r{^.+ version \"(.+)\"} =~ line }
end
version
end
@@ -38,7 +37,7 @@ Facter.add(:java_version) do
setcode do
unless %r{Unable to find any JVMs matching version} =~ Facter::Util::Resolution.exec('/usr/libexec/java_home --failfast 2>&1')
version = nil
Facter::Util::Resolution.exec('java -Xmx12m -version 2>&1').lines.each { |line| version = $LAST_MATCH_INFO[1] if %r{^.+ version \"(.+)\"$} =~ line }
Facter::Util::Resolution.exec('java -Xmx12m -version 2>&1').lines.each { |line| version = Regexp.last_match(1) if %r{^.+ version \"(.+)\"} =~ line }
version
end
end

312
manifests/adopt.pp Normal file
View File

@@ -0,0 +1,312 @@
# Defined Type java::adopt
#
# @summary
# Install one or more versions of AdoptOpenJDK Java.
#
# @param ensure
# Install or remove the package.
#
# @param version
# Version of Java to install, e.g. '8' or '9'. Default values for major and minor versions will be used.
#
# @param version_major
# Major version which should be installed, e.g. '8u101' or '9.0.4'. Must be used together with version_minor.
#
# @param version_minor
# Minor version which should be installed, e.g. 'b12' (for version = '8') or '11' (for version != '8'). Must be used together with version_major.
#
# @param java
# Type of Java Standard Edition to install, jdk or jre.
#
# @param proxy_server
# Specify a proxy server, with port number if needed. ie: https://example.com:8080. (passed to archive)
#
# @param proxy_type
# Proxy server type (none|http|https|ftp). (passed to archive)
#
# @param basedir
# Directory under which the installation will occur. If not set, defaults to
# /usr/lib/jvm for Debian and /usr/java for RedHat.
#
# @param manage_basedir
# Whether to manage the basedir directory. Defaults to false.
# Note: /usr/lib/jvm is managed for Debian by default, separate from this parameter.
#
# @param package_type
# Type of installation package for specified version of java_se. java_se 6 comes
# in a few installation package flavors and we need to account for them.
# Optional forced package types: rpm, rpmbin, tar.gz
#
# @param manage_symlink
# Whether to manage a symlink that points to the installation directory. Defaults to false.
#
# @param symlink_name
# The name for the optional symlink in the installation directory.
#
define java::adopt (
$ensure = 'present',
$version = '8',
$version_major = undef,
$version_minor = undef,
$java = 'jdk',
$proxy_server = undef,
$proxy_type = undef,
$basedir = undef,
$manage_basedir = true,
$package_type = undef,
$manage_symlink = false,
$symlink_name = undef,
) {
# archive module is used to download the java package
include ::archive
# validate java Standard Edition to download
if $java !~ /(jre|jdk)/ {
fail('java must be either jre or jdk.')
}
# determine AdoptOpenJDK Java major and minor version, and installation path
if $version_major and $version_minor {
$release_major = $version_major
$release_minor = $version_minor
if ( $version_major[0] == '8' or $version_major[0] == '9' ) {
$_version = $version_major[0]
} else {
$_version = $version_major[0,2]
}
$_version_int = Numeric($_version)
if ( $java == 'jre' ) {
$_append_jre = '-jre'
} else {
$_append_jre = ''
}
# extracted folders look like this:
# jdk8u202-b08
# jdk-9.0.4+11
# jdk-10.0.2+13
# jdk-11.0.2+9
# jdk-12.0.1+12
# jdk8u202-b08-jre
# jdk-9.0.4+11-jre
# hence we need to check for the major version and build the install path according to it
if ( $_version_int == 8 ) {
$install_path = "jdk${release_major}-${release_minor}${_append_jre}"
} elsif ( $_version_int > 8 ) {
$install_path = "jdk-${release_major}+${release_minor}${_append_jre}"
} else {
fail ("unsupported version ${_version}")
}
} else {
$_version = $version
$_version_int = Numeric($_version)
# use default versions if no specific major and minor version parameters are provided
case $version {
'8' : {
$release_major = '8u202'
$release_minor = 'b08'
$install_path = "${java}8u202-b08"
}
'9' : {
$release_major = '9.0.4'
$release_minor = '11'
$install_path = "${java}-9.0.4+11"
}
# minor release is given with +<number>, however package etc. works with underscore, so we use underscore here
'10' : {
$release_major = '10.0.2'
$release_minor = '13'
$install_path = "${java}-10.0.2+13"
}
'11' : {
$release_major = '11.0.2'
$release_minor = '9'
$install_path = "${java}-11.0.2+9"
}
# minor release is given with +<number>, however package etc. works with underscore, so we use underscore here
'12' : {
$release_major = '12.0.1'
$release_minor = '12'
$install_path = "${java}-12.0.1+12"
}
default : {
$release_major = '8u202'
$release_minor = 'b08'
$install_path = "${java}8u202-b08"
}
}
}
# determine package type (exe/tar/rpm), destination directory based on OS
case $facts['kernel'] {
'Linux' : {
case $facts['os']['family'] {
'RedHat', 'Amazon' : {
if $package_type {
$_package_type = $package_type
} else {
$_package_type = 'tar.gz'
}
if $basedir {
$_basedir = $basedir
} else {
$_basedir = '/usr/java'
}
}
'Debian' : {
if $package_type {
$_package_type = $package_type
} else {
$_package_type = 'tar.gz'
}
if $basedir {
$_basedir = $basedir
} else {
$_basedir = '/usr/lib/jvm'
}
}
default : {
fail ("unsupported platform ${$facts['os']['name']}") }
}
$creates_path = "${_basedir}/${install_path}"
$os = 'linux'
$destination_dir = '/tmp/'
}
default : {
fail ( "unsupported platform ${$facts['kernel']}" ) }
}
# set java architecture nomenclature
$os_architecture = $facts['os']['architecture'] ? {
undef => $facts['architecture'],
default => $facts['os']['architecture']
}
case $os_architecture {
'i386' : { $arch = 'x86-32' }
'x86_64' : { $arch = 'x64' }
'amd64' : { $arch = 'x64' }
default : {
fail ("unsupported platform ${$os_architecture}")
}
}
# package name and path for download from github
#
# following are build based on this real life example full URLs:
#
# https://github.com/AdoptOpenJDK/openjdk8-binaries/releases/download/jdk8u202-b08/OpenJDK8U-jdk_x64_linux_hotspot_8u202b08.tar.gz
# https://github.com/AdoptOpenJDK/openjdk9-binaries/releases/download/jdk-9.0.4%2B11/OpenJDK9U-jdk_x64_linux_hotspot_9.0.4_11.tar.gz
# https://github.com/AdoptOpenJDK/openjdk10-binaries/releases/download/jdk-10.0.2%2B13/OpenJDK10U-jdk_x64_linux_hotspot_10.0.2_13.tar.gz
# https://github.com/AdoptOpenJDK/openjdk11-binaries/releases/download/jdk-11.0.2%2B9/OpenJDK11U-jdk_x64_linux_hotspot_11.0.2_9.tar.gz
# https://github.com/AdoptOpenJDK/openjdk12-binaries/releases/download/jdk-12.0.1%2B12/OpenJDK12U-jdk_x64_linux_hotspot_12.0.1_12.tar.gz
# jre just replaces jdk with jre in the archive name, but not in the path name!
# https://github.com/AdoptOpenJDK/openjdk9-binaries/releases/download/jdk-9.0.4%2B11/OpenJDK9U-jre_x64_linux_hotspot_9.0.4_11.tar.gz
if ( $_version_int == 8 ) {
$_release_minor_package_name = $release_minor
} else {
$_release_minor_package_name = "_${release_minor}"
}
case $_package_type {
'tar.gz': {
$package_name = "OpenJDK${_version}U-${java}_${arch}_${os}_hotspot_${release_major}${_release_minor_package_name}.tar.gz"
}
default: {
$package_name = "OpenJDK${_version}U-${java}_${arch}_${os}_hotspot_${release_major}${_release_minor_package_name}.tar.gz"
}
}
# naming convention changed after major version 8, setting variables to consider that
# download_folder_prefix always begins with "jdk", even for jre! see comments for package_name above
if ( $_version_int == 8 ) {
$spacer = '-'
$download_folder_prefix = 'jdk'
} else {
$spacer = '%2B'
$download_folder_prefix = 'jdk-'
}
$source = "https://github.com/AdoptOpenJDK/openjdk${_version}-binaries/releases/download/${download_folder_prefix}${release_major}${spacer}${release_minor}/${package_name}"
# full path to the installer
$destination = "${destination_dir}${package_name}"
notice ("Destination is ${destination}")
case $_package_type {
'tar.gz' : {
$install_command = "tar -zxf ${destination} -C ${_basedir}"
}
default : {
$install_command = "tar -zxf ${destination} -C ${_basedir}"
}
}
case $ensure {
'present' : {
archive { $destination :
ensure => present,
source => $source,
extract_path => '/tmp',
cleanup => false,
creates => $creates_path,
proxy_server => $proxy_server,
proxy_type => $proxy_type,
}
case $facts['kernel'] {
'Linux' : {
case $facts['os']['family'] {
'Debian' : {
ensure_resource('file', $_basedir, {
ensure => directory,
})
$install_requires = [Archive[$destination], File[$_basedir]]
}
default : {
$install_requires = [Archive[$destination]]
}
}
if $manage_basedir {
if (!defined(File[$_basedir])) {
file { $_basedir:
ensure => 'directory',
before => Exec["Install AdoptOpenJDK java ${java} ${_version} ${release_major} ${release_minor}"],
}
}
}
exec { "Install AdoptOpenJDK java ${java} ${_version} ${release_major} ${release_minor}" :
path => '/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin',
command => $install_command,
creates => $creates_path,
require => $install_requires
}
if ($manage_symlink and $symlink_name) {
file { "${_basedir}/${symlink_name}":
ensure => link,
target => $creates_path,
require => Exec["Install AdoptOpenJDK java ${java} ${_version} ${release_major} ${release_minor}"],
}
}
}
default : {
fail ("unsupported platform ${$facts['kernel']}")
}
}
}
default : {
notice ("Action ${ensure} not supported.")
}
}
}

View File

@@ -1,6 +1,6 @@
# @api private
class java::config ( ) {
case $::osfamily {
case $facts['os']['family'] {
'Debian': {
if $java::use_java_alternative != undef and $java::use_java_alternative_path != undef {
exec { 'update-java-alternatives':
@@ -26,7 +26,7 @@ class java::config ( ) {
path => '/usr/bin:/usr/sbin:/bin:/sbin',
command => "alternatives --install /usr/bin/java java ${$java::use_java_alternative_path} 20000" ,
unless => "alternatives --display java | grep -q ${$java::use_java_alternative_path}",
before => Exec['update-java-alternatives']
before => Exec['update-java-alternatives'],
}
}

View File

@@ -72,7 +72,7 @@ define java::download(
) {
# archive module is used to download the java package
include ::archive
include archive
# validate java Standard Edition to download
if $java_se !~ /(jre|jdk)/ {
@@ -183,7 +183,7 @@ define java::download(
# set java architecture nomenclature
$os_architecture = $facts['os']['architecture'] ? {
undef => $facts['architecture'],
undef => $facts['os']['architecture'],
default => $facts['os']['architecture']
}
@@ -284,14 +284,14 @@ define java::download(
path => '/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin',
command => $install_command,
creates => $creates_path,
require => $install_requires
require => $install_requires,
}
if ($manage_symlink and $symlink_name) {
file { "${_basedir}/${symlink_name}":
ensure => link,
target => $creates_path,
require => Exec["Install Oracle java_se ${java_se} ${version} ${release_major} ${release_minor}"]
require => Exec["Install Oracle java_se ${java_se} ${version} ${release_major} ${release_minor}"],
}
}
@@ -312,7 +312,7 @@ define java::download(
require => [
Package['unzip'],
Exec["Install Oracle java_se ${java_se} ${version} ${release_major} ${release_minor}"]
]
],
}
}
}

View File

@@ -101,7 +101,7 @@ class java(
$use_java_package_name == undef or $use_java_alternative == undef or
$use_java_alternative_path == undef or $use_java_home == undef
) and (
! has_key($::java::params::java, $distribution)
! has_key($java::params::java, $distribution)
)) {
fail("Java distribution ${distribution} is not supported. Missing default values.")
}
@@ -111,7 +111,7 @@ class java(
default => '--jre'
}
if $::osfamily == 'Debian' {
if $facts['os']['family'] == 'Debian' {
# Needed for update-java-alternatives
package { 'java-common':
ensure => present,

View File

@@ -6,23 +6,23 @@
# @api private
class java::params {
case $::osfamily {
case $facts['os']['family'] {
'RedHat': {
case $::operatingsystem {
case $facts['os']['name'] {
'RedHat', 'CentOS', 'OracleLinux', 'Scientific', 'OEL', 'SLC', 'CloudLinux': {
if (versioncmp($::operatingsystemrelease, '5.0') < 0) {
if (versioncmp($facts['os']['release']['full'], '5.0') < 0) {
$jdk_package = 'java-1.6.0-sun-devel'
$jre_package = 'java-1.6.0-sun'
$java_home = '/usr/lib/jvm/java-1.6.0-sun/jre/'
}
# See cde7046 for why >= 5.0 < 6.3
elsif (versioncmp($::operatingsystemrelease, '6.3') < 0) {
elsif (versioncmp($facts['os']['release']['full'], '6.3') < 0) {
$jdk_package = 'java-1.6.0-openjdk-devel'
$jre_package = 'java-1.6.0-openjdk'
$java_home = '/usr/lib/jvm/java-1.6.0/'
}
# See PR#160 / c8e46b5 for why >= 6.3 < 7.1
elsif (versioncmp($::operatingsystemrelease, '7.1') < 0) {
elsif (versioncmp($facts['os']['release']['full'], '7.1') < 0) {
$jdk_package = 'java-1.7.0-openjdk-devel'
$jre_package = 'java-1.7.0-openjdk'
$java_home = '/usr/lib/jvm/java-1.7.0/'
@@ -34,23 +34,23 @@ class java::params {
}
}
'Fedora': {
if (versioncmp($::operatingsystemrelease, '21') < 0) {
if (versioncmp($facts['os']['release']['full'], '21') < 0) {
$jdk_package = 'java-1.7.0-openjdk-devel'
$jre_package = 'java-1.7.0-openjdk'
$java_home = "/usr/lib/jvm/java-1.7.0-openjdk-${::architecture}/"
$java_home = "/usr/lib/jvm/java-1.7.0-openjdk-${facts['os']['architecture']}/"
}
else {
$jdk_package = 'java-1.8.0-openjdk-devel'
$jre_package = 'java-1.8.0-openjdk'
$java_home = "/usr/lib/jvm/java-1.8.0-openjdk-${::architecture}/"
$java_home = "/usr/lib/jvm/java-1.8.0-openjdk-${facts['os']['architecture']}/"
}
}
'Amazon': {
$jdk_package = 'java-1.7.0-openjdk-devel'
$jre_package = 'java-1.7.0-openjdk'
$java_home = "/usr/lib/jvm/java-1.7.0-openjdk-${::architecture}/"
$java_home = "/usr/lib/jvm/java-1.7.0-openjdk-${facts['os']['architecture']}/"
}
default: { fail("unsupported os ${::operatingsystem}") }
default: { fail("unsupported os ${facts['os']['name']}") }
}
$java = {
'jdk' => {
@@ -64,16 +64,16 @@ class java::params {
}
}
'Debian': {
$oracle_architecture = $::architecture ? {
$oracle_architecture = $facts['os']['architecture'] ? {
'amd64' => 'x64',
default => $::architecture
default => $facts['os']['architecture']
}
$openjdk_architecture = $::architecture ? {
$openjdk_architecture = $facts['os']['architecture'] ? {
'aarch64' => 'arm64',
'armv7l' => 'armhf',
default => $::architecture
default => $facts['os']['architecture']
}
case $::operatingsystemmajrelease {
case $facts['os']['release']['major'] {
'7', '8', '14.04': {
$java = {
'jdk' => {
@@ -84,7 +84,7 @@ class java::params {
},
'jre' => {
'package' => 'openjdk-7-jre-headless',
'alternative' => "java-1.7.0-openjdk-${::architecture}",
'alternative' => "java-1.7.0-openjdk-${facts['os']['architecture']}",
'alternative_path' => "/usr/lib/jvm/java-1.7.0-openjdk-${openjdk_architecture}/bin/java",
'java_home' => "/usr/lib/jvm/java-1.7.0-openjdk-${openjdk_architecture}/",
},
@@ -139,10 +139,10 @@ class java::params {
'alternative' => "java-1.8.0-openjdk-${openjdk_architecture}",
'alternative_path' => "/usr/lib/jvm/java-1.8.0-openjdk-${openjdk_architecture}/bin/java",
'java_home' => "/usr/lib/jvm/java-1.8.0-openjdk-${openjdk_architecture}/",
}
},
}
}
'10', '18.04', '18.10', '19.04', '19.10': {
'10', '18.04', '18.10', '19.04', '19.10', '20.04': {
$java = {
'jdk' => {
'package' => 'openjdk-11-jdk',
@@ -155,10 +155,10 @@ class java::params {
'alternative' => "java-1.11.0-openjdk-${openjdk_architecture}",
'alternative_path' => "/usr/lib/jvm/java-1.11.0-openjdk-${openjdk_architecture}/bin/java",
'java_home' => "/usr/lib/jvm/java-1.11.0-openjdk-${openjdk_architecture}/",
}
},
}
}
default: { fail("unsupported release ${::operatingsystemmajrelease}") }
default: { fail("unsupported release ${facts['os']['release']['major']}") }
}
}
'OpenBSD': {
@@ -198,17 +198,17 @@ class java::params {
}
}
'Suse': {
case $::operatingsystem {
case $facts['os']['name'] {
'SLES': {
if (versioncmp($::operatingsystemrelease, '12.1') >= 0) {
if (versioncmp($facts['os']['release']['full'], '12.1') >= 0) {
$jdk_package = 'java-1_8_0-openjdk-devel'
$jre_package = 'java-1_8_0-openjdk'
$java_home = '/usr/lib64/jvm/java-1.8.0-openjdk-1.8.0/'
} elsif (versioncmp($::operatingsystemrelease, '12') >= 0) {
} elsif (versioncmp($facts['os']['release']['full'], '12') >= 0) {
$jdk_package = 'java-1_7_0-openjdk-devel'
$jre_package = 'java-1_7_0-openjdk'
$java_home = '/usr/lib64/jvm/java-1.7.0-openjdk-1.7.0/'
} elsif (versioncmp($::operatingsystemrelease, '11.4') >= 0) {
} elsif (versioncmp($facts['os']['release']['full'], '11.4') >= 0) {
$jdk_package = 'java-1_7_1-ibm-devel'
$jre_package = 'java-1_7_1-ibm'
$java_home = '/usr/lib64/jvm/java-1.7.1-ibm-1.7.1/'
@@ -255,6 +255,6 @@ class java::params {
},
}
}
default: { fail("unsupported platform ${::osfamily}") }
default: { fail("unsupported platform ${facts['os']['family']}") }
}
}

227
manifests/sap.pp Normal file
View File

@@ -0,0 +1,227 @@
# Defined Type java::sap
#
# @summary
# Install one or more versions of SAPJVM or Sapmachine
#
# @param ensure
# Install or remove the package.
#
# @param version
# Version of Java to install, e.g. '8' or '9'. Default values for full versions will be used.
#
# @param version_full
# Major version which should be installed, e.g. '8.1.063' or '11.0.7'. If used, "version" parameter is ignored.
#
# @param java
# Type of Java Edition to install, jdk or jre.
#
# @param proxy_server
# Specify a proxy server, with port number if needed. ie: https://example.com:8080. (passed to archive)
#
# @param proxy_type
# Proxy server type (none|http|https|ftp). (passed to archive)
#
# @param basedir
# Directory under which the installation will occur. If not set, defaults to
# /usr/lib/jvm for Debian and /usr/java for RedHat.
#
# @param manage_basedir
# Whether to manage the basedir directory. Defaults to false.
# Note: /usr/lib/jvm is managed for Debian by default, separate from this parameter.
#
# @param manage_symlink
# Whether to manage a symlink that points to the installation directory. Defaults to false.
#
# @param symlink_name
# The name for the optional symlink in the installation directory.
#
define java::sap (
$ensure = 'present',
$version = '8',
$version_full = undef,
$java = 'jdk',
$proxy_server = undef,
$proxy_type = undef,
$basedir = undef,
$manage_basedir = true,
$manage_symlink = false,
$symlink_name = undef,
) {
# archive module is used to download the java package
include ::archive
# validate java edition to download
if $java !~ /(jre|jdk)/ {
fail('java must be either jre or jdk.')
}
# determine version and installation path
if $version_full {
$_version_array = $version_full.scanf('%i')
$_version_int = $_version_array[0]
$_version_full = $version_full
} else {
$_version = $version
$_version_int = Numeric($_version)
# use default versions if full version parameter is not provided
case $version {
'7' : {
$_version_full = '7.1.072'
if ($java != 'jdk') {
fail('java parameter is not jdk. jre is not supported on version 7')
}
}
'8' : {
$_version_full = '8.1.065'
if ($java != 'jdk') {
fail('java parameter is not jdk. jre is not supported on version 8')
}
}
'11' : {
$_version_full = '11.0.7'
}
'14' : {
$_version_full = '14.0.1'
}
default : {
fail("${version} not yet supported by module")
}
}
}
# extracted folders look like this:
# sapjvm_8
# sapmachine-jdk-11.0.7
if ($_version_int == 7 or $_version_int == 8) {
$_creates_folder = "sapjvm_${_version_int}"
} else {
$_creates_folder = "sapmachine-${java}-${_version_full}"
}
# determine destination directory based on OS
case $facts['kernel'] {
'Linux' : {
case $facts['os']['family'] {
'RedHat', 'Amazon' : {
if $basedir {
$_basedir = $basedir
} else {
$_basedir = '/usr/java'
}
}
'Debian' : {
if $basedir {
$_basedir = $basedir
} else {
$_basedir = '/usr/lib/jvm'
}
}
default : {
fail ("unsupported os family ${$facts['os']['name']}") }
}
$creates_path = "${_basedir}/${_creates_folder}"
}
default : {
fail ( "unsupported platform ${$facts['kernel']}" ) }
}
$_os_architecture = $facts['os']['architecture'] ? {
undef => $facts['architecture'],
default => $facts['os']['architecture']
}
if ($_os_architecture != 'x86_64' and $_os_architecture != 'amd64') {
fail ("unsupported platform ${_os_architecture}")
}
# download links look like this (examples):
# https://tools.hana.ondemand.com/additional/sapjvm-8.1.065-linux-x64.zip
# https://github.com/SAP/SapMachine/releases/download/sapmachine-11.0.7/sapmachine-jre-11.0.7_linux-x64_bin.tar.gz
# https://github.com/SAP/SapMachine/releases/download/sapmachine-11.0.7/sapmachine-jdk-11.0.7_linux-x64_bin.tar.gz
# https://github.com/SAP/SapMachine/releases/download/sapmachine-14.0.1/sapmachine-jdk-14.0.1_linux-x64_bin.tar.gz
# cookie is currently at version 3.1, but may be changed one day. It is only required for download at SAP.
# by using this module you agree with the EULA presented at tools.hana.ondemand.com download page!
# Github does not require it
if ( $_version_int == 7 or $_version_int == 8 ) {
# sapjvm download
$archive_filename = "sapjvm-${_version_full}-linux-x64.zip"
$source = "https://tools.hana.ondemand.com/additional/${archive_filename}"
$cookie = 'eula_3_1_agreed=tools.hana.ondemand.com/developer-license-3_1.txt'
if (!defined(Package['unzip'])) {
package { 'unzip':
ensure => 'present',
before => Archive["/tmp/${archive_filename}"],
}
}
} else {
$archive_filename = "sapmachine-${java}-${_version_full}_linux-x64_bin.tar.gz"
$source = "https://github.com/SAP/SapMachine/releases/download/sapmachine-${_version_full}/${archive_filename}"
$cookie = undef
if (!defined(Package['tar'])) {
package { 'tar':
ensure => 'present',
before => Archive["/tmp/${archive_filename}"],
}
}
if (!defined(Package['gzip'])) {
package { 'gzip':
ensure => 'present',
before => Archive["/tmp/${archive_filename}"],
}
}
}
case $ensure {
'present' : {
case $facts['kernel'] {
'Linux' : {
if ($manage_basedir or $facts['os']['family'] == 'Debian'){
if (!defined(File[$_basedir])) {
file { $_basedir:
ensure => 'directory',
before => Archive["/tmp/${archive_filename}"],
}
}
}
archive { "/tmp/${archive_filename}" :
ensure => present,
source => $source,
extract => true,
extract_path => $_basedir,
cleanup => false,
creates => $creates_path,
cookie => $cookie,
proxy_server => $proxy_server,
proxy_type => $proxy_type,
}
if ($manage_symlink and $symlink_name) {
file { "${_basedir}/${symlink_name}":
ensure => link,
target => $creates_path,
require => Archive["/tmp/${archive_filename}"],
}
}
}
default : {
fail ("unsupported platform ${$facts['kernel']}")
}
}
}
default : {
notice ("Action ${ensure} not supported.")
}
}
}

View File

@@ -1,6 +1,6 @@
{
"name": "puppetlabs-java",
"version": "6.0.0",
"version": "6.4.0",
"author": "puppetlabs",
"summary": "Installs the correct Java package on various platforms.",
"license": "Apache-2.0",
@@ -60,8 +60,10 @@
{
"operatingsystem": "Ubuntu",
"operatingsystemrelease": [
"14.04",
"16.04",
"18.04"
"18.04",
"20.04"
]
},
{
@@ -79,7 +81,7 @@
"version_requirement": ">= 5.5.10 < 7.0.0"
}
],
"template-url": "https://github.com/puppetlabs/pdk-templates/#master",
"template-ref": "1.14.1-0-g0b5b39b",
"pdk-version": "1.14.0"
"template-url": "https://github.com/puppetlabs/pdk-templates#main",
"template-ref": "heads/main-0-gd610ead",
"pdk-version": "1.18.1"
}

View File

@@ -1,16 +1,32 @@
---
default:
provisioner: docker
images: ['waffleimage/debian8']
travis_deb:
provisioner: docker
images: ['debian:8', 'debian:9', 'ubuntu:16.04', 'ubuntu:18.04']
travis_el:
provisioner: docker_exp
images: ['centos:6', 'centos:7', 'oraclelinux:6', 'oraclelinux:7', 'scientificlinux/sl:6', 'scientificlinux/sl:7']
images: ['litmusimage/debian:8']
vagrant:
provisioner: vagrant
images: ['centos/7', 'generic/ubuntu1804']
release_checks:
provisioner: vmpooler
images: ['redhat-6-x86_64', 'redhat-7-x86_64', 'redhat-8-x86_64', 'centos-6-x86_64', 'centos-7-x86_64', 'centos-8-x86_64', 'oracle-6-x86_64', 'oracle-7-x86_64', 'scientific-6-x86_64', 'scientific-7-x86_64', 'debian-8-x86_64', 'debian-9-x86_64', 'debian-10-x86_64', 'ubuntu-1604-x86_64', 'ubuntu-1804-x86_64', 'sles-11-x86_64', 'sles-12-x86_64', 'sles-15-x86_64']
travis_deb:
provisioner: docker
images: ['litmusimage/debian:8', 'litmusimage/debian:9', 'litmusimage/debian:10']
travis_ub_5:
provisioner: docker
images: ['litmusimage/ubuntu:14.04', 'litmusimage/ubuntu:16.04', 'litmusimage/ubuntu:18.04']
travis_ub_6:
provisioner: docker
images: ['litmusimage/ubuntu:14.04', 'litmusimage/ubuntu:16.04', 'litmusimage/ubuntu:18.04', 'litmusimage/ubuntu:20.04']
travis_el6:
provisioner: docker
images: ['litmusimage/centos:6', 'litmusimage/oraclelinux:6', 'litmusimage/scientificlinux:6']
travis_el7:
provisioner: docker
images: ['litmusimage/centos:7', 'litmusimage/oraclelinux:7', 'litmusimage/scientificlinux:7']
travis_el8:
provisioner: docker
images: ['litmusimage/centos:8']
release_checks_5:
provisioner: abs
images: ['redhat-6-x86_64', 'redhat-7-x86_64', 'redhat-8-x86_64', 'centos-6-x86_64', 'centos-7-x86_64', 'centos-8-x86_64', 'oracle-6-x86_64', 'oracle-7-x86_64', 'scientific-6-x86_64', 'scientific-7-x86_64', 'debian-8-x86_64', 'debian-9-x86_64', 'debian-10-x86_64', 'ubuntu-1404-x86_64', 'ubuntu-1604-x86_64', 'ubuntu-1804-x86_64', 'sles-12-x86_64', 'sles-15-x86_64']
release_checks_6:
provisioner: abs
images: ['redhat-6-x86_64', 'redhat-7-x86_64', 'redhat-8-x86_64', 'centos-6-x86_64', 'centos-7-x86_64', 'centos-8-x86_64', 'oracle-6-x86_64', 'oracle-7-x86_64', 'scientific-6-x86_64', 'scientific-7-x86_64', 'debian-8-x86_64', 'debian-9-x86_64', 'debian-10-x86_64', 'ubuntu-1404-x86_64', 'ubuntu-1604-x86_64', 'ubuntu-1804-x86_64', 'ubuntu-2004-x86_64', 'sles-12-x86_64', 'sles-15-x86_64']

View File

@@ -1,4 +1,5 @@
require 'spec_helper_acceptance'
require 'pry'
java_class_jre = "class { 'java':\n"\
" distribution => 'jre',\n"\
@@ -41,6 +42,151 @@ bogus_alternative = "class { 'java':\n"\
" java_alternative_path => '/whatever',\n"\
'}'
# Oracle installs are disabled by default, because the links to valid oracle installations
# change often. Look the parameters up from the Oracle download URLs at https://java.oracle.com and
# enable the tests:
oracle_enabled = false
oracle_version_major = '8'
oracle_version_minor = '201'
oracle_version_build = '09'
oracle_hash = '42970487e3af4f5aa5bca3f542482c60'
install_oracle_jdk_jre = <<EOL
java::oracle {
'test_oracle_jre':
version => '#{oracle_version_major}',
version_major => '#{oracle_version_major}u#{oracle_version_minor}',
version_minor => 'b#{oracle_version_build}',
url_hash => '#{oracle_hash}',
java_se => 'jre',
}
java::oracle {
'test_oracle_jdk':
version => '#{oracle_version_major}',
version_major => '#{oracle_version_major}u#{oracle_version_minor}',
version_minor => 'b#{oracle_version_build}',
url_hash => '#{oracle_hash}',
java_se => 'jdk',
}
EOL
install_oracle_jre_jce = <<EOL
java::oracle {
'test_oracle_jre':
version => '#{oracle_version_major}',
version_major => '#{oracle_version_major}u#{oracle_version_minor}',
version_minor => 'b#{oracle_version_build}',
url_hash => '#{oracle_hash}',
java_se => 'jre',
jce => true,
}
EOL
install_oracle_jdk_jce = <<EOL
java::oracle {
'test_oracle_jdk':
version => '#{oracle_version_major}',
version_major => '#{oracle_version_major}u#{oracle_version_minor}',
version_minor => 'b#{oracle_version_build}',
url_hash => '#{oracle_hash}',
java_se => 'jdk',
jce => true,
}
EOL
# AdoptOpenJDK URLs are quite generic, so tests are enabled by default
# We need to test version 8 and >8 (here we use 9), because namings are different after version 8
adopt_enabled = true unless os[:family].casecmp('SLES').zero?
adopt_version8_major = '8'
adopt_version8_minor = '202'
adopt_version8_build = '08'
adopt_version9_major = '9'
adopt_version9_full = '9.0.4'
adopt_version9_build = '11'
install_adopt_jdk_jre = <<EOL
java::adopt {
'test_adopt_jre_version8':
version => '#{adopt_version8_major}',
version_major => '#{adopt_version8_major}u#{adopt_version8_minor}',
version_minor => 'b#{adopt_version8_build}',
java => 'jre',
}
java::adopt {
'test_adopt_jdk_version8':
version => '#{adopt_version8_major}',
version_major => '#{adopt_version8_major}u#{adopt_version8_minor}',
version_minor => 'b#{adopt_version8_build}',
java => 'jdk',
}
java::adopt {
'test_adopt_jre_version9':
version => '#{adopt_version9_major}',
version_major => '#{adopt_version9_full}',
version_minor => '#{adopt_version9_build}',
java => 'jre',
}
java::adopt {
'test_adopt_jdk_version9':
version => '#{adopt_version9_major}',
version_major => '#{adopt_version9_full}',
version_minor => '#{adopt_version9_build}',
java => 'jdk',
}
EOL
sap_enabled = true
sap_version7 = '7'
sap_version7_full = '7.1.072'
sap_version8 = '8'
sap_version8_full = '8.1.065'
sap_version11 = '11'
sap_version11_full = '11.0.7'
sap_version14 = '14'
sap_version14_full = '14.0.1'
install_sap_jdk_jre = <<EOL
java::sap {
'test_sap_jdk_version7':
version => '#{sap_version7}',
version_full => '#{sap_version7_full}',
java => 'jdk',
}
java::sap {
'test_sap_jdk_version8':
version => '#{sap_version8}',
version_full => '#{sap_version8_full}',
java => 'jdk',
}
java::sap {
'test_sap_jre_version11':
version => '#{sap_version11}',
version_full => '#{sap_version11_full}',
java => 'jre',
}
java::sap {
'test_sap_jdk_version11':
version => '#{sap_version11}',
version_full => '#{sap_version11_full}',
java => 'jdk',
}
java::sap {
'test_sap_jre_version14':
version => '#{sap_version14}',
version_full => '#{sap_version14_full}',
java => 'jre',
}
java::sap {
'test_sap_jdk_version14':
version => '#{sap_version14}',
version_full => '#{sap_version14_full}',
java => 'jdk',
}
EOL
context 'installing java jre', unless: UNSUPPORTED_PLATFORMS.include?(os[:family]) do
it 'installs jre' do
idempotent_apply(java_class_jre)
@@ -78,3 +224,57 @@ context 'with failure cases' do
end
end
end
context 'java::oracle', if: oracle_enabled, unless: UNSUPPORTED_PLATFORMS.include?(os[:family]) do
let(:install_path) do
(os[:family] == 'redhat') ? '/usr/java' : '/usr/lib/jvm'
end
let(:version_suffix) do
(os[:family] == 'redhat') ? '-amd64' : ''
end
it 'installs oracle jdk and jre' do
idempotent_apply(install_oracle_jdk_jre)
jdk_result = shell("test ! -e #{install_path}/jdk1.#{oracle_version_major}.0_#{oracle_version_minor}#{version_suffix}/jre/lib/security/local_policy.jar")
jre_result = shell("test ! -e #{install_path}/jre1.#{oracle_version_major}.0_#{oracle_version_minor}#{version_suffix}/lib/security/local_policy.jar")
expect(jdk_result.exit_code).to eq(0)
expect(jre_result.exit_code).to eq(0)
end
it 'installs oracle jdk with jce' do
idempotent_apply(install_oracle_jdk_jce)
result = shell("test -e #{install_path}/jdk1.#{oracle_version_major}.0_#{oracle_version_minor}#{version_suffix}/jre/lib/security/local_policy.jar")
expect(result.exit_code).to eq(0)
end
it 'installs oracle jre with jce' do
idempotent_apply(install_oracle_jre_jce)
result = shell("test -e #{install_path}/jre1.#{oracle_version_major}.0_#{oracle_version_minor}#{version_suffix}/lib/security/local_policy.jar")
expect(result.exit_code).to eq(0)
end
end
context 'java::adopt', if: adopt_enabled, unless: UNSUPPORTED_PLATFORMS.include?(os[:family]) do
let(:install_path) do
(os[:family] == 'redhat') ? '/usr/java' : '/usr/lib/jvm'
end
let(:version_suffix) do
(os[:family] == 'redhat') ? '-amd64' : ''
end
it 'installs adopt jdk and jre' do
idempotent_apply(install_adopt_jdk_jre)
end
end
context 'java::adopt', if: sap_enabled && ['Sles'].include?(os[:family]), unless: UNSUPPORTED_PLATFORMS.include?(os[:family]) do
let(:install_path) do
(os[:family] == 'redhat') ? '/usr/java' : '/usr/lib/jvm'
end
it 'installs adopt jdk and jre' do
idempotent_apply(install_sap_jdk_jre)
end
end

View File

@@ -1,36 +1,36 @@
require 'spec_helper'
describe 'java', type: :class do
context 'when select openjdk for Centos 5.8' do
let(:facts) { { osfamily: 'RedHat', operatingsystem: 'Centos', operatingsystemrelease: '5.8', architecture: 'x86_64' } }
context 'when select openjdk for CentOS 5.8' do
let(:facts) { { os: { family: 'RedHat', name: 'CentOS', release: { full: '5.8' }, architecture: 'x86_64' } } }
it { is_expected.to contain_package('java').with_name('java-1.6.0-openjdk-devel') }
it { is_expected.to contain_file_line('java-home-environment').with_line('JAVA_HOME=/usr/lib/jvm/java-1.6.0/') }
end
context 'when select openjdk for Centos 6.3' do
let(:facts) { { osfamily: 'RedHat', operatingsystem: 'Centos', operatingsystemrelease: '6.3', architecture: 'x86_64' } }
context 'when select openjdk for CentOS 6.3' do
let(:facts) { { os: { family: 'RedHat', name: 'CentOS', release: { full: '6.3' }, architecture: 'x86_64' } } }
it { is_expected.to contain_package('java').with_name('java-1.7.0-openjdk-devel') }
it { is_expected.to contain_file_line('java-home-environment').with_line('JAVA_HOME=/usr/lib/jvm/java-1.7.0/') }
end
context 'when select openjdk for Centos 7.1.1503' do
let(:facts) { { osfamily: 'RedHat', operatingsystem: 'Centos', operatingsystemrelease: '7.1.1503', architecture: 'x86_64' } }
context 'when select openjdk for CentOS 7.1.1503' do
let(:facts) { { os: { family: 'RedHat', name: 'CentOS', release: { full: '7.1.1503' }, architecture: 'x86_64' } } }
it { is_expected.to contain_package('java').with_name('java-1.8.0-openjdk-devel') }
it { is_expected.to contain_file_line('java-home-environment').with_line('JAVA_HOME=/usr/lib/jvm/java-1.8.0/') }
end
context 'when select openjdk for Centos 6.2' do
let(:facts) { { osfamily: 'RedHat', operatingsystem: 'Centos', operatingsystemrelease: '6.2', architecture: 'x86_64' } }
context 'when select openjdk for CentOS 6.2' do
let(:facts) { { os: { family: 'RedHat', name: 'CentOS', release: { full: '6.2' }, architecture: 'x86_64' } } }
it { is_expected.to contain_package('java').with_name('java-1.6.0-openjdk-devel') }
it { is_expected.not_to contain_exec('update-java-alternatives') }
end
context 'when select Oracle JRE with alternatives for Centos 6.3' do
let(:facts) { { osfamily: 'RedHat', operatingsystem: 'Centos', operatingsystemrelease: '6.3', architecture: 'x86_64' } }
context 'when select Oracle JRE with alternatives for CentOS 6.3' do
let(:facts) { { os: { family: 'RedHat', name: 'CentOS', release: { full: '6.3' }, architecture: 'x86_64' } } }
let(:params) { { 'package' => 'jre', 'java_alternative' => '/usr/bin/java', 'java_alternative_path' => '/usr/java/jre1.7.0_67/bin/java' } }
it { is_expected.to contain_package('java').with_name('jre') }
@@ -38,23 +38,23 @@ describe 'java', type: :class do
it { is_expected.to contain_exec('update-java-alternatives').with_command('alternatives --set java /usr/java/jre1.7.0_67/bin/java') }
end
context 'when select passed value for Centos 5.3' do
let(:facts) { { osfamily: 'RedHat', operatingsystem: 'Centos', operatingsystemrelease: '5.3', architecture: 'x86_64' } }
context 'when select passed value for CentOS 5.3' do
let(:facts) { { os: { family: 'RedHat', name: 'CentOS', release: { full: '5.3' }, architecture: 'x86_64' } } }
let(:params) { { 'package' => 'jdk', 'java_home' => '/usr/local/lib/jre' } }
it { is_expected.to contain_package('java').with_name('jdk') }
it { is_expected.not_to contain_exec('update-java-alternatives') }
end
context 'when select default for Centos 5.3' do
let(:facts) { { osfamily: 'RedHat', operatingsystem: 'Centos', operatingsystemrelease: '5.3', architecture: 'x86_64' } }
context 'when select default for CentOS 5.3' do
let(:facts) { { os: { family: 'RedHat', name: 'CentOS', release: { full: '5.3' }, architecture: 'x86_64' } } }
it { is_expected.to contain_package('java').with_name('java-1.6.0-openjdk-devel') }
it { is_expected.not_to contain_exec('update-java-alternatives') }
end
context 'when select jdk for Debian Buster (10.0)' do
let(:facts) { { osfamily: 'Debian', operatingsystem: 'Debian', lsbdistcodename: 'buster', operatingsystemmajrelease: '10', architecture: 'amd64' } }
let(:facts) { { os: { family: 'Debian', name: 'Debian', lsb: { distcodename: 'buster' }, release: { major: '10' }, architecture: 'amd64' } } }
let(:params) { { 'distribution' => 'jdk' } }
it { is_expected.to contain_package('java').with_name('openjdk-11-jdk') }
@@ -62,7 +62,7 @@ describe 'java', type: :class do
end
context 'when select jre for Debian Buster (10.0)' do
let(:facts) { { osfamily: 'Debian', operatingsystem: 'Debian', lsbdistcodename: 'buster', operatingsystemmajrelease: '10', architecture: 'amd64' } }
let(:facts) { { os: { family: 'Debian', name: 'Debian', lsb: { distcodename: 'buster' }, release: { major: '10' }, architecture: 'amd64' } } }
let(:params) { { 'distribution' => 'jre' } }
it { is_expected.to contain_package('java').with_name('openjdk-11-jre-headless') }
@@ -70,7 +70,7 @@ describe 'java', type: :class do
end
context 'when select jdk for Ubuntu Trusty (14.04)' do
let(:facts) { { osfamily: 'Debian', operatingsystem: 'Ubuntu', lsbdistcodename: 'trusty', operatingsystemmajrelease: '14.04', architecture: 'amd64' } }
let(:facts) { { os: { family: 'Debian', name: 'Ubuntu', lsb: { distcodename: 'trusty' }, release: { major: '14.04' }, architecture: 'amd64' } } }
let(:params) { { 'distribution' => 'jdk' } }
it { is_expected.to contain_package('java').with_name('openjdk-7-jdk') }
@@ -78,7 +78,7 @@ describe 'java', type: :class do
end
context 'when select jre for Ubuntu Trusty (14.04)' do
let(:facts) { { osfamily: 'Debian', operatingsystem: 'Ubuntu', lsbdistcodename: 'trusty', operatingsystemmajrelease: '14.04', architecture: 'amd64' } }
let(:facts) { { os: { family: 'Debian', name: 'Ubuntu', lsb: { distcodename: 'trusty' }, release: { major: '14.04' }, architecture: 'amd64' } } }
let(:params) { { 'distribution' => 'jre' } }
it { is_expected.to contain_package('java').with_name('openjdk-7-jre-headless') }
@@ -86,7 +86,7 @@ describe 'java', type: :class do
end
context 'when select jdk for Ubuntu xenial (16.04) on ARM' do
let(:facts) { { osfamily: 'Debian', operatingsystem: 'Ubuntu', lsbdistcodename: 'xenial', operatingsystemmajrelease: '16.04', architecture: 'armv7l' } }
let(:facts) { { os: { family: 'Debian', name: 'Ubuntu', lsb: { distcodename: 'xenial' }, release: { major: '16.04' }, architecture: 'armv7l' } } }
let(:params) { { 'distribution' => 'jdk' } }
it { is_expected.to contain_package('java').with_name('openjdk-8-jdk') }
@@ -94,7 +94,7 @@ describe 'java', type: :class do
end
context 'when select jdk for Ubuntu xenial (16.04) on ARM64' do
let(:facts) { { osfamily: 'Debian', operatingsystem: 'Ubuntu', lsbdistcodename: 'xenial', operatingsystemmajrelease: '16.04', architecture: 'aarch64' } }
let(:facts) { { os: { family: 'Debian', name: 'Ubuntu', lsb: { distcodename: 'xenial' }, release: { major: '16.04' }, architecture: 'aarch64' } } }
let(:params) { { 'distribution' => 'jdk' } }
it { is_expected.to contain_package('java').with_name('openjdk-8-jdk') }
@@ -102,26 +102,26 @@ describe 'java', type: :class do
end
context 'when select openjdk for Oracle Linux' do
let(:facts) { { osfamily: 'RedHat', operatingsystem: 'OracleLinux', operatingsystemrelease: '6.4', architecture: 'x86_64' } }
let(:facts) { { os: { family: 'RedHat', name: 'OracleLinux', release: { full: '6.4' }, architecture: 'x86_64' } } }
it { is_expected.to contain_package('java').with_name('java-1.7.0-openjdk-devel') }
end
context 'when select openjdk for Oracle Linux 6.2' do
let(:facts) { { osfamily: 'RedHat', operatingsystem: 'OracleLinux', operatingsystemrelease: '6.2', architecture: 'x86_64' } }
let(:facts) { { os: { family: 'RedHat', name: 'OracleLinux', release: { full: '6.2' }, architecture: 'x86_64' } } }
it { is_expected.to contain_package('java').with_name('java-1.6.0-openjdk-devel') }
end
context 'when select passed value for Oracle Linux' do
let(:facts) { { osfamily: 'RedHat', operatingsystem: 'OracleLinux', operatingsystemrelease: '6.3', architecture: 'x86_64' } }
let(:facts) { { os: { family: 'RedHat', name: 'OracleLinux', release: { full: '6.3' }, architecture: 'x86_64' } } }
let(:params) { { 'distribution' => 'jre' } }
it { is_expected.to contain_package('java').with_name('java-1.7.0-openjdk') }
end
context 'when select passed value for Scientific Linux' do
let(:facts) { { osfamily: 'RedHat', operatingsystem: 'Scientific', operatingsystemrelease: '6.4', architecture: 'x86_64' } }
let(:facts) { { os: { family: 'RedHat', name: 'Scientific', release: { full: '6.4' }, architecture: 'x86_64' } } }
let(:params) { { 'distribution' => 'jre' } }
it { is_expected.to contain_package('java').with_name('java-1.7.0-openjdk') }
@@ -129,7 +129,7 @@ describe 'java', type: :class do
end
context 'when select passed value for Scientific Linux CERN (SLC)' do
let(:facts) { { osfamily: 'RedHat', operatingsystem: 'SLC', operatingsystemrelease: '6.4', architecture: 'x86_64' } }
let(:facts) { { os: { family: 'RedHat', name: 'SLC', release: { full: '6.4' }, architecture: 'x86_64' } } }
let(:params) { { 'distribution' => 'jre' } }
it { is_expected.to contain_package('java').with_name('java-1.7.0-openjdk') }
@@ -137,47 +137,47 @@ describe 'java', type: :class do
end
context 'when select default for OpenSUSE 12.3' do
let(:facts) { { osfamily: 'Suse', operatingsystem: 'OpenSUSE', operatingsystemrelease: '12.3', architecture: 'x86_64' } }
let(:facts) { { os: { family: 'Suse', name: 'OpenSUSE', release: { major: '12.3' }, architecture: 'x86_64' } } }
it { is_expected.to contain_package('java').with_name('java-1_7_0-openjdk-devel') }
it { is_expected.to contain_file_line('java-home-environment').with_line('JAVA_HOME=/usr/lib64/jvm/java-1.7.0-openjdk-1.7.0/') }
end
context 'when select default for SLES 11.3' do
let(:facts) { { osfamily: 'Suse', operatingsystem: 'SLES', operatingsystemrelease: '11.3', architecture: 'x86_64' } }
let(:facts) { { os: { family: 'Suse', name: 'SLES', release: { full: '11.3' }, architecture: 'x86_64' } } }
it { is_expected.to contain_package('java').with_name('java-1_6_0-ibm-devel') }
it { is_expected.to contain_file_line('java-home-environment').with_line('JAVA_HOME=/usr/lib64/jvm/java-1.6.0-ibm-1.6.0/') }
end
context 'when select default for SLES 11.4' do
let(:facts) { { osfamily: 'Suse', operatingsystem: 'SLES', operatingsystemrelease: '11.4', architecture: 'x86_64' } }
let(:facts) { { os: { family: 'Suse', name: 'SLES', release: { full: '11.4' }, architecture: 'x86_64' } } }
it { is_expected.to contain_package('java').with_name('java-1_7_1-ibm-devel') }
it { is_expected.to contain_file_line('java-home-environment').with_line('JAVA_HOME=/usr/lib64/jvm/java-1.7.1-ibm-1.7.1/') }
end
context 'when select default for SLES 12.0' do
let(:facts) { { osfamily: 'Suse', operatingsystem: 'SLES', operatingsystemrelease: '12.0', operatingsystemmajrelease: '12', architecture: 'x86_64' } }
let(:facts) { { os: { family: 'Suse', name: 'SLES', release: { full: '12.0', major: '12' }, architecture: 'x86_64' } } }
it { is_expected.to contain_package('java').with_name('java-1_7_0-openjdk-devel') }
it { is_expected.to contain_file_line('java-home-environment').with_line('JAVA_HOME=/usr/lib64/jvm/java-1.7.0-openjdk-1.7.0/') }
end
context 'when select default for SLES 12.1' do
let(:facts) { { osfamily: 'Suse', operatingsystem: 'SLES', operatingsystemrelease: '12.1', operatingsystemmajrelease: '12', architecture: 'x86_64' } }
let(:facts) { { os: { family: 'Suse', name: 'SLES', release: { full: '12.1', major: '12' }, architecture: 'x86_64' } } }
it { is_expected.to contain_package('java').with_name('java-1_8_0-openjdk-devel') }
it { is_expected.to contain_file_line('java-home-environment').with_line('JAVA_HOME=/usr/lib64/jvm/java-1.8.0-openjdk-1.8.0/') }
end
describe 'custom java package' do
let(:facts) { { osfamily: 'Debian', operatingsystem: 'Debian', lsbdistcodename: 'jessie', operatingsystemmajrelease: '8', architecture: 'amd64' } }
let(:facts) { { os: { family: 'Debian', name: 'Debian', lsb: { distcodename: 'jessie' }, release: { major: '8' }, architecture: 'amd64' } } }
context 'when all params provided' do
let(:params) do
{
'distribution' => 'custom',
'distribution' => 'custom',
'package' => 'custom_jdk',
'java_alternative' => 'java-custom_jdk',
'java_alternative_path' => '/opt/custom_jdk/bin/java',
@@ -206,34 +206,44 @@ describe 'java', type: :class do
describe 'incompatible OSs' do
[
{
osfamily: 'windows',
operatingsystem: 'windows',
operatingsystemrelease: '8.1',
os: {
family: 'windows',
name: 'windows',
release: { full: '8.1' },
},
},
{
osfamily: 'Darwin',
operatingsystem: 'Darwin',
operatingsystemrelease: '13.3.0',
os: {
family: 'Darwin',
name: 'Darwin',
release: { full: '13.3.0' },
},
},
{
osfamily: 'AIX',
operatingsystem: 'AIX',
operatingsystemrelease: '7100-02-00-000',
os: {
family: 'AIX',
name: 'AIX',
release: { full: '7100-02-00-000' },
},
},
{
osfamily: 'AIX',
operatingsystem: 'AIX',
operatingsystemrelease: '6100-07-04-1216',
os: {
family: 'AIX',
name: 'AIX',
release: { full: '6100-07-04-1216' },
},
},
{
osfamily: 'AIX',
operatingsystem: 'AIX',
operatingsystemrelease: '5300-12-01-1016',
os: {
family: 'AIX',
name: 'AIX',
release: { full: '5300-12-01-1016' },
},
},
].each do |facts|
let(:facts) { facts }
it "is_expected.to fail on #{facts[:operatingsystem]} #{facts[:operatingsystemrelease]}" do
it "is_expected.to fail on #{facts[:os][:name]} #{facts[:os][:release][:full]}" do
expect { catalogue }.to raise_error Puppet::Error, %r{unsupported platform}
end
end

358
spec/defines/adopt_spec.rb Normal file
View File

@@ -0,0 +1,358 @@
require 'spec_helper'
describe 'java::adopt', type: :define do
context 'with CentOS 64-bit' do
let(:facts) { { kernel: 'Linux', os: { family: 'RedHat', architecture: 'x86_64', name: 'CentOS', release: { full: '6.0' } } } }
context 'when manage_symlink is set to true' do
let(:params) do
{
ensure: 'present',
version: '11',
java: 'jdk',
basedir: '/usr/java',
manage_symlink: true,
symlink_name: 'java_home',
}
end
let(:title) { 'jdk11_symlink' }
it { is_expected.to contain_file('/usr/java/java_home') }
end
context 'when manage_symlink is not set' do
let(:params) { { ensure: 'present', version: '11', java: 'jdk' } }
let(:title) { 'jdk11_nosymlink' }
it { is_expected.not_to contain_file('/usr/java/java_home') }
end
context 'when AdoptOpenJDK Java 8 JDK' do
let(:params) { { ensure: 'present', version: '8', java: 'jdk' } }
let(:title) { 'jdk8' }
it { is_expected.to contain_archive('/tmp/OpenJDK8U-jdk_x64_linux_hotspot_8u202b08.tar.gz') }
it { is_expected.to contain_exec('Install AdoptOpenJDK java jdk 8 8u202 b08').with_command('tar -zxf /tmp/OpenJDK8U-jdk_x64_linux_hotspot_8u202b08.tar.gz -C /usr/java') }
it { is_expected.to contain_exec('Install AdoptOpenJDK java jdk 8 8u202 b08').that_requires('Archive[/tmp/OpenJDK8U-jdk_x64_linux_hotspot_8u202b08.tar.gz]') }
end
context 'when AdoptOpenJDK Java 9 JDK' do
let(:params) { { ensure: 'present', version: '9', java: 'jdk' } }
let(:title) { 'jdk9' }
it { is_expected.to contain_archive('/tmp/OpenJDK9U-jdk_x64_linux_hotspot_9.0.4_11.tar.gz') }
it { is_expected.to contain_exec('Install AdoptOpenJDK java jdk 9 9.0.4 11').with_command('tar -zxf /tmp/OpenJDK9U-jdk_x64_linux_hotspot_9.0.4_11.tar.gz -C /usr/java') }
it { is_expected.to contain_exec('Install AdoptOpenJDK java jdk 9 9.0.4 11').that_requires('Archive[/tmp/OpenJDK9U-jdk_x64_linux_hotspot_9.0.4_11.tar.gz]') }
end
context 'when AdoptOpenJDK Java 10 JDK' do
let(:params) { { ensure: 'present', version: '10', java: 'jdk' } }
let(:title) { 'jdk10' }
it { is_expected.to contain_archive('/tmp/OpenJDK10U-jdk_x64_linux_hotspot_10.0.2_13.tar.gz') }
it { is_expected.to contain_exec('Install AdoptOpenJDK java jdk 10 10.0.2 13').with_command('tar -zxf /tmp/OpenJDK10U-jdk_x64_linux_hotspot_10.0.2_13.tar.gz -C /usr/java') }
it { is_expected.to contain_exec('Install AdoptOpenJDK java jdk 10 10.0.2 13').that_requires('Archive[/tmp/OpenJDK10U-jdk_x64_linux_hotspot_10.0.2_13.tar.gz]') }
end
context 'when AdoptOpenJDK Java 11 JDK' do
let(:params) { { ensure: 'present', version: '11', java: 'jdk' } }
let(:title) { 'jdk11' }
it { is_expected.to contain_archive('/tmp/OpenJDK11U-jdk_x64_linux_hotspot_11.0.2_9.tar.gz') }
it { is_expected.to contain_exec('Install AdoptOpenJDK java jdk 11 11.0.2 9').with_command('tar -zxf /tmp/OpenJDK11U-jdk_x64_linux_hotspot_11.0.2_9.tar.gz -C /usr/java') }
it { is_expected.to contain_exec('Install AdoptOpenJDK java jdk 11 11.0.2 9').that_requires('Archive[/tmp/OpenJDK11U-jdk_x64_linux_hotspot_11.0.2_9.tar.gz]') }
end
context 'when AdoptOpenJDK Java 12 JDK' do
let(:params) { { ensure: 'present', version: '12', java: 'jdk' } }
let(:title) { 'jdk12' }
it { is_expected.to contain_archive('/tmp/OpenJDK12U-jdk_x64_linux_hotspot_12.0.1_12.tar.gz') }
it { is_expected.to contain_exec('Install AdoptOpenJDK java jdk 12 12.0.1 12').with_command('tar -zxf /tmp/OpenJDK12U-jdk_x64_linux_hotspot_12.0.1_12.tar.gz -C /usr/java') }
it { is_expected.to contain_exec('Install AdoptOpenJDK java jdk 12 12.0.1 12').that_requires('Archive[/tmp/OpenJDK12U-jdk_x64_linux_hotspot_12.0.1_12.tar.gz]') }
end
context 'when AdoptOpenJDK Java 8 JRE' do
let(:params) { { ensure: 'present', version: '8', java: 'jre' } }
let(:title) { 'jre8' }
it { is_expected.to contain_archive('/tmp/OpenJDK8U-jre_x64_linux_hotspot_8u202b08.tar.gz') }
it { is_expected.to contain_exec('Install AdoptOpenJDK java jre 8 8u202 b08').with_command('tar -zxf /tmp/OpenJDK8U-jre_x64_linux_hotspot_8u202b08.tar.gz -C /usr/java') }
it { is_expected.to contain_exec('Install AdoptOpenJDK java jre 8 8u202 b08').that_requires('Archive[/tmp/OpenJDK8U-jre_x64_linux_hotspot_8u202b08.tar.gz]') }
end
context 'when AdoptOpenJDK Java 9 JRE' do
let(:params) { { ensure: 'present', version: '9', java: 'jre' } }
let(:title) { 'jre9' }
it { is_expected.to contain_archive('/tmp/OpenJDK9U-jre_x64_linux_hotspot_9.0.4_11.tar.gz') }
it { is_expected.to contain_exec('Install AdoptOpenJDK java jre 9 9.0.4 11').with_command('tar -zxf /tmp/OpenJDK9U-jre_x64_linux_hotspot_9.0.4_11.tar.gz -C /usr/java') }
it { is_expected.to contain_exec('Install AdoptOpenJDK java jre 9 9.0.4 11').that_requires('Archive[/tmp/OpenJDK9U-jre_x64_linux_hotspot_9.0.4_11.tar.gz]') }
end
context 'when AdoptOpenJDK Java 10 JRE' do
let(:params) { { ensure: 'present', version: '10', java: 'jre' } }
let(:title) { 'jre11' }
it { is_expected.to contain_archive('/tmp/OpenJDK10U-jre_x64_linux_hotspot_10.0.2_13.tar.gz') }
it { is_expected.to contain_exec('Install AdoptOpenJDK java jre 10 10.0.2 13').with_command('tar -zxf /tmp/OpenJDK10U-jre_x64_linux_hotspot_10.0.2_13.tar.gz -C /usr/java') }
it { is_expected.to contain_exec('Install AdoptOpenJDK java jre 10 10.0.2 13').that_requires('Archive[/tmp/OpenJDK10U-jre_x64_linux_hotspot_10.0.2_13.tar.gz]') }
end
context 'when AdoptOpenJDK Java 11 JRE' do
let(:params) { { ensure: 'present', version: '11', java: 'jre' } }
let(:title) { 'jre11' }
it { is_expected.to contain_archive('/tmp/OpenJDK11U-jre_x64_linux_hotspot_11.0.2_9.tar.gz') }
it { is_expected.to contain_exec('Install AdoptOpenJDK java jre 11 11.0.2 9').with_command('tar -zxf /tmp/OpenJDK11U-jre_x64_linux_hotspot_11.0.2_9.tar.gz -C /usr/java') }
it { is_expected.to contain_exec('Install AdoptOpenJDK java jre 11 11.0.2 9').that_requires('Archive[/tmp/OpenJDK11U-jre_x64_linux_hotspot_11.0.2_9.tar.gz]') }
end
context 'when AdoptOpenJDK Java 12 JRE' do
let(:params) { { ensure: 'present', version: '12', java: 'jre' } }
let(:title) { 'jre12' }
it { is_expected.to contain_archive('/tmp/OpenJDK12U-jre_x64_linux_hotspot_12.0.1_12.tar.gz') }
it { is_expected.to contain_exec('Install AdoptOpenJDK java jre 12 12.0.1 12').with_command('tar -zxf /tmp/OpenJDK12U-jre_x64_linux_hotspot_12.0.1_12.tar.gz -C /usr/java') }
it { is_expected.to contain_exec('Install AdoptOpenJDK java jre 12 12.0.1 12').that_requires('Archive[/tmp/OpenJDK12U-jre_x64_linux_hotspot_12.0.1_12.tar.gz]') }
end
context 'when installing multiple versions' do
let(:params) do
{
ensure: 'present',
version_major: '8u202',
version_minor: 'b08',
java: 'jdk',
}
end
let(:title) { 'jdk8' }
let(:pre_condition) do
<<-EOL
java::adopt {
'jdk8172':
ensure => 'present',
version_major => '8u172',
version_minor => 'b11',
java => 'jdk',
}
EOL
end
it { is_expected.to compile }
end
context 'when specifying package_type tar.gz and basedir' do
let(:params) do
{
ensure: 'present',
version: '8',
java: 'jdk',
basedir: '/usr/java',
package_type: 'tar.gz',
}
end
let(:title) { 'jdk8' }
it { is_expected.to contain_archive('/tmp/OpenJDK8U-jdk_x64_linux_hotspot_8u202b08.tar.gz') }
it { is_expected.to contain_exec('Install AdoptOpenJDK java jdk 8 8u202 b08').with_command('tar -zxf /tmp/OpenJDK8U-jdk_x64_linux_hotspot_8u202b08.tar.gz -C /usr/java') }
it { is_expected.to contain_exec('Install AdoptOpenJDK java jdk 8 8u202 b08').that_requires('Archive[/tmp/OpenJDK8U-jdk_x64_linux_hotspot_8u202b08.tar.gz]') }
end
context 'when manage_basedir is set to true' do
let(:params) do
{
ensure: 'present',
version: '8',
java: 'jdk',
basedir: '/usr/java',
manage_basedir: true,
}
end
let(:title) { 'jdk8' }
it { is_expected.to contain_file('/usr/java') }
end
end
context 'with Ubuntu 64-bit' do
let(:facts) { { kernel: 'Linux', os: { family: 'Debian', architecture: 'amd64', name: 'Ubuntu', release: { full: '16.04' } } } }
context 'when AdoptOpenJDK Java 8 JDK' do
let(:params) { { ensure: 'present', version: '8', java: 'jdk' } }
let(:title) { 'jdk8' }
it { is_expected.to contain_archive('/tmp/OpenJDK8U-jdk_x64_linux_hotspot_8u202b08.tar.gz') }
it { is_expected.to contain_exec('Install AdoptOpenJDK java jdk 8 8u202 b08').with_command('tar -zxf /tmp/OpenJDK8U-jdk_x64_linux_hotspot_8u202b08.tar.gz -C /usr/lib/jvm') }
it { is_expected.to contain_exec('Install AdoptOpenJDK java jdk 8 8u202 b08').that_requires('Archive[/tmp/OpenJDK8U-jdk_x64_linux_hotspot_8u202b08.tar.gz]') }
end
context 'when AdoptOpenJDK Java 9 JDK' do
let(:params) { { ensure: 'present', version: '9', java: 'jdk' } }
let(:title) { 'jdk9' }
it { is_expected.to contain_archive('/tmp/OpenJDK9U-jdk_x64_linux_hotspot_9.0.4_11.tar.gz') }
it { is_expected.to contain_exec('Install AdoptOpenJDK java jdk 9 9.0.4 11').with_command('tar -zxf /tmp/OpenJDK9U-jdk_x64_linux_hotspot_9.0.4_11.tar.gz -C /usr/lib/jvm') }
it { is_expected.to contain_exec('Install AdoptOpenJDK java jdk 9 9.0.4 11').that_requires('Archive[/tmp/OpenJDK9U-jdk_x64_linux_hotspot_9.0.4_11.tar.gz]') }
end
context 'when AdoptOpenJDK Java 10 JDK' do
let(:params) { { ensure: 'present', version: '10', java: 'jdk' } }
let(:title) { 'jdk10' }
it { is_expected.to contain_archive('/tmp/OpenJDK10U-jdk_x64_linux_hotspot_10.0.2_13.tar.gz') }
it { is_expected.to contain_exec('Install AdoptOpenJDK java jdk 10 10.0.2 13').with_command('tar -zxf /tmp/OpenJDK10U-jdk_x64_linux_hotspot_10.0.2_13.tar.gz -C /usr/lib/jvm') }
it { is_expected.to contain_exec('Install AdoptOpenJDK java jdk 10 10.0.2 13').that_requires('Archive[/tmp/OpenJDK10U-jdk_x64_linux_hotspot_10.0.2_13.tar.gz]') }
end
context 'when AdoptOpenJDK Java 11 JDK' do
let(:params) { { ensure: 'present', version: '11', java: 'jdk' } }
let(:title) { 'jdk11' }
it { is_expected.to contain_archive('/tmp/OpenJDK11U-jdk_x64_linux_hotspot_11.0.2_9.tar.gz') }
it { is_expected.to contain_exec('Install AdoptOpenJDK java jdk 11 11.0.2 9').with_command('tar -zxf /tmp/OpenJDK11U-jdk_x64_linux_hotspot_11.0.2_9.tar.gz -C /usr/lib/jvm') }
it { is_expected.to contain_exec('Install AdoptOpenJDK java jdk 11 11.0.2 9').that_requires('Archive[/tmp/OpenJDK11U-jdk_x64_linux_hotspot_11.0.2_9.tar.gz]') }
end
context 'when AdoptOpenJDK Java 12 JDK' do
let(:params) { { ensure: 'present', version: '12', java: 'jdk' } }
let(:title) { 'jdk12' }
it { is_expected.to contain_archive('/tmp/OpenJDK12U-jdk_x64_linux_hotspot_12.0.1_12.tar.gz') }
it { is_expected.to contain_exec('Install AdoptOpenJDK java jdk 12 12.0.1 12').with_command('tar -zxf /tmp/OpenJDK12U-jdk_x64_linux_hotspot_12.0.1_12.tar.gz -C /usr/lib/jvm') }
it { is_expected.to contain_exec('Install AdoptOpenJDK java jdk 12 12.0.1 12').that_requires('Archive[/tmp/OpenJDK12U-jdk_x64_linux_hotspot_12.0.1_12.tar.gz]') }
end
context 'when AdoptOpenJDK Java 8 JRE' do
let(:params) { { ensure: 'present', version: '8', java: 'jre' } }
let(:title) { 'jre8' }
it { is_expected.to contain_archive('/tmp/OpenJDK8U-jre_x64_linux_hotspot_8u202b08.tar.gz') }
it { is_expected.to contain_exec('Install AdoptOpenJDK java jre 8 8u202 b08').with_command('tar -zxf /tmp/OpenJDK8U-jre_x64_linux_hotspot_8u202b08.tar.gz -C /usr/lib/jvm') }
it { is_expected.to contain_exec('Install AdoptOpenJDK java jre 8 8u202 b08').that_requires('Archive[/tmp/OpenJDK8U-jre_x64_linux_hotspot_8u202b08.tar.gz]') }
end
context 'when AdoptOpenJDK Java 9 JRE' do
let(:params) { { ensure: 'present', version: '9', java: 'jre' } }
let(:title) { 'jre9' }
it { is_expected.to contain_archive('/tmp/OpenJDK9U-jre_x64_linux_hotspot_9.0.4_11.tar.gz') }
it { is_expected.to contain_exec('Install AdoptOpenJDK java jre 9 9.0.4 11').with_command('tar -zxf /tmp/OpenJDK9U-jre_x64_linux_hotspot_9.0.4_11.tar.gz -C /usr/lib/jvm') }
it { is_expected.to contain_exec('Install AdoptOpenJDK java jre 9 9.0.4 11').that_requires('Archive[/tmp/OpenJDK9U-jre_x64_linux_hotspot_9.0.4_11.tar.gz]') }
end
context 'when AdoptOpenJDK Java 10 JRE' do
let(:params) { { ensure: 'present', version: '10', java: 'jre' } }
let(:title) { 'jre11' }
it { is_expected.to contain_archive('/tmp/OpenJDK10U-jre_x64_linux_hotspot_10.0.2_13.tar.gz') }
it { is_expected.to contain_exec('Install AdoptOpenJDK java jre 10 10.0.2 13').with_command('tar -zxf /tmp/OpenJDK10U-jre_x64_linux_hotspot_10.0.2_13.tar.gz -C /usr/lib/jvm') }
it { is_expected.to contain_exec('Install AdoptOpenJDK java jre 10 10.0.2 13').that_requires('Archive[/tmp/OpenJDK10U-jre_x64_linux_hotspot_10.0.2_13.tar.gz]') }
end
context 'when AdoptOpenJDK Java 11 JRE' do
let(:params) { { ensure: 'present', version: '11', java: 'jre' } }
let(:title) { 'jre11' }
it { is_expected.to contain_archive('/tmp/OpenJDK11U-jre_x64_linux_hotspot_11.0.2_9.tar.gz') }
it { is_expected.to contain_exec('Install AdoptOpenJDK java jre 11 11.0.2 9').with_command('tar -zxf /tmp/OpenJDK11U-jre_x64_linux_hotspot_11.0.2_9.tar.gz -C /usr/lib/jvm') }
it { is_expected.to contain_exec('Install AdoptOpenJDK java jre 11 11.0.2 9').that_requires('Archive[/tmp/OpenJDK11U-jre_x64_linux_hotspot_11.0.2_9.tar.gz]') }
end
context 'when AdoptOpenJDK Java 12 JRE' do
let(:params) { { ensure: 'present', version: '12', java: 'jre' } }
let(:title) { 'jre12' }
it { is_expected.to contain_archive('/tmp/OpenJDK12U-jre_x64_linux_hotspot_12.0.1_12.tar.gz') }
it { is_expected.to contain_exec('Install AdoptOpenJDK java jre 12 12.0.1 12').with_command('tar -zxf /tmp/OpenJDK12U-jre_x64_linux_hotspot_12.0.1_12.tar.gz -C /usr/lib/jvm') }
it { is_expected.to contain_exec('Install AdoptOpenJDK java jre 12 12.0.1 12').that_requires('Archive[/tmp/OpenJDK12U-jre_x64_linux_hotspot_12.0.1_12.tar.gz]') }
end
context 'when installing multiple versions' do
let(:params) do
{
ensure: 'present',
version_major: '8u202',
version_minor: 'b08',
java: 'jdk',
}
end
let(:title) { 'jdk8' }
let(:pre_condition) do
<<-EOL
java::adopt {
'jdk8172':
ensure => 'present',
version_major => '8u172',
version_minor => 'b11',
java => 'jdk',
}
EOL
end
it { is_expected.to compile }
end
end
describe 'incompatible OSes' do
[
{
kernel: 'Windows',
os: {
family: 'Windows',
name: 'Windows',
release: {
full: '8.1',
},
},
},
{
kernel: 'Darwin',
os: {
family: 'Darwin',
name: 'Darwin',
release: {
full: '13.3.0',
},
},
},
{
kernel: 'AIX',
os: {
family: 'AIX',
name: 'AIX',
release: {
full: '7100-02-00-000',
},
},
},
{
kernel: 'AIX',
os: {
family: 'AIX',
name: 'AIX',
release: {
full: '6100-07-04-1216',
},
},
},
{
kernel: 'AIX',
os: {
family: 'AIX',
name: 'AIX',
release: {
full: '5300-12-01-1016',
},
},
},
].each do |facts|
let(:facts) { facts }
let(:title) { 'jdk' }
it "is_expected.to fail on #{facts[:os][:name]} #{facts[:os][:release][:full]}" do
expect { catalogue }.to raise_error Puppet::Error, %r{unsupported platform}
end
end
end
end

View File

@@ -55,6 +55,21 @@ describe 'java::download', type: :define do
it { is_expected.to contain_file('/usr/java/java_home') }
end
context 'when manage_symlink is not set' do
let(:params) do
{
ensure: 'present',
version: '6',
java_se: 'jdk',
basedir: '/usr/java',
url: url,
}
end
let(:title) { 'jdk6_nosymlink' }
it { is_expected.not_to contain_file('/usr/java/java_home') }
end
end
context 'with Ubuntu 64-bit' do

255
spec/defines/sap_spec.rb Normal file
View File

@@ -0,0 +1,255 @@
require 'spec_helper'
describe 'java::sap', type: :define do
context 'with CentOS 64-bit' do
let(:facts) { { kernel: 'Linux', os: { family: 'RedHat', architecture: 'x86_64', name: 'CentOS', release: { full: '6.0' } } } }
context 'when manage_symlink is set to true' do
let(:params) do
{
ensure: 'present',
version: '11',
java: 'jdk',
basedir: '/usr/java',
manage_symlink: true,
symlink_name: 'java_home',
}
end
let(:title) { 'jdk11_symlink' }
it { is_expected.to contain_file('/usr/java/java_home') }
end
context 'when manage_symlink is not set' do
let(:params) { { ensure: 'present', version: '11', java: 'jdk' } }
let(:title) { 'jdk11_nosymlink' }
it { is_expected.not_to contain_file('/usr/java/java_home') }
end
context 'when sapjvm 7' do
let(:params) { { ensure: 'present', version: '7', java: 'jdk' } }
let(:title) { 'jdk7' }
it { is_expected.to contain_archive('/tmp/sapjvm-7.1.072-linux-x64.zip') }
end
context 'when sapjvm 8' do
let(:params) { { ensure: 'present', version: '8', java: 'jdk' } }
let(:title) { 'jdk8' }
it { is_expected.to contain_archive('/tmp/sapjvm-8.1.065-linux-x64.zip') }
end
context 'when sapmachine 11 jdk' do
let(:params) { { ensure: 'present', version: '11', java: 'jdk' } }
let(:title) { 'jdk11' }
it { is_expected.to contain_archive('/tmp/sapmachine-jdk-11.0.7_linux-x64_bin.tar.gz') }
end
context 'when sapmachine 11 jre' do
let(:params) { { ensure: 'present', version: '11', java: 'jre' } }
let(:title) { 'jre11' }
it { is_expected.to contain_archive('/tmp/sapmachine-jre-11.0.7_linux-x64_bin.tar.gz') }
end
context 'when sapmachine 14 jdk' do
let(:params) { { ensure: 'present', version: '14', java: 'jdk' } }
let(:title) { 'jdk14' }
it { is_expected.to contain_archive('/tmp/sapmachine-jdk-14.0.1_linux-x64_bin.tar.gz') }
end
context 'when sapmachine 14 jre' do
let(:params) { { ensure: 'present', version: '14', java: 'jre' } }
let(:title) { 'jre14' }
it { is_expected.to contain_archive('/tmp/sapmachine-jre-14.0.1_linux-x64_bin.tar.gz') }
end
context 'when installing multiple versions' do
let(:params) do
{
ensure: 'present',
version_full: '11.0.7',
java: 'jdk',
}
end
let(:title) { 'jdk1107' }
let(:pre_condition) do
<<-EOL
java::sap {
'jdk1106':
ensure => 'present',
version_full => '11.0.6',
java => 'jdk',
}
EOL
end
it { is_expected.to compile }
end
context 'when specifying basedir' do
let(:params) do
{
ensure: 'present',
version: '8',
java: 'jdk',
basedir: '/usr/java',
}
end
let(:title) { 'jdk8' }
it { is_expected.to contain_archive('/tmp/sapjvm-8.1.065-linux-x64.zip') }
end
context 'when manage_basedir is set to true' do
let(:params) do
{
ensure: 'present',
version: '8',
java: 'jdk',
basedir: '/usr/java',
manage_basedir: true,
}
end
let(:title) { 'jdk8' }
it { is_expected.to contain_file('/usr/java') }
end
end
context 'with Ubuntu 64-bit' do
let(:facts) { { kernel: 'Linux', os: { family: 'Debian', architecture: 'amd64', name: 'Ubuntu', release: { full: '16.04' } } } }
context 'when sapjvm 7' do
let(:params) { { ensure: 'present', version: '7', java: 'jdk' } }
let(:title) { 'jdk7' }
it { is_expected.to contain_archive('/tmp/sapjvm-7.1.072-linux-x64.zip') }
end
context 'when sapjvm 8' do
let(:params) { { ensure: 'present', version: '8', java: 'jdk' } }
let(:title) { 'jdk8' }
it { is_expected.to contain_archive('/tmp/sapjvm-8.1.065-linux-x64.zip') }
end
context 'when sapmachine 11 jdk' do
let(:params) { { ensure: 'present', version: '11', java: 'jdk' } }
let(:title) { 'jdk11' }
it { is_expected.to contain_archive('/tmp/sapmachine-jdk-11.0.7_linux-x64_bin.tar.gz') }
end
context 'when sapmachine 11 jre' do
let(:params) { { ensure: 'present', version: '11', java: 'jre' } }
let(:title) { 'jre11' }
it { is_expected.to contain_archive('/tmp/sapmachine-jre-11.0.7_linux-x64_bin.tar.gz') }
end
context 'when sapmachine 14 jdk' do
let(:params) { { ensure: 'present', version: '14', java: 'jdk' } }
let(:title) { 'jdk14' }
it { is_expected.to contain_archive('/tmp/sapmachine-jdk-14.0.1_linux-x64_bin.tar.gz') }
end
context 'when sapmachine 14 jre' do
let(:params) { { ensure: 'present', version: '14', java: 'jre' } }
let(:title) { 'jre14' }
it { is_expected.to contain_archive('/tmp/sapmachine-jre-14.0.1_linux-x64_bin.tar.gz') }
end
context 'when installing multiple versions' do
let(:params) do
{
ensure: 'present',
version_full: '11.0.7',
java: 'jdk',
}
end
let(:title) { 'jdk1107' }
let(:pre_condition) do
<<-EOL
java::sap {
'jdk1106':
ensure => 'present',
version_full => '11.0.6',
java => 'jdk',
}
EOL
end
it { is_expected.to compile }
end
end
describe 'incompatible OSes' do
[
{
kernel: 'Windows',
os: {
family: 'Windows',
name: 'Windows',
release: {
full: '8.1',
},
},
},
{
kernel: 'Darwin',
os: {
family: 'Darwin',
name: 'Darwin',
release: {
full: '13.3.0',
},
},
},
{
kernel: 'AIX',
os: {
family: 'AIX',
name: 'AIX',
release: {
full: '7100-02-00-000',
},
},
},
{
kernel: 'AIX',
os: {
family: 'AIX',
name: 'AIX',
release: {
full: '6100-07-04-1216',
},
},
},
{
kernel: 'AIX',
os: {
family: 'AIX',
name: 'AIX',
release: {
full: '5300-12-01-1016',
},
},
},
].each do |facts|
let(:facts) { facts }
let(:title) { 'jdk' }
it "is_expected.to fail on #{facts[:os][:name]} #{facts[:os][:release][:full]}" do
expect { catalogue }.to raise_error Puppet::Error, %r{unsupported platform}
end
end
end
end

View File

@@ -1,3 +1,5 @@
# frozen_string_literal: true
RSpec.configure do |c|
c.mock_with :rspec
end
@@ -40,6 +42,7 @@ RSpec.configure do |c|
# set to strictest setting for testing
# by default Puppet runs at warning level
Puppet.settings[:strict] = :warning
Puppet.settings[:strict_variables] = true
end
c.filter_run_excluding(bolt: true) unless ENV['GEM_BOLT']
c.after(:suite) do

View File

@@ -1,82 +1,6 @@
# frozen_string_literal: true
require 'serverspec'
require 'puppet_litmus'
require 'spec_helper_acceptance_local' if File.file?(File.join(File.dirname(__FILE__), 'spec_helper_acceptance_local.rb'))
include PuppetLitmus
if ENV['TARGET_HOST'].nil? || ENV['TARGET_HOST'] == 'localhost'
puts 'Running tests against this machine !'
if Gem.win_platform?
set :backend, :cmd
else
set :backend, :exec
end
else
# load inventory
inventory_hash = inventory_hash_from_inventory_file
node_config = config_from_node(inventory_hash, ENV['TARGET_HOST'])
if target_in_group(inventory_hash, ENV['TARGET_HOST'], 'docker_nodes')
host = ENV['TARGET_HOST']
set :backend, :docker
set :docker_container, host
elsif target_in_group(inventory_hash, ENV['TARGET_HOST'], 'ssh_nodes')
set :backend, :ssh
options = Net::SSH::Config.for(host)
options[:user] = node_config.dig('ssh', 'user') unless node_config.dig('ssh', 'user').nil?
options[:port] = node_config.dig('ssh', 'port') unless node_config.dig('ssh', 'port').nil?
options[:keys] = node_config.dig('ssh', 'private-key') unless node_config.dig('ssh', 'private-key').nil?
options[:password] = node_config.dig('ssh', 'password') unless node_config.dig('ssh', 'password').nil?
# Support both net-ssh 4 and 5.
# rubocop:disable Metrics/BlockNesting
options[:verify_host_key] = if node_config.dig('ssh', 'host-key-check').nil?
# Fall back to SSH behavior. This variable will only be set in net-ssh 5.3+.
if @strict_host_key_checking.nil? || @strict_host_key_checking
Net::SSH::Verifiers::Always.new
else
# SSH's behavior with StrictHostKeyChecking=no: adds new keys to known_hosts.
# If known_hosts points to /dev/null, then equivalent to :never where it
# accepts any key beacuse they're all new.
Net::SSH::Verifiers::AcceptNewOrLocalTunnel.new
end
elsif node_config.dig('ssh', 'host-key-check')
if defined?(Net::SSH::Verifiers::Always)
Net::SSH::Verifiers::Always.new
else
Net::SSH::Verifiers::Secure.new
end
elsif defined?(Net::SSH::Verifiers::Never)
Net::SSH::Verifiers::Never.new
else
Net::SSH::Verifiers::Null.new
end
# rubocop:enable Metrics/BlockNesting
host = if ENV['TARGET_HOST'].include?(':')
ENV['TARGET_HOST'].split(':').first
else
ENV['TARGET_HOST']
end
set :host, options[:host_name] || host
set :ssh_options, options
set :request_pty, true
elsif target_in_group(inventory_hash, ENV['TARGET_HOST'], 'winrm_nodes')
require 'winrm'
set :backend, :winrm
set :os, family: 'windows'
user = node_config.dig('winrm', 'user') unless node_config.dig('winrm', 'user').nil?
pass = node_config.dig('winrm', 'password') unless node_config.dig('winrm', 'password').nil?
endpoint = "http://#{ENV['TARGET_HOST']}:5985/wsman"
opts = {
user: user,
password: pass,
endpoint: endpoint,
operation_timeout: 300,
}
winrm = WinRM::Connection.new opts
Specinfra.configuration.winrm = winrm
end
end
PuppetLitmus.configure!

View File

@@ -5,20 +5,21 @@ describe 'java_libjvm_path' do
before(:each) do
Facter.clear
allow(Facter.fact(:kernel)).to receive(:value).once.and_return('Linux')
allow(Facter.fact(:java_default_home)).to receive(:value).once.and_return(java_default_home)
allow(Facter.fact(:kernel)).to receive(:value).and_return('Linux')
allow(Facter.fact(:java_default_home)).to receive(:value).and_return(java_default_home)
end
context 'when libjvm exists' do
it do
allow(Dir).to receive(:glob).with("#{java_default_home}/**/lib/**/libjvm.so").and_return(['/usr/lib/jvm/java-8-openjdk-amd64/jre/lib/amd64/server/libjvm.so'])
allow(Facter.fact(:java_major_version)).to receive(:value).and_return(8)
allow(Dir).to receive(:glob).with("#{java_default_home}/jre/lib/**/libjvm.so").and_return(['/usr/lib/jvm/java-8-openjdk-amd64/jre/lib/amd64/server/libjvm.so'])
expect(Facter.value(:java_libjvm_path)).to eql '/usr/lib/jvm/java-8-openjdk-amd64/jre/lib/amd64/server'
end
end
context 'when libjvm does not exist' do
it do
allow(Dir).to receive(:glob).with("#{java_default_home}/**/lib/**/libjvm.so").and_return([])
allow(Dir).to receive(:glob).with("#{java_default_home}/lib/**/libjvm.so").and_return([])
expect(Facter.value(:java_libjvm_path)).to be nil
end
end

View File

@@ -16,7 +16,7 @@ describe 'java_major_version' do
context 'when java not present, returns nil' do
before :each do
allow(Facter.fact(:java_version)).to receive(:value).and_return('nil')
allow(Facter.fact(:java_version)).to receive(:value).and_return(nil)
end
it do
expect(Facter.fact(:java_major_version).value).to be_nil

View File

@@ -63,6 +63,7 @@ describe 'java_version' do
it do
allow(Facter::Util::Resolution).to receive(:exec) # Catch all other calls
allow(Facter::Util::Resolution).to receive(:which).and_return(nil)
expect(Facter.value(:java_version)).to be_nil
end
end