foreman_xen 0.1.2 → 0.1.3

Sign up to get free protection for your applications and to get access to all the features.
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