Пример #1
0
 def read_all_vlan_info(self) -> Vlans:
     vids = self.get_list_keyval(".1.3.6.1.2.1.17.7.1.4.3.1.1")
     for vid_name, vid in vids:
         vid = safe_int(vid)
         if vid in (0, 1):
             continue
         yield Vlan(vid=vid, title=vid_name)
Пример #2
0
 def read_all_vlan_info(self) -> Vlans:
     vid = 1
     while True:
         res = self.get_next(".1.3.6.1.2.1.17.7.1.4.3.1.1.%d" % vid)
         vid = safe_int(res.value[5:])
         if vid == 1:
             continue
         if vid == 0:
             return
         yield Vlan(vid=vid, title=res.value)
Пример #3
0
 def read_all_vlan_info(self) -> Vlans:
     snmp_vid = 100000
     while True:
         res = self.get_next(".1.3.6.1.2.1.2.2.1.1.%d" % snmp_vid)
         if res.snmp_type != "INTEGER":
             break
         vid = snmp_vid = safe_int(res.value)
         if vid < 100000 or vid > 104095:
             break
         vid = (vid - 100000) + 1
         name = self._get_vid_name(vid=vid)
         yield Vlan(vid=vid, title=name)
Пример #4
0
 def _calc_ret(vlan_untagged_egress_oid, vlan_egress_bitmap,
               table_no) -> Vlans:
     vlan_untagged_egress = self.get_item(vlan_untagged_egress_oid)
     vlan_untagged_egress = list(
         self.parse_eltex_vlan_map(vlan_untagged_egress,
                                   table=table_no))
     is_native = next(
         (v == 1
          for i, v in enumerate(vlan_untagged_egress, 1) if i >= port),
         False)
     return (Vlan(vid=vid,
                  title=self._get_vid_name(vid=vid),
                  native=is_native)
             for vid in self.parse_eltex_vlan_map(vlan_egress_bitmap,
                                                  table=table_no))
Пример #5
0
    def apply_vlan_config(self, serializer):
        device = self.device
        if not device:
            raise DeviceImplementationError("device could not found")
        port_num = serializer.data.get("port_num")
        if not port_num:
            raise DeviceImplementationError("port_num field required")

        mng = device.get_manager_object_switch()

        vlans_data = serializer.data.get("vlans")
        if not vlans_data:
            raise DeviceImplementationError("vlans field required")

        vlans_gen = (Vlan(**v) for v in vlans_data)

        mng.attach_vlans_to_port(vlan_list=vlans_gen, port_num=port_num)
Пример #6
0
 def read_port_vlan_info(self, port: int) -> Vlans:
     if port > self.ports_len or port < 1:
         raise ValueError("Port must be in range 1-%d" % self.ports_len)
     vids = self.get_list_keyval(".1.3.6.1.2.1.17.7.1.4.3.1.1")
     for vid_name, vid in vids:
         vid = safe_int(vid)
         if vid in (0, 1):
             continue
         member_ports = self.get_item(".1.3.6.1.2.1.17.7.1.4.3.1.2.%d" %
                                      vid)
         if not member_ports:
             return
         member_ports = self._make_ports_map(member_ports[:4])
         if not member_ports[port]:
             # if port num is not <port>
             continue
         name = self._get_vid_name(vid)
         yield Vlan(vid=vid, title=name)
Пример #7
0
 def read_port_vlan_info(self, port: int) -> Vlans:
     if port > self.ports_len or port < 1:
         raise ValueError("Port must be in range 1-%d" % self.ports_len)
     vids = self.get_list_keyval(".1.3.6.1.4.1.171.10.134.1.1.7.6.1.1")
     native_vid = self.get_item(".1.3.6.1.4.1.171.10.134.1.1.7.7.1.1.%d" %
                                port)
     if not native_vid:
         return
     for vidname, vid in vids:
         vid = safe_int(vid)
         if vid in (0, 1):
             continue
         member_ports = self.get_item(
             ".1.3.6.1.4.1.171.10.134.1.1.7.6.1.2.%d" % vid)
         if member_ports is None:
             return
         member_ports = self._make_ports_map(member_ports[:4])
         if not member_ports[port - 1]:
             # if port num is not <port>
             continue
         yield Vlan(vid=vid, title=vidname, native=(vid == native_vid))
Пример #8
0
 def read_port_vlan_info(self, port: int) -> Vlans:
     if port > self.ports_len or port < 1:
         raise DeviceImplementationError("Port must be in range 1-%d" %
                                         self.ports_len)
     vid = 1
     while True:
         member_ports, vid = self.get_next_keyval(
             ".1.3.6.1.2.1.17.7.1.4.3.1.2.%d" % vid)
         if not member_ports:
             break
         if isinstance(member_ports, str):
             member_ports = member_ports.encode()
         vid = safe_int(vid)
         if vid in (0, 1):
             break
         member_ports = self._make_ports_map(member_ports[:4])
         if not member_ports[port - 1]:
             continue
         untagged_members = self.get_item("1.3.6.1.2.1.17.7.1.4.3.1.4.%d" %
                                          vid)
         untagged_members = self._make_ports_map(untagged_members[:4])
         name = self._get_vid_name(vid)
         yield Vlan(vid=vid, title=name, native=untagged_members[port - 1])
Пример #9
0
 def read_all_vlan_info(self) -> Vlans:
     for vid, vname in self.get_list_keyval(
             ".1.3.6.1.4.1.3902.1015.20.2.1.2"):
         yield Vlan(vid=int(vid), title=vname)