Ejemplo n.º 1
0
    def enums(self):
        name_version_enum_map = OrderedDefaultDict(lambda: OrderedDict())
        name_stable_map = {}

        for version in self.versions:
            logger.debug("version: {}".format(version.ir_version))
            of_protocol = loxi_globals.ir[version.ir_version]
            for enum in of_protocol.enums:
                name_version_enum_map[enum.name][version] = enum
                stable = (enum.params.get('stable') == 'True')

                logger.debug("Enum: %s stable: %s", enum.name, stable)

                if not enum.name in name_stable_map:
                    name_stable_map[enum.name] = stable
                else:
                    if name_stable_map[enum.name] != stable:
                        raise Exception("Inconsistent enum stability (should be caught " +\
                            " by IR)")

        enums = [ JavaEnum(name, name_stable_map[name], version_enum_map) for name, version_enum_map,
                        in name_version_enum_map.items() ]

        # inelegant - need java name here
        enums = [ enum for enum in enums if enum.name not in self.enum_blacklist ]
        return enums
Ejemplo n.º 2
0
    def __init__(self, c_name, version_enum_map):
        self.c_name = c_name

        self.name = "OF" + java_type.name_c_to_caps_camel("_".join(
            c_name.split("_")[1:]))

        # Port_features has constants that start with digits
        self.name_prefix = "PF_" if self.name == "OFPortFeatures" else ""

        self.version_enums = version_enum_map

        entry_name_version_value_map = OrderedDefaultDict(
            lambda: OrderedDict())
        for version, ir_enum in version_enum_map.items():
            for ir_entry in ir_enum.entries:
                entry_name_version_value_map[
                    ir_entry.name][version] = ir_entry.value

        self.entries = [
            JavaEnumEntry(self, name, version_value_map)
            for (name,
                 version_value_map) in entry_name_version_value_map.items()
        ]

        self.entries = [
            e for e in self.entries
            if e.name not in model.enum_entry_blacklist[self.name]
        ]
        self.package = "org.projectfloodlight.openflow.protocol"

        self.metadata = model.enum_metadata_map[self.name]
Ejemplo n.º 3
0
    def enums(self):
        name_version_enum_map = OrderedDefaultDict(lambda: OrderedDict())
        name_stable_map = {}

        for version in self.versions:
            logger.debug("version: {}".format(version.ir_version))
            of_protocol = loxi_globals.ir[version.ir_version]
            for enum in of_protocol.enums:
                name_version_enum_map[enum.name][version] = enum
                stable = (enum.params.get('stable') == 'True')

                logger.debug("Enum: %s stable: %s", enum.name, stable)

                if not enum.name in name_stable_map:
                    name_stable_map[enum.name] = stable
                else:
                    if name_stable_map[enum.name] != stable:
                        raise Exception("Inconsistent enum stability (should be caught " +\
                            " by IR)")

        enums = [
            JavaEnum(name, name_stable_map[name], version_enum_map)
            for name, version_enum_map, in name_version_enum_map.items()
        ]

        # inelegant - need java name here
        enums = [
            enum for enum in enums if enum.name not in self.enum_blacklist
        ]
        return enums
Ejemplo n.º 4
0
    def __init__(self, c_name, version_enum_map):
        self.c_name = c_name

        if c_name == "of_stats_types":
            self.name = "OFStatsType"
        else:
            self.name   = "OF" + java_type.name_c_to_caps_camel("_".join(c_name.split("_")[1:]))

        # Port_features has constants that start with digits
        self.name_prefix = "PF_" if self.name == "OFPortFeatures" else ""

        self.version_enums = version_enum_map

        entry_name_version_value_map = OrderedDefaultDict(lambda: OrderedDict())
        for version, ir_enum in version_enum_map.items():
            for ir_entry in ir_enum.entries:
                entry_name_version_value_map[ir_entry.name][version] = ir_entry.value

        self.entries = [ JavaEnumEntry(self, name, version_value_map)
                         for (name, version_value_map) in entry_name_version_value_map.items() ]

        self.entries = [ e for e in self.entries if e.name not in model.enum_entry_blacklist[self.name] ]
        self.package = "org.projectfloodlight.openflow.protocol"

        self.metadata = model.enum_metadata_map[self.name]
Ejemplo n.º 5
0
    def enums(self):
        name_version_enum_map = OrderedDefaultDict(lambda: OrderedDict())

        for version in self.versions:
            of_protocol = of_g.ir[version.int_version]
            for enum in of_protocol.enums:
                name_version_enum_map[enum.name][version] = enum

        enums = [ JavaEnum(name, version_enum_map) for name, version_enum_map,
                        in name_version_enum_map.items() ]

        # inelegant - need java name here
        enums = [ enum for enum in enums if enum.name not in self.enum_blacklist ]
        return enums
Ejemplo n.º 6
0
    def enums(self):
        name_version_enum_map = OrderedDefaultDict(lambda: OrderedDict())

        for version in self.versions:
            logger.info("version: {}".format(version.ir_version))
            of_protocol = loxi_globals.ir[version.ir_version]
            for enum in of_protocol.enums:
                name_version_enum_map[enum.name][version] = enum

        enums = [JavaEnum(name, version_enum_map) for name, version_enum_map, in name_version_enum_map.items()]

        # inelegant - need java name here
        enums = [enum for enum in enums if enum.name not in self.enum_blacklist]
        return enums
Ejemplo n.º 7
0
    def __init__(self, c_name, stable, version_enum_map):
        self.c_name = c_name
        self.stable = stable

        self.name = "OF" + java_type.name_c_to_caps_camel("_".join(
            c_name.split("_")[1:]))

        # Port_features has constants that start with digits
        self.name_prefix = "PF_" if self.name == "OFPortFeatures" else ""

        self.version_enums = version_enum_map

        entry_name_version_value_map = OrderedDefaultDict(
            lambda: OrderedDict())
        for version, ir_enum in version_enum_map.items():
            for ir_entry in ir_enum.entries:
                entry_name_version_value_map[
                    ir_entry.name][version] = ir_entry.value

        self.entries = [
            JavaEnumEntry(self, name, version_value_map)
            for (name,
                 version_value_map) in entry_name_version_value_map.items()
        ]

        self.entries = [
            e for e in self.entries
            if e.name not in model.enum_entry_blacklist[self.name]
        ]
        self.package = "org.projectfloodlight.openflow.protocol"

        static_metadata = model.enum_metadata_map[self.name]
        if self.stable:
            # need this to look up wire_type, which does not matter
            any_version = version_enum_map.keys()[0]
            # if this is a 'stable' enum, i.e., its value won't change, add
            # a "Metadata" (virtual) field "StableValue" to it that returns
            # its wirevalue.
            stable_value = JavaModel.OFEnumPropertyMetadata(
                "StableValue",
                self.wire_type(any_version),
                value=lambda entry: entry.stable_value)

            self.metadata = JavaModel.OFEnumMetadata(
                properties=static_metadata.properties + (stable_value, ),
                to_string=static_metadata.to_string)
        else:
            self.metadata = static_metadata
Ejemplo n.º 8
0
    def enums(self):
        name_version_enum_map = OrderedDefaultDict(lambda: OrderedDict())

        for version in self.versions:
            logger.info("version: {}".format(version.ir_version))
            of_protocol = loxi_globals.ir[version.ir_version]
            for enum in of_protocol.enums:
                name_version_enum_map[enum.name][version] = enum

        enums = [
            JavaEnum(name, version_enum_map)
            for name, version_enum_map, in name_version_enum_map.items()
        ]

        # inelegant - need java name here
        enums = [
            enum for enum in enums if enum.name not in self.enum_blacklist
        ]
        return enums
Ejemplo n.º 9
0
    def __init__(self, c_name, stable, version_enum_map):
        self.c_name = c_name
        self.stable = stable

        self.name   = "OF" + java_type.name_c_to_caps_camel("_".join(c_name.split("_")[1:]))

        # Port_features has constants that start with digits
        self.name_prefix = "PF_" if self.name == "OFPortFeatures" else ""

        self.version_enums = version_enum_map

        entry_name_version_value_map = OrderedDefaultDict(lambda: OrderedDict())
        for version, ir_enum in version_enum_map.items():
            for ir_entry in ir_enum.entries:
                entry_name_version_value_map[ir_entry.name][version] = ir_entry.value

        self.entries = [ JavaEnumEntry(self, name, version_value_map)
                         for (name, version_value_map) in entry_name_version_value_map.items() ]

        self.entries = [ e for e in self.entries if e.name not in model.enum_entry_blacklist[self.name] ]
        self.package = "org.projectfloodlight.openflow.protocol"

        static_metadata = model.enum_metadata_map[self.name]
        if self.stable:
            # need this to look up wire_type, which does not matter
            any_version = version_enum_map.keys()[0]
            # if this is a 'stable' enum, i.e., its value won't change, add
            # a "Metadata" (virtual) field "StableValue" to it that returns
            # its wirevalue.
            stable_value = JavaModel.OFEnumPropertyMetadata("StableValue",
                    self.wire_type(any_version),
                    value = lambda entry: entry.stable_value)

            self.metadata = JavaModel.OFEnumMetadata(
                              properties=static_metadata.properties + (stable_value, ),
                              to_string=static_metadata.to_string
                            )
        else:
            self.metadata = static_metadata