|
| 1 | +package edgeos |
| 2 | + |
| 3 | +import "github.com/ffddorf/confgen/netbox/models" |
| 4 | + |
| 5 | +type InterfaceType string |
| 6 | + |
| 7 | +const ( |
| 8 | + InterfaceTypeBonding InterfaceType = "bonding" // Bonding interface name |
| 9 | + InterfaceTypeBridge InterfaceType = "bridge" // Bridge interface name |
| 10 | + InterfaceTypeEthernet InterfaceType = "ethernet" // Ethernet interface name |
| 11 | + InterfaceTypeInput InterfaceType = "input" // Input functional block (IFB) interface name |
| 12 | + InterfaceTypeIpv6Tunnel InterfaceType = "ipv6-tunnel" // IPv6 Tunnel interface |
| 13 | + InterfaceTypeL2tpClient InterfaceType = "l2tp-client" // L2TP client interface name |
| 14 | + InterfaceTypeL2tpv3 InterfaceType = "l2tpv3" // L2TPv3 interface |
| 15 | + InterfaceTypeLoopback InterfaceType = "loopback" // Loopback interface name |
| 16 | + InterfaceTypeOpenvpn InterfaceType = "openvpn" // OpenVPN tunnel interface name |
| 17 | + InterfaceTypePptpClient InterfaceType = "pptp-client" // PPTP client interface name |
| 18 | + InterfaceTypePseudoEthernet InterfaceType = "pseudo-ethernet" // Pseudo Ethernet device name |
| 19 | + InterfaceTypeSwitch InterfaceType = "switch" // Switch interface name |
| 20 | + InterfaceTypeTunnel InterfaceType = "tunnel" // Tunnel interface |
| 21 | + InterfaceTypeVti InterfaceType = "vti" // Virtual Tunnel interface |
| 22 | + InterfaceTypeWirelessmodem InterfaceType = "wirelessmodem" // Wireless modem interface name |
| 23 | +) |
| 24 | + |
| 25 | +func InterfaceTypeFromNetbox(netboxType models.DcimInterfaceTypeChoices) (edgeosType InterfaceType, ok bool) { |
| 26 | + ok = true |
| 27 | + switch netboxType { |
| 28 | + case models.DcimInterfaceTypeChoicesA100baseTx, |
| 29 | + models.DcimInterfaceTypeChoicesA1000baseT, |
| 30 | + models.DcimInterfaceTypeChoicesA25gbaseT, |
| 31 | + models.DcimInterfaceTypeChoicesA5gbaseT, |
| 32 | + models.DcimInterfaceTypeChoicesA10gbaseT, |
| 33 | + models.DcimInterfaceTypeChoicesA10gbaseCx4, |
| 34 | + models.DcimInterfaceTypeChoicesA1000baseXGbic, |
| 35 | + models.DcimInterfaceTypeChoicesA1000baseXSfp, |
| 36 | + models.DcimInterfaceTypeChoicesA10gbaseXSfpp, |
| 37 | + models.DcimInterfaceTypeChoicesA10gbaseXXfp, |
| 38 | + models.DcimInterfaceTypeChoicesA10gbaseXXenpak, |
| 39 | + models.DcimInterfaceTypeChoicesA10gbaseXX2, |
| 40 | + models.DcimInterfaceTypeChoicesA25gbaseXSfp28, |
| 41 | + models.DcimInterfaceTypeChoicesA50gbaseXSfp56, |
| 42 | + models.DcimInterfaceTypeChoicesA40gbaseXQsfpp, |
| 43 | + models.DcimInterfaceTypeChoicesA50gbaseXSfp28, |
| 44 | + models.DcimInterfaceTypeChoicesA100gbaseXCfp, |
| 45 | + models.DcimInterfaceTypeChoicesA100gbaseXCfp2, |
| 46 | + models.DcimInterfaceTypeChoicesA200gbaseXCfp2, |
| 47 | + models.DcimInterfaceTypeChoicesA100gbaseXCfp4, |
| 48 | + models.DcimInterfaceTypeChoicesA100gbaseXCpak, |
| 49 | + models.DcimInterfaceTypeChoicesA100gbaseXQsfp28, |
| 50 | + models.DcimInterfaceTypeChoicesA200gbaseXQsfp56, |
| 51 | + models.DcimInterfaceTypeChoicesA400gbaseXQsfpdd, |
| 52 | + models.DcimInterfaceTypeChoicesA400gbaseXOsfp, |
| 53 | + models.DcimInterfaceTypeChoicesA1gfcSfp, |
| 54 | + models.DcimInterfaceTypeChoicesA2gfcSfp, |
| 55 | + models.DcimInterfaceTypeChoicesA4gfcSfp, |
| 56 | + models.DcimInterfaceTypeChoicesA8gfcSfpp, |
| 57 | + models.DcimInterfaceTypeChoicesA16gfcSfpp, |
| 58 | + models.DcimInterfaceTypeChoicesA32gfcSfp28, |
| 59 | + models.DcimInterfaceTypeChoicesA64gfcQsfpp, |
| 60 | + models.DcimInterfaceTypeChoicesA128gfcQsfp28: |
| 61 | + edgeosType = InterfaceTypeEthernet |
| 62 | + case models.DcimInterfaceTypeChoicesBridge: |
| 63 | + edgeosType = InterfaceTypeBridge |
| 64 | + case models.DcimInterfaceTypeChoicesLag: |
| 65 | + edgeosType = InterfaceTypeBonding |
| 66 | + case models.DcimInterfaceTypeChoicesVirtual: |
| 67 | + edgeosType = InterfaceTypeLoopback |
| 68 | + default: |
| 69 | + ok = false |
| 70 | + } |
| 71 | + return |
| 72 | +} |
0 commit comments