Skip to content

Commit

Permalink
Merge pull request #456 from cultuurnet/feature/III-6283
Browse files Browse the repository at this point in the history
Refactor UiTdatabank websocket server profile
  • Loading branch information
willaerk authored Oct 30, 2024
2 parents afecdf0 + f737082 commit 44b83b4
Show file tree
Hide file tree
Showing 6 changed files with 195 additions and 181 deletions.
61 changes: 0 additions & 61 deletions manifests/deployment/curator/api.pp

This file was deleted.

5 changes: 0 additions & 5 deletions manifests/deployment/udb3/search.pp

This file was deleted.

39 changes: 30 additions & 9 deletions manifests/uitdatabank/websocket_server.pp
Original file line number Diff line number Diff line change
@@ -1,21 +1,42 @@
class profiles::uitdatabank::websocket_server (
Boolean $deployment = true,
Integer $listen_port = 3000
) inherits ::profiles {
String $servername,
Variant[String,Array[String]] $serveraliases = [],
Boolean $deployment = true,
Stdlib::IP::Address::V4 $service_address = '127.0.0.1',
Integer $service_port = 3000,
) inherits ::profiles {

$basedir = '/var/www/udb3-websocket-server'

realize Group['www-data']
realize User['www-data']

include ::profiles::nodejs
include ::profiles::redis

if $deployment {
include ::profiles::uitdatabank::websocket_server::deployment
file { $basedir:
ensure => 'directory',
owner => 'www-data',
group => 'www-data',
require => [Group['www-data'], User['www-data']]
}

Class['profiles::nodejs'] -> Class['profiles::uitdatabank::websocket_server::deployment']
if $deployment {
class { 'profiles::uitdatabank::websocket_server::deployment':
service_address => $service_address,
service_port => $service_port,
require => [Class['profiles::nodejs'], Class['profiles::redis']],
before => Profiles::Apache::Vhost::Reverse_proxy["http://${servername}"]
}
}

# TODO: apache + vhosts (move from hieradata here)
# TODO: firewall rules
profiles::apache::vhost::reverse_proxy { "http://${servername}":
aliases => $serveraliases,
destination => "http://${service_address}:${service_port}/",
support_websockets => true
}

# include ::profiles::uitdatabank::websocket_server::monitoring
# include ::profiles::uitdatabank::websocket_server::metrics
# include ::profiles::uitdatabank::websocket_server::backup
# include ::profiles::uitdatabank::websocket_server::logging
}
52 changes: 28 additions & 24 deletions manifests/uitdatabank/websocket_server/deployment.pp
Original file line number Diff line number Diff line change
@@ -1,21 +1,23 @@
class profiles::uitdatabank::websocket_server::deployment (
String $config_source,
String $version = 'latest',
Boolean $service_manage = true,
String $service_ensure = 'running',
Boolean $service_enable = true,
Integer $listen_port = lookup('profiles::uitdatabank::websocket_server::listen_port', Integer, 'first', 3000),
Optional[String] $puppetdb_url = lookup('data::puppet::puppetdb::url', Optional[String], 'first', undef)
String $config_source,
String $version = 'latest',
String $repository = 'uitdatabank-websocket-server',
Enum['running', 'stopped'] $service_status = 'running',
Stdlib::IP::Address::V4 $service_address = '127.0.0.1',
Integer $service_port = 3000,
Optional[String] $puppetdb_url = lookup('data::puppet::puppetdb::url', Optional[String], 'first', undef)
) inherits ::profiles {

$basedir = '/var/www/udb3-websocket-server'

realize Apt::Source['uitdatabank-websocket-server']
realize Apt::Source[$repository]
realize Group['www-data']
realize User['www-data']

package { 'uitdatabank-websocket-server':
ensure => $version,
notify => Profiles::Deployment::Versions[$title],
require => Apt::Source['uitdatabank-websocket-server']
require => [Apt::Source[$repository], Group['www-data'], User['www-data']],
notify => [Service['uitdatabank-websocket-server'], Profiles::Deployment::Versions[$title]]
}

file { 'uitdatabank-websocket-server-config':
Expand All @@ -24,23 +26,25 @@
owner => 'www-data',
group => 'www-data',
source => $config_source,
require => Package['uitdatabank-websocket-server']
require => [Package['uitdatabank-websocket-server'], Group['www-data'], User['www-data']],
notify => Service['uitdatabank-websocket-server']
}

if $service_manage {
file { 'uitdatabank-websocket-server-service-defaults':
ensure => 'file',
path => '/etc/default/uitdatabank-websocket-server',
content => "PORT=${listen_port}",
require => Package['uitdatabank-websocket-server']
}
file { 'uitdatabank-websocket-server-service-defaults':
ensure => 'file',
path => '/etc/default/uitdatabank-websocket-server',
content => "HOST=${service_address}\nPORT=${service_port}",
require => Package['uitdatabank-websocket-server'],
notify => Service['uitdatabank-websocket-server']
}

service { 'uitdatabank-websocket-server':
ensure => $service_ensure,
enable => $service_enable,
subscribe => [Package['uitdatabank-websocket-server'], File['uitdatabank-websocket-server-config'], File['uitdatabank-websocket-server-service-defaults']],
hasstatus => true
}
service { 'uitdatabank-websocket-server':
ensure => $service_status,
enable => $service_status ? {
'running' => true,
'stopped' => false
},
hasstatus => true
}

profiles::deployment::versions { $title:
Expand Down
111 changes: 52 additions & 59 deletions spec/classes/uitdatabank/websocket_server/deployment_spec.rb
Original file line number Diff line number Diff line change
@@ -1,25 +1,25 @@
describe 'profiles::uitdatabank::websocket_server::deployment' do
context "with config_source => /foo.json" do
let(:params) { {
'config_source' => '/foo.json'
} }
include_examples 'operating system support'

include_examples 'operating system support'
on_supported_os.each do |os, facts|
context "on #{os}" do
let(:facts) { facts }

on_supported_os.each do |os, facts|
context "on #{os}" do
let(:facts) { facts }
context 'with config_source => /foo.json' do
let(:params) { {
'config_source' => '/foo.json'
} }

it { is_expected.to compile.with_all_deps }

it { is_expected.to contain_class('profiles::uitdatabank::websocket_server::deployment').with(
'config_source' => '/foo.json',
'version' => 'latest',
'service_manage' => true,
'service_ensure' => 'running',
'service_enable' => true,
'listen_port' => 3000,
'puppetdb_url' => nil
'config_source' => '/foo.json',
'version' => 'latest',
'repository' => 'uitdatabank-websocket-server',
'service_status' => 'running',
'service_address' => '127.0.0.1',
'service_port' => 3000,
'puppetdb_url' => nil
) }

it { is_expected.to contain_apt__source('uitdatabank-websocket-server') }
Expand All @@ -39,7 +39,7 @@
it { is_expected.to contain_file('uitdatabank-websocket-server-service-defaults').with(
'ensure' => 'file',
'path' => '/etc/default/uitdatabank-websocket-server',
'content' => 'PORT=3000'
'content' => "HOST=127.0.0.1\nPORT=3000"
) }

it { is_expected.to contain_file('uitdatabank-websocket-server-config').that_requires('Package[uitdatabank-websocket-server]') }
Expand All @@ -51,6 +51,8 @@
'hasstatus' => true
) }

it { is_expected.to contain_package('uitdatabank-websocket-server').that_comes_before('File[uitdatabank-websocket-server-config]') }
it { is_expected.to contain_package('uitdatabank-websocket-server').that_comes_before('File[uitdatabank-websocket-server-service-defaults]') }
it { is_expected.to contain_service('uitdatabank-websocket-server').that_subscribes_to('Package[uitdatabank-websocket-server]') }
it { is_expected.to contain_service('uitdatabank-websocket-server').that_subscribes_to('File[uitdatabank-websocket-server-config]') }
it { is_expected.to contain_service('uitdatabank-websocket-server').that_subscribes_to('File[uitdatabank-websocket-server-service-defaults]') }
Expand All @@ -63,65 +65,56 @@
) }
end

context "with hieradata" do
context 'with hieradata' do
let(:hiera_config) { 'spec/support/hiera/common.yaml' }

it { is_expected.to contain_profiles__deployment__versions('profiles::uitdatabank::websocket_server::deployment').with(
'puppetdb_url' => 'http://localhost:8081'
) }
end
end

context "with service_manage => false" do
let(:params) {
super().merge({
'service_manage' => false
} )
}
context 'with repository uitdatabank-websocket-server-alternative defined' do
let(:pre_condition) { '@apt::source { "uitdatabank-websocket-server-alternative": location => "http://localhost", release => "focal", repos => "main" }' }

it { is_expected.not_to contain_file('uitdatabank-websocket-server-service-defaults') }
it { is_expected.not_to contain_service('uitdatabank-websocket-server') }
end
end
end
end
context 'with config_source => /bar.json, version => 1.2.3, repository => uitdatabank-websocket-server-alternative, service_address => 0.0.0.0, service_port => 5000, service_status => stopped and puppetdb_url => http://example.com:8000' do
let(:params) { {
'config_source' => '/bar.json',
'version' => '1.2.3',
'repository' => 'uitdatabank-websocket-server-alternative',
'service_status' => 'stopped',
'service_address' => '0.0.0.0',
'service_port' => 5000,
'puppetdb_url' => 'http://example.com:8000'
} }

context "with config_source => /bar.json, version => 1.2.3, service_ensure => stopped, service_enable = false and puppetdb_url => http://example.com:8000" do
let(:params) { {
'config_source' => '/bar.json',
'version' => '1.2.3',
'service_ensure' => 'stopped',
'service_enable' => false,
'puppetdb_url' => 'http://example.com:8000'
} }
it { is_expected.to contain_apt__source('uitdatabank-websocket-server-alternative') }

on_supported_os.each do |os, facts|
context "on #{os}" do
let(:facts) { facts }
it { is_expected.to contain_package('uitdatabank-websocket-server').with('ensure' => '1.2.3') }

it { is_expected.to contain_file('uitdatabank-websocket-server-config').with(
'source' => '/bar.json',
) }
it { is_expected.to contain_file('uitdatabank-websocket-server-config').with(
'source' => '/bar.json',
) }

it { is_expected.to contain_package('uitdatabank-websocket-server').with( 'ensure' => '1.2.3') }
it { is_expected.to contain_file('uitdatabank-websocket-server-service-defaults').with(
'ensure' => 'file',
'path' => '/etc/default/uitdatabank-websocket-server',
'content' => "HOST=0.0.0.0\nPORT=5000"
) }

it { is_expected.to contain_service('uitdatabank-websocket-server').with(
'ensure' => 'stopped',
'enable' => false
) }
it { is_expected.to contain_service('uitdatabank-websocket-server').with(
'ensure' => 'stopped',
'enable' => false
) }

it { is_expected.to contain_profiles__deployment__versions('profiles::uitdatabank::websocket_server::deployment').with(
'puppetdb_url' => 'http://example.com:8000'
) }
it { is_expected.to contain_profiles__deployment__versions('profiles::uitdatabank::websocket_server::deployment').with(
'puppetdb_url' => 'http://example.com:8000'
) }
end
end
end
end

context "without parameters" do
let(:params) { {} }

on_supported_os.each do |os, facts|
context "on #{os}" do
let(:facts) { facts }
context 'without parameters' do
let(:params) { {} }

it { expect { catalogue }.to raise_error(Puppet::ParseError, /expects a value for parameter 'config_source'/) }
end
Expand Down
Loading

0 comments on commit 44b83b4

Please sign in to comment.