pdc 0.1.11 → 0.1.12

Sign up to get free protection for your applications and to get access to all the features.
Files changed (97) hide show
  1. checksums.yaml +4 -4
  2. data/.rubocop.yml +23 -0
  3. data/.travis.yml +3 -4
  4. data/Gemfile +0 -1
  5. data/docs/sphinx_deployment.mk +1 -1
  6. data/examples/local_pdc_dev.rb +10 -1
  7. data/examples/logger.rb +7 -14
  8. data/examples/pdc_global_component_contact.rb +18 -0
  9. data/examples/pdc_release_rpm_mapping.rb +2 -2
  10. data/examples/pdc_resource_tests.rb +3 -3
  11. data/examples/pdc_test_cache.rb +1 -1
  12. data/examples/prod_failures.rb +1 -1
  13. data/examples/prod_pdc.rb +10 -1
  14. data/examples/test_no_ssl_verification.rb +1 -1
  15. data/examples/url.rb +4 -4
  16. data/lib/pdc.rb +1 -1
  17. data/lib/pdc/base.rb +1 -0
  18. data/lib/pdc/config.rb +0 -7
  19. data/lib/pdc/http/request/token_fetcher.rb +1 -1
  20. data/lib/pdc/http/response/pagination.rb +0 -2
  21. data/lib/pdc/resource.rb +1 -0
  22. data/lib/pdc/resource/associations.rb +39 -0
  23. data/lib/pdc/resource/associations/association.rb +21 -0
  24. data/lib/pdc/resource/associations/builder.rb +46 -0
  25. data/lib/pdc/resource/associations/has_many.rb +26 -0
  26. data/lib/pdc/resource/attributes.rb +13 -4
  27. data/lib/pdc/resource/identity.rb +1 -1
  28. data/lib/pdc/resource/relation.rb +5 -0
  29. data/lib/pdc/resource/relation/pagination.rb +4 -4
  30. data/lib/pdc/resource/rest_api.rb +1 -1
  31. data/lib/pdc/resource/scopes.rb +1 -1
  32. data/lib/pdc/v1.rb +4 -0
  33. data/lib/pdc/v1/global_component_contact.rb +5 -0
  34. data/lib/pdc/v1/multi_destination.rb +8 -0
  35. data/lib/pdc/v1/release.rb +3 -1
  36. data/lib/pdc/v1/release_variant.rb +6 -1
  37. data/lib/pdc/v1/released_file.rb +10 -0
  38. data/lib/pdc/v1/variant_cpe.rb +7 -0
  39. data/lib/pdc/version.rb +1 -1
  40. data/pdc.gemspec +8 -10
  41. data/spec/fixtures/vcr/_page_count_returns_total_count.yml +6 -6
  42. data/spec/fixtures/vcr/behaves_like_an_array.yml +141 -0
  43. data/spec/fixtures/vcr/brew_can_be_nil.yml +23 -14
  44. data/spec/fixtures/vcr/brew_may_be_present.yml +4 -2
  45. data/spec/fixtures/vcr/caches_multiple_response.yml +42 -36
  46. data/spec/fixtures/vcr/caches_response_with_a_query.yml +16 -16
  47. data/spec/fixtures/vcr/caches_response_with_multiple_query.yml +16 -16
  48. data/spec/fixtures/vcr/caches_response_without_query.yml +14 -14
  49. data/spec/fixtures/vcr/can_find_global_contact_by_component_name.yml +47 -0
  50. data/spec/fixtures/vcr/can_get_release_by_multi_product_version.yml +9 -9
  51. data/spec/fixtures/vcr/can_iterate_using_each.yml +8 -8
  52. data/spec/fixtures/vcr/content_delivery_repos_must_return_a_record.yml +2 -2
  53. data/spec/fixtures/vcr/cpe_returns_number.yml +44 -0
  54. data/spec/fixtures/vcr/cpe_works_with_where.yml +85 -0
  55. data/spec/fixtures/vcr/destination_returns_count.yml +44 -0
  56. data/spec/fixtures/vcr/destination_works_with_where.yml +44 -0
  57. data/spec/fixtures/vcr/fetches_variants_of_a_release.yml +20 -20
  58. data/spec/fixtures/vcr/find_on_has_many_association.yml +48 -0
  59. data/spec/fixtures/vcr/get_released_files_by_file_primary_key.yml +44 -0
  60. data/spec/fixtures/vcr/get_released_files_by_release_id.yml +44 -0
  61. data/spec/fixtures/vcr/has_many_association.yml +48 -0
  62. data/spec/fixtures/vcr/has_serveral_cdn_content_delivery_repos.yml +1 -1
  63. data/spec/fixtures/vcr/must_has_compose.yml +45 -1
  64. data/spec/fixtures/vcr/must_has_version__attributes.yml +2 -2
  65. data/spec/fixtures/vcr/must_return_number_of_resources.yml +62 -14
  66. data/spec/fixtures/vcr/preserves_the_filters.yml +2 -2
  67. data/spec/fixtures/vcr/returns_a_contact_email.yml +47 -0
  68. data/spec/fixtures/vcr/returns_a_gloabl_contact_id.yml +47 -0
  69. data/spec/fixtures/vcr/returns_a_mail_name.yml +47 -0
  70. data/spec/fixtures/vcr/returns_contact_for_component.yml +47 -0
  71. data/spec/fixtures/vcr/returns_contact_role.yml +48 -0
  72. data/spec/fixtures/vcr/returns_cpe.yml +88 -0
  73. data/spec/fixtures/vcr/returns_number_of_released_files.yml +48 -0
  74. data/spec/fixtures/vcr/returns_release_file_by_retrieve.yml +44 -0
  75. data/spec/fixtures/vcr/returns_resources_on_that_page.yml +2 -2
  76. data/spec/fixtures/vcr/returns_the_total_count_and_not_items_in_page.yml +6 -6
  77. data/spec/fixtures/vcr/returns_url_of_a_release.yml +2 -2
  78. data/spec/fixtures/vcr/returns_url_of_a_release_variant.yml +7 -7
  79. data/spec/fixtures/vcr/scopes_on_associations.yml +48 -0
  80. data/spec/fixtures/vcr/should_not_be_in_the_list_of_attributes.yml +4 -4
  81. data/spec/fixtures/vcr/works_with_where.yml +45 -1
  82. data/spec/pdc/resource/associations_spec.rb +111 -0
  83. data/spec/pdc/resource/attributes_spec.rb +30 -20
  84. data/spec/pdc/resource/cache_spec.rb +1 -1
  85. data/spec/pdc/resource/identity_spec.rb +10 -10
  86. data/spec/pdc/resource/path_spec.rb +1 -1
  87. data/spec/pdc/resource/relation_spec.rb +1 -1
  88. data/spec/pdc/v1/content_delivery_repo_spec.rb +6 -6
  89. data/spec/pdc/v1/global_component_contact_spec.rb +64 -0
  90. data/spec/pdc/v1/multi_destination_sepc.rb +27 -0
  91. data/spec/pdc/v1/release_spec.rb +10 -10
  92. data/spec/pdc/v1/release_variant_spec.rb +8 -0
  93. data/spec/pdc/v1/released_file_spec.rb +37 -0
  94. data/spec/pdc/v1/variant_cpe_spec.rb +29 -0
  95. data/spec/spec_helper.rb +1 -4
  96. data/spec/support/fixtures.rb +29 -2
  97. metadata +77 -20
@@ -0,0 +1,26 @@
1
+ require 'pdc/resource/associations/association'
2
+
3
+ module PDC::Resource
4
+ module Associations
5
+ class HasMany < Association
6
+ def initialize(*args)
7
+ super
8
+ # This is the default uri. It can be overrided when defining a has_many association
9
+ # if the uri is different with the default one.
10
+ # E.g: has_many :releases, uri: 'rest_api/v1/releases/?product_version=:product_version_id'
11
+ @options.reverse_merge!(uri: "#{parent_path}/:#{foreign_key}/#{@name}/(:#{primary_key})")
12
+ @params[foreign_key] = parent.id
13
+ end
14
+
15
+ def load
16
+ self
17
+ end
18
+
19
+ private
20
+
21
+ def parent_path
22
+ parent.class.model_name.element.pluralize
23
+ end
24
+ end
25
+ end
26
+ end
@@ -62,7 +62,7 @@ module PDC::Resource
62
62
  end
63
63
  @instance_method_container
64
64
  end
65
- end # class methods
65
+ end
66
66
 
67
67
  def initialize(attributes = {})
68
68
  self.attributes = attributes
@@ -90,7 +90,8 @@ module PDC::Resource
90
90
  end
91
91
 
92
92
  def method_missing(name, *args, &block)
93
- if attribute?(name) then attribute(name)
93
+ if association?(name) then association(name).load
94
+ elsif attribute?(name) then attribute(name)
94
95
  elsif predicate?(name) then predicate(name)
95
96
  elsif setter?(name) then set_attribute(name, args.first)
96
97
  else super
@@ -98,7 +99,15 @@ module PDC::Resource
98
99
  end
99
100
 
100
101
  def respond_to_missing?(name, include_private = false)
101
- attribute?(name) || predicate?(name) || setter?(name) || super
102
+ association?(name) || attribute?(name) || predicate?(name) || setter?(name) || super
103
+ end
104
+
105
+ def association?(name)
106
+ associations.key?(name)
107
+ end
108
+
109
+ def association(name)
110
+ associations[name].build(self)
102
111
  end
103
112
 
104
113
  def attribute?(name)
@@ -110,7 +119,7 @@ module PDC::Resource
110
119
  end
111
120
 
112
121
  def predicate?(name)
113
- name.to_s.end_with?('?')
122
+ name.to_s.end_with?('?') && attributes.key?(name[0..-2])
114
123
  end
115
124
 
116
125
  def predicate(name)
@@ -34,7 +34,7 @@ module PDC::Resource
34
34
  def default_primary_key
35
35
  model_name.foreign_key.to_s
36
36
  end
37
- end # ClassMethods
37
+ end
38
38
 
39
39
  def id?
40
40
  attributes[primary_key].present?
@@ -12,6 +12,7 @@ module PDC::Resource
12
12
 
13
13
  attr_reader :klass
14
14
  attr_writer :params
15
+ delegate :to_ary, :[], :any?, :empty?, :last, :size, :metadata, to: :contents!
15
16
 
16
17
  alias all to_a
17
18
 
@@ -70,6 +71,10 @@ module PDC::Resource
70
71
  with_scope { klass.send(name, *args, &block) }
71
72
  end
72
73
 
74
+ def respond_to_missing?(name)
75
+ klass.respond_to? name
76
+ end
77
+
73
78
  # Keep hold of current scope while running a method on the class
74
79
  def with_scope
75
80
  previous = klass.current_scope
@@ -1,9 +1,9 @@
1
1
  module PDC::Resource
2
2
  PAGINATION = :pagination
3
- PAGINATION_KEYS = [
4
- :resource_count,
5
- :previous_page,
6
- :next_page
3
+ PAGINATION_KEYS = %i[
4
+ resource_count
5
+ previous_page
6
+ next_page
7
7
  ].freeze
8
8
 
9
9
  module Pagination
@@ -29,7 +29,7 @@ module PDC::Resource
29
29
  query = params.except(*resource_path.variables)
30
30
  request(:get, uri, query)
31
31
  end
32
- end # classmethod
32
+ end
33
33
 
34
34
  def initialize(attr = {})
35
35
  super
@@ -20,7 +20,7 @@ module PDC::Resource
20
20
  def current_scope
21
21
  ScopeRegistry.value_for(:current_scope, name)
22
22
  end
23
- end # class methods
23
+ end
24
24
 
25
25
  def scoped
26
26
  self.class.scoped
@@ -6,5 +6,9 @@ module PDC
6
6
  require 'pdc/v1/release_variant'
7
7
  require 'pdc/v1/release_rpm_mapping'
8
8
  require 'pdc/v1/content_delivery_repo'
9
+ require 'pdc/v1/global_component_contact'
10
+ require 'pdc/v1/released_file'
11
+ require 'pdc/v1/multi_destination'
12
+ require 'pdc/v1/variant_cpe'
9
13
  end
10
14
  end
@@ -0,0 +1,5 @@
1
+ module PDC::V1
2
+ class GlobalComponentContact < PDC::Base
3
+ attributes :component, :contact, :role
4
+ end
5
+ end
@@ -0,0 +1,8 @@
1
+ module PDC
2
+ module V1
3
+ class MultiDestination < PDC::Base
4
+ attributes :id, :destination_repo, :global_component,
5
+ :base_product, :active, :origin_repo, :subscribers
6
+ end
7
+ end
8
+ end
@@ -4,7 +4,9 @@ module PDC
4
4
  attributes :short, :version, :name, :base_product,
5
5
  :active, :product_version, :release_type,
6
6
  :compose_set, :integrated_with, :bugzilla,
7
- :dist_git, :brew, :product_pages, :errata
7
+ :dist_git, :brew, :product_pages, :errata,
8
+ :sigkey, :allow_buildroot_push,
9
+ :allowed_debuginfo_services, :allowed_push_targets
8
10
 
9
11
  def variants
10
12
  @variants ||= ReleaseVariant.where(release: id)
@@ -3,7 +3,8 @@ module PDC::V1
3
3
  self.primary_key = :id
4
4
 
5
5
  attributes :release, :uid, :name, :type, :arches,
6
- :variant_version, :variant_release
6
+ :variant_version, :variant_release,
7
+ :allowed_push_targets
7
8
 
8
9
  def release
9
10
  Release.find(attributes[:release])
@@ -20,6 +21,10 @@ module PDC::V1
20
21
  @url = connection.build_url(instance_path).to_s
21
22
  end
22
23
 
24
+ def cpe
25
+ VariantCpe.where(variant_uid: attributes[:uid]).first
26
+ end
27
+
23
28
  # attribute_rename :release, :release_id
24
29
 
25
30
  # belongs_to :release, class_name: 'PDC::V1::Release',
@@ -0,0 +1,10 @@
1
+ module PDC
2
+ module V1
3
+ class ReleasedFile < PDC::Base
4
+ attributes :id, :file_primary_key, :repo, :released_date,
5
+ :release_date, :created_at, :updated_at,
6
+ :zero_day_release, :obsolete, :build,
7
+ :package, :file
8
+ end
9
+ end
10
+ end
@@ -0,0 +1,7 @@
1
+ module PDC
2
+ module V1
3
+ class VariantCpe < PDC::Base
4
+ attributes :id, :release, :variant_uid, :cpe
5
+ end
6
+ end
7
+ end
@@ -1,3 +1,3 @@
1
1
  module PDC
2
- VERSION = '0.1.11'.freeze
2
+ VERSION = '0.1.12'.freeze
3
3
  end
@@ -1,5 +1,5 @@
1
- # coding: utf-8
2
1
  lib = File.expand_path('../lib', __FILE__)
2
+
3
3
  $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
4
4
  require 'pdc/version'
5
5
 
@@ -16,24 +16,22 @@ Gem::Specification.new do |s|
16
16
 
17
17
  # Prevent pushing this gem to RubyGems.org by setting 'allowed_push_host', or
18
18
  # delete this section to allow pushing this gem to any host.
19
- if s.respond_to?(:metadata)
20
- s.metadata['allowed_push_host'] = 'https://rubygems.org'
21
- else
22
- raise 'RubyGems 2.0 or newer is required to protect against public gem pushes.'
23
- end
19
+ raise 'RubyGems 2.0 or newer is required to protect against public gem pushes.' \
20
+ unless s.respond_to?(:metadata)
24
21
 
22
+ s.metadata['allowed_push_host'] = 'https://rubygems.org'
25
23
  s.files = `git ls-files`.split("\n")
26
24
  s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
27
25
  s.executables = `git ls-files -- bin/*`.split("\n").map { |f| File.basename(f) }
28
26
  s.require_paths = ['lib']
29
27
 
30
- s.add_dependency 'activesupport', '~> 3.2.22.2'
31
28
  s.add_dependency 'activemodel', '~> 3.2.22.2'
32
- s.add_dependency 'uri_template', '~> 0.7.0'
33
- s.add_dependency 'multi_json', '~> 1.11'
29
+ s.add_dependency 'activesupport', '~> 3.2.22.2'
34
30
  s.add_dependency 'faraday', '~> 0.9.2'
35
- s.add_dependency 'faraday_middleware', '~> 0.10.0'
36
31
  s.add_dependency 'faraday-http-cache', '~> 1.3.0'
32
+ s.add_dependency 'faraday_middleware', '~> 0.10.0'
33
+ s.add_dependency 'multi_json', '~> 1.11'
34
+ s.add_dependency 'uri_template', '~> 0.7.0'
37
35
  # redhat sudo yum install ruby-devel libcurl-devel openssl-devel
38
36
  # ubuntu sudo apt-get install libcurl3 libcurl3-gnutls libcurl4-openssl-dev
39
37
  s.add_dependency 'curb', '~> 0.9.3'
@@ -2,7 +2,7 @@
2
2
  http_interactions:
3
3
  - request:
4
4
  method: get
5
- uri: https://pdc.host.dev.eng.pek2.redhat.com/rest_api/v1/arches/?page=2
5
+ uri: https://example.com/rest_api/v1/arches/?page=2
6
6
  body:
7
7
  encoding: US-ASCII
8
8
  string: ''
@@ -43,12 +43,12 @@ http_interactions:
43
43
  - application/json
44
44
  body:
45
45
  encoding: UTF-8
46
- string: '{"count":50,"next":"https://pdc.host.dev.eng.pek2.redhat.com/rest_api/v1/arches/?page=3","previous":"https://pdc.host.dev.eng.pek2.redhat.com/rest_api/v1/arches/","results":[{"name":"i386"},{"name":"i486"},{"name":"i586"},{"name":"i686"},{"name":"ia32e"},{"name":"ia64"},{"name":"noarch"},{"name":"nosrc"},{"name":"ppc"},{"name":"ppc64"},{"name":"ppc64iseries"},{"name":"ppc64le"},{"name":"ppc64p7"},{"name":"ppc64pseries"},{"name":"s390"},{"name":"s390x"},{"name":"sh3"},{"name":"sh4"},{"name":"sh4a"},{"name":"sparc"}]}'
46
+ string: '{"count":50,"next":"https://example.com/rest_api/v1/arches/?page=3","previous":"https://example.com/rest_api/v1/arches/","results":[{"name":"i386"},{"name":"i486"},{"name":"i586"},{"name":"i686"},{"name":"ia32e"},{"name":"ia64"},{"name":"noarch"},{"name":"nosrc"},{"name":"ppc"},{"name":"ppc64"},{"name":"ppc64iseries"},{"name":"ppc64le"},{"name":"ppc64p7"},{"name":"ppc64pseries"},{"name":"s390"},{"name":"s390x"},{"name":"sh3"},{"name":"sh4"},{"name":"sh4a"},{"name":"sparc"}]}'
47
47
  http_version:
48
48
  recorded_at: Thu, 31 Dec 2015 14:00:00 GMT
49
49
  - request:
50
50
  method: get
51
- uri: https://pdc.host.dev.eng.pek2.redhat.com/rest_api/v1/arches/?page=3
51
+ uri: https://example.com/rest_api/v1/arches/?page=3
52
52
  body:
53
53
  encoding: US-ASCII
54
54
  string: ''
@@ -89,12 +89,12 @@ http_interactions:
89
89
  - application/json
90
90
  body:
91
91
  encoding: UTF-8
92
- string: '{"count":50,"next":null,"previous":"https://pdc.host.dev.eng.pek2.redhat.com/rest_api/v1/arches/?page=2","results":[{"name":"sparc64"},{"name":"sparc64v"},{"name":"sparcv8"},{"name":"sparcv9"},{"name":"sparcv9v"},{"name":"src"},{"name":"x86_64"},{"name":"aarch64"},{"name":"asdfwfsf"},{"name":"asdfdswe"}]}'
92
+ string: '{"count":50,"next":null,"previous":"https://example.com/rest_api/v1/arches/?page=2","results":[{"name":"sparc64"},{"name":"sparc64v"},{"name":"sparcv8"},{"name":"sparcv9"},{"name":"sparcv9v"},{"name":"src"},{"name":"x86_64"},{"name":"aarch64"},{"name":"asdfwfsf"},{"name":"asdfdswe"}]}'
93
93
  http_version:
94
94
  recorded_at: Thu, 31 Dec 2015 14:00:00 GMT
95
95
  - request:
96
96
  method: get
97
- uri: https://pdc.host.dev.eng.pek2.redhat.com/rest_api/v1/arches/?page=2
97
+ uri: https://example.com/rest_api/v1/arches/?page=2
98
98
  body:
99
99
  encoding: US-ASCII
100
100
  string: ''
@@ -135,7 +135,7 @@ http_interactions:
135
135
  - application/json
136
136
  body:
137
137
  encoding: UTF-8
138
- string: '{"count":50,"next":"https://pdc.host.dev.eng.pek2.redhat.com/rest_api/v1/arches/?page=3","previous":"https://pdc.host.dev.eng.pek2.redhat.com/rest_api/v1/arches/","results":[{"name":"i386"},{"name":"i486"},{"name":"i586"},{"name":"i686"},{"name":"ia32e"},{"name":"ia64"},{"name":"noarch"},{"name":"nosrc"},{"name":"ppc"},{"name":"ppc64"},{"name":"ppc64iseries"},{"name":"ppc64le"},{"name":"ppc64p7"},{"name":"ppc64pseries"},{"name":"s390"},{"name":"s390x"},{"name":"sh3"},{"name":"sh4"},{"name":"sh4a"},{"name":"sparc"}]}'
138
+ string: '{"count":50,"next":"https://example.com/rest_api/v1/arches/?page=3","previous":"https://example.com/rest_api/v1/arches/","results":[{"name":"i386"},{"name":"i486"},{"name":"i586"},{"name":"i686"},{"name":"ia32e"},{"name":"ia64"},{"name":"noarch"},{"name":"nosrc"},{"name":"ppc"},{"name":"ppc64"},{"name":"ppc64iseries"},{"name":"ppc64le"},{"name":"ppc64p7"},{"name":"ppc64pseries"},{"name":"s390"},{"name":"s390x"},{"name":"sh3"},{"name":"sh4"},{"name":"sh4a"},{"name":"sparc"}]}'
139
139
  http_version:
140
140
  recorded_at: Thu, 31 Dec 2015 14:00:00 GMT
141
141
  recorded_with: VCR 3.0.3
@@ -0,0 +1,141 @@
1
+ ---
2
+ http_interactions:
3
+ - request:
4
+ method: get
5
+ uri: https://example.com/rest_api/v1/releases/?product_version=ceph-1
6
+ body:
7
+ encoding: US-ASCII
8
+ string: ''
9
+ headers:
10
+ User-Agent:
11
+ - Faraday v0.9.2
12
+ Accept-Encoding:
13
+ - gzip;q=1.0,deflate;q=0.6,identity;q=0.3
14
+ Accept:
15
+ - "*/*"
16
+ response:
17
+ status:
18
+ code: 200
19
+ message: OK
20
+ headers:
21
+ Date:
22
+ - Wed, 17 Jan 2018 06:54:27 GMT
23
+ Server:
24
+ - Apache/2.4.6 (Red Hat Enterprise Linux) OpenSSL/1.0.1e-fips mod_auth_kerb/5.4
25
+ mod_wsgi/3.4 Python/2.7.5
26
+ Expires:
27
+ - Wed, 17 Jan 2018 06:55:00 GMT
28
+ Vary:
29
+ - Accept,Cookie
30
+ Last-Modified:
31
+ - Tue, 26 Sep 2017 08:04:24 GMT
32
+ Allow:
33
+ - GET, POST, PUT, PATCH, HEAD, OPTIONS
34
+ Cache-Control:
35
+ - max-age=30
36
+ X-Frame-Options:
37
+ - SAMEORIGIN
38
+ Transfer-Encoding:
39
+ - chunked
40
+ Content-Type:
41
+ - application/json
42
+ body:
43
+ encoding: UTF-8
44
+ string: '{"count":2,"next":null,"previous":null,"results":[{"release_id":"ceph-1.3@rhel-7","short":"ceph","version":"1.3","name":"Red
45
+ Hat Ceph Storage","base_product":"rhel-7","active":true,"product_version":"ceph-1","release_type":"ga","compose_set":[],"integrated_with":null,"sigkey":null,"allow_buildroot_push":true,"allowed_debuginfo_services":[],"allowed_push_targets":[],"bugzilla":null,"dist_git":null,"brew":null,"product_pages":null,"errata":null},{"release_id":"ceph-1.3-updates@rhel-7","short":"ceph","version":"1.3","name":"Red
46
+ Hat Ceph Storage","base_product":"rhel-7","active":true,"product_version":"ceph-1","release_type":"updates","compose_set":[],"integrated_with":null,"sigkey":null,"allow_buildroot_push":false,"allowed_debuginfo_services":[],"allowed_push_targets":[],"bugzilla":null,"dist_git":null,"brew":null,"product_pages":null,"errata":null}]}'
47
+ http_version:
48
+ recorded_at: Wed, 17 Jan 2018 06:54:31 GMT
49
+ - request:
50
+ method: get
51
+ uri: https://example.com/rest_api/v1/releases/?product_version=ceph-1
52
+ body:
53
+ encoding: US-ASCII
54
+ string: ''
55
+ headers:
56
+ User-Agent:
57
+ - Faraday v0.9.2
58
+ Accept-Encoding:
59
+ - gzip;q=1.0,deflate;q=0.6,identity;q=0.3
60
+ Accept:
61
+ - "*/*"
62
+ response:
63
+ status:
64
+ code: 200
65
+ message: OK
66
+ headers:
67
+ Date:
68
+ - Wed, 17 Jan 2018 06:54:31 GMT
69
+ Server:
70
+ - Apache/2.4.6 (Red Hat Enterprise Linux) OpenSSL/1.0.1e-fips mod_auth_kerb/5.4
71
+ mod_wsgi/3.4 Python/2.7.5
72
+ Expires:
73
+ - Wed, 17 Jan 2018 06:55:03 GMT
74
+ Vary:
75
+ - Accept,Cookie
76
+ Last-Modified:
77
+ - Tue, 26 Sep 2017 08:04:24 GMT
78
+ Allow:
79
+ - GET, POST, PUT, PATCH, HEAD, OPTIONS
80
+ Cache-Control:
81
+ - max-age=30
82
+ X-Frame-Options:
83
+ - SAMEORIGIN
84
+ Transfer-Encoding:
85
+ - chunked
86
+ Content-Type:
87
+ - application/json
88
+ body:
89
+ encoding: UTF-8
90
+ string: '{"count":2,"next":null,"previous":null,"results":[{"release_id":"ceph-1.3@rhel-7","short":"ceph","version":"1.3","name":"Red
91
+ Hat Ceph Storage","base_product":"rhel-7","active":true,"product_version":"ceph-1","release_type":"ga","compose_set":[],"integrated_with":null,"sigkey":null,"allow_buildroot_push":true,"allowed_debuginfo_services":[],"allowed_push_targets":[],"bugzilla":null,"dist_git":null,"brew":null,"product_pages":null,"errata":null},{"release_id":"ceph-1.3-updates@rhel-7","short":"ceph","version":"1.3","name":"Red
92
+ Hat Ceph Storage","base_product":"rhel-7","active":true,"product_version":"ceph-1","release_type":"updates","compose_set":[],"integrated_with":null,"sigkey":null,"allow_buildroot_push":false,"allowed_debuginfo_services":[],"allowed_push_targets":[],"bugzilla":null,"dist_git":null,"brew":null,"product_pages":null,"errata":null}]}'
93
+ http_version:
94
+ recorded_at: Wed, 17 Jan 2018 06:54:33 GMT
95
+ - request:
96
+ method: get
97
+ uri: https://example.com/rest_api/v1/releases/?product_version=ceph-1
98
+ body:
99
+ encoding: US-ASCII
100
+ string: ''
101
+ headers:
102
+ User-Agent:
103
+ - Faraday v0.9.2
104
+ Accept-Encoding:
105
+ - gzip;q=1.0,deflate;q=0.6,identity;q=0.3
106
+ Accept:
107
+ - "*/*"
108
+ response:
109
+ status:
110
+ code: 200
111
+ message: OK
112
+ headers:
113
+ Date:
114
+ - Wed, 17 Jan 2018 06:54:33 GMT
115
+ Server:
116
+ - Apache/2.4.6 (Red Hat Enterprise Linux) OpenSSL/1.0.1e-fips mod_auth_kerb/5.4
117
+ mod_wsgi/3.4 Python/2.7.5
118
+ Expires:
119
+ - Wed, 17 Jan 2018 06:55:06 GMT
120
+ Vary:
121
+ - Accept,Cookie
122
+ Last-Modified:
123
+ - Tue, 26 Sep 2017 08:04:24 GMT
124
+ Allow:
125
+ - GET, POST, PUT, PATCH, HEAD, OPTIONS
126
+ Cache-Control:
127
+ - max-age=30
128
+ X-Frame-Options:
129
+ - SAMEORIGIN
130
+ Transfer-Encoding:
131
+ - chunked
132
+ Content-Type:
133
+ - application/json
134
+ body:
135
+ encoding: UTF-8
136
+ string: '{"count":2,"next":null,"previous":null,"results":[{"release_id":"ceph-1.3@rhel-7","short":"ceph","version":"1.3","name":"Red
137
+ Hat Ceph Storage","base_product":"rhel-7","active":true,"product_version":"ceph-1","release_type":"ga","compose_set":[],"integrated_with":null,"sigkey":null,"allow_buildroot_push":true,"allowed_debuginfo_services":[],"allowed_push_targets":[],"bugzilla":null,"dist_git":null,"brew":null,"product_pages":null,"errata":null},{"release_id":"ceph-1.3-updates@rhel-7","short":"ceph","version":"1.3","name":"Red
138
+ Hat Ceph Storage","base_product":"rhel-7","active":true,"product_version":"ceph-1","release_type":"updates","compose_set":[],"integrated_with":null,"sigkey":null,"allow_buildroot_push":false,"allowed_debuginfo_services":[],"allowed_push_targets":[],"bugzilla":null,"dist_git":null,"brew":null,"product_pages":null,"errata":null}]}'
139
+ http_version:
140
+ recorded_at: Wed, 17 Jan 2018 06:54:36 GMT
141
+ recorded_with: VCR 3.0.3