mirror of
				https://github.com/retspen/webvirtcloud
				synced 2025-07-31 12:41:08 +00:00 
			
		
		
		
	move add new disk to instance disk tab. add existing disk option to attach disk. Small typo fixes
This commit is contained in:
		
							parent
							
								
									ea5e9cfead
								
							
						
					
					
						commit
						03ffa3a295
					
				
					 5 changed files with 252 additions and 117 deletions
				
			
		|  | @ -12,79 +12,150 @@ | |||
|                 <button type="button" class="close" data-dismiss="modal" aria-hidden="true">×</button> | ||||
|                 <h4 class="modal-title">{% trans "Add Instance Volume" %}</h4> | ||||
|             </div> | ||||
|         <form class="form-horizontal" method="post" role="form">{% csrf_token %} | ||||
|                 <div class="modal-body"> | ||||
| 
 | ||||
|                     <p style="font-weight:bold;">{% trans "Volume parameters" %}</p> | ||||
|                     <div class="form-group"> | ||||
|                         <label class="col-sm-3 control-label" style="font-weight:normal;">{% trans "Storage" %}</label> | ||||
|                         <div class="col-sm-4"> | ||||
|                             <select name="storage" class="form-control image-format"> | ||||
|                                 {% for storage in storages %} | ||||
|                                     <option value="{{ storage }}">{{ storage }}</option> | ||||
|                                 {% endfor %} | ||||
|                             </select> | ||||
|                         </div> | ||||
|                     </div> | ||||
|                     <div class="form-group"> | ||||
|                         <label class="col-sm-3 control-label" style="font-weight:normal;">{% trans "Name" %}</label> | ||||
|                         <div class="col-sm-4"> | ||||
|                             <input type="text" class="form-control" name="name" placeholder="{% trans "Name" %}" required pattern="[a-zA-Z0-9\.\-_]+"> | ||||
|                         </div> | ||||
|                     </div> | ||||
|                     <div class="form-group"> | ||||
|                         <label class="col-sm-3 control-label" style="font-weight:normal;">{% trans "Format" %}</label> | ||||
|                         <div class="col-sm-4"> | ||||
|                             <select name="format" class="form-control image-format"> | ||||
|                                 {% for format in formats %} | ||||
|                                     <option value="{{ format }}" {% if format == default_format %}selected{% endif %}>{% trans format %}</option> | ||||
|                                 {% endfor %} | ||||
|                             </select> | ||||
|                         </div> | ||||
|                     </div> | ||||
|                     <div class="form-group"> | ||||
|                         <label class="col-sm-3 control-label" style="font-weight:normal;">{% trans "Size" %}</label> | ||||
|                         <div class="col-sm-4"> | ||||
|                             <input type="text" class="form-control" name="size" value="10" maxlength="3" required pattern="[0-9]+"> | ||||
|                         </div> | ||||
|                         <label class="col-sm-1 control-label">{% trans "GB" %}</label> | ||||
|                     </div> | ||||
|                     <div class="form-group"> | ||||
|                         <label class="col-sm-3 control-label" style="font-weight:normal;">{% trans "Bus" %}</label> | ||||
|                         <div class="col-sm-4"> | ||||
|                             <select name="bus" class="form-control image-format"> | ||||
|                                 {% for bus in busses %} | ||||
|                                     <option value="{{ bus }}" {% if bus == default_bus %}selected{% endif %}>{% trans bus %}</option> | ||||
|                                 {% endfor %} | ||||
|                             </select> | ||||
|                         </div> | ||||
|                     </div> | ||||
|                     <div class="form-group"> | ||||
|                         <label class="col-sm-3 control-label" style="font-weight:normal;">{% trans "Cache" %}</label> | ||||
|                         <div class="col-sm-4"> | ||||
|                             <select name="cache" class="form-control image-format"> | ||||
|                                 {% for mode, name in cache_modes %} | ||||
|                                     <option value="{{ mode }}" {% if mode == default_cache %}selected{% endif %}>{% trans name %}</option> | ||||
|                                 {% endfor %} | ||||
|                             </select> | ||||
|                         </div> | ||||
|                     </div> | ||||
|                     <div class="form-group meta-prealloc"> | ||||
|                         <label class="col-sm-3 control-label" style="font-weight:normal;">{% trans "Metadata" %}</label> | ||||
|                         <div class="col-sm-4"> | ||||
|                             <input type="checkbox" name="meta_prealloc" value="true"> | ||||
|                         </div> | ||||
|                     </div> | ||||
|                 </div> | ||||
|                 <div class="modal-footer"> | ||||
|                     {% ifequal status 5 %} | ||||
|                     <button type="submit" class="btn btn-lg btn-success pull-right" name="addvolume">{% trans "Add volume" %}</button> | ||||
|                     {% else %} | ||||
|                     <button class="btn btn-lg btn-success pull-right disabled">{% trans "Add volume" %}</button> | ||||
|                     {% endifequal %} | ||||
|                 </div> | ||||
|             </form> | ||||
| 
 | ||||
| 
 | ||||
|             <div class="modal-body"> | ||||
|                 <div class="row"> | ||||
|                     <ul class="nav nav-tabs"> | ||||
|                         <li role="presentation" class="active"><a href="#NewDisk" data-toggle="tab">{% trans 'New Disk' %}</a></li> | ||||
|                         <li role="presentation"><a href="#ExistingDisk" data-toggle="tab">{% trans 'Existing Disk' %}</a></li> | ||||
|                     </ul> | ||||
| 
 | ||||
|                     <div class="tab-content"> | ||||
|                         <div class="tab-pane active" id="NewDisk"> | ||||
|                             <form class="form-horizontal" method="post" role="form">{% csrf_token %} | ||||
| 
 | ||||
|                             <p style="font-weight:bold;">{% trans "Volume parameters" %}</p> | ||||
|                             <div class="form-group"> | ||||
|                                 <label class="col-sm-3 control-label" style="font-weight:normal;">{% trans "Storage" %}</label> | ||||
|                                 <div class="col-sm-4"> | ||||
|                                     <select name="storage" class="form-control image-format"> | ||||
|                                         {% for storage in storages %} | ||||
|                                             <option value="{{ storage }}">{{ storage }}</option> | ||||
|                                         {% endfor %} | ||||
|                                     </select> | ||||
|                                 </div> | ||||
|                             </div> | ||||
|                             <div class="form-group"> | ||||
|                                 <label class="col-sm-3 control-label" style="font-weight:normal;">{% trans "Name" %}</label> | ||||
|                                 <div class="col-sm-4"> | ||||
|                                     <input type="text" class="form-control" name="name" placeholder="{% trans "Name" %}" required pattern="[a-zA-Z0-9\.\-_]+"> | ||||
|                                 </div> | ||||
|                             </div> | ||||
|                             <div class="form-group"> | ||||
|                                 <label class="col-sm-3 control-label" style="font-weight:normal;">{% trans "Format" %}</label> | ||||
|                                 <div class="col-sm-4"> | ||||
|                                     <select name="format" class="form-control image-format"> | ||||
|                                         {% for format in formats %} | ||||
|                                             <option value="{{ format }}" {% if format == default_format %}selected{% endif %}>{% trans format %}</option> | ||||
|                                         {% endfor %} | ||||
|                                     </select> | ||||
|                                 </div> | ||||
|                             </div> | ||||
|                             <div class="form-group"> | ||||
|                                 <label class="col-sm-3 control-label" style="font-weight:normal;">{% trans "Size" %}</label> | ||||
|                                 <div class="col-sm-4"> | ||||
|                                     <input type="text" class="form-control" name="size" value="10" maxlength="3" required pattern="[0-9]+"> | ||||
|                                 </div> | ||||
|                                 <label class="col-sm-1 control-label">{% trans "GB" %}</label> | ||||
|                             </div> | ||||
|                             <div class="form-group"> | ||||
|                                 <label class="col-sm-3 control-label" style="font-weight:normal;">{% trans "Bus" %}</label> | ||||
|                                 <div class="col-sm-4"> | ||||
|                                     <select name="bus" class="form-control image-format"> | ||||
|                                         {% for bus in busses %} | ||||
|                                             <option value="{{ bus }}" {% if bus == default_bus %}selected{% endif %}>{% trans bus %}</option> | ||||
|                                         {% endfor %} | ||||
|                                     </select> | ||||
|                                 </div> | ||||
|                             </div> | ||||
|                             <div class="form-group"> | ||||
|                                 <label class="col-sm-3 control-label" style="font-weight:normal;">{% trans "Cache" %}</label> | ||||
|                                 <div class="col-sm-4"> | ||||
|                                     <select name="cache" class="form-control image-format"> | ||||
|                                         {% for mode, name in cache_modes %} | ||||
|                                             <option value="{{ mode }}" {% if mode == default_cache %}selected{% endif %}>{% trans name %}</option> | ||||
|                                         {% endfor %} | ||||
|                                     </select> | ||||
|                                 </div> | ||||
|                             </div> | ||||
|                             <div class="form-group meta-prealloc"> | ||||
|                                 <label class="col-sm-3 control-label" style="font-weight:normal;">{% trans "Metadata" %}</label> | ||||
|                                 <div class="col-sm-4"> | ||||
|                                     <input type="checkbox" name="meta_prealloc" value="true"> | ||||
|                                 </div> | ||||
|                             </div> | ||||
|                             <div class="modal-footer"> | ||||
|                                 {% ifequal status 5 %} | ||||
|                                     <button type="submit" class="btn btn-lg btn-success pull-right" name="addnewvol">{% trans "Add Volume" %}</button> | ||||
|                                 {% else %} | ||||
|                                     <button class="btn btn-lg btn-success pull-right disabled">{% trans "Add Volume" %}</button> | ||||
|                                 {% endifequal %} | ||||
|                             </div> | ||||
|                         </form> | ||||
|                         </div> | ||||
|                         <div class="tab-pane" id="ExistingDisk"> | ||||
|                             <form class="form-horizontal" method="post" role="form">{% csrf_token %} | ||||
|                             <div class="modal-body"> | ||||
|                                 <p style="font-weight:bold;">{% trans "Volume parameters" %}</p> | ||||
|                                 <div class="form-group"> | ||||
|                                     <label class="col-sm-3 control-label" style="font-weight:normal;">{% trans "Storage" %}</label> | ||||
|                                     <div class="col-sm-4"> | ||||
|                                         <div class="dropdown"> | ||||
|                                           <button class="btn dropdown-toggle" type="button" data-toggle="dropdown">{% trans 'Select Pool...' %} | ||||
|                                           <span class="caret"></span></button> | ||||
|                                           <ul class="dropdown-menu"> | ||||
|                                               {% for storage in storages %} | ||||
|                                                   <li><a href="#" onclick="get_volumes({{ compute_id }}, '{{ storage }}')">{{ storage }}</a></li> | ||||
|                                               {% endfor %} | ||||
|                                           </ul> | ||||
|                                             <input id="selected_storage" name="selected_storage" type="hidden" value=""/> | ||||
|                                         </div> | ||||
|                                     </div> | ||||
|                                 </div> | ||||
|                                 <div class="form-group"> | ||||
|                                     <label class="col-sm-3 control-label" style="font-weight:normal;">{% trans "Volume" %}</label> | ||||
|                                     <div class="col-sm-4"> | ||||
|                                         <select id="vols" name="vols" class="form-control" disabled> | ||||
|                                             <option value="" selected>{% trans 'None' %}</option> | ||||
|                                             <!-- populate with javascript --> | ||||
|                                         </select> | ||||
|                                     </div> | ||||
|                                 </div> | ||||
|                                 <div class="form-group"> | ||||
|                                     <label class="col-sm-3 control-label" style="font-weight:normal;">{% trans "Bus" %}</label> | ||||
|                                     <div class="col-sm-4"> | ||||
|                                         <select name="bus" class="form-control image-format"> | ||||
|                                             {% for bus in busses %} | ||||
|                                                 <option value="{{ bus }}" {% if bus == default_bus %}selected{% endif %}>{% trans bus %}</option> | ||||
|                                             {% endfor %} | ||||
|                                         </select> | ||||
|                                     </div> | ||||
|                                 </div> | ||||
|                                 <div class="form-group"> | ||||
|                                     <label class="col-sm-3 control-label" style="font-weight:normal;">{% trans "Cache" %}</label> | ||||
|                                     <div class="col-sm-4"> | ||||
|                                         <select name="cache" class="form-control image-format"> | ||||
|                                             {% for mode, name in cache_modes %} | ||||
|                                                 <option value="{{ mode }}" {% if mode == default_cache %}selected{% endif %}>{% trans name %}</option> | ||||
|                                             {% endfor %} | ||||
|                                         </select> | ||||
|                                     </div> | ||||
|                                 </div> | ||||
|                             </div> | ||||
|                             <div class="modal-footer"> | ||||
|                                 {% ifequal status 5 %} | ||||
|                                     <button type="submit" class="btn btn-lg btn-success pull-right" name="addexistingvol">{% trans "Add Volume" %}</button> | ||||
|                                 {% else %} | ||||
|                                     <button class="btn btn-lg btn-success pull-right disabled">{% trans "Add Volume" %}</button> | ||||
|                                 {% endifequal %} | ||||
|                             </div> | ||||
|                         </form> | ||||
|                         </div> | ||||
|                     </div> | ||||
|                 </div> <!-- row --> | ||||
|             </div> <!-- /.modal-body --> | ||||
|         </div> <!-- /.modal-content --> | ||||
|     </div> <!-- /.modal-dialog --> | ||||
| </div> <!-- /.modal --> | ||||
|  |  | |||
|  | @ -631,8 +631,8 @@ | |||
|                                             </div> | ||||
|                                             <div role="tabpanel" class="tab-pane tab-pane-bordered" id="disks"> | ||||
|                                                  <p style="font-weight:bold;"> | ||||
|                                                         {% trans "Instance Volumes" %} | ||||
|                                                         {% include 'add_instance_volume.html' %} | ||||
|                                                      {% trans "Instance Volumes" %} | ||||
|                                                      {% include 'add_instance_volume.html' %} | ||||
|                                                  </p> | ||||
| 
 | ||||
|                                                  <div class="col-xs-12 col-sm-12"> | ||||
|  | @ -648,38 +648,39 @@ | |||
|                                                             <th style="width:100px;">{% trans "Action" %}</th> | ||||
|                                                         </thead> | ||||
|                                                         <tbody> | ||||
|                                                             {% for disk in disks %} | ||||
|                                                                 <tr> | ||||
|                                                                     <td>{{ disk.dev }}<br>{{ disk.target }}</td> | ||||
|                                                                     <td>{{ disk.format }}</td> | ||||
|                                                                     <td>{{ disk.used | filesizeformat}}</td> | ||||
|                                                                     <td>{{ disk.size | filesizeformat }}</td> | ||||
|                                                                     <td>{{ disk.bus }}</td> | ||||
|                                                                     <td>{{ disk.storage }}</td> | ||||
|                                                                     <td>{{ disk.path }}</td> | ||||
|                                                                     <td style="width:30px;"> | ||||
|                                                                         <form action="" method="post" style="height:10px" role="form">{% csrf_token %} | ||||
|                                                                             <input type="hidden" name="path" value="{{ disk.path }}"> | ||||
|                                                                             <input type="hidden" name="dev" value="{{ disk.dev }}"> | ||||
|                                                                             {% ifequal status 5 %} | ||||
|                                                                                 <button type="submit" class="btn btn-sm btn-default" name="detachvolume" title="{% trans "Detach" %}" onclick="return confirm('{% trans "Are you sure?" %}')"> | ||||
|                                                                                     <i class="fa fa-eject"></i> | ||||
|                                                                                 </button> | ||||
|                                                                                 <button type="submit" class="btn btn-sm btn-default" name="delvolume" title="{% trans "Delete" %}" onclick="return confirm('{% trans "Are you sure?" %}')"> | ||||
|                                                                                     <i class="fa fa-trash"></i> | ||||
|                                                                                 </button> | ||||
|                                                                             {% else %} | ||||
|                                                                                 <button class="btn btn-sm btn-default disabled" name="detachvolume" title="{% trans "Detach" %}"> | ||||
|                                                                                     <i class="fa fa-eject"></i> | ||||
|                                                                                 </button> | ||||
|                                                                                 <button class="btn btn-sm btn-default disabled" name="delvolume" title="{% trans "Delete" %}" onclick="return confirm('{% trans "Are you sure?" %}')"> | ||||
|                                                                                     <i class="fa fa-trash"></i> | ||||
|                                                                                 </button> | ||||
|                                                                             {% endifequal %} | ||||
|                                                                         </form> | ||||
|                                                                     </td> | ||||
|                                                                 </tr> | ||||
|                                                             {% endfor %} | ||||
|                                                         {% for disk in disks %} | ||||
|                                                             <tr> | ||||
| 
 | ||||
|                                                                 <td>{{ disk.dev }}<br>{{ disk.target }}</td> | ||||
|                                                                 <td>{{ disk.format }}</td> | ||||
|                                                                 <td>{{ disk.used | filesizeformat}}</td> | ||||
|                                                                 <td>{{ disk.size | filesizeformat }}</td> | ||||
|                                                                 <td>{{ disk.bus }}</td> | ||||
|                                                                 <td>{{ disk.storage }}</td> | ||||
|                                                                 <td>{{ disk.path }}</td> | ||||
|                                                                 <td style="width:30px;"> | ||||
|                                                                     <form action="" method="post" style="height:10px" role="form">{% csrf_token %} | ||||
|                                                                         <input type="hidden" name="path" value="{{ disk.path }}"> | ||||
|                                                                         <input type="hidden" name="dev" value="{{ disk.dev }}"> | ||||
|                                                                         {% ifequal status 5 %} | ||||
|                                                                             <button type="submit" class="btn btn-sm btn-default" name="detachvolume" title="{% trans "Detach" %}" onclick="return confirm('{% trans "Are you sure?" %}')"> | ||||
|                                                                                 <i class="fa fa-eject"></i> | ||||
|                                                                             </button> | ||||
|                                                                             <button type="submit" class="btn btn-sm btn-default" name="delvolume" title="{% trans "Delete" %}" onclick="return confirm('{% trans "Are you sure?" %}')"> | ||||
|                                                                                 <i class="fa fa-trash"></i> | ||||
|                                                                             </button> | ||||
|                                                                         {% else %} | ||||
|                                                                             <button class="btn btn-sm btn-default disabled" name="detachvolume" title="{% trans "Detach" %}"> | ||||
|                                                                                 <i class="fa fa-eject"></i> | ||||
|                                                                             </button> | ||||
|                                                                             <button class="btn btn-sm btn-default disabled" name="delvolume" title="{% trans "Delete" %}" onclick="return confirm('{% trans "Are you sure?" %}')"> | ||||
|                                                                                 <i class="fa fa-trash"></i> | ||||
|                                                                             </button> | ||||
|                                                                         {% endifequal %} | ||||
|                                                                     </form> | ||||
|                                                                 </td> | ||||
|                                                             </tr> | ||||
|                                                         {% endfor %} | ||||
|                                                          </tbody> | ||||
|                                                     </table> | ||||
|                                                 </div> | ||||
|  | @ -1227,6 +1228,39 @@ | |||
| {% endblock %} | ||||
| {% block script %} | ||||
| <script src="{% static "js/ace.js" %}" type="text/javascript" charset="utf-8"></script> | ||||
| <script> | ||||
|     function get_volumes(comp_id, pool) { | ||||
|         vol_params = comp_id + " " + pool; | ||||
| 
 | ||||
|         vol_url = "/computes/" + comp_id + "/storage/" + pool + "/?get_volumes"; | ||||
|         var select = document.getElementById("vols"); | ||||
| 
 | ||||
|         while (select.options.length){ | ||||
|             select.removeChild(select.options[0]); | ||||
|         } | ||||
| 
 | ||||
|         var input_sto = document.getElementById('selected_storage'); | ||||
|         input_sto.value = pool; | ||||
| 
 | ||||
|         $.getJSON(vol_url, function(data) { | ||||
|             if (data.length > 0) { | ||||
|                 select.disabled = false; | ||||
|             } | ||||
|              var opt = document.createElement('option'); | ||||
|              opt.value = ''; | ||||
|              opt.innerHTML = 'None'; | ||||
|              select.appendChild(opt); | ||||
|             for (i = 0; i < data.length; i++){ | ||||
|                  var opt = document.createElement('option'); | ||||
|                  opt.value = data[i]['name']; | ||||
|                  opt.innerHTML = data[i]['name']; | ||||
|                  select.appendChild(opt); | ||||
|             } | ||||
| 
 | ||||
|         }); | ||||
|     } | ||||
| </script> | ||||
| 
 | ||||
| <script> | ||||
|     var editor = ace.edit("editor"); | ||||
|     editor.getSession().setMode("ace/mode/xml"); | ||||
|  | @ -1238,13 +1272,13 @@ | |||
| </script> | ||||
| <script> | ||||
|     function open_console(view_style) { | ||||
|         window.open('{% url 'console' %}?token={{ compute_id }}-{{ uuid }}&view=' +view_style +'', '', 'width=850,height=600') | ||||
|         window.open('{% url 'console' %}?token={{ compute_id }}-{{ uuid }}&view=' + view_style +'', '', 'width=850,height=600') | ||||
|     } | ||||
| </script> | ||||
| <script> | ||||
|     function random_mac(net) { | ||||
|         $.getJSON('{% url 'random_mac_address' %}', function (data) { | ||||
|             $('input[name="'+net+'"]').val(data['mac']); | ||||
|             $('input[name="' + net + '"]').val(data['mac']); | ||||
|         }); | ||||
|     }; | ||||
| </script> | ||||
|  |  | |||
|  | @ -20,6 +20,7 @@ from vrtManager.hostdetails import wvmHostDetails | |||
| from vrtManager.instance import wvmInstance, wvmInstances | ||||
| from vrtManager.connection import connection_manager | ||||
| from vrtManager.create import wvmCreate | ||||
| from vrtManager.storage import wvmStorage | ||||
| from vrtManager.util import randomPasswd | ||||
| from libvirt import libvirtError, VIR_DOMAIN_XML_SECURE | ||||
| from logs.views import addlogmsg | ||||
|  | @ -171,7 +172,7 @@ def instance(request, compute_id, vname): | |||
|                                    usr_inst.instance.name) | ||||
|                 cpu += int(conn.get_vcpu()) | ||||
|                 memory += int(conn.get_memory()) | ||||
|                 for disk in conn.get_disk_device(): | ||||
|                 for disk in conn.get_disk_devices(): | ||||
|                     if disk['size']: | ||||
|                         disk_size += int(disk['size']) >> 30 | ||||
| 
 | ||||
|  | @ -255,8 +256,8 @@ def instance(request, compute_id, vname): | |||
|         cur_memory = conn.get_cur_memory() | ||||
|         title = conn.get_title() | ||||
|         description = conn.get_description() | ||||
|         disks = conn.get_disk_device() | ||||
|         media = conn.get_media_device() | ||||
|         disks = conn.get_disk_devices() | ||||
|         media = conn.get_media_devices() | ||||
|         if len(media) != 0: | ||||
|             media_iso = sorted(conn.get_iso_media()) | ||||
|         else: | ||||
|  | @ -439,7 +440,7 @@ def instance(request, compute_id, vname): | |||
|                     addlogmsg(request.user.username, instance.name, msg) | ||||
|                     return HttpResponseRedirect(request.get_full_path() + '#resize') | ||||
| 
 | ||||
|             if 'addvolume' in request.POST and (request.user.is_superuser or userinstance.is_change): | ||||
|             if 'addnewvol' in request.POST and (request.user.is_superuser or userinstance.is_change): | ||||
|                 connCreate = wvmCreate(compute.hostname, | ||||
|                                        compute.login, | ||||
|                                        compute.password, | ||||
|  | @ -459,6 +460,26 @@ def instance(request, compute_id, vname): | |||
|                 addlogmsg(request.user.username, instance.name, msg) | ||||
|                 return HttpResponseRedirect(request.get_full_path() + '#disks') | ||||
| 
 | ||||
|             if 'addexistingvol' in request.POST and (request.user.is_superuser or userinstance.is_change): | ||||
|                 storage = request.POST.get('selected_storage', '') | ||||
|                 name = request.POST.get('vols', '') | ||||
|                 bus = request.POST.get('bus', default_bus) | ||||
|                 cache = request.POST.get('cache', default_cache) | ||||
| 
 | ||||
|                 connCreate = wvmStorage(compute.hostname, | ||||
|                                        compute.login, | ||||
|                                        compute.password, | ||||
|                                        compute.type, | ||||
|                                        storage) | ||||
| 
 | ||||
|                 format = connCreate.get_volume_type(name) | ||||
|                 path = connCreate.get_target_path() | ||||
|                 target = get_new_disk_dev(disks, bus) | ||||
|                 source = path + "/" + name; | ||||
| 
 | ||||
|                 conn.attach_disk(source, target, subdriver=format, cache=cache, targetbus=bus) | ||||
|                 return HttpResponseRedirect(request.get_full_path() + '#disks') | ||||
| 
 | ||||
|             if 'delvolume' in request.POST and (request.user.is_superuser or userinstance.is_change): | ||||
|                 connDelete = wvmCreate(compute.hostname, | ||||
|                                        compute.login, | ||||
|  | @ -1056,7 +1077,7 @@ def _get_dhcp_mac_address(vname): | |||
| 
 | ||||
| @login_required | ||||
| def guess_mac_address(request, vname): | ||||
|     data = { 'vname': vname } | ||||
|     data = {'vname': vname} | ||||
|     mac = _get_dhcp_mac_address(vname) | ||||
|     if not mac: | ||||
|         mac = _get_random_mac_address() | ||||
|  | @ -1100,7 +1121,7 @@ def guess_clone_name(request): | |||
| @login_required | ||||
| def check_instance(request, vname): | ||||
|     check_instance = Instance.objects.filter(name=vname) | ||||
|     data = { 'vname': vname, 'exists': False } | ||||
|     data = {'vname': vname, 'exists': False} | ||||
|     if check_instance: | ||||
|         data['exists'] = True | ||||
|     return HttpResponse(json.dumps(data)) | ||||
|  | @ -1119,6 +1140,7 @@ def get_clone_disk_name(disk, prefix, clone_name=''): | |||
|         image = "{}-clone".format(disk['image']) | ||||
|     return image | ||||
| 
 | ||||
| 
 | ||||
| def _get_clone_disks(disks, vname=''): | ||||
|     clone_disks = [] | ||||
|     for disk in disks: | ||||
|  | @ -1134,6 +1156,7 @@ def _get_clone_disks(disks, vname=''): | |||
|         clone_disks.append(new_disk) | ||||
|     return clone_disks | ||||
| 
 | ||||
| 
 | ||||
| def sshkeys(request, vname): | ||||
|     """ | ||||
|     :param request: | ||||
|  |  | |||
|  | @ -1,5 +1,5 @@ | |||
| from django.shortcuts import render, get_object_or_404 | ||||
| from django.http import HttpResponseRedirect | ||||
| from django.http import HttpResponseRedirect, HttpResponse | ||||
| from django.utils.translation import ugettext_lazy as _ | ||||
| from django.core.urlresolvers import reverse | ||||
| from django.contrib.auth.decorators import login_required | ||||
|  | @ -8,6 +8,7 @@ from storages.forms import AddStgPool, AddImage, CloneImage | |||
| from vrtManager.storage import wvmStorage, wvmStorages | ||||
| from libvirt import libvirtError | ||||
| from django.contrib import messages | ||||
| import json | ||||
| 
 | ||||
| @login_required | ||||
| def storages(request, compute_id): | ||||
|  | @ -204,6 +205,12 @@ def storage(request, compute_id, pool): | |||
|             else: | ||||
|                 for msg_err in form.errors.values(): | ||||
|                     error_messages.append(msg_err.as_text()) | ||||
|     if request.method == 'GET': | ||||
|         if 'get_volumes' in request.GET: | ||||
|             conn.close() | ||||
|             return HttpResponse(json.dumps(sorted(volumes))) | ||||
| 
 | ||||
|     conn.close() | ||||
| 
 | ||||
|     return render(request, 'storage.html', locals()) | ||||
| 
 | ||||
|  |  | |||
|  | @ -244,7 +244,7 @@ class wvmInstance(wvmConnect): | |||
| 
 | ||||
|         return util.get_xml_path(self._XMLDesc(0), func=networks) | ||||
| 
 | ||||
|     def get_disk_device(self): | ||||
|     def get_disk_devices(self): | ||||
|         def disks(doc): | ||||
|             result = [] | ||||
|             dev = None | ||||
|  | @ -285,7 +285,7 @@ class wvmInstance(wvmConnect): | |||
| 
 | ||||
|         return util.get_xml_path(self._XMLDesc(0), func=disks) | ||||
| 
 | ||||
|     def get_media_device(self): | ||||
|     def get_media_devices(self): | ||||
|         def disks(doc): | ||||
|             result = [] | ||||
|             dev = None | ||||
|  | @ -651,7 +651,7 @@ class wvmInstance(wvmConnect): | |||
|         return iso | ||||
| 
 | ||||
|     def delete_all_disks(self): | ||||
|         disks = self.get_disk_device() | ||||
|         disks = self.get_disk_devices() | ||||
|         for disk in disks: | ||||
|             vol = self.get_volume_by_path(disk.get('path')) | ||||
|             vol.delete(0) | ||||
|  |  | |||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue