
Add support for the dedicated options to configure ssl for novnc proxy service. Note that release note is not added because the vnc class was added during this cycle. Depends-on: https://review.opendev.org/943678 Change-Id: Ia96c2a927bf6aa2c2a7749789b492f066e187380
138 lines
5.9 KiB
Ruby
138 lines
5.9 KiB
Ruby
require 'spec_helper'
|
|
|
|
describe 'ironic::vnc' do
|
|
|
|
shared_examples_for 'ironic::vnc' do
|
|
context 'with defaults' do
|
|
it { is_expected.to contain_class('ironic::params') }
|
|
|
|
it 'installs ironic novncproxy package' do
|
|
if platform_params.has_key?(:novncproxy_package)
|
|
is_expected.to contain_package('ironic-novncproxy').with(
|
|
:ensure => 'present',
|
|
:name => platform_params[:novncproxy_package],
|
|
:tag => ['openstack', 'ironic-package'],
|
|
)
|
|
end
|
|
end
|
|
|
|
it 'ensure ironic novncproxy service is running' do
|
|
if platform_params.has_key?(:novncproxy_service)
|
|
is_expected.to contain_service('ironic-novncproxy').with(
|
|
:ensure => 'running',
|
|
:name => platform_params[:novncproxy_service],
|
|
:enable => true,
|
|
:hasstatus => true,
|
|
:tag => 'ironic-service',
|
|
)
|
|
end
|
|
end
|
|
|
|
it 'configures ironic.conf' do
|
|
is_expected.to contain_ironic_config('vnc/enabled').with_value(true)
|
|
is_expected.to contain_ironic_config('vnc/host_ip').with_value('<SERVICE DEFAULT>')
|
|
is_expected.to contain_ironic_config('vnc/port').with_value('<SERVICE DEFAULT>')
|
|
is_expected.to contain_ironic_config('vnc/public_url').with_value('<SERVICE DEFAULT>')
|
|
is_expected.to contain_ironic_config('vnc/enable_ssl').with_value('<SERVICE DEFAULT>')
|
|
is_expected.to contain_ironic_config('vnc/novnc_web').with_value('<SERVICE DEFAULT>')
|
|
is_expected.to contain_ironic_config('vnc/novnc_record').with_value('<SERVICE DEFAULT>')
|
|
is_expected.to contain_ironic_config('vnc/novnc_auth_schemes').with_value('<SERVICE DEFAULT>')
|
|
is_expected.to contain_ironic_config('vnc/token_timeout').with_value('<SERVICE DEFAULT>')
|
|
is_expected.to contain_ironic_config('vnc/expire_console_session_interval').with_value('<SERVICE DEFAULT>')
|
|
is_expected.to contain_ironic_config('vnc/ssl_cert_file').with_value('<SERVICE DEFAULT>')
|
|
is_expected.to contain_ironic_config('vnc/ssl_key_file').with_value('<SERVICE DEFAULT>')
|
|
is_expected.to contain_ironic_config('vnc/ssl_minimum_version').with_value('<SERVICE DEFAULT>')
|
|
is_expected.to contain_ironic_config('vnc/ssl_ciphers').with_value('<SERVICE DEFAULT>')
|
|
end
|
|
end
|
|
|
|
context 'with parameters' do
|
|
let :params do
|
|
{
|
|
:enabled => false,
|
|
:host_ip => '0.0.0.0',
|
|
:port => 6090,
|
|
:public_url => 'http://192.0.2.11:6090/vnc_auto.html',
|
|
:enable_ssl => false,
|
|
:novnc_web => '/usr/share/novnc',
|
|
:novnc_record => 'recordfile',
|
|
:novnc_auth_schemes => 'none',
|
|
:token_timeout => 600,
|
|
:expire_console_session_interval => 120,
|
|
:ssl_cert_file => 'CERTFILE',
|
|
:ssl_key_file => 'KEYFILE',
|
|
:ssl_minimum_version => 'TLSv1',
|
|
:ssl_ciphers => [
|
|
'TLS_AES_256_GCM_SHA384', 'TLS_CHACHA20_POLY1305_SHA256'
|
|
],
|
|
}
|
|
end
|
|
|
|
it 'installs ironic novncproxy package' do
|
|
if platform_params.has_key?(:novncproxy_package)
|
|
is_expected.to contain_package('ironic-novncproxy').with(
|
|
:name => platform_params[:novncproxy_package],
|
|
:ensure => 'present',
|
|
:tag => ['openstack', 'ironic-package'],
|
|
)
|
|
end
|
|
end
|
|
|
|
it 'ensure ironic novncproxy service is stopped' do
|
|
if platform_params.has_key?(:novncproxy_service)
|
|
is_expected.to contain_service('ironic-novncproxy').with(
|
|
:ensure => 'stopped',
|
|
:enable => false,
|
|
:hasstatus => true,
|
|
:tag => 'ironic-service',
|
|
)
|
|
end
|
|
end
|
|
|
|
it 'configures ironic.conf' do
|
|
is_expected.to contain_ironic_config('vnc/enabled').with_value(false)
|
|
is_expected.to contain_ironic_config('vnc/host_ip').with_value('0.0.0.0')
|
|
is_expected.to contain_ironic_config('vnc/port').with_value(6090)
|
|
is_expected.to contain_ironic_config('vnc/public_url').with_value('http://192.0.2.11:6090/vnc_auto.html')
|
|
is_expected.to contain_ironic_config('vnc/enable_ssl').with_value(false)
|
|
is_expected.to contain_ironic_config('vnc/novnc_web').with_value('/usr/share/novnc')
|
|
is_expected.to contain_ironic_config('vnc/novnc_record').with_value('recordfile')
|
|
is_expected.to contain_ironic_config('vnc/novnc_auth_schemes').with_value('none')
|
|
is_expected.to contain_ironic_config('vnc/token_timeout').with_value(600)
|
|
is_expected.to contain_ironic_config('vnc/expire_console_session_interval').with_value(120)
|
|
is_expected.to contain_ironic_config('vnc/ssl_cert_file').with_value('CERTFILE')
|
|
is_expected.to contain_ironic_config('vnc/ssl_key_file').with_value('KEYFILE')
|
|
is_expected.to contain_ironic_config('vnc/ssl_minimum_version').with_value('TLSv1')
|
|
is_expected.to contain_ironic_config('vnc/ssl_ciphers').with_value(
|
|
'TLS_AES_256_GCM_SHA384:TLS_CHACHA20_POLY1305_SHA256'
|
|
)
|
|
end
|
|
end
|
|
end
|
|
|
|
on_supported_os({
|
|
:supported_os => OSDefaults.get_supported_os
|
|
}).each do |os,facts|
|
|
context "on #{os}" do
|
|
let (:facts) do
|
|
facts.merge!(OSDefaults.get_facts())
|
|
end
|
|
|
|
case facts[:os]['family']
|
|
when 'Debian'
|
|
let :platform_params do
|
|
{}
|
|
end
|
|
when 'RedHat'
|
|
let :platform_params do
|
|
{ :novncproxy_service => 'openstack-ironic-novncproxy',
|
|
:novncproxy_package => 'openstack-ironic-novncproxy' }
|
|
end
|
|
end
|
|
|
|
it_behaves_like 'ironic::vnc'
|
|
end
|
|
end
|
|
|
|
end
|