From 8a275afc76503538e1c920ef6734c7fa01a85341 Mon Sep 17 00:00:00 2001 From: Tobias Urdin Date: Wed, 4 Apr 2018 15:49:59 +0200 Subject: [PATCH] Add proxy support to glance_image resource The glance_image resource provides the ability to download remote images using the source parameter. Specifying the proxy parameter will allow one to use a proxy server when downloading the image. Change-Id: I540a29be3eb6c95b1c3975228c23c9154b1a0cbe Closes-Bug: 1719874 --- lib/puppet/provider/glance_image/openstack.rb | 11 ++++++++++- lib/puppet/type/glance_image.rb | 6 ++++++ .../glance-image-resource-proxy-8b18f0b130f2f0dc.yaml | 6 ++++++ 3 files changed, 22 insertions(+), 1 deletion(-) create mode 100644 releasenotes/notes/glance-image-resource-proxy-8b18f0b130f2f0dc.yaml diff --git a/lib/puppet/provider/glance_image/openstack.rb b/lib/puppet/provider/glance_image/openstack.rb index 4f309806..b35c1c4c 100644 --- a/lib/puppet/provider/glance_image/openstack.rb +++ b/lib/puppet/provider/glance_image/openstack.rb @@ -24,6 +24,15 @@ Puppet::Type.type(:glance_image).provide( def create temp_file = false if @resource[:source] + if @resource[:proxy] + proxy_uri = URI(@resource[:proxy]) + proxy_host = proxy_uri.host + proxy_port = proxy_uri.port + else + proxy_host = nil + proxy_port = nil + end + # copy_from cannot handle file:// if @resource[:source] =~ /^\// # local file location = "--file=#{@resource[:source]}" @@ -31,7 +40,7 @@ Puppet::Type.type(:glance_image).provide( temp_file = Tempfile.new('puppet-glance-image') uri = URI(@resource[:source]) - Net::HTTP.start(uri.host, uri.port, + Net::HTTP.start(uri.host, uri.port, proxy_host, proxy_port, :use_ssl => uri.scheme == 'https') do |http| request = Net::HTTP::Get.new uri http.request request do |response| diff --git a/lib/puppet/type/glance_image.rb b/lib/puppet/type/glance_image.rb index 036667e0..3f57eaab 100644 --- a/lib/puppet/type/glance_image.rb +++ b/lib/puppet/type/glance_image.rb @@ -11,6 +11,7 @@ Puppet::Type.newtype(:glance_image) do container_format => 'ovf', disk_format => 'qcow2', source => 'http://uec-images.ubuntu.com/releases/precise/release/ubuntu-12.04-server-cloudimg-amd64-disk1.img', + proxy => 'http://127.0.0.1:8080', min_ram => 1234, min_disk => 1234, properties => { 'img_key' => img_value }, @@ -73,6 +74,11 @@ Puppet::Type.newtype(:glance_image) do newvalues(/\S+/) end + newparam(:proxy) do + desc "The proxy server to use if source should be downloaded" + newvalues(/\S+/) + end + newproperty(:min_ram) do desc "The minimal ram size" newvalues(/\d+/) diff --git a/releasenotes/notes/glance-image-resource-proxy-8b18f0b130f2f0dc.yaml b/releasenotes/notes/glance-image-resource-proxy-8b18f0b130f2f0dc.yaml new file mode 100644 index 00000000..2c6a4c2f --- /dev/null +++ b/releasenotes/notes/glance-image-resource-proxy-8b18f0b130f2f0dc.yaml @@ -0,0 +1,6 @@ +--- +features: + - | + The glance_image resource now provides a proxy parameter which can be used + to specify a proxy to use when downloading a remote image using the source + parameter. The new proxy parameter is optional.