From a7d512ee585d027a894dd4eeeda7fa80ec6697b6 Mon Sep 17 00:00:00 2001 From: Dustin Hooten Date: Mon, 16 Sep 2019 16:03:01 -0600 Subject: [PATCH] Allow s3 sources for download uris --- manifests/alertmanager.pp | 2 +- manifests/apache_exporter.pp | 38 +++++++++++++++---------------- manifests/daemon.pp | 2 +- manifests/haproxy_exporter.pp | 2 +- manifests/init.pp | 2 +- manifests/mysqld_exporter.pp | 40 ++++++++++++++++----------------- manifests/process_exporter.pp | 40 ++++++++++++++++----------------- manifests/pushprox_client.pp | 2 +- manifests/pushprox_proxy.pp | 2 +- manifests/server.pp | 2 +- manifests/statsd_exporter.pp | 38 +++++++++++++++---------------- manifests/varnish_exporter.pp | 2 +- spec/type_aliases/s3uri_spec.rb | 30 +++++++++++++++++++++++++ spec/type_aliases/uri_spec.rb | 33 +++++++++++++++++++++++++++ types/s3uri.pp | 1 + types/uri.pp | 5 +++++ 16 files changed, 155 insertions(+), 86 deletions(-) create mode 100644 spec/type_aliases/s3uri_spec.rb create mode 100644 spec/type_aliases/uri_spec.rb create mode 100644 types/s3uri.pp create mode 100644 types/uri.pp diff --git a/manifests/alertmanager.pp b/manifests/alertmanager.pp index b003b1bc4..195a01e4d 100644 --- a/manifests/alertmanager.pp +++ b/manifests/alertmanager.pp @@ -132,7 +132,7 @@ Stdlib::Absolutepath $config_dir, Stdlib::Absolutepath $config_file, String $download_extension, - Variant[Stdlib::HTTPUrl, Stdlib::HTTPSUrl] $download_url_base, + Prometheus::Uri $download_url_base, Array $extra_groups, Hash $global, String $group, diff --git a/manifests/apache_exporter.pp b/manifests/apache_exporter.pp index 040734421..caf12d4ec 100644 --- a/manifests/apache_exporter.pp +++ b/manifests/apache_exporter.pp @@ -78,31 +78,31 @@ class prometheus::apache_exporter ( String[1] $scrape_uri, String[1] $download_extension, - Variant[Stdlib::HTTPSUrl, Stdlib::HTTPUrl] $download_url_base, + Prometheus::Uri $download_url_base, Array[String[1]] $extra_groups, String[1] $group, String[1] $package_ensure, String[1] $package_name, String[1] $user, String[1] $version, - Boolean $purge_config_dir = true, - Boolean $restart_on_change = true, - Boolean $service_enable = true, - String[1] $service_ensure = 'running', - String[1] $init_style = $prometheus::init_style, - String[1] $install_method = $prometheus::install_method, - Boolean $manage_group = true, - Boolean $manage_service = true, - Boolean $manage_user = true, - String[1] $os = $prometheus::os, - String $extra_options = '', - Optional[Variant[Stdlib::HTTPSUrl, Stdlib::HTTPUrl]] $download_url = undef, - String[1] $config_mode = $prometheus::config_mode, - String[1] $arch = $prometheus::real_arch, - Stdlib::Absolutepath $bin_dir = $prometheus::bin_dir, - Boolean $export_scrape_job = false, - Stdlib::Port $scrape_port = 9117, - String[1] $scrape_job_name = 'apache', + Boolean $purge_config_dir = true, + Boolean $restart_on_change = true, + Boolean $service_enable = true, + String[1] $service_ensure = 'running', + String[1] $init_style = $prometheus::init_style, + String[1] $install_method = $prometheus::install_method, + Boolean $manage_group = true, + Boolean $manage_service = true, + Boolean $manage_user = true, + String[1] $os = $prometheus::os, + String $extra_options = '', + Optional[Prometheus::Uri] $download_url = undef, + String[1] $config_mode = $prometheus::config_mode, + String[1] $arch = $prometheus::real_arch, + Stdlib::Absolutepath $bin_dir = $prometheus::bin_dir, + Boolean $export_scrape_job = false, + Stdlib::Port $scrape_port = 9117, + String[1] $scrape_job_name = 'apache', ) inherits prometheus { #Please provide the download_url for versions < 0.9.0 diff --git a/manifests/daemon.pp b/manifests/daemon.pp index 9bd925203..a150c0a81 100644 --- a/manifests/daemon.pp +++ b/manifests/daemon.pp @@ -61,7 +61,7 @@ # define prometheus::daemon ( String $version, - Variant[Stdlib::HTTPSUrl, Stdlib::HTTPUrl] $real_download_url, + Prometheus::Uri $real_download_url, $notify_service, String $user, String $group, diff --git a/manifests/haproxy_exporter.pp b/manifests/haproxy_exporter.pp index e4f0a66d5..ea3cfd556 100644 --- a/manifests/haproxy_exporter.pp +++ b/manifests/haproxy_exporter.pp @@ -81,7 +81,7 @@ String $package_name, String $user, String $version, - Stdlib::HTTPUrl $download_url_base, + Prometheus::Uri $download_url_base, Boolean $purge_config_dir = true, Boolean $restart_on_change = true, Boolean $service_enable = true, diff --git a/manifests/init.pp b/manifests/init.pp index 2471065e5..87399986b 100644 --- a/manifests/init.pp +++ b/manifests/init.pp @@ -161,7 +161,7 @@ Stdlib::Absolutepath $shared_dir, String $version, String $install_method, - Variant[Stdlib::HTTPUrl, Stdlib::HTTPSUrl] $download_url_base, + Prometheus::Uri $download_url_base, String $download_extension, String $package_name, String $package_ensure, diff --git a/manifests/mysqld_exporter.pp b/manifests/mysqld_exporter.pp index 348c48174..02bc5c81a 100644 --- a/manifests/mysqld_exporter.pp +++ b/manifests/mysqld_exporter.pp @@ -97,32 +97,32 @@ Stdlib::Port $cnf_port, String $cnf_user, String $download_extension, - Variant[Stdlib::HTTPSUrl, Stdlib::HTTPUrl] $download_url_base, + Prometheus::Uri $download_url_base, Array $extra_groups, String $group, String $package_ensure, String $package_name, String $user, String $version, - Boolean $purge_config_dir = true, - Boolean $restart_on_change = true, - Boolean $service_enable = true, - String $service_ensure = 'running', - String $init_style = $prometheus::init_style, - String $install_method = $prometheus::install_method, - Boolean $manage_group = true, - Boolean $manage_service = true, - Boolean $manage_user = true, - String $os = $prometheus::os, - String $extra_options = '', - Optional[Variant[Stdlib::HTTPSUrl, Stdlib::HTTPUrl]] $download_url = undef, - String $config_mode = $prometheus::config_mode, - Optional[Stdlib::Absolutepath] $cnf_socket = undef, - String $arch = $prometheus::real_arch, - Stdlib::Absolutepath $bin_dir = $prometheus::bin_dir, - Boolean $export_scrape_job = false, - Stdlib::Port $scrape_port = 9104, - String[1] $scrape_job_name = 'mysql', + Boolean $purge_config_dir = true, + Boolean $restart_on_change = true, + Boolean $service_enable = true, + String $service_ensure = 'running', + String $init_style = $prometheus::init_style, + String $install_method = $prometheus::install_method, + Boolean $manage_group = true, + Boolean $manage_service = true, + Boolean $manage_user = true, + String $os = $prometheus::os, + String $extra_options = '', + Optional[Prometheus::Uri] $download_url = undef, + String $config_mode = $prometheus::config_mode, + Optional[Stdlib::Absolutepath] $cnf_socket = undef, + String $arch = $prometheus::real_arch, + Stdlib::Absolutepath $bin_dir = $prometheus::bin_dir, + Boolean $export_scrape_job = false, + Stdlib::Port $scrape_port = 9104, + String[1] $scrape_job_name = 'mysql', ) inherits prometheus { #Please provide the download_url for versions < 0.9.0 diff --git a/manifests/process_exporter.pp b/manifests/process_exporter.pp index d4fda62a2..078f5de17 100644 --- a/manifests/process_exporter.pp +++ b/manifests/process_exporter.pp @@ -71,7 +71,7 @@ class prometheus::process_exporter( String $download_extension, - Variant[Stdlib::HTTPSUrl, Stdlib::HTTPUrl] $download_url_base, + Prometheus::Uri $download_url_base, Array $extra_groups, String $group, String $package_ensure, @@ -79,25 +79,25 @@ String $user, String $version, Stdlib::Absolutepath $config_path, - Array $watched_processes = [], - Boolean $purge_config_dir = true, - Boolean $restart_on_change = true, - Boolean $service_enable = true, - String $service_ensure = 'running', - String $init_style = $prometheus::init_style, - String $install_method = $prometheus::install_method, - Boolean $manage_group = true, - Boolean $manage_service = true, - Boolean $manage_user = true, - String $os = $prometheus::os, - String $extra_options = '', - String $config_mode = $prometheus::config_mode, - Optional[Variant[Stdlib::HTTPSUrl, Stdlib::HTTPUrl]] $download_url = undef, - String $arch = $prometheus::real_arch, - Stdlib::Absolutepath $bin_dir = $prometheus::bin_dir, - Boolean $export_scrape_job = false, - Stdlib::Port $scrape_port = 9256, - String[1] $scrape_job_name = 'process', + Array $watched_processes = [], + Boolean $purge_config_dir = true, + Boolean $restart_on_change = true, + Boolean $service_enable = true, + String $service_ensure = 'running', + String $init_style = $prometheus::init_style, + String $install_method = $prometheus::install_method, + Boolean $manage_group = true, + Boolean $manage_service = true, + Boolean $manage_user = true, + String $os = $prometheus::os, + String $extra_options = '', + String $config_mode = $prometheus::config_mode, + Optional[Prometheus::Uri] $download_url = undef, + String $arch = $prometheus::real_arch, + Stdlib::Absolutepath $bin_dir = $prometheus::bin_dir, + Boolean $export_scrape_job = false, + Stdlib::Port $scrape_port = 9256, + String[1] $scrape_job_name = 'process', ) inherits prometheus { $filename = "${package_name}-${version}.${os}-${arch}.${download_extension}" diff --git a/manifests/pushprox_client.pp b/manifests/pushprox_client.pp index ed8110214..5e17efff4 100644 --- a/manifests/pushprox_client.pp +++ b/manifests/pushprox_client.pp @@ -77,7 +77,7 @@ class prometheus::pushprox_client ( String[1] $proxy_url, String $download_extension, - Variant[Stdlib::HTTPUrl, Stdlib::HTTPSUrl] $download_url_base, + Prometheus::Uri $download_url_base, Array[String[1]] $extra_groups, String $group, String $package_ensure, diff --git a/manifests/pushprox_proxy.pp b/manifests/pushprox_proxy.pp index 4f8c7fb02..bb4a42aab 100644 --- a/manifests/pushprox_proxy.pp +++ b/manifests/pushprox_proxy.pp @@ -76,7 +76,7 @@ # The binary release version class prometheus::pushprox_proxy ( String $download_extension, - Variant[Stdlib::HTTPUrl, Stdlib::HTTPSUrl] $download_url_base, + Prometheus::Uri $download_url_base, Array[String[1]] $extra_groups, String $group, String $package_ensure, diff --git a/manifests/server.pp b/manifests/server.pp index 5b467956b..c75d2c476 100644 --- a/manifests/server.pp +++ b/manifests/server.pp @@ -9,7 +9,7 @@ Stdlib::Absolutepath $shared_dir = $prometheus::shared_dir, String $version = $prometheus::version, String $install_method = $prometheus::install_method, - Variant[Stdlib::HTTPUrl, Stdlib::HTTPSUrl] $download_url_base = $prometheus::download_url_base, + Prometheus::Uri $download_url_base = $prometheus::download_url_base, String $download_extension = $prometheus::download_extension, String $package_name = $prometheus::package_name, String $package_ensure = $prometheus::package_ensure, diff --git a/manifests/statsd_exporter.pp b/manifests/statsd_exporter.pp index 5292a502a..1d41f1a15 100644 --- a/manifests/statsd_exporter.pp +++ b/manifests/statsd_exporter.pp @@ -82,7 +82,7 @@ class prometheus::statsd_exporter ( String $download_extension, - Variant[Stdlib::HTTPSUrl, Stdlib::HTTPUrl] $download_url_base, + Prometheus::Uri $download_url_base, Array $extra_groups, String $group, Stdlib::Absolutepath $mapping_config_path, @@ -91,24 +91,24 @@ Array[Hash] $mappings, String $user, String $version, - String $arch = $prometheus::real_arch, - Stdlib::Absolutepath $bin_dir = $prometheus::bin_dir, - String $config_mode = $prometheus::config_mode, - Boolean $purge_config_dir = true, - Boolean $restart_on_change = true, - Boolean $service_enable = true, - String $service_ensure = 'running', - String $os = $prometheus::os, - String $init_style = $prometheus::init_style, - String $install_method = $prometheus::install_method, - Boolean $manage_group = true, - Boolean $manage_service = true, - Boolean $manage_user = true, - String $extra_options = '', - Optional[Variant[Stdlib::HTTPSUrl, Stdlib::HTTPUrl]] $download_url = undef, - Boolean $export_scrape_job = false, - Stdlib::Port $scrape_port = 9102, - String[1] $scrape_job_name = 'statsd', + String $arch = $prometheus::real_arch, + Stdlib::Absolutepath $bin_dir = $prometheus::bin_dir, + String $config_mode = $prometheus::config_mode, + Boolean $purge_config_dir = true, + Boolean $restart_on_change = true, + Boolean $service_enable = true, + String $service_ensure = 'running', + String $os = $prometheus::os, + String $init_style = $prometheus::init_style, + String $install_method = $prometheus::install_method, + Boolean $manage_group = true, + Boolean $manage_service = true, + Boolean $manage_user = true, + String $extra_options = '', + Optional[Prometheus::Uri] $download_url = undef, + Boolean $export_scrape_job = false, + Stdlib::Port $scrape_port = 9102, + String[1] $scrape_job_name = 'statsd', ) inherits prometheus { # Prometheus added a 'v' on the realease name at 0.4.0 and changed the configuration format to yaml in 0.5.0 diff --git a/manifests/varnish_exporter.pp b/manifests/varnish_exporter.pp index 567fe2d62..1203e9005 100644 --- a/manifests/varnish_exporter.pp +++ b/manifests/varnish_exporter.pp @@ -79,7 +79,7 @@ String $package_name, String $user, String $version, - Variant[Stdlib::HTTPUrl, Stdlib::HTTPSUrl] $download_url_base, + Prometheus::Uri $download_url_base, Boolean $purge_config_dir = true, Boolean $restart_on_change = true, Boolean $service_enable = true, diff --git a/spec/type_aliases/s3uri_spec.rb b/spec/type_aliases/s3uri_spec.rb new file mode 100644 index 000000000..7a98bae33 --- /dev/null +++ b/spec/type_aliases/s3uri_spec.rb @@ -0,0 +1,30 @@ +require 'spec_helper' + +describe 'Prometheus::S3Uri' do + describe 'accepts case-sensitive amazon web services s3 uris' do + [ + 's3://bucket-name/path', + 's3://bucket/path/to/file.txt' + ].each do |value| + describe value.inspect do + it { is_expected.to allow_value(value) } + end + end + end + + describe 'rejects other values' do + [ + '', + 'S3://bucket-name/path', + 3, + 's3:/bucket-name/path', + 's3//bucket-name/path', + 's3:bucket-name/path', + 's3-bucket-name/path' + ].each do |value| + describe value.inspect do + it { is_expected.not_to allow_value(value) } + end + end + end +end diff --git a/spec/type_aliases/uri_spec.rb b/spec/type_aliases/uri_spec.rb new file mode 100644 index 000000000..999e365e6 --- /dev/null +++ b/spec/type_aliases/uri_spec.rb @@ -0,0 +1,33 @@ +require 'spec_helper' + +describe 'Prometheus::Uri' do + describe 'accepts http, https, and case-sensitive aws s3 uris' do + [ + 'http://www.download.com', + 'HTTP://www.download.com', + 'Https://service.io', + 'https://service.io', + 's3://bucket-name/path', + 's3://bucket/path/to/file.txt' + ].each do |value| + describe value.inspect do + it { is_expected.to allow_value(value) } + end + end + end + + describe 'rejects other values' do + [ + '', + 'htpt://www.download.com', + 'httds://service.io', + 'S3://bucket-name/path', + 3, + 's3-bucket-name/path' + ].each do |value| + describe value.inspect do + it { is_expected.not_to allow_value(value) } + end + end + end +end diff --git a/types/s3uri.pp b/types/s3uri.pp new file mode 100644 index 000000000..cd2c9487d --- /dev/null +++ b/types/s3uri.pp @@ -0,0 +1 @@ +type Prometheus::S3Uri = Pattern[/^s3:\/\//] diff --git a/types/uri.pp b/types/uri.pp new file mode 100644 index 000000000..8c29d1eca --- /dev/null +++ b/types/uri.pp @@ -0,0 +1,5 @@ +type Prometheus::Uri = Variant[ + Stdlib::HTTPUrl, + Stdlib::HTTPSUrl, + Prometheus::S3Uri, +]