
    >Tf                         d dl Zd dlmZ d dlmZ d dlmZm	Z	 d dl
mZmZ d dlmZ d dlmZmZmZ dZd	Z G d
 deee          Z G d de          Z G d de          Z G d de          Z G d de          ZdS )    N)gettext_lazy)BaseInterfaceTable)NetBoxTablecolumns)ContactsColumnMixinTenancyColumnsMixinhumanize_megabytes)VirtualDiskVirtualMachineVMInterface)VirtualDiskTableVirtualMachineTableVirtualMachineVirtualDiskTableVirtualMachineVMInterfaceTableVMInterfaceTablea;  
{% if perms.virtualization.change_vminterface %}
  <span class="dropdown">
    <button type="button" class="btn btn-primary btn-sm dropdown-toggle" data-bs-toggle="dropdown" aria-haspopup="true" aria-expanded="false" title="Add">
      <span class="mdi mdi-plus-thick" aria-hidden="true"></span>
    </button>
    <ul class="dropdown-menu dropdown-menu-end">
      {% if perms.ipam.add_ipaddress %}
        <li><a class="dropdown-item" href="{% url 'ipam:ipaddress_add' %}?vminterface={{ record.pk }}&return_url={% url 'virtualization:virtualmachine_interfaces' pk=object.pk %}">IP Address</a></li>
      {% endif %}
      {% if perms.vpn.add_l2vpntermination %}
        <li><a class="dropdown-item" href="{% url 'vpn:l2vpntermination_add' %}?virtual_machine={{ object.pk }}&vminterface={{ record.pk }}&return_url={% url 'virtualization:virtualmachine_interfaces' pk=object.pk %}">L2VPN Termination</a></li>
      {% endif %}
      {% if perms.ipam.add_fhrpgroupassignment %}
        <li><a class="dropdown-item" href="{% url 'ipam:fhrpgroupassignment_add' %}?interface_type={{ record|content_type_id }}&interface_id={{ record.pk }}&return_url={% url 'virtualization:virtualmachine_interfaces' pk=object.pk %}">Assign FHRP Group</a></li>
      {% endif %}
    </ul>
  </span>
{% endif %}
{% if perms.vpn.add_tunnel and not record.tunnel_termination %}
  <a href="{% url 'vpn:tunnel_add' %}?termination1_type=virtualization.virtualmachine&termination1_parent={{ record.virtual_machine.pk }}&termination1_termination={{ record.pk }}&return_url={% url 'virtualization:virtualmachine_interfaces' pk=object.pk %}" title="Create a tunnel" class="btn btn-success btn-sm">
    <i class="mdi mdi-tunnel-outline" aria-hidden="true"></i>
  </a>
{% elif perms.vpn.delete_tunneltermination and record.tunnel_termination %}
  <a href="{% url 'vpn:tunneltermination_delete' pk=record.tunnel_termination.pk %}?return_url={% url 'virtualization:virtualmachine_interfaces' pk=object.pk %}" title="Remove tunnel" class="btn btn-danger btn-sm">
    <i class="mdi mdi-tunnel-outline" aria-hidden="true"></i>
  </a>
{% endif %}
c                   ~   e Zd Z ej         ed          dd          Z ej         ed                    Z	 ej         ed          d          Z
 ej         ed	          d          Z ej         ed
          d          Z ej         ed                    Z ej        d ed                    Z ej         ed                    Z ej        d ed                    Z ej        d ed                    Z ej        dd ed                    Z ej        d          Z ej         ed                    Z ej         ed                    Z ej         ed          d          Z ej         ed                    Z G d dej                  Zd ZdS )r   Name)_nameT)verbose_nameorder_bylinkifyStatusr   Siter   r   ClusterDeviceRolePlatform)r   r   CommentszIPv4 AddresszIPv6 Address)primary_ip4primary_ip6z
IP Address)r   r   r   z"virtualization:virtualmachine_listurl_name
InterfaceszVirtual DiskszConfig TemplateDiskc                       e Zd ZeZdZdZdS )VirtualMachineTable.Meta)pkidnamestatussiteclusterdeviceroletenanttenant_groupvcpusmemorydiskr"   r#   
primary_ipdescriptioncommentsconfig_templateserialcontactstagscreatedlast_updated)r*   r,   r-   r.   r/   r1   r2   r4   r5   r6   r7   N)__name__
__module____qualname__r   modelfieldsdefault_columns     J/var/www/html/netbox-4.1.3/netbox/virtualization/tables/virtualmachines.pyMetar)   r   s!        


rG   rI   c                      t          |          S Nr	   selfvalues     rH   render_diskzVirtualMachineTable.render_disk}       !%(((rG   N)r@   rA   rB   tablesColumn_r,   r   ChoiceFieldColumnr-   r.   r/   r0   ColoredLabelColumnr1   platformMarkdownColumnr9   r"   r#   r7   	TagColumnr=   interface_countvirtual_disk_countr:   r6   r   rI   rO   rF   rG   rH   r   r   5   s       6=QvYY  D
 'W&Qx[[  F 6=QvYY  D fmQy\\  G V]Qx[[  F &7%QvYY  D v}Qz]]  H &w%Qz]]  H  &-Q~&&  K  &-Q~&&  K /Q|__  J
 75  D $fmQ|__  O 'Q''   $fmQ())  O 6=QvYY  D	
 	
 	
 	
 	
{ 	
 	
 	
) ) ) ) )rG   r   c                       e Zd Z ej         ed          d          Z ej         ed          d          Z ej         ed          d          Z e	j
        d          Z G d d	ej                  Zd
S )r   Virtual MachineTr   r   VRFzvirtualization:vminterface_listr$   c                       e Zd ZeZdZdZdS )VMInterfaceTable.Meta)r*   r+   r,   virtual_machineenabledmac_addressmtumoder8   r=   vrfl2vpntunnelip_addressesfhrp_groupsuntagged_vlantagged_vlansr>   r?   )r*   r,   r`   ra   r8   N)r@   rA   rB   r   rC   rD   rE   rF   rG   rH   rI   r_      s"        

 VrG   rI   N)r@   rA   rB   rQ   rR   rS   r`   r,   re   r   rX   r=   r   rI   rF   rG   rH   r   r      s        #fmQ())  O 6=QvYY  D &-QuXX  C 72  DV V V V V{ V V V V VrG   r   c                       e Zd Z ej         ed          d          Z ej         ed          d          Z ej	        de
          Z G d dej                  Zd	S )
r   ParentTr   Bridgeeditdelete)actionsextra_buttonsc                   ,    e Zd ZeZdZdZd d d dZdS )#VirtualMachineVMInterfaceTable.Meta)r*   r+   r,   ra   parentbridgerb   rc   rd   r8   r=   re   rf   rg   rh   ri   rj   rk   rr   )r*   r,   ra   rb   rc   rd   r8   rh   c                     | j         S rK   r,   records    rH   <lambda>z,VirtualMachineVMInterfaceTable.Meta.<lambda>        rG   c                     dS )NtruerF   rz   s    rH   r|   z,VirtualMachineVMInterfaceTable.Meta.<lambda>   s    6 rG   c                     | j         rdndS )Nr   false)ra   rz   s    rH   r|   z,VirtualMachineVMInterfaceTable.Meta.<lambda>   s    V^+P66 rG   )	data-namezdata-virtualzdata-enabledN)r@   rA   rB   r   rC   rD   rE   	row_attrsrF   rG   rH   rI   ru      s@        
 q3311PP
 
			rG   rI   N)r@   rA   rB   rQ   rR   rS   rv   rw   r   ActionsColumnVMINTERFACE_BUTTONSrr   r   rI   rF   rG   rH   r   r      s        V]Qx[[  F V]Qx[[  F $g#")  G

 
 
 
 
{ 
 
 
 
 
rG   r   c                       e Zd Z ej         ed          d          Z ej         ed          d          Z ej         ed                    Z e	j
        d          Z G d	 d
ej                  Zd ZdS )r   r\   Tr   r   Sizer   zvirtualization:virtualdisk_listr$   c                   $    e Zd ZeZdZdZdd iZdS )VirtualDiskTable.Meta)r*   r+   r`   r,   sizer8   r=   )r*   r,   r`   r   r8   r   c                     | j         S rK   ry   rz   s    rH   r|   zVirtualDiskTable.Meta.<lambda>   r}   rG   N)r@   rA   rB   r   rC   rD   rE   r   rF   rG   rH   rI   r      s2        
 S33
			rG   rI   c                      t          |          S rK   r	   rL   s     rH   render_sizezVirtualDiskTable.render_size   rP   rG   N)r@   rA   rB   rQ   rR   rS   r`   r,   r   r   rX   r=   r   rI   r   rF   rG   rH   r   r      s        #fmQ())  O 6=QvYY  D 6=QvYY  D 72  D
 
 
 
 
{ 
 
 
) ) ) ) )rG   r   c                   V    e Zd Z ej        d          Z G d dej                  ZdS )r   ro   )rr   c                       e Zd ZdZdZdS )#VirtualMachineVirtualDiskTable.Meta)r*   r+   r,   r   r8   r=   rr   )r*   r,   r   r8   N)r@   rA   rB   rD   rE   rF   rG   rH   rI   r      s        
 @rG   rI   N)r@   rA   rB   r   r   rr   r   rI   rF   rG   rH   r   r      sh        #g#"  G@ @ @ @ @$ @ @ @ @ @rG   r   )django_tables2rQ   django.utils.translationr   rS   dcim.tables.devicesr   netbox.tablesr   r   tenancy.tablesr   r   utilities.templatetags.helpersr
   virtualization.modelsr   r   r   __all__r   r   r   r   r   r   rF   rG   rH   <module>r      s       6 6 6 6 6 6 2 2 2 2 2 2 . . . . . . . . C C C C C C C C = = = = = = J J J J J J J J J J FI) I) I) I) I)-/BK I) I) I)`V V V V V) V V V6
 
 
 
 
%5 
 
 
8) ) ) ) ){ ) ) )<	@ 	@ 	@ 	@ 	@%5 	@ 	@ 	@ 	@ 	@rG   