Skip to content

Commit

Permalink
fix service dependencies on newer versions
Browse files Browse the repository at this point in the history
  • Loading branch information
fraenki committed Jul 19, 2023
1 parent 725144f commit 9923023
Show file tree
Hide file tree
Showing 2 changed files with 71 additions and 25 deletions.
47 changes: 28 additions & 19 deletions manifests/instance.pp
Original file line number Diff line number Diff line change
Expand Up @@ -336,6 +336,26 @@
$_role_mappings = {}
}

# The contents of the subscribe/require parameters depends
# on the ActiveMQ Artemis version number.
$_service_subscribe_pre = [
Class['activemq::install'],
File["instance ${name} broker.xml"],
File["instance ${name} management.xml"],
File["instance ${name} bootstrap.xml"],
File["instance ${name} login.config"],
File_line["instance ${name} set HAWTIO_ROLE"],
File_line["instance ${name} set JAVA_ARGS"],
]
$_service_require_pre = [
File["instance ${name} broker.xml"],
File["instance ${name} management.xml"],
File["instance ${name} bootstrap.xml"],
File["instance ${name} login.config"],
File_line["instance ${name} set HAWTIO_ROLE"],
File_line["instance ${name} set JAVA_ARGS"],
]

# Create broker.xml configuration file.
file { "instance ${name} broker.xml":
path => $broker_xml,
Expand Down Expand Up @@ -416,6 +436,9 @@
Exec["create instance ${name}"]
],
}
# Update service subscribe/require parameters.
$_service_subscribe = $_service_subscribe_pre + [File["instance ${name} log4j2.properties"]]
$_service_require = $_service_require_pre + [File["instance ${name} log4j2.properties"]]
} else {
# Older versions use the logging.properties configuration file.
file { "instance ${name} logging.properties":
Expand All @@ -428,6 +451,9 @@
Exec["create instance ${name}"]
],
}
# Update service subscribe/require parameters.
$_service_subscribe = $_service_subscribe_pre + [File["instance ${name} logging.properties"]]
$_service_require = $_service_require_pre + [File["instance ${name} logging.properties"]]
}

# Create login.config file.
Expand Down Expand Up @@ -544,25 +570,8 @@
service { $instance_service:
ensure => $_service_ensure,
enable => $_service_enable,
subscribe => [
Class['activemq::install'],
File["instance ${name} broker.xml"],
File["instance ${name} management.xml"],
File["instance ${name} bootstrap.xml"],
File["instance ${name} logging.properties"],
File["instance ${name} login.config"],
File_line["instance ${name} set HAWTIO_ROLE"],
File_line["instance ${name} set JAVA_ARGS"],
],
require => [
File["instance ${name} broker.xml"],
File["instance ${name} management.xml"],
File["instance ${name} bootstrap.xml"],
File["instance ${name} logging.properties"],
File["instance ${name} login.config"],
File_line["instance ${name} set HAWTIO_ROLE"],
File_line["instance ${name} set JAVA_ARGS"],
],
subscribe => $_service_subscribe,
require => $_service_require,
}
}
}
49 changes: 43 additions & 6 deletions spec/classes/activemq_spec.rb
Original file line number Diff line number Diff line change
@@ -1,39 +1,76 @@
require 'spec_helper'

ACTIVEMQ_VERSION = '2.23.1'
ACTIVEMQ_VERSION_CHKSUM = 'a73331cb959bb0ba9667414682c279bc9ce2aec4c8fecbcdee4670bf9d63bf66010c8c55a6b727b1ad6d51bbccadd663b96a70b867721d9388d54a9391c6af85'
#ACTIVEMQ_VERSION = '2.29.0'
#ACTIVEMQ_VERSION_CHKSUM = 'b78ed2541a2dd4d3fb8c73032e8526d954bca1089e9c7795815f1321901a1ca97358721acde61bebe11fd057377668691e3d3eaf414d32a72501f97ab6f7facd'

describe 'activemq' do
on_supported_os.each do |os, facts|
context "on #{os}" do
let(:facts) { facts }
let(:activemq_checksum) { 'a73331cb959bb0ba9667414682c279bc9ce2aec4c8fecbcdee4670bf9d63bf66010c8c55a6b727b1ad6d51bbccadd663b96a70b867721d9388d54a9391c6af85' }
let(:activemq_instance_name) { 'activemq' }
let(:activemq_password) { 'seCReT' }
let(:activemq_user) { 'admin' }
let(:activemq_version) { '2.23.1' }

context 'a standalone instance with default parameters' do
let :params do
{
admin_password: activemq_password.to_s,
admin_user: activemq_user.to_s,
checksum: activemq_checksum.to_s,
checksum: ACTIVEMQ_VERSION_CHKSUM.to_s,
cluster: false,
instances: {
'activemq': {},
},
version: activemq_version.to_s,
version: ACTIVEMQ_VERSION.to_s,
}
end

it { is_expected.to compile.with_all_deps }
it { is_expected.to contain_class('activemq') }
it { is_expected.to contain_class('activemq::install') }
it { is_expected.to contain_class('activemq::service') }

it { is_expected.to contain_activemq__instance("#{activemq_instance_name}") }
it {
is_expected.to contain_service("activemq@#{activemq_instance_name}").with(
enable: true,
ensure: 'running',
)
}

it { is_expected.to contain_service("activemq@#{activemq_instance_name}").that_subscribes_to('Class[activemq::install]') }
it { is_expected.to contain_service("activemq@#{activemq_instance_name}").that_subscribes_to("File[instance #{activemq_instance_name} broker.xml]") }
it { is_expected.to contain_service("activemq@#{activemq_instance_name}").that_subscribes_to("File[instance #{activemq_instance_name} management.xml]") }
it { is_expected.to contain_service("activemq@#{activemq_instance_name}").that_subscribes_to("File[instance #{activemq_instance_name} bootstrap.xml]") }
it { is_expected.to contain_service("activemq@#{activemq_instance_name}").that_subscribes_to("File[instance #{activemq_instance_name} login.config]") }
it { is_expected.to contain_service("activemq@#{activemq_instance_name}").that_subscribes_to("File_line[instance #{activemq_instance_name} set HAWTIO_ROLE]") }
it { is_expected.to contain_service("activemq@#{activemq_instance_name}").that_subscribes_to("File_line[instance #{activemq_instance_name} set JAVA_ARGS]") }

it { is_expected.to contain_service("activemq@#{activemq_instance_name}").that_requires('Class[activemq::install]') }
it { is_expected.to contain_service("activemq@#{activemq_instance_name}").that_requires("File[instance #{activemq_instance_name} broker.xml]") }
it { is_expected.to contain_service("activemq@#{activemq_instance_name}").that_requires("File[instance #{activemq_instance_name} management.xml]") }
it { is_expected.to contain_service("activemq@#{activemq_instance_name}").that_requires("File[instance #{activemq_instance_name} bootstrap.xml]") }
it { is_expected.to contain_service("activemq@#{activemq_instance_name}").that_requires("File[instance #{activemq_instance_name} login.config]") }
it { is_expected.to contain_service("activemq@#{activemq_instance_name}").that_requires("File_line[instance #{activemq_instance_name} set HAWTIO_ROLE]") }
it { is_expected.to contain_service("activemq@#{activemq_instance_name}").that_requires("File_line[instance #{activemq_instance_name} set JAVA_ARGS]") }

if Gem::Version.new(ACTIVEMQ_VERSION.to_s) >= Gem::Version.new('2.27.0')
it { is_expected.to contain_service("activemq@#{activemq_instance_name}").that_subscribes_to("File[instance #{activemq_instance_name} log4j2.properties]") }
it { is_expected.to contain_service("activemq@#{activemq_instance_name}").that_requires("File[instance #{activemq_instance_name} log4j2.properties]") }
else
it { is_expected.to contain_service("activemq@#{activemq_instance_name}").that_subscribes_to("File[instance #{activemq_instance_name} logging.properties]") }
it { is_expected.to contain_service("activemq@#{activemq_instance_name}").that_requires("File[instance #{activemq_instance_name} logging.properties]") }
end
end

context 'with multiple instances' do
let :params do
{
admin_password: activemq_password.to_s,
admin_user: activemq_user.to_s,
checksum: activemq_checksum.to_s,
checksum: ACTIVEMQ_VERSION_CHKSUM.to_s,
cluster: false,
instances: {
instance1: {
Expand Down Expand Up @@ -76,7 +113,7 @@
},
},
},
version: activemq_version.to_s,
version: ACTIVEMQ_VERSION.to_s,
}
end

Expand Down

0 comments on commit 9923023

Please sign in to comment.