def from_lldptool_cee(cls, tlvs):
     """
     :rtype: DCBModel
     """
     lldptool_cee = tlvs['CEE DCBX TLV']['Application TLV:']
     # _ = {'Applications': {('Ethertype', 35078): {8: True},
     #                              ('Ethertype', 35092): {8: True},
     #                              ('TCP/UDP Port', 3260): {16: True}}}
     applications = {}
     for app_entry, priority_mask in lldptool_cee['Applications'].iteritems():
         selector, protocol = app_entry
         priorities = bitmask_to_dict(priority_mask)
         for up in priorities:
             applications[AppPriorityEntry(priority=up,
                                           selector=cls.selectors[
                                           selector],
                                           protocol=protocol)] = True
     return cls(
         control=DCBControlModel(
             enable=True,
             # advertise is always true because we are either transmitting
             #  or receiving when displayed by lldptool
             advertise=True,
             willing=lldptool.yes_no_to_bool(lldptool_cee["Willing"])),
         data=AppModel(applications=applications))
 def from_lldptool_ieee(cls, tlvs):
     """
     :rtype: DCBModel
     """
     lldptool_ieee = tlvs['IEEE 8021QAZ PFC TLV']
     return cls(
         control=DCBControlModel(
             enable=True,
             # advertise is always true because we are either transmitting
             #  or receiving when displayed by lldptool
             advertise=True,
             willing=lldptool.yes_no_to_bool(lldptool_ieee["Willing"])),
         data=ETSModel(
             enabled=lldptool_ieee['PFC enabled'],
             max_tcs=lldptool_ieee["PFC capable traffic classes"]))
 def from_lldptool_ieee(cls, tlvs):
     """
     :rtype: DCBModel
     """
     lldptool_ieee = tlvs['IEEE 8021QAZ ETS Configuration TLV']
     return cls(
         control=DCBControlModel(
             enable=True,
             # advertise is always true because we are either transmitting
             #  or receiving when displayed by lldptool
             advertise=True,
             willing=lldptool.yes_no_to_bool(lldptool_ieee["Willing"])),
         data=ETSModel(
             up2tc=lldptool.up2tc(lldptool_ieee['PRIO_MAP']),
             tcbw=dcbtool.percentages(lldptool_ieee['TC Bandwidth']),
             tsa=lldptool.tsa(lldptool_ieee["TSA_MAP"])))
 def from_lldptool_cee(cls, tlvs):
     """
     :rtype: DCBModel
     """
     lldptool_cee = tlvs['CEE DCBX TLV']['Priority Groups TLV:']
     tsa_map, up2tc = DCBTool.cee_to_ieee_ets(
         lldptool_cee['PGID Priorities'])
     return cls(
         control=DCBControlModel(
             enable=True,
             # advertise is always true because we are either transmitting
             #  or receiving when displayed by lldptool
             advertise=True,
             willing=lldptool.yes_no_to_bool(lldptool_cee["Willing"])),
         data=ETSModel(
             up2tc=up2tc,
             tcbw=lldptool_cee['PGID Percentages'],
             tsa=tsa_map))