Repository: netbox-community/netbox

Issue:
Add Extreme Networks SummitStack as port types
<!--
    Before opening a new issue, please search through the existing issues to
    see if your topic has already been addressed. Note that you may need to
    remove the "is:open" filter from the search bar to include closed issues.

    Check the appropriate type for your issue below by placing an x between the
    brackets. For assistance with installation issues, or for any other issues
    other than those listed below, please raise your topic for discussion on
    our mailing list:

        https://groups.google.com/forum/#!forum/netbox-discuss

    Please note that issues which do not fall under any of the below categories
    will be closed. Due to an excessive backlog of feature requests, we are
    not currently accepting any proposals which extend NetBox's feature scope.

    Do not prepend any sort of tag to your issue's title. An administrator will
    review your issue and assign labels as appropriate.
--->
### Issue type
[X] Feature request <!-- An enhancement of existing functionality -->
[ ] Bug report      <!-- Unexpected or erroneous behavior -->
[ ] Documentation   <!-- A modification to the documentation -->

<!--
    Please describe the environment in which you are running NetBox. (Be sure
    to verify that you are running the latest stable release of NetBox before
    submitting a bug report.) If you are submitting a bug report and have made
    any changes to the code base, please first validate that your bug can be
    recreated while running an official release.
-->
### Environment
* Python version:  3.5.2
* NetBox version:  2.3.5

<!--
    BUG REPORTS must include:
        * A list of the steps needed for someone else to reproduce the bug
        * A description of the expected and observed behavior
        * Any relevant error messages (screenshots may also help)

    FEATURE REQUESTS must include:
        * A detailed description of the proposed functionality
        * A use case for the new feature
        * A rough description of any necessary changes to the database schema
        * Any relevant third-party libraries which would be needed
-->
### Description
Adding support for Extreme stacking ports is fairly easy, just requires updating the constants.py to include the SummitStack, SummitStack128, and SummitStack512 port types under stacking.




Discussion:
I think it was unwise to have Cisco and Juniper stacking interfaces in the Netbox core, as this opens the door to every possible vendor's type of proprietary stacking port being requested.

A user-customisable table of interface types (similar to Device Type) would be the ideal solution.  Then if you have (say) GPON interfaces, you can document those too.

In the absence of that, I'd suggest adding a generic "Other" under Stacking Port.  That doesn't completely help people whose vendors have more than one port type, but there is already a free-form "Description" field that can say whether it's a type Foo or Bar.
My rule is that if it's a legitimately unique physical interface type in common usage, we'll add it. Sometimes "stacking" ports are really just standard Ethernet interfaces which have been designated for a specific function. Extreme appears to use a combination of standard and proprietary interfaces, so we can add the proprietary ones (taken from [this data sheet](http://www.usedcomp.de/pdf/Extreme-Networks-SummitStack-Virtual-Chassis-Stacking-Technology-Technical-Brief.pdf)):

* SummitStack
* SummitStack-128
* SummitStack-256
* SummitStack-512
I agree with @candlerb that having a table would be the ideal solution (this is how RackTables does it).  That would give room for having server interconnects (SAS HBA -> Disk Shelf). 
However, in the interim, I'd like to add support for the platform I spend all day on.  I'll update my PR with SummitStack-256.

Resolving patch:
diff --git a/netbox/dcim/constants.py b/netbox/dcim/constants.py
--- a/netbox/dcim/constants.py
+++ b/netbox/dcim/constants.py
@@ -93,11 +93,6 @@
 IFACE_FF_FLEXSTACK = 5100
 IFACE_FF_FLEXSTACK_PLUS = 5150
 IFACE_FF_JUNIPER_VCP = 5200
-IFACE_FF_EXTREME_SS = 5300
-IFACE_FF_EXTREME_SS128 = 5310
-IFACE_FF_EXTREME_SS256 = 5320
-IFACE_FF_EXTREME_SS512 = 5330
-
 # Other
 IFACE_FF_OTHER = 32767
 
@@ -173,10 +168,6 @@
             [IFACE_FF_FLEXSTACK, 'Cisco FlexStack'],
             [IFACE_FF_FLEXSTACK_PLUS, 'Cisco FlexStack Plus'],
             [IFACE_FF_JUNIPER_VCP, 'Juniper VCP'],
-            [IFACE_FF_EXTREME_SS, 'Extreme SummitStack'],
-            [IFACE_FF_EXTREME_SS128, 'Extreme SummitStack-128'],
-            [IFACE_FF_EXTREME_SS128, 'Extreme SummitStack-256'],
-            [IFACE_FF_EXTREME_SS512, 'Extreme SummitStack-512'],
         ]
     ],
     [


Test patch: