diff --git a/.github/CONTRIBUTING.md b/.github/CONTRIBUTING.md
index 048d2b55..88093274 100644
--- a/.github/CONTRIBUTING.md
+++ b/.github/CONTRIBUTING.md
@@ -124,26 +124,36 @@ If you have Ruby 2.x or want a specific version of Puppet,
you must set an environment variable such as:
```sh
-export PUPPET_VERSION="~> 5.5.6"
+export PUPPET_GEM_VERSION="~> 6.1.0"
```
You can install all needed gems for spec tests into the modules directory by
running:
```sh
-bundle install --path .vendor/ --without development system_tests release --jobs "$(nproc)"
+bundle config set --local path '.vendor/'
+bundle config set --local without 'development system_tests release'
+bundle install --jobs "$(nproc)"
```
If you also want to run acceptance tests:
```sh
-bundle install --path .vendor/ --with system_tests --without development release --jobs "$(nproc)"
+bundle config set --local path '.vendor/'
+bundle config set --local without 'development release'
+bundle config set --local with 'system_tests'
+bundle install --jobs "$(nproc)"
```
Our all in one solution if you don't know if you need to install or update gems:
```sh
-bundle install --path .vendor/ --with system_tests --without development release --jobs "$(nproc)"; bundle update; bundle clean
+bundle config set --local path '.vendor/'
+bundle config set --local without 'development release'
+bundle config set --local with 'system_tests'
+bundle install --jobs "$(nproc)"
+bundle update
+bundle clean
```
As an alternative to the `--jobs "$(nproc)` parameter, you can set an
@@ -232,19 +242,21 @@ simple tests against it after applying the module. You can run this
with:
```sh
-BEAKER_setfile=debian10-x64 bundle exec rake beaker
+BEAKER_PUPPET_COLLECTION=puppet7 BEAKER_setfile=debian11-64 bundle exec rake beaker
```
-You can replace the string `debian10` with any common operating system.
+You can replace the string `debian11` with any common operating system.
The following strings are known to work:
-* ubuntu1604
-* ubuntu1804
* ubuntu2004
-* debian9
-* debian10
+* ubuntu2204
+* debian11
* centos7
* centos8
+* centos9
+* almalinux8
+* almalinux9
+* fedora36
For more information and tips & tricks, see [voxpupuli-acceptance's documentation](https://github.com/voxpupuli/voxpupuli-acceptance#running-tests).
diff --git a/.github/SECURITY.md b/.github/SECURITY.md
deleted file mode 100644
index cacadf22..00000000
--- a/.github/SECURITY.md
+++ /dev/null
@@ -1,3 +0,0 @@
-# Vox Pupuli Security Policy
-
-Our vulnerabilities reporting process is at https://voxpupuli.org/security/
diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml
index 1dadbe82..7216724f 100644
--- a/.github/workflows/ci.yml
+++ b/.github/workflows/ci.yml
@@ -4,85 +4,20 @@
name: CI
-on: pull_request
+on:
+ pull_request: {}
+ push:
+ branches:
+ - main
+ - master
-jobs:
- setup_matrix:
- name: 'Setup Test Matrix'
- runs-on: ubuntu-latest
- timeout-minutes: 40
- outputs:
- puppet_unit_test_matrix: ${{ steps.get-outputs.outputs.puppet_unit_test_matrix }}
- github_action_test_matrix: ${{ steps.get-outputs.outputs.github_action_test_matrix }}
- env:
- BUNDLE_WITHOUT: development:system_tests:release
- steps:
- - uses: actions/checkout@v2
- - name: Setup ruby
- uses: ruby/setup-ruby@v1
- with:
- ruby-version: '3.0'
- bundler-cache: true
- - name: Run static validations
- run: bundle exec rake validate lint check
- - name: Run rake rubocop
- run: bundle exec rake rubocop
- - name: Setup Test Matrix
- id: get-outputs
- run: bundle exec metadata2gha --use-fqdn --pidfile-workaround false
-
- unit:
- needs: setup_matrix
- runs-on: ubuntu-latest
- timeout-minutes: 40
- strategy:
- fail-fast: false
- matrix:
- include: ${{fromJson(needs.setup_matrix.outputs.puppet_unit_test_matrix)}}
- env:
- BUNDLE_WITHOUT: development:system_tests:release
- PUPPET_VERSION: "~> ${{ matrix.puppet }}.0"
- name: Puppet ${{ matrix.puppet }} (Ruby ${{ matrix.ruby }})
- steps:
- - uses: actions/checkout@v2
- - name: Setup ruby
- uses: ruby/setup-ruby@v1
- with:
- ruby-version: ${{ matrix.ruby }}
- bundler-cache: true
- - name: Run tests
- run: bundle exec rake parallel_spec
+concurrency:
+ group: ${{ github.ref_name }}
+ cancel-in-progress: true
- acceptance:
- needs: setup_matrix
- runs-on: ubuntu-latest
- env:
- LANG: en_US
- LC_ALL: en_US.UTF-8
- BUNDLE_WITHOUT: development:test:release
- strategy:
- fail-fast: false
- matrix:
- include: ${{fromJson(needs.setup_matrix.outputs.github_action_test_matrix)}}
- name: ${{ matrix.puppet.name }} - ${{ matrix.setfile.name }}
- steps:
- - uses: actions/checkout@v2
- - name: Setup ruby
- uses: ruby/setup-ruby@v1
- with:
- ruby-version: '3.0'
- bundler-cache: true
- - name: Run tests
- run: bundle exec rake beaker
- env:
- BEAKER_PUPPET_COLLECTION: ${{ matrix.puppet.collection }}
- BEAKER_setfile: ${{ matrix.setfile.value }}
-
- tests:
- needs:
- - unit
- - acceptance
- runs-on: ubuntu-latest
- name: Test suite
- steps:
- - run: echo Test suite completed
+jobs:
+ puppet:
+ name: Puppet
+ uses: voxpupuli/gha-puppet/.github/workflows/beaker.yml@v2
+ with:
+ pidfile_workaround: 'false'
diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml
index 664ba694..55324aa6 100644
--- a/.github/workflows/release.yml
+++ b/.github/workflows/release.yml
@@ -9,26 +9,14 @@ on:
tags:
- '*'
-env:
- BUNDLE_WITHOUT: development:test:system_tests
-
jobs:
- deploy:
- name: 'deploy to forge'
- runs-on: ubuntu-latest
- if: github.repository_owner == 'voxpupuli'
- steps:
- - name: Checkout repository
- uses: actions/checkout@v2
- - name: Setup Ruby
- uses: ruby/setup-ruby@v1
- with:
- ruby-version: '2.7'
- bundler-cache: true
- - name: Build and Deploy
- env:
- # Configure secrets here:
- # https://docs.github.com/en/free-pro-team@latest/actions/reference/encrypted-secrets
- BLACKSMITH_FORGE_USERNAME: '${{ secrets.PUPPET_FORGE_USERNAME }}'
- BLACKSMITH_FORGE_API_KEY: '${{ secrets.PUPPET_FORGE_API_KEY }}'
- run: bundle exec rake module:push
+ release:
+ name: Release
+ uses: voxpupuli/gha-puppet/.github/workflows/release.yml@v2
+ with:
+ allowed_owner: 'voxpupuli'
+ secrets:
+ # Configure secrets here:
+ # https://docs.github.com/en/actions/security-guides/encrypted-secrets
+ username: ${{ secrets.PUPPET_FORGE_USERNAME }}
+ api_key: ${{ secrets.PUPPET_FORGE_API_KEY }}
diff --git a/.gitignore b/.gitignore
index 9b95224c..adea1b01 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,23 +1,25 @@
# Managed by modulesync - DO NOT EDIT
# https://voxpupuli.org/docs/updating-files-managed-with-modulesync/
-pkg/
-Gemfile.lock
-Gemfile.local
-vendor/
-.vendor/
-spec/fixtures/manifests/
-spec/fixtures/modules/
-.vagrant/
-.bundle/
-.ruby-version
-coverage/
-log/
-.idea/
-.dependencies/
-.librarian/
-Puppetfile.lock
+/pkg/
+/Gemfile.lock
+/Gemfile.local
+/vendor/
+/.vendor/
+/spec/fixtures/manifests/
+/spec/fixtures/modules/
+/.vagrant/
+/.bundle/
+/.ruby-version
+/coverage/
+/log/
+/.idea/
+/.dependencies/
+/.librarian/
+/Puppetfile.lock
*.iml
.*.sw?
-.yardoc/
-Guardfile
+/.yardoc/
+/Guardfile
+bolt-debug.log
+.rerun.json
diff --git a/.msync.yml b/.msync.yml
index 43966c2f..28b61dcf 100644
--- a/.msync.yml
+++ b/.msync.yml
@@ -2,4 +2,4 @@
# Managed by modulesync - DO NOT EDIT
# https://voxpupuli.org/docs/updating-files-managed-with-modulesync/
-modulesync_config_version: '4.2.0'
+modulesync_config_version: '7.4.0'
diff --git a/.pmtignore b/.pmtignore
index 65f50514..10b98306 100644
--- a/.pmtignore
+++ b/.pmtignore
@@ -1,37 +1,38 @@
# Managed by modulesync - DO NOT EDIT
# https://voxpupuli.org/docs/updating-files-managed-with-modulesync/
-docs/
-pkg/
-Gemfile
-Gemfile.lock
-Gemfile.local
-vendor/
-.vendor/
-spec/
-Rakefile
-.vagrant/
-.bundle/
-.ruby-version
-coverage/
-log/
-.idea/
-.dependencies/
-.github/
-.librarian/
-Puppetfile.lock
+/docs/
+/pkg/
+/Gemfile
+/Gemfile.lock
+/Gemfile.local
+/vendor/
+/.vendor/
+/spec/
+/Rakefile
+/.vagrant/
+/.bundle/
+/.ruby-version
+/coverage/
+/log/
+/.idea/
+/.dependencies/
+/.github/
+/.librarian/
+/Puppetfile.lock
*.iml
-.editorconfig
-.fixtures.yml
-.gitignore
-.msync.yml
-.overcommit.yml
-.pmtignore
-.rspec
-.rspec_parallel
-.rubocop.yml
-.sync.yml
+/.editorconfig
+/.fixtures.yml
+/.gitignore
+/.msync.yml
+/.overcommit.yml
+/.pmtignore
+/.rspec
+/.rspec_parallel
+/.rubocop.yml
+/.sync.yml
.*.sw?
-.yardoc/
-.yardopts
-Dockerfile
+/.yardoc/
+/.yardopts
+/Dockerfile
+/HISTORY.md
diff --git a/.puppet-lint.rc b/.puppet-lint.rc
new file mode 100644
index 00000000..dd8272c7
--- /dev/null
+++ b/.puppet-lint.rc
@@ -0,0 +1,3 @@
+--fail-on-warnings
+--no-parameter_documentation-check
+--no-parameter_types-check
diff --git a/CHANGELOG.md b/CHANGELOG.md
index a33668e7..d573221f 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -4,6 +4,36 @@ All notable changes to this project will be documented in this file.
Each new release typically also includes the latest modulesync defaults.
These should not affect the functionality of the module.
+## [v6.0.0](https://github.com/voxpupuli/puppet-jira/tree/v6.0.0) (2024-02-13)
+
+[Full Changelog](https://github.com/voxpupuli/puppet-jira/compare/v5.1.0...v6.0.0)
+
+**Breaking changes:**
+
+- Drop Puppet 6 support [\#404](https://github.com/voxpupuli/puppet-jira/pull/404) ([bastelfreak](https://github.com/bastelfreak))
+
+**Implemented enhancements:**
+
+- Fix tests with modulesync 7.3.0; allow latest dependency versions [\#414](https://github.com/voxpupuli/puppet-jira/pull/414) ([h-haaks](https://github.com/h-haaks))
+- Add Puppet 8 support [\#408](https://github.com/voxpupuli/puppet-jira/pull/408) ([bastelfreak](https://github.com/bastelfreak))
+- Allow custom plugin installation and usage of JNDI database connections [\#389](https://github.com/voxpupuli/puppet-jira/pull/389) ([ThomasMinor](https://github.com/ThomasMinor))
+
+**Fixed bugs:**
+
+- Update setenv.sh.epp if statement to work with service desk [\#400](https://github.com/voxpupuli/puppet-jira/pull/400) ([techtino](https://github.com/techtino))
+- Avoid duplicate scheme declaration when using proxy with SSL [\#396](https://github.com/voxpupuli/puppet-jira/pull/396) ([jmcnatt](https://github.com/jmcnatt))
+
+**Closed issues:**
+
+- JVM\_OPENS not set for JIRA Java 17 support [\#412](https://github.com/voxpupuli/puppet-jira/issues/412)
+- cluster.properties.epp - soon to be deprecated code by Puppet 8 [\#411](https://github.com/voxpupuli/puppet-jira/issues/411)
+
+**Merged pull requests:**
+
+- Bugfix java 17 support per atlassian upstream [\#413](https://github.com/voxpupuli/puppet-jira/pull/413) ([valentino-aguiar-gsa](https://github.com/valentino-aguiar-gsa))
+- Remove legacy top-scope syntax [\#410](https://github.com/voxpupuli/puppet-jira/pull/410) ([smortex](https://github.com/smortex))
+- Allow up-to-date dependencies [\#393](https://github.com/voxpupuli/puppet-jira/pull/393) ([smortex](https://github.com/smortex))
+
## [v5.1.0](https://github.com/voxpupuli/puppet-jira/tree/v5.1.0) (2021-08-20)
[Full Changelog](https://github.com/voxpupuli/puppet-jira/compare/v5.0.1...v5.1.0)
@@ -379,7 +409,7 @@ This is the last release with Puppet 3 support!
- We added JIRA 7 Support
### Improvements
-- Use defined function to test for the existence of the fact ::jira_ver
+- Use defined function to test for the existence of the fact jira_ver
- Added hieradata examples for Oracle DB backend
- Added containment for mysql_connector class
- Support STRICT_VARIABLES=yes
diff --git a/Dockerfile b/Dockerfile
deleted file mode 100644
index e3cf307f..00000000
--- a/Dockerfile
+++ /dev/null
@@ -1,24 +0,0 @@
-# MANAGED BY MODULESYNC
-# https://voxpupuli.org/docs/updating-files-managed-with-modulesync/
-
-FROM ruby:2.7
-
-WORKDIR /opt/puppet
-
-# https://github.com/puppetlabs/puppet/blob/06ad255754a38f22fb3a22c7c4f1e2ce453d01cb/lib/puppet/provider/service/runit.rb#L39
-RUN mkdir -p /etc/sv
-
-ARG PUPPET_VERSION="~> 6.0"
-ARG PARALLEL_TEST_PROCESSORS=4
-
-# Cache gems
-COPY Gemfile .
-RUN bundle install --without system_tests development release --path=${BUNDLE_PATH:-vendor/bundle}
-
-COPY . .
-
-RUN bundle install
-RUN bundle exec rake release_checks
-
-# Container should not saved
-RUN exit 1
diff --git a/Gemfile b/Gemfile
index e43173e0..c03b7520 100644
--- a/Gemfile
+++ b/Gemfile
@@ -1,13 +1,13 @@
# Managed by modulesync - DO NOT EDIT
# https://voxpupuli.org/docs/updating-files-managed-with-modulesync/
-source ENV['GEM_SOURCE'] || "https://rubygems.org"
+source ENV['GEM_SOURCE'] || 'https://rubygems.org'
group :test do
- gem 'voxpupuli-test', '~> 2.5', :require => false
+ gem 'voxpupuli-test', '~> 7.0', :require => false
gem 'coveralls', :require => false
gem 'simplecov-console', :require => false
- gem 'puppet_metadata', '~> 1.0', :require => false
+ gem 'puppet_metadata', '~> 3.5', :require => false
gem 'puppet-lint-param-docs', :require => false
end
@@ -17,19 +17,17 @@ group :development do
end
group :system_tests do
- gem 'voxpupuli-acceptance', '~> 1.0', :require => false
+ gem 'voxpupuli-acceptance', '~> 3.0', :require => false
end
group :release do
- gem 'github_changelog_generator', '>= 1.16.1', :require => false if RUBY_VERSION >= '2.5'
- gem 'voxpupuli-release', '>= 1.0.2', :require => false
- gem 'puppet-strings', '>= 2.2', :require => false
+ gem 'voxpupuli-release', '~> 3.0', :require => false
end
gem 'rake', :require => false
gem 'facter', ENV['FACTER_GEM_VERSION'], :require => false, :groups => [:test]
-puppetversion = ENV['PUPPET_VERSION'] || '>= 6.0'
+puppetversion = ENV['PUPPET_GEM_VERSION'] || '~> 7.24'
gem 'puppet', puppetversion, :require => false, :groups => [:test]
# vim: syntax=ruby
diff --git a/HISTORY.md b/HISTORY.md
index d4186305..75d94d73 100644
--- a/HISTORY.md
+++ b/HISTORY.md
@@ -59,7 +59,7 @@ This is the last release with Puppet 3 support!
- We added JIRA 7 Support
### Improvements
-- Use defined function to test for the existence of the fact ::jira_ver
+- Use defined function to test for the existence of the fact jira_ver
- Added hieradata examples for Oracle DB backend
- Added containment for mysql_connector class
- Support STRICT_VARIABLES=yes
diff --git a/README.md b/README.md
index c01cd312..5be5471a 100644
--- a/README.md
+++ b/README.md
@@ -1,20 +1,20 @@
# JIRA module for Puppet
-[![Build Status](https://travis-ci.org/voxpupuli/puppet-jira.png?branch=master)](https://travis-ci.org/voxpupuli/puppet-jira)
+[![CI](https://github.com/voxpupuli/puppet-jira/actions/workflows/ci.yml/badge.svg)](https://github.com/voxpupuli/puppet-jira/actions/workflows/ci.yml)
[![Code Coverage](https://coveralls.io/repos/github/voxpupuli/puppet-jira/badge.svg?branch=master)](https://coveralls.io/github/voxpupuli/puppet-jira)
[![Puppet Forge](https://img.shields.io/puppetforge/v/puppet/jira.svg)](https://forge.puppetlabs.com/puppet/jira)
[![Puppet Forge - downloads](https://img.shields.io/puppetforge/dt/puppet/jira.svg)](https://forge.puppetlabs.com/puppet/jira)
[![Puppet Forge - endorsement](https://img.shields.io/puppetforge/e/puppet/jira.svg)](https://forge.puppetlabs.com/puppet/jira)
[![Puppet Forge - scores](https://img.shields.io/puppetforge/f/puppet/jira.svg)](https://forge.puppetlabs.com/puppet/jira)
-#### Table of Contents
+## Table of Contents
1. [Overview](#overview)
2. [Module Description - What the module does and why it is useful](#module-description)
3. [Setup - The basics of getting started with JIRA](#setup)
- * [JIRA Prerequisites](#JIRA-prerequisites)
- * [What JIRA affects](#what-JIRA-affects)
- * [Beginning with JIRA](#beginning-with-JIRA)
+ * [JIRA Prerequisites](#jira-prerequisites)
+ * [What JIRA affects](#what-jira-affects)
+ * [Beginning with JIRA](#beginning-with-jira)
* [Upgrades](#upgrades)
4. [Usage - Configuration options and additional functionality](#usage)
5. [Reference - An under-the-hood peek at what the module is doing and how](#reference)
@@ -247,6 +247,10 @@ Reverse proxy can be configured as a hash as part of the JIRA resource
},
```
+## Reference
+
+see [REFERENCE.md](REFERENCE.md)
+
## Limitations
* Puppet 6.1.0
@@ -274,18 +278,20 @@ Please feel free to raise any issues here for bug fixes. We also welcome feature
requests. Feel free to make a pull request for anything and we make the effort to
review and merge. We prefer with tests if possible.
-## Testing - How to test the JIRA module
+## Testing
+
+### How to test the JIRA module
Using [puppetlabs_spec_helper](https://github.com/puppetlabs/puppetlabs_spec_helper).
Simply run:
-```
+```shell
bundle install && bundle exec rake spec
```
to get results.
-```
+```shell
ruby -S rspec spec/classes/jira_install_spec.rb --color
.
@@ -298,7 +304,7 @@ Using [Beaker - Puppet Labs cloud enabled acceptance testing tool.](https://gith
The beaker tests will install oracle Java to /opt/java. When running the beaker
tests you agree that you accept the [oracle java license](http://www.oracle.com/technetwork/java/javase/terms/license/index.html).
-```
+```shell
bundle install
BEAKER_set=ubuntu-server-12042-x64 bundle exec rake beaker
BEAKER_set=ubuntu-server-1404-x64 bundle exec rake beaker
@@ -311,7 +317,7 @@ BEAKER_set=centos-64-x64-pe bundle exec rake beaker
To save build time it is useful to host the installation files locally on a web
server. You can use the download_url environment variable to overwrite the default.
-```bash
+```shell
export download_url="'http://my.local.server/'"
```
diff --git a/REFERENCE.md b/REFERENCE.md
index 43d7f705..1e468dd4 100644
--- a/REFERENCE.md
+++ b/REFERENCE.md
@@ -20,18 +20,15 @@
### Functions
-#### Public Functions
-
-
#### Private Functions
* `jira::sort_hash`: Sort a hash
### Data types
-* [`Jira::Jvm_types`](#jirajvm_types): Java Virtual Machine (JVM) types
-* [`Jira::Tomcat_attributes`](#jiratomcat_attributes): A hash of string keys to arbitrary values that will be rendered as XML attributes
-* [`Jira::Tomcat_connectors`](#jiratomcat_connectors): A set of attribute hashes keyed by connector port number
+* [`Jira::Jvm_types`](#Jira--Jvm_types): Java Virtual Machine (JVM) types
+* [`Jira::Tomcat_attributes`](#Jira--Tomcat_attributes): A hash of string keys to arbitrary values that will be rendered as XML attributes
+* [`Jira::Tomcat_connectors`](#Jira--Tomcat_connectors): A set of attribute hashes keyed by connector port number
## Classes
@@ -57,124 +54,126 @@
The following parameters are available in the `jira` class:
-* [`version`](#version)
-* [`product`](#product)
-* [`installdir`](#installdir)
-* [`homedir`](#homedir)
-* [`manage_user`](#manage_user)
-* [`user`](#user)
-* [`group`](#group)
-* [`installdir_owner`](#installdir_owner)
-* [`installdir_group`](#installdir_group)
-* [`installdir_mode`](#installdir_mode)
-* [`homedir_mode`](#homedir_mode)
-* [`uid`](#uid)
-* [`gid`](#gid)
-* [`shell`](#shell)
-* [`enable_secure_admin_sessions`](#enable_secure_admin_sessions)
-* [`jira_config_properties`](#jira_config_properties)
-* [`datacenter`](#datacenter)
-* [`shared_homedir`](#shared_homedir)
-* [`ehcache_listener_host`](#ehcache_listener_host)
-* [`ehcache_listener_port`](#ehcache_listener_port)
-* [`ehcache_object_port`](#ehcache_object_port)
-* [`db`](#db)
-* [`dbname`](#dbname)
-* [`dbuser`](#dbuser)
-* [`dbpassword`](#dbpassword)
-* [`dbserver`](#dbserver)
-* [`dbport`](#dbport)
-* [`dbtype`](#dbtype)
-* [`dbdriver`](#dbdriver)
-* [`dbschema`](#dbschema)
-* [`dburl`](#dburl)
-* [`connection_settings`](#connection_settings)
-* [`oracle_use_sid`](#oracle_use_sid)
-* [`mysql_connector_manage`](#mysql_connector_manage)
-* [`mysql_connector_version`](#mysql_connector_version)
-* [`mysql_connector_product`](#mysql_connector_product)
-* [`mysql_connector_install`](#mysql_connector_install)
-* [`mysql_connector_format`](#mysql_connector_format)
-* [`mysql_connector_url`](#mysql_connector_url)
-* [`pool_min_size`](#pool_min_size)
-* [`pool_max_size`](#pool_max_size)
-* [`pool_max_wait`](#pool_max_wait)
-* [`validation_query`](#validation_query)
-* [`validation_query_timeout`](#validation_query_timeout)
-* [`min_evictable_idle_time`](#min_evictable_idle_time)
-* [`time_between_eviction_runs`](#time_between_eviction_runs)
-* [`pool_max_idle`](#pool_max_idle)
-* [`pool_remove_abandoned`](#pool_remove_abandoned)
-* [`pool_remove_abandoned_timeout`](#pool_remove_abandoned_timeout)
-* [`pool_test_while_idle`](#pool_test_while_idle)
-* [`pool_test_on_borrow`](#pool_test_on_borrow)
-* [`java_package`](#java_package)
-* [`javahome`](#javahome)
-* [`jvm_type`](#jvm_type)
-* [`jvm_xms`](#jvm_xms)
-* [`jvm_xmx`](#jvm_xmx)
-* [`java_opts`](#java_opts)
-* [`jvm_gc_args`](#jvm_gc_args)
-* [`jvm_code_cache_args`](#jvm_code_cache_args)
-* [`jvm_extra_args`](#jvm_extra_args)
-* [`jvm_nofiles_limit`](#jvm_nofiles_limit)
-* [`catalina_opts`](#catalina_opts)
-* [`download_url`](#download_url)
-* [`checksum`](#checksum)
-* [`disable_notifications`](#disable_notifications)
-* [`proxy_server`](#proxy_server)
-* [`proxy_type`](#proxy_type)
-* [`service_manage`](#service_manage)
-* [`service_ensure`](#service_ensure)
-* [`service_enable`](#service_enable)
-* [`service_notify`](#service_notify)
-* [`service_subscribe`](#service_subscribe)
-* [`stop_jira`](#stop_jira)
-* [`script_check_java_manage`](#script_check_java_manage)
-* [`script_check_java_template`](#script_check_java_template)
-* [`tomcat_address`](#tomcat_address)
-* [`tomcat_port`](#tomcat_port)
-* [`tomcat_shutdown_port`](#tomcat_shutdown_port)
-* [`tomcat_max_http_header_size`](#tomcat_max_http_header_size)
-* [`tomcat_min_spare_threads`](#tomcat_min_spare_threads)
-* [`tomcat_connection_timeout`](#tomcat_connection_timeout)
-* [`tomcat_enable_lookups`](#tomcat_enable_lookups)
-* [`tomcat_native_ssl`](#tomcat_native_ssl)
-* [`tomcat_https_port`](#tomcat_https_port)
-* [`tomcat_redirect_https_port`](#tomcat_redirect_https_port)
-* [`tomcat_protocol`](#tomcat_protocol)
-* [`tomcat_protocol_ssl`](#tomcat_protocol_ssl)
-* [`tomcat_use_body_encoding_for_uri`](#tomcat_use_body_encoding_for_uri)
-* [`tomcat_disable_upload_timeout`](#tomcat_disable_upload_timeout)
-* [`tomcat_key_alias`](#tomcat_key_alias)
-* [`tomcat_keystore_file`](#tomcat_keystore_file)
-* [`tomcat_keystore_pass`](#tomcat_keystore_pass)
-* [`tomcat_keystore_type`](#tomcat_keystore_type)
-* [`tomcat_accesslog_format`](#tomcat_accesslog_format)
-* [`tomcat_accesslog_enable_xforwarded_for`](#tomcat_accesslog_enable_xforwarded_for)
-* [`tomcat_max_threads`](#tomcat_max_threads)
-* [`tomcat_accept_count`](#tomcat_accept_count)
-* [`proxy`](#proxy)
-* [`ajp`](#ajp)
-* [`tomcat_default_connector`](#tomcat_default_connector)
-* [`tomcat_additional_connectors`](#tomcat_additional_connectors)
-* [`contextpath`](#contextpath)
-* [`resources`](#resources)
-* [`enable_sso`](#enable_sso)
-* [`application_name`](#application_name)
-* [`application_password`](#application_password)
-* [`application_login_url`](#application_login_url)
-* [`crowd_server_url`](#crowd_server_url)
-* [`crowd_base_url`](#crowd_base_url)
-* [`session_isauthenticated`](#session_isauthenticated)
-* [`session_tokenkey`](#session_tokenkey)
-* [`session_validationinterval`](#session_validationinterval)
-* [`session_lastvalidation`](#session_lastvalidation)
-* [`jvm_permgen`](#jvm_permgen)
-* [`poolsize`](#poolsize)
-* [`enable_connection_pooling`](#enable_connection_pooling)
-
-##### `version`
+* [`version`](#-jira--version)
+* [`product`](#-jira--product)
+* [`installdir`](#-jira--installdir)
+* [`homedir`](#-jira--homedir)
+* [`manage_user`](#-jira--manage_user)
+* [`user`](#-jira--user)
+* [`group`](#-jira--group)
+* [`installdir_owner`](#-jira--installdir_owner)
+* [`installdir_group`](#-jira--installdir_group)
+* [`installdir_mode`](#-jira--installdir_mode)
+* [`homedir_mode`](#-jira--homedir_mode)
+* [`uid`](#-jira--uid)
+* [`gid`](#-jira--gid)
+* [`shell`](#-jira--shell)
+* [`enable_secure_admin_sessions`](#-jira--enable_secure_admin_sessions)
+* [`jira_config_properties`](#-jira--jira_config_properties)
+* [`datacenter`](#-jira--datacenter)
+* [`shared_homedir`](#-jira--shared_homedir)
+* [`ehcache_listener_host`](#-jira--ehcache_listener_host)
+* [`ehcache_listener_port`](#-jira--ehcache_listener_port)
+* [`ehcache_object_port`](#-jira--ehcache_object_port)
+* [`use_jndi_ds`](#-jira--use_jndi_ds)
+* [`jndi_ds_name`](#-jira--jndi_ds_name)
+* [`db`](#-jira--db)
+* [`dbname`](#-jira--dbname)
+* [`dbuser`](#-jira--dbuser)
+* [`dbpassword`](#-jira--dbpassword)
+* [`dbserver`](#-jira--dbserver)
+* [`dbport`](#-jira--dbport)
+* [`dbtype`](#-jira--dbtype)
+* [`dbdriver`](#-jira--dbdriver)
+* [`dbschema`](#-jira--dbschema)
+* [`dburl`](#-jira--dburl)
+* [`connection_settings`](#-jira--connection_settings)
+* [`oracle_use_sid`](#-jira--oracle_use_sid)
+* [`mysql_connector_manage`](#-jira--mysql_connector_manage)
+* [`mysql_connector_version`](#-jira--mysql_connector_version)
+* [`mysql_connector_product`](#-jira--mysql_connector_product)
+* [`mysql_connector_install`](#-jira--mysql_connector_install)
+* [`mysql_connector_format`](#-jira--mysql_connector_format)
+* [`mysql_connector_url`](#-jira--mysql_connector_url)
+* [`pool_min_size`](#-jira--pool_min_size)
+* [`pool_max_size`](#-jira--pool_max_size)
+* [`pool_max_wait`](#-jira--pool_max_wait)
+* [`validation_query`](#-jira--validation_query)
+* [`validation_query_timeout`](#-jira--validation_query_timeout)
+* [`min_evictable_idle_time`](#-jira--min_evictable_idle_time)
+* [`time_between_eviction_runs`](#-jira--time_between_eviction_runs)
+* [`pool_max_idle`](#-jira--pool_max_idle)
+* [`pool_remove_abandoned`](#-jira--pool_remove_abandoned)
+* [`pool_remove_abandoned_timeout`](#-jira--pool_remove_abandoned_timeout)
+* [`pool_test_while_idle`](#-jira--pool_test_while_idle)
+* [`pool_test_on_borrow`](#-jira--pool_test_on_borrow)
+* [`java_package`](#-jira--java_package)
+* [`javahome`](#-jira--javahome)
+* [`jvm_type`](#-jira--jvm_type)
+* [`jvm_xms`](#-jira--jvm_xms)
+* [`jvm_xmx`](#-jira--jvm_xmx)
+* [`java_opts`](#-jira--java_opts)
+* [`jvm_gc_args`](#-jira--jvm_gc_args)
+* [`jvm_code_cache_args`](#-jira--jvm_code_cache_args)
+* [`jvm_extra_args`](#-jira--jvm_extra_args)
+* [`jvm_nofiles_limit`](#-jira--jvm_nofiles_limit)
+* [`download_url`](#-jira--download_url)
+* [`checksum`](#-jira--checksum)
+* [`disable_notifications`](#-jira--disable_notifications)
+* [`proxy_server`](#-jira--proxy_server)
+* [`proxy_type`](#-jira--proxy_type)
+* [`service_manage`](#-jira--service_manage)
+* [`service_ensure`](#-jira--service_ensure)
+* [`service_enable`](#-jira--service_enable)
+* [`service_notify`](#-jira--service_notify)
+* [`service_subscribe`](#-jira--service_subscribe)
+* [`stop_jira`](#-jira--stop_jira)
+* [`script_check_java_manage`](#-jira--script_check_java_manage)
+* [`script_check_java_template`](#-jira--script_check_java_template)
+* [`tomcat_address`](#-jira--tomcat_address)
+* [`tomcat_port`](#-jira--tomcat_port)
+* [`tomcat_shutdown_port`](#-jira--tomcat_shutdown_port)
+* [`tomcat_max_http_header_size`](#-jira--tomcat_max_http_header_size)
+* [`tomcat_min_spare_threads`](#-jira--tomcat_min_spare_threads)
+* [`tomcat_connection_timeout`](#-jira--tomcat_connection_timeout)
+* [`tomcat_enable_lookups`](#-jira--tomcat_enable_lookups)
+* [`tomcat_native_ssl`](#-jira--tomcat_native_ssl)
+* [`tomcat_https_port`](#-jira--tomcat_https_port)
+* [`tomcat_redirect_https_port`](#-jira--tomcat_redirect_https_port)
+* [`tomcat_protocol`](#-jira--tomcat_protocol)
+* [`tomcat_protocol_ssl`](#-jira--tomcat_protocol_ssl)
+* [`tomcat_use_body_encoding_for_uri`](#-jira--tomcat_use_body_encoding_for_uri)
+* [`tomcat_disable_upload_timeout`](#-jira--tomcat_disable_upload_timeout)
+* [`tomcat_key_alias`](#-jira--tomcat_key_alias)
+* [`tomcat_keystore_file`](#-jira--tomcat_keystore_file)
+* [`tomcat_keystore_pass`](#-jira--tomcat_keystore_pass)
+* [`tomcat_keystore_type`](#-jira--tomcat_keystore_type)
+* [`tomcat_accesslog_format`](#-jira--tomcat_accesslog_format)
+* [`tomcat_accesslog_enable_xforwarded_for`](#-jira--tomcat_accesslog_enable_xforwarded_for)
+* [`tomcat_max_threads`](#-jira--tomcat_max_threads)
+* [`tomcat_accept_count`](#-jira--tomcat_accept_count)
+* [`proxy`](#-jira--proxy)
+* [`ajp`](#-jira--ajp)
+* [`tomcat_default_connector`](#-jira--tomcat_default_connector)
+* [`tomcat_additional_connectors`](#-jira--tomcat_additional_connectors)
+* [`contextpath`](#-jira--contextpath)
+* [`resources`](#-jira--resources)
+* [`enable_sso`](#-jira--enable_sso)
+* [`application_name`](#-jira--application_name)
+* [`application_password`](#-jira--application_password)
+* [`application_login_url`](#-jira--application_login_url)
+* [`crowd_server_url`](#-jira--crowd_server_url)
+* [`crowd_base_url`](#-jira--crowd_base_url)
+* [`session_isauthenticated`](#-jira--session_isauthenticated)
+* [`session_tokenkey`](#-jira--session_tokenkey)
+* [`session_validationinterval`](#-jira--session_validationinterval)
+* [`session_lastvalidation`](#-jira--session_lastvalidation)
+* [`plugins`](#-jira--plugins)
+* [`jvm_permgen`](#-jira--jvm_permgen)
+* [`poolsize`](#-jira--poolsize)
+* [`enable_connection_pooling`](#-jira--enable_connection_pooling)
+
+##### `version`
Data type: `String`
@@ -182,7 +181,7 @@ The JIRA version to install or upgrade to. Changing this will trigger a restart
Default value: `'8.13.5'`
-##### `product`
+##### `product`
Data type: `String[1]`
@@ -190,7 +189,7 @@ Atlassian product to install.
Default value: `'jira'`
-##### `installdir`
+##### `installdir`
Data type: `Stdlib::Absolutepath`
@@ -198,7 +197,7 @@ The directory in which JIRA software packages will be extracted
Default value: `'/opt/jira'`
-##### `homedir`
+##### `homedir`
Data type: `Stdlib::Absolutepath`
@@ -206,15 +205,15 @@ The directory for JIRA's runtime data that persists between versions.
Default value: `'/home/jira'`
-##### `manage_user`
+##### `manage_user`
Data type: `Boolean`
Whether to manage the service user
-Default value: ``true``
+Default value: `true`
-##### `user`
+##### `user`
Data type: `String`
@@ -222,7 +221,7 @@ User that the service will run as
Default value: `'jira'`
-##### `group`
+##### `group`
Data type: `String`
@@ -230,7 +229,7 @@ Group that the service will run as
Default value: `'jira'`
-##### `installdir_owner`
+##### `installdir_owner`
Data type: `String[1]`
@@ -238,7 +237,7 @@ The owner of the installation directory.
Default value: `'root'`
-##### `installdir_group`
+##### `installdir_group`
Data type: `String[1]`
@@ -246,7 +245,7 @@ The group of the installation directory.
Default value: `'root'`
-##### `installdir_mode`
+##### `installdir_mode`
Data type: `Stdlib::Filemode`
@@ -254,31 +253,31 @@ The permissions of the installation directory. Note that the JIRA service user m
Default value: `'0755'`
-##### `homedir_mode`
+##### `homedir_mode`
Data type: `Optional[Stdlib::Filemode]`
The permissions of the service user's home directory, where JIRA's data will reside
-Default value: ``undef``
+Default value: `undef`
-##### `uid`
+##### `uid`
Data type: `Optional[Integer[0]]`
The desired UID for the service user
-Default value: ``undef``
+Default value: `undef`
-##### `gid`
+##### `gid`
Data type: `Optional[Integer[0]]`
The desired GID for the service group
-Default value: ``undef``
+Default value: `undef`
-##### `shell`
+##### `shell`
Data type: `Stdlib::Absolutepath`
@@ -286,15 +285,15 @@ The shell of the service user
Default value: `'/bin/true'`
-##### `enable_secure_admin_sessions`
+##### `enable_secure_admin_sessions`
Data type: `Boolean`
Enables secure administrator sessions
-Default value: ``true``
+Default value: `true`
-##### `jira_config_properties`
+##### `jira_config_properties`
Data type: `Hash`
@@ -303,47 +302,63 @@ See https://confluence.atlassian.com/adminjiraserver0813/advanced-jira-applicati
Default value: `{}`
-##### `datacenter`
+##### `datacenter`
Data type: `Boolean`
Set to true to enable clustered mode (JIRA Datacenter)
-Default value: ``false``
+Default value: `false`
-##### `shared_homedir`
+##### `shared_homedir`
Data type: `Optional[Stdlib::AbsolutePath]`
Shared data directory for all JIRA instances in a cluster
-Default value: ``undef``
+Default value: `undef`
-##### `ehcache_listener_host`
+##### `ehcache_listener_host`
Data type: `Optional[Stdlib::Host]`
EHCache configuration for clustered mode
-Default value: ``undef``
+Default value: `undef`
-##### `ehcache_listener_port`
+##### `ehcache_listener_port`
Data type: `Optional[Stdlib::Port]`
EHCache configuration for clustered mode
-Default value: ``undef``
+Default value: `undef`
-##### `ehcache_object_port`
+##### `ehcache_object_port`
Data type: `Optional[Stdlib::Port]`
EHCache configuration for clustered mode
-Default value: ``undef``
+Default value: `undef`
+
+##### `use_jndi_ds`
+
+Data type: `Boolean`
+
+If true, the database will be configured as JNDI datasource in server.xml and then referenced in dbconfig.xml
+
+Default value: `false`
-##### `db`
+##### `jndi_ds_name`
+
+Data type: `String[1]`
+
+Configures the JNDI datasource name
+
+Default value: `'JiraDS'`
+
+##### `db`
Data type: `Enum['postgresql','mysql','sqlserver','oracle','h2']`
@@ -351,7 +366,7 @@ The kind of database to use.
Default value: `'postgresql'`
-##### `dbname`
+##### `dbname`
Data type: `String`
@@ -359,7 +374,7 @@ The database name to connect to
Default value: `'jira'`
-##### `dbuser`
+##### `dbuser`
Data type: `String`
@@ -367,7 +382,7 @@ Database username
Default value: `'jiraadm'`
-##### `dbpassword`
+##### `dbpassword`
Data type: `String`
@@ -375,7 +390,7 @@ Database password
Default value: `'mypassword'`
-##### `dbserver`
+##### `dbserver`
Data type: `String`
@@ -383,47 +398,47 @@ Database host DNS name or IP address
Default value: `'localhost'`
-##### `dbport`
+##### `dbport`
Data type: `Optional[Variant[Integer,String]]`
The database port. Default depends on `$db`
-Default value: ``undef``
+Default value: `undef`
-##### `dbtype`
+##### `dbtype`
Data type: `Optional[String]`
The database type. Default depends on `$db`
-Default value: ``undef``
+Default value: `undef`
-##### `dbdriver`
+##### `dbdriver`
Data type: `Optional[String]`
The database driver class. Default depends on `$db`
-Default value: ``undef``
+Default value: `undef`
-##### `dbschema`
+##### `dbschema`
Data type: `Optional[String[1]]`
The database schema, if applicable. Defaults to 'public' with PostgreSQL
-Default value: ``undef``
+Default value: `undef`
-##### `dburl`
+##### `dburl`
Data type: `Optional[String]`
Set this if you wish to use a custom database URL
-Default value: ``undef``
+Default value: `undef`
-##### `connection_settings`
+##### `connection_settings`
Data type: `Optional[String]`
@@ -431,25 +446,25 @@ Configures additional JDBC connection properties in dbconfig.xml
For PostgreSQL, a default value of "tcpKeepAlive=true;socketTimeout=240" will be used
See https://confluence.atlassian.com/jirakb/connection-problems-to-postgresql-result-in-stuck-threads-in-jira-1047534091.html
-Default value: ``undef``
+Default value: `undef`
-##### `oracle_use_sid`
+##### `oracle_use_sid`
Data type: `Boolean`
Affects the database URL format for Oracle depending on whether you connect via a SID or a service name
-Default value: ``true``
+Default value: `true`
-##### `mysql_connector_manage`
+##### `mysql_connector_manage`
Data type: `Boolean`
If true, the module will download and install the MySQL connector for JDBC
-Default value: ``true``
+Default value: `true`
-##### `mysql_connector_version`
+##### `mysql_connector_version`
Data type: `String`
@@ -457,7 +472,7 @@ Version of the connector to install
Default value: `'8.0.23'`
-##### `mysql_connector_product`
+##### `mysql_connector_product`
Data type: `String`
@@ -465,7 +480,7 @@ Determines the filename for the download
Default value: `'mysql-connector-java'`
-##### `mysql_connector_install`
+##### `mysql_connector_install`
Data type: `Stdlib::Absolutepath`
@@ -473,7 +488,7 @@ Directory in which the connector will be installed
Default value: `'/opt/MySQL-connector'`
-##### `mysql_connector_format`
+##### `mysql_connector_format`
Data type: `String`
@@ -481,7 +496,7 @@ Format of the downloaded package
Default value: `'tar.gz'`
-##### `mysql_connector_url`
+##### `mysql_connector_url`
Data type: `Stdlib::HTTPUrl`
@@ -489,119 +504,119 @@ Source for the connector
Default value: `'https://dev.mysql.com/get/Downloads/Connector-J'`
-##### `pool_min_size`
+##### `pool_min_size`
Data type: `Optional[Integer[0]]`
Configures pool-min-size in dbconfig.xml
-Default value: ``undef``
+Default value: `undef`
-##### `pool_max_size`
+##### `pool_max_size`
Data type: `Optional[Integer[0]]`
Configures pool-max-size in dbconfig.xml
-Default value: ``undef``
+Default value: `undef`
-##### `pool_max_wait`
+##### `pool_max_wait`
Data type: `Optional[Integer[-1]]`
Configures pool-max-wait in dbconfig.xml
-Default value: ``undef``
+Default value: `undef`
-##### `validation_query`
+##### `validation_query`
Data type: `Optional[String]`
Configures validation_query in dbconfig.xml
-Default value: ``undef``
+Default value: `undef`
-##### `validation_query_timeout`
+##### `validation_query_timeout`
Data type: `Optional[Integer[0]]`
Configures validation_query_timeout in dbconfig.xml
-Default value: ``undef``
+Default value: `undef`
-##### `min_evictable_idle_time`
+##### `min_evictable_idle_time`
Data type: `Optional[Integer[0]]`
Configures min-evictable-idle-time-millis in dbconfig.xml
-Default value: ``undef``
+Default value: `undef`
-##### `time_between_eviction_runs`
+##### `time_between_eviction_runs`
Data type: `Optional[Integer[0]]`
Configures time-between-eviction-runs-millis in dbconfig.xml
-Default value: ``undef``
+Default value: `undef`
-##### `pool_max_idle`
+##### `pool_max_idle`
Data type: `Optional[Integer[0]]`
Configures pool-max-idle in dbconfig.xml
-Default value: ``undef``
+Default value: `undef`
-##### `pool_remove_abandoned`
+##### `pool_remove_abandoned`
Data type: `Optional[Boolean]`
Configures pool-remove-abandoned in dbconfig.xml
-Default value: ``undef``
+Default value: `undef`
-##### `pool_remove_abandoned_timeout`
+##### `pool_remove_abandoned_timeout`
Data type: `Optional[Integer[0]]`
Configures pool-remove-abandoned-timeout in dbconfig.xml
-Default value: ``undef``
+Default value: `undef`
-##### `pool_test_while_idle`
+##### `pool_test_while_idle`
Data type: `Optional[Boolean]`
Configures pool-test-while-idle in dbconfig.xml
-Default value: ``undef``
+Default value: `undef`
-##### `pool_test_on_borrow`
+##### `pool_test_on_borrow`
Data type: `Optional[Boolean]`
Configures pool-test-on-borrow in dbconfig.xml
-Default value: ``undef``
+Default value: `undef`
-##### `java_package`
+##### `java_package`
Data type: `Optional[String[1]]`
If defined, the module will install this package before installing JIRA.
-Default value: ``undef``
+Default value: `undef`
-##### `javahome`
+##### `javahome`
Data type: `Optional[Stdlib::AbsolutePath]`
The location of an installed JVM. Must be set even if you specify java_package
-Default value: ``undef``
+Default value: `undef`
-##### `jvm_type`
+##### `jvm_type`
Data type: `Jira::Jvm_types`
@@ -609,7 +624,7 @@ The type of JVM to use. Affects some defaults for the arguments below
Default value: `'openjdk-11'`
-##### `jvm_xms`
+##### `jvm_xms`
Data type: `String`
@@ -617,7 +632,7 @@ Java -Xms parameter
Default value: `'256m'`
-##### `jvm_xmx`
+##### `jvm_xmx`
Data type: `String`
@@ -625,39 +640,39 @@ Java -Xmx parameter
Default value: `'1024m'`
-##### `java_opts`
+##### `java_opts`
Data type: `Optional[String]`
Configures JVM_SUPPORT_RECOMMENDED_ARGS in setenv.sh. This is the preferred option to override.
-Default value: ``undef``
+Default value: `undef`
-##### `jvm_gc_args`
+##### `jvm_gc_args`
Data type: `Optional[String]`
Configures JVM_GC_ARGS in setenv.sh
-Default value: ``undef``
+Default value: `undef`
-##### `jvm_code_cache_args`
+##### `jvm_code_cache_args`
Data type: `Optional[String]`
Configures JVM_CODE_CACHE_ARGS in setenv.sh
-Default value: ``undef``
+Default value: `undef`
-##### `jvm_extra_args`
+##### `jvm_extra_args`
Data type: `Optional[String]`
Configures JVM_EXTRA_ARGS in setenv.sh
-Default value: ``undef``
+Default value: `undef`
-##### `jvm_nofiles_limit`
+##### `jvm_nofiles_limit`
Data type: `Integer`
@@ -665,15 +680,7 @@ Set the limit for open files
Default value: `16384`
-##### `catalina_opts`
-
-Data type: `String`
-
-Does nothing :-)
-
-Default value: `''`
-
-##### `download_url`
+##### `download_url`
Data type: `Stdlib::HTTPUrl`
@@ -681,47 +688,47 @@ Base URL for downloading Atlassian software
Default value: `'https://product-downloads.atlassian.com/software/jira/downloads'`
-##### `checksum`
+##### `checksum`
Data type: `Optional[String]`
Optional checksum to verify the downloaded package
-Default value: ``undef``
+Default value: `undef`
-##### `disable_notifications`
+##### `disable_notifications`
Data type: `Boolean`
Configures JIRA to disable e-mail handlers
-Default value: ``false``
+Default value: `false`
-##### `proxy_server`
+##### `proxy_server`
Data type: `Optional[String]`
Configures the proxy server to use for downloads
-Default value: ``undef``
+Default value: `undef`
-##### `proxy_type`
+##### `proxy_type`
Data type: `Optional[Enum['none','http','https','ftp']]`
Configures the proxy type
-Default value: ``undef``
+Default value: `undef`
-##### `service_manage`
+##### `service_manage`
Data type: `Boolean`
Whether to manage the jira service
-Default value: ``true``
+Default value: `true`
-##### `service_ensure`
+##### `service_ensure`
Data type: `Stdlib::Ensure::Service`
@@ -729,31 +736,31 @@ Service state to ensure
Default value: `'running'`
-##### `service_enable`
+##### `service_enable`
Data type: `Boolean`
Whether to enable the service on boot
-Default value: ``true``
+Default value: `true`
-##### `service_notify`
+##### `service_notify`
Data type: `Any`
Service notify parameter
-Default value: ``undef``
+Default value: `undef`
-##### `service_subscribe`
+##### `service_subscribe`
Data type: `Any`
Service subscribe parameter
-Default value: ``undef``
+Default value: `undef`
-##### `stop_jira`
+##### `stop_jira`
Data type: `String`
@@ -761,15 +768,15 @@ The command used to stop jira prior to upgrades. You can override this if you us
Default value: `'systemctl stop jira.service && sleep 15'`
-##### `script_check_java_manage`
+##### `script_check_java_manage`
Data type: `Boolean`
undocumented
-Default value: ``false``
+Default value: `false`
-##### `script_check_java_template`
+##### `script_check_java_template`
Data type: `String`
@@ -777,15 +784,15 @@ undocumented
Default value: `'jira/check-java.sh.erb'`
-##### `tomcat_address`
+##### `tomcat_address`
Data type: `Optional[String]`
Tomcat bind address
-Default value: ``undef``
+Default value: `undef`
-##### `tomcat_port`
+##### `tomcat_port`
Data type: `Stdlib::Port`
@@ -793,7 +800,7 @@ Tomcat bind port
Default value: `8080`
-##### `tomcat_shutdown_port`
+##### `tomcat_shutdown_port`
Data type: `Stdlib::Port`
@@ -801,7 +808,7 @@ Tomcat shutdown command port
Default value: `8005`
-##### `tomcat_max_http_header_size`
+##### `tomcat_max_http_header_size`
Data type: `Integer`
@@ -809,7 +816,7 @@ Tomcat connector setting
Default value: `8192`
-##### `tomcat_min_spare_threads`
+##### `tomcat_min_spare_threads`
Data type: `Integer[0]`
@@ -817,7 +824,7 @@ Tomcat connector setting
Default value: `25`
-##### `tomcat_connection_timeout`
+##### `tomcat_connection_timeout`
Data type: `Integer[0]`
@@ -825,23 +832,23 @@ Tomcat connector setting
Default value: `20000`
-##### `tomcat_enable_lookups`
+##### `tomcat_enable_lookups`
Data type: `Boolean`
Tomcat connector setting
-Default value: ``false``
+Default value: `false`
-##### `tomcat_native_ssl`
+##### `tomcat_native_ssl`
Data type: `Boolean`
Enables a native SSL connector
-Default value: ``false``
+Default value: `false`
-##### `tomcat_https_port`
+##### `tomcat_https_port`
Data type: `Stdlib::Port`
@@ -849,7 +856,7 @@ Tomcat port for the native SSL connector
Default value: `8443`
-##### `tomcat_redirect_https_port`
+##### `tomcat_redirect_https_port`
Data type: `Optional[Stdlib::Port]`
@@ -857,9 +864,9 @@ Specify which port to redirect internally when using port redirection from 80 to
from 443 to 8443 or with proxy server in front, defaults to $tomcat_https_port. To be used
with tomcat_native_ssl.
-Default value: ``undef``
+Default value: `undef`
-##### `tomcat_protocol`
+##### `tomcat_protocol`
Data type: `String`
@@ -867,31 +874,31 @@ Tomcat connector setting
Default value: `'HTTP/1.1'`
-##### `tomcat_protocol_ssl`
+##### `tomcat_protocol_ssl`
Data type: `Optional[String]`
Tomcat connector setting
-Default value: ``undef``
+Default value: `undef`
-##### `tomcat_use_body_encoding_for_uri`
+##### `tomcat_use_body_encoding_for_uri`
Data type: `Boolean`
Tomcat connector setting
-Default value: ``true``
+Default value: `true`
-##### `tomcat_disable_upload_timeout`
+##### `tomcat_disable_upload_timeout`
Data type: `Boolean`
Tomcat connector setting
-Default value: ``true``
+Default value: `true`
-##### `tomcat_key_alias`
+##### `tomcat_key_alias`
Data type: `String`
@@ -899,7 +906,7 @@ Key alias in the keystore for the SSL connector
Default value: `'jira'`
-##### `tomcat_keystore_file`
+##### `tomcat_keystore_file`
Data type: `Stdlib::Absolutepath`
@@ -907,7 +914,7 @@ Path to a Java keystore for the SSL connector
Default value: `'/home/jira/jira.jks'`
-##### `tomcat_keystore_pass`
+##### `tomcat_keystore_pass`
Data type: `String`
@@ -915,7 +922,7 @@ Keystore passphrase
Default value: `'changeit'`
-##### `tomcat_keystore_type`
+##### `tomcat_keystore_type`
Data type: `Enum['JKS', 'JCEKS', 'PKCS12']`
@@ -923,7 +930,7 @@ Keystore type
Default value: `'JKS'`
-##### `tomcat_accesslog_format`
+##### `tomcat_accesslog_format`
Data type: `String`
@@ -931,7 +938,7 @@ Format string for Tomcat access log
Default value: `'%a %{jira.request.id}r %{jira.request.username}r %t "%m %U%q %H" %s %b %D "%{Referer}i" "%{User-Agent}i" "%{jira.request.assession.id}r"'`
-##### `tomcat_accesslog_enable_xforwarded_for`
+##### `tomcat_accesslog_enable_xforwarded_for`
Data type: `Boolean`
@@ -940,9 +947,9 @@ If a proxy operates before JIRA, the access logs will only contain the IP addres
instead of the address of the user. With `X-Forwarded-For` the proxy can forward the users IP
address to the JIRA application server so that it can be logged correctly.
-Default value: ``false``
+Default value: `false`
-##### `tomcat_max_threads`
+##### `tomcat_max_threads`
Data type: `Integer`
@@ -950,7 +957,7 @@ Tomcat connector setting
Default value: `150`
-##### `tomcat_accept_count`
+##### `tomcat_accept_count`
Data type: `Integer`
@@ -958,7 +965,7 @@ Tomcat connector setting
Default value: `100`
-##### `proxy`
+##### `proxy`
Data type: `Hash`
@@ -967,7 +974,7 @@ The confusing naming is retained for backwards compatibility
Default value: `{}`
-##### `ajp`
+##### `ajp`
Data type: `Hash`
@@ -975,15 +982,15 @@ Properties for an AJP connector
Default value: `{}`
-##### `tomcat_default_connector`
+##### `tomcat_default_connector`
Data type: `Boolean`
If set to false, the default connector will be omitted
-Default value: ``true``
+Default value: `true`
-##### `tomcat_additional_connectors`
+##### `tomcat_additional_connectors`
Data type: `Jira::Tomcat_connectors`
@@ -1004,15 +1011,15 @@ https://confluence.atlassian.com/kb/how-to-bypass-a-reverse-proxy-or-ssl-in-appl
Default value: `{}`
-##### `contextpath`
+##### `contextpath`
-Data type: `String`
+Data type: `Optional[String[1]]`
Tomcat context path for the web service
-Default value: `''`
+Default value: `undef`
-##### `resources`
+##### `resources`
Data type: `Hash`
@@ -1020,15 +1027,15 @@ undocumented
Default value: `{}`
-##### `enable_sso`
+##### `enable_sso`
Data type: `Boolean`
Enable single sign-on via Crowd
-Default value: ``false``
+Default value: `false`
-##### `application_name`
+##### `application_name`
Data type: `String`
@@ -1036,7 +1043,7 @@ Crowd application name
Default value: `'crowd'`
-##### `application_password`
+##### `application_password`
Data type: `String`
@@ -1044,7 +1051,7 @@ Crowd application password
Default value: `'1234'`
-##### `application_login_url`
+##### `application_login_url`
Data type: `Variant[Stdlib::HTTPUrl, Stdlib::HTTPSUrl]`
@@ -1052,7 +1059,7 @@ Crowd application login URL
Default value: `'https://crowd.example.com/console/'`
-##### `crowd_server_url`
+##### `crowd_server_url`
Data type: `Variant[Stdlib::HTTPUrl, Stdlib::HTTPSUrl]`
@@ -1060,7 +1067,7 @@ Crowd server URL
Default value: `'https://crowd.example.com/services/'`
-##### `crowd_base_url`
+##### `crowd_base_url`
Data type: `Variant[Stdlib::HTTPUrl, Stdlib::HTTPSUrl]`
@@ -1068,7 +1075,7 @@ Crowd base URL
Default value: `'https://crowd.example.com/'`
-##### `session_isauthenticated`
+##### `session_isauthenticated`
Data type: `String`
@@ -1076,7 +1083,7 @@ undocumented SSO parameter
Default value: `'session.isauthenticated'`
-##### `session_tokenkey`
+##### `session_tokenkey`
Data type: `String`
@@ -1084,7 +1091,7 @@ undocumented SSO parameter
Default value: `'session.tokenkey'`
-##### `session_validationinterval`
+##### `session_validationinterval`
Data type: `Integer`
@@ -1092,7 +1099,7 @@ undocumented SSO parameter
Default value: `5`
-##### `session_lastvalidation`
+##### `session_lastvalidation`
Data type: `String`
@@ -1100,61 +1107,62 @@ undocumented SSO parameter
Default value: `'session.lastvalidation'`
-##### `jvm_permgen`
+##### `plugins`
+
+Data type: `Array[Hash]`
+
+an array of hashes defining custom plugins to install
+a single plugin configuration will has the following form
+ installation_name: this name wil be used to install the plugin within jira
+ source: url of plugin to be fetched
+ username: the username for authentification, if necessary
+ password: the password for authentification, if necessary
+ checksum: the checksum of the plugin, to determine the need for an upgrade
+ checksumtype: the type of checksum used (none|md5|sha1|sha2|sha256|sha384|sha512). (default: none)
+
+Default value: `[]`
+
+##### `jvm_permgen`
Data type: `Optional[String]`
Deprecated. Exists to notify users that they're trying to configure a parameter that has no effect
-Default value: ``undef``
+Default value: `undef`
-##### `poolsize`
+##### `poolsize`
Data type: `Optional[Integer[0]]`
Deprecated alias for `$pool_max_size`.
-Default value: ``undef``
+Default value: `undef`
-##### `enable_connection_pooling`
+##### `enable_connection_pooling`
Data type: `Optional[Boolean]`
Deprecated. Has no effect.
-Default value: ``undef``
-
-## Functions
+Default value: `undef`
## Data types
-### `Jira::Jvm_types`
+### `Jira::Jvm_types`
Java Virtual Machine (JVM) types
-Alias of
+Alias of `Enum['openjdk-11', 'oracle-jdk-1.8']`
-```puppet
-Enum['openjdk-11', 'oracle-jdk-1.8']
-```
-
-### `Jira::Tomcat_attributes`
+### `Jira::Tomcat_attributes`
A hash of string keys to arbitrary values that will be rendered as XML attributes
-Alias of
-
-```puppet
-Hash[String[1], Scalar]
-```
+Alias of `Hash[String[1], Scalar]`
-### `Jira::Tomcat_connectors`
+### `Jira::Tomcat_connectors`
A set of attribute hashes keyed by connector port number
-Alias of
-
-```puppet
-Hash[Stdlib::Port::Unprivileged, Jira::Tomcat_attributes]
-```
+Alias of `Hash[Stdlib::Port::Unprivileged, Jira::Tomcat_attributes]`
diff --git a/Rakefile b/Rakefile
index 80b799d6..7109e7f8 100644
--- a/Rakefile
+++ b/Rakefile
@@ -1,7 +1,7 @@
# Managed by modulesync - DO NOT EDIT
# https://voxpupuli.org/docs/updating-files-managed-with-modulesync/
-# Attempt to load voxupuli-test (which pulls in puppetlabs_spec_helper),
+# Attempt to load voxpupuli-test (which pulls in puppetlabs_spec_helper),
# otherwise attempt to load it directly.
begin
require 'voxpupuli/test/rake'
@@ -24,6 +24,10 @@ end
begin
require 'voxpupuli/release/rake_tasks'
rescue LoadError
+ # voxpupuli-release not present
+else
+ GCGConfig.user = 'voxpupuli'
+ GCGConfig.project = 'puppet-jira'
end
desc "Run main 'test' task and report merged results to coveralls"
@@ -37,36 +41,4 @@ task test_with_coveralls: [:test] do
end
end
-desc 'Generate REFERENCE.md'
-task :reference, [:debug, :backtrace] do |t, args|
- patterns = ''
- Rake::Task['strings:generate:reference'].invoke(patterns, args[:debug], args[:backtrace])
-end
-
-begin
- require 'github_changelog_generator/task'
- require 'puppet_blacksmith'
- GitHubChangelogGenerator::RakeTask.new :changelog do |config|
- metadata = Blacksmith::Modulefile.new
- config.future_release = "v#{metadata.version}" if metadata.version =~ /^\d+\.\d+.\d+$/
- config.header = "# Changelog\n\nAll notable changes to this project will be documented in this file.\nEach new release typically also includes the latest modulesync defaults.\nThese should not affect the functionality of the module."
- config.exclude_labels = %w{duplicate question invalid wontfix wont-fix modulesync skip-changelog}
- config.user = 'voxpupuli'
- config.project = metadata.metadata['name']
- end
-
- # Workaround for https://github.com/github-changelog-generator/github-changelog-generator/issues/715
- require 'rbconfig'
- if RbConfig::CONFIG['host_os'] =~ /linux/
- task :changelog do
- puts 'Fixing line endings...'
- changelog_file = File.join(__dir__, 'CHANGELOG.md')
- changelog_txt = File.read(changelog_file)
- new_contents = changelog_txt.gsub(%r{\r\n}, "\n")
- File.open(changelog_file, "w") {|file| file.puts new_contents }
- end
- end
-
-rescue LoadError
-end
# vim: syntax=ruby
diff --git a/manifests/init.pp b/manifests/init.pp
index 20e84025..0761a0c6 100644
--- a/manifests/init.pp
+++ b/manifests/init.pp
@@ -144,8 +144,6 @@
# Configures JVM_EXTRA_ARGS in setenv.sh
# @param jvm_nofiles_limit
# Set the limit for open files
-# @param catalina_opts
-# Does nothing :-)
# @param download_url
# Base URL for downloading Atlassian software
# @param checksum
@@ -353,7 +351,6 @@
Optional[String] $jvm_code_cache_args = undef,
Optional[String] $jvm_extra_args = undef,
Integer $jvm_nofiles_limit = 16384,
- String $catalina_opts = '',
# Misc Settings
Stdlib::HTTPUrl $download_url = 'https://product-downloads.atlassian.com/software/jira/downloads',
Optional[String] $checksum = undef,
@@ -407,7 +404,7 @@
# Additional connectors in server.xml
Jira::Tomcat_connectors $tomcat_additional_connectors = {},
# Context path (usualy used in combination with a reverse proxy)
- String $contextpath = '',
+ Optional[String[1]] $contextpath = undef,
# Resources for context.xml
Hash $resources = {},
# Enable SingleSignOn via Crowd
@@ -514,10 +511,10 @@
}
$_password = !empty($plugin_data['password']) ? {
default => {},
- true => { password => $plugin_data['password'] }
+ true => { password => $plugin_data['password'] },
}
$_plugin_archive = {
- $target => $_target_defaults + $_username + $_password
+ $target => $_target_defaults + $_username + $_password,
}
create_resources(archive, $_plugin_archive)
}
diff --git a/metadata.json b/metadata.json
index ee7ace98..38ac590f 100644
--- a/metadata.json
+++ b/metadata.json
@@ -1,6 +1,6 @@
{
"name": "puppet-jira",
- "version": "5.1.1-rc0",
+ "version": "6.0.1-rc0",
"author": "Vox Pupuli",
"summary": "Module to install, configure and manage Atlassian Jira",
"license": "Apache-2.0",
@@ -14,21 +14,21 @@
"dependencies": [
{
"name": "puppet/systemd",
- "version_requirement": ">= 3.0.0 < 4.0.0"
+ "version_requirement": ">= 3.0.0 < 7.0.0"
},
{
"name": "puppetlabs/stdlib",
- "version_requirement": ">= 4.25.0 < 9.0.0"
+ "version_requirement": ">= 4.25.0 < 10.0.0"
},
{
"name": "puppet/archive",
- "version_requirement": ">= 1.0.0 < 7.0.0"
+ "version_requirement": ">= 1.0.0 < 8.0.0"
}
],
"requirements": [
{
"name": "puppet",
- "version_requirement": ">= 6.1.0 < 8.0.0"
+ "version_requirement": ">= 7.0.0 < 9.0.0"
}
],
"operatingsystem_support": [
@@ -59,6 +59,12 @@
"7"
]
},
+ {
+ "operatingsystem": "Debian",
+ "operatingsystemrelease": [
+ "11"
+ ]
+ },
{
"operatingsystem": "Ubuntu",
"operatingsystemrelease": [
diff --git a/spec/acceptance/default_parameters_spec.rb b/spec/acceptance/default_parameters_spec.rb
index a7d02f98..e46486a8 100644
--- a/spec/acceptance/default_parameters_spec.rb
+++ b/spec/acceptance/default_parameters_spec.rb
@@ -1,3 +1,5 @@
+# frozen_string_literal: true
+
require 'spec_helper_acceptance'
describe 'jira postgresql' do
@@ -13,17 +15,27 @@
'Debian' => '/usr/lib/jvm/java-1.11.0-openjdk-amd64',
}
- class { 'postgresql::server': }
+ # The output of `systemctl status postgresql` is non ascii which
+ # breaks the Exec in Postgresql::Server::Instance::Reload
+ # on rhel based docker containers
+ # We don't need the output.
+ class { 'postgresql::server':
+ service_status => 'systemctl status postgresql > /dev/null'
+ }
postgresql::server::db { 'jira':
user => 'jiraadm',
password => postgresql::postgresql_password('jiraadm', 'mypassword'),
}
+ # There is a bug in the check-java.sh that prevents jira from starting on Centos Stream 8
+ # https://jira.atlassian.com/browse/JRASERVER-77097
+ # Running with script_check_java_manage => true to solve this
class { 'jira':
- java_package => $java_package,
- javahome => $java_home,
- require => Postgresql::Server::Db['jira'],
+ java_package => $java_package,
+ javahome => $java_home,
+ script_check_java_manage => true,
+ require => Postgresql::Server::Db['jira'],
}
EOS
pp_upgrade = <<-EOS
@@ -38,27 +50,30 @@ class { 'jira':
}
class { 'jira':
- version => '8.16.0',
- java_package => $java_package,
- javahome => $java_home,
+ version => '8.16.0',
+ java_package => $java_package,
+ javahome => $java_home,
+ script_check_java_manage => true,
}
EOS
# jira just takes *ages* to start up :-(
- WGET_CMD = 'wget -q --tries=24 --retry-connrefused --read-timeout=10 localhost:8080'.freeze
+ wget_cmd = 'wget -q --tries=24 --retry-connrefused --read-timeout=10 localhost:8080'
apply_manifest(pp, catch_failures: true)
- sleep 60
- shell WGET_CMD, acceptable_exit_codes: [0, 8]
- sleep 60
- shell WGET_CMD, acceptable_exit_codes: [0, 8]
- sleep 60
- apply_manifest(pp_upgrade, catch_failures: true)
- sleep 60
- shell WGET_CMD, acceptable_exit_codes: [0, 8]
- sleep 60
- shell WGET_CMD, acceptable_exit_codes: [0, 8]
- sleep 60
+ sleep SLEEP_SECONDS
+ shell wget_cmd, acceptable_exit_codes: [0, 8]
+ sleep SLEEP_SECONDS
+ shell wget_cmd, acceptable_exit_codes: [0, 8]
+
+ apply_manifest(pp, catch_changes: true)
+
apply_manifest(pp_upgrade, catch_failures: true)
+ sleep SLEEP_SECONDS
+ shell wget_cmd, acceptable_exit_codes: [0, 8]
+ sleep SLEEP_SECONDS
+ shell wget_cmd, acceptable_exit_codes: [0, 8]
+
+ apply_manifest(pp_upgrade, catch_changes: true)
end
describe process('java') do
@@ -74,15 +89,8 @@ class { 'jira':
it { is_expected.to be_running }
end
- describe user('jira') do
- it { is_expected.to exist }
- end
-
describe user('jira') do
it { is_expected.to belong_to_group 'jira' }
- end
-
- describe user('jira') do
it { is_expected.to have_login_shell '/bin/true' }
end
diff --git a/spec/acceptance/mysql_spec.rb b/spec/acceptance/mysql_spec.rb
index 88859118..9c18e857 100644
--- a/spec/acceptance/mysql_spec.rb
+++ b/spec/acceptance/mysql_spec.rb
@@ -1,10 +1,31 @@
+# frozen_string_literal: true
+
require 'spec_helper_acceptance'
describe 'jira mysql' do
it 'installs with defaults' do
pp = <<-EOS
+ # On ubuntu 20.04 and 22.04 the default is to install mariadb
+ # As the ubuntu 20.04 runner we use in github actions allready has mysql installed
+ # a apparmor error is triggerd when using mariadb in this test..
+ # Forcing the use of mysql
+ if $facts['os']['name'] == 'Ubuntu' and versioncmp($facts['os']['release']['major'], '20.04') >= 0 {
+ $mysql_service_name = 'mysql'
+ $mysql_server_package = 'mysql-server'
+ $mysql_client_package = 'mysql-client'
+ } else {
+ $mysql_service_name = undef
+ $mysql_server_package = undef
+ $mysql_client_package = undef
+ }
+
class { 'mysql::server':
root_password => 'strongpassword',
+ package_name => $mysql_server_package,
+ service_name => $mysql_service_name,
+ }
+ class { 'mysql::client':
+ package_name => $mysql_client_package,
}
# Default MySQL is too old for utf8mb4 on CentOS 7, or something. Also Ubuntu 20.04
@@ -29,7 +50,7 @@ class { 'java':
}
exec { 'tmpkey':
- command => "openssl req -x509 -nodes -days 1 -subj '/C=CA/ST=QC/L=Montreal/O=FOO/CN=${fqdn}' -newkey rsa:1024 -keyout /tmp/key.pem -out /tmp/cert.pem",
+ command => "openssl req -x509 -nodes -days 1 -subj '/C=CA/ST=QC/L=Montreal/O=FOO/CN=${facts['networking']['fqdn']}' -newkey rsa:1024 -keyout /tmp/key.pem -out /tmp/cert.pem",
path => [ "/bin/", "/sbin/" , "/usr/bin/", "/usr/sbin/" ],
creates => '/tmp/cert.pem',
}
@@ -44,29 +65,33 @@ class { 'java':
require => Exec['tmpkey'],
}
+ # There is a bug in the check-java.sh that prevents jira from starting on Centos Stream 8
+ # https://jira.atlassian.com/browse/JRASERVER-77097
+ # Running with script_check_java_manage => true to solve this
class { 'jira':
- installdir => '/opt/atlassian-jira',
- homedir => '/opt/jira-home',
- javahome => '/usr',
- jvm_type => 'oracle-jdk-1.8',
- db => 'mysql',
- dbport => 3306,
- dbdriver => 'com.mysql.jdbc.Driver',
- dbtype => 'mysql',
- tomcat_port => 8081,
- tomcat_native_ssl => true,
- tomcat_keystore_file => '/tmp/jira.ks',
- require => [Mysql::Db['jira'], Java_ks['jira']],
+ installdir => '/opt/atlassian-jira',
+ homedir => '/opt/jira-home',
+ javahome => '/usr',
+ jvm_type => 'oracle-jdk-1.8',
+ db => 'mysql',
+ dbport => 3306,
+ dbdriver => 'com.mysql.jdbc.Driver',
+ dbtype => 'mysql',
+ tomcat_port => 8081,
+ tomcat_native_ssl => true,
+ tomcat_keystore_file => '/tmp/jira.ks',
+ script_check_java_manage => true,
+ require => [Mysql::Db['jira'], Java_ks['jira']],
}
EOS
- WGET_CMD = 'wget -q --tries=24 --retry-connrefused --read-timeout=10 --no-check-certificate localhost:8081'.freeze
+ wget_cmd = 'wget -q --tries=24 --retry-connrefused --read-timeout=10 --no-check-certificate localhost:8081'
apply_manifest(pp, catch_failures: true)
- sleep 60
- shell WGET_CMD, acceptable_exit_codes: [0, 8]
- sleep 60
- shell WGET_CMD, acceptable_exit_codes: [0, 8]
- sleep 60
+ sleep SLEEP_SECONDS
+ shell wget_cmd, acceptable_exit_codes: [0, 8]
+ sleep SLEEP_SECONDS
+ shell wget_cmd, acceptable_exit_codes: [0, 8]
+
apply_manifest(pp, catch_changes: true)
end
@@ -83,24 +108,19 @@ class { 'jira':
it { is_expected.to be_running }
end
- describe user('jira') do
- it { is_expected.to exist }
- end
-
describe user('jira') do
it { is_expected.to belong_to_group 'jira' }
- end
-
- describe user('jira') do
it { is_expected.to have_login_shell '/bin/true' }
end
- describe command('wget -q --tries=24 --retry-connrefused --no-check-certificate --read-timeout=10 -O- localhost:8081') do
- its(:stdout) { is_expected.to include('8.13.5') }
+ specify do
+ expect(command('wget -q --tries=24 --retry-connrefused --no-check-certificate --read-timeout=10 -O- localhost:8081')).
+ to have_attributes(stdout: %r{8.13.5})
end
- describe command('wget -q --tries=24 --retry-connrefused --no-check-certificate --read-timeout=10 -O- https://localhost:8443') do
- its(:stdout) { is_expected.to include('8.13.5') }
+ specify do
+ expect(command('wget -q --tries=24 --retry-connrefused --no-check-certificate --read-timeout=10 -O- https://localhost:8443')).
+ to have_attributes(stdout: %r{8.13.5})
end
describe 'shutdown' do
diff --git a/spec/classes/jira_config_spec.rb b/spec/classes/jira_config_spec.rb
index 3f909485..a1311dc1 100644
--- a/spec/classes/jira_config_spec.rb
+++ b/spec/classes/jira_config_spec.rb
@@ -1,11 +1,13 @@
-require 'spec_helper.rb'
+# frozen_string_literal: true
+
+require 'spec_helper'
# set some constants to keep it DRY
-REGEXP_DISABLE_NOTIFICATIONS = %r{#DISABLE_NOTIFICATIONS=}
-REGEXP_POSTGRESQL_URL = %r{jdbc:postgresql://localhost:5432/jira}
-REGEXP_PUBLIC_SCHEMA = %r{public}
-HTTP11 = 'HTTP/1.1'.freeze
-PLUGIN_SOURCE_URL = 'https://www.example.com/fine-jira-plugin.tgz'.freeze
+REGEXP_DISABLE_NOTIFICATIONS = %r{#DISABLE_NOTIFICATIONS=}.freeze
+REGEXP_POSTGRESQL_URL = %r{jdbc:postgresql://localhost:5432/jira}.freeze
+REGEXP_PUBLIC_SCHEMA = %r{public}.freeze
+HTTP11 = 'HTTP/1.1'
+PLUGIN_SOURCE_URL = 'https://www.example.com/fine-jira-plugin.tgz'
describe 'jira' do
describe 'jira::config' do
let(:params) do
@@ -24,13 +26,17 @@
context 'default params' do
it { is_expected.to compile.with_all_deps }
+
it do
is_expected.to contain_file(FILENAME_SETENV_SH).
with_content(REGEXP_DISABLE_NOTIFICATIONS)
end
+
it { is_expected.to contain_file(FILENAME_USER_SH) }
it { is_expected.to contain_file(FILENAME_SERVER_XML) }
+
# Also ensure that we actually omit elements by default
+
it do
is_expected.to contain_file(FILENAME_DBCONFIG_XML).
with_content(REGEXP_POSTGRESQL_URL).
@@ -48,6 +54,7 @@
with_content(%r{select version\(\);}).
with_content(%r{tcpKeepAlive=true;socketTimeout=240})
end
+
it { is_expected.not_to contain_file(FILENAME_CLUSTER_PROPS) }
it { is_expected.not_to contain_file(FILENAME_CHECK_JAVA_SH) }
end
@@ -75,6 +82,7 @@
it { is_expected.to compile.with_all_deps }
it { is_expected.to contain_package('java-11-openjdk-headless') }
+
it do
is_expected.to contain_file(FILENAME_DBCONFIG_XML).
with_content(%r{select 1}).
@@ -96,6 +104,7 @@
it { is_expected.to contain_file(FILENAME_SETENV_SH) }
it { is_expected.to contain_file(FILENAME_USER_SH) }
it { is_expected.to contain_file(FILENAME_SERVER_XML) }
+
it do
is_expected.to contain_file(FILENAME_DBCONFIG_XML).
with_content(%r{TEST-SETTING;}).
@@ -115,6 +124,7 @@
it { is_expected.to contain_file(FILENAME_SETENV_SH) }
it { is_expected.to contain_file(FILENAME_USER_SH) }
it { is_expected.to contain_file(FILENAME_SERVER_XML) }
+
it do
is_expected.to contain_file(FILENAME_DBCONFIG_XML).
with_content(%r{jdbc:mysql://localhost:3306/jira})
@@ -273,6 +283,7 @@
it { is_expected.to contain_file(FILENAME_SETENV_SH) }
it { is_expected.to contain_file(FILENAME_USER_SH) }
it { is_expected.to contain_file(FILENAME_SERVER_XML) }
+
it do
is_expected.to contain_file(FILENAME_DBCONFIG_XML).
with_content(REGEXP_PUBLIC_SCHEMA)
@@ -301,7 +312,7 @@
it do
is_expected.to contain_file(FILENAME_SERVER_XML).
- with_content(%r{ 'https',
+ 'scheme' => 'https',
'proxyName' => 'www.example.com',
'proxyPort' => '9999'
}
@@ -539,7 +537,7 @@
let(:params) do
super().merge(
proxy: {
- 'scheme' => 'https',
+ 'scheme' => 'https',
'proxyName' => 'www.example.com',
'proxyPort' => '9999'
},
@@ -561,7 +559,7 @@
let(:params) do
super().merge(
ajp: {
- 'port' => '8009',
+ 'port' => '8009',
'protocol' => 'AJP/1.3'
}
)
@@ -572,11 +570,12 @@
with_content(%r{})
end
end
+
context 'with valid config including protocol org.apache.coyote.ajp.AjpNioProtocol' do
let(:params) do
super().merge(
ajp: {
- 'port' => '8009',
+ 'port' => '8009',
'protocol' => 'org.apache.coyote.ajp.AjpNioProtocol'
}
)
@@ -837,21 +836,25 @@
end
it { is_expected.to compile.with_all_deps }
+
it do
is_expected.to contain_file(FILENAME_SETENV_SH).
with_content(REGEXP_DISABLE_NOTIFICATIONS).
with_content(%r{JVM_SUPPORT_RECOMMENDED_ARGS=''}).
- with_content(%r{JVM_GC_ARGS='.+ \-XX:\+ExplicitGCInvokesConcurrent}).
+ with_content(%r{JVM_GC_ARGS='.+ -XX:\+ExplicitGCInvokesConcurrent}).
with_content(%r{JVM_CODE_CACHE_ARGS='\S+InitialCodeCacheSize=32m \S+ReservedCodeCacheSize=512m}).
with_content(%r{JVM_REQUIRED_ARGS='.+InterningDocumentFactory})
end
+
it { is_expected.to contain_file(FILENAME_USER_SH) }
it { is_expected.to contain_file(FILENAME_SERVER_XML) }
+
it do
is_expected.to contain_file(FILENAME_DBCONFIG_XML).
with_content(REGEXP_POSTGRESQL_URL).
with_content(REGEXP_PUBLIC_SCHEMA)
end
+
it { is_expected.not_to contain_file(FILENAME_CLUSTER_PROPS) }
it { is_expected.not_to contain_file(FILENAME_CHECK_JAVA_SH) }
end
@@ -867,6 +870,7 @@
end
it { is_expected.to compile.with_all_deps }
+
it do
is_expected.to contain_file(FILENAME_SETENV_SH).
with_content(REGEXP_DISABLE_NOTIFICATIONS).
@@ -875,13 +879,16 @@
with_content(%r{JVM_CODE_CACHE_ARGS=\S+TEST_CODECACHE}).
with_content(%r{JVM_EXTRA_ARGS=\S+TEST_EXTRA})
end
+
it { is_expected.to contain_file(FILENAME_USER_SH) }
it { is_expected.to contain_file(FILENAME_SERVER_XML) }
+
it do
is_expected.to contain_file(FILENAME_DBCONFIG_XML).
with_content(REGEXP_POSTGRESQL_URL).
with_content(REGEXP_PUBLIC_SCHEMA)
end
+
it { is_expected.not_to contain_file(FILENAME_CLUSTER_PROPS) }
it { is_expected.not_to contain_file(FILENAME_CHECK_JAVA_SH) }
end
diff --git a/spec/classes/jira_init_spec.rb b/spec/classes/jira_init_spec.rb
index 7abae5b2..6a7599de 100644
--- a/spec/classes/jira_init_spec.rb
+++ b/spec/classes/jira_init_spec.rb
@@ -1,4 +1,6 @@
-require 'spec_helper.rb'
+# frozen_string_literal: true
+
+require 'spec_helper'
describe 'jira' do
describe 'jira::init' do
diff --git a/spec/classes/jira_install_spec.rb b/spec/classes/jira_install_spec.rb
index 2438bddd..aa6cb488 100644
--- a/spec/classes/jira_install_spec.rb
+++ b/spec/classes/jira_install_spec.rb
@@ -1,7 +1,9 @@
-require 'spec_helper.rb'
+# frozen_string_literal: true
+
+require 'spec_helper'
# set some constants to keep it DRY
-DOWNLOAD_URL = 'https://product-downloads.atlassian.com/software/jira/downloads'.freeze
+DOWNLOAD_URL = 'https://product-downloads.atlassian.com/software/jira/downloads'
describe 'jira' do
describe 'jira::install' do
@@ -24,9 +26,9 @@
context 'default params' do
let(:params) do
super().merge(
- user: 'jira',
- group: 'jira',
- homedir: '/home/jira',
+ user: 'jira',
+ group: 'jira',
+ homedir: '/home/jira',
download_url: DOWNLOAD_URL
)
end
@@ -34,13 +36,14 @@
it { is_expected.to compile.with_all_deps }
it { is_expected.to contain_group('jira') }
it { is_expected.to contain_user('jira').with_shell('/bin/true') }
+
it "deploys jira #{DEFAULT_VERSION} from tar.gz" do
is_expected.to contain_archive("/tmp/#{PRODUCT_VERSION_STRING}.tar.gz").
- with('extract_path' => "/opt/jira/#{PRODUCT_VERSION_STRING}-standalone",
- 'source' => "#{DOWNLOAD_URL}/#{PRODUCT_VERSION_STRING}.tar.gz",
- 'creates' => "/opt/jira/#{PRODUCT_VERSION_STRING}-standalone/conf",
- 'user' => 'jira',
- 'group' => 'jira',
+ with('extract_path' => "/opt/jira/#{PRODUCT_VERSION_STRING}-standalone",
+ 'source' => "#{DOWNLOAD_URL}/#{PRODUCT_VERSION_STRING}.tar.gz",
+ 'creates' => "/opt/jira/#{PRODUCT_VERSION_STRING}-standalone/conf",
+ 'user' => 'jira',
+ 'group' => 'jira',
'checksum_type' => 'md5')
end
@@ -61,11 +64,11 @@
it "deploys jira #{DEFAULT_VERSION} from tar.gz" do
is_expected.to contain_archive("/tmp/#{PRODUCT_VERSION_STRING}.tar.gz").
- with('extract_path' => "/opt/jira/#{PRODUCT_VERSION_STRING}-standalone",
- 'source' => "#{DOWNLOAD_URL}/#{PRODUCT_VERSION_STRING}.tar.gz",
- 'creates' => "/opt/jira/#{PRODUCT_VERSION_STRING}-standalone/conf",
- 'user' => 'jira',
- 'group' => 'jira',
+ with('extract_path' => "/opt/jira/#{PRODUCT_VERSION_STRING}-standalone",
+ 'source' => "#{DOWNLOAD_URL}/#{PRODUCT_VERSION_STRING}.tar.gz",
+ 'creates' => "/opt/jira/#{PRODUCT_VERSION_STRING}-standalone/conf",
+ 'user' => 'jira',
+ 'group' => 'jira',
'checksum_type' => 'md5')
end
end
@@ -73,18 +76,18 @@
context 'core product' do
let(:params) do
super().merge(
- product: 'jira-core',
+ product: 'jira-core',
download_url: DOWNLOAD_URL
)
end
it "deploys jira #{DEFAULT_VERSION} from tar.gz" do
is_expected.to contain_archive("/tmp/#{PRODUCT_VERSION_STRING_CORE}.tar.gz").
- with('extract_path' => "/opt/jira/#{PRODUCT_VERSION_STRING_CORE}-standalone",
- 'source' => "#{DOWNLOAD_URL}/#{PRODUCT_VERSION_STRING_CORE}.tar.gz",
- 'creates' => "/opt/jira/#{PRODUCT_VERSION_STRING_CORE}-standalone/conf",
- 'user' => 'jira',
- 'group' => 'jira',
+ with('extract_path' => "/opt/jira/#{PRODUCT_VERSION_STRING_CORE}-standalone",
+ 'source' => "#{DOWNLOAD_URL}/#{PRODUCT_VERSION_STRING_CORE}.tar.gz",
+ 'creates' => "/opt/jira/#{PRODUCT_VERSION_STRING_CORE}-standalone/conf",
+ 'user' => 'jira',
+ 'group' => 'jira',
'checksum_type' => 'md5')
end
end
@@ -97,11 +100,11 @@
)
end
let(:pre_condition) do
- <<-PRE
-user {'jira':
- comment => 'My Personal Managed Account',
-}
-group {'jira':}
+ <<~PRE
+ user {'jira':
+ comment => 'My Personal Managed Account',
+ }
+ group {'jira':}
PRE
end
@@ -112,38 +115,39 @@
context 'overwriting params' do
let(:params) do
super().merge(
- homedir: '/random/homedir',
- user: 'foo',
- group: 'bar',
- uid: 333,
- gid: 444,
- shell: '/bin/bash',
+ homedir: '/random/homedir',
+ user: 'foo',
+ group: 'bar',
+ uid: 333,
+ gid: 444,
+ shell: '/bin/bash',
download_url: DOWNLOAD_URL
)
end
it do
- is_expected.to contain_user('foo').with('home' => '/random/homedir',
+ is_expected.to contain_user('foo').with('home' => '/random/homedir',
'shell' => '/bin/bash',
- 'uid' => 333,
- 'gid' => 444)
+ 'uid' => 333,
+ 'gid' => 444)
end
+
it { is_expected.to contain_group('bar') }
it "deploys jira #{DEFAULT_VERSION} from tar.gz" do
is_expected.to contain_archive("/tmp/#{PRODUCT_VERSION_STRING}.tar.gz").
- with('extract_path' => "/opt/jira/#{PRODUCT_VERSION_STRING}-standalone",
- 'source' => "#{DOWNLOAD_URL}/#{PRODUCT_VERSION_STRING}.tar.gz",
- 'creates' => "/opt/jira/#{PRODUCT_VERSION_STRING}-standalone/conf",
- 'user' => 'foo',
- 'group' => 'bar',
+ with('extract_path' => "/opt/jira/#{PRODUCT_VERSION_STRING}-standalone",
+ 'source' => "#{DOWNLOAD_URL}/#{PRODUCT_VERSION_STRING}.tar.gz",
+ 'creates' => "/opt/jira/#{PRODUCT_VERSION_STRING}-standalone/conf",
+ 'user' => 'foo',
+ 'group' => 'bar',
'checksum_type' => 'md5')
end
it 'manages the jira home directory' do
is_expected.to contain_file('/random/homedir').with('ensure' => 'directory',
- 'owner' => 'foo',
- 'group' => 'bar')
+ 'owner' => 'foo',
+ 'group' => 'bar')
end
end
end
diff --git a/spec/classes/jira_mysql_connector_spec.rb b/spec/classes/jira_mysql_connector_spec.rb
index 048439cb..3a1b3abf 100644
--- a/spec/classes/jira_mysql_connector_spec.rb
+++ b/spec/classes/jira_mysql_connector_spec.rb
@@ -1,8 +1,10 @@
-require 'spec_helper.rb'
+# frozen_string_literal: true
+
+require 'spec_helper'
# set some constants to keep it DRY
-PATH_MYSQL_CONNECTOR = '/opt/MySQL-connector'.freeze
-PATH_MYSQL_CONNECTOR_LIB = "#{PATH_INSTALLATION_BASE}/lib/mysql-connector-java.jar".freeze
+PATH_MYSQL_CONNECTOR = '/opt/MySQL-connector'
+PATH_MYSQL_CONNECTOR_LIB = "#{PATH_INSTALLATION_BASE}/lib/mysql-connector-java.jar"
describe 'jira' do
describe 'jira::mysql_connector' do
@@ -30,6 +32,7 @@
it { is_expected.to compile.with_all_deps }
it { is_expected.to contain_file(PATH_MYSQL_CONNECTOR).with_ensure('directory') }
+
it do
is_expected.to contain_file(PATH_MYSQL_CONNECTOR_LIB).
with(
@@ -37,13 +40,15 @@
'target' => "#{PATH_MYSQL_CONNECTOR}/mysql-connector-java-5.1.34/mysql-connector-java-5.1.34-bin.jar"
)
end
+
it 'deploys mysql connector 5.1.34 from tar.gz' do
is_expected.to contain_archive("#{PATH_MYSQL_CONNECTOR}/mysql-connector-java-5.1.34.tar.gz").
- with('source' => 'https://dev.mysql.com/get/Downloads/Connector-J/mysql-connector-java-5.1.34.tar.gz',
+ with('source' => 'https://dev.mysql.com/get/Downloads/Connector-J/mysql-connector-java-5.1.34.tar.gz',
'extract_path' => PATH_MYSQL_CONNECTOR,
- 'creates' => "#{PATH_MYSQL_CONNECTOR}/mysql-connector-java-5.1.34")
+ 'creates' => "#{PATH_MYSQL_CONNECTOR}/mysql-connector-java-5.1.34")
end
end
+
context 'mysql connector defaults Connector Version >8' do
let(:params) do
super().merge(
@@ -53,6 +58,7 @@
it { is_expected.to compile.with_all_deps }
it { is_expected.to contain_file(PATH_MYSQL_CONNECTOR).with_ensure('directory') }
+
it do
is_expected.to contain_file(PATH_MYSQL_CONNECTOR_LIB).
with(
@@ -60,13 +66,15 @@
'target' => "#{PATH_MYSQL_CONNECTOR}/mysql-connector-java-8.0.23/mysql-connector-java-8.0.23.jar"
)
end
+
it 'deploys mysql connector 8.0.23 from tar.gz' do
is_expected.to contain_archive('/opt/MySQL-connector/mysql-connector-java-8.0.23.tar.gz').
- with('source' => 'https://dev.mysql.com/get/Downloads/Connector-J/mysql-connector-java-8.0.23.tar.gz',
+ with('source' => 'https://dev.mysql.com/get/Downloads/Connector-J/mysql-connector-java-8.0.23.tar.gz',
'extract_path' => PATH_MYSQL_CONNECTOR,
- 'creates' => "#{PATH_MYSQL_CONNECTOR}/mysql-connector-java-8.0.23")
+ 'creates' => "#{PATH_MYSQL_CONNECTOR}/mysql-connector-java-8.0.23")
end
end
+
context 'mysql connector overwrite params' do
let(:params) do
super().merge(
@@ -78,6 +86,7 @@
end
it { is_expected.to contain_file('/opt/foo').with_ensure('directory') }
+
it do
is_expected.to contain_file(PATH_MYSQL_CONNECTOR_LIB).
with(
@@ -85,13 +94,15 @@
'target' => '/opt/foo/mysql-connector-java-5.1.15/mysql-connector-java-5.1.15-bin.jar'
)
end
+
it 'deploys mysql connector 5.1.15 from zip' do
is_expected.to contain_archive('/opt/foo/mysql-connector-java-5.1.15.zip').
- with('source' => 'http://example.co.za/foo/mysql-connector-java-5.1.15.zip',
+ with('source' => 'http://example.co.za/foo/mysql-connector-java-5.1.15.zip',
'extract_path' => '/opt/foo',
- 'creates' => '/opt/foo/mysql-connector-java-5.1.15')
+ 'creates' => '/opt/foo/mysql-connector-java-5.1.15')
end
end
+
context 'mysql_connector_mangage equals false' do
let(:params) do
super().merge(
diff --git a/spec/classes/jira_service_spec.rb b/spec/classes/jira_service_spec.rb
index 2507e02e..542a2e5c 100644
--- a/spec/classes/jira_service_spec.rb
+++ b/spec/classes/jira_service_spec.rb
@@ -1,4 +1,6 @@
-require 'spec_helper.rb'
+# frozen_string_literal: true
+
+require 'spec_helper'
describe 'jira' do
describe 'jira::service' do
@@ -22,6 +24,7 @@
is_expected.to contain_file('/etc/systemd/system/jira.service').
with_content(%r{Atlassian Systemd Jira Service})
end
+
it { is_expected.to contain_service('jira') }
end
@@ -32,6 +35,7 @@
it { is_expected.not_to contain_service('jira') }
end
+
context 'with service_ensure set to stopped' do
let(:params) do
super().merge(
diff --git a/spec/classes/jira_sso_spec.rb b/spec/classes/jira_sso_spec.rb
index 8c6c1b8e..9f1eaaff 100644
--- a/spec/classes/jira_sso_spec.rb
+++ b/spec/classes/jira_sso_spec.rb
@@ -1,7 +1,9 @@
-require 'spec_helper.rb'
+# frozen_string_literal: true
+
+require 'spec_helper'
# set some constants to keep it DRY
-PATH_CROWD_PROPS = "#{PATH_INSTALLATION_BASE}/atlassian-jira/WEB-INF/classes/crowd.properties".freeze
+PATH_CROWD_PROPS = "#{PATH_INSTALLATION_BASE}/atlassian-jira/WEB-INF/classes/crowd.properties"
describe 'jira' do
describe 'jira::sso' do
@@ -38,6 +40,7 @@
with_content(%r{application.name appname})
end
end
+
context 'with non default params' do
let(:params) do
super().merge(
@@ -50,6 +53,7 @@
end
it { is_expected.to contain_file(PATH_CROWD_PROPS) }
+
it do
is_expected.to contain_file(PATH_CROWD_PROPS).
with_content(%r{application.name app}).
diff --git a/spec/classes/jira_upgrade_spec.rb b/spec/classes/jira_upgrade_spec.rb
index b08d7b01..d5685267 100644
--- a/spec/classes/jira_upgrade_spec.rb
+++ b/spec/classes/jira_upgrade_spec.rb
@@ -1,4 +1,6 @@
-require 'spec_helper.rb'
+# frozen_string_literal: true
+
+require 'spec_helper'
describe 'jira' do
describe 'jira::install' do
@@ -18,11 +20,13 @@
end
it { is_expected.to compile.with_all_deps }
+
it do
is_expected.to contain_exec('stop-jira-for-version-change').
with_command('systemctl stop jira.service && sleep 15')
end
end
+
context 'custom params' do
let(:params) do
{
diff --git a/spec/spec_helper.rb b/spec/spec_helper.rb
index 57a70076..1cc84c92 100644
--- a/spec/spec_helper.rb
+++ b/spec/spec_helper.rb
@@ -1,19 +1,21 @@
+# frozen_string_literal: true
+
# Managed by modulesync - DO NOT EDIT
# https://voxpupuli.org/docs/updating-files-managed-with-modulesync/
# puppetlabs_spec_helper will set up coverage if the env variable is set.
# We want to do this if lib exists and it hasn't been explicitly set.
-ENV['COVERAGE'] ||= 'yes' if Dir.exist?(File.expand_path('../../lib', __FILE__))
+ENV['COVERAGE'] ||= 'yes' if Dir.exist?(File.expand_path('../lib', __dir__))
require 'voxpupuli/test/spec_helper'
+add_mocked_facts!
+
if File.exist?(File.join(__dir__, 'default_module_facts.yml'))
facts = YAML.safe_load(File.read(File.join(__dir__, 'default_module_facts.yml')))
- if facts
- facts.each do |name, value|
- add_custom_fact name.to_sym, value
- end
+ facts&.each do |name, value|
+ add_custom_fact name.to_sym, value
end
end
-require 'support/acceptance/constants.rb'
+Dir['./spec/support/spec/**/*.rb'].sort.each { |f| require f }
diff --git a/spec/spec_helper_acceptance.rb b/spec/spec_helper_acceptance.rb
index 92d91305..6113d619 100644
--- a/spec/spec_helper_acceptance.rb
+++ b/spec/spec_helper_acceptance.rb
@@ -1,12 +1,14 @@
+# frozen_string_literal: true
+
# This file is completely managed via modulesync
require 'voxpupuli/acceptance/spec_helper_acceptance'
configure_beaker do |host|
- install_module_from_forge_on(host, 'puppetlabs-apt', '>= 4.1.0 < 9.0.0') if fact_on(host, 'os.family') == 'Debian'
- install_module_from_forge_on(host, 'puppetlabs-java', '>= 2.1.0 < 8.0.0')
- install_module_from_forge_on(host, 'puppetlabs-java_ks', '>= 1.6.0 < 4.0.0')
- install_module_from_forge_on(host, 'puppetlabs-mysql', '>= 4.0.1 < 13.0.0')
- install_module_from_forge_on(host, 'puppetlabs-postgresql', '>= 5.1.0 < 8.0.0')
+ install_puppet_module_via_pmt_on(host, 'puppetlabs-apt') if fact_on(host, 'os.family') == 'Debian'
+ install_puppet_module_via_pmt_on(host, 'puppetlabs-java')
+ install_puppet_module_via_pmt_on(host, 'puppetlabs-java_ks')
+ install_puppet_module_via_pmt_on(host, 'puppetlabs-mysql')
+ install_puppet_module_via_pmt_on(host, 'puppetlabs-postgresql')
end
Dir['./spec/support/acceptance/**/*.rb'].sort.each { |f| require f }
diff --git a/spec/support/acceptance/constants.rb b/spec/support/acceptance/constants.rb
index aeb8f814..c10eb90b 100644
--- a/spec/support/acceptance/constants.rb
+++ b/spec/support/acceptance/constants.rb
@@ -1,16 +1,4 @@
-# set some constants to keep it DRY
-DEFAULT_VERSION = '8.13.5'.freeze
-PRODUCT_VERSION_STRING = "atlassian-jira-software-#{DEFAULT_VERSION}".freeze
-PRODUCT_VERSION_STRING_CORE = "atlassian-jira-core-#{DEFAULT_VERSION}".freeze
-
-PATH_JAVA_HOME = '/opt/java'.freeze
-PATH_JIRA_DIR = '/opt/jira'.freeze
-PATH_INSTALLATION_BASE = "#{PATH_JIRA_DIR}/#{PRODUCT_VERSION_STRING}-standalone".freeze
+# frozen_string_literal: true
-FILENAME_SETENV_SH = "#{PATH_INSTALLATION_BASE}/bin/setenv.sh".freeze
-FILENAME_USER_SH = "#{PATH_INSTALLATION_BASE}/bin/user.sh".freeze
-FILENAME_CHECK_JAVA_SH = "#{PATH_INSTALLATION_BASE}/bin/check-java.sh".freeze
-FILENAME_SERVER_XML = "#{PATH_INSTALLATION_BASE}/conf/server.xml".freeze
-FILENAME_DBCONFIG_XML = '/home/jira/dbconfig.xml'.freeze
-FILENAME_CLUSTER_PROPS = '/home/jira/cluster.properties'.freeze
-FILENAME_JIRA_CONFIG_PROPS = '/home/jira/jira-config.properties'.freeze
+# set some constants to keep it DRY
+SLEEP_SECONDS = 120
diff --git a/spec/support/spec/constants.rb b/spec/support/spec/constants.rb
new file mode 100644
index 00000000..880f217a
--- /dev/null
+++ b/spec/support/spec/constants.rb
@@ -0,0 +1,18 @@
+# frozen_string_literal: true
+
+# set some constants to keep it DRY
+DEFAULT_VERSION = '8.13.5'
+PRODUCT_VERSION_STRING = "atlassian-jira-software-#{DEFAULT_VERSION}"
+PRODUCT_VERSION_STRING_CORE = "atlassian-jira-core-#{DEFAULT_VERSION}"
+
+PATH_JAVA_HOME = '/opt/java'
+PATH_JIRA_DIR = '/opt/jira'
+PATH_INSTALLATION_BASE = "#{PATH_JIRA_DIR}/#{PRODUCT_VERSION_STRING}-standalone"
+
+FILENAME_SETENV_SH = "#{PATH_INSTALLATION_BASE}/bin/setenv.sh"
+FILENAME_USER_SH = "#{PATH_INSTALLATION_BASE}/bin/user.sh"
+FILENAME_CHECK_JAVA_SH = "#{PATH_INSTALLATION_BASE}/bin/check-java.sh"
+FILENAME_SERVER_XML = "#{PATH_INSTALLATION_BASE}/conf/server.xml"
+FILENAME_DBCONFIG_XML = '/home/jira/dbconfig.xml'
+FILENAME_CLUSTER_PROPS = '/home/jira/cluster.properties'
+FILENAME_JIRA_CONFIG_PROPS = '/home/jira/jira-config.properties'
diff --git a/spec/type_aliases/jvm_types_spec.rb b/spec/type_aliases/jvm_types_spec.rb
index b10fbf79..d821ef2d 100644
--- a/spec/type_aliases/jvm_types_spec.rb
+++ b/spec/type_aliases/jvm_types_spec.rb
@@ -1,3 +1,5 @@
+# frozen_string_literal: true
+
require 'spec_helper'
describe 'Jira::Jvm_types' do
diff --git a/spec/type_aliases/tomcat_attributes_spec.rb b/spec/type_aliases/tomcat_attributes_spec.rb
index f0968dd4..3e9c8e69 100644
--- a/spec/type_aliases/tomcat_attributes_spec.rb
+++ b/spec/type_aliases/tomcat_attributes_spec.rb
@@ -1,3 +1,5 @@
+# frozen_string_literal: true
+
require 'spec_helper'
describe 'Jira::Tomcat_attributes' do
diff --git a/spec/type_aliases/tomcat_connectors_spec.rb b/spec/type_aliases/tomcat_connectors_spec.rb
index 18c135ca..e15c9a4c 100644
--- a/spec/type_aliases/tomcat_connectors_spec.rb
+++ b/spec/type_aliases/tomcat_connectors_spec.rb
@@ -1,3 +1,5 @@
+# frozen_string_literal: true
+
require 'spec_helper'
describe 'Jira::Tomcat_connectors' do
diff --git a/templates/check-java.sh.erb b/templates/check-java.sh.erb
index 9af7e3e3..9153fc8d 100644
--- a/templates/check-java.sh.erb
+++ b/templates/check-java.sh.erb
@@ -4,7 +4,7 @@
# This file is nearly identical to 'check-java.sh' in the Jira 8.15.0 standalone tarball. Shebang was changed to bash
# (does not need to stay /bin/sh, since it is called by catalina.sh, which itself has /bin/bash as shebang) to allow
# bashisms. Also errors detected by shellcheck were fixed .
-
+# The file also fixes https://jira.atlassian.com/browse/JRASERVER-77097
#
# check for correct java version by parsing out put of java -version
# we expect first line to be in format 'java version "1.8.0_161"' or 'java version "10.0.1" 2018-04-17'
@@ -17,20 +17,18 @@ java_version=0
if [[ $java_raw_version = *-ea* ]]
then
- # early access format e.g 11-ea
- IFS='-' read -ra values <<< "$java_raw_version"
- java_version=${values[0]}
+ # early access format e.g 11-ea or 11.0.18-ea
+ IFS='-' read -ra java_raw_version <<< "$java_raw_version"
+fi
+if [[ $java_raw_version = 1.* ]]
+then
+ # old format e.g. 1.8.0_161
+ IFS='.' read -ra values <<< "$java_raw_version"
+ java_version=${values[1]}
else
- if [[ $java_raw_version = 1.* ]]
- then
- # old format e.g. 1.8.0_161
- IFS='.' read -ra values <<< "$java_raw_version"
- java_version=${values[1]}
- else
- # new format e.g. 10.0.1
- IFS='.' read -ra values <<< "$java_raw_version"
- java_version=${values[0]}
- fi
+ # new format e.g. 10.0.1
+ IFS='.' read -ra values <<< "$java_raw_version"
+ java_version=${values[0]}
fi
if [ "$java_version" -ne 8 ] && [ "$java_version" -ne 11 ]
diff --git a/templates/cluster.properties.epp b/templates/cluster.properties.epp
index 38c50cdc..d66586c8 100644
--- a/templates/cluster.properties.epp
+++ b/templates/cluster.properties.epp
@@ -1,5 +1,5 @@
# This ID must be unique across the cluster
-jira.node.id = <%= $facts['fqdn'] %>
+jira.node.id = <%= $facts['networking']['fqdn'] %>
# The location of the shared home directory for all JIRA nodes
jira.shared.home = <%= $jira::shared_homedir %>
<% if $jira::ehcache_listener_host { -%>
diff --git a/templates/setenv.sh.epp b/templates/setenv.sh.epp
index 5c724d27..c212c01a 100755
--- a/templates/setenv.sh.epp
+++ b/templates/setenv.sh.epp
@@ -38,7 +38,7 @@ JVM_CODE_CACHE_ARGS='<%= pick_default($jira::jvm_code_cache_args, $jira::config:
#
# The following are the required arguments for Jira.
#
-<%- if versioncmp($jira::version, '8.11.0') > 0 { -%>
+<%- if ($jira::product != "servicedesk" and versioncmp($jira::version, '8.11.0') > 0) or ($jira::product == "servicedesk" and (versioncmp($jira::version, '4.11.0') > 0)){ -%>
JVM_REQUIRED_ARGS='-Djava.awt.headless=true -Datlassian.standalone=JIRA -Dorg.apache.jasper.runtime.BodyContentImpl.LIMIT_BUFFER=true -Dmail.mime.decodeparameters=true -Dorg.dom4j.factory=com.atlassian.core.xml.InterningDocumentFactory'
<% } else { -%>
JVM_REQUIRED_ARGS='-Djava.awt.headless=true -Datlassian.standalone=JIRA -Dorg.apache.jasper.runtime.BodyContentImpl.LIMIT_BUFFER=true -Dmail.mime.decodeparameters=true'
@@ -89,6 +89,14 @@ fi
JAVA_OPTS="-Xms${JVM_MINIMUM_MEMORY} -Xmx${JVM_MAXIMUM_MEMORY} ${JVM_CODE_CACHE_ARGS} ${JAVA_OPTS} ${JVM_REQUIRED_ARGS} ${DISABLE_NOTIFICATIONS} ${JVM_SUPPORT_RECOMMENDED_ARGS} ${JVM_EXTRA_ARGS} ${JIRA_HOME_MINUSD} ${START_JIRA_JAVA_OPTS}"
+j_ver=`echo "$($JAVA_HOME/bin/java -version 2>&1)" | grep "version" | awk '{ print substr($3, 2, length($3)-2); }'`
+IFS='.' read -a j_ver_parts <<< "$j_ver"
+
+if [[ ${j_ver_parts[0]} = 17 ]]; then
+ JVM_OPENS=$(cat $PRGDIR/java-opens.txt)
+ JAVA_OPTS="$JVM_OPENS $JAVA_OPTS"
+fi
+
export JAVA_OPTS
# DO NOT remove the following line