foreman_xen 0.1.2 → 0.1.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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: bd5b66fedf779c436ffadbaad2d965679cdc342b
4
- data.tar.gz: bec450a40531a54001aa19f3b2320ca2460e90a0
3
+ metadata.gz: 8e0a8037b7d50886ca41a1a27654908d86ba7248
4
+ data.tar.gz: 530c4267118cbbc311220ec6bac82511eda39988
5
5
  SHA512:
6
- metadata.gz: e072c7478e663134805f06df3b752ca204d527fef24b28318ac53c7a19e8246787abcd5619a34f070f80394a7a78b400e390aff33a20a71ce02bf4513f182490
7
- data.tar.gz: 41b8541d9d87fec267930b7bebd537ce13da1fc70107fe26dde8077b6afd65817797c2564115c2c9cc6e6137cc01f399fdf2e5d1e1997eb5eeca3c72ce8cb8d8
6
+ metadata.gz: 8f46685f806d8c23c41313199e17b877adc1af6adc8f5ce6bc3840d44871cb8dd4f79dbf8c4b105072636d8dd5e7c1ec4e01a7038869f6531fc94c8f9236d845
7
+ data.tar.gz: 74c808448e47efa80a67ab2e112c8bb648838303e3546e59d927bf273579b65ca8d10c77d4143be8771504331284ea6d85b622ecfae2b46d0d6cbed0d8e0a537
@@ -3,11 +3,10 @@ module FogExtensions
3
3
  module Server
4
4
  extend ActiveSupport::Concern
5
5
 
6
-
7
6
  include ActionView::Helpers::NumberHelper
8
7
 
9
-
10
- attr_accessor :memory_min, :memory_max, :custom_template_name, :builtin_template_name
8
+ attr_accessor :start
9
+ attr_accessor :memory_min, :memory_max, :custom_template_name, :builtin_template_name, :hypervisor_host
11
10
 
12
11
  def to_s
13
12
  name
@@ -23,7 +23,8 @@ module ForemanXen
23
23
 
24
24
  # we default to destroy the VM's storage as well.
25
25
  def destroy_vm(ref, args = {})
26
- find_vm_by_uuid(ref).destroy
26
+ logger.info "destroy_vm: #{ ref } #{ args }"
27
+ find_vm_by_uuid(ref).destroy
27
28
  rescue ActiveRecord::RecordNotFound
28
29
  true
29
30
  end
@@ -41,7 +42,7 @@ module ForemanXen
41
42
  xenServerMaxDoc = 128*1024*1024*1024
42
43
  [hypervisor.metrics.memory_total.to_i, xenServerMaxDoc].min
43
44
  rescue => e
44
- logger.debug "unable to figure out free memory, guessing instead due to:#{e}"
45
+ logger.error "unable to figure out free memory, guessing instead due to:#{e}"
45
46
  16*1024*1024*1024
46
47
  end
47
48
 
@@ -52,6 +53,11 @@ module ForemanXen
52
53
  disconnect rescue nil
53
54
  errors[:base] << e.message
54
55
  end
56
+
57
+ def avalable_hypervisors
58
+ tmps = client.hosts rescue []
59
+ tmps.sort { |a, b| a.name <=> b.name }
60
+ end
55
61
 
56
62
  def new_nic(attr={})
57
63
  client.networks.new attr
@@ -62,36 +68,37 @@ module ForemanXen
62
68
  end
63
69
 
64
70
  def storage_pools
65
- results = Array.new
66
71
 
67
- storages = client.storage_repositories.select { |sr| sr.type!= 'udev' && sr.type!= 'iso'} rescue []
68
- hosts = client.hosts
69
-
70
- storages.each do |sr|
71
- subresults = Hash.new()
72
- found = 0
73
- hosts.each do |host|
74
-
75
- if (sr.reference == host.suspend_image_sr)
76
- found = 1
77
- subresults[:name] = sr.name
78
- subresults[:display_name] = sr.name + '(' + host.hostname + ')'
79
- subresults[:uuid] = sr.uuid
80
- break
81
- end
82
-
83
- end
72
+ results = Array.new
84
73
 
85
- if (found==0)
86
- subresults[:name] = sr.name
87
- subresults[:display_name] = sr.name
88
- subresults[:uuid] = sr.uuid
74
+ storages = client.storage_repositories.select { |sr| sr.type!= 'udev' && sr.type!= 'iso'} rescue []
75
+ hosts = client.hosts
76
+
77
+ storages.each do |sr|
78
+ subresults = Hash.new()
79
+ found = 0
80
+ hosts.each do |host|
81
+
82
+ if (sr.reference == host.suspend_image_sr)
83
+ found = 1
84
+ subresults[:name] = sr.name
85
+ subresults[:display_name] = sr.name + '(' + host.hostname + ')'
86
+ subresults[:uuid] = sr.uuid
87
+ break
88
+ end
89
+
90
+ end
91
+
92
+ if (found==0)
93
+ subresults[:name] = sr.name
94
+ subresults[:display_name] = sr.name
95
+ subresults[:uuid] = sr.uuid
96
+ end
97
+ results.push(subresults)
89
98
  end
90
- results.push(subresults)
91
- end
92
99
 
93
- results.sort_by!{|item| item[:display_name] }
94
- return results
100
+ results.sort_by!{|item| item[:display_name] }
101
+ return results
95
102
 
96
103
  end
97
104
 
@@ -154,12 +161,22 @@ module ForemanXen
154
161
  end
155
162
 
156
163
  def create_vm(args = {})
157
- custom_template_name = args[:custom_template_name]
164
+
165
+ custom_template_name = args[:custom_template_name]
158
166
  builtin_template_name = args[:builtin_template_name]
159
- raise 'you can select at most one template type' if builtin_template_name != '' and custom_template_name != ''
167
+ custom_template_name = custom_template_name.to_s
168
+ builtin_template_name = builtin_template_name.to_s
169
+
170
+ if builtin_template_name!= '' and custom_template_name!=''
171
+ logger.info "custom_template_name: #{ custom_template_name }"
172
+ logger.info "builtin_template_name: #{ builtin_template_name }"
173
+ raise 'you can select at most one template type'
174
+ end
160
175
  begin
161
176
  vm = nil
162
- if custom_template_name != ''
177
+ logger.info "create_vm(): custom_template_name: #{ custom_template_name }"
178
+ logger.info "create_vm(): builtin_template_name: #{ builtin_template_name }"
179
+ if custom_template_name != ''
163
180
  vm = create_vm_from_custom args
164
181
  else
165
182
  vm = create_vm_from_builtin args
@@ -183,11 +200,24 @@ module ForemanXen
183
200
  end
184
201
 
185
202
  def create_vm_from_custom(args)
186
- mem_max = args[:memory_max]
187
- mem_min = args[:memory_min]
188
203
 
204
+ hypervisor_host = args[:hypervisor_host]
205
+ hypervisor_host = hypervisor_host.to_s
206
+
207
+ mem_max = args[:memory_max]
208
+ mem_min = args[:memory_min]
209
+
210
+ if args[:hypervisor_host]
211
+ host = client.hosts.find { |host| host.name == args[:hypervisor_host] }
212
+ logger.info "create_vm_from_builtin: host : #{ hypervisor_host }"
213
+ elsif
214
+ host = client.hosts.first
215
+ logger.info "create_vm_from_builtin: host : #{ host }"
216
+ end
217
+
189
218
  raise 'Memory max cannot be lower than Memory min' if mem_min.to_i > mem_max.to_i
190
219
  vm = client.servers.new :name => args[:name],
220
+ :affinity => host,
191
221
  :template_name => args[:custom_template_name]
192
222
 
193
223
  vm.save :auto_start => false
@@ -225,8 +255,21 @@ module ForemanXen
225
255
  end
226
256
 
227
257
  def create_vm_from_builtin(args)
258
+
259
+ hypervisor_host = args[:hypervisor_host]
260
+ hypervisor_host = hypervisor_host.to_s
261
+
262
+ builtin_template_name = args[:builtin_template_name]
263
+ builtin_template_name = builtin_template_name.to_s
264
+
265
+ if args[:hypervisor_host]
266
+ host = client.hosts.find { |host| host.name == args[:hypervisor_host] }
267
+ logger.info "create_vm_from_builtin: host : #{ hypervisor_host }"
268
+ elsif
269
+ host = client.hosts.first
270
+ logger.info "create_vm_from_builtin: host : #{ host }"
271
+ end
228
272
 
229
- host = client.hosts.first
230
273
  storage_repository = client.storage_repositories.find { |sr| sr.uuid == "#{args[:VBDs][:sr_uuid]}" }
231
274
 
232
275
  gb = 1073741824 #1gb in bytes
@@ -239,7 +282,7 @@ module ForemanXen
239
282
  mem_max = args[:memory_max]
240
283
  mem_min = args[:memory_min]
241
284
  other_config = {}
242
- if args[:builtin_template_name] != ''
285
+ if builtin_template_name != ''
243
286
  template = client.servers.builtin_templates.find { |tmp| tmp.name == args[:builtin_template_name] }
244
287
  other_config = template.other_config
245
288
  other_config.delete 'disks'
@@ -0,0 +1,5 @@
1
+ <div id='templates' class=''>
2
+ <div class="form-group">
3
+ <%= selectable_f f, :hypervisor_host, [[_("Automatic allocation"), ""]] + compute_resource.avalable_hypervisors.map { |t| [t.name + " - " + (t.metrics.memory_free.to_f / t.metrics.memory_total.to_f * 100).round(2).to_s + "% free mem", t.name] }, {}, :class => 'form-control span2', :disabled => (controller_name != 'hosts'), :label => 'Hypervisor' %>
4
+ </div>
5
+ </div>
@@ -2,11 +2,20 @@
2
2
  <%
3
3
  nat = compute_resource.networks
4
4
  selected = ""
5
- if params['host']
6
- if params && params['host'] && params['host']['compute_attributes']
7
- selected = params['host']['compute_attributes']['VIFs']['print']
5
+
6
+ if controller_name == 'hosts'
7
+ compute_attributes = compute_resource.compute_profile_attributes_for(params['host']['compute_profile_id'])
8
+ if params && params['host']['compute_profile_id'] != ""
9
+ selected = compute_attributes['VIFs']['print']
10
+ elsif params && params['host'] && params['host']['compute_attributes']
11
+ selected = params['host']['compute_attributes']['VIFs']['print']
8
12
  elsif new.__vifs
9
- selected = new.__vifs['print']
13
+ selected = new.__vifs['print']
14
+ end
15
+ elsif controller_name == 'compute_attributes'
16
+ compute_attributes = compute_resource.compute_profile_attributes_for(params['compute_profile_id'])
17
+ if compute_attributes['VIFs'] && compute_attributes['VIFs']['print']
18
+ selected = compute_attributes['VIFs']['print']
10
19
  end
11
20
  end
12
21
  -%>
@@ -1,20 +1,36 @@
1
1
  <div class="fields">
2
2
  <%
3
- selected_item_c = ''
3
+ selected_item_c = ''
4
4
  selected_item_b = ''
5
- if params && params['host'] && params['host']['compute_attributes']
6
- selected_item_c = params['host']['compute_attributes']['custom_template_name']
7
- selected_item_b = params['host']['compute_attributes']['builtin_template_name']
8
- end
9
- %>
5
+
6
+ if controller_name == 'hosts'
7
+ compute_attributes = compute_resource.compute_profile_attributes_for(params['host']['compute_profile_id'])
8
+ if params && params['host']['compute_profile_id'] != ""
9
+ selected_item_c = compute_attributes['custom_template_name']
10
+ selected_item_b = compute_attributes['builtin_template_name']
11
+ elsif params && params['host'] && params['host']['compute_attributes']
12
+ selected_item_c = params['host']['compute_attributes']['custom_template_name']
13
+ selected_item_b = params['host']['compute_attributes']['builtin_template_name']
14
+ end
15
+
16
+ elsif controller_name == 'compute_attributes'
17
+ compute_attributes = compute_resource.compute_profile_attributes_for(params['compute_profile_id'])
18
+ if compute_attributes['custom_template_name']
19
+ selected_item_c = compute_attributes['custom_template_name']
20
+ end
21
+ if compute_attributes['builtin_template_name']
22
+ selected_item_b = compute_attributes['builtin_template_name']
23
+ end
24
+ end
25
+ -%>
10
26
 
11
27
  <div id='templates' class=''>
12
28
  <div class="form-group">
13
- <%= selectable_f f, :custom_template_name,[[_("No template"), ""]] + compute_resource.custom_templates.map { |t| [t.name, t.name] }, {}, :class => 'form-control span2', :label => 'Custom Template' %>
29
+ <%= selectable_f f, :custom_template_name,[[_("No template"), ""]] + compute_resource.custom_templates.map { |t| [t.name, t.name] }, { :selected => selected_item_c }, :class => 'form-control span2', :label => 'Custom Template' %>
14
30
  </div>
15
31
 
16
32
  <div class="form-group ">
17
- <%= selectable_f f, :builtin_template_name,[[_("No template"), ""]] + compute_resource.builtin_templates.map { |t| [t.name, t.name] }, {}, :class => 'form-control span2', :label => 'Builtin Template' %>
33
+ <%= selectable_f f, :builtin_template_name,[[_("No template"), ""]] + compute_resource.builtin_templates.map { |t| [t.name, t.name] }, { :selected => selected_item_b }, :class => 'form-control span2', :label => 'Builtin Template' %>
18
34
  </div>
19
35
  </div>
20
36
  </div>
@@ -2,17 +2,32 @@
2
2
  <%
3
3
  selected = ""
4
4
  size = ""
5
-
6
- if params['host']
7
- if params && params['host'] && params['host']['compute_attributes'] && params['host']['compute_attributes']['VBDs']['physical_size'] != ""
8
- selected = params['host']['compute_attributes']['VBDs']['print']
9
- size = params['host']['compute_attributes']['VBDs']['physical_size']
5
+
6
+ if controller_name == 'hosts'
7
+ compute_attributes = compute_resource.compute_profile_attributes_for(params['host']['compute_profile_id'])
8
+ if params && params['host']['compute_profile_id'] != ""
9
+ size = compute_attributes['VBDs']['physical_size']
10
+ selected = compute_attributes['VBDs']['sr_uuid']
11
+ elsif params && params['host'] && params['host']['compute_attributes'] && params['host']['compute_attributes']['VBDs']['physical_size'] != ""
12
+ selected = params['host']['compute_attributes']['VBDs']['print']
13
+ size = params['host']['compute_attributes']['VBDs']['physical_size']
10
14
  elsif new.__vbds
11
- selected = new.__vbds['print']
12
- size = new.__vbds['physical_size']
15
+ selected = new.__vbds['print']
16
+ size = new.__vbds['physical_size']
17
+ end
18
+ elsif controller_name == 'compute_attributes'
19
+ compute_attributes = compute_resource.compute_profile_attributes_for(params['compute_profile_id'])
20
+ if compute_attributes['VBDs'] && compute_attributes['VBDs']['physical_size']
21
+ size = compute_attributes['VBDs']['physical_size']
22
+ end
23
+ if compute_attributes['VBDs'] && compute_attributes['VBDs']['sr_uuid']
24
+ selected = compute_attributes['VBDs']['sr_uuid']
13
25
  end
14
- end
26
+
27
+ end
15
28
  -%>
29
+
30
+
16
31
  <%= selectable_f f, :sr_uuid, compute_resource.storage_pools.map{ |item| [item[:display_name], item[:uuid]]}, { :selected => selected }, :class => "span2", :label => _("Storage Repository") %>
17
32
 
18
33
  <%= text_f f, :physical_size, :class => "input-mini", :label => _("Size (GB)"), :value => size %>
@@ -3,28 +3,38 @@
3
3
  if params && params['host'] && params['host']['compute_attributes'] && params['host']['compute_attributes']['custom_template_name'] != ''
4
4
  hide_raw = 'display:none;'
5
5
  end
6
-
6
+
7
7
  if controller_name == 'hosts'
8
- fields_enabled = true
9
- elsif controller_name == 'compute_attributes'
10
- fields_enabled = true
8
+ compute_attributes = compute_resource.compute_profile_attributes_for(params['host']['compute_profile_id'])
9
+ fields_enabled = true
10
+ start_enable = true
11
+ elsif controller_name == 'compute_attributes'
12
+ fields_enabled = true
13
+ compute_attributes = compute_resource.compute_profile_attributes_for(params['compute_profile_id'])
14
+ name = compute_attributes['name']
15
+ vcpus_max = compute_attributes['vcpus_max']
16
+ memory_min = compute_attributes['memory_min']
17
+ memory_max = compute_attributes['memory_max']
11
18
  else
12
19
  fields_enabled = false
13
20
  end
21
+
14
22
  -%>
15
23
 
24
+ <!-- VM Initial Settings -->
16
25
  <div class="children_fields">
17
26
  <fieldset id="vm_profile">
18
27
  <legend>VM Profile</legend>
19
28
  <div class="fields">
20
- <%= text_f f, :name, :disabled => !fields_enabled, :label => 'Name' if controller_name != 'hosts' %>
21
- <%= selectable_f f, :vcpus_max, 1..compute_resource.max_cpu_count, {}, :class => 'input-mini', :disabled => !fields_enabled, :label => 'vCPUs' %>
22
- <%= selectable_f f, :memory_min, memory_options(compute_resource.max_memory), {}, :class => 'form-control span2', :disabled => !fields_enabled, :label => 'Memory Min' %>
23
- <%= selectable_f f, :memory_max, memory_options(compute_resource.max_memory), {}, :class => 'form-control span2', :disabled => !fields_enabled, :label => 'Memory Max' %>
29
+ <!--<%= text_f f, :name, :disabled => !fields_enabled, :value => name, :label => 'Name' if controller_name != 'hosts' %>-->
30
+ <%= selectable_f f, :vcpus_max, 1..compute_resource.max_cpu_count, {:selected => vcpus_max}, :class => 'input-mini', :disabled => !fields_enabled, :label => 'vCPUs' %>
31
+ <%= selectable_f f, :memory_min, memory_options(compute_resource.max_memory), {:selected => memory_min}, :class => 'form-control span2', :disabled => !fields_enabled, :label => 'Memory Min' %>
32
+ <%= selectable_f f, :memory_max, memory_options(compute_resource.max_memory), {:selected => memory_max}, :class => 'form-control span2', :disabled => !fields_enabled, :label => 'Memory Max' %>
24
33
  </div>
25
34
  </fieldset>
26
35
  </div>
27
- <!--Templates -->
36
+
37
+ <!-- Templates -->
28
38
  <div class="children_fields">
29
39
  <%= field_set_tag 'VM Template', :id => 'xen_templates', :title => _('Template') do -%>
30
40
  <%= render 'compute_resources_vms/form/templates', :f => f, :compute_resource => compute_resource, :new => new %>
@@ -38,7 +48,7 @@
38
48
  <% end %>
39
49
  </div>
40
50
 
41
- <!--Storage-->
51
+ <!-- Storage -->
42
52
  <div class="children_fields xenserver-raw" id="xenserver-storage" style="<%= hide_raw %>">
43
53
  <%= field_set_tag 'Storage', :id => 'storage_volumes', :title => _('Storage') do -%>
44
54
  <%= f.fields_for :VBDs do |i| %>
@@ -47,6 +57,7 @@
47
57
  <% end -%>
48
58
  </div>
49
59
 
60
+ <!-- Network -->
50
61
  <div class="children_fields" id="xenserver-network" style="<%= hide_raw %>">
51
62
  <%= field_set_tag 'Network interfaces', :id => 'network_interfaces', :title => _('Networks') do -%>
52
63
  <%= f.fields_for :VIFs do |i| %>
@@ -55,22 +66,47 @@
55
66
  <% end -%>
56
67
  </div>
57
68
 
58
- <div class="children_fields" id="xenserver-vm-start" style="<%= hide_raw %>">
59
- <%= field_set_tag 'VM Startup Options', :id => 'vm_starup_options', :title => _('Power ON this VM') do -%>
60
- <%= checkbox_f f, :start, :checked => true, :label => _("Power ON this VM") %>
69
+ <div class="children_fields" id="xenserver-hosts" style="<%= hide_raw %>">
70
+ <%= field_set_tag 'Start on server', :id => 'xen_hypervisors', :title => _('Start on server') do -%>
71
+ <%= render 'compute_resources_vms/form/hypervisors', :f => f, :compute_resource => compute_resource, :new => new %>
61
72
  <% end -%>
62
73
  </div>
63
74
 
64
-
75
+ <!-- Startup -->
76
+ <div class="children_fields" id="xenserver-vm-start" style="<%= hide_raw %>">
77
+ <%= field_set_tag 'VM Startup Options', :id => 'vm_starup_options', :title => _('Power ON VM') do -%>
78
+ <%= checkbox_f f, :start, :checked => (compute_attributes['start'] == '1' || start_enable), :label => _("Power ON VM") %>
79
+ <% end -%>
80
+ </div>
65
81
 
66
82
  <script type="text/javascript">
67
83
 
68
84
  // Check if its a computer resource template then just do not show the form of XenStore
69
-
70
85
  if ($("#compute_attribute_compute_profile_id").length > 0){
71
- $('#xenserver-xenstore-data').hide(1)
86
+ $('#xenserver-xenstore-data').hide(1)
87
+ }
88
+
89
+ // Check if custom template in use then do now show SR settings
90
+ if ($("#compute_attribute_vm_attrs_builtin_template_name").val() == "" && $("#compute_attribute_vm_attrs_custom_template_name").val() != ""){
91
+ $('.xenserver-raw').hide(1);
92
+ }
93
+
94
+ // Check which template are in use
95
+ if ($("#compute_attribute_vm_attrs_builtin_template_name").val() != "" ){
96
+ $('#compute_attribute_vm_attrs_custom_template_name').val($("#compute_attribute_vm_attrs_custom_template_name option:contains('No template')").val());
97
+ // IE and Chrome
98
+ $('#compute_attribute_vm_attrs_custom_template_name').attr("disabled", 'disabled');
99
+ $('.custom_template_name').prop("disabled", true);
72
100
  }
73
101
 
102
+ if ($("#compute_attribute_vm_attrs_custom_template_name").val() != "" ){
103
+ $('#compute_attribute_vm_attrs_builtin_template_name').val($("#compute_attribute_vm_attrs_custom_template_name option:contains('No template')").val());
104
+ // IE and Chrome
105
+ $('#compute_attribute_vm_attrs_builtin_template_name').attr("disabled", 'disabled');
106
+ $('.buildin_templates').prop("disabled", true);
107
+ }
108
+
109
+ // Computer Profile Templates
74
110
  $(document).off('change.xenserver', '#compute_attribute_vm_attrs_custom_template_name');
75
111
  $(document).on('change.xenserver', '#compute_attribute_vm_attrs_custom_template_name', function (data) {
76
112
  if ($('option:selected', data.target).val() == "") {
@@ -91,13 +127,37 @@
91
127
 
92
128
  $(document).off('change.xenserver', '#compute_attribute_vm_attrs_builtin_template_name');
93
129
  $(document).on('change.xenserver', '#compute_attribute_vm_attrs_builtin_template_name', function (data) {
94
- $('.xenserver-raw').show(1000);
95
- $('.buildin_templates').prop("disabled", false);
96
- $('#compute_attribute_vm_attrs_builtin_template_name').removeAttr('disabled');
130
+ if ($('option:selected', data.target).val() == "") {
131
+ // IE and Chrome
132
+ $('.buildin_templates').prop("disabled", false);
133
+ $('#compute_attribute_vm_attrs_custom_template_name').removeAttr('disabled');
134
+ } else {
135
+ $('#compute_attribute_vm_attrs_custom_template_name').val($("#compute_attribute_vm_attrs_custom_template_name option:contains('No template')").val());
136
+ // IE and Chrome
137
+ $('#compute_attribute_vm_attrs_custom_template_name').attr("disabled", 'disabled');
138
+ $('.custom_template_name').prop("disabled", true);
139
+
140
+ }
141
+
97
142
  })
98
143
 
99
144
 
100
- // Create a new host windows
145
+ // Host Profile Forms
146
+
147
+ // Check which template are in use
148
+ if ($("#host_compute_attributes_custom_template_name").val() != "" ){
149
+ $('#host_compute_attributes_builtin_template_name').val($("#host_compute_attributes_builtin_template_name option:contains('No template')").val());
150
+ // IE and Chrome
151
+ $('#host_compute_attributes_builtin_template_name').attr("disabled", 'disabled');
152
+ $('.buildin_templates').prop("disabled", true);
153
+ }
154
+
155
+ if ($("#host_compute_attributes_builtin_template_name").val() != "" ){
156
+ $('#host_compute_attributes_custom_template_name').val($("#host_compute_attributes_custom_template_name option:contains('No template')").val());
157
+ // IE and Chrome
158
+ $('#host_compute_attributes_custom_template_name').attr("disabled", 'disabled');
159
+ $('.custom_template_name').prop("disabled", true);
160
+ }
101
161
 
102
162
  $(document).off('change.xenserver', '#host_compute_attributes_custom_template_name');
103
163
  $(document).on('change.xenserver', '#host_compute_attributes_custom_template_name', function (data) {
@@ -119,8 +179,21 @@
119
179
 
120
180
  $(document).off('change.xenserver', '#host_compute_attributes_builtin_template_name');
121
181
  $(document).on('change.xenserver', '#host_compute_attributes_builtin_template_name', function (data) {
122
- $('.xenserver-raw').show(1000);
123
- $('.buildin_templates').prop("disabled", false);
124
- $('#host_compute_attributes_builtin_template_name').removeAttr('disabled');
182
+ if ($('option:selected', data.target).val() == "") {
183
+ // IE and Chrome
184
+ $('.buildin_templates').prop("disabled", false);
185
+ $('#host_compute_attributes_custom_template_name').removeAttr('disabled');
186
+ } else {
187
+ $('#host_compute_attributes_custom_template_name').val($("#host_compute_attributes_builtin_template_name option:contains('No template')").val());
188
+ // IE and Chrome
189
+ $('#host_compute_attributes_custom_template_name').attr("disabled", 'disabled');
190
+ $('.custom_template_name').prop("disabled", true);
191
+
192
+ }
125
193
  })
126
- </script>
194
+ </script>
195
+
196
+ <!--
197
+ <%= debug params -%>
198
+ <%= debug compute_attributes -%>
199
+ -->
@@ -1,3 +1,3 @@
1
1
  module ForemanXen
2
- VERSION = "0.1.2"
2
+ VERSION = "0.1.3"
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: foreman_xen
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.2
4
+ version: 0.1.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Pavel Nemirovsky, Michal Piotrowski, Avi Israeli
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-07-31 00:00:00.000000000 Z
11
+ date: 2015-09-19 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rake
@@ -58,6 +58,7 @@ files:
58
58
  - app/views/api/v2/compute_resources/xenserver.json.rabl
59
59
  - app/views/compute_resources/form/_xenserver.html.erb
60
60
  - app/views/compute_resources/show/_xenserver.html.erb
61
+ - app/views/compute_resources_vms/form/_hypervisors.html.erb
61
62
  - app/views/compute_resources_vms/form/_network.html.erb
62
63
  - app/views/compute_resources_vms/form/_templates.html.erb
63
64
  - app/views/compute_resources_vms/form/_volume.html.erb
@@ -96,7 +97,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
96
97
  version: '0'
97
98
  requirements: []
98
99
  rubyforge_project:
99
- rubygems_version: 2.2.2
100
+ rubygems_version: 2.4.8
100
101
  signing_key:
101
102
  specification_version: 4
102
103
  summary: Provision and manage XEN Server from Foreman