From 6ec0caf1815f5de0383a43e24f3e76d800d646df Mon Sep 17 00:00:00 2001 From: Mark Vanderwiel Date: Wed, 25 Feb 2015 15:22:10 -0600 Subject: [PATCH] Add compute metadata api to common endpoints Nova metadata api endpoint was missing from common endpoints. This patch will be follow by one for compute and network to make use of these new endpoint. Change-Id: Ie3e9f27f7d6eec4f4ebb0b1dbebd0b12a03a0b65 Partial-Bug: #1425633 --- CHANGELOG.md | 1 + attributes/default.rb | 4 ---- metadata.rb | 2 +- recipes/metadata_agent.rb | 5 ++++- spec/metadata_agent_spec.rb | 13 ++++--------- spec/spec_helper.rb | 6 ++++++ templates/default/metadata_agent.ini.erb | 10 ++-------- 7 files changed, 18 insertions(+), 23 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index e6f35bec..f5a6b845 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -7,6 +7,7 @@ This file is used to list changes made in each version of cookbook-openstack-net * Use common specific_endpoint routines (bug 1412919) * Parameterize dhcp_agents_per_network * Parameterize neutron l3 agent HA parameters +* Make use of new metadata endpoint in common ## 10.1.0 * Add support for Neutron VPN Service diff --git a/attributes/default.rb b/attributes/default.rb index f1a42cbd..0dcbbab8 100644 --- a/attributes/default.rb +++ b/attributes/default.rb @@ -396,10 +396,6 @@ default['openstack']['network']['vpn']['ipsec_status_check_interval'] = 60 # ============================= Metadata Agent Configuration =============== -# The location of the Nova Metadata API service to proxy to (nil uses default) -default['openstack']['network']['metadata']['nova_metadata_ip'] = '127.0.0.1' -default['openstack']['network']['metadata']['nova_metadata_port'] = 8775 - # The name of the secret databag containing the metadata secret default['openstack']['network']['metadata']['secret_name'] = 'neutron_metadata_secret' diff --git a/metadata.rb b/metadata.rb index de959fab..fed92420 100644 --- a/metadata.rb +++ b/metadata.rb @@ -17,5 +17,5 @@ recipe 'openstack-network::vpn_agent', 'Installs packages required fo supports os end -depends 'openstack-common', '>= 10.2.0' +depends 'openstack-common', '>= 10.4.0' depends 'openstack-identity', '>= 10.0.0' diff --git a/recipes/metadata_agent.rb b/recipes/metadata_agent.rb index d129b393..d3090c9a 100644 --- a/recipes/metadata_agent.rb +++ b/recipes/metadata_agent.rb @@ -27,6 +27,7 @@ platform_options = node['openstack']['network']['platform'] identity_endpoint = internal_endpoint 'identity-internal' service_pass = get_password 'service', 'openstack-network' metadata_secret = get_secret node['openstack']['network']['metadata']['secret_name'] +compute_metadata_api = internal_endpoint 'compute-metadata-api' platform_options['neutron_metadata_agent_packages'].each do |pkg| package pkg do @@ -43,7 +44,9 @@ template '/etc/neutron/metadata_agent.ini' do variables( identity_endpoint: identity_endpoint, metadata_secret: metadata_secret, - service_pass: service_pass + service_pass: service_pass, + compute_metadata_ip: compute_metadata_api.host, + compute_metadata_port: compute_metadata_api.port ) notifies :restart, 'service[neutron-metadata-agent]', :immediately action :create diff --git a/spec/metadata_agent_spec.rb b/spec/metadata_agent_spec.rb index 0dc66dbc..fb43b42d 100644 --- a/spec/metadata_agent_spec.rb +++ b/spec/metadata_agent_spec.rb @@ -72,15 +72,10 @@ describe 'openstack-network::metadata_agent' do expect(chef_run).to render_file(file.name).with_content(/^admin_password = admin_password_value$/) end - %w[nova_metadata_ip nova_metadata_port].each do |conditional_attr| - it "displays the #{conditional_attr} attribute when present" do - node.set['openstack']['network']['metadata'][conditional_attr] = "network_metadata_#{conditional_attr}_value" - expect(chef_run).to render_file(file.name).with_content(/^#{conditional_attr} = network_metadata_#{conditional_attr}_value$/) - end - - it "does not display the #{conditional_attr} attribute if not set" do - node.set['openstack']['network']['metadata'][conditional_attr] = false - expect(chef_run).not_to render_file(file.name).with_content(/^#{conditional_attr} = /) + it 'has default metadata ip and port options set' do + [/^nova_metadata_ip = 127.0.0.1$/, + /^nova_metadata_port = 8775$/].each do |line| + expect(chef_run).to render_file(file.name).with_content(line) end end diff --git a/spec/spec_helper.rb b/spec/spec_helper.rb index 0823ce2f..6b836eaf 100644 --- a/spec/spec_helper.rb +++ b/spec/spec_helper.rb @@ -127,6 +127,12 @@ shared_context 'endpoint-stubs' do scheme: 'compute_scheme', host: 'compute_host', port: 'compute_port')) + allow_any_instance_of(Chef::Recipe).to receive(:internal_endpoint) + .with('compute-metadata-api') + .and_return(double( + scheme: 'compute_metadata_scheme', + host: 'compute_metadata_host', + port: 'compute_metadata_port')) allow_any_instance_of(Chef::Recipe).to receive(:admin_endpoint) .with('identity-admin') .and_return(double( diff --git a/templates/default/metadata_agent.ini.erb b/templates/default/metadata_agent.ini.erb index 577b2f13..57fe7fe8 100644 --- a/templates/default/metadata_agent.ini.erb +++ b/templates/default/metadata_agent.ini.erb @@ -12,16 +12,10 @@ admin_user = <%= node["openstack"]["network"]["service_user"] %> admin_password = <%= @service_pass %> # IP address used by Nova metadata server -# Default: nova_metadata_ip = 127.0.0.1 -<% if node["openstack"]["network"]["metadata"]["nova_metadata_ip"] -%> -nova_metadata_ip = <%= node["openstack"]["network"]["metadata"]["nova_metadata_ip"] %> -<% end -%> +nova_metadata_ip = <%= @compute_metadata_ip %> # TCP Port used by Nova metadata server -# Default: nova_metadata_port = 8775 -<% if node["openstack"]["network"]["metadata"]["nova_metadata_port"] -%> -nova_metadata_port = <%= node["openstack"]["network"]["metadata"]["nova_metadata_port"] %> -<% end -%> +nova_metadata_port = <%= @compute_metadata_port %> # Which protocol to use for requests to Nova metadata server, http or https # nova_metadata_protocol = http