Compare commits

...

177 Commits

Author SHA1 Message Date
lionce
412ad38d93 Merge pull request #361 from sheenaajay/releaseprep
(MODULES-9128) Release 4.0.0
2019-05-20 10:34:18 +03:00
sheena
7474169cbe (MODULES-9128) Release prep 4.0.0 2019-05-16 14:41:56 +01:00
carabasdaniel
45d9a2fb48 Merge pull request #359 from lionce/MODULES-9017
(MODULES-9017) - update metadata to support current version of stdlib
2019-05-03 05:59:27 -07:00
lionce
ba62a166d8 (MODULES-9017) - update metadata to support current version of stdlib 2019-05-03 14:54:46 +03:00
lionce
b174146dd0 Merge pull request #344 from HielkeJ/jce_link
MODULES-8613: Add option to set a custom JCE download URL
2019-04-23 13:16:18 +03:00
Hielke Jager
f195588082 Merge branch 'master' into jce_link 2019-04-18 19:46:07 +02:00
sheenaajay
c3e09bf110 Merge pull request #358 from puppetlabs/pdksync_pdksync_f778803
pdksync - (maint) Update pdk-template to f778803
2019-04-16 11:10:33 +01:00
Eimhin Laverty
b8e5438663 pdksync - (maint) Update pdk-template to f778803 2019-04-15 10:34:13 +01:00
TP Honey
76da37deb7 Merge pull request #353 from david22swan/FM-7921
(FM-7921) - Implement Puppet Strings
2019-04-15 10:33:36 +01:00
David Swan
8abe137a8c (FM-7921) - Implement Puppet Strings 2019-04-12 11:57:31 +01:00
Lavinia Dan
78bdfa2ffe Merge pull request #356 from puppetlabs/pdksync_MODULES-8444
pdksync - (MODULES-8444) - Raise lower Puppet bound
2019-04-11 16:07:20 +03:00
David Swan
24da374183 (MODULES-8444) - Raise lower Puppet bound 2019-04-10 16:39:28 +01:00
david22swan
b998142817 Merge pull request #351 from puppetlabs/pdksync_modules-8728
pdksync - Remove .project from .gitignore
2019-03-07 14:19:09 +00:00
Eimhin Laverty
881bcfabea (MODULES-8728) Remove .project from .gitignore 2019-03-07 12:43:24 +00:00
david22swan
ce348b258f Merge pull request #349 from fraenki/creates_path
MODULES-8698: Fix $install_path on CentOS with tar.gz package type
2019-03-06 15:25:23 +00:00
david22swan
fa7003da95 Merge pull request #348 from fraenki/symlink
MODULES-8699: Add option to manage symlink
2019-03-06 12:00:06 +00:00
Eimhin Laverty
7cd34dd291 (FM-7795) Cleanup java tests (#350)
* Add idempotent_apply function

* Remove unsupported OS specific code

* Remove outdated comments

* Improve unit test coverage

* Fix typo
2019-02-26 14:22:27 +02:00
Frank Wall
c81254a23a Fix $install_path on CentOS with tar.gz package type
When using tar.gz packages on CentOS, the architecture is not
part of the name of the installation directory. In this case
it's just "jdk1.8.0_201" instead of "jdk1.8.0_201-amd64".
2019-02-25 16:14:14 +01:00
Frank Wall
343ad7c468 Add option to manage symlink 2019-02-25 14:44:26 +01:00
Valentin
5509042cd1 Update default version & java 8 version from 8u192 to 8u201 (#347)
* Update default version & java 8 version from 8u192 to 8u201
2019-02-25 11:46:52 +00:00
Eimhin Laverty
3d8f80e4d9 Merge pull request #346 from tphoney/MODULES-3958
(MODULES-3958) use rspec-mock and add coverage
2019-02-14 14:25:22 +00:00
tphoney
7293c4991b (MODULES-3958) use rspec-mock and add coverage 2019-02-14 13:51:16 +00:00
david22swan
7bede1a384 Merge pull request #345 from fraenki/location_fix
Add ability to override basedir and package type for oracle java
2019-02-12 15:20:18 +00:00
Frank Wall
c4100556f0 use variable instead of hardcoded value, refs #298 2019-02-12 13:29:18 +01:00
Frank Wall
e247902da5 fix tests, refs #298 2019-02-12 13:28:56 +01:00
Elyse Salberg
82cd45647a Add ability to override basedir and package type 2019-02-12 13:27:32 +01:00
Hielke Jager
9b40ca6935 Add option to set a custom JCE download URL 2019-02-08 16:10:03 +01:00
david22swan
1e8954727e Merge pull request #332 from TLmaK0/master
Get architecture when no os/architecture exists
2019-02-07 16:08:22 +00:00
Paula Muir
b2a0626787 Merge pull request #343 from puppetlabs/pdksync_pdksync_1.9.0-0-g7281db5
pdksync - pdksync_1.9.0-0-g7281db5
2019-01-31 12:15:24 +00:00
lionce
f7f3fb9da2 pdksync_1.9.0-0-g7281db5 2019-01-31 11:22:53 +02:00
david22swan
25898c0fc9 Merge pull request #342 from puppetlabs/release
(maint) - 3.3.0 Release mergeback
2019-01-18 10:51:14 +00:00
Paula Muir
1021c71139 Merge pull request #341 from david22swan/ReleasePrep
(MODULES-8478) - 3.3.0 Release Prep
2019-01-17 10:55:28 +00:00
David Swan
66a6e6c28e (MODULES-8478) - 3.3.0 Release Prep 2019-01-16 15:36:22 +00:00
Helen
197bd5fe7f Merge pull request #340 from puppetlabs/pdksync_pdksync_heads/master-0-g6814a87
pdksync - pdksync_heads/master-0-g6814a87
2019-01-14 15:44:25 +00:00
David Swan
ed5fd0d528 pdksync_heads/master-0-g6814a87 2019-01-10 15:29:50 +00:00
davidmalloncares
be8c53be64 Merge pull request #339 from puppetlabs/pdksync_pdksync_heads/master-0-g9c815ea
pdksync - pdksync_heads/master-0-g9c815ea
2019-01-03 15:58:14 +00:00
David Swan
cec95965d0 pdksync_heads/master-0-g9c815ea 2019-01-03 14:33:56 +00:00
Eimhin Laverty
32506eb127 Merge pull request #338 from puppetlabs/pdksync_FM-7655
pdksync - (FM-7655) Fix rubygems-update for ruby < 2.3
2018-12-20 10:46:41 +00:00
tphoney
4898fbdfaa (FM-7655) Fix rubygems-update for ruby < 2.3 2018-12-20 10:09:32 +00:00
Helen
dd2c5b08df Merge pull request #337 from puppetlabs/pdksync_pdksync_heads/master-0-gbf720df
pdksync - pdksync_heads/master-0-gbf720df
2018-12-17 14:08:03 +00:00
Eimhin Laverty
9526767b95 pdksync_heads/master-0-gbf720df 2018-12-17 11:31:10 +00:00
david22swan
35f5fa9e33 Merge pull request #336 from eimlav/modules-8234
(MODULES-8234) - Add SLES 15 support
2018-12-14 14:26:34 +00:00
Eimhin Laverty
1504bf8974 (MODULES-8234) - Add SLES 15 support 2018-12-13 12:57:47 +00:00
Eimhin Laverty
5112b4d59f Merge pull request #335 from pmcmaw/bugfix_FM-7520
(FM-7520) - Removing Solaris from the support matrix
2018-11-19 11:18:46 +00:00
Paula Muir
ed5cbf950e Merge branch 'master' into bugfix_FM-7520 2018-11-19 11:00:10 +00:00
Paula Muir
cd46267fad (maint) - Standardising and removing Service Packs (SP) 2018-11-19 10:58:55 +00:00
Paula Muir
7405a304d9 (FM-7520) - Removing Solaris from the support matrix
This is a bug fix as Solaris has never worked on this module. Updating
to resolve the issue with our documentation.
2018-11-19 10:58:54 +00:00
Paula Muir
b4bb7f0b89 Merge pull request #334 from eimlav/modules-8234
(MODULES-8234) - Upgrade Oracle Java version to 8u192
2018-11-09 15:25:41 +00:00
Eimhin Laverty
68fb4fa498 (MODULES-8234) - Upgrade Oracle Java version to 8u192 2018-11-09 11:05:24 +00:00
Paula Muir
7243839129 Merge pull request #333 from puppetlabs/pdksync_pdksync_heads/master-0-gabccfb1
pdksync - pdksync_heads/master-0-gabccfb1
2018-11-07 13:21:10 +00:00
David Swan
a5ea78aeb4 pdksync_heads/master-0-gabccfb1 2018-11-07 10:22:33 +00:00
david22swan
89a205bc48 Merge pull request #314 from ojongerius/oracle_java_181
MODULES-8044: upgrade Oracle Java 8 to 181, make it the default release
2018-11-05 10:14:28 +00:00
Otto Jongerius
0fd7c00fa9 upgrade Oracle Java 8 to 181, make it the default release 2018-11-05 16:06:43 +13:00
david22swan
de89b1f2da Merge pull request #315 from olevole/master
MODULES-7819 fix set JAVA_HOME environments on FreeBSD platform
2018-11-02 13:46:10 +00:00
Hugo Freire
4372aea5bf Get architecture when no os/architecture exists 2018-10-26 13:12:53 +02:00
Eimhin Laverty
ca4b22c7a0 Merge pull request #331 from pmcmaw/FM-7520
(FM-7520) - Removing service pack extensions
2018-10-24 16:10:51 +01:00
Paula Muir
0acc804564 (FM-7520) - Removing service pack extensions
We support SLES11 and SLES12. It is not necessary to state the SP
therefore removing the SPs.
2018-10-23 17:30:56 +01:00
Dennis Ploeger
b53a78fbe8 Support for installing JCE. Fixes MODULES-1681 (#326)
* Support for installing JCE. Fixes MODULES-1681

* Disabled oracle tests. Only to be enabled, if the other configuration options match the current java download URL provided by Oracle.
2018-10-18 10:07:37 +01:00
david22swan
390805475e Merge pull request #329 from mmoll/deb_openjdk_arm
Fix OpenJDK paths on Debian based OS with ARM
2018-10-12 16:46:41 +01:00
Michael Moll
911df2d7b7 Fix OpenJDK paths on Debian based OS with ARM 2018-10-12 16:55:50 +02:00
david22swan
61ffb4bf1d Merge pull request #330 from dodevops/MODULES-8085
Optimized code for making java::oracle atomic. Fixes MODULES-8085
2018-10-12 14:47:36 +01:00
Dennis Ploeger
bf26247f55 Fixed style violations 2018-10-12 14:27:59 +02:00
david22swan
c6acb9906c Merge pull request #322 from syseleven/MODULES-8025
(MODULES-8025) Switch default for Ubuntu 18.04 to 11
2018-10-12 11:50:36 +01:00
Dennis Ploeger
5f1b7ecea8 Optimized code for making java::oracle atomic. Fixes MODULES-8085 2018-10-12 07:43:57 +02:00
Paula Muir
615db5f7c6 Merge pull request #323 from eimlav/modules7050
(MODULES-7050) - Fix OracleJDK reinstalling on Puppet runs
2018-10-03 17:40:50 +01:00
Eimhin Laverty
89aa846909 (MODULES-7050) - Fix OracleJDK reinstalling on Puppet runs 2018-10-03 17:26:03 +01:00
Matthias Baur
60c93866b1 (MODULES-8025) Switch default for Ubuntu 18.04 to 11
This is needed to get the default Java version rollout with Ubuntu
18.04.
2018-10-01 18:08:30 +02:00
david22swan
72e042afad Merge pull request #320 from puppetlabs/release
Release merge back 3.2.0
2018-09-27 15:51:16 +01:00
Eimhin Laverty
8de3ea58a3 Merge pull request #319 from david22swan/PreRelease
(MODULES-7898) - 3.2.0 Release Prep
2018-09-27 12:09:50 +01:00
David Swan
1b56da5a27 (MODULES-7898) - 3.2.0 Release Prep 2018-09-27 12:03:18 +01:00
david22swan
380b8d749d Merge pull request #317 from puppetlabs/pdksync_MODULES-6805
pdksync - (MODULES-6805) metadata.json shows support for puppet 6
2018-09-27 11:12:15 +01:00
david22swan
7cb684c3c0 Merge pull request #318 from puppetlabs/pdksync_FM-7392_pdk_update
pdksync - (FM-7392) - Puppet 6 Testing Changes
2018-09-25 09:31:45 +01:00
Paula Muir
2926bbcfcb (FM-7392) - Puppet 6 Testing Changes 2018-09-24 17:02:26 +01:00
tphoney
a63f788394 (MODULES-6805) metadata.json shows support for puppet 6 2018-09-20 16:33:43 +01:00
olevole
728fc7e02d fix set JAVA_HOME environments on FreeBSD platform
FreeBSD do not use /etc/environment file for global variables. Instead we use two
places to set the variable:
  - /etc/profile for sh(1)
  - /etc/csh.login for csh(1) which is the default shell for FreeBSD

Fixes for MODULES-7819 issue
2018-09-20 14:22:37 +03:00
Eimhin Laverty
58669e653c Merge pull request #313 from puppetlabs/release
3.1.0 Mergeback
2018-09-10 10:01:49 +01:00
Eimhin Laverty
255406b30f Merge pull request #312 from david22swan/PreRelease
3.1.0 Pre Release
2018-09-06 16:30:26 +01:00
David Swan
a24f8f15ea 3.1.0 Pre Release 2018-09-06 16:21:26 +01:00
Eimhin Laverty
5d07f08126 Merge pull request #311 from puppetlabs/pdksync_pdksync-beaker4
pdksync - (MODULES-7658) use beaker4 in puppet-module-gems
2018-08-31 14:30:05 +01:00
tphoney
01b95d32c6 (MODULES-7658) use beaker4 in puppet-module-gems 2018-08-30 17:07:43 +01:00
Helen
3c9f98d75e Merge pull request #310 from puppetlabs/pdksync_bumping_puppet_version
pdksync - (MODULES-7705) - Bumping stdlib dependency from < 5.0.0 to < 6.0.0
2018-08-28 10:04:24 +01:00
Paula Muir
e0b0e1cd19 (MODULES-7705) - Bumping stdlib requirement to 6.0.0 2018-08-24 09:15:08 +01:00
Helen
7067aed306 Merge pull request #305 from puppetlabs/pdksync_1.7.0-0-g57412ed
pdksync - Update using 1.7.0
2018-08-22 14:56:33 +01:00
Paula Muir
cb637faf83 pdksync_1.7.0-0-g57412ed 2018-08-22 14:33:05 +01:00
Eimhin Laverty
66023e1a66 Merge pull request #304 from puppetlabs/pdksync_pdksync-beaker3
pdksync - (MODULES-7658) use beaker3 in puppet-module-gems
2018-08-21 16:22:10 +01:00
tphoney
743006a16e (MODULES-7658) use beaker3 in puppet-module-gems 2018-08-21 15:27:02 +01:00
Paula Muir
d5d69ee5ac Merge pull request #303 from puppetlabs/release
Release merge back 3.0.0
2018-08-14 10:57:03 +01:00
Paula Muir
2124c735f5 Merge pull request #302 from eimlav/release-prep
(MODULES-7661) - Release prep for 3.0.0 release
2018-08-13 15:24:00 +01:00
Eimhin Laverty
b0e6bc6d84 (MODULES-7661) - Release prep for 3.0.0 release 2018-08-13 14:55:23 +01:00
david22swan
016772c800 Merge pull request #301 from eimlav/update-limitations
(MODULES-7629) - Update README Limitations section
2018-08-09 16:35:26 +01:00
Eimhin Laverty
42556dfff3 (MODULES-7629) - Update README Limitations section 2018-08-09 14:31:49 +01:00
Helen
2bdbc7df04 Merge pull request #299 from david22swan/MODULES-7561
(MODULES-7561) - Addition of support for Ubuntu 18.04 to java
2018-08-01 11:02:32 +01:00
David Swan
56c1d80150 (MODULES-7561) - Addition of support for Ubuntu 18.04 to java 2018-07-31 15:08:59 +01:00
david22swan
ca5ef782f3 Merge pull request #296 from mpdude/patch-1
Allow this package to be installed together with puppet-archive 3.0.0
2018-06-15 10:39:12 +01:00
Matthias Pigulla
b5297d553b Allow this package to be installed together with puppet-archive 3.0.0
Although it's a major version bump, I don't expect this module here to be impacted of the changes.
2018-06-14 17:33:34 +02:00
Helen
bdcb2c628f Merge pull request #295 from david22swan/FM-6963
[FM-6963] Removal of unsupported OS from java
2018-06-04 09:09:13 +01:00
David Swan
a99915342b [FM-6963] Removal of unsupported OS from java 2018-06-01 14:59:13 +01:00
david22swan
d6eb532960 Merge pull request #294 from puppetlabs/pdksync_heads/master-0-g34e3266
pdksync - Update using 1.5.0
2018-05-18 15:36:33 +01:00
Helen Campbell
891b70a7c6 pdksync_heads/master-0-g34e3266 2018-05-18 15:21:46 +01:00
david22swan
3ba9230b0b Merge pull request #292 from HelenCampbell/gitlabfix
Fixing typo in sync.yml
2018-05-16 17:57:24 +01:00
Helen Campbell
3a35964083 Fixing typo in sync.yml 2018-05-16 17:44:48 +01:00
david22swan
cf1028b8b2 Merge pull request #290 from pmcmaw/unmanage_gitlab
(MODULES-7153) - Unmanage gitlab-ci.yml
2018-05-11 13:30:39 +01:00
Paula McMaw
241800601a (MODULES-7153) - Unmanage gitlab-ci.yml 2018-05-11 11:43:07 +01:00
Paula Muir
2c5397c66c Merge pull request #289 from HelenCampbell/syncupdate
(MODULES-7023) Update .sync.yml for pdk update
2018-04-26 17:06:24 +01:00
Helen Campbell
d7ab10786e (MODULES-7023) Update .sync.yml for pdk update 2018-04-26 15:04:48 +01:00
david22swan
e1173e59c7 Merge pull request #287 from sevencastles/remove_ensure_resource
Remove ensure_resource to avoid potential conflict
2018-02-26 13:47:17 +00:00
Carlo Rengo
6ba478375a Remove ensure_resource to avoid potential conflict
This was probably unintended and could cause conflicts where
stdlib::stages isn't desired.
2018-02-02 10:21:53 +01:00
Helen
47afbd2462 Merge pull request #286 from puppetlabs/release
Release merge back 2.4.0
2018-01-23 16:59:32 +00:00
Paula Muir
10503819d2 Merge pull request #285 from HelenCampbell/release
Release prep 2.4.0
2018-01-23 15:24:15 +00:00
Helen Campbell
5db3084c11 Release prep 2.4.0 2018-01-23 14:58:42 +00:00
Paula Muir
10dc3068a7 Merge pull request #284 from HelenCampbell/conversion1.3.2
PDK Convert 1.3.2
2018-01-23 14:16:32 +00:00
Helen Campbell
b4490a36b3 Remove bundle update command 2018-01-23 13:53:30 +00:00
Helen Campbell
6561d98e58 PDK Convert 1.3.2 2018-01-23 13:42:24 +00:00
TP Honey
61cfbe3154 Merge pull request #283 from HelenCampbell/javahometestfix
Fixes java_home for SLES 11.4 and relevant tests
2018-01-23 10:22:39 +00:00
Helen Campbell
85c17ef66f Fixes the tests for SLES java_home location 2018-01-23 09:55:13 +00:00
mirespace
697c1911f9 $java_home for SLES 11.4
Fixed java_home for matching package to be installed
2018-01-16 11:14:51 +01:00
Paula Muir
c8ce18949b Merge pull request #281 from puppetlabs/msync_MODULES-6339
(maint) modulesync 65530a4 Update Travis
2018-01-05 15:50:32 +00:00
Michael T Lombardi
9c103a2219 (maint) modulesync 65530a4 Update Travis
Related: https://github.com/puppetlabs/modulesync_configs/pull/177
2018-01-03 16:12:39 -06:00
TP Honey
61c8794661 (maint) - modulesync 384f4c1 (#280) 2017-12-13 12:14:15 +00:00
Paula McMaw
901bfe989a Merge pull request #279 from tphoney/FM-6634
FM-6634 rubocop fixes
2017-12-06 15:59:33 +00:00
tphoney
e53b8bb563 FM-6634 rubocop fixes 2017-12-06 15:47:27 +00:00
david22swan
77b2b199e4 Merge pull request #278 from puppetlabs/release
Release mergeback 2.3.0
2017-12-01 15:27:25 +00:00
TP Honey
6db8715496 Merge pull request #277 from david22swan/PreRelease
2.3.0PreRelease
2017-11-29 10:08:54 +00:00
David Swan
4911fe8c77 2.3.0PreRelease 2017-11-28 10:24:28 +00:00
david22swan
fb3e4c4151 Merge pull request #270 from mhjacks/master
Add support for Ubuntu artful (17.10) and bionic (18.04 to be)
2017-11-28 09:25:38 +00:00
TP Honey
9596929938 Merge pull request #274 from puppetlabs/release
Mergeback
2017-11-27 11:16:33 +00:00
Paula McMaw
e0ce74e1a0 Merge pull request #273 from jearls/MODULES-6105-fix-travis-block-for-sync-yml
MODULE-6105: Move `.sync.yml` travis configuration under `.travis.yml:`
2017-11-27 09:20:44 +00:00
Johnson Earls
f80686908c MODULE-6105: Move .sync.yml travis configuration under .travis.yml:
This allows `modulesync` to work again for this module.
2017-11-26 16:21:55 +00:00
david22swan
74d70dae04 Merge pull request #271 from willmeek/rubocopification
Cleanup ruby code via rubocop
2017-11-24 15:26:19 +00:00
Paula McMaw
5ad9e400a2 Merge pull request #272 from puppetlabs/MODULES-4179
MODULES-4179 Updated Oracle Java supported list
2017-11-23 14:50:18 +00:00
Davin Hanlon
078307484f Updated Oracle Java supported list
Added CentOs7 and RHEL7 to Oracle Java supported list
2017-11-23 13:57:21 +00:00
Will Meek
dec5136e11 Cleanup ruby code via rubocop
This commit will add code cleanup as corrected
and alerted by rubocop. It also adds rules to
execute rubocop on Travis.
2017-11-21 14:31:45 +00:00
Martin Jackson
71554f3067 Add support for Ubuntu artful (17.10) and bionic (18.04 to be) 2017-11-20 21:11:32 -06:00
Paula McMaw
692b490438 Release prep for 2.2.0 (#268) 2017-11-20 17:21:33 +00:00
Paula McMaw
7a271eef3e Module sync 1d81b6a (#267) 2017-11-17 15:32:24 +00:00
Paula McMaw
39113d885a Merge pull request #266 from willmeek/release_2_2_0
Release prep for 2.2.0
2017-11-16 14:46:57 +00:00
Will Meek
d0c9b41d9d Release prep for 2.2.0 2017-11-16 14:33:26 +00:00
Paula McMaw
d336d79c04 Merge pull request #265 from willmeek/realpath_test_fix
Realpath test fix
2017-11-16 10:59:40 +00:00
Will Meek
e1df6498c7 Fix facter unit test when using realpath 2017-11-15 14:37:42 +00:00
Sebastian Reitenbach
e50eb64614 do not use unportable readlink utility to find the java_default_home,
use Ruby in a more portable fashion.

adapt tests as well
2017-11-15 14:37:42 +00:00
Sebastian Reitenbach
bdfc567c18 OpenBSD doesn't have /etc/environment, therefore there is no
need to fiddle with it. The default case statement, "do nothing"
is all fine here.

Facter::Util::Resolution.with_env is long time gone since
Facter > 2.x. That was even longer before introduced by me.
Remove that OpenBSD special case in the java_version fact,
and assume that $PATH is properly set in order to find
the 'java' binary.

Additionally confine the java_default_home and java_libjvm_path
to OpenBSD kernel as well. Add some flesh to the java_default_home
fact to allow it to find the java binary.
2017-11-15 14:37:42 +00:00
Michael Baker
db30eb9e2d Adding support for Ubuntu (#243)
* Translate amd64

* Fix the path creation on exec
2017-11-15 14:36:10 +00:00
Paula McMaw
d49c1f0e29 Merge pull request #264 from puppetlabs/release
2.1.1 Release Mergeback
2017-11-09 13:48:10 +00:00
Eric Putnam
336a0e2e1a Merge pull request #263 from pmcmaw/paulaTesting
(FM-6503) - Release Prep for 2.2.1
2017-11-08 09:25:50 -08:00
Paula McMaw
6592edd454 (FM-6503) - Release Prep for 2.2.1 2017-11-06 15:35:10 +00:00
Helen
e6e961e7fc Merge pull request #261 from bastelfreak/bumparchivebmjenplsmerge
allow latest archive version as dependency
2017-10-09 17:51:01 +01:00
Tim Meusel
2b2e639531 allow latest archive version as dependency 2017-10-09 18:30:09 +02:00
TP Honey
5f820fe8bd Merge pull request #257 from shuebnersr/fact1754_java_version_fails_when_JAVA_TOOL_OPTIONS_is_used
(FACT-1754) search for matching line with java version
2017-10-02 12:41:05 +01:00
shuebnersr
b7bdf96252 Fixed search for matching line with java version
Use value of variable instead of return statement
Extended unit test for checking handling of JAVA_TOOL_OPTIONS
2017-10-01 15:15:01 +02:00
TP Honey
231db77fe7 Merge pull request #203 from vrtdev/bugfix/override_package_alt_home
#MODULES-4069: Fail when required params are not available in params.
2017-09-26 14:02:45 +01:00
TP Honey
cb7105f4a2 Merge pull request #258 from shuebnersr/fact1760_test_for_java_version_when_java_not_installed
Fact1760 test for java version when java not installed
2017-09-26 14:00:12 +01:00
Jan Vansteenkiste
c40b061d97 (MODULES-4069) Fail when required params are not available in params.
When overriding all values required for the java setup, there is
no need to fail if params.pp does not support the package.
2017-09-26 07:37:41 +02:00
shuebnersr
18bd3fcb86 Merge pull request #2 from shuebnersr/fact1760_test_for_java_version_when_java_not_installed
Fact1760 test for java version when java not installed
2017-09-22 12:00:35 +02:00
shuebnersr
578eb951ea fix java_version test for other systems
mock Facter::Util::Resolution.which('java') for the "other systems" test; before it was not mocked and was based on Java being installed on the test system or not
2017-09-22 11:50:41 +02:00
shuebnersr
318f8864fd Merge pull request #1 from puppetlabs/master
sync
2017-09-22 11:39:28 +02:00
TP Honey
62f054649a Merge pull request #256 from puppetlabs/msync_18sep17_892c4cf
(maint) modulesync 892c4cf
2017-09-21 13:52:59 +01:00
shuebnersr
d89532435d search for matching line with java version
do not just try to read java version from first line, but search for the matching line from java output
2017-09-20 14:26:04 +02:00
Hailee Kenney
6397c0870b (maint) modulesync 892c4cf 2017-09-18 14:56:13 -07:00
Paula McMaw
e4888a507e Merge pull request #255 from Andor/master
Support for Ubuntu 17.04 Zesty Zapus
2017-09-08 11:41:23 +01:00
Andrew N Golovkov
525016ec02 Support for Ubuntu 17.04 Zesty Zapus 2017-09-06 20:44:48 +03:00
Helen
c5005d9cc1 Merge pull request #254 from pmcmaw/rm_debian6
Removing Debian 6
2017-08-31 11:30:33 +01:00
Paula McMaw
7f8bb518f0 Removing Debian 6
According to the followin page Debian 6 is no longer supported as an
Agent. https://docs.puppet.com/pe/latest/sys_req_os.html
2017-08-31 11:20:41 +01:00
TP Honey
771a3a6702 Merge pull request #253 from pmcmaw/rm_ubuntu
(MODULES-5501) - Remove unsupported Ubuntu
2017-08-17 16:00:54 +01:00
Paula McMaw
c74f533e0b (MODULES-5501) - Remove unsupported Ubuntu
Removing older version of Ubuntu that are not supported by the module.
2017-08-17 14:08:56 +01:00
Shaleen Gupta
43aa9af1b2 Add support for CloudLinux (#251)
Fix the fail "unsupported os CloudlLinux".
2017-08-01 13:30:38 +01:00
Paula McMaw
cceb78b7fe Merge pull request #252 from puppetlabs/maint-modsync-915cde70e20
(maint) modulesync 915cde70e20
2017-07-28 11:34:12 +01:00
Glenn Sarti
b50e762f1c (maint) modulesync 915cde70e20 2017-07-27 15:00:09 -07:00
Hunter Haugen
e9c50332bd Merge pull request #249 from puppetlabs/msync_modules5187
(MODULES-5187) msync puppet 5 and ruby 2.4
2017-07-10 14:51:42 -07:00
Eric Putnam
795b92a81d (MODULES-5187) mysnc puppet 5 and ruby 2.4 2017-07-06 14:41:47 -07:00
Glenn Sarti
31799ce4e7 Merge pull request #247 from hunner/bump_metadata
(MODULES-5144) Prep for puppet 5
2017-06-26 22:31:31 -07:00
Hunter Haugen
2829b75e83 (MODULES-5144) Prep for puppet 5 2017-06-26 14:12:02 -07:00
Bryan Jen
0ea0b663fa Merge pull request #246 from puppetlabs/release
2.1.0 mergeback
2017-06-22 16:30:00 -07:00
Hunter Haugen
6bbaacdb39 Merge pull request #244 from kBite/add-support-for-arch-linux
Add support for Archlinux
2017-06-21 14:29:25 -07:00
Kilian Engelhardt
6951263d4c fix indentation and remove a white line 2017-06-21 11:26:24 +02:00
Kilian Engelhardt
0bcdd2bc2f add basic arch linux support 2017-06-21 10:59:39 +02:00
Paula McMaw
8763d0b388 Merge pull request #239 from puppetlabs/revert-238-release
Revert "Release Mergeback 2.1.0"
2017-06-15 11:20:16 +01:00
Helen
184c745e82 Revert "Release Mergeback 2.1.0" 2017-06-15 11:03:44 +01:00
40 changed files with 2635 additions and 1764 deletions

2
.gitattributes vendored
View File

@@ -1,5 +1,5 @@
#This file is generated by ModuleSync, do not edit.
*.rb eol=lf *.rb eol=lf
*.erb eol=lf *.erb eol=lf
*.pp eol=lf *.pp eol=lf
*.sh eol=lf *.sh eol=lf
*.epp eol=lf

42
.gitignore vendored
View File

@@ -1,24 +1,26 @@
#This file is generated by ModuleSync, do not edit. .git/
pkg/
Gemfile.lock
Gemfile.local
vendor/
spec/fixtures/manifests/
spec/fixtures/modules/
log/
junit/
.vagrant/
.bundle/
coverage/
log/
.idea/
.metadata
*.iml
.*.sw[op] .*.sw[op]
.metadata
.yardoc .yardoc
.yardwarns .yardwarns
*.iml
/.bundle/
/.idea/
/.vagrant/
/coverage/
/bin/
/doc/
/Gemfile.local
/Gemfile.lock
/junit/
/log/
/pkg/
/spec/fixtures/manifests/
/spec/fixtures/modules/
/tmp/
/vendor/
/convert_report.txt
/update_report.txt
.DS_Store .DS_Store
tmp/ .envrc
vendor/ /inventory.yaml
doc/

41
.pdkignore Normal file
View File

@@ -0,0 +1,41 @@
.git/
.*.sw[op]
.metadata
.yardoc
.yardwarns
*.iml
/.bundle/
/.idea/
/.vagrant/
/coverage/
/bin/
/doc/
/Gemfile.local
/Gemfile.lock
/junit/
/log/
/pkg/
/spec/fixtures/manifests/
/spec/fixtures/modules/
/tmp/
/vendor/
/convert_report.txt
/update_report.txt
.DS_Store
.envrc
/inventory.yaml
/appveyor.yml
/.fixtures.yml
/Gemfile
/.gitattributes
/.gitignore
/.gitlab-ci.yml
/.pdkignore
/Rakefile
/rakelib/
/.rspec
/.rubocop.yml
/.travis.yml
/.yardopts
/spec/
/.vscode/

1
.puppet-lint.rc Normal file
View File

@@ -0,0 +1 @@
--relative

View File

@@ -1,508 +1,122 @@
---
require: rubocop-rspec require: rubocop-rspec
AllCops: AllCops:
TargetRubyVersion: 1.9 DisplayCopNames: true
TargetRubyVersion: '2.1'
Include: Include:
- ./**/*.rb - "./**/*.rb"
Exclude: Exclude:
- vendor/**/* - bin/*
- .vendor/**/* - ".vendor/**/*"
- pkg/**/* - "**/Gemfile"
- spec/fixtures/**/* - "**/Rakefile"
Lint/ConditionPosition: - pkg/**/*
Enabled: True - spec/fixtures/**/*
- vendor/**/*
Lint/ElseLayout: - "**/Puppetfile"
Enabled: True - "**/Vagrantfile"
- "**/Guardfile"
Lint/UnreachableCode:
Enabled: True
Lint/UselessComparison:
Enabled: True
Lint/EnsureReturn:
Enabled: True
Lint/HandleExceptions:
Enabled: True
Lint/LiteralInCondition:
Enabled: True
Lint/ShadowingOuterLocalVariable:
Enabled: True
Lint/LiteralInInterpolation:
Enabled: True
Style/HashSyntax:
Enabled: True
Style/RedundantReturn:
Enabled: True
Lint/AmbiguousOperator:
Enabled: True
Lint/AssignmentInCondition:
Enabled: True
Style/SpaceBeforeComment:
Enabled: True
Style/AndOr:
Enabled: True
Style/RedundantSelf:
Enabled: True
# Method length is not necessarily an indicator of code quality
Metrics/MethodLength:
Enabled: False
# Module length is not necessarily an indicator of code quality
Metrics/ModuleLength:
Enabled: False
Style/WhileUntilModifier:
Enabled: True
Lint/AmbiguousRegexpLiteral:
Enabled: True
Lint/Eval:
Enabled: True
Lint/BlockAlignment:
Enabled: True
Lint/DefEndAlignment:
Enabled: True
Lint/EndAlignment:
Enabled: True
Lint/DeprecatedClassMethods:
Enabled: True
Lint/Loop:
Enabled: True
Lint/ParenthesesAsGroupedExpression:
Enabled: True
Lint/RescueException:
Enabled: True
Lint/StringConversionInInterpolation:
Enabled: True
Lint/UnusedBlockArgument:
Enabled: True
Lint/UnusedMethodArgument:
Enabled: True
Lint/UselessAccessModifier:
Enabled: True
Lint/UselessAssignment:
Enabled: True
Lint/Void:
Enabled: True
Style/AccessModifierIndentation:
Enabled: True
Style/AccessorMethodName:
Enabled: True
Style/Alias:
Enabled: True
Style/AlignArray:
Enabled: True
Style/AlignHash:
Enabled: True
Style/AlignParameters:
Enabled: True
Metrics/BlockNesting:
Enabled: True
Style/AsciiComments:
Enabled: True
Style/Attr:
Enabled: True
Style/BracesAroundHashParameters:
Enabled: True
Style/CaseEquality:
Enabled: True
Style/CaseIndentation:
Enabled: True
Style/CharacterLiteral:
Enabled: True
Style/ClassAndModuleCamelCase:
Enabled: True
Style/ClassAndModuleChildren:
Enabled: False
Style/ClassCheck:
Enabled: True
# Class length is not necessarily an indicator of code quality
Metrics/ClassLength:
Enabled: False
Style/ClassMethods:
Enabled: True
Style/ClassVars:
Enabled: True
Style/WhenThen:
Enabled: True
Style/WordArray:
Enabled: True
Style/UnneededPercentQ:
Enabled: True
Style/Tab:
Enabled: True
Style/SpaceBeforeSemicolon:
Enabled: True
Style/TrailingBlankLines:
Enabled: True
Style/SpaceInsideBlockBraces:
Enabled: True
Style/SpaceInsideBrackets:
Enabled: True
Style/SpaceInsideHashLiteralBraces:
Enabled: True
Style/SpaceInsideParens:
Enabled: True
Style/LeadingCommentSpace:
Enabled: True
Style/SpaceBeforeFirstArg:
Enabled: True
Style/SpaceAfterColon:
Enabled: True
Style/SpaceAfterComma:
Enabled: True
Style/SpaceAfterMethodName:
Enabled: True
Style/SpaceAfterNot:
Enabled: True
Style/SpaceAfterSemicolon:
Enabled: True
Style/SpaceAroundEqualsInParameterDefault:
Enabled: True
Style/SpaceAroundOperators:
Enabled: True
Style/SpaceBeforeBlockBraces:
Enabled: True
Style/SpaceBeforeComma:
Enabled: True
Style/CollectionMethods:
Enabled: True
Style/CommentIndentation:
Enabled: True
Style/ColonMethodCall:
Enabled: True
Style/CommentAnnotation:
Enabled: True
# 'Complexity' is very relative
Metrics/CyclomaticComplexity:
Enabled: False
Style/ConstantName:
Enabled: True
Style/Documentation:
Enabled: False
Style/DefWithParentheses:
Enabled: True
Style/PreferredHashMethods:
Enabled: True
Style/DotPosition:
EnforcedStyle: trailing
Style/DoubleNegation:
Enabled: True
Style/EachWithObject:
Enabled: True
Style/EmptyLineBetweenDefs:
Enabled: True
Style/IndentArray:
Enabled: True
Style/IndentHash:
Enabled: True
Style/IndentationConsistency:
Enabled: True
Style/IndentationWidth:
Enabled: True
Style/EmptyLines:
Enabled: True
Style/EmptyLinesAroundAccessModifier:
Enabled: True
Style/EmptyLiteral:
Enabled: True
# Configuration parameters: AllowURI, URISchemes.
Metrics/LineLength: Metrics/LineLength:
Enabled: False Description: People have wide screens, use them.
Max: 200
Style/MethodCallParentheses: GetText/DecorateString:
Enabled: True Description: We don't want to decorate test output.
Exclude:
Style/MethodDefParentheses: - spec/*
Enabled: True RSpec/BeforeAfterAll:
Description: Beware of using after(:all) as it may cause state to leak between tests.
Style/LineEndConcatenation: A necessary evil in acceptance testing.
Enabled: True Exclude:
- spec/acceptance/**/*.rb
Style/TrailingWhitespace: RSpec/HookArgument:
Enabled: True Description: Prefer explicit :each argument, matching existing module's style
EnforcedStyle: each
Style/StringLiterals:
Enabled: True
Style/TrailingCommaInArguments:
Enabled: True
Style/TrailingCommaInLiteral:
Enabled: True
Style/GlobalVars:
Enabled: True
Style/GuardClause:
Enabled: True
Style/IfUnlessModifier:
Enabled: True
Style/MultilineIfThen:
Enabled: True
Style/NegatedIf:
Enabled: True
Style/NegatedWhile:
Enabled: True
Style/Next:
Enabled: True
Style/SingleLineBlockParams:
Enabled: True
Style/SingleLineMethods:
Enabled: True
Style/SpecialGlobalVars:
Enabled: True
Style/TrivialAccessors:
Enabled: True
Style/UnlessElse:
Enabled: True
Style/VariableInterpolation:
Enabled: True
Style/VariableName:
Enabled: True
Style/WhileUntilDo:
Enabled: True
Style/EvenOdd:
Enabled: True
Style/FileName:
Enabled: True
Style/For:
Enabled: True
Style/Lambda:
Enabled: True
Style/MethodName:
Enabled: True
Style/MultilineTernaryOperator:
Enabled: True
Style/NestedTernaryOperator:
Enabled: True
Style/NilComparison:
Enabled: True
Style/FormatString:
Enabled: True
Style/MultilineBlockChain:
Enabled: True
Style/Semicolon:
Enabled: True
Style/SignalException:
Enabled: True
Style/NonNilCheck:
Enabled: True
Style/Not:
Enabled: True
Style/NumericLiterals:
Enabled: True
Style/OneLineConditional:
Enabled: True
Style/OpMethod:
Enabled: True
Style/ParenthesesAroundCondition:
Enabled: True
Style/PercentLiteralDelimiters:
Enabled: True
Style/PerlBackrefs:
Enabled: True
Style/PredicateName:
Enabled: True
Style/RedundantException:
Enabled: True
Style/SelfAssignment:
Enabled: True
Style/Proc:
Enabled: True
Style/RaiseArgs:
Enabled: True
Style/RedundantBegin:
Enabled: True
Style/RescueModifier:
Enabled: True
# based on https://github.com/voxpupuli/modulesync_config/issues/168
Style/RegexpLiteral:
EnforcedStyle: percent_r
Enabled: True
Lint/UnderscorePrefixedVariableName:
Enabled: True
Metrics/ParameterLists:
Enabled: False
Lint/RequireParentheses:
Enabled: True
Style/SpaceBeforeFirstArg:
Enabled: True
Style/ModuleFunction:
Enabled: True
Lint/Debugger:
Enabled: True
Style/IfWithSemicolon:
Enabled: True
Style/Encoding:
Enabled: True
Style/BlockDelimiters: Style/BlockDelimiters:
Enabled: True Description: Prefer braces for chaining. Mostly an aesthetical choice. Better to
be consistent then.
Style/MultilineBlockLayout: EnforcedStyle: braces_for_chaining
Enabled: True Style/ClassAndModuleChildren:
Description: Compact style reduces the required amount of indentation.
# 'Complexity' is very relative EnforcedStyle: compact
Style/EmptyElse:
Description: Enforce against empty else clauses, but allow `nil` for clarity.
EnforcedStyle: empty
Style/FormatString:
Description: Following the main puppet project's style, prefer the % format format.
EnforcedStyle: percent
Style/FormatStringToken:
Description: Following the main puppet project's style, prefer the simpler template
tokens over annotated ones.
EnforcedStyle: template
Style/Lambda:
Description: Prefer the keyword for easier discoverability.
EnforcedStyle: literal
Style/RegexpLiteral:
Description: Community preference. See https://github.com/voxpupuli/modulesync_config/issues/168
EnforcedStyle: percent_r
Style/TernaryParentheses:
Description: Checks for use of parentheses around ternary conditions. Enforce parentheses
on complex expressions for better readability, but seriously consider breaking
it up.
EnforcedStyle: require_parentheses_when_complex
Style/TrailingCommaInArguments:
Description: Prefer always trailing comma on multiline argument lists. This makes
diffs, and re-ordering nicer.
EnforcedStyleForMultiline: comma
Style/TrailingCommaInLiteral:
Description: Prefer always trailing comma on multiline literals. This makes diffs,
and re-ordering nicer.
EnforcedStyleForMultiline: comma
Style/SymbolArray:
Description: Using percent style obscures symbolic intent of array's contents.
EnforcedStyle: brackets
RSpec/MessageSpies:
EnforcedStyle: receive
Style/Documentation:
Exclude:
- lib/puppet/parser/functions/**/*
- spec/**/*
Style/WordArray:
EnforcedStyle: brackets
Style/CollectionMethods:
Enabled: true
Style/MethodCalledOnDoEndBlock:
Enabled: true
Style/StringMethods:
Enabled: true
Layout/EndOfLine:
Enabled: false
Layout/IndentHeredoc:
Enabled: false
Metrics/AbcSize: Metrics/AbcSize:
Enabled: False Enabled: false
Metrics/BlockLength:
# 'Complexity' is very relative Enabled: false
Metrics/ClassLength:
Enabled: false
Metrics/CyclomaticComplexity:
Enabled: false
Metrics/MethodLength:
Enabled: false
Metrics/ModuleLength:
Enabled: false
Metrics/ParameterLists:
Enabled: false
Metrics/PerceivedComplexity: Metrics/PerceivedComplexity:
Enabled: False Enabled: false
Lint/UselessAssignment:
Enabled: True
Style/ClosingParenthesisIndentation:
Enabled: False
# RSpec
# We don't use rspec in this way
RSpec/DescribeClass: RSpec/DescribeClass:
Enabled: False Enabled: false
# Example length is not necessarily an indicator of code quality
RSpec/ExampleLength: RSpec/ExampleLength:
Enabled: False Enabled: false
RSpec/MessageExpectation:
RSpec/NamedSubject: Enabled: false
Enabled: False RSpec/MultipleExpectations:
Enabled: false
RSpec/NestedGroups:
Enabled: false
Style/AsciiComments:
Enabled: false
Style/IfUnlessModifier:
Enabled: false
Style/SymbolProc:
Enabled: false

0
.rubocop_todo.yml Normal file
View File

View File

@@ -1,5 +1,41 @@
--- ---
.gitignore:
required:
- ---.project
.gitlab-ci.yml:
unmanaged: true
.travis.yml:
docker_sets:
- set: docker/centos-7
- set: docker/ubuntu-14.04
docker_defaults:
bundler_args: ""
secure: ""
branches:
- release
appveyor.yml: appveyor.yml:
delete: true 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')"
required:
':system_tests':
- gem: 'puppet-module-posix-system-r#{minor_version}'
platforms: ruby
- gem: 'puppet-module-win-system-r#{minor_version}'
platforms:
- mswin
- mingw
- x64_mingw
spec/spec_helper.rb: spec/spec_helper.rb:
allow_deprecations: true mock_with: ':rspec'
coverage_report: true

View File

@@ -1,32 +1,72 @@
#This file is generated by ModuleSync, do not edit.
--- ---
sudo: false
language: ruby language: ruby
cache: bundler cache: bundler
script: "bundle exec rake release_checks"
#Inserting below due to the following issue: https://github.com/travis-ci/travis-ci/issues/3531#issuecomment-88311203
before_install: before_install:
- gem update bundler - bundle -v
- rm -f Gemfile.lock
- gem update --system $RUBYGEMS_VERSION
- gem --version
- bundle -v
script:
- 'bundle exec rake $CHECK'
bundler_args: --without system_tests
rvm:
- 2.5.3
stages:
- static
- spec
- acceptance
-
if: tag =~ ^v\d
name: deploy
matrix: matrix:
fast_finish: true fast_finish: true
include: include:
- rvm: 2.3.1 -
dist: trusty bundler_args:
env: PUPPET_INSTALL_TYPE=agent BEAKER_debug=true BEAKER_set=docker/ubuntu-14.04 dist: trusty
script: bundle exec rake beaker env: PUPPET_INSTALL_TYPE=agent BEAKER_debug=true BEAKER_PUPPET_COLLECTION=puppet6 BEAKER_set=docker/centos-7 BEAKER_TESTMODE=apply
services: docker rvm: 2.5.3
sudo: required script: bundle exec rake beaker
- rvm: 2.3.1 services: docker
dist: trusty stage: acceptance
env: PUPPET_INSTALL_TYPE=agent BEAKER_debug=true BEAKER_set=docker/centos-7 sudo: required
script: bundle exec rake beaker -
services: docker bundler_args:
sudo: required dist: trusty
- rvm: 2.3.1 env: PUPPET_INSTALL_TYPE=agent BEAKER_debug=true BEAKER_PUPPET_COLLECTION=puppet6 BEAKER_set=docker/ubuntu-14.04 BEAKER_TESTMODE=apply
bundler_args: --without system_tests rvm: 2.5.3
env: PUPPET_GEM_VERSION="~> 4.0" script: bundle exec rake beaker
- rvm: 2.1.7 services: docker
bundler_args: --without system_tests stage: acceptance
env: PUPPET_GEM_VERSION="~> 4.0" sudo: required
-
env: CHECK="check:symlinks check:git_ignore check:dot_underscore check:test_file rubocop syntax lint metadata_lint"
stage: static
-
env: PUPPET_GEM_VERSION="~> 5.0" CHECK=parallel_spec
rvm: 2.4.5
stage: spec
-
env: PUPPET_GEM_VERSION="~> 6.0" CHECK=parallel_spec
rvm: 2.5.3
stage: spec
-
env: DEPLOY_TO_FORGE=yes
stage: deploy
branches:
only:
- master
- /^v\d/
- release
notifications: notifications:
email: false email: false
deploy:
provider: puppetforge
user: puppet
password:
secure: ""
on:
tags: true
all_branches: true
condition: "$DEPLOY_TO_FORGE = yes"

1
.yardopts Normal file
View File

@@ -0,0 +1 @@
--markup markdown

View File

@@ -1,14 +1,140 @@
# Change log
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).
## [v4.0.0](https://github.com/puppetlabs/puppetlabs-java/tree/v4.0.0) (2019-05-16)
[Full Changelog](https://github.com/puppetlabs/puppetlabs-java/compare/3.3.0...v4.0.0)
### Changed
- pdksync - \(MODULES-8444\) - Raise lower Puppet bound [\#356](https://github.com/puppetlabs/puppetlabs-java/pull/356) ([david22swan](https://github.com/david22swan))
### Added
- \(FM-7921\) - Implement Puppet Strings [\#353](https://github.com/puppetlabs/puppetlabs-java/pull/353) ([david22swan](https://github.com/david22swan))
- Update default version & java 8 version from 8u192 to 8u201 [\#347](https://github.com/puppetlabs/puppetlabs-java/pull/347) ([valentinsavenko](https://github.com/valentinsavenko))
- Add ability to override basedir and package type for oracle java [\#345](https://github.com/puppetlabs/puppetlabs-java/pull/345) ([fraenki](https://github.com/fraenki))
- MODULES-8613: Add option to set a custom JCE download URL [\#344](https://github.com/puppetlabs/puppetlabs-java/pull/344) ([HielkeJ](https://github.com/HielkeJ))
### Fixed
- MODULES-8698: Fix $install\_path on CentOS with tar.gz package type [\#349](https://github.com/puppetlabs/puppetlabs-java/pull/349) ([fraenki](https://github.com/fraenki))
## [3.3.0](https://github.com/puppetlabs/puppetlabs-java/tree/3.3.0) (2019-01-17)
[Full Changelog](https://github.com/puppetlabs/puppetlabs-java/compare/3.2.0...3.3.0)
### Added
- \(MODULES-8234\) - Add SLES 15 support [\#336](https://github.com/puppetlabs/puppetlabs-java/pull/336) ([eimlav](https://github.com/eimlav))
- \(MODULES-8234\) - Upgrade Oracle Java version to 8u192 [\#334](https://github.com/puppetlabs/puppetlabs-java/pull/334) ([eimlav](https://github.com/eimlav))
- Support for installing JCE. Fixes MODULES-1681 [\#326](https://github.com/puppetlabs/puppetlabs-java/pull/326) ([dploeger](https://github.com/dploeger))
- MODULES-8044: upgrade Oracle Java 8 to 181, make it the default release [\#314](https://github.com/puppetlabs/puppetlabs-java/pull/314) ([ojongerius](https://github.com/ojongerius))
### Fixed
- pdksync - \(FM-7655\) Fix rubygems-update for ruby \< 2.3 [\#338](https://github.com/puppetlabs/puppetlabs-java/pull/338) ([tphoney](https://github.com/tphoney))
- \(FM-7520\) - Removing Solaris from the support matrix [\#335](https://github.com/puppetlabs/puppetlabs-java/pull/335) ([pmcmaw](https://github.com/pmcmaw))
- Optimized code for making java::oracle atomic. Fixes MODULES-8085 [\#330](https://github.com/puppetlabs/puppetlabs-java/pull/330) ([dploeger](https://github.com/dploeger))
- Fix OpenJDK paths on Debian based OS with ARM [\#329](https://github.com/puppetlabs/puppetlabs-java/pull/329) ([mmoll](https://github.com/mmoll))
- \(MODULES-7050\) - Fix OracleJDK reinstalling on Puppet runs [\#323](https://github.com/puppetlabs/puppetlabs-java/pull/323) ([eimlav](https://github.com/eimlav))
- \(MODULES-8025\) Switch default for Ubuntu 18.04 to 11 [\#322](https://github.com/puppetlabs/puppetlabs-java/pull/322) ([baurmatt](https://github.com/baurmatt))
- MODULES-7819 fix set JAVA\_HOME environments on FreeBSD platform [\#315](https://github.com/puppetlabs/puppetlabs-java/pull/315) ([olevole](https://github.com/olevole))
## [3.2.0](https://github.com/puppetlabs/puppetlabs-java/tree/3.2.0) (2018-09-27)
[Full Changelog](https://github.com/puppetlabs/puppetlabs-java/compare/3.1.0...3.2.0)
### Added
- pdksync - \(MODULES-6805\) metadata.json shows support for puppet 6 [\#317](https://github.com/puppetlabs/puppetlabs-java/pull/317) ([tphoney](https://github.com/tphoney))
## [3.1.0](https://github.com/puppetlabs/puppetlabs-java/tree/3.1.0) (2018-09-06)
[Full Changelog](https://github.com/puppetlabs/puppetlabs-java/compare/3.0.0...3.1.0)
### Added
- pdksync - \(MODULES-7705\) - Bumping stdlib dependency from \< 5.0.0 to \< 6.0.0 [\#310](https://github.com/puppetlabs/puppetlabs-java/pull/310) ([pmcmaw](https://github.com/pmcmaw))
## [3.0.0](https://github.com/puppetlabs/puppetlabs-java/tree/3.0.0) (2018-08-13)
[Full Changelog](https://github.com/puppetlabs/puppetlabs-java/compare/2.4.0...3.0.0)
### Changed
- \[FM-6963\] Removal of unsupported OS from java [\#295](https://github.com/puppetlabs/puppetlabs-java/pull/295) ([david22swan](https://github.com/david22swan))
### Added
- \(MODULES-7561\) - Addition of support for Ubuntu 18.04 to java [\#299](https://github.com/puppetlabs/puppetlabs-java/pull/299) ([david22swan](https://github.com/david22swan))
### Fixed
- Remove ensure\_resource to avoid potential conflict [\#287](https://github.com/puppetlabs/puppetlabs-java/pull/287) ([sevencastles](https://github.com/sevencastles))
## 2.4.0
### Summary
This release uses the PDK convert functionality which in return makes the module PDK compliant. Also includes a clean up from Rubocop.
#### Changed
- 1.3.2 PDK convert has been applied [MODULES-6456](https://tickets.puppetlabs.com/browse/MODULES-6456)
- The modules has undergone a Rubocop cleanup.
#### Fixed
- $java_home for SLES 11.4 has been updated to the correct location.
## Supported Release [2.3.0]
### Summary
This release is in order to implement Rubocop changes into the module.
#### Added
- Several Modulesync changes have been made.
- Rubocop has been implemented in the module.
- CentOS 7 is now supported.
- Red Hat Enterprise Linux (RHEL) 7 is now supported.
- Ubuntu artful 1710 now supported.
- Bionic 1804 now supported.
## Supported Release [2.2.0]
### Summary
This release is a maintenance release that includes a roll up of minor changes.
#### Added
- Addition of Ubuntu for Oracle Java.
- Addition of Debian 9 in supported versions.
- Addition of OpenBSD case and use `realpath` rather than `readlink` in Java Default Home Facter fact.
#### Removed
- Removal of OpenBSD as a special case and deprecated `with_env` in Java Version Facter Facter fact.
## Supported Release 2.1.1
### Summary
This release is a maintenance release that includes a roll up of minor changes.
#### Added
- Basic Arch Linux, Cloud Linux and Ubuntu 17.04 compatibility.
- Metadata bump for Puppet 5.
- Search for matching line with java version.
- ([MODULES-4069](https://tickets.puppet.com/browse/MODULES-4069)) Fail when required params are not available in params.
- A test for java version when java not installed.
- Allow latest archive version as dependency.
#### Changed
- CONTRIBUTING.md document includes updates.
- Removal of Ubuntu 10.04 ad 12.04, Debian 6 in supported versions.
## Supported Release 2.1.0 ## Supported Release 2.1.0
### Summary ### Summary
This release adds fixes to restore the ability to install Oracle Java. It also This release adds fixes to restore the ability to install Oracle Java. It also fixes the paths for the latest RHEL 7 1.7.0 and 1.8.0 OpenJDKs.
fixes the paths for the latest RHEL 7 1.7.0 and 1.8.0 OpenJDKs.
### Added ### Added
- java::oracle parameter `url` - java::oracle parameter `url`
- java::oracle parameter `url_hash` - java::oracle parameter `url_hash`
### Fixed ### Fixed
- Let `java_default_home` fact work when /usr/bin/java doesn't exist - Let `java_default_home` fact work when /usr/bin/java does not exist
- Add puppet 4 parameter types - Add puppet 4 parameter types
- Use `/usr/lib/jvm/java-1.x.0` symlinks for `java_home` defaults. - Use `/usr/lib/jvm/java-1.x.0` symlinks for `java_home` defaults.
@@ -127,7 +253,7 @@ This release adds 3 new facts for determining Java version, adds RHEL alternativ
## 2014-11-11 - Supported Version 1.2.0 ## 2014-11-11 - Supported Version 1.2.0
### Summary: ### Summary:
This release adds SLES 12 support and is tested for Future Parser Support This release adds SLES 12 support and is tested for Future Parser Support
#### Bugfixes: #### Bugfixes:
@@ -141,7 +267,7 @@ This release adds SLES 12 support and is tested for Future Parser Support
## 2014-08-25 - Supported Version 1.1.2 ## 2014-08-25 - Supported Version 1.1.2
### Summary: ### Summary:
This release begins the support coverage of the puppetlabs-java module. This release begins the support coverage of the puppetlabs-java module.
### Bugfixes: ### Bugfixes:
@@ -214,11 +340,11 @@ Scott Schneider <sschneider@puppetlabs.com>
* Add Solaris support * Add Solaris support
## 2011-06-16 - Version 0.1.5 ## 2011-06-16 - Version 0.1.5
Jeff McCune <jeff@puppetlabs.com> Jeff McCune <jeff@puppetlabs.com>
* Add Debian based distro (Lucid) support * Add Debian based distro (Lucid) support
## 2011-06-02 - Version 0.1.4 ## 2011-06-02 - Version 0.1.4
Jeff McCune <jeff@puppetlabs.com> Jeff McCune <jeff@puppetlabs.com>
* Fix class composition ordering problems * Fix class composition ordering problems
## 2011-05-28 - Version 0.1.3 ## 2011-05-28 - Version 0.1.3
@@ -235,9 +361,15 @@ Jeff McCune <jeff@puppetlabs.com>
* Add validation of class parameters * Add validation of class parameters
## 2011-05-24 - Version 0.1.0 ## 2011-05-24 - Version 0.1.0
Jeff McCune <jeff@puppetlabs.com> Jeff McCune <jeff@puppetlabs.com>
* Default to JDK version 6u25 * Default to JDK version 6u25
## 2011-05-24 - Version 0.0.1 ## 2011-05-24 - Version 0.0.1
Jeff McCune <jeff@puppetlabs.com> Jeff McCune <jeff@puppetlabs.com>
* Initial release * Initial release
[2.3.0]:https://github.com/puppetlabs/puppetlabs-java/compare/2.2.0...2.3.0
[2.2.0]:https://github.com/puppetlabs/puppetlabs-java/compare/2.1.1...2.2.0
\* *This Changelog was automatically generated by [github_changelog_generator](https://github.com/skywinder/Github-Changelog-Generator)*

View File

@@ -1,63 +1,75 @@
Checklist (and a short version for the impatient) # Contributing to Puppet modules
=================================================
* Commits: So you want to contribute to a Puppet module: Great! Below are some instructions to get you started doing
that very thing while setting expectations around code quality as well as a few tips for making the
process as easy as possible.
- Make commits of logical units. ### Table of Contents
- Check for unnecessary whitespace with "git diff --check" before 1. [Getting Started](#getting-started)
committing. 1. [Commit Checklist](#commit-checklist)
1. [Submission](#submission)
1. [More about commits](#more-about-commits)
1. [Testing](#testing)
- [Running Tests](#running-tests)
- [Writing Tests](#writing-tests)
1. [Get Help](#get-help)
- Commit using Unix line endings (check the settings around "crlf" in ## Getting Started
git-config(1)).
- Do not check in commented out code or unneeded files. - Fork the module repository on GitHub and clone to your workspace
- The first line of the commit message should be a short - Make your changes!
description (50 characters is the soft limit, excluding ticket
number(s)), and should skip the full stop.
- Associate the issue in the message. The first line should include ## Commit Checklist
the issue number in the form "(#XXXX) Rest of message".
- The body should provide a meaningful commit message, which: ### The Basics
- uses the imperative, present tense: "change", not "changed" or - [x] my commit is a single logical unit of work
"changes".
- includes motivation for the change, and contrasts its - [x] I have checked for unnecessary whitespace with "git diff --check"
implementation with the previous behavior.
- Make sure that you have tests for the bug you are fixing, or - [x] my commit does not include commented out code or unneeded files
feature you are adding.
- Make sure the test suites passes after your commit: ### The Content
`bundle exec rspec spec/acceptance` More information on [testing](#Testing) below
- When introducing a new feature, make sure it is properly - [x] my commit includes tests for the bug I fixed or feature I added
documented in the README.md
* Submission: - [x] my commit includes appropriate documentation changes if it is introducing a new feature or changing existing functionality
- [x] my code passes existing test suites
* Pre-requisites: ### The Commit Message
- Make sure you have a [GitHub account](https://github.com/join) - [x] the first line of my commit message includes:
- [Create a ticket](https://tickets.puppet.com/secure/CreateIssue!default.jspa), or [watch the ticket](https://tickets.puppet.com/browse/) you are patching for. - [x] an issue number (if applicable), e.g. "(MODULES-xxxx) This is the first line"
- [x] a short description (50 characters is the soft limit, excluding ticket number(s))
* Preferred method: - [x] the body of my commit message:
- Fork the repository on GitHub. - [x] is meaningful
- Push your changes to a topic branch in your fork of the - [x] uses the imperative, present tense: "change", not "changed" or "changes"
repository. (the format ticket/1234-short_description_of_change is
usually preferred for this project).
- Submit a pull request to the repository in the puppetlabs - [x] includes motivation for the change, and contrasts its implementation with the previous behavior
organization.
The long version ## Submission
================
### Pre-requisites
- Make sure you have a [GitHub account](https://github.com/join)
- [Create a ticket](https://tickets.puppet.com/secure/CreateIssue!default.jspa), or [watch the ticket](https://tickets.puppet.com/browse/) you are patching for.
### Push and PR
- Push your changes to your fork
- [Open a Pull Request](https://help.github.com/articles/creating-a-pull-request-from-a-fork/) against the repository in the puppetlabs organization
## More about commits
1. Make separate commits for logically separate changes. 1. Make separate commits for logically separate changes.
@@ -104,37 +116,32 @@ The long version
GitHub has some pretty good GitHub has some pretty good
[general documentation](http://help.github.com/) on using [general documentation](http://help.github.com/) on using
their site. They also have documentation on their site. They also have documentation on
[creating pull requests](http://help.github.com/send-pull-requests/). [creating pull requests](https://help.github.com/articles/creating-a-pull-request-from-a-fork/).
In general, after pushing your topic branch up to your In general, after pushing your topic branch up to your
repository on GitHub, you can switch to the branch in the repository on GitHub, you can switch to the branch in the
GitHub UI and click "Pull Request" towards the top of the page GitHub UI and click "Pull Request" towards the top of the page
in order to open a pull request. in order to open a pull request.
3. Update the related JIRA issue.
3. Update the related GitHub issue. If there is a JIRA issue associated with the change you
If there is a GitHub issue associated with the change you
submitted, then you should update the ticket to include the submitted, then you should update the ticket to include the
location of your branch, along with any other commentary you location of your branch, along with any other commentary you
may wish to make. may wish to make.
Testing # Testing
=======
Getting Started ## Getting Started
---------------
Our puppet modules provide [`Gemfile`](./Gemfile)s which can tell a ruby Our Puppet modules provide [`Gemfile`](./Gemfile)s, which can tell a Ruby package manager such as [bundler](http://bundler.io/) what Ruby packages,
package manager such as [bundler](http://bundler.io/) what Ruby packages,
or Gems, are required to build, develop, and test this software. or Gems, are required to build, develop, and test this software.
Please make sure you have [bundler installed](http://bundler.io/#getting-started) Please make sure you have [bundler installed](http://bundler.io/#getting-started) on your system, and then use it to
on your system, then use it to install all dependencies needed for this project, install all dependencies needed for this project in the project root by running
by running
```shell ```shell
% bundle install % bundle install --path .bundle/gems
Fetching gem metadata from https://rubygems.org/........ Fetching gem metadata from https://rubygems.org/........
Fetching gem metadata from https://rubygems.org/.. Fetching gem metadata from https://rubygems.org/..
Using rake (10.1.0) Using rake (10.1.0)
@@ -148,7 +155,7 @@ Your bundle is complete!
Use `bundle show [gemname]` to see where a bundled gem is installed. Use `bundle show [gemname]` to see where a bundled gem is installed.
``` ```
NOTE some systems may require you to run this command with sudo. NOTE: some systems may require you to run this command with sudo.
If you already have those gems installed, make sure they are up-to-date: If you already have those gems installed, make sure they are up-to-date:
@@ -156,26 +163,27 @@ If you already have those gems installed, make sure they are up-to-date:
% bundle update % bundle update
``` ```
With all dependencies in place and up-to-date we can now run the tests: ## Running Tests
With all dependencies in place and up-to-date, run the tests:
### Unit Tests
```shell ```shell
% bundle exec rake spec % bundle exec rake spec
``` ```
This will execute all the [rspec tests](http://rspec-puppet.com/) tests This executes all the [rspec tests](http://rspec-puppet.com/) in the directories defined [here](https://github.com/puppetlabs/puppetlabs_spec_helper/blob/699d9fbca1d2489bff1736bb254bb7b7edb32c74/lib/puppetlabs_spec_helper/rake_tasks.rb#L17) and so on.
under [spec/defines](./spec/defines), [spec/classes](./spec/classes), rspec tests may have the same kind of dependencies as the module they are testing. Although the module defines these dependencies in its [metadata.json](./metadata.json),
and so on. rspec tests may have the same kind of dependencies as the
module they are testing. While the module defines in its [Modulefile](./Modulefile),
rspec tests define them in [.fixtures.yml](./fixtures.yml). rspec tests define them in [.fixtures.yml](./fixtures.yml).
Some puppet modules also come with [beaker](https://github.com/puppetlabs/beaker) ### Acceptance Tests
tests. These tests spin up a virtual machine under
[VirtualBox](https://www.virtualbox.org/)) with, controlling it with
[Vagrant](http://www.vagrantup.com/) to actually simulate scripted test
scenarios. In order to run these, you will need both of those tools
installed on your system.
You can run them by issuing the following command Some Puppet modules also come with acceptance tests, which use [beaker][]. These tests spin up a virtual machine under
[VirtualBox](https://www.virtualbox.org/), controlled with [Vagrant](http://www.vagrantup.com/), to simulate scripted test
scenarios. In order to run these, you need both Virtualbox and Vagrant installed on your system.
Run the tests by issuing the following command
```shell ```shell
% bundle exec rake spec_clean % bundle exec rake spec_clean
@@ -183,35 +191,81 @@ You can run them by issuing the following command
``` ```
This will now download a pre-fabricated image configured in the [default node-set](./spec/acceptance/nodesets/default.yml), This will now download a pre-fabricated image configured in the [default node-set](./spec/acceptance/nodesets/default.yml),
install puppet, copy this module and install its dependencies per [spec/spec_helper_acceptance.rb](./spec/spec_helper_acceptance.rb) install Puppet, copy this module, and install its dependencies per [spec/spec_helper_acceptance.rb](./spec/spec_helper_acceptance.rb)
and then run all the tests under [spec/acceptance](./spec/acceptance). and then run all the tests under [spec/acceptance](./spec/acceptance).
Writing Tests ## Writing Tests
-------------
XXX getting started writing tests. ### Unit Tests
If you have commit access to the repository When writing unit tests for Puppet, [rspec-puppet][] is your best friend. It provides tons of helper methods for testing your manifests against a
=========================================== catalog (e.g. contain_file, contain_package, with_params, etc). It would be ridiculous to try and top rspec-puppet's [documentation][rspec-puppet_docs]
but here's a tiny sample:
Even if you have commit access to the repository, you will still need to Sample manifest:
go through the process above, and have someone else review and merge
in your changes. The rule is that all changes must be reviewed by a
developer on the project (that did not write the code) to ensure that
all changes go through a code review process.
Having someone other than the author of the topic branch recorded as ```puppet
performing the merge is the record that they performed the code file { "a test file":
review. ensure => present,
path => "/etc/sample",
}
```
Sample test:
Additional Resources ```ruby
==================== it 'does a thing' do
expect(subject).to contain_file("a test file").with({:path => "/etc/sample"})
end
```
* [Getting additional help](http://puppet.com/community/get-help) ### Acceptance Tests
Writing acceptance tests for Puppet involves [beaker][] and its cousin [beaker-rspec][]. A common pattern for acceptance tests is to create a test manifest, apply it
twice to check for idempotency or errors, then run expectations.
```ruby
it 'does an end-to-end thing' do
pp = <<-EOF
file { 'a test file':
ensure => present,
path => "/etc/sample",
content => "test string",
}
apply_manifest(pp, :catch_failures => true)
apply_manifest(pp, :catch_changes => true)
end
describe file("/etc/sample") do
it { is_expected.to contain "test string" }
end
```
# If you have commit access to the repository
Even if you have commit access to the repository, you still need to go through the process above, and have someone else review and merge
in your changes. The rule is that **all changes must be reviewed by a project developer that did not write the code to ensure that
all changes go through a code review process.**
The record of someone performing the merge is the record that they performed the code review. Again, this should be someone other than the author of the topic branch.
# Get Help
### On the web
* [Puppet help messageboard](http://puppet.com/community/get-help)
* [Writing tests](https://docs.puppet.com/guides/module_guides/bgtm.html#step-three-module-testing) * [Writing tests](https://docs.puppet.com/guides/module_guides/bgtm.html#step-three-module-testing)
* [General GitHub documentation](http://help.github.com/) * [General GitHub documentation](http://help.github.com/)
* [GitHub pull request documentation](http://help.github.com/send-pull-requests/) * [GitHub pull request documentation](http://help.github.com/send-pull-requests/)
### On chat
* Slack (slack.puppet.com) #forge-modules, #puppet-dev, #windows, #voxpupuli
* IRC (freenode) #puppet-dev, #voxpupuli
[rspec-puppet]: http://rspec-puppet.com/
[rspec-puppet_docs]: http://rspec-puppet.com/documentation/
[beaker]: https://github.com/puppetlabs/beaker
[beaker-rspec]: https://github.com/puppetlabs/beaker-rspec

111
Gemfile
View File

@@ -1,75 +1,76 @@
#This file is generated by ModuleSync, do not edit. source ENV['GEM_SOURCE'] || 'https://rubygems.org'
source ENV['GEM_SOURCE'] || "https://rubygems.org"
# Determines what type of gem is requested based on place_or_version.
def gem_type(place_or_version)
if place_or_version =~ /^git:/
:git
elsif place_or_version =~ /^file:/
:file
else
:gem
end
end
# Find a location or specific version for a gem. place_or_version can be a
# version, which is most often used. It can also be git, which is specified as
# `git://somewhere.git#branch`. You can also use a file source location, which
# is specified as `file://some/location/on/disk`.
def location_for(place_or_version, fake_version = nil) def location_for(place_or_version, fake_version = nil)
if place_or_version =~ /^(git[:@][^#]*)#(.*)/ git_url_regex = %r{\A(?<url>(https?|git)[:@][^#]*)(#(?<branch>.*))?}
[fake_version, { :git => $1, :branch => $2, :require => false }].compact file_url_regex = %r{\Afile:\/\/(?<path>.*)}
elsif place_or_version =~ /^file:\/\/(.*)/
['>= 0', { :path => File.expand_path($1), :require => false }] if place_or_version && (git_url = place_or_version.match(git_url_regex))
[fake_version, { git: git_url[:url], branch: git_url[:branch], require: false }].compact
elsif place_or_version && (file_url = place_or_version.match(file_url_regex))
['>= 0', { path: File.expand_path(file_url[:path]), require: false }]
else else
[place_or_version, { :require => false }] [place_or_version, { require: false }]
end end
end end
# Used for gem conditionals
supports_windows = false
ruby_version_segments = Gem::Version.new(RUBY_VERSION.dup).segments ruby_version_segments = Gem::Version.new(RUBY_VERSION.dup).segments
minor_version = "#{ruby_version_segments[0]}.#{ruby_version_segments[1]}" minor_version = ruby_version_segments[0..1].join('.')
group :development do group :development do
gem "puppet-module-posix-default-r#{minor_version}", :require => false, :platforms => "ruby" gem "fast_gettext", '1.1.0', require: false if Gem::Version.new(RUBY_VERSION.dup) < Gem::Version.new('2.1.0')
gem "puppet-module-win-default-r#{minor_version}", :require => false, :platforms => ["mswin", "mingw", "x64_mingw"] gem "fast_gettext", require: false if Gem::Version.new(RUBY_VERSION.dup) >= Gem::Version.new('2.1.0')
gem "puppet-module-posix-dev-r#{minor_version}", :require => false, :platforms => "ruby" gem "json_pure", '<= 2.0.1', require: false if Gem::Version.new(RUBY_VERSION.dup) < Gem::Version.new('2.0.0')
gem "puppet-module-win-dev-r#{minor_version}", :require => false, :platforms => ["mswin", "mingw", "x64_mingw"] gem "json", '= 1.8.1', require: false if Gem::Version.new(RUBY_VERSION.dup) == Gem::Version.new('2.1.9')
gem "json_pure", '<= 2.0.1', :require => false if Gem::Version.new(RUBY_VERSION.dup) < Gem::Version.new('2.0.0') gem "json", '= 2.0.4', require: false if Gem::Requirement.create('~> 2.4.2').satisfied_by?(Gem::Version.new(RUBY_VERSION.dup))
gem "fast_gettext", '1.1.0', :require => false if Gem::Version.new(RUBY_VERSION.dup) < Gem::Version.new('2.1.0') 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 "fast_gettext", :require => false if Gem::Version.new(RUBY_VERSION.dup) >= Gem::Version.new('2.1.0') gem "puppet-module-posix-default-r#{minor_version}", require: false, platforms: [:ruby]
gem "puppet-module-posix-dev-r#{minor_version}", require: false, platforms: [:ruby]
gem "puppet-module-win-default-r#{minor_version}", require: false, platforms: [:mswin, :mingw, :x64_mingw]
gem "puppet-module-win-dev-r#{minor_version}", 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 end
group :system_tests do group :system_tests do
gem "puppet-module-posix-system-r#{minor_version}", :require => false, :platforms => "ruby" gem "puppet-module-posix-system-r#{minor_version}", require: false, platforms: [:ruby]
gem "puppet-module-win-system-r#{minor_version}", :require => false, :platforms => ["mswin", "mingw", "x64_mingw"] gem "puppet-module-win-system-r#{minor_version}", require: false, platforms: [:mswin, :mingw, :x64_mingw]
gem "beaker", *location_for(ENV['BEAKER_VERSION'] || '>= 3')
gem "beaker-pe", :require => false
gem "beaker-rspec", *location_for(ENV['BEAKER_RSPEC_VERSION'])
gem "beaker-hostgenerator", *location_for(ENV['BEAKER_HOSTGENERATOR_VERSION'])
gem "beaker-abs", *location_for(ENV['BEAKER_ABS_VERSION'] || '~> 0.1')
end end
gem 'puppet', *location_for(ENV['PUPPET_GEM_VERSION']) puppet_version = ENV['PUPPET_GEM_VERSION']
facter_version = ENV['FACTER_GEM_VERSION']
hiera_version = ENV['HIERA_GEM_VERSION']
# Only explicitly specify Facter/Hiera if a version has been specified. gems = {}
# Otherwise it can lead to strange bundler behavior. If you are seeing weird
# gem resolution behavior, try setting `DEBUG_RESOLVER` environment variable
# to `1` and then run bundle install.
gem 'facter', *location_for(ENV['FACTER_GEM_VERSION']) if ENV['FACTER_GEM_VERSION']
gem 'hiera', *location_for(ENV['HIERA_GEM_VERSION']) if ENV['HIERA_GEM_VERSION']
gems['puppet'] = location_for(puppet_version)
# Evaluate Gemfile.local if it exists # If facter or hiera versions have been specified via the environment
if File.exists? "#{__FILE__}.local" # variables
eval(File.read("#{__FILE__}.local"), binding)
gems['facter'] = location_for(facter_version) if facter_version
gems['hiera'] = location_for(hiera_version) if hiera_version
if Gem.win_platform? && puppet_version =~ %r{^(file:///|git://)}
# If we're using a Puppet gem on Windows which handles its own win32-xxx gem
# dependencies (>= 3.5.0), set the maximum versions (see PUP-6445).
gems['win32-dir'] = ['<= 0.4.9', require: false]
gems['win32-eventlog'] = ['<= 0.6.5', require: false]
gems['win32-process'] = ['<= 0.7.5', require: false]
gems['win32-security'] = ['<= 0.2.5', require: false]
gems['win32-service'] = ['0.8.8', require: false]
end end
# Evaluate ~/.gemfile if it exists gems.each do |gem_name, gem_params|
if File.exists?(File.join(Dir.home, '.gemfile')) gem gem_name, *gem_params
eval(File.read(File.join(Dir.home, '.gemfile')), binding)
end end
# vim:ft=ruby # Evaluate Gemfile.local and ~/.gemfile if they exist
extra_gemfiles = [
"#{__FILE__}.local",
File.join(Dir.home, '.gemfile'),
]
extra_gemfiles.each do |gemfile|
if File.file?(gemfile) && File.readable?(gemfile)
eval(File.read(gemfile), binding)
end
end
# vim: syntax=ruby

296
HISTORY.md Normal file
View File

@@ -0,0 +1,296 @@
## 2.4.0
### Summary
This release uses the PDK convert functionality which in return makes the module PDK compliant. Also includes a clean up from Rubocop.
#### Changed
- 1.3.2 PDK convert has been applied [MODULES-6456](https://tickets.puppetlabs.com/browse/MODULES-6456)
- The modules has undergone a Rubocop cleanup.
#### Fixed
- $java_home for SLES 11.4 has been updated to the correct location.
## Supported Release [2.3.0]
### Summary
This release is in order to implement Rubocop changes into the module.
#### Added
- Several Modulesync changes have been made.
- Rubocop has been implemented in the module.
- CentOS 7 is now supported.
- Red Hat Enterprise Linux (RHEL) 7 is now supported.
- Ubuntu artful 1710 now supported.
- Bionic 1804 now supported.
## Supported Release [2.2.0]
### Summary
This release is a maintenance release that includes a roll up of minor changes.
#### Added
- Addition of Ubuntu for Oracle Java.
- Addition of Debian 9 in supported versions.
- Addition of OpenBSD case and use `realpath` rather than `readlink` in Java Default Home Facter fact.
#### Removed
- Removal of OpenBSD as a special case and deprecated `with_env` in Java Version Facter Facter fact.
## Supported Release 2.1.1
### Summary
This release is a maintenance release that includes a roll up of minor changes.
#### Added
- Basic Arch Linux, Cloud Linux and Ubuntu 17.04 compatibility.
- Metadata bump for Puppet 5.
- Search for matching line with java version.
- ([MODULES-4069](https://tickets.puppet.com/browse/MODULES-4069)) Fail when required params are not available in params.
- A test for java version when java not installed.
- Allow latest archive version as dependency.
#### Changed
- CONTRIBUTING.md document includes updates.
- Removal of Ubuntu 10.04 ad 12.04, Debian 6 in supported versions.
## Supported Release 2.1.0
### Summary
This release adds fixes to restore the ability to install Oracle Java. It also fixes the paths for the latest RHEL 7 1.7.0 and 1.8.0 OpenJDKs.
### Added
- java::oracle parameter `url`
- java::oracle parameter `url_hash`
### Fixed
- Let `java_default_home` fact work when /usr/bin/java does not exist
- Add puppet 4 parameter types
- Use `/usr/lib/jvm/java-1.x.0` symlinks for `java_home` defaults.
## Supported Release 2.0.0
### Summary
This is a major release including some bug fixes, new parameters, and general module updates.
**This release drops Puppet 3 support**
#### Added
- Debian Stretch, Yakkety Yak, Amazon Linux, Oracle Linux, Scientific Linux CERN compatibility
- `version_major` and `version_minor` parameters for specifying Java SE version to install
- `$JAVA_HOME` now set by the module on compatible systems. The `java_home` parameter is also provided for manual setting. [MODULES-2971](https://tickets.puppetlabs.com/browse/MODULES-2971)
- `proxy_server` and `proxy_type` for choosing a proxy server to get Java from
#### Changed
- Moved lower Puppet version requirement to 4.7.0
#### Fixed
- Module no longer downloads the Java archive on Puppet runs if Java is already installed.
- java_default_home fact is not always correct on oracle packages [MODULES-4050](https://tickets.puppetlabs.com/browse/MODULES-4050)
- Order of operations for archives [MODULES-4751](https://tickets.puppetlabs.com/browse/https://tickets.puppetlabs.com/browse/MODULES-4751)
- Increase Xmx setting for `java_version` fact [MODULES-4736](https://tickets.puppetlabs.com/browse/MODULES-4736)
## Supported Release 1.6.0
### Summary
Addition of a new supported OS, along with several other features and bugfixes.
#### Features
- Ubuntu 16.04 support.
- Addition example for installing Java 8.
- Update to newest modulesync_configs.
- Addition of RedHat for Oracle Java.
#### Bugfixes
- Custom archive type now given extract_path.
- Fix for rspec deprectation warnings.
- Typo fixes for readme.
- Fixed tests to run under strict variables.
- Updated Java package for SLES 11.4.
## Supported Release 1.5.0
### Summary
A release which has several support additions for different OSes. Also a couple of additional features and a few bug fixes.
#### Features
- Added Ubuntu 15.10 compatibility.
- Addition of two facts: java_libjvm_path and java_default_home.
- Added support for oracle-j2re1.8 and oracle-j2sdk1.8.
- Adds FreeBSD Support.
- Exposed the Puppet package resources install_options parameter via a new class parameter named package_options.
- Debian 8 support.
- Add support for official Oracle Java SE jdk and jre packages for CentOS.
- Use java 8 as the default on RHEL > 7.0.
#### Bugfixes
- Updated fixtures.yml to use git instead of http for stdlib.
- Updates to current msync configs.
- Small README updates and syntax error fixes.
## Supported Release 1.4.3
### Summary
Small release for support of newer PE versions. This increments the version of PE in the metadata.json file.
## 2015-10-07 - Supported Release 1.4.2
### Summary
This release fixes the fact to not trigger java every time on OS X when it is not available.
#### Bugfixes
- Causes java\_version fact to not run `java` when java is not installed on OS X
## 2015-07-16 - Supported Release 1.4.1
### Summary
This release updates the metadata for the upcoming release of PE and update params for OEL to match metadata
#### Bugfixes:
- Add missing OEL to params
## 2015-07-07 - Supported Release 1.4.0
### Summary
This release adds several new features, bugfixes, documentation updates, and test improvements.
#### Features:
- Puppet 4 support and testing
- Adds support for several Operating Systems
- Ubuntu 15.04
- OpenBSD 5.6, 5.7
- Fedora 20, 21, 22
#### Bugfixes:
- Fixes java_version fact to work on large systems. (MODULES-1749)
- Improves maintainability of java_version fact.
- Fixes java package names on Fedora 21+.
- Fixes java install problems on Puppet 3.7.5 - 3.8.1 (PUP-4520)
- Fixes create-java-alternatives commands on RedHat distros.
- Fixes bug with Debian systems missing java-common package.
## 2015-01-20 - Supported Release 1.3.0
### Summary
This release adds 3 new facts for determining Java version, adds RHEL alternatives support, adds utopic support, and fixes the flag for `update-java-alternatives` when installed from a headless pacakge.
#### Features
- Added RHEL support for alternatives
- New facts
- java_major_version
- java_patch_level
- java_version
- Add support for utopic
#### Bugfixes
- Use `--jre-headless` in the `update-java-alternatives` command when installed from a `headless` package
## 2014-11-11 - Supported Version 1.2.0
### Summary:
This release adds SLES 12 support and is tested for Future Parser Support
#### Bugfixes:
- Several readme updates
- Testcase flexability increased
#### Features:
- Add SLES 12 support
- Future Parser tested
- Validated against PE 3.7
## 2014-08-25 - Supported Version 1.1.2
### Summary:
This release begins the support coverage of the puppetlabs-java module.
### Bugfixes:
- Update java alternative values from deprecated names
- Readme updated
- Testing updated
## 2014-05-02 - Version 1.1.1
### Summary:
Add support for new versions of Debian and Ubuntu!
#### Features:
- Add support for Ubuntu Trusty (14.04)
- Add support for Debian Jessie (8.x)
## 2014-01-06 - Version 1.1.0
### Summary:
Primarily a release for Ubuntu users!
#### Features:
- Add support for Ubuntu Saucy (13.10)
- Add `java_home` parameter for centralized setting of JAVA_HOME.
- Add Scientific Linux
#### Bugfixes:
- Plus signs are valid in debian/ubuntu package names.
## 2013-08-01 - Version 1.0.1
Matthaus Owens <matthaus@puppetlabs.com>
* Update java packages for Fedora systems
## 2013-07-29 - Version 1.0.0
#### Detailed Changes
Krzysztof Suszyński <krzysztof.suszynski@coi.gov.pl>
* Adding support for Oracle Enterprise Linux
Peter Drake <pdrake@allplayers.com>
* Add support for natty
Robert Munteanu <rmuntean@adobe.com>
* Add support for OpenSUSE
Martin Jackson <martin@uncommonsense-uk.com>
* Added support Amazon Linux using facter >= 1.7.x
Gareth Rushgrove <gareth@morethanseven.net>
Brett Porter <brett@apache.org>
* Fixes for older versions of CentOS
* Improvements to module build and tests
Nathan R Valentine <nrvale0@gmail.com>
* Add support for Ubuntu quantal and raring
Sharif Nassar <sharif@mediatemple.net>
* Add support for Debian alternatives, and more than one JDK/JRE per platform.
## 2013-04-04 - Version 0.3.0
Reid Vandewiele <reid@puppetlabs.com> -
* Refactor, introduce params pattern
## 2012-11-15 - Version 0.2.0
Scott Schneider <sschneider@puppetlabs.com>
* Add Solaris support
## 2011-06-16 - Version 0.1.5
Jeff McCune <jeff@puppetlabs.com>
* Add Debian based distro (Lucid) support
## 2011-06-02 - Version 0.1.4
Jeff McCune <jeff@puppetlabs.com>
* Fix class composition ordering problems
## 2011-05-28 - Version 0.1.3
Jeff McCune <jeff@puppetlabs.com>
* Remove stages
## 2011-05-26 - Version 0.1.2
Jeff McCune <jeff@puppetlabs.com>
* Changes JRE/JDK selection class parameter to $distribution
## 2011-05-25 - Version 0.1.1
Jeff McCune <jeff@puppetlabs.com>
* Re-did versioning to follow semantic versioning
* Add validation of class parameters
## 2011-05-24 - Version 0.1.0
Jeff McCune <jeff@puppetlabs.com>
* Default to JDK version 6u25
## 2011-05-24 - Version 0.0.1
Jeff McCune <jeff@puppetlabs.com>
* Initial release
[2.3.0]:https://github.com/puppetlabs/puppetlabs-java/compare/2.2.0...2.3.0
[2.2.0]:https://github.com/puppetlabs/puppetlabs-java/compare/2.1.1...2.2.0

2
NOTICE
View File

@@ -1,6 +1,6 @@
Puppet Module - puppetlabs-java Puppet Module - puppetlabs-java
Copyright 2017 Puppet, Inc. Copyright 2018 Puppet, Inc.
Licensed under the Apache License, Version 2.0 (the "License"); Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License. you may not use this file except in compliance with the License.

View File

@@ -70,96 +70,32 @@ java::oracle { 'jdk8' :
} }
``` ```
To install Oracle Java to a non-default basedir (defaults: /usr/lib/jvm for Debian; /usr/java for RedHat):
```puppet
java::oracle { 'jdk8' :
ensure => 'present',
version_major => '8u101',
version_minor => 'b13',
java_se => 'jdk',
basedir => '/custom/java',
}
```
To ensure that a custom basedir is a directory before Oracle Java is installed (note: manage separately for custom ownership or perms):
```puppet
java::oracle { 'jdk8' :
ensure => 'present',
version_major => '8u101',
version_minor => 'b13',
java_se => 'jdk',
manage_basedir => true,
basedir => '/custom/java',
}
```
## Reference ## Reference
### Classes 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.
#### Public classes
* `java`: Installs and manages the Java package.
#### Private classes
* `java::config`: Configures the Java alternatives.
* `java::params`: Builds a hash of jdk/jre packages for all compatible operating systems.
#### Parameters
The following parameters are available in `java`:
##### `distribution`
Specifies the Java distribution to install.
Valid options: 'jdk', 'jre', or, where the platform supports alternative packages, 'sun-jdk', 'sun-jre', 'oracle-jdk', 'oracle-jre'. Default: 'jdk'.
##### `java_alternative`
Specifies the name of the Java alternative to use. If you set this parameter, *you must also set the `java_alternative_path`.*
Valid options: Run command `update-java-alternatives -l` for a list of available choices. Default: OS and distribution dependent defaults on *deb systems, undef on others.
##### `java_alternative_path`
*Required when `java_alternative` is specified.* Defines the path to the `java` command.
Valid option: String. Default: OS and distribution dependent defaults on *deb systems, undef on others.
##### `package`
Specifies the name of the Java package. This is configurable in case you want to install a non-standard Java package. If not set, the module installs the appropriate package for the `distribution` parameter and target platform. If you set `package`, the `distribution` parameter does nothing.
Valid option: String. Default: undef.
##### `version`
Sets the version of Java to install, if you want to ensure a particular version.
Valid options: 'present', 'installed', 'latest', or a string matching `/^[.+_0-9a-zA-Z:-]+$/`. Default: 'present'.
#### Public defined types
* `java::oracle`: Installs specified version of Oracle Java SE. You may install multiple versions of Oracle Jave SE on the same node using this defined type.
#### Parameters
The following parameters are available in `java::oracle`:
##### `version`
Version of Java Standard Edition (SE) to install. 6, 7 or 8.
##### `version_major`
Major version of the Java Standard Edition (SE) to install. Must be used together with `version_minor`. For example, '8u101'.
##### `version_minor`
Minor version (or build version) of the Java Standard Edition (SE) to install. Must be used together with `version_major`. For example, 'b13'.
##### `java_se`
Type of Java SE to install, jdk or jre.
##### `ensure`
Install or remove the package.
##### `oracle_url`
Official Oracle URL to download the binaries from.
##### `proxy_server`
Specify a proxy server, with port number if needed. ie: https://example.com:8080. (passed to archive)
##### `proxy_type`
Proxy server type (none|http|https|ftp). (passed to archive)
##### `url`
Pass an entire URL to download the installer from rather than building the complete URL from other parameters. This will allow the module to be used even if the URLs are changed by Oracle. If this parameter is used, matching `version_major` and `version_minor` parameters must also be passed to the class.
##### `url_hash`
Directory hash used by the download.oracle.com site. This value is a 32 character string which is part of the file URL returned by the JDK download site.
### Facts ### Facts
@@ -175,7 +111,9 @@ The java module includes a few facts to describe the version of Java installed o
## Limitations ## Limitations
This module cannot guarantee installation of Java versions that are not available on platform repositories. For an extensive list of supported operating systems, see [metadata.json](https://github.com/puppetlabs/puppetlabs-java/blob/master/metadata.json)
This module cannot guarantee installation of Java versions that are not available on platform repositories.
This module only manages a singular installation of Java, meaning it is not possible to manage e.g. OpenJDK 7, Oracle Java 7 and Oracle Java 8 in parallel on the same system. This module only manages a singular installation of Java, meaning it is not possible to manage e.g. OpenJDK 7, Oracle Java 7 and Oracle Java 8 in parallel on the same system.
@@ -188,12 +126,11 @@ OpenJDK is supported on:
* Red Hat Enterprise Linux (RHEL) 5, 6, 7 * Red Hat Enterprise Linux (RHEL) 5, 6, 7
* CentOS 5, 6, 7 * CentOS 5, 6, 7
* Oracle Linux 6, 7 * Oracle Linux 6, 7
* Scientific Linux 5, 6 * Scientific Linux 6
* Debian 6, 7 * Debian 8, 9
* Ubuntu 10.04, 12.04, 14.04 * Ubuntu 14.04, 16.04, 18.04
* Solaris 11 * Solaris 11
* SLES 11 SP1, SP2, SP3, SP4; SLES 12, SP1, SP2 * SLES 11, 12
* OpenBSD 5.6, 5.7
Sun Java is supported on: Sun Java is supported on:
@@ -202,6 +139,8 @@ Sun Java is supported on:
Oracle Java is supported on: Oracle Java is supported on:
* CentOS 6 * CentOS 6
* CentOS 7
* Red Hat Enterprise Linux (RHEL) 7
### Known issues ### Known issues

257
REFERENCE.md Normal file
View File

@@ -0,0 +1,257 @@
# Reference
<!-- DO NOT EDIT: This document was generated by Puppet Strings -->
## Table of Contents
**Classes**
_Public Classes_
* [`java`](#java): This module manages the Java runtime package
_Private Classes_
* `java::config`:
* `java::params`: This class builds a hash of JDK/JRE packages and (for Debian)
alternatives. For wheezy/precise, we provide Oracle JDK/JRE
options, even though those are not in the package repositories.
**Defined types**
* [`java::oracle`](#javaoracle): Installs Oracle Java. By using this module you agree to the Oracle licensing
agreement.
## Classes
### java
This module manages the Java runtime package
#### Parameters
The following parameters are available in the `java` class.
##### `distribution`
Data type: `String`
The java distribution to install. Can be one of "jdk" or "jre",
or other platform-specific options where there are multiple
implementations available (eg: OpenJDK vs Oracle JDK).
Default value: 'jdk'
##### `version`
Data type: `Pattern[/present|installed|latest|^[.+_0-9a-zA-Z:~-]+$/]`
The version of java to install. By default, this module simply ensures
that java is present, and does not require a specific version.
Default value: 'present'
##### `package`
Data type: `Optional[String]`
The name of the java package. This is configurable in case a non-standard
java package is desired.
Default value: `undef`
##### `package_options`
Data type: `Optional[Array]`
Array of strings to pass installation options to the 'package' Puppet resource.
Options available depend on the 'package' provider for the target OS.
Default value: `undef`
##### `java_alternative`
Data type: `Optional[String]`
The name of the java alternative to use on Debian systems.
"update-java-alternatives -l" will show which choices are available.
If you specify a particular package, you will almost always also
want to specify which java_alternative to choose. If you set
this, you also need to set the path below.
Default value: `undef`
##### `java_alternative_path`
Data type: `Optional[String]`
The path to the "java" command on Debian systems. Since the
alternatives system makes it difficult to verify which
alternative is actually enabled, this is required to ensure the
correct JVM is enabled.
Default value: `undef`
##### `java_home`
Data type: `Optional[String]`
The path to where the JRE is installed. This will be set as an
environment variable.
Default value: `undef`
## Defined types
### java::oracle
Defined Type java::oracle
Install one or more versions of Oracle Java.
Uses the following to download the package and automatically accept
the licensing terms:
```
wget --no-cookies --no-check-certificate --header \
"Cookie: gpw_e24=http%3A%2F%2Fwww.oracle.com%2F; oraclelicense=accept-securebackup-cookie" \
"http://download.oracle.com/otn-pub/java/jdk/8u131-b11/d54c1d3a095b4ff2b6607d096fa80163/jdk-8u131-linux-x64.tar.gz"
```
#### Parameters
The following parameters are available in the `java::oracle` 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. '7' or '8'. 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'. Must be used together with version_minor.
Default value: `undef`
##### `version_minor`
Data type: `Any`
Minor version which should be installed, e.g. 'b12'. Must be used together with version_major.
Default value: `undef`
##### `java_se`
Data type: `Any`
Type of Java Standard Edition to install, jdk or jre.
Default value: 'jdk'
##### `oracle_url`
Data type: `Any`
Official Oracle URL to download binaries from.
Default value: 'http://download.oracle.com/otn-pub/java/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`
##### `url`
Data type: `Any`
Full URL, including oracle_url, release_major, release_minor and package_name, to
download the Oracle java_se installer. Originally present but not used, activated
to workaround MODULES-5058.
Default value: `undef`
##### `url_hash`
Data type: `Any`
Directory hash used by the download.oracle.com site. This value is a 32 character string
which is part of the file URL returned by the JDK download site.
Default value: `undef`
##### `jce`
Data type: `Any`
Install Oracles Java Cryptographic Extensions into the JRE or JDK
Default value: `false`
##### `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: `false`
##### `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`

105
Rakefile
View File

@@ -1,37 +1,76 @@
require 'puppetlabs_spec_helper/rake_tasks' require 'puppetlabs_spec_helper/rake_tasks'
require 'puppet-lint/tasks/puppet-lint' require 'puppet-syntax/tasks/puppet-syntax'
require 'puppet_blacksmith/rake_tasks' if Bundler.rubygems.find_name('puppet-blacksmith').any? require 'puppet_blacksmith/rake_tasks' if Bundler.rubygems.find_name('puppet-blacksmith').any?
require 'github_changelog_generator/task' if Bundler.rubygems.find_name('github_changelog_generator').any?
require 'puppet-strings/tasks' if Bundler.rubygems.find_name('puppet-strings').any?
PuppetLint.configuration.fail_on_warnings = true def changelog_user
PuppetLint.configuration.send('relative') return unless Rake.application.top_level_tasks.include? "changelog"
returnVal = nil || JSON.load(File.read('metadata.json'))['author']
desc 'Generate pooler nodesets' raise "unable to find the changelog_user in .sync.yml, or the author in metadata.json" if returnVal.nil?
task :gen_nodeset do puts "GitHubChangelogGenerator user:#{returnVal}"
require 'beaker-hostgenerator' returnVal
require 'securerandom'
require 'fileutils'
agent_target = ENV['TEST_TARGET']
if ! agent_target
STDERR.puts 'TEST_TARGET environment variable is not set'
STDERR.puts 'setting to default value of "redhat-64default."'
agent_target = 'redhat-64default.'
end
master_target = ENV['MASTER_TEST_TARGET']
if ! master_target
STDERR.puts 'MASTER_TEST_TARGET environment variable is not set'
STDERR.puts 'setting to default value of "redhat7-64mdcl"'
master_target = 'redhat7-64mdcl'
end
targets = "#{master_target}-#{agent_target}"
cli = BeakerHostGenerator::CLI.new([targets])
nodeset_dir = "tmp/nodesets"
nodeset = "#{nodeset_dir}/#{targets}-#{SecureRandom.uuid}.yaml"
FileUtils.mkdir_p(nodeset_dir)
File.open(nodeset, 'w') do |fh|
fh.print(cli.execute)
end
puts nodeset
end end
def changelog_project
return unless Rake.application.top_level_tasks.include? "changelog"
returnVal = nil || JSON.load(File.read('metadata.json'))['name']
raise "unable to find the changelog_project in .sync.yml or the name in metadata.json" if returnVal.nil?
puts "GitHubChangelogGenerator project:#{returnVal}"
returnVal
end
def changelog_future_release
return unless Rake.application.top_level_tasks.include? "changelog"
returnVal = "v%s" % JSON.load(File.read('metadata.json'))['version']
raise "unable to find the future_release (version) in metadata.json" if returnVal.nil?
puts "GitHubChangelogGenerator future_release:#{returnVal}"
returnVal
end
PuppetLint.configuration.send('disable_relative')
if Bundler.rubygems.find_name('github_changelog_generator').any?
GitHubChangelogGenerator::RakeTask.new :changelog do |config|
raise "Set CHANGELOG_GITHUB_TOKEN environment variable eg 'export CHANGELOG_GITHUB_TOKEN=valid_token_here'" if Rake.application.top_level_tasks.include? "changelog" and ENV['CHANGELOG_GITHUB_TOKEN'].nil?
config.user = "#{changelog_user}"
config.project = "#{changelog_project}"
config.future_release = "#{changelog_future_release}"
config.exclude_labels = ['maintenance']
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.configure_sections = {
"Changed" => {
"prefix" => "### Changed",
"labels" => ["backwards-incompatible"],
},
"Added" => {
"prefix" => "### Added",
"labels" => ["feature", "enhancement"],
},
"Fixed" => {
"prefix" => "### Fixed",
"labels" => ["bugfix"],
},
}
end
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.
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')"
EOM
end
end

View File

@@ -3,25 +3,28 @@
# Purpose: get absolute path of java system home # Purpose: get absolute path of java system home
# #
# Resolution: # Resolution:
# Uses `readlink` to resolve the path of `/usr/bin/java` then returns subsubdir # Find the real java binary, and return the subsubdir
# #
# Caveats: # Caveats:
# Requires readlink # java binary has to be found in $PATH
# #
# Notes: # Notes:
# None # None
Facter.add(:java_default_home) do Facter.add(:java_default_home) do
confine :kernel => 'Linux' confine kernel: ['Linux', 'OpenBSD']
java_default_home = nil
setcode do setcode do
if Facter::Util::Resolution.which('readlink') java_bin = Facter::Util::Resolution.which('java').to_s.strip
java_bin = Facter::Util::Resolution.exec('readlink -e /usr/bin/java').strip if java_bin.empty?
if java_bin.empty? nil
nil else
elsif java_bin =~ %r(/jre/) java_path = File.realpath(java_bin)
java_default_home = File.dirname(File.dirname(File.dirname(java_bin))) java_default_home = if java_path =~ %r{/jre/}
else File.dirname(File.dirname(File.dirname(java_path)))
java_default_home = File.dirname(File.dirname(java_bin)) else
end File.dirname(File.dirname(java_path))
end
end end
end end
java_default_home
end end

View File

@@ -11,7 +11,7 @@
# Notes: # Notes:
# None # None
Facter.add(:java_libjvm_path) do Facter.add(:java_libjvm_path) do
confine :kernel => "Linux" confine kernel: ['Linux', 'OpenBSD']
setcode do setcode do
java_default_home = Facter.value(:java_default_home) java_default_home = Facter.value(:java_default_home)
java_libjvm_file = Dir.glob("#{java_default_home}/jre/lib/**/libjvm.so") java_libjvm_file = Dir.glob("#{java_default_home}/jre/lib/**/libjvm.so")
@@ -22,4 +22,3 @@ Facter.add(:java_libjvm_path) do
end end
end end
end end

View File

@@ -13,8 +13,10 @@
# Notes: # Notes:
# None # None
Facter.add(:java_major_version) do Facter.add(:java_major_version) do
java_major_version = nil
setcode do setcode do
java_version = Facter.value(:java_version) java_version = Facter.value(:java_version)
java_patch_level = java_version.strip.split('_')[0].split('.')[1] unless java_version.nil? java_major_version = java_version.strip.split('_')[0].split('.')[1] unless java_version.nil?
end end
end java_major_version
end

View File

@@ -11,8 +11,10 @@
# Notes: # Notes:
# None # None
Facter.add(:java_patch_level) do Facter.add(:java_patch_level) do
java_patch_level = nil
setcode do setcode do
java_version = Facter.value(:java_version) java_version = Facter.value(:java_version)
java_patch_level = java_version.strip.split('_')[1] unless java_version.nil? java_patch_level = java_version.strip.split('_')[1] unless java_version.nil?
end end
end java_patch_level
end

View File

@@ -21,32 +21,24 @@ Facter.add(:java_version) do
# Additionally, facter versions prior to 2.0.1 only support # Additionally, facter versions prior to 2.0.1 only support
# positive matches, so this needs to be done manually in setcode. # positive matches, so this needs to be done manually in setcode.
setcode do setcode do
unless [ 'openbsd', 'darwin' ].include? Facter.value(:operatingsystem).downcase unless ['darwin'].include? Facter.value(:operatingsystem).downcase
version = nil
if Facter::Util::Resolution.which('java') if Facter::Util::Resolution.which('java')
Facter::Util::Resolution.exec('java -Xmx12m -version 2>&1').lines.first.split(/"/)[1].strip Facter::Util::Resolution.exec('java -Xmx12m -version 2>&1').lines.each { |line| version = $LAST_MATCH_INFO[1] if %r{^.+ version \"(.+)\"$} =~ line }
end end
version
end end
end end
end end
Facter.add(:java_version) do Facter.add(:java_version) do
confine :operatingsystem => 'OpenBSD' confine operatingsystem: 'Darwin'
has_weight 100 has_weight 100
setcode do setcode do
Facter::Util::Resolution.with_env("PATH" => '/usr/local/jdk-1.7.0/jre/bin:/usr/local/jre-1.7.0/bin') do unless %r{Unable to find any JVMs matching version} =~ Facter::Util::Resolution.exec('/usr/libexec/java_home --failfast 2>&1')
if Facter::Util::Resolution.which('java') version = nil
Facter::Util::Resolution.exec('java -Xmx12m -version 2>&1').lines.first.split(/"/)[1].strip Facter::Util::Resolution.exec('java -Xmx12m -version 2>&1').lines.each { |line| version = $LAST_MATCH_INFO[1] if %r{^.+ version \"(.+)\"$} =~ line }
end version
end
end
end
Facter.add(:java_version) do
confine :operatingsystem => 'Darwin'
has_weight 100
setcode do
unless /Unable to find any JVMs matching version/ =~ Facter::Util::Resolution.exec('/usr/libexec/java_home --failfast 2>&1')
Facter::Util::Resolution.exec('java -Xmx12m -version 2>&1').lines.first.split(/"/)[1].strip
end end
end end
end end

View File

@@ -22,4 +22,5 @@ gettext:
# Patterns for +Dir.glob+ used to find all files that might contain # Patterns for +Dir.glob+ used to find all files that might contain
# translatable content, relative to the project root directory # translatable content, relative to the project root directory
source_files: source_files:
- './lib/**/*.rb'

View File

@@ -1,4 +1,4 @@
# On Debian systems, if alternatives are set, manually assign them. # @api private
class java::config ( ) { class java::config ( ) {
case $::osfamily { case $::osfamily {
'Debian': { 'Debian': {
@@ -44,7 +44,7 @@ class java::config ( ) {
} }
} }
} }
'OpenBSD', 'FreeBSD', 'Suse': { 'Suse': {
if $java::use_java_home != undef { if $java::use_java_home != undef {
file_line { 'java-home-environment': file_line { 'java-home-environment':
path => '/etc/environment', path => '/etc/environment',
@@ -53,6 +53,20 @@ class java::config ( ) {
} }
} }
} }
'FreeBSD': {
if $java::use_java_home != undef {
file_line { 'java-home-environment-profile':
path => '/etc/profile',
line => "JAVA_HOME=${$java::use_java_home}; export JAVA_HOME",
match => 'JAVA_HOME=',
}
file_line { 'java-home-environment-cshrc':
path => '/etc/csh.login',
line => "setenv JAVA_HOME ${$java::use_java_home}",
match => 'setenv JAVA_HOME',
}
}
}
'Solaris': { 'Solaris': {
if $java::use_java_home != undef { if $java::use_java_home != undef {
file_line { 'java-home-environment': file_line { 'java-home-environment':
@@ -62,6 +76,15 @@ class java::config ( ) {
} }
} }
} }
'Archlinux': {
if $java::use_java_home != undef {
file_line { 'java-home-environment':
path => '/etc/profile',
line => "JAVA_HOME=${$java::use_java_home}",
match => 'JAVA_HOME=',
}
}
}
default: { default: {
# Do nothing. # Do nothing.
} }

View File

@@ -1,49 +1,39 @@
# Class: java # @summary
# This module manages the Java runtime package
# #
# This module manages the Java runtime package # @param distribution
#
# Parameters:
#
# [*distribution*]
# The java distribution to install. Can be one of "jdk" or "jre", # The java distribution to install. Can be one of "jdk" or "jre",
# or other platform-specific options where there are multiple # or other platform-specific options where there are multiple
# implementations available (eg: OpenJDK vs Oracle JDK). # implementations available (eg: OpenJDK vs Oracle JDK).
# #
# # @param version
# [*version*]
# The version of java to install. By default, this module simply ensures # The version of java to install. By default, this module simply ensures
# that java is present, and does not require a specific version. # that java is present, and does not require a specific version.
# #
# [*package*] # @param package
# The name of the java package. This is configurable in case a non-standard # The name of the java package. This is configurable in case a non-standard
# java package is desired. # java package is desired.
# #
# [*package_options*] # @param package_options
# Array of strings to pass installation options to the 'package' Puppet resource. # Array of strings to pass installation options to the 'package' Puppet resource.
# Options available depend on the 'package' provider for the target OS. # Options available depend on the 'package' provider for the target OS.
# #
# [*java_alternative*] # @param java_alternative
# The name of the java alternative to use on Debian systems. # The name of the java alternative to use on Debian systems.
# "update-java-alternatives -l" will show which choices are available. # "update-java-alternatives -l" will show which choices are available.
# If you specify a particular package, you will almost always also # If you specify a particular package, you will almost always also
# want to specify which java_alternative to choose. If you set # want to specify which java_alternative to choose. If you set
# this, you also need to set the path below. # this, you also need to set the path below.
# #
# [*java_alternative_path*] # @param java_alternative_path
# The path to the "java" command on Debian systems. Since the # The path to the "java" command on Debian systems. Since the
# alternatives system makes it difficult to verify which # alternatives system makes it difficult to verify which
# alternative is actually enabled, this is required to ensure the # alternative is actually enabled, this is required to ensure the
# correct JVM is enabled. # correct JVM is enabled.
# #
# [*java_home*] # @param java_home
# The path to where the JRE is installed. This will be set as an # The path to where the JRE is installed. This will be set as an
# environment variable. # environment variable.
#
# Actions:
#
# Requires:
#
# Sample Usage:
# #
class java( class java(
String $distribution = 'jdk', String $distribution = 'jdk',
@@ -54,15 +44,11 @@ class java(
Optional[String] $java_alternative_path = undef, Optional[String] $java_alternative_path = undef,
Optional[String] $java_home = undef Optional[String] $java_home = undef
) { ) {
include java::params include ::java::params
if has_key($java::params::java, $distribution) { $default_package_name = has_key($java::params::java, $distribution) ? {
$default_package_name = $java::params::java[$distribution]['package'] false => undef,
$default_alternative = $java::params::java[$distribution]['alternative'] default => $java::params::java[$distribution]['package'],
$default_alternative_path = $java::params::java[$distribution]['alternative_path']
$default_java_home = $java::params::java[$distribution]['java_home']
} else {
fail("Java distribution ${distribution} is not supported.")
} }
$use_java_package_name = $package ? { $use_java_package_name = $package ? {
@@ -70,12 +56,17 @@ class java(
default => $package, default => $package,
} }
## Weird logic........
## If $java_alternative is set, use that. ## If $java_alternative is set, use that.
## Elsif the DEFAULT package is being used, then use $default_alternative. ## Elsif the DEFAULT package is being used, then use $default_alternative.
## Else undef ## Else undef
$use_java_alternative = $java_alternative ? { $use_java_alternative = $java_alternative ? {
undef => $use_java_package_name ? { undef => $use_java_package_name ? {
$default_package_name => $default_alternative, $default_package_name => has_key($java::params::java, $distribution) ? {
default => $java::params::java[$distribution]['alternative'],
false => undef,
},
default => undef, default => undef,
}, },
default => $java_alternative, default => $java_alternative,
@@ -83,21 +74,38 @@ class java(
## Same logic as $java_alternative above. ## Same logic as $java_alternative above.
$use_java_alternative_path = $java_alternative_path ? { $use_java_alternative_path = $java_alternative_path ? {
undef => $use_java_package_name ? { undef => $use_java_package_name ? {
$default_package_name => $default_alternative_path, $default_package_name => has_key($java::params::java, $distribution) ? {
default => $java::params::java[$distribution]['alternative_path'],
false => undef,
},
default => undef, default => undef,
}, },
default => $java_alternative_path, default => $java_alternative_path,
} }
$use_java_home = $java_home ? { $use_java_home = $java_home ? {
undef => $use_java_package_name ? { undef => $use_java_package_name ? {
$default_package_name => $default_java_home, $default_package_name => has_key($java::params::java, $distribution) ? {
default => $java::params::java[$distribution]['java_home'],
false => undef,
},
default => undef, default => undef,
}, },
default => $java_home, default => $java_home,
} }
## This should only be required if we did not override all the information we need.
# One of the defaults is missing and its not intentional:
if ((
$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)
)) {
fail("Java distribution ${distribution} is not supported. Missing default values.")
}
$jre_flag = $use_java_package_name ? { $jre_flag = $use_java_package_name ? {
/headless/ => '--jre-headless', /headless/ => '--jre-headless',
default => '--jre' default => '--jre'

View File

@@ -1,132 +1,143 @@
# Defined Type java::oracle # Defined Type java::oracle
# #
# Description # @summary
# Installs Oracle Java. By using this module you agree to the Oracle licensing # Installs Oracle Java. By using this module you agree to the Oracle licensing
# agreement. # agreement.
# #
# Install one or more versions of Oracle Java. # Install one or more versions of Oracle Java.
# #
# uses the following to download the package and automatically accept # Uses the following to download the package and automatically accept
# the licensing terms. # the licensing terms:
#```
# wget --no-cookies --no-check-certificate --header \ # wget --no-cookies --no-check-certificate --header \
# "Cookie: gpw_e24=http%3A%2F%2Fwww.oracle.com%2F; oraclelicense=accept-securebackup-cookie" \ # "Cookie: gpw_e24=http%3A%2F%2Fwww.oracle.com%2F; oraclelicense=accept-securebackup-cookie" \
# "http://download.oracle.com/otn-pub/java/jdk/8u131-b11/d54c1d3a095b4ff2b6607d096fa80163/jdk-8u131-linux-x64.tar.gz" # "http://download.oracle.com/otn-pub/java/jdk/8u131-b11/d54c1d3a095b4ff2b6607d096fa80163/jdk-8u131-linux-x64.tar.gz"
#```
# #
# Parameters # @param ensure
# [*version*] # Install or remove the package.
# Version of Java to install, e.g. '7' or '8'. Default values for major and minor
# versions will be used.
# #
# [*version_major*] # @param version
# Major version which should be installed, e.g. '8u101'. Must be used together with # Version of Java to install, e.g. '7' or '8'. Default values for major and minor versions will be used.
# version_minor.
# #
# [*version_minor*] # @param version_major
# Minor version which should be installed, e.g. 'b12'. Must be used together with # Major version which should be installed, e.g. '8u101'. Must be used together with version_minor.
# version_major.
# #
# [*java_se*] # @param version_minor
# Type of Java Standard Edition to install, jdk or jre. # Minor version which should be installed, e.g. 'b12'. Must be used together with version_major.
# #
# [*ensure*] # @param java_se
# Install or remove the package. # Type of Java Standard Edition to install, jdk or jre.
# #
# [*oracle_url*] # @param oracle_url
# Official Oracle URL to download binaries from. # Official Oracle URL to download binaries from.
# #
# [*proxy_server*] # @param proxy_server
# Specify a proxy server, with port number if needed. ie: https://example.com:8080. (passed to archive) # Specify a proxy server, with port number if needed. ie: https://example.com:8080. (passed to archive)
# #
# [*proxy_type*] # @param proxy_type
# Proxy server type (none|http|https|ftp). (passed to archive) # Proxy server type (none|http|https|ftp). (passed to archive)
# #
# Variables # @param url
# [*release_major*] # Full URL, including oracle_url, release_major, release_minor and package_name, to
# Major version release number for java_se. Used to construct download URL. # download the Oracle java_se installer. Originally present but not used, activated
# to workaround MODULES-5058.
# #
# [*release_minor*] # @param url_hash
# Minor version release number for java_se. Used to construct download URL. # Directory hash used by the download.oracle.com site. This value is a 32 character string
# which is part of the file URL returned by the JDK download site.
# #
# [*install_path*] # @param jce
# Base install path for specified version of java_se. Used to determine if java_se # Install Oracles Java Cryptographic Extensions into the JRE or JDK
# has already been installed.
# #
# [*package_type*] # @param jce_url
# Type of installation package for specified version of java_se. java_se 6 comes # Full URL to the jce zip file
# in a few installation package flavors and we need to account for them.
# #
# [*os*] # @param basedir
# Oracle java_se OS type. # Directory under which the installation will occur. If not set, defaults to
# /usr/lib/jvm for Debian and /usr/java for RedHat.
# #
# [*destination*] # @param manage_basedir
# Destination directory to save java_se installer to. Usually /tmp on Linux and # Whether to manage the basedir directory. Defaults to false.
# C:\TEMP on Windows. # Note: /usr/lib/jvm is managed for Debian by default, separate from this parameter.
# #
# [*creates_path*] # @param package_type
# Fully qualified path to java_se after it is installed. Used to determine if # Type of installation package for specified version of java_se. java_se 6 comes
# java_se is already installed. # in a few installation package flavors and we need to account for them.
# Optional forced package types: rpm, rpmbin, tar.gz
# #
# [*arch*] # @param manage_symlink
# Oracle java_se architecture type. # Whether to manage a symlink that points to the installation directory. Defaults to false.
# #
# [*package_name*] # @param symlink_name
# Name of the java_se installation package to download from Oracle's website. # The name for the optional symlink in the installation directory.
#
# [*install_command*]
# Installation command used to install Oracle java_se. Installation commands
# differ by package_type. 'bin' types are installed via shell command. 'rpmbin'
# types have the rpms extracted and then forcibly installed. 'rpm' types are
# forcibly installed.
#
# [*url*]
# Full URL, including oracle_url, release_major, release_minor and package_name, to
# download the Oracle java_se installer. Originally present but not used, activated
# to workaround MODULES-5058
#
# [*url_hash*]
# Directory hash used by the download.oracle.com site. This value is a 32 character string
# which is part of the file URL returned by the JDK download site.
#
# ### Author
# mike@marseglia.org
# #
define java::oracle ( define java::oracle (
$ensure = 'present', $ensure = 'present',
$version = '8', $version = '8',
$version_major = undef, $version_major = undef,
$version_minor = undef, $version_minor = undef,
$java_se = 'jdk', $java_se = 'jdk',
$oracle_url = 'http://download.oracle.com/otn-pub/java/jdk/', $oracle_url = 'http://download.oracle.com/otn-pub/java/jdk/',
$proxy_server = undef, $proxy_server = undef,
$proxy_type = undef, $proxy_type = undef,
$url = undef, $url = undef,
$url_hash = undef, $url_hash = undef,
$jce = false,
$jce_url = undef,
$basedir = undef,
$manage_basedir = false,
$package_type = undef,
$manage_symlink = false,
$symlink_name = undef,
) { ) {
# archive module is used to download the java package # archive module is used to download the java package
include ::archive include ::archive
ensure_resource('class', 'stdlib')
# validate java Standard Edition to download # validate java Standard Edition to download
if $java_se !~ /(jre|jdk)/ { if $java_se !~ /(jre|jdk)/ {
fail('Java SE must be either jre or jdk.') fail('Java SE must be either jre or jdk.')
} }
if $jce {
if $jce_url {
$jce_download = $jce_url
$cookie = undef
} else {
$jce_download = $version ? {
'8' => 'http://download.oracle.com/otn-pub/java/jce/8/jce_policy-8.zip',
'7' => 'http://download.oracle.com/otn-pub/java/jce/7/UnlimitedJCEPolicyJDK7.zip',
'6' => 'http://download.oracle.com/otn-pub/java/jce_policy/6/jce_policy-6.zip',
default => undef
}
$cookie = 'gpw_e24=http%3A%2F%2Fwww.oracle.com%2F; oraclelicense=accept-securebackup-cookie'
}
}
# determine Oracle Java major and minor version, and installation path # determine Oracle Java major and minor version, and installation path
if $version_major and $version_minor { if $version_major and $version_minor {
$label = $version_major
$release_major = $version_major $release_major = $version_major
$release_minor = $version_minor $release_minor = $version_minor
$release_hash = $url_hash $release_hash = $url_hash
if $release_major =~ /(\d+)u(\d+)/ { if $release_major =~ /(\d+)u(\d+)/ {
$install_path = "${java_se}1.${1}.0_${2}" # Required for CentOS systems where Java8 update number is >= 171 to ensure
# the package is visible to Puppet. This is only true for installations that
# don't use the tar.gz package type.
if $facts['os']['family'] == 'RedHat' and $2 >= '171' and $package_type != 'tar.gz' {
$install_path = "${java_se}1.${1}.0_${2}-amd64"
} else {
$install_path = "${java_se}1.${1}.0_${2}"
}
} else { } else {
$install_path = "${java_se}${release_major}${release_minor}" $install_path = "${java_se}${release_major}${release_minor}"
} }
} else { } else {
# use default versions if no specific major and minor version parameters are provided # use default versions if no specific major and minor version parameters are provided
$label = $version
case $version { case $version {
'6' : { '6' : {
$release_major = '6u45' $release_major = '6u45'
@@ -141,16 +152,16 @@ define java::oracle (
$release_hash = undef $release_hash = undef
} }
'8' : { '8' : {
$release_major = '8u131' $release_major = '8u201'
$release_minor = 'b11' $release_minor = 'b09'
$install_path = "${java_se}1.8.0_131" $install_path = "${java_se}1.8.0_201"
$release_hash = 'd54c1d3a095b4ff2b6607d096fa80163' $release_hash = '42970487e3af4f5aa5bca3f542482c60'
} }
default : { default : {
$release_major = '8u131' $release_major = '8u201'
$release_minor = 'b11' $release_minor = 'b09'
$install_path = "${java_se}1.8.0_131" $install_path = "${java_se}1.8.0_201"
$release_hash = 'd54c1d3a095b4ff2b6607d096fa80163' $release_hash = '42970487e3af4f5aa5bca3f542482c60'
} }
} }
} }
@@ -161,30 +172,60 @@ define java::oracle (
case $facts['os']['family'] { case $facts['os']['family'] {
'RedHat', 'Amazon' : { 'RedHat', 'Amazon' : {
# Oracle Java 6 comes in a special rpmbin format # Oracle Java 6 comes in a special rpmbin format
if $version == '6' { if $package_type {
$package_type = 'rpmbin' $_package_type = $package_type
} elsif $version == '6' {
$_package_type = 'rpmbin'
} else { } else {
$package_type = 'rpm' $_package_type = 'rpm'
}
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 : { default : {
fail ("unsupported platform ${$facts['os']['name']}") } fail ("unsupported platform ${$facts['os']['name']}") }
} }
$creates_path = "${_basedir}/${install_path}"
$os = 'linux' $os = 'linux'
$destination_dir = '/tmp/' $destination_dir = '/tmp/'
$creates_path = "/usr/java/${install_path}"
} }
default : { default : {
fail ( "unsupported platform ${$facts['kernel']}" ) } fail ( "unsupported platform ${$facts['kernel']}" ) }
} }
# Install required unzip packages for jce
if $jce {
ensure_resource('package', 'unzip', { 'ensure' => 'present' })
}
# set java architecture nomenclature # set java architecture nomenclature
case $facts['os']['architecture'] { $os_architecture = $facts['os']['architecture'] ? {
undef => $facts['architecture'],
default => $facts['os']['architecture']
}
case $os_architecture {
'i386' : { $arch = 'i586' } 'i386' : { $arch = 'i586' }
'x86_64' : { $arch = 'x64' } 'x86_64' : { $arch = 'x64' }
'amd64' : { $arch = 'x64' }
default : { default : {
fail ("unsupported platform ${$facts['os']['architecture']}") fail ("unsupported platform ${$os_architecture}")
} }
} }
@@ -195,7 +236,7 @@ define java::oracle (
# http://download.oracle.com/otn-pub/java/jdk/6u45-b06/jdk-6u45-linux-i586-rpm.bin # http://download.oracle.com/otn-pub/java/jdk/6u45-b06/jdk-6u45-linux-i586-rpm.bin
# http://download.oracle.com/otn-pub/java/jdk/6u45-b06/jdk-6u45-linux-i586.bin # http://download.oracle.com/otn-pub/java/jdk/6u45-b06/jdk-6u45-linux-i586.bin
# package name to download from Oracle's website # package name to download from Oracle's website
case $package_type { case $_package_type {
'bin' : { 'bin' : {
$package_name = "${java_se}-${release_major}-${os}-${arch}.bin" $package_name = "${java_se}-${release_major}-${os}-${arch}.bin"
} }
@@ -205,6 +246,9 @@ define java::oracle (
'rpm' : { 'rpm' : {
$package_name = "${java_se}-${release_major}-${os}-${arch}.rpm" $package_name = "${java_se}-${release_major}-${os}-${arch}.rpm"
} }
'tar.gz' : {
$package_name = "${java_se}-${release_major}-${os}-${arch}.tar.gz"
}
default : { default : {
$package_name = "${java_se}-${release_major}-${os}-${arch}.rpm" $package_name = "${java_se}-${release_major}-${os}-${arch}.rpm"
} }
@@ -213,9 +257,11 @@ define java::oracle (
# if complete URL is provided, use this value for source in archive resource # if complete URL is provided, use this value for source in archive resource
if $url { if $url {
$source = $url $source = $url
} elsif $release_hash != undef { }
elsif $release_hash != undef {
$source = "${oracle_url}/${release_major}-${release_minor}/${release_hash}/${package_name}" $source = "${oracle_url}/${release_major}-${release_minor}/${release_hash}/${package_name}"
} else { }
else {
$source = "${oracle_url}/${release_major}-${release_minor}/${package_name}" $source = "${oracle_url}/${release_major}-${release_minor}/${package_name}"
} }
@@ -223,7 +269,7 @@ define java::oracle (
$destination = "${destination_dir}${package_name}" $destination = "${destination_dir}${package_name}"
notice ("Destination is ${destination}") notice ("Destination is ${destination}")
case $package_type { case $_package_type {
'bin' : { 'bin' : {
$install_command = "sh ${destination}" $install_command = "sh ${destination}"
} }
@@ -233,6 +279,9 @@ define java::oracle (
'rpm' : { 'rpm' : {
$install_command = "rpm --force -iv ${destination}" $install_command = "rpm --force -iv ${destination}"
} }
'tar.gz' : {
$install_command = "tar -zxf ${destination} -C ${_basedir}"
}
default : { default : {
$install_command = "rpm -iv ${destination}" $install_command = "rpm -iv ${destination}"
} }
@@ -252,11 +301,57 @@ define java::oracle (
} }
case $facts['kernel'] { case $facts['kernel'] {
'Linux' : { 'Linux' : {
exec { "Install Oracle java_se ${java_se} ${version}" : 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 {
ensure_resource('file', $_basedir, {'ensure' => 'directory', 'before' => Exec["Install Oracle java_se ${java_se} ${version} ${release_major} ${release_minor}"]})
}
exec { "Install Oracle java_se ${java_se} ${version} ${release_major} ${release_minor}" :
path => '/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin', path => '/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin',
command => $install_command, command => $install_command,
creates => $creates_path, creates => $creates_path,
require => Archive[$destination], 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}"]
}
}
if ($jce and $jce_download != undef) {
$jce_path = $java_se ? {
'jre' => "${creates_path}/lib/security",
'jdk' => "${creates_path}/jre/lib/security"
}
archive { "/tmp/jce-${version}.zip":
source => $jce_download,
cookie => $cookie,
extract => true,
extract_path => $jce_path,
extract_flags => '-oj',
creates => "${jce_path}/US_export_policy.jar",
cleanup => false,
proxy_server => $proxy_server,
proxy_type => $proxy_type,
require => [
Package['unzip'],
Exec["Install Oracle java_se ${java_se} ${version} ${release_major} ${release_minor}"]
]
}
} }
} }
default : { default : {
@@ -268,5 +363,4 @@ define java::oracle (
notice ("Action ${ensure} not supported.") notice ("Action ${ensure} not supported.")
} }
} }
}
}

View File

@@ -1,21 +1,15 @@
# Class: java::params # @summary
# This class builds a hash of JDK/JRE packages and (for Debian)
# alternatives. For wheezy/precise, we provide Oracle JDK/JRE
# options, even though those are not in the package repositories.
# #
# This class builds a hash of JDK/JRE packages and (for Debian) # @api private
# alternatives. For wheezy/precise, we provide Oracle JDK/JRE
# options, even though those are not in the package repositories.
#
# For more info on how to package Oracle JDK/JRE, see the Debian wiki:
# http://wiki.debian.org/JavaPackage
#
# Because the alternatives system makes it very difficult to tell
# which Java alternative is enabled, we hard code the path to bin/java
# for the config class to test if it is enabled.
class java::params { class java::params {
case $::osfamily { case $::osfamily {
'RedHat': { 'RedHat': {
case $::operatingsystem { case $::operatingsystem {
'RedHat', 'CentOS', 'OracleLinux', 'Scientific', 'OEL', 'SLC': { 'RedHat', 'CentOS', 'OracleLinux', 'Scientific', 'OEL', 'SLC', 'CloudLinux': {
if (versioncmp($::operatingsystemrelease, '5.0') < 0) { if (versioncmp($::operatingsystemrelease, '5.0') < 0) {
$jdk_package = 'java-1.6.0-sun-devel' $jdk_package = 'java-1.6.0-sun-devel'
$jre_package = 'java-1.6.0-sun' $jre_package = 'java-1.6.0-sun'
@@ -74,18 +68,23 @@ class java::params {
'amd64' => 'x64', 'amd64' => 'x64',
default => $::architecture default => $::architecture
} }
$openjdk_architecture = $::architecture ? {
'aarch64' => 'arm64',
'armv7l' => 'armhf',
default => $::architecture
}
case $::lsbdistcodename { case $::lsbdistcodename {
'lenny', 'squeeze', 'lucid', 'natty': { 'lenny', 'squeeze', 'lucid', 'natty': {
$java = { $java = {
'jdk' => { 'jdk' => {
'package' => 'openjdk-6-jdk', 'package' => 'openjdk-6-jdk',
'alternative' => "java-6-openjdk-${::architecture}", 'alternative' => "java-6-openjdk-${openjdk_architecture}",
'alternative_path' => '/usr/lib/jvm/java-6-openjdk/jre/bin/java', 'alternative_path' => '/usr/lib/jvm/java-6-openjdk/jre/bin/java',
'java_home' => '/usr/lib/jvm/java-6-openjdk/jre/', 'java_home' => '/usr/lib/jvm/java-6-openjdk/jre/',
}, },
'jre' => { 'jre' => {
'package' => 'openjdk-6-jre-headless', 'package' => 'openjdk-6-jre-headless',
'alternative' => "java-6-openjdk-${::architecture}", 'alternative' => "java-6-openjdk-${openjdk_architecture}",
'alternative_path' => '/usr/lib/jvm/java-6-openjdk/jre/bin/java', 'alternative_path' => '/usr/lib/jvm/java-6-openjdk/jre/bin/java',
'java_home' => '/usr/lib/jvm/java-6-openjdk/jre/', 'java_home' => '/usr/lib/jvm/java-6-openjdk/jre/',
}, },
@@ -107,15 +106,15 @@ class java::params {
$java = { $java = {
'jdk' => { 'jdk' => {
'package' => 'openjdk-7-jdk', 'package' => 'openjdk-7-jdk',
'alternative' => "java-1.7.0-openjdk-${::architecture}", 'alternative' => "java-1.7.0-openjdk-${openjdk_architecture}",
'alternative_path' => "/usr/lib/jvm/java-1.7.0-openjdk-${::architecture}/bin/java", 'alternative_path' => "/usr/lib/jvm/java-1.7.0-openjdk-${openjdk_architecture}/bin/java",
'java_home' => "/usr/lib/jvm/java-1.7.0-openjdk-${::architecture}/", 'java_home' => "/usr/lib/jvm/java-1.7.0-openjdk-${openjdk_architecture}/",
}, },
'jre' => { 'jre' => {
'package' => 'openjdk-7-jre-headless', 'package' => 'openjdk-7-jre-headless',
'alternative' => "java-1.7.0-openjdk-${::architecture}", 'alternative' => "java-1.7.0-openjdk-${::architecture}",
'alternative_path' => "/usr/lib/jvm/java-1.7.0-openjdk-${::architecture}/bin/java", 'alternative_path' => "/usr/lib/jvm/java-1.7.0-openjdk-${openjdk_architecture}/bin/java",
'java_home' => "/usr/lib/jvm/java-1.7.0-openjdk-${::architecture}/", 'java_home' => "/usr/lib/jvm/java-1.7.0-openjdk-${openjdk_architecture}/",
}, },
'oracle-jre' => { 'oracle-jre' => {
'package' => 'oracle-j2re1.7', 'package' => 'oracle-j2re1.7',
@@ -155,19 +154,35 @@ class java::params {
}, },
} }
} }
'stretch', 'vivid', 'wily', 'xenial', 'yakkety': { 'stretch', 'vivid', 'wily', 'xenial', 'yakkety', 'zesty', 'artful': {
$java = { $java = {
'jdk' => { 'jdk' => {
'package' => 'openjdk-8-jdk', 'package' => 'openjdk-8-jdk',
'alternative' => "java-1.8.0-openjdk-${::architecture}", 'alternative' => "java-1.8.0-openjdk-${openjdk_architecture}",
'alternative_path' => "/usr/lib/jvm/java-1.8.0-openjdk-${::architecture}/bin/java", 'alternative_path' => "/usr/lib/jvm/java-1.8.0-openjdk-${openjdk_architecture}/bin/java",
'java_home' => "/usr/lib/jvm/java-1.8.0-openjdk-${::architecture}/", 'java_home' => "/usr/lib/jvm/java-1.8.0-openjdk-${openjdk_architecture}/",
}, },
'jre' => { 'jre' => {
'package' => 'openjdk-8-jre-headless', 'package' => 'openjdk-8-jre-headless',
'alternative' => "java-1.8.0-openjdk-${::architecture}", 'alternative' => "java-1.8.0-openjdk-${openjdk_architecture}",
'alternative_path' => "/usr/lib/jvm/java-1.8.0-openjdk-${::architecture}/bin/java", 'alternative_path' => "/usr/lib/jvm/java-1.8.0-openjdk-${openjdk_architecture}/bin/java",
'java_home' => "/usr/lib/jvm/java-1.8.0-openjdk-${::architecture}/", 'java_home' => "/usr/lib/jvm/java-1.8.0-openjdk-${openjdk_architecture}/",
}
}
}
'bionic': {
$java = {
'jdk' => {
'package' => 'openjdk-11-jdk',
'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}/",
},
'jre' => {
'package' => 'openjdk-11-jre-headless',
'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}/",
} }
} }
} }
@@ -224,7 +239,7 @@ class java::params {
} elsif (versioncmp($::operatingsystemrelease, '11.4') >= 0) { } elsif (versioncmp($::operatingsystemrelease, '11.4') >= 0) {
$jdk_package = 'java-1_7_1-ibm-devel' $jdk_package = 'java-1_7_1-ibm-devel'
$jre_package = 'java-1_7_1-ibm' $jre_package = 'java-1_7_1-ibm'
$java_home = '/usr/lib64/jvm/java-1.7.0-ibm-1.7.0/' $java_home = '/usr/lib64/jvm/java-1.7.1-ibm-1.7.1/'
} else { } else {
$jdk_package = 'java-1_6_0-ibm-devel' $jdk_package = 'java-1_6_0-ibm-devel'
$jre_package = 'java-1_6_0-ibm' $jre_package = 'java-1_6_0-ibm'
@@ -253,6 +268,21 @@ class java::params {
}, },
} }
} }
'Archlinux': {
$jdk_package = 'jdk8-openjdk'
$jre_package = 'jre8-openjdk'
$java_home = '/usr/lib/jvm/java-8-openjdk/jre/'
$java = {
'jdk' => {
'package' => $jdk_package,
'java_home' => $java_home,
},
'jre' => {
'package' => $jre_package,
'java_home' => $java_home,
},
}
}
default: { fail("unsupported platform ${::osfamily}") } default: { fail("unsupported platform ${::osfamily}") }
} }
} }

View File

@@ -1,12 +1,22 @@
{ {
"name": "puppetlabs-java", "name": "puppetlabs-java",
"version": "2.1.0", "version": "4.0.0",
"author": "puppetlabs", "author": "puppetlabs",
"summary": "Installs the correct Java package on various platforms.", "summary": "Installs the correct Java package on various platforms.",
"license": "Apache-2.0", "license": "Apache-2.0",
"source": "git://github.com/puppetlabs/puppetlabs-java", "source": "git://github.com/puppetlabs/puppetlabs-java",
"project_page": "https://github.com/puppetlabs/puppetlabs-java", "project_page": "https://github.com/puppetlabs/puppetlabs-java",
"issues_url": "https://tickets.puppet.com/CreateIssueDetails!init.jspa?pid=10707&issuetype=1&team=Modules&customfield_14200=14302&labels=triage&customfield_10005=2147&summary=Issue+found+with+module%3A+puppetlabs-java", "issues_url": "https://tickets.puppet.com/CreateIssueDetails!init.jspa?pid=10707&issuetype=1&team=Modules&customfield_14200=14302&labels=triage&customfield_10005=2147&summary=Issue+found+with+module%3A+puppetlabs-java",
"dependencies": [
{
"name": "puppetlabs/stdlib",
"version_requirement": ">= 4.13.1 < 7.0.0"
},
{
"name": "puppet/archive",
"version_requirement": ">= 1.1.0 < 4.0.0"
}
],
"operatingsystem_support": [ "operatingsystem_support": [
{ {
"operatingsystem": "RedHat", "operatingsystem": "RedHat",
@@ -34,68 +44,40 @@
{ {
"operatingsystem": "Scientific", "operatingsystem": "Scientific",
"operatingsystemrelease": [ "operatingsystemrelease": [
"5",
"6" "6"
] ]
}, },
{
"operatingsystem": "Fedora",
"operatingsystemrelease": [
"20",
"21",
"22"
]
},
{ {
"operatingsystem": "Debian", "operatingsystem": "Debian",
"operatingsystemrelease": [ "operatingsystemrelease": [
"6", "8",
"7", "9"
"8"
] ]
}, },
{ {
"operatingsystem": "Ubuntu", "operatingsystem": "Ubuntu",
"operatingsystemrelease": [ "operatingsystemrelease": [
"10.04",
"12.04",
"14.04", "14.04",
"16.04" "16.04",
"18.04"
] ]
}, },
{ {
"operatingsystem": "SLES", "operatingsystem": "SLES",
"operatingsystemrelease": [ "operatingsystemrelease": [
"11 SP1", "11",
"11 SP2",
"11 SP3",
"11 SP4",
"12", "12",
"12 SP1", "15"
"12 SP2"
]
},
{
"operatingsystem": "Solaris",
"operatingsystemrelease": [
"11"
] ]
} }
], ],
"requirements": [ "requirements": [
{ {
"name": "puppet", "name": "puppet",
"version_requirement": ">= 4.7.0 < 5.0.0" "version_requirement": ">= 5.5.10 < 7.0.0"
} }
], ],
"dependencies": [ "template-url": "https://github.com/puppetlabs/pdk-templates#master",
{ "template-ref": "heads/master-0-gf778803",
"name":"puppetlabs/stdlib", "pdk-version": "1.10.0"
"version_requirement": ">= 4.13.1 < 5.0.0"
},
{
"name":"puppet/archive",
"version_requirement": ">= 1.1.0 < 2.0.0"
}
]
} }

View File

@@ -1,222 +1,193 @@
require 'spec_helper_acceptance' require 'spec_helper_acceptance'
#RedHat, CentOS, Scientific, Oracle prior to 5.0 : Sun Java JDK/JRE 1.6 include Unix::File
#RedHat, CentOS, Scientific, Oracle 5.0 < x < 6.3 : OpenJDK Java JDK/JRE 1.6
#RedHat, CentOS, Scientific, Oracle after 6.3 : OpenJDK Java JDK/JRE 1.7
#Debian 5/6 & Ubuntu 10.04/11.04 : OpenJDK Java JDK/JRE 1.6 or Sun Java JDK/JRE 1.6
#Debian 7/Jesse & Ubuntu 12.04 - 14.04 : OpenJDK Java JDK/JRE 1.7 or Oracle Java JDK/JRE 1.6
#Solaris (what versions?) : Java JDK/JRE 1.7
#OpenSuSE : OpenJDK Java JDK/JRE 1.7
#SLES : IBM Java JDK/JRE 1.6
# C14677 java_class_jre = "class { 'java':\n"\
# C14678 " distribution => 'jre',\n"\
# C14679 '}'
# C14680
# C14681
# C14682
# C14684
# C14687
# C14692
# C14696
# C14697
# C14700 check on solaris 11
# C14701 check on sles 11
# C14703
# C14723 Where is oracle linux 5?
# C14724 Where is oracle linux 5?
# C14771 Where is redhat 7? Centos 7?
describe "installing java", :unless => UNSUPPORTED_PLATFORMS.include?(fact('osfamily')) do
describe "jre" do
it 'should install jre' do
pp = <<-EOS
class { 'java':
distribution => 'jre',
}
EOS
# With the version of java that ships with pe on debian wheezy, update-alternatives java_class = "class { 'java': }"
# throws an error on the first run due to missing alternative for policytool. It still
# updates the alternatives for java
if fact('operatingsystem') == 'Debian' and fact('lsbdistcodename') == 'wheezy'
apply_manifest(pp)
else
apply_manifest(pp, :catch_failures => true)
end
apply_manifest(pp, :catch_changes => true)
end
end
describe "jdk" do
it 'should install jdk' do
pp = <<-EOS
class { 'java': }
EOS
apply_manifest(pp, :catch_failures => true) _sources = "file_line { 'non-free source':\n"\
apply_manifest(pp, :catch_changes => true) " path => '/etc/apt/sources.list',\n"\
end " match => \"deb http://osmirror.delivery.puppetlabs.net/debian/ ${::lsbdistcodename} main\",\n"\
end " line => \"deb http://osmirror.delivery.puppetlabs.net/debian/ ${::lsbdistcodename} main non-free\",\n"\
end '}'
# C14686
describe 'sun', :if => (fact('operatingsystem') == 'Debian' and fact('operatingsystemrelease').match(/(5|6)/)) do
before :all do
pp = <<-EOS
file_line { 'non-free source':
path => '/etc/apt/sources.list',
match => "deb http://osmirror.delivery.puppetlabs.net/debian/ ${::lsbdistcodename} main",
line => "deb http://osmirror.delivery.puppetlabs.net/debian/ ${::lsbdistcodename} main non-free",
}
EOS
apply_manifest(pp)
shell('apt-get update')
shell('echo "sun-java6-jdk shared/accepted-sun-dlj-v1-1 select true" | debconf-set-selections')
shell('echo "sun-java6-jre shared/accepted-sun-dlj-v1-1 select true" | debconf-set-selections')
end
describe 'jre' do
it 'should install sun-jre' do
pp = <<-EOS
class { 'java':
distribution => 'sun-jre',
}
EOS
apply_manifest(pp, :catch_failures => true) _sun_jre = "class { 'java':\n"\
apply_manifest(pp, :catch_changes => true) " distribution => 'sun-jre',\n"\
end '}'
end
describe 'jdk' do
it 'should install sun-jdk' do
pp = <<-EOS
class { 'java':
distribution => 'sun-jdk',
}
EOS
apply_manifest(pp, :catch_failures => true) _sun_jdk = "class { 'java':\n"\
apply_manifest(pp, :catch_changes => true) " distribution => 'sun-jdk',\n"\
end '}'
oracle_jre = "class { 'java':\n"\
" distribution => 'oracle-jre',\n"\
'}'
oracle_jdk = "class { 'java':\n"\
" distribution => 'oracle-jdk',\n"\
'}'
blank_version = "class { 'java':\n"\
" version => '',\n"\
'}'
incorrect_distro = "class { 'java':\n"\
" distribution => 'xyz',\n"\
'}'
blank_distro = "class { 'java':\n"\
" distribution => '',\n"\
'}'
incorrect_package = "class { 'java':\n"\
" package => 'xyz',\n"\
'}'
bogus_alternative = "class { 'java':\n"\
" java_alternative => 'whatever',\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
context 'installing java jre', unless: UNSUPPORTED_PLATFORMS.include?(fact('osfamily')) do
it 'installs jre' do
idempotent_apply(default, java_class_jre)
end end
end end
# C14704 context 'installing java jdk', unless: UNSUPPORTED_PLATFORMS.include?(fact('osfamily')) do
# C14705 it 'installs jdk' do
# C15006 idempotent_apply(default, java_class)
describe 'oracle', :if => ( end
(fact('operatingsystem') == 'Debian') and (fact('operatingsystemrelease').match(/^7/)) or end
(fact('operatingsystem') == 'Ubuntu') and (fact('operatingsystemrelease').match(/^12\.04/)) or
(fact('operatingsystem') == 'Ubuntu') and (fact('operatingsystemrelease').match(/^14\.04/)) context 'oracle', if: (
(fact('operatingsystem') == 'Ubuntu') && fact('operatingsystemrelease').match(%r{^14\.04})
) do ) do
# not supported # not supported
# The package is not available from any sources, but if a customer # The package is not available from any sources, but if a customer
# custom-builds the package using java-package and adds it to a local # custom-builds the package using java-package and adds it to a local
# repository, that is the intention of this version ability # repository, that is the intention of this version ability
describe 'jre' do describe 'jre' do
it 'should install oracle-jre' do it 'installs oracle-jre' do
pp = <<-EOS apply_manifest(oracle_jre, expect_failures: true)
class { 'java':
distribution => 'oracle-jre',
}
EOS
apply_manifest(pp, :expect_failures => true)
end end
end end
describe 'jdk' do describe 'jdk' do
it 'should install oracle-jdk' do it 'installs oracle-jdk' do
pp = <<-EOS apply_manifest(oracle_jdk, expect_failures: true)
class { 'java':
distribution => 'oracle-jdk',
}
EOS
apply_manifest(pp, :expect_failures => true)
end end
end end
end end
describe 'failure cases' do context 'with failure cases' do
# C14711 it 'fails to install java with a blank version' do
# SLES 10 returns an exit code of 0 on zypper failure apply_manifest(blank_version, expect_failures: true)
unless fact('operatingsystem') == 'SLES' and fact('operatingsystemrelease') < '11'
it 'should fail to install java with an incorrect version' do
pp = <<-EOS
class { 'java':
version => '14.5',
}
EOS
apply_manifest(pp, :expect_failures => true)
end
end end
# C14712 it 'fails to install java with an incorrect distribution' do
it 'should fail to install java with a blank version' do apply_manifest(incorrect_distro, expect_failures: true)
pp = <<-EOS
class { 'java':
version => '',
}
EOS
apply_manifest(pp, :expect_failures => true)
end end
# C14713 it 'fails to install java with a blank distribution' do
it 'should fail to install java with an incorrect distribution' do apply_manifest(blank_distro, expect_failures: true)
pp = <<-EOS
class { 'java':
distribution => 'xyz',
}
EOS
apply_manifest(pp, :expect_failures => true)
end end
# C14714 it 'fails to install java with an incorrect package' do
it 'should fail to install java with a blank distribution' do apply_manifest(incorrect_package, expect_failures: true)
pp = <<-EOS
class { 'java':
distribution => '',
}
EOS
apply_manifest(pp, :expect_failures => true)
end end
# C14715 it 'fails on debian or RHEL when passed fake java_alternative and path' do
it 'should fail to install java with an incorrect package' do if fact('osfamily') == 'Debian' || fact('osfamily') == 'RedHat'
pp = <<-EOS apply_manifest(bogus_alternative, expect_failures: true)
class { 'java':
package => 'xyz',
}
EOS
apply_manifest(pp, :expect_failures => true)
end
# C14715
it 'should fail to install java with an incorrect package' do
pp = <<-EOS
class { 'java':
package => 'xyz',
}
EOS
apply_manifest(pp, :expect_failures => true)
end
# C14717
# C14719
# C14725
it 'should fail on debian or RHEL when passed fake java_alternative and path' do
pp = <<-EOS
class { 'java':
java_alternative => 'whatever',
java_alternative_path => '/whatever',
}
EOS
if fact('osfamily') == 'Debian' or fact('osfamily') == 'RedHat'
apply_manifest(pp, :expect_failures => true)
else else
apply_manifest(pp, :catch_failures => true) apply_manifest(bogus_alternative, catch_failures: true)
end end
end end
end end
context 'java::oracle', if: oracle_enabled, unless: UNSUPPORTED_PLATFORMS.include?(fact('osfamily')) do
let(:install_path) do
(fact('osfamily') == 'RedHat') ? '/usr/java' : '/usr/lib/jvm'
end
let(:version_suffix) do
(fact('osfamily') == 'RedHat') ? '-amd64' : ''
end
it 'installs oracle jdk and jre' do
idempotent_apply(default, 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(default, 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(default, 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

View File

@@ -1,286 +1,224 @@
require 'spec_helper' require 'spec_helper'
describe 'java', :type => :class do 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 'select openjdk for Centos 5.8' do
let(:facts) { {:osfamily => 'RedHat', :operatingsystem => 'Centos', :operatingsystemrelease => '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_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/') } it { is_expected.to contain_file_line('java-home-environment').with_line('JAVA_HOME=/usr/lib/jvm/java-1.6.0/') }
end end
context 'select openjdk for Centos 6.3' do context 'when select openjdk for Centos 6.3' do
let(:facts) { {:osfamily => 'RedHat', :operatingsystem => 'Centos', :operatingsystemrelease => '6.3', :architecture => 'x86_64'} } let(:facts) { { osfamily: 'RedHat', operatingsystem: 'Centos', operatingsystemrelease: '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_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/') } it { is_expected.to contain_file_line('java-home-environment').with_line('JAVA_HOME=/usr/lib/jvm/java-1.7.0/') }
end end
context 'select openjdk for Centos 7.1.1503' do context 'when select openjdk for Centos 7.1.1503' do
let(:facts) { {:osfamily => 'RedHat', :operatingsystem => 'Centos', :operatingsystemrelease => '7.1.1503', :architecture => 'x86_64'} } let(:facts) { { osfamily: 'RedHat', operatingsystem: 'Centos', operatingsystemrelease: '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_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/') } it { is_expected.to contain_file_line('java-home-environment').with_line('JAVA_HOME=/usr/lib/jvm/java-1.8.0/') }
end end
context 'select openjdk for Centos 6.2' do context 'when select openjdk for Centos 6.2' do
let(:facts) { {:osfamily => 'RedHat', :operatingsystem => 'Centos', :operatingsystemrelease => '6.2', :architecture => 'x86_64'} } let(:facts) { { osfamily: 'RedHat', operatingsystem: 'Centos', operatingsystemrelease: '6.2', architecture: 'x86_64' } }
it { is_expected.to contain_package('java').with_name('java-1.6.0-openjdk-devel') } it { is_expected.to contain_package('java').with_name('java-1.6.0-openjdk-devel') }
it { is_expected.to_not contain_exec('update-java-alternatives') } it { is_expected.not_to contain_exec('update-java-alternatives') }
end end
context 'select Oracle JRE with alternatives for Centos 6.3' do context 'when select Oracle JRE with alternatives for Centos 6.3' do
let(:facts) { {:osfamily => 'RedHat', :operatingsystem => 'Centos', :operatingsystemrelease => '6.3', :architecture => 'x86_64'} } let(:facts) { { osfamily: 'RedHat', operatingsystem: 'Centos', operatingsystemrelease: '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'} } 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') } it { is_expected.to contain_package('java').with_name('jre') }
it { is_expected.to contain_exec('create-java-alternatives').with_command('alternatives --install /usr/bin/java java /usr/java/jre1.7.0_67/bin/java 20000') } it { is_expected.to contain_exec('create-java-alternatives').with_command('alternatives --install /usr/bin/java java /usr/java/jre1.7.0_67/bin/java 20000') }
it { is_expected.to contain_exec('update-java-alternatives').with_command('alternatives --set java /usr/java/jre1.7.0_67/bin/java') } it { is_expected.to contain_exec('update-java-alternatives').with_command('alternatives --set java /usr/java/jre1.7.0_67/bin/java') }
end end
context 'select openjdk for Fedora 20' do context 'when select passed value for Centos 5.3' do
let(:facts) { {:osfamily => 'RedHat', :operatingsystem => 'Fedora', :operatingsystemrelease => '20', :architecture => 'x86_64'} } let(:facts) { { osfamily: 'RedHat', operatingsystem: 'Centos', operatingsystemrelease: '5.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-openjdk-x86_64/') }
end
context 'select openjdk for Fedora 21' do
let(:facts) { {:osfamily => 'RedHat', :operatingsystem => 'Fedora', :operatingsystemrelease => '21', :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-openjdk-x86_64/') }
end
context 'select passed value for Fedora 20' do
let(:facts) { {:osfamily => 'RedHat', :operatingsystem => 'Fedora', :operatingsystemrelease => '20', :architecture => 'x86_64'} }
let(:params) { { 'distribution' => 'jre', 'java_home' => '/usr/local/lib/jre/' } }
it { is_expected.to contain_package('java').with_name('java-1.7.0-openjdk') }
it { is_expected.to contain_file_line('java-home-environment').with_line('JAVA_HOME=/usr/local/lib/jre/') }
end
context 'select passed value for Fedora 21' do
let(:facts) { {:osfamily => 'RedHat', :operatingsystem => 'Fedora', :operatingsystemrelease => '21', :architecture => 'x86_64'} }
let(:params) { { 'distribution' => 'jre', 'java_home' => '/usr/local/lib/jre/' } }
it { is_expected.to contain_package('java').with_name('java-1.8.0-openjdk') }
it { is_expected.to contain_file_line('java-home-environment').with_line('JAVA_HOME=/usr/local/lib/jre/') }
end
context 'select passed value for Fedora 21 with yum option' do
let(:facts) { {:osfamily => 'RedHat', :operatingsystem => 'Fedora', :operatingsystemrelease => '21', :architecture => 'x86_64'} }
let(:params) { { 'distribution' => 'jre' } }
let(:params) { { 'package_options' => ['--skip-broken'] } }
it { is_expected.to contain_package('java') }
end
context 'select passed value for Centos 5.3' do
let(:facts) { {:osfamily => 'RedHat', :operatingsystem => 'Centos', :operatingsystemrelease => '5.3', :architecture => 'x86_64'} }
let(:params) { { 'package' => 'jdk', 'java_home' => '/usr/local/lib/jre' } } let(:params) { { 'package' => 'jdk', 'java_home' => '/usr/local/lib/jre' } }
it { is_expected.to contain_package('java').with_name('jdk') } it { is_expected.to contain_package('java').with_name('jdk') }
it { is_expected.to_not contain_exec('update-java-alternatives') } it { is_expected.not_to contain_exec('update-java-alternatives') }
end end
context 'select default for Centos 5.3' do context 'when select default for Centos 5.3' do
let(:facts) { {:osfamily => 'RedHat', :operatingsystem => 'Centos', :operatingsystemrelease => '5.3', :architecture => 'x86_64'} } let(:facts) { { osfamily: 'RedHat', operatingsystem: 'Centos', operatingsystemrelease: '5.3', architecture: 'x86_64' } }
it { is_expected.to contain_package('java').with_name('java-1.6.0-openjdk-devel') } it { is_expected.to contain_package('java').with_name('java-1.6.0-openjdk-devel') }
it { is_expected.to_not contain_exec('update-java-alternatives') } it { is_expected.not_to contain_exec('update-java-alternatives') }
end end
context 'select default for Debian Wheezy' do context 'when select jdk for Ubuntu Trusty (14.04)' do
let(:facts) { {:osfamily => 'Debian', :operatingsystem => 'Debian', :lsbdistcodename => 'wheezy', :operatingsystemrelease => '7.1', :architecture => 'amd64',} } let(:facts) { { osfamily: 'Debian', operatingsystem: 'Ubuntu', lsbdistcodename: 'trusty', operatingsystemrelease: '14.04', architecture: 'amd64' } }
it { is_expected.to contain_package('java').with_name('openjdk-7-jdk') }
it { is_expected.to contain_exec('update-java-alternatives').with_command('update-java-alternatives --set java-1.7.0-openjdk-amd64 --jre') }
it { is_expected.to contain_file_line('java-home-environment').with_line('JAVA_HOME=/usr/lib/jvm/java-1.7.0-openjdk-amd64/') }
end
context 'select Oracle JRE for Debian Wheezy' do
let(:facts) { {:osfamily => 'Debian', :operatingsystem => 'Debian', :lsbdistcodename => 'wheezy', :operatingsystemrelease => '7.1', :architecture => 'amd64',} }
let(:params) { { 'distribution' => 'oracle-jre' } }
it { is_expected.to contain_package('java').with_name('oracle-j2re1.7') }
it { is_expected.to contain_exec('update-java-alternatives').with_command('update-java-alternatives --set j2re1.7-oracle --jre') }
it { is_expected.to contain_file_line('java-home-environment').with_line('JAVA_HOME=/usr/lib/jvm/j2re1.7-oracle/') }
end
context 'select Oracle Java 8 JRE >=u100 for Debian Wheezy' do
let(:facts) { {:osfamily => 'Debian', :operatingsystem => 'Debian', :lsbdistcodename => 'wheezy', :operatingsystemrelease => '7.1', :architecture => 'amd64',} }
let(:params) { { 'distribution' => 'oracle-java8-jre' } }
it { is_expected.to contain_package('java').with_name('oracle-java8-jre') }
it { is_expected.to contain_exec('update-java-alternatives').with_command('update-java-alternatives --set jre-8-oracle-x64 --jre') }
end
context 'select Oracle Java 8 JDK >=u100 for Debian Wheezy' do
let(:facts) { {:osfamily => 'Debian', :operatingsystem => 'Debian', :lsbdistcodename => 'wheezy', :operatingsystemrelease => '7.1', :architecture => 'amd64',} }
let(:params) { { 'distribution' => 'oracle-java8-jdk' } }
it { is_expected.to contain_package('java').with_name('oracle-java8-jdk') }
it { is_expected.to contain_exec('update-java-alternatives').with_command('update-java-alternatives --set jdk-8-oracle-x64 --jre') }
end
context 'select OpenJDK JRE for Debian Wheezy' do
let(:facts) { {:osfamily => 'Debian', :operatingsystem => 'Debian', :lsbdistcodename => 'wheezy', :operatingsystemrelease => '7.1', :architecture => 'amd64',} }
let(:params) { { 'distribution' => 'jre' } }
it { is_expected.to contain_package('java').with_name('openjdk-7-jre-headless') }
it { is_expected.to contain_exec('update-java-alternatives').with_command('update-java-alternatives --set java-1.7.0-openjdk-amd64 --jre-headless') }
it { is_expected.to contain_file_line('java-home-environment').with_line('JAVA_HOME=/usr/lib/jvm/java-1.7.0-openjdk-amd64/') }
end
context 'select default for Debian Squeeze' do
let(:facts) { {:osfamily => 'Debian', :operatingsystem => 'Debian', :lsbdistcodename => 'squeeze', :operatingsystemrelease => '6.0.5', :architecture => 'amd64',} }
it { is_expected.to contain_package('java').with_name('openjdk-6-jdk') }
it { is_expected.to contain_exec('update-java-alternatives').with_command('update-java-alternatives --set java-6-openjdk-amd64 --jre') }
end
context 'select Oracle JRE for Debian Squeeze' do
let(:facts) { {:osfamily => 'Debian', :operatingsystem => 'Debian', :lsbdistcodename => 'squeeze', :operatingsystemrelease => '6.0.5', :architecture => 'amd64',} }
let(:params) { { 'distribution' => 'sun-jre', } }
it { is_expected.to contain_package('java').with_name('sun-java6-jre') }
it { is_expected.to contain_exec('update-java-alternatives').with_command('update-java-alternatives --set java-6-sun --jre') }
it { is_expected.to contain_file_line('java-home-environment').with_line('JAVA_HOME=/usr/lib/jvm/java-6-sun/jre/') }
end
context 'select OpenJDK JRE for Debian Squeeze' do
let(:facts) { {:osfamily => 'Debian', :operatingsystem => 'Debian', :lsbdistcodename => 'squeeze', :operatingsystemrelease => '6.0.5', :architecture => 'amd64',} }
let(:params) { { 'distribution' => 'jre', } }
it { is_expected.to contain_package('java').with_name('openjdk-6-jre-headless') }
it { is_expected.to contain_exec('update-java-alternatives').with_command('update-java-alternatives --set java-6-openjdk-amd64 --jre-headless') }
it { is_expected.to contain_file_line('java-home-environment').with_line('JAVA_HOME=/usr/lib/jvm/java-6-openjdk/jre/') }
end
context 'select random alternative for Debian Wheezy' do
let(:facts) { {:osfamily => 'Debian', :operatingsystem => 'Debian', :lsbdistcodename => 'wheezy', :operatingsystemrelease => '7.1', :architecture => 'amd64',} }
let(:params) { { 'java_alternative' => 'bananafish' } }
it { is_expected.to contain_package('java').with_name('openjdk-7-jdk') }
it { is_expected.to contain_exec('update-java-alternatives').with_command('update-java-alternatives --set bananafish --jre') }
end
context 'select jdk for Ubuntu Vivid (15.04)' do
let(:facts) { {:osfamily => 'Debian', :operatingsystem => 'Ubuntu', :lsbdistcodename => 'vivid', :operatingsystemrelease => '15.04', :architecture => 'amd64',} }
let(:params) { { 'distribution' => 'jdk' } } let(:params) { { 'distribution' => 'jdk' } }
it { is_expected.to contain_package('java').with_name('openjdk-7-jdk') }
it { is_expected.to contain_file_line('java-home-environment').with_line('JAVA_HOME=/usr/lib/jvm/java-1.7.0-openjdk-amd64/') }
end
context 'when select jre for Ubuntu Trusty (14.04)' do
let(:facts) { { osfamily: 'Debian', operatingsystem: 'Ubuntu', lsbdistcodename: 'trusty', operatingsystemrelease: '14.04', architecture: 'amd64' } }
let(:params) { { 'distribution' => 'jre' } }
it { is_expected.to contain_package('java').with_name('openjdk-7-jre-headless') }
it { is_expected.to contain_file_line('java-home-environment').with_line('JAVA_HOME=/usr/lib/jvm/java-1.7.0-openjdk-amd64/') }
end
context 'when select jdk for Ubuntu xenial (16.04) on ARM' do
let(:facts) { { osfamily: 'Debian', operatingsystem: 'Ubuntu', lsbdistcodename: 'xenial', operatingsystemrelease: '16.04', architecture: 'armv7l' } }
let(:params) { { 'distribution' => 'jdk' } }
it { is_expected.to contain_package('java').with_name('openjdk-8-jdk') } it { is_expected.to contain_package('java').with_name('openjdk-8-jdk') }
it { is_expected.to contain_file_line('java-home-environment').with_line('JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk-amd64/') } it { is_expected.to contain_file_line('java-home-environment').with_line('JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk-armhf/') }
end end
context 'select jre for Ubuntu Vivid (15.04)' do context 'when select jdk for Ubuntu xenial (16.04) on ARM64' do
let(:facts) { {:osfamily => 'Debian', :operatingsystem => 'Ubuntu', :lsbdistcodename => 'vivid', :operatingsystemrelease => '15.04', :architecture => 'amd64',} } let(:facts) { { osfamily: 'Debian', operatingsystem: 'Ubuntu', lsbdistcodename: 'xenial', operatingsystemrelease: '16.04', architecture: 'aarch64' } }
let(:params) { { 'distribution' => 'jre' } } let(:params) { { 'distribution' => 'jdk' } }
it { is_expected.to contain_package('java').with_name('openjdk-8-jre-headless') }
it { is_expected.to contain_file_line('java-home-environment').with_line('JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk-amd64/') } it { is_expected.to contain_package('java').with_name('openjdk-8-jdk') }
it { is_expected.to contain_file_line('java-home-environment').with_line('JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk-arm64/') }
end end
context 'select openjdk for Amazon Linux' do context 'when select openjdk for Oracle Linux' do
let(:facts) { {:osfamily => 'RedHat', :operatingsystem => 'Amazon', :operatingsystemrelease => '3.4.43-43.43.amzn1.x86_64', :architecture => 'x86_64'} } let(:facts) { { osfamily: 'RedHat', operatingsystem: 'OracleLinux', operatingsystemrelease: '6.4', 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-openjdk-x86_64/') }
end
context 'select passed value for Amazon Linux' do
let(:facts) { {:osfamily => 'RedHat', :operatingsystem => 'Amazon', :operatingsystemrelease => '5.3.4.43-43.43.amzn1.x86_64', :architecture => 'x86_64'} }
let(:params) { { 'distribution' => 'jre' } }
it { is_expected.to contain_package('java').with_name('java-1.7.0-openjdk') }
end
context 'select openjdk for Oracle Linux' do
let(:facts) { {:osfamily => 'RedHat', :operatingsystem => 'OracleLinux', :operatingsystemrelease => '6.4', :architecture => 'x86_64'} }
it { is_expected.to contain_package('java').with_name('java-1.7.0-openjdk-devel') } it { is_expected.to contain_package('java').with_name('java-1.7.0-openjdk-devel') }
end end
context 'select openjdk for Oracle Linux 6.2' do context 'when select openjdk for Oracle Linux 6.2' do
let(:facts) { {:osfamily => 'RedHat', :operatingsystem => 'OracleLinux', :operatingsystemrelease => '6.2', :architecture => 'x86_64'} } let(:facts) { { osfamily: 'RedHat', operatingsystem: 'OracleLinux', operatingsystemrelease: '6.2', architecture: 'x86_64' } }
it { is_expected.to contain_package('java').with_name('java-1.6.0-openjdk-devel') } it { is_expected.to contain_package('java').with_name('java-1.6.0-openjdk-devel') }
end end
context 'select passed value for Oracle Linux' do context 'when select passed value for Oracle Linux' do
let(:facts) { {:osfamily => 'RedHat', :operatingsystem => 'OracleLinux', :operatingsystemrelease => '6.3', :architecture => 'x86_64'} } let(:facts) { { osfamily: 'RedHat', operatingsystem: 'OracleLinux', operatingsystemrelease: '6.3', architecture: 'x86_64' } }
let(:params) { { 'distribution' => 'jre' } } let(:params) { { 'distribution' => 'jre' } }
it { is_expected.to contain_package('java').with_name('java-1.7.0-openjdk') } it { is_expected.to contain_package('java').with_name('java-1.7.0-openjdk') }
end end
context 'select passed value for Scientific Linux' do context 'when select passed value for Scientific Linux' do
let(:facts) { {:osfamily => 'RedHat', :operatingsystem => 'Scientific', :operatingsystemrelease => '6.4', :architecture => 'x86_64'} } let(:facts) { { osfamily: 'RedHat', operatingsystem: 'Scientific', operatingsystemrelease: '6.4', architecture: 'x86_64' } }
let(:params) { { 'distribution' => 'jre' } } let(:params) { { 'distribution' => 'jre' } }
it { is_expected.to contain_package('java').with_name('java-1.7.0-openjdk') } it { is_expected.to contain_package('java').with_name('java-1.7.0-openjdk') }
it { is_expected.to contain_file_line('java-home-environment').with_line('JAVA_HOME=/usr/lib/jvm/java-1.7.0/') } it { is_expected.to contain_file_line('java-home-environment').with_line('JAVA_HOME=/usr/lib/jvm/java-1.7.0/') }
end end
context 'select passed value for Scientific Linux CERN (SLC)' do 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) { { osfamily: 'RedHat', operatingsystem: 'SLC', operatingsystemrelease: '6.4', architecture: 'x86_64' } }
let(:params) { { 'distribution' => 'jre' } } let(:params) { { 'distribution' => 'jre' } }
it { is_expected.to contain_package('java').with_name('java-1.7.0-openjdk') } it { is_expected.to contain_package('java').with_name('java-1.7.0-openjdk') }
it { is_expected.to contain_file_line('java-home-environment').with_line('JAVA_HOME=/usr/lib/jvm/java-1.7.0/') } it { is_expected.to contain_file_line('java-home-environment').with_line('JAVA_HOME=/usr/lib/jvm/java-1.7.0/') }
end end
context 'select default for OpenSUSE 12.3' do context 'when select default for OpenSUSE 12.3' do
let(:facts) { {:osfamily => 'Suse', :operatingsystem => 'OpenSUSE', :operatingsystemrelease => '12.3', :architecture => 'x86_64'}} let(:facts) { { osfamily: 'Suse', operatingsystem: 'OpenSUSE', operatingsystemrelease: '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_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/') } 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 end
context 'select default for SLES 11.3' do context 'when select default for SLES 11.3' do
let(:facts) { {:osfamily => 'Suse', :operatingsystem => 'SLES', :operatingsystemrelease => '11.3', :architecture => 'x86_64'}} let(:facts) { { osfamily: 'Suse', operatingsystem: 'SLES', operatingsystemrelease: '11.3', architecture: 'x86_64' } }
it { should contain_package('java').with_name('java-1_6_0-ibm-devel')}
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/') } 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 end
context 'select default for SLES 11.4' do context 'when select default for SLES 11.4' do
let(:facts) { {:osfamily => 'Suse', :operatingsystem => 'SLES', :operatingsystemrelease => '11.4', :architecture => 'x86_64'}} let(:facts) { { osfamily: 'Suse', operatingsystem: 'SLES', operatingsystemrelease: '11.4', architecture: 'x86_64' } }
it { should 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.0-ibm-1.7.0/') } 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 end
context 'select default for SLES 12.0' do 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) { { osfamily: 'Suse', operatingsystem: 'SLES', operatingsystemrelease: '12.0', operatingsystemmajrelease: '12', architecture: 'x86_64' } }
it { should contain_package('java').with_name('java-1_7_0-openjdk-devel')}
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/') } 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 end
context 'select default for SLES 12.1' do 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) { { osfamily: 'Suse', operatingsystem: 'SLES', operatingsystemrelease: '12.1', operatingsystemmajrelease: '12', architecture: 'x86_64' } }
it { should contain_package('java').with_name('java-1_8_0-openjdk-devel')}
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/') } 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 end
context 'select jdk for OpenBSD' do describe 'custom java package' do
let(:facts) { {:osfamily => 'OpenBSD', :architecture => 'x86_64'} } let(:facts) { { osfamily: 'Debian', operatingsystem: 'Debian', lsbdistcodename: 'jessie', operatingsystemrelease: '8.6', architecture: 'amd64' } }
it { is_expected.to contain_package('java').with_name('jdk') }
it { is_expected.to contain_file_line('java-home-environment').with_line('JAVA_HOME=/usr/local/jdk/') }
end
context 'select jre for OpenBSD' do context 'when all params provided' do
let(:facts) { {:osfamily => 'OpenBSD', :architecture => 'x86_64'} } let(:params) do
let(:params) { { 'distribution' => 'jre' } } {
it { is_expected.to contain_package('java').with_name('jre') } 'distribution' => 'custom',
'package' => 'custom_jdk',
'java_alternative' => 'java-custom_jdk',
'java_alternative_path' => '/opt/custom_jdk/bin/java',
'java_home' => '/opt/custom_jdk',
}
end
it { is_expected.to contain_package('java').with_name('custom_jdk') }
it { is_expected.to contain_file_line('java-home-environment').with_line('JAVA_HOME=/opt/custom_jdk') }
it { is_expected.to contain_exec('update-java-alternatives').with_command('update-java-alternatives --set java-custom_jdk --jre') }
end
context 'with missing parameters' do
let(:params) do
{
'distribution' => 'custom',
'package' => 'custom_jdk',
}
end
it do
expect { catalogue }.to raise_error Puppet::Error, %r{is not supported. Missing default values}
end
end
end end
describe 'incompatible OSs' do describe 'incompatible OSs' do
[ [
{ {
# C14706 osfamily: 'windows',
:osfamily => 'windows', operatingsystem: 'windows',
:operatingsystem => 'windows', operatingsystemrelease: '8.1',
:operatingsystemrelease => '8.1',
}, },
{ {
# C14707 osfamily: 'Darwin',
:osfamily => 'Darwin', operatingsystem: 'Darwin',
:operatingsystem => 'Darwin', operatingsystemrelease: '13.3.0',
:operatingsystemrelease => '13.3.0',
}, },
{ {
# C14708 osfamily: 'AIX',
:osfamily => 'AIX', operatingsystem: 'AIX',
:operatingsystem => 'AIX', operatingsystemrelease: '7100-02-00-000',
:operatingsystemrelease => '7100-02-00-000',
}, },
{ {
# C14708 osfamily: 'AIX',
:osfamily => 'AIX', operatingsystem: 'AIX',
:operatingsystem => 'AIX', operatingsystemrelease: '6100-07-04-1216',
:operatingsystemrelease => '6100-07-04-1216',
}, },
{ {
# C14708 osfamily: 'AIX',
:osfamily => 'AIX', operatingsystem: 'AIX',
:operatingsystem => 'AIX', operatingsystemrelease: '5300-12-01-1016',
:operatingsystemrelease => '5300-12-01-1016',
}, },
].each do |facts| ].each do |facts|
let(:facts) { facts } let(:facts) { facts }
it "is_expected.to fail on #{facts[:operatingsystem]} #{facts[:operatingsystemrelease]}" do it "is_expected.to fail on #{facts[:operatingsystem]} #{facts[:operatingsystemrelease]}" do
expect { catalogue }.to raise_error Puppet::Error, /unsupported platform/ expect { catalogue }.to raise_error Puppet::Error, %r{unsupported platform}
end end
end end
end end

7
spec/default_facts.yml Normal file
View File

@@ -0,0 +1,7 @@
# Use default_module_facts.yml for module specific facts.
#
# Facts specified here will override the values provided by rspec-puppet-facts.
---
ipaddress: "172.16.254.254"
is_pe: false
macaddress: "AA:AA:AA:AA:AA:AA"

View File

@@ -1,197 +1,473 @@
require 'spec_helper' require 'spec_helper'
describe 'java::oracle', :type => :define do oracle_url = 'http://download.oracle.com/otn-pub/java/jdk/8u201-b09/42970487e3af4f5aa5bca3f542482c60/jdk-8u201-linux-x64.tar.gz'
context 'On CentOS 64-bit' do
let(:facts) { { :kernel => 'Linux', :os => {:family => 'RedHat', :architecture => 'x86_64', :name => 'CentOS', :release => {:full => '6.0'}}}}
context 'Oracle Java SE 6 JDK' do describe 'java::oracle', type: :define do
let(:params) { {:ensure => 'present', :version => '6', :java_se => 'jdk'} } context 'with CentOS 64-bit' do
let :title do 'jdk6' end let(:facts) { { kernel: 'Linux', os: { family: 'RedHat', architecture: 'x86_64', name: 'CentOS', release: { full: '6.0' } } } }
it { is_expected.to contain_archive('/tmp/jdk-6u45-linux-x64-rpm.bin')}
it { is_expected.to contain_exec('Install Oracle java_se jdk 6').with_command('sh /tmp/jdk-6u45-linux-x64-rpm.bin -x; rpm --force -iv sun*.rpm; rpm --force -iv jdk*.rpm') } context 'when Oracle Java SE 6 JDK' do
it { is_expected.to contain_exec('Install Oracle java_se jdk 6').that_requires('Archive[/tmp/jdk-6u45-linux-x64-rpm.bin]') } let(:params) { { ensure: 'present', version: '6', java_se: 'jdk' } }
let(:title) { 'jdk6' }
it { is_expected.to contain_archive('/tmp/jdk-6u45-linux-x64-rpm.bin') }
it { is_expected.to contain_exec('Install Oracle java_se jdk 6 6u45 b06').with_command('sh /tmp/jdk-6u45-linux-x64-rpm.bin -x; rpm --force -iv sun*.rpm; rpm --force -iv jdk*.rpm') }
it { is_expected.to contain_exec('Install Oracle java_se jdk 6 6u45 b06').that_requires('Archive[/tmp/jdk-6u45-linux-x64-rpm.bin]') }
end
context 'when Oracle Java SE 7 JDK' do
let(:params) { { ensure: 'present', version: '7', java_se: 'jdk' } }
let(:title) { 'jdk7' }
it { is_expected.to contain_archive('/tmp/jdk-7u80-linux-x64.rpm') }
it { is_expected.to contain_exec('Install Oracle java_se jdk 7 7u80 b15').with_command('rpm --force -iv /tmp/jdk-7u80-linux-x64.rpm') }
it { is_expected.to contain_exec('Install Oracle java_se jdk 7 7u80 b15').that_requires('Archive[/tmp/jdk-7u80-linux-x64.rpm]') }
end
context 'when Oracle Java SE 8 JDK' do
let(:params) { { ensure: 'present', version: '8', java_se: 'jdk' } }
let(:title) { 'jdk8' }
it { is_expected.to contain_archive('/tmp/jdk-8u201-linux-x64.rpm') }
it { is_expected.to contain_exec('Install Oracle java_se jdk 8 8u201 b09').with_command('rpm --force -iv /tmp/jdk-8u201-linux-x64.rpm') }
it { is_expected.to contain_exec('Install Oracle java_se jdk 8 8u201 b09').that_requires('Archive[/tmp/jdk-8u201-linux-x64.rpm]') }
end
context 'when Oracle Java SE 6 JRE' do
let(:params) { { ensure: 'present', version: '6', java_se: 'jre' } }
let(:title) { 'jre6' }
it { is_expected.to contain_archive('/tmp/jre-6u45-linux-x64-rpm.bin') }
it { is_expected.to contain_exec('Install Oracle java_se jre 6 6u45 b06').with_command('sh /tmp/jre-6u45-linux-x64-rpm.bin -x; rpm --force -iv sun*.rpm; rpm --force -iv jre*.rpm') }
it { is_expected.to contain_exec('Install Oracle java_se jre 6 6u45 b06').that_requires('Archive[/tmp/jre-6u45-linux-x64-rpm.bin]') }
end
context 'when Oracle Java SE 7 JRE' do
let(:params) { { ensure: 'present', version: '7', java_se: 'jre' } }
let(:title) { 'jre7' }
it { is_expected.to contain_archive('/tmp/jre-7u80-linux-x64.rpm') }
it { is_expected.to contain_exec('Install Oracle java_se jre 7 7u80 b15').with_command('rpm --force -iv /tmp/jre-7u80-linux-x64.rpm') }
it { is_expected.to contain_exec('Install Oracle java_se jre 7 7u80 b15').that_requires('Archive[/tmp/jre-7u80-linux-x64.rpm]') }
end
context 'when select Oracle Java SE 8 JRE' do
let(:params) { { ensure: 'present', version: '8', java_se: 'jre' } }
let(:title) { 'jre8' }
it { is_expected.to contain_archive('/tmp/jre-8u201-linux-x64.rpm') }
it { is_expected.to contain_exec('Install Oracle java_se jre 8 8u201 b09').with_command('rpm --force -iv /tmp/jre-8u201-linux-x64.rpm') }
it { is_expected.to contain_exec('Install Oracle java_se jre 8 8u201 b09').that_requires('Archive[/tmp/jre-8u201-linux-x64.rpm]') }
end
context 'when passing URL to url parameter' do
let(:params) do
{
ensure: 'present',
version_major: '8u201',
version_minor: 'b09',
java_se: 'jdk',
url: 'http://download.oracle.com/otn-pub/java/jdk/8u201-b09/42970487e3af4f5aa5bca3f542482c60/jdk-8u201-linux-x64.rpm',
url_hash: 'ignored',
}
end
let(:title) { 'jdk8' }
it {
is_expected.to contain_archive('/tmp/jdk-8u201-linux-x64.rpm')
.with_source('http://download.oracle.com/otn-pub/java/jdk/8u201-b09/42970487e3af4f5aa5bca3f542482c60/jdk-8u201-linux-x64.rpm')
}
end
context 'when passing a hash to url_hash parameter' do
let(:params) do
{
ensure: 'present',
version_major: '8u201',
version_minor: 'b09',
java_se: 'jdk',
url_hash: '42970487e3af4f5aa5bca3f542482c60',
}
end
let(:title) { 'jdk8' }
it {
is_expected.to contain_archive('/tmp/jdk-8u201-linux-x64.rpm')
.with_source('http://download.oracle.com/otn-pub/java/jdk//8u201-b09/42970487e3af4f5aa5bca3f542482c60/jdk-8u201-linux-x64.rpm')
}
end
context 'when installing multiple versions' do
let(:params) do
{
ensure: 'present',
version_major: '8u201',
version_minor: 'b09',
java_se: 'jdk',
url_hash: '42970487e3af4f5aa5bca3f542482c60',
}
end
let(:title) { 'jdk8' }
let(:pre_condition) do
<<-EOL
java::oracle {
'jdk8121':
ensure => 'present',
version_major => '8u121',
version_minor => 'b13',
java_se => 'jdk',
url_hash => 'abcdef01234567890',
}
EOL
end end
context 'Oracle Java SE 7 JDK' do it { is_expected.to compile }
let(:params) { {:ensure => 'present', :version => '7', :java_se => 'jdk'} } end
let :title do 'jdk7' end
it { is_expected.to contain_archive('/tmp/jdk-7u80-linux-x64.rpm')} context 'when installing Oracle Java SE 6 JRE with JCE' do
it { is_expected.to contain_exec('Install Oracle java_se jdk 7').with_command('rpm --force -iv /tmp/jdk-7u80-linux-x64.rpm') } let(:params) { { ensure: 'present', jce: true, version: '6', version_major: '6u99', version_minor: '99', java_se: 'jre' } }
it { is_expected.to contain_exec('Install Oracle java_se jdk 7').that_requires('Archive[/tmp/jdk-7u80-linux-x64.rpm]') } let(:title) { 'jre6jce' }
it do
is_expected.to contain_archive('/tmp/jce-6.zip').with_source('http://download.oracle.com/otn-pub/java/jce_policy/6/jce_policy-6.zip')
is_expected.to contain_archive('/tmp/jce-6.zip').with_extract_path('/usr/java/jre1.6.0_99-amd64/lib/security')
end end
context 'Oracle Java SE 8 JDK' do
let(:params) { {:ensure => 'present', :version => '8', :java_se => 'jdk'} }
let :title do 'jdk8' end
it { is_expected.to contain_archive('/tmp/jdk-8u131-linux-x64.rpm')}
it { is_expected.to contain_exec('Install Oracle java_se jdk 8').with_command('rpm --force -iv /tmp/jdk-8u131-linux-x64.rpm') }
it { is_expected.to contain_exec('Install Oracle java_se jdk 8').that_requires('Archive[/tmp/jdk-8u131-linux-x64.rpm]') }
end end
context 'Oracle Java SE 6 JRE' do context 'when installing Oracle Java SE 6 JDK with JCE' do
let(:params) { {:ensure => 'present', :version => '6', :java_se => 'jre'} } let(:params) { { ensure: 'present', jce: true, version: '6', version_major: '6u99', version_minor: '99', java_se: 'jdk' } }
let :title do 'jre6' end let(:title) { 'jre6jce' }
it { is_expected.to contain_archive('/tmp/jre-6u45-linux-x64-rpm.bin')}
it { is_expected.to contain_exec('Install Oracle java_se jre 6').with_command('sh /tmp/jre-6u45-linux-x64-rpm.bin -x; rpm --force -iv sun*.rpm; rpm --force -iv jre*.rpm') } it do
it { is_expected.to contain_exec('Install Oracle java_se jre 6').that_requires('Archive[/tmp/jre-6u45-linux-x64-rpm.bin]') } is_expected.to contain_archive('/tmp/jce-6.zip').with_source('http://download.oracle.com/otn-pub/java/jce_policy/6/jce_policy-6.zip')
is_expected.to contain_archive('/tmp/jce-6.zip').with_extract_path('/usr/java/jdk1.6.0_99-amd64/jre/lib/security')
end
end end
context 'Oracle Java SE 7 JRE' do context 'when specifying package_type tar.gz and basedir' do
let(:params) { {:ensure => 'present', :version => '7', :java_se => 'jre'} } let(:params) do
let :title do 'jre7' end {
it { is_expected.to contain_archive('/tmp/jre-7u80-linux-x64.rpm')} ensure: 'present',
it { is_expected.to contain_exec('Install Oracle java_se jre 7').with_command('rpm --force -iv /tmp/jre-7u80-linux-x64.rpm') } version: '6',
it { is_expected.to contain_exec('Install Oracle java_se jre 7').that_requires('Archive[/tmp/jre-7u80-linux-x64.rpm]') } java_se: 'jdk',
end basedir: '/usr/java',
package_type: 'tar.gz',
}
end
let(:title) { 'jdk6' }
context 'select Oracle Java SE 8 JRE' do it { is_expected.to contain_archive('/tmp/jdk-6u45-linux-x64.tar.gz') }
let(:params) { {:ensure => 'present', :version => '8', :java_se => 'jre'} } it { is_expected.to contain_exec('Install Oracle java_se jdk 6 6u45 b06').with_command('tar -zxf /tmp/jdk-6u45-linux-x64.tar.gz -C /usr/java') }
let :title do 'jre8' end it { is_expected.to contain_exec('Install Oracle java_se jdk 6 6u45 b06').that_requires('Archive[/tmp/jdk-6u45-linux-x64.tar.gz]') }
it { is_expected.to contain_archive('/tmp/jre-8u131-linux-x64.rpm')}
it { is_expected.to contain_exec('Install Oracle java_se jre 8').with_command('rpm --force -iv /tmp/jre-8u131-linux-x64.rpm') }
it { is_expected.to contain_exec('Install Oracle java_se jre 8').that_requires('Archive[/tmp/jre-8u131-linux-x64.rpm]') }
end end
context 'when manage_basedir is set to true' do
let(:params) do
{
ensure: 'present',
version: '6',
java_se: 'jdk',
basedir: '/usr/java',
manage_basedir: true,
}
end
let(:title) { 'jdk6' }
context 'Pass URL to url parameter' do it { is_expected.to contain_file('/usr/java') }
let(:params) { {
:ensure => 'present',
:version_major => '8u131',
:version_minor => 'b11',
:java_se => 'jdk',
:url => 'http://download.oracle.com/otn-pub/java/jdk/8u131-b11/d54c1d3a095b4ff2b6607d096fa80163/jdk-8u131-linux-x64.rpm',
:url_hash => 'ignored',
} }
let :title do 'jdk8' end
it { is_expected.to contain_archive('/tmp/jdk-8u131-linux-x64.rpm').with_source('http://download.oracle.com/otn-pub/java/jdk/8u131-b11/d54c1d3a095b4ff2b6607d096fa80163/jdk-8u131-linux-x64.rpm') }
end end
context 'when manage_symlink is set to true' do
let(:params) do
{
ensure: 'present',
version: '6',
java_se: 'jdk',
basedir: '/usr/java',
manage_symlink: true,
symlink_name: 'java_home',
}
end
let(:title) { 'jdk6' }
context 'Pass a hash to url_hash parameter' do it { is_expected.to contain_file('/usr/java/java_home') }
let(:params) { {
:ensure => 'present',
:version_major => '8u131',
:version_minor => 'b11',
:java_se => 'jdk',
:url_hash => 'abcdef01234567890',
} }
let :title do 'jdk8' end
it { is_expected.to contain_archive('/tmp/jdk-8u131-linux-x64.rpm').with_source('http://download.oracle.com/otn-pub/java/jdk//8u131-b11/abcdef01234567890/jdk-8u131-linux-x64.rpm') }
end end
end end
context 'On CentOS 32-bit' do context 'when on CentOS 32-bit' do
let(:facts) { {:kernel => 'Linux', :os => { :family => 'RedHat', :architecture => 'i386', :name => 'CentOS', :release => { :full => '6.6' } } } } let(:facts) { { kernel: 'Linux', os: { family: 'RedHat', architecture: 'i386', name: 'CentOS', release: { full: '6.6' } } } }
context 'select Oracle Java SE 6 JDK on RedHat family, 32-bit' do context 'when selecting Oracle Java SE 6 JDK on RedHat family, 32-bit' do
let(:params) { {:ensure => 'present', :version => '6', :java_se => 'jdk'} } let(:params) { { ensure: 'present', version: '6', java_se: 'jdk' } }
let :title do 'jdk6' end let(:title) { 'jdk6' }
it { is_expected.to contain_archive('/tmp/jdk-6u45-linux-i586-rpm.bin')}
it { is_expected.to contain_exec('Install Oracle java_se jdk 6').with_command('sh /tmp/jdk-6u45-linux-i586-rpm.bin -x; rpm --force -iv sun*.rpm; rpm --force -iv jdk*.rpm') } it { is_expected.to contain_archive('/tmp/jdk-6u45-linux-i586-rpm.bin') }
it { is_expected.to contain_exec('Install Oracle java_se jdk 6').that_requires('Archive[/tmp/jdk-6u45-linux-i586-rpm.bin]') } it { is_expected.to contain_exec('Install Oracle java_se jdk 6 6u45 b06').with_command('sh /tmp/jdk-6u45-linux-i586-rpm.bin -x; rpm --force -iv sun*.rpm; rpm --force -iv jdk*.rpm') }
it { is_expected.to contain_exec('Install Oracle java_se jdk 6 6u45 b06').that_requires('Archive[/tmp/jdk-6u45-linux-i586-rpm.bin]') }
end end
context 'select Oracle Java SE 7 JDK on RedHat family, 32-bit' do context 'when selecting Oracle Java SE 7 JDK on RedHat family, 32-bit' do
let(:params) { {:ensure => 'present', :version => '7', :java_se => 'jdk'} } let(:params) { { ensure: 'present', version: '7', java_se: 'jdk' } }
let :title do 'jdk7' end let(:title) { 'jdk7' }
it { is_expected.to contain_archive('/tmp/jdk-7u80-linux-i586.rpm')}
it { is_expected.to contain_exec('Install Oracle java_se jdk 7').with_command('rpm --force -iv /tmp/jdk-7u80-linux-i586.rpm') } it { is_expected.to contain_archive('/tmp/jdk-7u80-linux-i586.rpm') }
it { is_expected.to contain_exec('Install Oracle java_se jdk 7').that_requires('Archive[/tmp/jdk-7u80-linux-i586.rpm]') } it { is_expected.to contain_exec('Install Oracle java_se jdk 7 7u80 b15').with_command('rpm --force -iv /tmp/jdk-7u80-linux-i586.rpm') }
it { is_expected.to contain_exec('Install Oracle java_se jdk 7 7u80 b15').that_requires('Archive[/tmp/jdk-7u80-linux-i586.rpm]') }
end end
context 'select Oracle Java SE 8 JDK on RedHat family, 32-bit' do context 'when selecting Oracle Java SE 8 JDK on RedHat family, 32-bit' do
let(:params) { {:ensure => 'present', :version => '8', :java_se => 'jdk'} } let(:params) { { ensure: 'present', version: '8', java_se: 'jdk' } }
let :title do 'jdk8' end let(:title) { 'jdk8' }
it { is_expected.to contain_archive('/tmp/jdk-8u131-linux-i586.rpm')}
it { is_expected.to contain_exec('Install Oracle java_se jdk 8').with_command('rpm --force -iv /tmp/jdk-8u131-linux-i586.rpm') } it { is_expected.to contain_archive('/tmp/jdk-8u201-linux-i586.rpm') }
it { is_expected.to contain_exec('Install Oracle java_se jdk 8').that_requires('Archive[/tmp/jdk-8u131-linux-i586.rpm]') } it { is_expected.to contain_exec('Install Oracle java_se jdk 8 8u201 b09').with_command('rpm --force -iv /tmp/jdk-8u201-linux-i586.rpm') }
it { is_expected.to contain_exec('Install Oracle java_se jdk 8 8u201 b09').that_requires('Archive[/tmp/jdk-8u201-linux-i586.rpm]') }
end end
context 'select Oracle Java SE 6 JRE on RedHat family, 32-bit' do context 'when selecting Oracle Java SE 6 JRE on RedHat family, 32-bit' do
let(:params) { {:ensure => 'present', :version => '6', :java_se => 'jre'} } let(:params) { { ensure: 'present', version: '6', java_se: 'jre' } }
let :title do 'jdk6' end let(:title) { 'jdk6' }
it { is_expected.to contain_archive('/tmp/jre-6u45-linux-i586-rpm.bin')}
it { is_expected.to contain_exec('Install Oracle java_se jre 6').with_command('sh /tmp/jre-6u45-linux-i586-rpm.bin -x; rpm --force -iv sun*.rpm; rpm --force -iv jre*.rpm') } it { is_expected.to contain_archive('/tmp/jre-6u45-linux-i586-rpm.bin') }
it { is_expected.to contain_exec('Install Oracle java_se jre 6').that_requires('Archive[/tmp/jre-6u45-linux-i586-rpm.bin]') } it { is_expected.to contain_exec('Install Oracle java_se jre 6 6u45 b06').with_command('sh /tmp/jre-6u45-linux-i586-rpm.bin -x; rpm --force -iv sun*.rpm; rpm --force -iv jre*.rpm') }
it { is_expected.to contain_exec('Install Oracle java_se jre 6 6u45 b06').that_requires('Archive[/tmp/jre-6u45-linux-i586-rpm.bin]') }
end end
context 'select Oracle Java SE 7 JRE on RedHat family, 32-bit' do context 'when select Oracle Java SE 7 JRE on RedHat family, 32-bit' do
let(:params) { {:ensure => 'present', :version => '7', :java_se => 'jre'} } let(:params) { { ensure: 'present', version: '7', java_se: 'jre' } }
let :title do 'jdk7' end let(:title) { 'jdk7' }
it { is_expected.to contain_archive('/tmp/jre-7u80-linux-i586.rpm')}
it { is_expected.to contain_exec('Install Oracle java_se jre 7').with_command('rpm --force -iv /tmp/jre-7u80-linux-i586.rpm') } it { is_expected.to contain_archive('/tmp/jre-7u80-linux-i586.rpm') }
it { is_expected.to contain_exec('Install Oracle java_se jre 7').that_requires('Archive[/tmp/jre-7u80-linux-i586.rpm]') } it { is_expected.to contain_exec('Install Oracle java_se jre 7 7u80 b15').with_command('rpm --force -iv /tmp/jre-7u80-linux-i586.rpm') }
it { is_expected.to contain_exec('Install Oracle java_se jre 7 7u80 b15').that_requires('Archive[/tmp/jre-7u80-linux-i586.rpm]') }
end end
context 'select Oracle Java SE 8 JRE on RedHat family, 32-bit' do context 'when select Oracle Java SE 8 JRE on RedHat family, 32-bit' do
let(:params) { {:ensure => 'present', :version => '8', :java_se => 'jre'} } let(:params) { { ensure: 'present', version: '8', java_se: 'jre' } }
let :title do 'jdk8' end let(:title) { 'jdk8' }
it { is_expected.to contain_archive('/tmp/jre-8u131-linux-i586.rpm')}
it { is_expected.to contain_exec('Install Oracle java_se jre 8').with_command('rpm --force -iv /tmp/jre-8u131-linux-i586.rpm') } it { is_expected.to contain_archive('/tmp/jre-8u201-linux-i586.rpm') }
it { is_expected.to contain_exec('Install Oracle java_se jre 8').that_requires('Archive[/tmp/jre-8u131-linux-i586.rpm]') } it { is_expected.to contain_exec('Install Oracle java_se jre 8 8u201 b09').with_command('rpm --force -iv /tmp/jre-8u201-linux-i586.rpm') }
it { is_expected.to contain_exec('Install Oracle java_se jre 8 8u201 b09').that_requires('Archive[/tmp/jre-8u201-linux-i586.rpm]') }
end
context 'when installing multiple versions' do
let(:params) do
{
ensure: 'present',
version_major: '8u201',
version_minor: 'b09',
java_se: 'jdk',
url_hash: '42970487e3af4f5aa5bca3f542482c60',
}
end
let(:title) { 'jdk8' }
let(:pre_condition) do
<<-EOL
java::oracle {
'jdk8121':
ensure => 'present',
version_major => '8u121',
version_minor => 'b13',
java_se => 'jdk',
url_hash => 'abcdef01234567890',
}
EOL
end
it { is_expected.to compile }
end
context 'when installing Oracle Java SE 6 JRE with JCE' do
let(:params) { { ensure: 'present', jce: true, version: '6', version_major: '6u99', version_minor: '99', java_se: 'jre' } }
let(:title) { 'jre6jce' }
it do
is_expected.to contain_archive('/tmp/jce-6.zip').with_source('http://download.oracle.com/otn-pub/java/jce_policy/6/jce_policy-6.zip')
is_expected.to contain_archive('/tmp/jce-6.zip').with_extract_path('/usr/java/jre1.6.0_99-amd64/lib/security')
end
end
context 'when installing Oracle Java SE 6 JDK with JCE' do
let(:params) { { ensure: 'present', jce: true, version: '6', version_major: '6u99', version_minor: '99', java_se: 'jdk' } }
let(:title) { 'jre6jce' }
it do
is_expected.to contain_archive('/tmp/jce-6.zip').with_source('http://download.oracle.com/otn-pub/java/jce_policy/6/jce_policy-6.zip')
is_expected.to contain_archive('/tmp/jce-6.zip').with_extract_path('/usr/java/jdk1.6.0_99-amd64/jre/lib/security')
end
end end
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 Oracle Java SE 6 JDK' do
let(:params) { { ensure: 'present', version: '6', java_se: 'jdk' } }
let(:title) { 'jdk6' }
it { is_expected.to contain_archive('/tmp/jdk-6u45-linux-x64.tar.gz') }
it { is_expected.to contain_exec('Install Oracle java_se jdk 6 6u45 b06').with_command('tar -zxf /tmp/jdk-6u45-linux-x64.tar.gz -C /usr/lib/jvm') }
it { is_expected.to contain_exec('Install Oracle java_se jdk 6 6u45 b06').that_requires('Archive[/tmp/jdk-6u45-linux-x64.tar.gz]') }
end
context 'with Oracle Java SE 7 JDK' do
let(:params) { { ensure: 'present', version: '7', java_se: 'jdk' } }
let(:title) { 'jdk7' }
it { is_expected.to contain_archive('/tmp/jdk-7u80-linux-x64.tar.gz') }
it { is_expected.to contain_exec('Install Oracle java_se jdk 7 7u80 b15').with_command('tar -zxf /tmp/jdk-7u80-linux-x64.tar.gz -C /usr/lib/jvm') }
it { is_expected.to contain_exec('Install Oracle java_se jdk 7 7u80 b15').that_requires('Archive[/tmp/jdk-7u80-linux-x64.tar.gz]') }
end
context 'with Oracle Java SE 8 JDK' do
let(:params) { { ensure: 'present', version: '8', java_se: 'jdk' } }
let(:title) { 'jdk8' }
it { is_expected.to contain_archive('/tmp/jdk-8u201-linux-x64.tar.gz') }
it { is_expected.to contain_exec('Install Oracle java_se jdk 8 8u201 b09').with_command('tar -zxf /tmp/jdk-8u201-linux-x64.tar.gz -C /usr/lib/jvm') }
it { is_expected.to contain_exec('Install Oracle java_se jdk 8 8u201 b09').that_requires('Archive[/tmp/jdk-8u201-linux-x64.tar.gz]') }
end
context 'with Oracle Java SE 6 JRE' do
let(:params) { { ensure: 'present', version: '6', java_se: 'jre' } }
let(:title) { 'jre6' }
it { is_expected.to contain_archive('/tmp/jre-6u45-linux-x64.tar.gz') }
it { is_expected.to contain_exec('Install Oracle java_se jre 6 6u45 b06').with_command('tar -zxf /tmp/jre-6u45-linux-x64.tar.gz -C /usr/lib/jvm') }
it { is_expected.to contain_exec('Install Oracle java_se jre 6 6u45 b06').that_requires('Archive[/tmp/jre-6u45-linux-x64.tar.gz]') }
end
context 'when Oracle Java SE 7 JRE' do
let(:params) { { ensure: 'present', version: '7', java_se: 'jre' } }
let(:title) { 'jre7' }
it { is_expected.to contain_archive('/tmp/jre-7u80-linux-x64.tar.gz') }
it { is_expected.to contain_exec('Install Oracle java_se jre 7 7u80 b15').with_command('tar -zxf /tmp/jre-7u80-linux-x64.tar.gz -C /usr/lib/jvm') }
it { is_expected.to contain_exec('Install Oracle java_se jre 7 7u80 b15').that_requires('Archive[/tmp/jre-7u80-linux-x64.tar.gz]') }
end
context 'when Oracle Java SE 8 JRE' do
let(:params) { { ensure: 'present', version: '8', java_se: 'jre' } }
let(:title) { 'jre8' }
it { is_expected.to contain_archive('/tmp/jre-8u201-linux-x64.tar.gz') }
it { is_expected.to contain_exec('Install Oracle java_se jre 8 8u201 b09').with_command('tar -zxf /tmp/jre-8u201-linux-x64.tar.gz -C /usr/lib/jvm') }
it { is_expected.to contain_exec('Install Oracle java_se jre 8 8u201 b09').that_requires('Archive[/tmp/jre-8u201-linux-x64.tar.gz]') }
end
context 'when passing URL to url parameter' do
let(:params) { { ensure: 'present', version_major: '8u201', version_minor: 'b09', java_se: 'jdk', url: oracle_url.to_s } }
let(:title) { 'jdk8' }
it { is_expected.to contain_archive('/tmp/jdk-8u201-linux-x64.tar.gz') }
end
context 'when installing multiple versions' do
let(:params) do
{
ensure: 'present',
version_major: '8u201',
version_minor: 'b09',
java_se: 'jdk',
url_hash: '42970487e3af4f5aa5bca3f542482c60',
}
end
let(:title) { 'jdk8' }
let(:pre_condition) do
<<-EOL
java::oracle {
'jdk8121':
ensure => 'present',
version_major => '8u121',
version_minor => 'b13',
java_se => 'jdk',
url_hash => 'abcdef01234567890',
}
EOL
end
it { is_expected.to compile }
end
context 'when installing Oracle Java SE 6 JRE with JCE' do
let(:params) { { ensure: 'present', jce: true, version: '6', version_major: '6u99', version_minor: '99', java_se: 'jre' } }
let(:title) { 'jre6jce' }
it do
is_expected.to contain_archive('/tmp/jce-6.zip').with_source('http://download.oracle.com/otn-pub/java/jce_policy/6/jce_policy-6.zip')
is_expected.to contain_archive('/tmp/jce-6.zip').with_extract_path('/usr/lib/jvm/jre1.6.0_99/lib/security')
end
end
context 'when installing Oracle Java SE 6 JDK with JCE' do
let(:params) { { ensure: 'present', jce: true, version: '6', version_major: '6u99', version_minor: '99', java_se: 'jdk' } }
let(:title) { 'jre6jce' }
it do
is_expected.to contain_archive('/tmp/jce-6.zip').with_source('http://download.oracle.com/otn-pub/java/jce_policy/6/jce_policy-6.zip')
is_expected.to contain_archive('/tmp/jce-6.zip').with_extract_path('/usr/lib/jvm/jdk1.6.0_99/jre/lib/security')
end
end
end
describe 'incompatible OSes' do describe 'incompatible OSes' do
[ [
{ {
# C14706 kernel: 'Windows',
:kernel => 'Windows', os: {
:os => { family: 'Windows',
:family => 'Windows', name: 'Windows',
:name => 'Windows', release: {
:release => { full: '8.1',
:full => '8.1' },
}
}, },
}, },
{ {
# C14707 kernel: 'Darwin',
:kernel => 'Darwin', os: {
:os => { family: 'Darwin',
:family => 'Darwin', name: 'Darwin',
:name => 'Darwin', release: {
:release => { full: '13.3.0',
:full => '13.3.0' },
}
}, },
}, },
{ {
# C14708 kernel: 'AIX',
:kernel => 'AIX', os: {
:os => { family: 'AIX',
:family => 'AIX', name: 'AIX',
:name => 'AIX', release: {
:release => { full: '7100-02-00-000',
:full => '7100-02-00-000' },
}
}, },
}, },
{ {
# C14709 kernel: 'AIX',
:kernel => 'AIX', os: {
:os => { family: 'AIX',
:family => 'AIX', name: 'AIX',
:name => 'AIX', release: {
:release => { full: '6100-07-04-1216',
:full => '6100-07-04-1216' },
}
}, },
}, },
{ {
# C14710 kernel: 'AIX',
:kernel => 'AIX', os: {
:os => { family: 'AIX',
:family => 'AIX', name: 'AIX',
:name => 'AIX', release: {
:release => { full: '5300-12-01-1016',
:full => '5300-12-01-1016' },
}
}, },
} },
].each do |facts| ].each do |facts|
let(:facts) { facts } let(:facts) { facts }
let :title do 'jdk' end let(:title) { 'jdk' }
it "is_expected.to fail on #{facts[:os][:name]} #{facts[:os][:release][:full]}" do it "is_expected.to fail on #{facts[:os][:name]} #{facts[:os][:release][:full]}" do
expect { catalogue }.to raise_error Puppet::Error, /unsupported platform/ expect { catalogue }.to raise_error Puppet::Error, %r{unsupported platform}
end end
end end
end end

View File

@@ -1,8 +1,52 @@
#This file is generated by ModuleSync, do not edit. RSpec.configure do |c|
require 'puppetlabs_spec_helper/module_spec_helper' c.mock_with :rspec
# put local configuration and setup into spec_helper_local
begin
require 'spec_helper_local'
rescue LoadError
end end
require 'puppetlabs_spec_helper/module_spec_helper'
require 'rspec-puppet-facts'
require 'spec_helper_local' if File.file?(File.join(File.dirname(__FILE__), 'spec_helper_local.rb'))
include RspecPuppetFacts
default_facts = {
puppetversion: Puppet.version,
facterversion: Facter.version,
}
default_fact_files = [
File.expand_path(File.join(File.dirname(__FILE__), 'default_facts.yml')),
File.expand_path(File.join(File.dirname(__FILE__), 'default_module_facts.yml')),
]
default_fact_files.each do |f|
next unless File.exist?(f) && File.readable?(f) && File.size?(f)
begin
default_facts.merge!(YAML.safe_load(File.read(f), [], [], true))
rescue => e
RSpec.configuration.reporter.message "WARNING: Unable to load #{f}: #{e}"
end
end
RSpec.configure do |c|
c.default_facts = default_facts
c.before :each do
# set to strictest setting for testing
# by default Puppet runs at warning level
Puppet.settings[:strict] = :warning
end
c.filter_run_excluding(bolt: true) unless ENV['GEM_BOLT']
c.after(:suite) do
RSpec::Puppet::Coverage.report!(0)
end
end
def ensure_module_defined(module_name)
module_name.split('::').reduce(Object) do |last_module, next_module|
last_module.const_set(next_module, Module.new) unless last_module.const_defined?(next_module, false)
last_module.const_get(next_module, false)
end
end
# 'spec_overrides' from sync.yml will appear below this line

View File

@@ -1,16 +1,19 @@
require 'beaker-pe'
require 'beaker-puppet'
require 'beaker-rspec' require 'beaker-rspec'
require 'beaker/puppet_install_helper' require 'beaker/puppet_install_helper'
require 'beaker/module_install_helper' require 'beaker/module_install_helper'
run_puppet_install_helper run_puppet_install_helper
configure_type_defaults_on(hosts)
install_module_on(hosts) install_module_on(hosts)
install_module_dependencies_on(hosts) install_module_dependencies_on(hosts)
UNSUPPORTED_PLATFORMS = [ "Darwin", "windows" ] UNSUPPORTED_PLATFORMS = ['Darwin', 'windows'].freeze
unless ENV["RS_PROVISION"] == "no" or ENV["BEAKER_provision"] == "no" unless ENV['RS_PROVISION'] == 'no' || ENV['BEAKER_provision'] == 'no'
hosts.each do |host| hosts.each do |host|
install_puppet_module_via_pmt_on(host, {module_name: 'puppetlabs-apt'}) install_puppet_module_via_pmt_on(host, module_name: 'puppetlabs-apt')
end end
end end
@@ -18,3 +21,17 @@ RSpec.configure do |c|
# Readable test descriptions # Readable test descriptions
c.formatter = :documentation c.formatter = :documentation
end end
def idempotent_apply(hosts, manifest, opts = {}, &block)
block_on hosts, opts do |host|
file_path = host.tmpfile('apply_manifest.pp')
create_remote_file(host, file_path, manifest + "\n")
puppet_apply_opts = { :verbose => nil, 'detailed-exitcodes' => nil }
on_options = { acceptable_exit_codes: [0, 2] }
on host, puppet('apply', file_path, puppet_apply_opts), on_options, &block
puppet_apply_opts2 = { :verbose => nil, 'detailed-exitcodes' => nil }
on_options2 = { acceptable_exit_codes: [0] }
on host, puppet('apply', file_path, puppet_apply_opts2), on_options2, &block
end
end

28
spec/spec_helper_local.rb Normal file
View File

@@ -0,0 +1,28 @@
if ENV['COVERAGE'] == 'yes'
require 'simplecov'
require 'simplecov-console'
require 'codecov'
SimpleCov.formatters = [
SimpleCov::Formatter::HTMLFormatter,
SimpleCov::Formatter::Console,
SimpleCov::Formatter::Codecov,
]
SimpleCov.start do
track_files 'lib/**/*.rb'
add_filter '/spec'
# do not track vendored files
add_filter '/vendor'
add_filter '/.vendor'
# do not track gitignored files
# this adds about 4 seconds to the coverage check
# this could definitely be optimized
add_filter do |f|
# system returns true if exit status is 0, which with git-check-ignore means file is ignored
system("git check-ignore --quiet #{f.filename}")
end
end
end

View File

@@ -1,49 +1,54 @@
require "spec_helper" require 'spec_helper'
describe Facter::Util::Fact do java_7_path = '/usr/lib/jvm/java-7-openjdk-amd64/jre/bin/java'
before { java_7_home = '/usr/lib/jvm/java-7-openjdk-amd64'
java_8_path = '/usr/lib/jvm/oracle-java8-jre-amd64/bin/java'
java_8_home = '/usr/lib/jvm/oracle-java8-jre-amd64'
def unlink_and_delete(filename)
if File.symlink?(filename)
File.unlink(filename)
end
return unless File.exist?(filename)
File.delete(filename)
end
def symlink_and_test(symlink_path, java_home)
File.symlink(symlink_path, './java_test')
expect(Facter::Util::Resolution).to receive(:which).with('java').and_return('./java_test')
expect(File).to receive(:realpath).with('./java_test').and_return(symlink_path)
expect(Facter.value(:java_default_home)).to eql java_home
end
describe 'java_default_home' do
before(:each) do
Facter.clear Facter.clear
Facter.fact(:kernel).stubs(:value).returns('Linux') allow(Facter.fact(:kernel)).to receive(:value).once.and_return('Linux')
} end
describe "java_default_home" do context 'when java found in PATH' do
context 'returns java home path when readlink present' do context 'when java is in /usr/lib/jvm/java-7-openjdk-amd64/jre/bin/java' do
context 'when java is in HOME/jre/bin/java' do
it do
java_path_output = <<-EOS
/usr/lib/jvm/java-7-openjdk-amd64/jre/bin/java
EOS
Facter::Util::Resolution.expects(:which).with("readlink").returns(true)
Facter::Util::Resolution.expects(:exec).with("readlink -e /usr/bin/java").returns(java_path_output)
expect(Facter.value(:java_default_home)).to eql "/usr/lib/jvm/java-7-openjdk-amd64"
end
end
context 'when java is in HOME/bin/java' do
it do
java_path_output = <<-EOS
/usr/lib/jvm/oracle-java8-jre-amd64/bin/java
EOS
Facter::Util::Resolution.expects(:which).with("readlink").returns(true)
Facter::Util::Resolution.expects(:exec).with("readlink -e /usr/bin/java").returns(java_path_output)
expect(Facter.value(:java_default_home)).to eql "/usr/lib/jvm/oracle-java8-jre-amd64"
end
end
end
context 'returns nil when readlink is present but java is not' do
it do it do
java_path_output = "" unlink_and_delete('./java_test')
Facter::Util::Resolution.expects(:which).with("readlink").returns(true) symlink_and_test(java_7_path, java_7_home)
Facter::Util::Resolution.expects(:exec).with("readlink -e /usr/bin/java").returns(java_path_output) unlink_and_delete('./java_test')
expect(Facter.value(:java_default_home)).to be_nil
end end
end end
context 'returns nil when readlink not present' do context 'when java is in /usr/lib/jvm/oracle-java8-jre-amd64/bin/java' do
it do it do
Facter::Util::Resolution.stubs(:exec) unlink_and_delete('./java_test')
Facter::Util::Resolution.expects(:which).with("readlink").at_least(1).returns(false) symlink_and_test(java_8_path, java_8_home)
expect(Facter.value(:java_default_home)).to be_nil unlink_and_delete('./java_test')
end end
end end
end end
context 'when java not present, return nil' do
it do
allow(Facter::Util::Resolution).to receive(:exec) # Catch all other calls
expect(Facter::Util::Resolution).to receive(:which).with('java').at_least(1).and_return(nil)
expect(Facter.value(:java_default_home)).to be_nil
end
end
end end

View File

@@ -1,21 +1,25 @@
require "spec_helper" require 'spec_helper'
describe Facter::Util::Fact do describe 'java_libjvm_path' do
before { let(:java_default_home) { '/usr/lib/jvm/java-8-openjdk-amd64' }
before(:each) do
Facter.clear Facter.clear
Facter.fact(:kernel).stubs(:value).returns('Linux') allow(Facter.fact(:kernel)).to receive(:value).once.and_return('Linux')
java_default_home = '/usr/lib/jvm/java-8-openjdk-amd64' allow(Facter.fact(:java_default_home)).to receive(:value).once.and_return(java_default_home)
Facter.fact(:java_default_home).stubs(:value).returns(java_default_home) end
Dir.stubs(:glob).with("#{java_default_home}/jre/lib/**/libjvm.so").returns( ['/usr/lib/jvm/java-8-openjdk-amd64/jre/lib/amd64/server/libjvm.so'])
}
describe "java_libjvm_path" do context 'when libjvm exists' do
context 'returns libjvm path' do it do
context 'on Linux' do 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'])
it do expect(Facter.value(:java_libjvm_path)).to eql '/usr/lib/jvm/java-8-openjdk-amd64/jre/lib/amd64/server'
expect(Facter.value(:java_libjvm_path)).to eql "/usr/lib/jvm/java-8-openjdk-amd64/jre/lib/amd64/server" end
end end
end
context 'when libjvm does not exist' do
it do
allow(Dir).to receive(:glob).with("#{java_default_home}/jre/lib/**/libjvm.so").and_return([])
expect(Facter.value(:java_libjvm_path)).to be nil
end end
end end
end end

View File

@@ -1,27 +1,25 @@
require "spec_helper" require 'spec_helper'
describe Facter::Util::Fact do describe 'java_major_version' do
before { before(:each) do
Facter.clear Facter.clear
} end
describe "java_major_version" do context 'when java_version fact present, returns major version' do
context 'returns major version when java_version fact present' do before :each do
before :each do allow(Facter.fact(:java_version)).to receive(:value).and_return('1.7.0_71')
Facter.fact(:java_version).stubs(:value).returns('1.7.0_71')
end
it do
expect(Facter.fact(:java_major_version).value).to eq("7")
end
end end
it do
expect(Facter.fact(:java_major_version).value).to eq('7')
end
end
context 'returns nil when java not present' do context 'when java not present, returns nil' do
before :each do before :each do
Facter.fact(:java_version).stubs(:value).returns(nil) allow(Facter.fact(:java_version)).to receive(:value).and_return('nil')
end end
it do it do
expect(Facter.fact(:java_major_version).value).to be_nil expect(Facter.fact(:java_major_version).value).to be_nil
end
end end
end end
end end

View File

@@ -1,31 +1,25 @@
require "spec_helper" require 'spec_helper'
describe Facter::Util::Fact do describe 'java_patch_level' do
before { before(:each) do
Facter.clear Facter.clear
} end
describe "java_patch_level" do context 'when java is installed returns java patch version extracted from java_version fact' do
context "if java is installed" do before :each do
context 'returns java patch version extracted from java_version fact' do allow(Facter.fact(:java_version)).to receive(:value).and_return('1.7.0_71')
before :each do
Facter.fact(:java_version).stubs(:value).returns('1.7.0_71')
end
it do
expect(Facter.fact(:java_patch_level).value).to eq("71")
end
end
end end
it do
expect(Facter.fact(:java_patch_level).value).to eq('71')
end
end
context "if java is not installed" do context 'when java is not installed returns nil' do
context 'returns nil' do before :each do
before :each do allow(Facter.fact(:java_version)).to receive(:value).and_return('nil')
Facter.fact(:java_version).stubs(:value).returns(nil) end
end it do
it do expect(Facter.fact(:java_patch_level).value).to be_nil
expect(Facter.fact(:java_patch_level).value).to be_nil
end
end
end end
end end
end end

View File

@@ -1,91 +1,91 @@
require "spec_helper" require 'spec_helper'
describe Facter::Util::Fact do openjdk_7_output = "Picked up JAVA_TOOL_OPTIONS: -Djava.net.preferIPv4Stack=true\n"\
before { "openjdk version \"1.7.0_71\"\n"\
"OpenJDK Runtime Environment (build 1.7.0_71-b14)\n"\
"OpenJDK 64-Bit Server VM (build 24.71-b01, mixed mode)\n"
jdk_7_hotspot_output = "Picked up JAVA_TOOL_OPTIONS: -Djava.net.preferIPv4Stack=true\n"\
"java version \"1.7.0_71\"\n"\
"Java(TM) SE Runtime Environment (build 1.7.0_71-b14)\n"\
"Java HotSpot(TM) 64-Bit Server VM (build 24.71-b01, mixed mode)\n"
describe 'java_version' do
before(:each) do
Facter.clear Facter.clear
} end
describe "java_version" do context 'when java present, returns java version' do
context 'returns java version when java present' do context 'on OpenBSD', with_env: true do
context 'on OpenBSD', :with_env => true do before(:each) do
before do allow(Facter.fact(:operatingsystem)).to receive(:value).and_return('OpenBSD')
Facter.fact(:operatingsystem).stubs(:value).returns("OpenBSD")
end
let(:facts) { {:operatingsystem => 'OpenBSD'} }
it do
java_version_output = <<-EOS
openjdk version "1.7.0_71"
OpenJDK Runtime Environment (build 1.7.0_71-b14)
OpenJDK 64-Bit Server VM (build 24.71-b01, mixed mode)
EOS
Facter::Util::Resolution.expects(:which).with("java").returns('/usr/local/jdk-1.7.0/jre/bin/java')
Facter::Util::Resolution.expects(:exec).with("java -Xmx12m -version 2>&1").returns(java_version_output)
expect(Facter.value(:java_version)).to eq("1.7.0_71")
end
end end
context 'on Darwin' do let(:facts) { { operatingsystem: 'OpenBSD' } }
before do
Facter.fact(:operatingsystem).stubs(:value).returns("Darwin") it do
end expect(Facter::Util::Resolution).to receive(:which).with('java').and_return('/usr/local/jdk-1.7.0/jre/bin/java')
let(:facts) { {:operatingsystem => 'Darwin'} } expect(Facter::Util::Resolution).to receive(:exec).with('java -Xmx12m -version 2>&1').and_return(openjdk_7_output)
it do expect(Facter.value(:java_version)).to eq('1.7.0_71')
java_version_output = <<-EOS
java version "1.7.0_71"
Java(TM) SE Runtime Environment (build 1.7.0_71-b14)
Java HotSpot(TM) 64-Bit Server VM (build 24.71-b01, mixed mode)
EOS
Facter::Util::Resolution.expects(:exec).with("/usr/libexec/java_home --failfast 2>&1").returns("/Library/Java/JavaVirtualMachines/jdk1.7.0_71.jdk/Contents/Home")
Facter::Util::Resolution.expects(:exec).with("java -Xmx12m -version 2>&1").returns(java_version_output)
expect(Facter.value(:java_version)).to eql "1.7.0_71"
end
end
context 'on other systems' do
before do
Facter.fact(:operatingsystem).stubs(:value).returns("MyOS")
end
let(:facts) { {:operatingsystem => 'MyOS'} }
it do
java_version_output = <<-EOS
java version "1.7.0_71"
Java(TM) SE Runtime Environment (build 1.7.0_71-b14)
Java HotSpot(TM) 64-Bit Server VM (build 24.71-b01, mixed mode)
EOS
Facter::Util::Resolution.expects(:exec).with("java -Xmx12m -version 2>&1").returns(java_version_output)
expect(Facter.value(:java_version)).to eq("1.7.0_71")
end
end end
end end
context 'when on Darwin' do
before(:each) do
allow(Facter.fact(:operatingsystem)).to receive(:value).and_return('Darwin')
end
let(:facts) { { operatingsystem: 'Darwin' } }
context 'returns nil when java not present' do it do
context 'on OpenBSD', :with_env => true do expect(Facter::Util::Resolution).to receive(:exec).with('/usr/libexec/java_home --failfast 2>&1').and_return('/Library/Java/JavaVirtualMachines/jdk1.7.0_71.jdk/Contents/Home')
before do expect(Facter::Util::Resolution).to receive(:exec).with('java -Xmx12m -version 2>&1').and_return(jdk_7_hotspot_output)
Facter.fact(:operatingsystem).stubs(:value).returns("OpenBSD") expect(Facter.value(:java_version)).to eql '1.7.0_71'
end
let(:facts) { {:operatingsystem => 'OpenBSD'} }
it do
Facter::Util::Resolution.stubs(:exec)
expect(Facter.value(:java_version)).to be_nil
end
end end
context 'on Darwin' do end
before do context 'when on other systems' do
Facter.fact(:operatingsystem).stubs(:value).returns("Darwin") before(:each) do
end allow(Facter.fact(:operatingsystem)).to receive(:value).and_return('MyOS')
let(:facts) { {:operatingsystem => 'Darwin'} }
it do
Facter::Util::Resolution.expects(:exec).at_least(1).with("/usr/libexec/java_home --failfast 2>&1").returns('Unable to find any JVMs matching version "(null)".')
expect(Facter.value(:java_version)).to be_nil
end
end end
context 'on other systems' do let(:facts) { { operatingsystem: 'MyOS' } }
before do
Facter.fact(:operatingsystem).stubs(:value).returns("MyOS") it do
end expect(Facter::Util::Resolution).to receive(:which).with('java').and_return('/path/to/java')
let(:facts) { {:operatingsystem => 'MyOS'} } expect(Facter::Util::Resolution).to receive(:exec).with('java -Xmx12m -version 2>&1').and_return(jdk_7_hotspot_output)
it do expect(Facter.value(:java_version)).to eq('1.7.0_71')
Facter::Util::Resolution.expects(:which).at_least(1).with("java").returns(false) end
expect(Facter.value(:java_version)).to be_nil end
end end
context 'when java not present, returns nil' do
context 'on OpenBSD', with_env: true do
before(:each) do
allow(Facter.fact(:operatingsystem)).to receive(:value).and_return('OpenBSD')
end
let(:facts) { { operatingsystem: 'OpenBSD' } }
it do
allow(Facter::Util::Resolution).to receive(:exec) # Catch all other calls
expect(Facter.value(:java_version)).to be_nil
end
end
context 'when on Darwin' do
before(:each) do
allow(Facter.fact(:operatingsystem)).to receive(:value).and_return('Darwin')
end
let(:facts) { { operatingsystem: 'Darwin' } }
it do
expect(Facter::Util::Resolution).to receive(:exec).with('/usr/libexec/java_home --failfast 2>&1').at_least(1).and_return('Unable to find any JVMs matching version "(null)".')
expect(Facter.value(:java_version)).to be_nil
end
end
context 'when on other systems' do
before(:each) do
allow(Facter.fact(:operatingsystem)).to receive(:value).and_return('MyOS')
end
let(:facts) { { operatingsystem: 'MyOS' } }
it do
expect(Facter::Util::Resolution).to receive(:which).at_least(1).with('java').and_return(false)
expect(Facter.value(:java_version)).to be_nil
end end
end end
end end