smart_proxy_pulp 1.3.0 → 1.4.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
- SHA1:
3
- metadata.gz: d466a8b14430625f9d636f3324f5a617ce5ff96f
4
- data.tar.gz: adc6fa1e589b56a2504b374b4d880a52a4f2105f
2
+ SHA256:
3
+ metadata.gz: e11236f52109a604b1171429f0d824d2997d1f366af7ddec1c606d3b041cf8ad
4
+ data.tar.gz: 4f3d157ba4e93fcabbbc846ecec510235f0010c0dd728560e9e83331a06a624f
5
5
  SHA512:
6
- metadata.gz: f0d5b5abc4b048205f9347745651d5ead876475b0eb24ed5ea8667240b407141eb9e2ca9042c5f73777e12ee7b0c54797eb9dc65084d7dc8cc42b2cdfbe1a36b
7
- data.tar.gz: 72d174734b54cf88d1d0d39221ccf225a3cdb846d1e716c2cd9e81af61ed32d2439fb443b928ece14b57243ad24ef882b64c644cb73df0138496fec5564cdf60
6
+ metadata.gz: 92005aeed682489ea51bdca541668fca8c2ba453974d99642e13abe1b8e4774b46d2d269c4ec4b37bceb8ff97bdce83b08eeecc9fbeac5508768e2c0da46ea50
7
+ data.tar.gz: 95c595b02e6006bfc53fa99d3dce666a9274cfc7b61446f3f51202cd1a23c0c783c4776ef0b24b3f575db17bd34f56995b1d29302ef7608df99f3d0a8baffbbf
data/Gemfile CHANGED
@@ -5,5 +5,24 @@ group :development do
5
5
  gem 'smart_proxy', :git => 'https://github.com/theforeman/smart-proxy', :branch => 'develop'
6
6
  end
7
7
 
8
- gem 'addressable', '< 2.4.0', :platforms => :ruby_18
9
- gem 'json', '~> 1.0', :platforms => [:ruby_18, :ruby_19]
8
+ group :test do
9
+ gem 'webmock'
10
+ if RUBY_VERSION < '2.1'
11
+ gem 'public_suffix', '< 3'
12
+ else
13
+ gem 'public_suffix'
14
+ end
15
+ if RUBY_VERSION < '2.2'
16
+ gem 'rack-test', '< 0.8'
17
+ else
18
+ gem 'rack-test'
19
+ end
20
+ end
21
+
22
+ if RUBY_VERSION < '2.2'
23
+ gem 'sinatra', '< 2'
24
+ gem 'rack', '>= 1.1', '< 2.0.0'
25
+ else
26
+ gem 'sinatra'
27
+ gem 'rack', '>= 1.1'
28
+ end
@@ -1,3 +1,4 @@
1
1
  require 'smart_proxy_pulp_plugin/version'
2
2
  require 'smart_proxy_pulp_plugin/pulp_plugin'
3
- require 'smart_proxy_pulp_plugin/pulp_node_plugin'
3
+ require 'smart_proxy_pulp_plugin/pulp_node_plugin'
4
+ require 'smart_proxy_pulp_plugin/pulp3_plugin'
@@ -2,7 +2,7 @@ module PulpProxy
2
2
  class DiskUsage
3
3
  include ::Proxy::Util
4
4
  include ::Proxy::Log
5
- SIZE = { :kilobyte => 1_024, :megabyte => 1_048_576, :gigabyte => 1_073_741_824, :terabyte => 1_099_511_627_776 }
5
+ SIZE = { :byte => 1, :kilobyte => 1_024, :megabyte => 1_048_576, :gigabyte => 1_073_741_824, :terabyte => 1_099_511_627_776 }
6
6
 
7
7
  attr_reader :path, :stat, :size
8
8
 
@@ -0,0 +1,38 @@
1
+ require 'sinatra'
2
+ require 'smart_proxy_pulp_plugin/pulp3_client'
3
+ require 'smart_proxy_pulp_plugin/disk_usage'
4
+
5
+ module PulpProxy
6
+ class Pulp3Api < Sinatra::Base
7
+ helpers ::Proxy::Helpers
8
+
9
+ get '/status' do
10
+ content_type :json
11
+ begin
12
+ result = Pulp3Client.get("api/v3/status/")
13
+ return result.body if result.is_a?(Net::HTTPSuccess)
14
+ log_halt result.code, "Pulp server at #{::PulpProxy::Settings.settings.pulp_url} returned an error: '#{result.message}'"
15
+ rescue SocketError, Errno::ECONNREFUSED => e
16
+ log_halt 503, "Communication error with '#{URI.parse(::PulpProxy::Settings.settings.pulp_url.to_s).host}': #{e.message}"
17
+ end
18
+ end
19
+
20
+ get '/status/disk_usage' do
21
+ content_type :json
22
+ if params[:size]
23
+ size = params[:size] ? params[:size].to_sym : nil
24
+ log_halt 400, "size parameter must be of: #{DiskUsage::SIZE.keys.join(',')}" unless DiskUsage::SIZE.include?(size)
25
+ else
26
+ size = :byte
27
+ end
28
+
29
+ monitor_dirs = Hash[::PulpProxy::Pulp3Plugin.settings.marshal_dump.select { |key, _| key == :pulp_dir || key == :pulp_content_dir }]
30
+ begin
31
+ pulp_disk = DiskUsage.new({:path => monitor_dirs, :size => size.to_sym})
32
+ pulp_disk.to_json
33
+ rescue ::Proxy::Error::ConfigurationError
34
+ log_halt 500, 'Could not find df command to evaluate disk space'
35
+ end
36
+ end
37
+ end
38
+ end
@@ -0,0 +1,35 @@
1
+ require 'net/http'
2
+ require 'net/https'
3
+ require 'uri'
4
+ require 'smart_proxy_pulp_plugin/settings'
5
+ require 'proxy/log'
6
+
7
+ module PulpProxy
8
+ class Pulp3Client
9
+ def self.get(path)
10
+ uri = URI.parse(::PulpProxy::Pulp3Plugin.settings.pulp_url.to_s)
11
+ req = Net::HTTP::Get.new(URI.join(uri.to_s.chomp('/') + '/', path))
12
+ req.add_field('Accept', 'application/json')
13
+ self.http.request(req)
14
+ end
15
+
16
+ def self.capabilities
17
+ body = JSON.parse(get("api/v3/status/").body)
18
+ body['versions'].map{|item| item['component'] }
19
+ rescue => e
20
+ logger.error("Could not fetch capabilities: #{e.message}")
21
+ []
22
+ end
23
+
24
+ def self.logger
25
+ Proxy::LoggerFactory.logger
26
+ end
27
+
28
+ def self.http
29
+ uri = URI.parse(::PulpProxy::Pulp3Plugin.settings.pulp_url.to_s)
30
+ http = Net::HTTP.new(uri.host, uri.port)
31
+ http.use_ssl = uri.scheme == 'https'
32
+ http
33
+ end
34
+ end
35
+ end
@@ -0,0 +1,5 @@
1
+ require 'smart_proxy_pulp_plugin/pulp3_api'
2
+
3
+ map "/pulp3" do
4
+ run PulpProxy::Pulp3Api
5
+ end
@@ -0,0 +1,22 @@
1
+ require 'puppet_proxy_common/custom_validators'
2
+
3
+ module PulpProxy
4
+ class Pulp3Plugin < ::Proxy::Plugin
5
+ plugin "pulp3", ::PulpProxy::VERSION
6
+ default_settings :pulp_url => 'https://localhost/pulp/',
7
+ :pulp_dir => '/var/lib/pulp',
8
+ :pulp_content_dir => '/var/lib/pulp/content',
9
+ :mirror => false
10
+
11
+ load_validators :url => ::Proxy::Puppet::Validators::UrlValidator
12
+ validate :pulp_url, :url => true
13
+
14
+ expose_setting :pulp_url
15
+ expose_setting :mirror
16
+ capability( lambda do ||
17
+ Pulp3Client.capabilities
18
+ end)
19
+ http_rackup_path File.expand_path("pulp3_http_config.ru", File.expand_path("../", __FILE__))
20
+ https_rackup_path File.expand_path("pulp3_http_config.ru", File.expand_path("../", __FILE__))
21
+ end
22
+ end
@@ -6,11 +6,13 @@ require 'smart_proxy_pulp_plugin/settings'
6
6
  module PulpProxy
7
7
  class Api < Sinatra::Base
8
8
  helpers ::Proxy::Helpers
9
+ authorize_with_trusted_hosts
10
+ authorize_with_ssl_client
9
11
 
10
12
  get "/status" do
11
13
  content_type :json
12
14
  begin
13
- result = PulpClient.get("/api/v2/status/")
15
+ result = PulpClient.get("api/v2/status/")
14
16
  return result.body if result.is_a?(Net::HTTPSuccess)
15
17
  log_halt result.code, "Pulp server at #{::PulpProxy::Settings.settings.pulp_url} returned an error: '#{result.message}'"
16
18
  rescue Errno::ECONNREFUSED => e
@@ -7,8 +7,7 @@ module PulpProxy
7
7
  class PulpClient
8
8
  def self.get(path)
9
9
  uri = URI.parse(::PulpProxy::Settings.settings.pulp_url.to_s)
10
- path = [uri.path, path].join('/') unless uri.path.empty?
11
- req = Net::HTTP::Get.new(URI.join(uri.to_s, path).path)
10
+ req = Net::HTTP::Get.new(URI.join(uri.to_s.chomp('/') + '/', path))
12
11
  req.add_field('Accept', 'application/json')
13
12
  req.content_type = 'application/json'
14
13
  response = self.http.request(req)
@@ -7,6 +7,7 @@ module PulpNodeProxy
7
7
  :puppet_content_dir => '/etc/puppet/environments',
8
8
  :mongodb_dir => '/var/lib/mongodb'
9
9
 
10
+ expose_setting :pulp_url
10
11
  http_rackup_path File.expand_path("pulp_node_http_config.ru", File.expand_path("../", __FILE__))
11
12
  https_rackup_path File.expand_path("pulp_node_http_config.ru", File.expand_path("../", __FILE__))
12
13
  end
@@ -7,6 +7,8 @@ module PulpProxy
7
7
  :puppet_content_dir => '/etc/puppet/environments',
8
8
  :mongodb_dir => '/var/lib/mongodb'
9
9
 
10
+ expose_setting :pulp_url
11
+
10
12
  http_rackup_path File.expand_path("pulp_http_config.ru", File.expand_path("../", __FILE__))
11
13
  https_rackup_path File.expand_path("pulp_http_config.ru", File.expand_path("../", __FILE__))
12
14
  end
@@ -1,3 +1,3 @@
1
1
  module PulpProxy
2
- VERSION = "1.3.0"
2
+ VERSION = "1.4.0"
3
3
  end
@@ -0,0 +1,7 @@
1
+ ---
2
+ :enabled: true
3
+ #:pulp_url: https://localhost/pulp/
4
+ #:pulp_dir: /var/lib/pulp
5
+ #:pulp_content_dir: /var/lib/pulp/content
6
+ #:puppet_content_dir: /etc/pupppet/environments
7
+ #:mirror: false
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: smart_proxy_pulp
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.3.0
4
+ version: 1.4.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Dmitri Dolguikh
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2016-09-06 00:00:00.000000000 Z
11
+ date: 2019-03-08 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: test-unit
@@ -56,14 +56,14 @@ dependencies:
56
56
  name: rack-test
57
57
  requirement: !ruby/object:Gem::Requirement
58
58
  requirements:
59
- - - "~>"
59
+ - - ">="
60
60
  - !ruby/object:Gem::Version
61
61
  version: '0'
62
62
  type: :development
63
63
  prerelease: false
64
64
  version_requirements: !ruby/object:Gem::Requirement
65
65
  requirements:
66
- - - "~>"
66
+ - - ">="
67
67
  - !ruby/object:Gem::Version
68
68
  version: '0'
69
69
  - !ruby/object:Gem::Dependency
@@ -92,6 +92,10 @@ files:
92
92
  - bundler.d/pulp.rb
93
93
  - lib/smart_proxy_pulp.rb
94
94
  - lib/smart_proxy_pulp_plugin/disk_usage.rb
95
+ - lib/smart_proxy_pulp_plugin/pulp3_api.rb
96
+ - lib/smart_proxy_pulp_plugin/pulp3_client.rb
97
+ - lib/smart_proxy_pulp_plugin/pulp3_http_config.ru
98
+ - lib/smart_proxy_pulp_plugin/pulp3_plugin.rb
95
99
  - lib/smart_proxy_pulp_plugin/pulp_api.rb
96
100
  - lib/smart_proxy_pulp_plugin/pulp_client.rb
97
101
  - lib/smart_proxy_pulp_plugin/pulp_http_config.ru
@@ -101,10 +105,11 @@ files:
101
105
  - lib/smart_proxy_pulp_plugin/settings.rb
102
106
  - lib/smart_proxy_pulp_plugin/version.rb
103
107
  - settings.d/pulp.yml.example
108
+ - settings.d/pulp3.yml.example
104
109
  - settings.d/pulpnode.yml.example
105
110
  homepage: https://github.com/theforeman/smart-proxy-pulp-plugin
106
111
  licenses:
107
- - GPLv3
112
+ - GPL-3.0
108
113
  metadata: {}
109
114
  post_install_message:
110
115
  rdoc_options: []
@@ -122,7 +127,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
122
127
  version: '0'
123
128
  requirements: []
124
129
  rubyforge_project:
125
- rubygems_version: 2.5.1
130
+ rubygems_version: 2.7.6
126
131
  signing_key:
127
132
  specification_version: 4
128
133
  summary: Basic Pulp support for Foreman Smart-Proxy