mirror of
				https://github.com/retspen/webvirtcloud
				synced 2025-07-31 12:41:08 +00:00 
			
		
		
		
	Added is_template attribute to instances. If true, instance cannot be started.
This commit is contained in:
		
							parent
							
								
									4ab8561360
								
							
						
					
					
						commit
						646bdbbe0e
					
				
					 4 changed files with 39 additions and 3 deletions
				
			
		|  | @ -6,6 +6,7 @@ class Instance(models.Model): | |||
|     compute = models.ForeignKey(Compute) | ||||
|     name = models.CharField(max_length=20) | ||||
|     uuid = models.CharField(max_length=36) | ||||
|     is_template = models.BooleanField(default=False) | ||||
| 
 | ||||
|     def __unicode__(self): | ||||
|         return self.name | ||||
|  |  | |||
|  | @ -204,7 +204,12 @@ | |||
|                                                 <div role="tabpanel" class="tab-pane tab-pane-bordered active" id="boot"> | ||||
|                                                     <p>{% trans "Click on Boot button to start this instance." %}</p> | ||||
|                                                     <form action="" method="post" role="form">{% csrf_token %} | ||||
|                                                         {% if instance.is_template %} | ||||
|                                                             <p>{% trans "Template instance cannot be started." %}</p> | ||||
|                                                             <input type="submit" name="poweron" class="btn btn-lg btn-success pull-right disabled" value="{% trans "Power On" %}"> | ||||
|                                                         {% else %} | ||||
|                                                             <input type="submit" name="poweron" class="btn btn-lg btn-success pull-right" value="{% trans "Power On" %}"> | ||||
|                                                         {% endif %} | ||||
|                                                         <div class="clearfix"></div> | ||||
|                                                     </form> | ||||
|                                                 </div> | ||||
|  | @ -511,6 +516,11 @@ | |||
|                                                         {% trans "XML" %} | ||||
|                                                     </a> | ||||
|                                                 </li> | ||||
|                                                 <li role="presentation"> | ||||
|                                                     <a href="#template" aria-controls="template" role="tab" data-toggle="tab"> | ||||
|                                                         {% trans "Template" %} | ||||
|                                                     </a> | ||||
|                                                 </li> | ||||
|                                             {% endif %} | ||||
|                                         </ul> | ||||
|                                         <!-- Tab panes --> | ||||
|  | @ -684,6 +694,23 @@ | |||
|                                                     </form> | ||||
|                                                     <div class="clearfix"></div> | ||||
|                                                 </div> | ||||
|                                                 <div role="tabpanel" class="tab-pane tab-pane-bordered" id="template"> | ||||
|                                                     <p>{% trans "Is this instance template?" %}</p> | ||||
|                                                     <form class="form-horizontal" action="" method="post" role="form">{% csrf_token %} | ||||
|                                                         <div class="form-group"> | ||||
|                                                             <label class="col-sm-3 control-label">{% trans "Is template" %}</label> | ||||
|                                                             <div class="col-sm-6"> | ||||
|                                                                 <input type="checkbox" name="is_template" value="true" id="is_template" {% if instance.is_template %}checked{% endif %}> | ||||
|                                                             </div> | ||||
|                                                         </div> | ||||
|                                                         {% ifequal status 5 %} | ||||
|                                                             <button type="submit" class="btn btn-lg btn-success pull-right" name="change_template">{% trans "Change" %}</button> | ||||
|                                                         {% else %} | ||||
|                                                             <button class="btn btn-lg btn-success pull-right disabled" name="change_template">{% trans "Change" %}</button> | ||||
|                                                         {% endifequal %} | ||||
|                                                     </form> | ||||
|                                                     <div class="clearfix"></div> | ||||
|                                                 </div> | ||||
|                                                 <div role="tabpanel" class="tab-pane tab-pane-bordered" id="clone"> | ||||
|                                                     <p style="font-weight:bold;">{% trans "Create a clone" %}</p> | ||||
|                                                     <form class="form-horizontal" action="" method="post" role="form">{% csrf_token %} | ||||
|  | @ -1149,7 +1176,7 @@ | |||
|             } | ||||
|         }); | ||||
|     } | ||||
|     if (~$.inArray(hash, ['#media', '#network', '#clone', '#autostart', '#xmledit', '#vncsettings', '#migrate'])) { | ||||
|     if (~$.inArray(hash, ['#media', '#network', '#clone', '#autostart', '#xmledit', '#vncsettings', '#migrate', '#template'])) { | ||||
|         var btnsect = $('#navbtn>li>a'); | ||||
|         $(btnsect).each(function () { | ||||
|             if ($(this).attr('href') === '#settings') { | ||||
|  |  | |||
|  | @ -69,7 +69,7 @@ | |||
|                                                                 <input type="hidden" name="name" value="{{ vm }}"/> | ||||
|                                                                 <input type="hidden" name="compute_id" value="{{ host.0 }}"/> | ||||
|                                                                 {% ifequal info.status 5 %} | ||||
|                                                                     <button class="btn btn-sm btn-default" type="submit" name="poweron" title="{% trans "Power On" %}"> | ||||
|                                                                     <button class="btn btn-sm btn-default {% if info.is_template %}disabled{% endif %}" type="submit" name="poweron" title="{% trans "Power On" %}"> | ||||
|                                                                         <span class="glyphicon glyphicon-play"></span> | ||||
|                                                                     </button> | ||||
|                                                                     <button class="btn btn-sm btn-default disabled" title="{% trans "Suspend" %}"> | ||||
|  |  | |||
|  | @ -66,6 +66,7 @@ def instances(request): | |||
|                                 check_uuid = Instance.objects.get(compute_id=comp.id, name=vm) | ||||
|                                 if check_uuid.uuid != info['uuid']: | ||||
|                                     check_uuid.save() | ||||
|                                 all_host_vms[comp.id, comp.name][vm]['is_template'] = check_uuid.is_template | ||||
|                             except Instance.DoesNotExist: | ||||
|                                 check_uuid = Instance(compute_id=comp.id, name=vm, uuid=info['uuid']) | ||||
|                                 check_uuid.save() | ||||
|  | @ -515,6 +516,13 @@ def instance(request, compute_id, vname): | |||
|                     addlogmsg(request.user.username, instance.name, msg) | ||||
|                     return HttpResponseRedirect(request.get_full_path() + '#network') | ||||
| 
 | ||||
|                 if 'change_template' in request.POST: | ||||
|                     instance.is_template = request.POST.get('is_template', False) | ||||
|                     instance.save() | ||||
|                     msg = _("Edit template %s" % instance.is_template) | ||||
|                     addlogmsg(request.user.username, instance.name, msg) | ||||
|                     return HttpResponseRedirect(request.get_full_path() + '#template') | ||||
| 
 | ||||
|         conn.close() | ||||
| 
 | ||||
|     except libvirtError as lib_err: | ||||
|  |  | |||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue