From e0a39ccaf12703e6e41b77c652fb4e5c9e2950eb Mon Sep 17 00:00:00 2001 From: Lance Albertson Date: Sat, 15 Jun 2019 17:30:04 -0700 Subject: [PATCH] Fix gnocchi endpoint issues This fixes two primary issues: - Removal of using node['openstack']['api']['auth']['version'] and converting to using ::URI.decode - Renaming endpoint attributes from telemetry-metric to telemetry_metric to match what's used in openstack-common. Also rename all attributes to using the underscore to minimize confusion. Change-Id: I59c960a18f9e88eea494ec3c7bdbf189309f23e7 Signed-off-by: Lance Albertson --- attributes/default.rb | 28 +++++-------- attributes/gnocchi_conf.rb | 6 +-- recipes/aodh.rb | 6 +-- recipes/common.rb | 4 +- recipes/gnocchi_configure.rb | 66 +++++++++++++++--------------- recipes/identity_registration.rb | 7 ++-- spec/gnocchi_configure_spec.rb | 12 +++--- spec/identity_registration_spec.rb | 6 +-- spec/spec_helper.rb | 2 +- 9 files changed, 63 insertions(+), 74 deletions(-) diff --git a/attributes/default.rb b/attributes/default.rb index 6c3634a..fc3d19b 100644 --- a/attributes/default.rb +++ b/attributes/default.rb @@ -27,13 +27,13 @@ default['openstack']['telemetry']['custom_template_banner'] = ' # Set the endpoints for the telemetry services to allow all other cookbooks to # access and use them -%w(telemetry telemetry-metric aodh).each do |ts| +%w(telemetry telemetry_metric aodh).each do |ts| %w(public internal admin).each do |ep_type| default['openstack']['endpoints'][ep_type][ts]['host'] = '127.0.0.1' default['openstack']['endpoints'][ep_type][ts]['scheme'] = 'http' default['openstack']['endpoints'][ep_type][ts]['path'] = '' default['openstack']['endpoints'][ep_type]['telemetry']['port'] = 8777 - default['openstack']['endpoints'][ep_type]['telemetry-metric']['port'] = 8041 + default['openstack']['endpoints'][ep_type]['telemetry_metric']['port'] = 8041 default['openstack']['endpoints'][ep_type]['aodh']['port'] = 8042 # web-service (e.g. apache) listen address (can be different from openstack # telemetry endpoints) @@ -41,15 +41,15 @@ default['openstack']['telemetry']['custom_template_banner'] = ' default['openstack']['bind_service']['all'][ts]['host'] = '127.0.0.1' end default['openstack']['bind_service']['all']['telemetry']['port'] = 8777 -default['openstack']['bind_service']['all']['telemetry-metric']['port'] = 8041 +default['openstack']['bind_service']['all']['telemetry_metric']['port'] = 8041 default['openstack']['bind_service']['all']['aodh']['port'] = 8042 default['openstack']['telemetry']['conf_dir'] = '/etc/ceilometer' default['openstack']['telemetry']['conf_file'] = ::File.join(node['openstack']['telemetry']['conf_dir'], 'ceilometer.conf') -default['openstack']['telemetry-metric']['conf_dir'] = '/etc/gnocchi' -default['openstack']['telemetry-metric']['conf_file'] = - ::File.join(node['openstack']['telemetry-metric']['conf_dir'], 'gnocchi.conf') +default['openstack']['telemetry_metric']['conf_dir'] = '/etc/gnocchi' +default['openstack']['telemetry_metric']['conf_file'] = + ::File.join(node['openstack']['telemetry_metric']['conf_dir'], 'gnocchi.conf') default['openstack']['telemetry']['syslog']['use'] = false default['openstack']['aodh']['conf_dir'] = '/etc/aodh' @@ -59,25 +59,19 @@ default['openstack']['aodh']['conf_file'] = default['openstack']['telemetry']['user'] = 'ceilometer' default['openstack']['telemetry']['group'] = 'ceilometer' -default['openstack']['telemetry-metric']['user'] = 'gnocchi' -default['openstack']['telemetry-metric']['group'] = 'gnocchi' +default['openstack']['telemetry_metric']['user'] = 'gnocchi' +default['openstack']['telemetry_metric']['group'] = 'gnocchi' default['openstack']['aodh']['user'] = 'aodh' default['openstack']['aodh']['group'] = 'aodh' default['openstack']['telemetry']['service_role'] = 'admin' -default['openstack']['telemetry-metric']['service_role'] = 'admin' +default['openstack']['telemetry_metric']['service_role'] = 'admin' default['openstack']['aodh']['service_role'] = 'admin' -default['openstack']['telemetry']['identity-api']['auth']['version'] = - node['openstack']['api']['auth']['version'] -default['openstack']['telemetry-metric']['identity-api']['auth']['version'] = - node['openstack']['api']['auth']['version'] -default['openstack']['aodh']['identity-api']['auth']['version'] = - node['openstack']['api']['auth']['version'] -default['openstack']['telemetry-metric']['gnocchi-upgrade-options'] = '' +default['openstack']['telemetry_metric']['gnocchi-upgrade-options'] = '' -%w(telemetry telemetry-metric aodh).each do |ts| +%w(telemetry telemetry_metric aodh).each do |ts| # specify whether to enable SSL for ceilometer API endpoint default['openstack'][ts]['ssl']['enabled'] = false # specify server whether to enforce client certificate requirement diff --git a/attributes/gnocchi_conf.rb b/attributes/gnocchi_conf.rb index 8d813b5..9a62206 100644 --- a/attributes/gnocchi_conf.rb +++ b/attributes/gnocchi_conf.rb @@ -1,6 +1,6 @@ -default['openstack']['telemetry-metric']['conf_secrets'] = {} +default['openstack']['telemetry_metric']['conf_secrets'] = {} -default['openstack']['telemetry-metric']['conf'].tap do |conf| +default['openstack']['telemetry_metric']['conf'].tap do |conf| # [keystone_authtoken] section conf['keystone_authtoken']['username'] = 'gnocchi' conf['keystone_authtoken']['project_name'] = 'service' @@ -9,7 +9,7 @@ default['openstack']['telemetry-metric']['conf'].tap do |conf| conf['keystone_authtoken']['project_domain_name'] = 'Default' conf['keystone_authtoken']['region_name'] = node['openstack']['region'] conf['storage']['driver'] = 'file' - if node['openstack']['telemetry-metric']['conf']['storage']['driver'] == 'file' + if node['openstack']['telemetry_metric']['conf']['storage']['driver'] == 'file' conf['storage']['file_basepath'] = '/var/lib/gnocchi' end end diff --git a/recipes/aodh.rb b/recipes/aodh.rb index bb04a48..0fbaa2b 100644 --- a/recipes/aodh.rb +++ b/recipes/aodh.rb @@ -48,11 +48,7 @@ node.default['openstack']['aodh']['conf_secrets'].tap do |conf_secrets| end identity_public_endpoint = public_endpoint 'identity' -auth_url = - auth_uri_transform( - identity_public_endpoint.to_s, - node['openstack']['aodh']['identity-api']['auth']['version'] - ) +auth_url = ::URI.decode identity_public_endpoint.to_s node.default['openstack']['aodh']['conf'].tap do |conf| conf['api']['host'] = bind_service_address diff --git a/recipes/common.rb b/recipes/common.rb index 7f2c299..10dfd39 100644 --- a/recipes/common.rb +++ b/recipes/common.rb @@ -64,14 +64,14 @@ node.default['openstack']['telemetry']['conf_secrets'].tap do |conf_secrets| end identity_endpoint = public_endpoint 'identity' -auth_url = auth_uri_transform identity_endpoint.to_s, node['openstack']['api']['auth']['version'] +auth_url = ::URI.decode identity_endpoint.to_s node.default['openstack']['telemetry']['conf'].tap do |conf| conf['api']['host'] = bind_service_address conf['api']['port'] = bind_service['port'] conf['keystone_authtoken']['auth_url'] = auth_url conf['service_credentials']['auth_url'] = auth_url - conf['dispatcher_gnocchi']['url'] = public_endpoint 'telemetry-metric' + conf['dispatcher_gnocchi']['url'] = public_endpoint 'telemetry_metric' conf['dispatcher_gnocchi']['filter_project'] = 'service' end diff --git a/recipes/gnocchi_configure.rb b/recipes/gnocchi_configure.rb index 1d544f4..43f718b 100644 --- a/recipes/gnocchi_configure.rb +++ b/recipes/gnocchi_configure.rb @@ -19,37 +19,37 @@ class ::Chef::Recipe include ::Openstack end platform = node['openstack']['telemetry']['platform'] -db_user = node['openstack']['db']['telemetry-metric']['username'] +db_user = node['openstack']['db']['telemetry_metric']['username'] db_pass = get_password 'db', 'gnocchi' -bind_service = node['openstack']['bind_service']['all']['telemetry-metric'] +bind_service = node['openstack']['bind_service']['all']['telemetry_metric'] bind_service_address = bind_address bind_service # define secrets that are needed in the gnocchi.conf -node.default['openstack']['telemetry-metric']['conf_secrets'].tap do |conf_secrets| +node.default['openstack']['telemetry_metric']['conf_secrets'].tap do |conf_secrets| conf_secrets['database']['connection'] = - db_uri('telemetry-metric', db_user, db_pass) + db_uri('telemetry_metric', db_user, db_pass) conf_secrets['indexer']['url'] = - db_uri('telemetry-metric', db_user, db_pass) + db_uri('telemetry_metric', db_user, db_pass) conf_secrets['keystone_authtoken']['password'] = - get_password 'service', 'openstack-telemetry-metric' + get_password 'service', 'openstack-telemetry_metric' end identity_endpoint = public_endpoint 'identity' -auth_url = auth_uri_transform identity_endpoint.to_s, node['openstack']['api']['auth']['version'] +auth_url = ::URI.decode identity_endpoint.to_s -node.default['openstack']['telemetry-metric']['conf'].tap do |conf| +node.default['openstack']['telemetry_metric']['conf'].tap do |conf| conf['api']['host'] = bind_service_address conf['api']['port'] = bind_service['port'] conf['keystone_authtoken']['auth_url'] = auth_url end # merge all config options and secrets to be used in the gnocchi.conf -gnocchi_conf_options = merge_config_options 'telemetry-metric' -template node['openstack']['telemetry-metric']['conf_file'] do +gnocchi_conf_options = merge_config_options 'telemetry_metric' +template node['openstack']['telemetry_metric']['conf_file'] do source 'openstack-service.conf.erb' cookbook 'openstack-common' - owner node['openstack']['telemetry-metric']['user'] - group node['openstack']['telemetry-metric']['group'] + owner node['openstack']['telemetry_metric']['user'] + group node['openstack']['telemetry_metric']['group'] mode 0o0640 variables( service_config: gnocchi_conf_options @@ -66,10 +66,10 @@ cookbook_file File.join(node['openstack']['telemetry']['conf_dir'], 'gnocchi_res end # drop api-paste.ini to gnocchi folder (default ini will not use keystone auth) -cookbook_file File.join(node['openstack']['telemetry-metric']['conf_dir'], 'api-paste.ini') do +cookbook_file File.join(node['openstack']['telemetry_metric']['conf_dir'], 'api-paste.ini') do source 'api-paste.ini' - owner node['openstack']['telemetry-metric']['user'] - group node['openstack']['telemetry-metric']['group'] + owner node['openstack']['telemetry_metric']['user'] + group node['openstack']['telemetry_metric']['group'] mode 0o0640 end @@ -83,15 +83,15 @@ cookbook_file File.join(node['openstack']['telemetry']['conf_dir'], 'event_pipel mode 0o0640 end -if node['openstack']['telemetry-metric']['conf']['storage']['driver'] == 'file' +if node['openstack']['telemetry_metric']['conf']['storage']['driver'] == 'file' # default store is file, so create needed directories with correct permissions # (on ubuntu they are created by the package, but owned by root and not writable # for gnocchi) - store_path = node['openstack']['telemetry-metric']['conf']['storage']['file_basepath'] + store_path = node['openstack']['telemetry_metric']['conf']['storage']['file_basepath'] %w(tmp measure cache).each do |dir| directory File.join(store_path, dir) do - owner node['openstack']['telemetry-metric']['user'] - group node['openstack']['telemetry-metric']['group'] + owner node['openstack']['telemetry_metric']['user'] + group node['openstack']['telemetry_metric']['group'] recursive true mode 0o0750 end @@ -100,8 +100,8 @@ end # dbsync for gnocchi execute 'run gnocchi-upgrade' do - command "gnocchi-upgrade #{node['openstack']['telemetry-metric']['gnocchi-upgrade-options']}" - user node['openstack']['telemetry-metric']['user'] + command "gnocchi-upgrade #{node['openstack']['telemetry_metric']['gnocchi-upgrade-options']}" + user node['openstack']['telemetry_metric']['user'] end #### Start of Apache specific work @@ -146,21 +146,21 @@ web_app 'gnocchi-api' do server_entry gnocchi_server_entry run_dir node['apache']['run_dir'] log_dir node['apache']['log_dir'] - log_debug node['openstack']['telemetry-metric']['debug'] - user node['openstack']['telemetry-metric']['user'] - group node['openstack']['telemetry-metric']['group'] - use_ssl node['openstack']['telemetry-metric']['ssl']['enabled'] - cert_file node['openstack']['telemetry-metric']['ssl']['certfile'] - chain_file node['openstack']['telemetry-metric']['ssl']['chainfile'] - key_file node['openstack']['telemetry-metric']['ssl']['keyfile'] - ca_certs_path node['openstack']['telemetry-metric']['ssl']['ca_certs_path'] - cert_required node['openstack']['telemetry-metric']['ssl']['cert_required'] - protocol node['openstack']['telemetry-metric']['ssl']['protocol'] - ciphers node['openstack']['telemetry-metric']['ssl']['ciphers'] + log_debug node['openstack']['telemetry_metric']['debug'] + user node['openstack']['telemetry_metric']['user'] + group node['openstack']['telemetry_metric']['group'] + use_ssl node['openstack']['telemetry_metric']['ssl']['enabled'] + cert_file node['openstack']['telemetry_metric']['ssl']['certfile'] + chain_file node['openstack']['telemetry_metric']['ssl']['chainfile'] + key_file node['openstack']['telemetry_metric']['ssl']['keyfile'] + ca_certs_path node['openstack']['telemetry_metric']['ssl']['ca_certs_path'] + cert_required node['openstack']['telemetry_metric']['ssl']['cert_required'] + protocol node['openstack']['telemetry_metric']['ssl']['protocol'] + ciphers node['openstack']['telemetry_metric']['ssl']['ciphers'] end service 'gnocchi-metricd' do service_name platform['gnocchi-metricd_service'] - subscribes :restart, "template[#{node['openstack']['telemetry-metric']['conf_file']}]" + subscribes :restart, "template[#{node['openstack']['telemetry_metric']['conf_file']}]" action [:enable, :start] end diff --git a/recipes/identity_registration.rb b/recipes/identity_registration.rb index 0aff62c..57b7367 100644 --- a/recipes/identity_registration.rb +++ b/recipes/identity_registration.rb @@ -27,7 +27,7 @@ end identity_endpoint = public_endpoint 'identity' -auth_url = auth_uri_transform identity_endpoint.to_s, node['openstack']['api']['auth']['version'] +auth_url = ::URI.decode identity_endpoint.to_s admin_user = node['openstack']['identity']['admin_user'] admin_pass = get_password 'user', node['openstack']['identity']['admin_user'] admin_project = node['openstack']['identity']['admin_project'] @@ -41,12 +41,12 @@ connection_params = { openstack_domain_name: admin_domain, } -%w(telemetry telemetry-metric aodh).each do |telemetry_service| +%w(telemetry telemetry_metric aodh).each do |telemetry_service| case telemetry_service when 'telemetry' service_name = 'ceilometer' service_type = 'metering' - when 'telemetry-metric' + when 'telemetry_metric' service_name = 'gnocchi' service_type = 'metric' when 'aodh' @@ -57,7 +57,6 @@ connection_params = { interfaces = { public: { url: public_endpoint(telemetry_service) }, internal: { url: internal_endpoint(telemetry_service) }, - admin: { url: admin_endpoint(telemetry_service) }, } service_pass = get_password 'service', "openstack-#{telemetry_service}" diff --git a/spec/gnocchi_configure_spec.rb b/spec/gnocchi_configure_spec.rb index 0f37377..94942c0 100644 --- a/spec/gnocchi_configure_spec.rb +++ b/spec/gnocchi_configure_spec.rb @@ -106,7 +106,7 @@ describe 'openstack-telemetry::gnocchi_configure' do end context 'other storage backend' do before do - node.override['openstack']['telemetry-metric']['conf']['storage']['driver'] = 'ceph' + node.override['openstack']['telemetry_metric']['conf']['storage']['driver'] = 'ceph' end it do expect(chef_run).to_not create_directory("/var/lib/gnocchi/#{dir}") @@ -176,7 +176,7 @@ describe 'openstack-telemetry::gnocchi_configure' do end it "configures #{file} common lines" do - node.override['openstack']['telemetry-metric']['custom_template_banner'] = 'custom_template_banner_value' + node.override['openstack']['telemetry_metric']['custom_template_banner'] = 'custom_template_banner_value' [/user=gnocchi/, /group=gnocchi/, %r{^ ErrorLog /var/log/apache2/gnocchi-api_error.log$}, @@ -193,7 +193,7 @@ describe 'openstack-telemetry::gnocchi_configure' do end context 'Enable SSL' do before do - node.override['openstack']['telemetry-metric']['ssl']['enabled'] = true + node.override['openstack']['telemetry_metric']['ssl']['enabled'] = true end it "configures #{file} common ssl lines" do [/^ SSLEngine On$/, @@ -212,17 +212,17 @@ describe 'openstack-telemetry::gnocchi_configure' do end end it "configures #{file} chainfile when set" do - node.override['openstack']['telemetry-metric']['ssl']['chainfile'] = '/etc/ceilometer/ssl/certs/chainfile.pem' + node.override['openstack']['telemetry_metric']['ssl']['chainfile'] = '/etc/ceilometer/ssl/certs/chainfile.pem' expect(chef_run).to render_file(file) .with_content(%r{^ SSLCertificateChainFile /etc/ceilometer/ssl/certs/chainfile.pem$}) end it "configures #{file} ciphers when set" do - node.override['openstack']['telemetry-metric']['ssl']['ciphers'] = 'ciphers_value' + node.override['openstack']['telemetry_metric']['ssl']['ciphers'] = 'ciphers_value' expect(chef_run).to render_file(file) .with_content(/^ SSLCipherSuite ciphers_value$/) end it "configures #{file} cert_required set" do - node.override['openstack']['telemetry-metric']['ssl']['cert_required'] = true + node.override['openstack']['telemetry_metric']['ssl']['cert_required'] = true expect(chef_run).to render_file(file) .with_content(/^ SSLVerifyClient require$/) end diff --git a/spec/identity_registration_spec.rb b/spec/identity_registration_spec.rb index 08dac5c..f484fe2 100644 --- a/spec/identity_registration_spec.rb +++ b/spec/identity_registration_spec.rb @@ -10,14 +10,14 @@ describe 'openstack-telemetry::identity_registration' do include_context 'telemetry-stubs' - %w(telemetry telemetry-metric).each do |telemetry_service| + %w(telemetry telemetry_metric).each do |telemetry_service| case telemetry_service when 'telemetry' service_name = 'ceilometer' service_type = 'metering' password = 'ceilometer-pass' port = 8777 - when 'telemetry-metric' + when 'telemetry_metric' service_name = 'gnocchi' service_type = 'metric' password = 'gnocchi-pass' @@ -56,7 +56,7 @@ describe 'openstack-telemetry::identity_registration' do end context "registers #{service_name} endpoint" do - %w(admin internal public).each do |interface| + %w(internal public).each do |interface| it "#{interface} endpoint with default values" do expect(chef_run).to create_openstack_endpoint( service_type diff --git a/spec/spec_helper.rb b/spec/spec_helper.rb index 52b083c..ed8add1 100644 --- a/spec/spec_helper.rb +++ b/spec/spec_helper.rb @@ -36,7 +36,7 @@ shared_context 'telemetry-stubs' do .with('service', 'openstack-telemetry') .and_return('ceilometer-pass') allow_any_instance_of(Chef::Recipe).to receive(:get_password) - .with('service', 'openstack-telemetry-metric') + .with('service', 'openstack-telemetry_metric') .and_return('gnocchi-pass') allow_any_instance_of(Chef::Recipe).to receive(:get_password) .with('service', 'openstack-aodh')