HEX
Server: LiteSpeed
System: Linux kapuas.iixcp.rumahweb.net 5.14.0-427.42.1.el9_4.x86_64 #1 SMP PREEMPT_DYNAMIC Fri Nov 1 14:58:02 EDT 2024 x86_64
User: mirz4654 (1666)
PHP: 8.1.33
Disabled: system,exec,escapeshellarg,escapeshellcmd,passthru,proc_close,proc_get_status,proc_nice,proc_open,proc_terminate,shell_exec,popen,pclose,dl,pfsockopen,leak,apache_child_terminate,posix_kill,posix_mkfifo,posix_setsid,posix_setuid,posix_setpgid,ini_alter,show_source,define_syslog_variables,symlink,syslog,openlog,openlog,closelog,ocinumcols,listen,chgrp,apache_note,apache_setenv,debugger_on,debugger_off,ftp_exec,dll,ftp,myshellexec,socket_bind,mail,posix_getwpuid
Upload Files
File: //lib/python3.9/site-packages/ansible_collections/dellemc/os6/roles/os6_vlan/templates/os6_vlan.j2
#jinja2: trim_blocks: True,lstrip_blocks: True
{#########################################

Purpose:
Configure VLAN Interface commands for os6 Devices

os6_vlan:
    tagged_members_append: False
    tagged_members_state: present
    vlan 2:
      name: "os6vlan"
      tagged_members:
        - port: Gi1/0/1
          state: present
        - port: Gi1/0/2
          state: absent
      untagged_members:
        - port: Gi1/0/3
          state: present
        - port: Gi1/0/4
          state: absent
      state: present

#########################################}
{% if os6_vlan is defined and os6_vlan -%}
{%- for key  in os6_vlan.keys() -%}
{% if 'vlan' in key %}
{%- set vlan_id = key.split(" ") -%}
{%- set vlan_vars = os6_vlan[key] -%}
  {% if vlan_vars.state is defined and vlan_vars.state=="absent" -%}
no vlan {{ vlan_id[1] }}
  {%- else -%}
vlan {{ vlan_id[1] }}
    {% if vlan_vars.name is defined -%}
      {% if vlan_vars.name-%}
name "{{ vlan_vars.name }}"
      {% else -%}
no name
      {% endif %}
    {% endif %}
exit
    {% if vlan_vars.untagged_members is defined -%}
      {%- for ports in vlan_vars.untagged_members -%}
        {% if ports.port is defined and ports.port -%}
          {% if ports.state is defined and ports.state == "absent" -%}
interface {{ ports.port }}
no switchport access vlan
          {% else -%}
interface {{ ports.port }}
switchport access vlan {{ vlan_id[1] }}
          {% endif -%}
        {% endif -%}
exit
      {% endfor -%}
    {% endif -%}
  {% endif -%}
{% endif -%}
{% endfor -%}
{%- set cmd_dict = {} -%}
{%- for key  in os6_vlan.keys() -%}
{% if 'vlan' in key %}
{%- set vlan_id = key.split(" ") -%}
{%- set vlan_vars = os6_vlan[key] -%}
{%- set tagged_vlans = [] -%}
{%- set tagged_members_present = [] -%}
{%- set tagged_members_absent= [] -%}
{% if vlan_vars.tagged_members is defined and vlan_vars.tagged_members -%}
      {%- for ports in vlan_vars.tagged_members -%}
        {% if ports.port is defined and ports.port -%}
        {%- set port = ports.port -%}
        {% if ports.state is defined and ports.state == 'absent' -%} 
          {% if port in cmd_dict and 'absent' in cmd_dict[port] -%}
            {%- set tmp_vlan_list=cmd_dict[port]['absent'] -%}
            {%- set x=tmp_vlan_list.extend([vlan_id[1]]) -%}
            {%- set x=cmd_dict[port].update({'absent': tmp_vlan_list}) -%}
          {%- elif port in cmd_dict and 'absent' not in cmd_dict[port] -%}
            {%- set x=cmd_dict[port].update({'absent': [vlan_id[1]]}) -%}
          {%- else -%}
            {%- set x=cmd_dict.update({port: {'absent': [vlan_id[1]]}}) -%}
          {% endif -%}
        {%- else -%}
          {% if port in cmd_dict and 'present' in cmd_dict[port] -%}
            {%- set tmp_vlan_list=cmd_dict[port]['present'] -%}
            {%- set x=tmp_vlan_list.extend([vlan_id[1]]) -%}
            {%- set x=cmd_dict[port].update({'present': tmp_vlan_list}) -%}
          {%- elif port in cmd_dict and 'present' not in cmd_dict[port] -%}
            {%- set x=cmd_dict[port].update({'present': [vlan_id[1]]}) -%}
          {%- else -%}
            {%- set x=cmd_dict.update({port: {'present': [vlan_id[1]]}}) -%}
          {% endif -%}
        {% endif -%} 
        {% endif -%} 
      {% endfor -%}
{% endif -%} 
{% endif -%} 
  {% endfor -%}
{%- for cmd in cmd_dict -%}
interface {{cmd}}
{% if 'tagged_members_state' in os6_vlan and os6_vlan['tagged_members_state']=='absent' %}
no switchport trunk allowed vlan
{% else %}
{% for cmd_item in cmd_dict[cmd] %}
{% if 'present' == cmd_item -%}
{% set sort_list =  cmd_dict[cmd]['present']| sort %}
{% elif 'absent' in cmd_item -%}
{% set sort_list =  cmd_dict[cmd]['absent']| sort %}
{% endif %}
{% set range_list = [] %}
{% set temp = {'temp': []} %}
{% for i in range(sort_list|length) %}
{% set x=temp['temp'].extend([sort_list[i]]) %}
{% if (i != sort_list|length -1 and sort_list[i+1]|int - sort_list[i]|int > 1) or (i == sort_list|length -1) %}
{% if temp['temp']|first != temp['temp']|last %}
{% set x=range_list.extend([temp['temp']|first|string+'-'+temp['temp']|last|string]) %}
{% set x=temp.update({'temp': []}) %}
{% else %}
{% set x=range_list.extend([temp['temp']|last|string]) %}
{% set x=temp.update({'temp': []}) %}
{% endif %}
{% endif %}
{% endfor %}
{% if 'present' == cmd_item -%}
{% if 'tagged_members_append' in os6_vlan and os6_vlan['tagged_members_append'] %}
switchport trunk allowed vlan add {{ range_list| join(',') }}
{% else %}
switchport trunk allowed vlan {{ range_list| join(',') }}
{% endif -%}
{% elif 'absent' == cmd_item -%}
switchport trunk allowed vlan remove {{ range_list| join(',') }}
{% endif -%}
{% endfor -%}
exit
{% endif -%}
{% endfor -%}
{% endif -%}