foreman-katello-engine 0.0.2 → 0.0.3

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.
data/Gemfile CHANGED
@@ -1 +1,3 @@
1
1
  source "https://rubygems.org"
2
+
3
+ gemspec
@@ -1,5 +1,12 @@
1
1
  class ActivationKeysController < ApplicationController
2
2
  def index
3
- # TODO: load relevant activation keys form Katello
3
+ if org = Organization.find_by_id(params[:environment_id])
4
+ if match = org.name.match(/\Akt-\[(.*)\]\[(.*)\]\Z/)
5
+ org_name, env_name = match[1], match[2]
6
+ end
7
+ end
8
+
9
+ ak_data = ForemanKatelloEngine::Bindings.activation_keys_to_subscriptions(org_name, env_name)
10
+ render :status => 200, :json => ak_data, :content_type => 'application/json'
4
11
  end
5
12
  end
@@ -1,11 +1,34 @@
1
1
  <%= javascript_tag do %>
2
2
 
3
3
  $(function() {
4
- var KT_AK_LABEL = "<%= kt_ak_label %>"
5
- var availableActivationKeys = $.parseJSON('{' +
6
- '"rhel6selfservice": ["Red Hat Enterprise Linux 6 Server Self-Service"],' +
7
- '"katello-and-friends": ["Katello", "Pulp", "Candlepin", "Foreman"],' +
8
- '"headpin-and-friends": ["Headpin", "Thumbslug", "Candlepin"] }');
4
+ var KT_AK_LABEL = "<%= kt_ak_label %>";
5
+ var availableActivationKeys = {};
6
+
7
+ function ktLoadActivationKeys() {
8
+ $("#ak-subscriptions-info").hide();
9
+ $("#ak-subscriptions-spinner").show();
10
+ var url = foreman_url('/activation_keys');
11
+ var environmentId = $("#kt_environment_id").val();
12
+ if(environmentId) {
13
+ $.ajax({
14
+ type: 'get',
15
+ url: url,
16
+ data:'environment_id=' + environmentId,
17
+ success: function(response) {
18
+ availableActivationKeys = response;
19
+ },
20
+ error: function(error) {
21
+ $.jnotify("Error while loading activation keys from Katello", { type: "error", sticky: true });
22
+ },
23
+ complete: function() {
24
+ ktAkUpdateSubscriptionsInfo();
25
+ }
26
+ });
27
+ } else {
28
+ availableActivationKeys = {};
29
+ ktAkUpdateSubscriptionsInfo();
30
+ }
31
+ }
9
32
 
10
33
  function ktFindParamContainer(name){
11
34
  var ret;
@@ -136,7 +159,7 @@ $(function() {
136
159
  ktSetParam(KT_AK_LABEL, ktActivationKeysValue);
137
160
  }
138
161
 
139
- function ktAkUpdateubscriptionsInfo() {
162
+ function ktAkUpdateSubscriptionsInfo() {
140
163
  var subsInfo = $("ul#ak-subscriptions-info");
141
164
  subsInfo.empty();
142
165
  var selectedKeys = $("#kt_activation_keys").val().split(/,\s*/);
@@ -144,19 +167,25 @@ $(function() {
144
167
  if(availableActivationKeys[key]) {
145
168
  // hack to make it working with deface
146
169
  var ul = "<ul>", ul_end = "</ul>", li = "<li>", li_end = "</li>";
147
- content = li + key + ul + li;
148
- content += availableActivationKeys[key].join(li_end + li);
149
- content += li_end + ul_end + li_end;
170
+ content = li + key + ul;
171
+ if(!availableActivationKeys[key].length == 0) {
172
+ content += li;
173
+ content += availableActivationKeys[key].join(li_end + li);
174
+ content += li_end;
175
+ }
176
+ content += ul_end + li_end;
150
177
  subsInfo.append(content);
151
178
  }
152
179
  });
180
+ $("#ak-subscriptions-info").show();
181
+ $("#ak-subscriptions-spinner").hide();
153
182
  }
154
183
 
155
184
  function ktOnLoad() {
156
185
  ktHideParams();
157
186
  ktParamToAkInput();
158
- ktAkUpdateubscriptionsInfo();
159
187
  ktOrganizationsToKtEnv();
188
+ ktLoadActivationKeys();
160
189
  };
161
190
 
162
191
  function ktOnSubmit() {
@@ -191,11 +220,11 @@ $(function() {
191
220
  select: function(event, ui) {
192
221
  var oldTerms = this.value.replace(/[^, ][^,]*$/,"");
193
222
  this.value = oldTerms + ui.item.value;
194
- ktAkUpdateubscriptionsInfo();
223
+ ktAkUpdateSubscriptionsInfo();
195
224
  return false;
196
225
  },
197
226
  close: function() {
198
- ktAkUpdateubscriptionsInfo();
227
+ ktAkUpdateSubscriptionsInfo();
199
228
  }
200
229
 
201
230
  }).bind("focus", function(event) {
@@ -203,6 +232,13 @@ $(function() {
203
232
  $(this).autocomplete( "search" );
204
233
  }});
205
234
 
235
+ $("#kt_environment_id").change(ktLoadActivationKeys);
236
+
237
+ $("#ak_refresh_subscriptions").click(function () {
238
+ ktLoadActivationKeys();
239
+ return false;
240
+ });
241
+
206
242
  });
207
243
 
208
244
  <% end %>
@@ -217,6 +253,12 @@ $(function() {
217
253
  <p><b>Subscriptions information based on selected activation keys:</b></p>
218
254
  <ul id="ak-subscriptions-info">
219
255
  </ul>
220
- <p>Activation keys and subscriptions can be managed <b><a href="/katello" target="_blank">here</a></b></p>
256
+ <div id="ak-subscriptions-spinner" style="display: none">
257
+ <%= image_tag "spinner.gif" %>
258
+ </div>
259
+ <p>Activation keys and subscriptions can be managed
260
+ <b><a href="<%= Setting['katello_url'] %>/activation_keys" target="_blank">here</a></b>
261
+ </p>
262
+ <p><a href="" id="ak_refresh_subscriptions">Reload data from Katello</a></p>
221
263
  </div>
222
264
  </div>
@@ -1,6 +1,6 @@
1
1
  Gem::Specification.new do |s|
2
2
  s.name = "foreman-katello-engine"
3
- s.version = "0.0.2"
3
+ s.version = "0.0.3"
4
4
 
5
5
  s.authors = ["Katello"]
6
6
  s.date = "2013-03-04"
@@ -10,5 +10,6 @@ Gem::Specification.new do |s|
10
10
  s.homepage = "http://katello.org"
11
11
  s.licenses = ["GPL-2"]
12
12
  s.require_paths = ["lib"]
13
+ s.add_dependency "katello_api"
13
14
  s.summary = "Katello specific parts of Foreman"
14
15
  end
@@ -0,0 +1,52 @@
1
+ require 'katello_api'
2
+
3
+ module ForemanKatelloEngine
4
+ module Bindings
5
+
6
+ class << self
7
+
8
+ def initialize_settings
9
+ # proceed only if db set up correctly
10
+ Setting.first rescue return
11
+ [
12
+ Foreman::DefaultSettings::Loader.set('katello_url', 'url of a Katello instance', 'https://localhost/katello')
13
+ ].each { |s| Foreman::DefaultSettings::Loader.create(s.update(:category => "General")) }
14
+ end
15
+
16
+ def client_config
17
+ {
18
+ :base_url => Setting['katello_url'],
19
+ :enable_validations => false,
20
+ :oauth => {
21
+ :consumer_key => Setting['oauth_consumer_key'],
22
+ :consumer_secret => Setting['oauth_consumer_secret']
23
+ }
24
+ }
25
+ end
26
+
27
+ def environment
28
+ KatelloApi::Resources::Environment.new(client_config)
29
+ end
30
+
31
+ def activation_key
32
+ KatelloApi::Resources::ActivationKey.new(client_config)
33
+ end
34
+
35
+ def activation_keys_to_subscriptions(org_name, env_name)
36
+ environments, _ = self.environment.index('organization_id' => org_name, :name => env_name)
37
+ if environment = environments.first
38
+ activation_keys, _ = self.activation_key.index('environment_id' => environment['id'])
39
+ return activation_keys.reduce({}) do |h, ak|
40
+ h.update(ak['name'] => ak['pools'].map { |pool| pool['subscription'] })
41
+ end
42
+ else
43
+ return nil
44
+ end
45
+ end
46
+
47
+ end
48
+ end
49
+
50
+ end
51
+
52
+
@@ -4,6 +4,8 @@ module ForemanKatelloEngine
4
4
  class Engine < ::Rails::Engine
5
5
 
6
6
  initializer 'foreman_katello_engine.helper' do |app|
7
+ require 'foreman_katello_engine/bindings'
8
+ ForemanKatelloEngine::Bindings.initialize_settings
7
9
  ActionView::Base.send :include, ForemanKatelloEngine::HostsAndHostgroupsHelper
8
10
  end
9
11
 
metadata CHANGED
@@ -1,22 +1,45 @@
1
- --- !ruby/object:Gem::Specification
1
+ --- !ruby/object:Gem::Specification
2
2
  name: foreman-katello-engine
3
- version: !ruby/object:Gem::Version
4
- version: 0.0.2
3
+ version: !ruby/object:Gem::Version
4
+ hash: 25
5
5
  prerelease:
6
+ segments:
7
+ - 0
8
+ - 0
9
+ - 3
10
+ version: 0.0.3
6
11
  platform: ruby
7
- authors:
12
+ authors:
8
13
  - Katello
9
14
  autorequire:
10
15
  bindir: bin
11
16
  cert_chain: []
12
- date: 2013-03-04 00:00:00.000000000 Z
13
- dependencies: []
17
+
18
+ date: 2013-03-04 00:00:00 Z
19
+ dependencies:
20
+ - !ruby/object:Gem::Dependency
21
+ name: katello_api
22
+ prerelease: false
23
+ requirement: &id001 !ruby/object:Gem::Requirement
24
+ none: false
25
+ requirements:
26
+ - - ">="
27
+ - !ruby/object:Gem::Version
28
+ hash: 3
29
+ segments:
30
+ - 0
31
+ version: "0"
32
+ type: :runtime
33
+ version_requirements: *id001
14
34
  description: Katello specific parts of Foreman
15
35
  email: katello-devel@redhat.com
16
36
  executables: []
37
+
17
38
  extensions: []
39
+
18
40
  extra_rdoc_files: []
19
- files:
41
+
42
+ files:
20
43
  - .gitignore
21
44
  - Gemfile
22
45
  - LICENSE
@@ -31,30 +54,40 @@ files:
31
54
  - foreman-katello-engine.gemspec
32
55
  - lib/foreman-katello-engine.rb
33
56
  - lib/foreman_katello_engine.rb
57
+ - lib/foreman_katello_engine/bindings.rb
34
58
  - lib/foreman_katello_engine/engine.rb
35
59
  homepage: http://katello.org
36
- licenses:
60
+ licenses:
37
61
  - GPL-2
38
62
  post_install_message:
39
63
  rdoc_options: []
40
- require_paths:
64
+
65
+ require_paths:
41
66
  - lib
42
- required_ruby_version: !ruby/object:Gem::Requirement
67
+ required_ruby_version: !ruby/object:Gem::Requirement
43
68
  none: false
44
- requirements:
45
- - - ! '>='
46
- - !ruby/object:Gem::Version
47
- version: '0'
48
- required_rubygems_version: !ruby/object:Gem::Requirement
69
+ requirements:
70
+ - - ">="
71
+ - !ruby/object:Gem::Version
72
+ hash: 3
73
+ segments:
74
+ - 0
75
+ version: "0"
76
+ required_rubygems_version: !ruby/object:Gem::Requirement
49
77
  none: false
50
- requirements:
51
- - - ! '>='
52
- - !ruby/object:Gem::Version
53
- version: '0'
78
+ requirements:
79
+ - - ">="
80
+ - !ruby/object:Gem::Version
81
+ hash: 3
82
+ segments:
83
+ - 0
84
+ version: "0"
54
85
  requirements: []
86
+
55
87
  rubyforge_project:
56
88
  rubygems_version: 1.8.25
57
89
  signing_key:
58
90
  specification_version: 3
59
91
  summary: Katello specific parts of Foreman
60
92
  test_files: []
93
+