mirror of
				https://github.com/retspen/webvirtcloud
				synced 2025-07-31 12:41:08 +00:00 
			
		
		
		
	
						commit
						7efec407c2
					
				
					 4 changed files with 116 additions and 20 deletions
				
			
		
							
								
								
									
										45
									
								
								instances/templates/add_instance_network_block.html
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										45
									
								
								instances/templates/add_instance_network_block.html
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,45 @@ | |||
| {% load i18n %} | ||||
| {% if request.user.is_superuser and status == 5 %} | ||||
|     <a href="#addInstanceNetwork" type="button" class="btn btn-success pull-right" data-toggle="modal"> | ||||
|         <span class="glyphicon glyphicon-plus" aria-hidden="true"></span> | ||||
|     </a> | ||||
| 
 | ||||
|     <!-- Modal pool --> | ||||
|     <div class="modal fade" id="addInstanceNetwork" tabindex="-1" role="dialog" aria-labelledby="addInstanceNetworkLabel" aria-hidden="true"> | ||||
|         <div class="modal-dialog"> | ||||
|             <div class="modal-content"> | ||||
|                 <div class="modal-header"> | ||||
|                     <button type="button" class="close" data-dismiss="modal" aria-hidden="true">×</button> | ||||
|                     <h4 class="modal-title">{% trans "Add Instance Network" %}</h4> | ||||
|                 </div> | ||||
|                 <div class="modal-body"> | ||||
|                     <form class="form-horizontal" method="post" action="" role="form">{% csrf_token %} | ||||
|                         <div class="form-group"> | ||||
|                             <label class="col-sm-4 control-label">{% trans "Mac" %}</label> | ||||
|                             <div class="col-sm-6"> | ||||
|                                 <input type="text" class="form-control" name="add-net-mac"> | ||||
|                             </div> | ||||
|                         </div> | ||||
|                         <div class="form-group"> | ||||
|                             <label class="col-sm-4 control-label">{% trans "Network" %}</label> | ||||
|                             <div class="col-sm-6"> | ||||
|                                 <select class="form-control" name="add-net-network"> | ||||
|                                     {% for c_net in compute_networks %} | ||||
|                                         <option value="net:{{ c_net }}">Network {{ c_net }}</option> | ||||
|                                     {% endfor %} | ||||
|                                     {% for c_iface in compute_interfaces %} | ||||
|                                         <option value="iface:{{ c_iface }}">Interface {{ c_iface }}</option> | ||||
|                                     {% endfor %} | ||||
|                                 </select> | ||||
|                             </div> | ||||
|                         </div> | ||||
|                         </div> | ||||
|                         <div class="modal-footer"> | ||||
|                             <button type="button" class="btn btn-default" data-dismiss="modal">{% trans "Close" %}</button> | ||||
|                             <button type="submit" class="btn btn-primary" name="add_network">{% trans "Add" %}</button> | ||||
|                         </div> | ||||
|                     </form> | ||||
|             </div> <!-- /.modal-content --> | ||||
|         </div> <!-- /.modal-dialog --> | ||||
|     </div> <!-- /.modal --> | ||||
| {% endif %} | ||||
|  | @ -827,7 +827,10 @@ | |||
|                                             {% endif %} | ||||
|                                             {% if request.user.is_superuser %} | ||||
|                                                 <div role="tabpanel" class="tab-pane tab-pane-bordered" id="network"> | ||||
|                                                     <p>{% trans "Assign network device to bridge" %}</p> | ||||
|                                                     <p> | ||||
|                                                     {% trans "Assign network device to bridge" %} | ||||
|                                                     {% include 'add_instance_network_block.html' %} | ||||
|                                                     </p> | ||||
|                                                     <form class="form-horizontal" action="" method="post" role="form">{% csrf_token %} | ||||
|                                                         <p style="font-weight:bold;">{% trans "Network devices" %}</p> | ||||
|                                                         {% for network in networks %} | ||||
|  | @ -842,19 +845,19 @@ | |||
|                                                                 <div class="col-sm-3"> | ||||
|                                                                     <select name="net-source-{{ forloop.counter0 }}" class="form-control" id="network_select" onchange="network_select_enable()"> | ||||
|                                                                         {% for c_nets in compute_networks %} | ||||
|                                                                             {% if forloop.counter0 == 0 %} | ||||
|                                                                                 <option value="{{ network.nic }}" selected hidden>{% trans "to Change" %}</option> | ||||
|                                                                             {% endif %} | ||||
|                                                                             <option value="{{ c_nets }}">{{ c_nets }}</option> | ||||
|                                                                             <option value="net:{{ c_nets }}" {% if c_nets == network.nic %}selected{% endif %}>Network {{ c_nets }}</option> | ||||
|                                                                         {% endfor %} | ||||
|                                                                         {% for c_iface in compute_interfaces %} | ||||
|                                                                             <option value="iface:{{ c_iface }}" {% if c_iface == network.nic %}selected{% endif %}>Interface {{ c_iface }}</option> | ||||
|                                                                         {% endfor %} | ||||
|                                                                     </select> | ||||
|                                                                 </div> | ||||
|                                                             </div> | ||||
|                                                         {% endfor %} | ||||
|                                                         {% ifequal status 5 %} | ||||
|                                                             <button type="submit" class="btn btn-lg btn-success pull-right" id="ali" name="change_network" disabled>{% trans "Change" %}</button> | ||||
|                                                             <button type="submit" class="btn btn-lg btn-success pull-right" id="btn_change_network" name="change_network" disabled>{% trans "Change" %}</button> | ||||
|                                                         {% else %} | ||||
|                                                             <button type="submit"class="btn btn-lg btn-success pull-right" id="ali" name="change_network" disabled>{% trans "Change" %}</button> | ||||
|                                                             <button type="submit" class="btn btn-lg btn-success pull-right" id="btn_change_network" name="change_network" disabled>{% trans "Change" %}</button> | ||||
|                                                         {% endifequal %} | ||||
|                                                     </form> | ||||
|                                                     <div class="clearfix"></div> | ||||
|  | @ -898,7 +901,7 @@ | |||
|                                                                     </div> | ||||
|                                                                     <div class="col-sm-4"> | ||||
|                                                                         <button type="button" class="btn btn-sm btn-success pull-left" name="random-mac-{{ forloop.counter0 }}" | ||||
|                                                                                 onclick="random_mac({{ forloop.counter0 }})" style="margin-top: 2px;">{% trans "Random" %}</button> | ||||
|                                                                                 onclick="random_mac('clone-net-mac-{{ forloop.counter0 }}')" style="margin-top: 2px;">{% trans "Random" %}</button> | ||||
|                                                                         <button type="button" class="btn btn-sm btn-success pull-left" name="guess-mac-{{ forloop.counter0 }}" | ||||
|                                                                                 onclick="guess_mac_address('#clone_name', {{ forloop.counter0 }})" style="margin-top: 2px;">{% trans "Guess" %}</button> | ||||
|                                                                     </div> | ||||
|  | @ -1230,7 +1233,7 @@ | |||
| <script> | ||||
|     function random_mac(net) { | ||||
|         $.getJSON('/instance/random_mac_address/', function(data) { | ||||
|             $('input[name="clone-net-mac-'+net+'"]').val(data['mac']); | ||||
|             $('input[name="'+net+'"]').val(data['mac']); | ||||
|         }); | ||||
|     }; | ||||
| </script> | ||||
|  | @ -1339,7 +1342,8 @@ | |||
|     }); | ||||
| {% if request.user.is_superuser %} | ||||
|     $(document).ready(function () { | ||||
|         random_mac(0); | ||||
|         random_mac('clone-net-mac-0'); | ||||
|         random_mac('add-net-mac'); | ||||
|     }); | ||||
| {% else %} | ||||
|     $('#select_clone_name').on('change', function () { | ||||
|  | @ -1364,11 +1368,7 @@ | |||
| <script> | ||||
|     function network_select_enable(){ | ||||
|         // set network button enabled | ||||
|         var selected = $('network_select').val(); | ||||
|         if (selected != "to Change") { | ||||
|             $('button[name="change_network"]').removeAttr('disabled'); | ||||
| 
 | ||||
|         } | ||||
|         $('button[name="change_network"]').removeAttr('disabled'); | ||||
|     } | ||||
|  </script> | ||||
| <script src="{% static "js/Chart.min.js" %}"></script> | ||||
|  |  | |||
|  | @ -321,6 +321,13 @@ def instance(request, compute_id, vname): | |||
|             if dev not in existing_devs: | ||||
|                 return dev | ||||
|         raise Exception(_('None available device name')) | ||||
| 
 | ||||
|     def get_network_tuple(network_source_str): | ||||
|         network_source_pack = network_source_str.split(":", 1) | ||||
|         if len(network_source_pack) > 1: | ||||
|             return (network_source_pack[1], network_source_pack[0]) | ||||
|         else: | ||||
|             return (network_source_pack[0], 'net') | ||||
|              | ||||
|     try: | ||||
|         conn = wvmInstance(compute.hostname, | ||||
|  | @ -329,6 +336,7 @@ def instance(request, compute_id, vname): | |||
|                            compute.type, | ||||
|                            vname) | ||||
|         compute_networks = sorted(conn.get_networks()) | ||||
|         compute_interfaces = sorted(conn.get_ifaces()) | ||||
|         status = conn.get_status() | ||||
|         autostart = conn.get_autostart() | ||||
|         vcpu = conn.get_vcpu() | ||||
|  | @ -686,7 +694,11 @@ def instance(request, compute_id, vname): | |||
|                     network_data = {} | ||||
| 
 | ||||
|                     for post in request.POST: | ||||
|                         if post.startswith('net-'): | ||||
|                         if post.startswith('net-source-'): | ||||
|                             (source, source_type) = get_network_tuple(request.POST.get(post)) | ||||
|                             network_data[post] = source | ||||
|                             network_data[post + '-type'] = source_type | ||||
|                         elif post.startswith('net-'): | ||||
|                             network_data[post] = request.POST.get(post, '') | ||||
| 
 | ||||
|                     conn.change_network(network_data) | ||||
|  | @ -696,6 +708,17 @@ def instance(request, compute_id, vname): | |||
|                     messages.success(request, msg) | ||||
|                     return HttpResponseRedirect(request.get_full_path() + '#network') | ||||
| 
 | ||||
|                 if 'add_network' in request.POST: | ||||
|                     mac = request.POST.get('add-net-mac') | ||||
|                     (source, source_type) = get_network_tuple(request.POST.get('add-net-network')) | ||||
| 
 | ||||
|                     conn.add_network(mac, source, source_type) | ||||
|                     msg = _("Edit network") | ||||
|                     addlogmsg(request.user.username, instance.name, msg) | ||||
|                     msg = _("Network Devices are changed. Please reboot instance to activate.") | ||||
|                     messages.success(request, msg) | ||||
|                     return HttpResponseRedirect(request.get_full_path() + '#network') | ||||
|                  | ||||
|                 if 'add_owner' in request.POST: | ||||
|                     user_id = int(request.POST.get('user_id', '')) | ||||
|                      | ||||
|  |  | |||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue