runcible 0.1.2 → 0.1.3

Sign up to get free protection for your applications and to get access to all the features.
data/lib/runcible/base.rb CHANGED
@@ -54,7 +54,8 @@ module Runcible
54
54
 
55
55
  def self.call(method, path, options={})
56
56
  clone_config = self.config.clone
57
- path = clone_config[:api_path] + path
57
+ #on occation path will already have prefix (sync cancel)
58
+ path = clone_config[:api_path] + path if !path.start_with?(clone_config[:api_path])
58
59
 
59
60
  RestClient.log = clone_config[:logger] if clone_config[:logger]
60
61
 
@@ -106,6 +107,7 @@ module Runcible
106
107
  else
107
108
  payload = {}
108
109
  end
110
+
109
111
  return payload.to_json
110
112
  end
111
113
 
@@ -133,10 +135,14 @@ module Runcible
133
135
  acc
134
136
  end
135
137
 
138
+ #The double delete is to support 1.8.7 and 1.9.3
139
+ local_names.delete(:payload)
140
+ local_names.delete(:optional)
136
141
  local_names.delete("payload")
137
142
  local_names.delete("optional")
138
143
  keys_to_remove.each do |key|
139
144
  local_names.delete(key)
145
+ local_names.delete(key.to_sym)
140
146
  end
141
147
 
142
148
  return local_names
@@ -28,14 +28,14 @@ module Runcible
28
28
 
29
29
  def self.bind_all(id, repo_id)
30
30
  # bind the consumer to all repositories with the given repo_id
31
- Runcible::Extensions::Repository.retrieve(repo_id)['distributors'].each do |d|
31
+ Runcible::Extensions::Repository.retrieve_with_details(repo_id)['distributors'].each do |d|
32
32
  self.bind(id, repo_id, d['id'])
33
33
  end
34
34
  end
35
35
 
36
36
  def self.unbind_all(id, repo_id)
37
37
  # unbind the consumer from all repositories with the given repo_id
38
- Runcible::Extensions::Repository.retrieve(repo_id)['distributors'].each do |d|
38
+ Runcible::Extensions::Repository.retrieve_with_details(repo_id)['distributors'].each do |d|
39
39
  self.unbind(id, repo_id, d['id'])
40
40
  end
41
41
  end
@@ -0,0 +1,71 @@
1
+ # Copyright (c) 2012
2
+ #
3
+ # MIT License
4
+ #
5
+ # Permission is hereby granted, free of charge, to any person obtaining
6
+ # a copy of this software and associated documentation files (the
7
+ # "Software"), to deal in the Software without restriction, including
8
+ # without limitation the rights to use, copy, modify, merge, publish,
9
+ # distribute, sublicense, and/or sell copies of the Software, and to
10
+ # permit persons to whom the Software is furnished to do so, subject to
11
+ # the following conditions:
12
+ #
13
+ # The above copyright notice and this permission notice shall be
14
+ # included in all copies or substantial portions of the Software.
15
+ #
16
+ # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
17
+ # EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
18
+ # MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
19
+ # NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
20
+ # LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
21
+ # OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
22
+ # WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
23
+
24
+
25
+ module Runcible
26
+ module Extensions
27
+ class ConsumerGroup < Runcible::Resources::ConsumerGroup
28
+ def self.add_consumers_by_id(id, consumer_ids)
29
+ self.associate(id, make_consumer_criteria(consumer_ids))
30
+ end
31
+
32
+ def self.remove_consumers_by_id(id, consumer_ids)
33
+ self.unassociate(id, make_consumer_criteria(consumer_ids))
34
+ end
35
+
36
+
37
+ def self.make_consumer_criteria(consumer_ids)
38
+ {:criteria =>
39
+ {:filters =>
40
+ {:id =>{"$in" =>consumer_ids}}
41
+ }
42
+ }
43
+
44
+ end
45
+
46
+ def self.install_content(id, type_id, units)
47
+ self.install_units(id, generate_content(type_id, units))
48
+ end
49
+
50
+ def self.update_content(id, type_id, units)
51
+ self.update_units(id, generate_content(type_id, units))
52
+ end
53
+
54
+ def self.uninstall_content(id, type_id, units)
55
+ self.uninstall_units(id, generate_content(type_id, units))
56
+ end
57
+
58
+ def self.generate_content(type_id, units)
59
+ content = []
60
+ units.each do |unit|
61
+ content_unit = {}
62
+ content_unit[:type_id] = type_id
63
+ content_unit[:unit_key] = { :name => unit }
64
+ content.push(content_unit)
65
+ end
66
+ content
67
+ end
68
+
69
+ end
70
+ end
71
+ end
@@ -36,11 +36,13 @@ module Runcible
36
36
  end
37
37
 
38
38
  def self.find_all(ids)
39
- Runcible::Resources::Unit.search(TYPE, :filters=> {:id=> {'$in'=> ids}})
39
+ Runcible::Resources::Unit.search(TYPE, {:filters=>{:id=> {'$in'=> ids}}},
40
+ {:include_repos => true})
40
41
  end
41
42
 
42
43
  def self.find_all_by_unit_ids(ids)
43
- Runcible::Resources::Unit.search(TYPE, :filters=> {:_id=> {'$in'=> ids}})
44
+ Runcible::Resources::Unit.search(TYPE, {:filters=> {:_id=> {'$in'=> ids}}},
45
+ {:include_repos=>true})
44
46
  end
45
47
 
46
48
  end
@@ -223,11 +223,15 @@ module Runcible
223
223
 
224
224
  def self.publish_all(repo_id)
225
225
  to_ret = []
226
- self.retrieve(repo_id)['distributors'].each do |d|
226
+ self.retrieve_with_details(repo_id)['distributors'].each do |d|
227
227
  to_ret << self.publish(repo_id, d['id'])
228
228
  end
229
229
  to_ret
230
230
  end
231
+
232
+ def self.retrieve_with_details(repo_id)
233
+ self.retrieve(repo_id, {:details => true})
234
+ end
231
235
  end
232
236
  end
233
237
  end
@@ -36,7 +36,7 @@ module Runcible
36
36
  end
37
37
 
38
38
  def self.find_all(ids)
39
- Runcible::Resources::Unit.search(TYPE, :filters => {'_id'=> {'$in'=> ids}})
39
+ Runcible::Resources::Unit.search(TYPE, {:filters => {'_id'=> {'$in'=> ids}}}, {:include_repos=>true})
40
40
  end
41
41
  end
42
42
  end
@@ -79,17 +79,17 @@ module Runcible
79
79
  call(:get, path("#{id}/bindings/"))
80
80
  end
81
81
 
82
- def self.install_units(id, units, options="")
82
+ def self.install_units(id, units, options={})
83
83
  required = required_params(binding.send(:local_variables), binding, ["id"])
84
84
  call(:post, path("#{id}/actions/content/install/"), :payload => { :required => required })
85
85
  end
86
86
 
87
- def self.update_units(id, units, options="")
87
+ def self.update_units(id, units, options={})
88
88
  required = required_params(binding.send(:local_variables), binding, ["id"])
89
89
  call(:post, path("#{id}/actions/content/update/"), :payload => { :required => required })
90
90
  end
91
91
 
92
- def self.uninstall_units(id, units, options="")
92
+ def self.uninstall_units(id, units, options={})
93
93
  required = required_params(binding.send(:local_variables), binding, ["id"])
94
94
  call(:post, path("#{id}/actions/content/uninstall/"), :payload => { :required => required })
95
95
  end
@@ -44,6 +44,48 @@ module Runcible
44
44
  def self.retrieve(id)
45
45
  call(:get, path(id))
46
46
  end
47
+
48
+
49
+ def self.associate(id, criteria)
50
+ call(:post, path(id) + "actions/associate/", :payload => {:required => criteria})
51
+ end
52
+
53
+ def self.unassociate(id, criteria)
54
+ call(:post, path(id) + "actions/unassociate/", :payload => {:required => criteria})
55
+ end
56
+
57
+ #def self.retrieve_binding(id, repo_id, distributor_id)
58
+ # call(:get, path("#{id}/bindings/#{repo_id}/#{distributor_id}"))
59
+ #end
60
+ #
61
+ #def self.retrieve_bindings(id)
62
+ # call(:get, path("#{id}/bindings/"))
63
+ #end
64
+ #
65
+ #def self.bind(id, repo_id, distributor_id)
66
+ # required = required_params(binding.send(:local_variables), binding, ["id"])
67
+ # call(:post, path("#{id}/bindings"), :payload => { :required => required })
68
+ #end
69
+ #
70
+ #def self.unbind(id, repo_id, distributor_id)
71
+ # call(:delete, path("#{id}/bindings/#{repo_id}/#{distributor_id}"))
72
+ #end
73
+
74
+ def self.install_units(id, units, options={})
75
+ required = required_params(binding.send(:local_variables), binding, ["id"])
76
+ call(:post, path("#{id}/actions/content/install/"), :payload => { :required => required })
77
+ end
78
+
79
+ def self.update_units(id, units, options={})
80
+ required = required_params(binding.send(:local_variables), binding, ["id"])
81
+ call(:post, path("#{id}/actions/content/update/"), :payload => { :required => required })
82
+ end
83
+
84
+ def self.uninstall_units(id, units, options={})
85
+ required = required_params(binding.send(:local_variables), binding, ["id"])
86
+ call(:post, path("#{id}/actions/content/uninstall/"), :payload => { :required => required })
87
+ end
88
+
47
89
  end
48
90
  end
49
91
  end
@@ -36,8 +36,8 @@ module Runcible
36
36
  call(:post, path, :payload => { :required => required, :optional => optional })
37
37
  end
38
38
 
39
- def self.retrieve(id, details=true)
40
- call(:get, path(id) + "?details=#{details}")
39
+ def self.retrieve(id, params={})
40
+ call(:get, path(id), :params => params)
41
41
  end
42
42
 
43
43
  def self.update(id, optional={})
@@ -72,7 +72,7 @@ module Runcible
72
72
  end
73
73
 
74
74
  def self.sync_history(id)
75
- call(:get, "#{path(id)}/history/sync/")
75
+ call(:get, "#{path(id)}/history/sync/")
76
76
  end
77
77
 
78
78
  def self.unit_copy(destination_repo_id, source_repo_id, optional={:criteria=>{}})
@@ -6,8 +6,8 @@ module Runcible
6
6
  "content/units/#{type}/search/"
7
7
  end
8
8
 
9
- def self.search(type, criteria)
10
- call(:post, path(type), :payload=>{:required=>{:criteria=>criteria}})
9
+ def self.search(type, criteria, optional={})
10
+ call(:post, path(type), :payload=>{:required=>{:criteria=>criteria}, :optional=>optional})
11
11
  end
12
12
  end
13
13
 
@@ -1,3 +1,3 @@
1
1
  module Runcible
2
- VERSION = "0.1.2"
2
+ VERSION = "0.1.3"
3
3
  end
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: runcible
3
3
  version: !ruby/object:Gem::Version
4
- hash: 31
4
+ hash: 29
5
5
  prerelease:
6
6
  segments:
7
7
  - 0
8
8
  - 1
9
- - 2
10
- version: 0.1.2
9
+ - 3
10
+ version: 0.1.3
11
11
  platform: ruby
12
12
  authors:
13
13
  - Eric D Helms
@@ -15,7 +15,7 @@ autorequire:
15
15
  bindir: bin
16
16
  cert_chain: []
17
17
 
18
- date: 2012-10-25 00:00:00 Z
18
+ date: 2012-11-02 00:00:00 Z
19
19
  dependencies: []
20
20
 
21
21
  description: Exposing Pulp's juiciest components to the Ruby world.
@@ -39,6 +39,7 @@ files:
39
39
  - lib/runcible/extensions/distribution.rb
40
40
  - lib/runcible/extensions/consumer.rb
41
41
  - lib/runcible/extensions/yum_distributor.rb
42
+ - lib/runcible/extensions/consumer_group.rb
42
43
  - lib/runcible/extensions/repository.rb
43
44
  - lib/runcible/extensions/package_category.rb
44
45
  - lib/runcible/version.rb
@@ -80,7 +81,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
80
81
  requirements: []
81
82
 
82
83
  rubyforge_project:
83
- rubygems_version: 1.8.11
84
+ rubygems_version: 1.8.24
84
85
  signing_key:
85
86
  specification_version: 3
86
87
  summary: ""