diff --git a/.github/workflows/develop.yml b/.github/workflows/develop.yml index b52d2745d..57b11b1e4 100644 --- a/.github/workflows/develop.yml +++ b/.github/workflows/develop.yml @@ -13,8 +13,12 @@ jobs: # Fetch all history for all tags and branches with: fetch-depth: 0 + - name: Set up Python 3.8 + uses: actions/setup-python@v2 + with: + python-version: 3.8 - # Test + # Test (steps from pytest workflow) - name: Build docker images run: | docker-compose build @@ -23,6 +27,19 @@ jobs: run: | docker run -v $PWD:/coverage --rm socs sh -c "COVERAGE_FILE=/coverage/.coverage.docker python3 -m pytest -p no:wampy --cov /app/socs/socs/ ./tests/" + - name: Report test coverage + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + run: | + pip install coveralls + coverage combine + coverage report + coveralls + + - name: Test documentation build + run: | + docker run --rm socs sh -c "make -C docs/ html" + # Dockerize - name: Build and push development docker image env: diff --git a/.github/workflows/official-docker-images.yml b/.github/workflows/official-docker-images.yml index d5d0cce21..5f658601d 100644 --- a/.github/workflows/official-docker-images.yml +++ b/.github/workflows/official-docker-images.yml @@ -13,16 +13,25 @@ jobs: # Fetch all history for all tags and branches with: fetch-depth: 0 + - name: Set up Python 3.8 + uses: actions/setup-python@v2 + with: + python-version: 3.8 - # Test + # Build - name: Build docker images run: | docker-compose build + # Test (already been run by pytest workflow, but they don't take long...) - name: Test with pytest wtihin a docker container run: | docker run -v $PWD:/coverage --rm socs sh -c "COVERAGE_FILE=/coverage/.coverage.docker python3 -m pytest -p no:wampy --cov /app/socs/socs/ ./tests/" + - name: Test documentation build + run: | + docker run --rm socs sh -c "make -C docs/ html" + # Dockerize - name: Build and push official docker image env: diff --git a/.github/workflows/pytest.yml b/.github/workflows/pytest.yml new file mode 100644 index 000000000..8e60f138b --- /dev/null +++ b/.github/workflows/pytest.yml @@ -0,0 +1,38 @@ +name: Run Tests + +on: + push: + branches-ignore: [ develop ] + pull_request: + +jobs: + build: + runs-on: ubuntu-18.04 + + steps: + - uses: actions/checkout@v2 + - name: Set up Python 3.8 + uses: actions/setup-python@v2 + with: + python-version: 3.8 + + - name: Build docker images + run: | + docker-compose build + + - name: Test with pytest wtihin a docker container + run: | + docker run -v $PWD:/coverage --rm socs sh -c "COVERAGE_FILE=/coverage/.coverage.docker python3 -m pytest -p no:wampy --cov /app/socs/socs/ ./tests/" + + - name: Report test coverage + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + run: | + pip install coveralls + coverage combine + coverage report + coveralls + + - name: Test documentation build + run: | + docker run --rm socs sh -c "make -C docs/ html" diff --git a/.travis.yml b/.travis.yml deleted file mode 100644 index 2d898a0a4..000000000 --- a/.travis.yml +++ /dev/null @@ -1,35 +0,0 @@ -dist: xenial - -services: - - docker - -language: python -python: - - "3.6" - -stages: - - test - -jobs: - include: - - stage: test - install: - # Build the docker images with docker-compose - - docker-compose build - - script: - # Run tests via pytest runner with coverage in a docker container - - docker run -v $PWD:/coverage --rm socs sh -c "COVERAGE_FILE=/coverage/.coverage.docker python3 -m pytest -p no:wampy --cov /app/socs/socs/ ./tests/" - - after_success: - # Install coveralls - - pip install coveralls - - # Combine results from suffixed .coverage.docker to fix paths from container testing - - coverage combine - - # Show report with updated paths - - coverage report - - # Publish results to coveralls - - coveralls diff --git a/Dockerfile b/Dockerfile index 04bfae74f..7fd67d5f3 100644 --- a/Dockerfile +++ b/Dockerfile @@ -2,7 +2,7 @@ # A container setup with an installation of socs. # Use the ocs image as a base -FROM simonsobs/ocs:v0.6.0-67-g5993b6a-dev +FROM simonsobs/ocs:v0.7.1 # Copy the current directory contents into the container at /app COPY . /app/socs/ diff --git a/README.rst b/README.rst index 858ecf497..934067c74 100644 --- a/README.rst +++ b/README.rst @@ -2,8 +2,9 @@ SOCS - Simons Observatory Control System ======================================== -.. image:: https://travis-ci.com/simonsobs/socs.svg?branch=master - :target: https://travis-ci.com/simonsobs/socs +.. image:: https://img.shields.io/github/workflow/status/simonsobs/socs/Build%20Develop%20Images + :target: https://github.com/simonsobs/socs/actions?query=workflow%3A%22Build+Develop+Images%22 + :alt: GitHub Workflow Status .. image:: https://readthedocs.org/projects/socs/badge/?version=latest :target: https://socs.readthedocs.io/en/latest/?badge=latest diff --git a/agents/bluefors/Dockerfile b/agents/bluefors/Dockerfile index 04f741e43..33cbd51d0 100644 --- a/agents/bluefors/Dockerfile +++ b/agents/bluefors/Dockerfile @@ -11,7 +11,7 @@ WORKDIR /app/socs/agents/bluefors/ COPY . . # Run registry on container startup -ENTRYPOINT ["python3", "-u", "bluefors_log_tracker.py"] +ENTRYPOINT ["dumb-init", "python3", "-u", "bluefors_log_tracker.py"] # Sensible default instance-id CMD ["--instance-id=bluefors"] diff --git a/agents/bluefors/bluefors_log_tracker.py b/agents/bluefors/bluefors_log_tracker.py index 3fac21b8e..65a700247 100644 --- a/agents/bluefors/bluefors_log_tracker.py +++ b/agents/bluefors/bluefors_log_tracker.py @@ -128,11 +128,13 @@ def __init__(self, tracker): 'tc400errorcode_2', 'tc400ovtempelec_2', 'tc400ovtemppump_2', 'tc400setspdatt_2', 'tc400pumpaccel_2', 'tc400commerr_2', + 'nxdsf', 'nxdsct', 'nxdst', 'nxdsbs', 'nxdstrs', 'ctrl_pres', 'cpastate', 'cparun', 'cpawarn', 'cpaerr', 'cpatempwi', 'cpatempwo', 'cpatempo', 'cpatemph', 'cpalp', 'cpalpa', 'cpahp', 'cpahpa', 'cpadp', 'cpacurrent', 'cpahours', 'cpapscale', - 'cpatscale', 'cpasn', 'cpamodel'], + 'cpascale', 'cpatscale', 'cpasn', 'cpamodel', + 'ctrl_pres_ok', 'ctr_pressure_ok'], 'heater': ["a1_u", "a1_r_lead", "a1_r_htr", "a2_u", "a2_r_lead", "a2_r_htr", "htr", "htr_range"]} @@ -235,6 +237,11 @@ def _parse_multi_value_log(self, new_line, log_type, log_name): for pattern in self.patterns[log_type]: regex = re.compile(rf'{pattern},([0-9\.\+\-E]+)') m = regex.search(new_line) + + # skip patterns that don't exist in this log + if not m: + continue + if log_type == 'channels': data_array[pattern.replace('-', '_')] = int(m.group(1)) else: diff --git a/agents/cryomech_cpa/Dockerfile b/agents/cryomech_cpa/Dockerfile index 8daeef945..e7b5c3a79 100644 --- a/agents/cryomech_cpa/Dockerfile +++ b/agents/cryomech_cpa/Dockerfile @@ -15,7 +15,7 @@ COPY . /app/socs/agents/cryomech-cpa/ # Run agent on container startup -ENTRYPOINT ["python3", "-u", "cryomech_cpa_agent.py"] +ENTRYPOINT ["dumb-init", "python3", "-u", "cryomech_cpa_agent.py"] -CMD ["--site-hub=ws://sisock-crossbar:8001/ws", \ - "--site-http=http://sisock-crossbar:8001/call"] +CMD ["--site-hub=ws://crossbar:8001/ws", \ + "--site-http=http://crossbar:8001/call"] diff --git a/agents/labjack/Dockerfile b/agents/labjack/Dockerfile index 1fee25fdf..c4bce4977 100644 --- a/agents/labjack/Dockerfile +++ b/agents/labjack/Dockerfile @@ -9,10 +9,23 @@ WORKDIR /app/socs/agents/labjack/ ## Copy this agent into the app/agents directory COPY . . +RUN pip3 install -r requirements.txt + +# Install ljm module from labjack, copied from the labjack ljm dockerfile +# located at https://hub.docker.com/r/labjack/ljm/dockerfile +RUN apt-get update +RUN apt-get install -y wget python3-pip libusb-1.0-0-dev udev + +RUN wget https://labjack.com/sites/default/files/software/labjack_ljm_minimal_2020_03_30_x86_64_beta.tar.gz +RUN tar zxf ./labjack_ljm_minimal_2020_03_30_x86_64_beta.tar.gz +RUN ./labjack_ljm_minimal_2020_03_30_x86_64/labjack_ljm_installer.run -- --no-restart-device-rules + +RUN pip3 install --no-cache-dir https://labjack.com/sites/default/files/software/Python_LJM_2019_04_03.zip + # Run registry on container startup -ENTRYPOINT ["python3", "-u", "labjack_agent.py"] +ENTRYPOINT ["dumb-init", "python3", "-u", "labjack_agent.py"] # Sensible default arguments -CMD ["--site-hub=ws://sisock-crossbar:8001/ws", \ - "--site-http=http://sisock-crossbar:8001/call"] +CMD ["--site-hub=ws://crossbar:8001/ws", \ + "--site-http=http://crossbar:8001/call"] diff --git a/agents/labjack/labjack_agent.py b/agents/labjack/labjack_agent.py index 07ea5f181..bbcb50f1f 100644 --- a/agents/labjack/labjack_agent.py +++ b/agents/labjack/labjack_agent.py @@ -152,7 +152,7 @@ def __init__(self, agent, ip_address, active_channels, function_file, if active_channels == 'T7-all': self.sensors = ['Channel_{}'.format(i+1) for i in range(14)] elif active_channels == 'T4-all': - self.sensors = ['Channel_{}'.format(i+1) for i in range(12)] + self.sensors = ['Channel_{}'.format(i+1) for i in range(12)] else: self.sensors = ['Channel_{}'.format(ch) for ch in active_channels] self.ljf = LabJackFunctions() @@ -167,6 +167,7 @@ def __init__(self, agent, ip_address, active_channels, function_file, function_file) with open(function_file_path, 'r') as stream: self.functions = yaml.safe_load(stream) + print(f"Applying conversion functions: {self.functions}") self.initialized = False self.take_data = False diff --git a/agents/labjack/requirements.txt b/agents/labjack/requirements.txt new file mode 100644 index 000000000..4b5b86f79 --- /dev/null +++ b/agents/labjack/requirements.txt @@ -0,0 +1,2 @@ +numexpr +scipy diff --git a/agents/lakeshore240/Dockerfile b/agents/lakeshore240/Dockerfile index 7a6600ba7..0a3e145e6 100644 --- a/agents/lakeshore240/Dockerfile +++ b/agents/lakeshore240/Dockerfile @@ -11,7 +11,7 @@ WORKDIR /app/socs/agents/lakeshore240/ COPY . . # Run registry on container startup -ENTRYPOINT ["python3", "-u", "LS240_agent.py"] +ENTRYPOINT ["dumb-init", "python3", "-u", "LS240_agent.py"] -CMD ["--site-hub=ws://sisock-crossbar:8001/ws", \ - "--site-http=http://sisock-crossbar:8001/call"] +CMD ["--site-hub=ws://crossbar:8001/ws", \ + "--site-http=http://crossbar:8001/call"] diff --git a/agents/lakeshore240/LS240_agent.py b/agents/lakeshore240/LS240_agent.py index 2ed96a0b4..340a9e766 100644 --- a/agents/lakeshore240/LS240_agent.py +++ b/agents/lakeshore240/LS240_agent.py @@ -193,6 +193,21 @@ def start_acq(self, session, params=None): Method to start data acquisition process. + The most recent data collected is stored in session.data in the + structure:: + + >>> session.data + {"fields": + {"Channel_1": {"T": 99.26, "V": 99.42}, + "Channel_2": {"T": 99.54, "V": 101.06}, + "Channel_3": {"T": 100.11, "V":100.79}, + "Channel_4": {"T": 98.49, "V": 100.77}, + "Channel_5": {"T": 97.75, "V": 101.45}, + "Channel_6": {"T": 99.58, "V": 101.75}, + "Channel_7": {"T": 98.03, "V": 100.82}, + "Channel_8": {"T": 101.14, "V":101.01}}, + "timestamp":1601925677.6914878} + Args: sampling_frequency (float): Sampling frequency for data collection. Defaults to 2.5 Hz @@ -218,20 +233,34 @@ def start_acq(self, session, params=None): self.take_data = True + session.data = {"fields": {}} + while self.take_data: + current_time = time.time() data = { - 'timestamp': time.time(), + 'timestamp': current_time, 'block_name': 'temps', 'data': {} } for chan in self.module.channels: + # Read sensor on channel chan_string = "Channel_{}".format(chan.channel_num) - data['data'][chan_string + '_T'] = chan.get_reading(unit='K') - data['data'][chan_string + '_V'] = chan.get_reading(unit='S') + temp_reading = chan.get_reading(unit='K') + sensor_reading = chan.get_reading(unit='S') + + # For data feed + data['data'][chan_string + '_T'] = temp_reading + data['data'][chan_string + '_V'] = sensor_reading + + # For session.data + field_dict = {chan_string: {"T": temp_reading, "V": sensor_reading}} + session.data['fields'].update(field_dict) self.agent.publish_to_feed('temperatures', data) + session.data.update({'timestamp': current_time}) + time.sleep(sleep_time) self.agent.feeds['temperatures'].flush_buffer() diff --git a/agents/lakeshore372/Dockerfile b/agents/lakeshore372/Dockerfile index 6c9154b81..0661962e9 100644 --- a/agents/lakeshore372/Dockerfile +++ b/agents/lakeshore372/Dockerfile @@ -11,8 +11,8 @@ WORKDIR /app/socs/agents/lakeshore372/ COPY . . # Run registry on container startup -ENTRYPOINT ["python3", "-u", "LS372_agent.py"] +ENTRYPOINT ["dumb-init", "python3", "-u", "LS372_agent.py"] # Sensible default arguments -CMD ["--site-hub=ws://sisock-crossbar:8001/ws", \ - "--site-http=http://sisock-crossbar:8001/call"] +CMD ["--site-hub=ws://crossbar:8001/ws", \ + "--site-http=http://crossbar:8001/call"] diff --git a/agents/lakeshore372/LS372_agent.py b/agents/lakeshore372/LS372_agent.py index c78f97de7..47cecde84 100644 --- a/agents/lakeshore372/LS372_agent.py +++ b/agents/lakeshore372/LS372_agent.py @@ -175,6 +175,25 @@ def init_lakeshore_task(self, session, params=None): return True, 'Lakeshore module initialized.' def start_acq(self, session, params=None): + """acq(params=None) + + Method to start data acquisition process. + + The most recent data collected is stored in session.data in the + structure:: + + >>> session.data + {"fields": + {"Channel_05": {"T": 293.644, "R": 33.752, "timestamp": 1601924482.722671}, + "Channel_06": {"T": 0, "R": 1022.44, "timestamp": 1601924499.5258765}, + "Channel_08": {"T": 0, "R": 1026.98, "timestamp": 1601924494.8172355}, + "Channel_01": {"T": 293.41, "R": 108.093, "timestamp": 1601924450.9315426}, + "Channel_02": {"T": 293.701, "R": 30.7398, "timestamp": 1601924466.6130798} + } + } + + """ + with self._acq_proc_lock.acquire_timeout(timeout=0, job='acq') \ as acq_acquired, \ @@ -193,6 +212,8 @@ def start_acq(self, session, params=None): previous_channel = None last_release = time.time() + session.data = {"fields": {}} + self.take_data = True while self.take_data: @@ -258,21 +279,35 @@ def start_acq(self, session, params=None): # Track the last channel we measured previous_channel = self.module.get_active_channel() + current_time = time.time() data = { - 'timestamp': time.time(), + 'timestamp': current_time, 'block_name': active_channel.name, 'data': {} } # Collect both temperature and resistance values from each Channel channel_str = active_channel.name.replace(' ', '_') - data['data'][channel_str + '_T'] = \ - self.module.get_temp(unit='kelvin', chan=active_channel.channel_num) - data['data'][channel_str + '_R'] = \ - self.module.get_temp(unit='ohms', chan=active_channel.channel_num) + temp_reading = self.module.get_temp(unit='kelvin', + chan=active_channel.channel_num) + res_reading = self.module.get_temp(unit='ohms', + chan=active_channel.channel_num) + + # For data feed + data['data'][channel_str + '_T'] = temp_reading + data['data'][channel_str + '_R'] = res_reading + + # For session.data + field_dict = {channel_str: {"T": temp_reading, + "R": res_reading, + "timestamp": current_time}} + + session.data['fields'].update(field_dict) session.app.publish_to_feed('temperatures', data) + self.log.debug("{data}", data=session.data) + return True, 'Acquisition exited cleanly.' def stop_acq(self, session, params=None): diff --git a/agents/meinberg_m1000/Dockerfile b/agents/meinberg_m1000/Dockerfile new file mode 100644 index 000000000..96760491b --- /dev/null +++ b/agents/meinberg_m1000/Dockerfile @@ -0,0 +1,24 @@ +# SOCS Meinberg M1000 Agent + +# Use socs base image +FROM socs:latest + +# Set the working directory +WORKDIR /app/socs/agents/meinberg_m1000/ + +# Copy in the Agent +COPY meinberg_m1000_agent.py . + +# Avoid build error from successive COPY's +# https://stackoverflow.com/a/62409523 +RUN true + +# Copy in the MIBS +COPY mibs/ /usr/local/lib/python3.6/dist-packages/pysnmp/smi/mibs/ + +# Run agent on container startup +ENTRYPOINT ["dumb-init", "python3", "-u", "meinberg_m1000_agent.py"] + +# Default site-hub +CMD ["--site-hub=ws://crossbar:8001/ws", \ + "--site-http=http://crossbar:8001/call"] diff --git a/agents/meinberg_m1000/meinberg_m1000_agent.py b/agents/meinberg_m1000/meinberg_m1000_agent.py new file mode 100644 index 000000000..bfe6ee805 --- /dev/null +++ b/agents/meinberg_m1000/meinberg_m1000_agent.py @@ -0,0 +1,450 @@ +import os +from os import environ + +import time +import argparse +import txaio + +from autobahn.twisted.util import sleep as dsleep +from twisted.internet.defer import inlineCallbacks + +from socs.snmp import SNMPTwister + +# For logging +txaio.use_twisted() + +on_rtd = os.environ.get('READTHEDOCS') == 'True' +if not on_rtd: + from ocs import ocs_agent, site_config + + +class MeinbergSNMP: + """Meinberg SNMP communicator. Handles communication with and decoding of + values from the Meinberg M1000. + + Parameters + ---------- + address : str + Address of the M1000. + port : int + SNMP port to issue GETs to, default to 161. + + Attributes + ---------- + address : str + Address of the M1000. + port : int + SNMP port to issue GETs to. + snmp : socs.snmp.SNMPTwister + snmp handler from SOCS + mib_timings : list + list of dicts describing the SNMP OIDs to check, and at which + intervals. Each dict contains the keys "oid", "interval", and + "lastGet". The corresponding values are of types tuple, integer, and + float, respectively. "lastGet" is initialized as None, since no SNMP + GET commands have been issued. + oid_cache : dict + Cache of OID values and corresponding decoded values. Meant to pass to + session.data. + + """ + def __init__(self, address, port=161): + self.log = txaio.make_logger() + self.address = address + self.port = port + self.snmp = SNMPTwister(address, port) + + # OIDs and how often to query them + self.mib_timings = [{"oid": ('MBG-SNMP-LTNG-MIB', 'mbgLtNgRefclockState', 1), + "interval": 60, + "lastGet": None}, + {"oid": ('MBG-SNMP-LTNG-MIB', 'mbgLtNgSysPsStatus', 1), + "interval": 60, + "lastGet": None}, + {"oid": ('MBG-SNMP-LTNG-MIB', 'mbgLtNgSysPsStatus', 2), + "interval": 60, + "lastGet": None}, + {"oid": ('MBG-SNMP-LTNG-MIB', 'mbgLtNgEthPortLinkState', 1), + "interval": 60, + "lastGet": None}, + {"oid": ('MBG-SNMP-LTNG-MIB', 'mbgLtNgRefclockLeapSecondDate', 1), + "interval": 60*60, + "lastGet": None}, + {"oid": ('MBG-SNMP-LTNG-MIB', 'mbgLtNgNtpCurrentState', 0), + "interval": 64, + "lastGet": None}, + {"oid": ('MBG-SNMP-LTNG-MIB', 'mbgLtNgPtpPortState', 1), + "interval": 3, + "lastGet": None}] + + self.oid_cache = {} + + # Determine unique interval values + self.interval_groups = list({x['interval'] for x in self.mib_timings}) + + def _build_get_list(self, interval): + """Create list of OIDs to GET based on last time we checked them. + + Intervals are defined in the mib_timings dictionary. If the interval + time, or more, has passed since the last GET was issued, we add the OID to the + get_list. + + Parameters + ---------- + interval : int + Interval to build the get list for. Since available fields cannot + change dynamically within OCS we publish each interval group to its + own block. + + Returns + ------- + get_list : list + List of OID tuples to be passed to an SNMPTwister object in a GET call. + + """ + get_list = [] + for mib in self.mib_timings: + # Select only OIDs of the same interval + if mib['interval'] != interval: + continue + + if mib["lastGet"] is None: + get_list.append(mib["oid"]) + elif time.time() - mib["lastGet"] > mib["interval"]: + get_list.append(mib["oid"]) + + return get_list + + def _extract_oid_field_and_value(self, get_result): + """Extract field names and OID values from SNMP GET results. + + The ObjectType objects returned from pysnmp interactions contain the + info we want to use for field names, specifically the OID and associated + integer for uniquely identifying duplicate OIDs, as well as the value of the + OID, which we want to save. + + Here we use the prettyPrint() method to get the OID name, requiring + some string manipulation. We also just grab the hidden ._value + directly, as this seemed the cleanest way to get an actual value of a + normal type. Without doing this we get a pysnmp defined Integer32 or + DisplayString, which were akward to handle, particularly the + DisplayString. + + Parameters + ---------- + get_result : pysnmp.smi.rfc1902.ObjectType + Result from a pysnmp GET command. + + Returns + ------- + field_name : str + Field name for an OID, i.e. 'mbgLtNgRefclockState_1' + oid_value : int or str + Associated value for the OID. Returns None if not an int or str + oid_description : str + String description of the OID value. + + """ + # OID from SNMP GET + oid = get_result[0].prettyPrint() + # Makes something like 'MBG-SNMP-LTNG-MIB::mbgLtNgRefclockState.1' + # look like 'mbgLtNgRefclockState_1' + field_name = oid.split("::")[1].replace('.', '_') + + # Grab OID value, mostly these are integers + oid_value = get_result[1]._value + oid_description = get_result[1].prettyPrint() + + self.log.debug("{o} {value}", + o=field_name, + value=oid_value) + + # Decode string values + if isinstance(oid_value, bytes): + oid_value = oid_value.decode("utf-8") + + # I don't expect any other types at the moment, but just in case. + if not isinstance(oid_value, (int, bytes, str)): + self.log.error("{oid} is of unknown and unhandled type " + + "{oid_type}. Returning None.", + oid=oid, oid_type=type(oid_value)) + oid_value = None + + return field_name, oid_value, oid_description + + def update_cache(self, get_result, time): + """Update the OID Value Cache. + + The OID Value Cache is used to store each unique OID, the latest value, + the associated decoded string, and the last time the OID was queried from the + M1000. + + The cache consists of a dictionary, with the unique OIDs as keys, and + another dictionary as the value. Each of these nested dictionaries contains the + OID values, description (decoded string), and last query time. An + example for a single OID:: + + {"mbgLtNgPtpPortState_1": + {"status": 3, + "description": "disabled", + "lastGet": 1598543397.689727}} + + This method modifies self.oid_cache. + + Parameters + ---------- + get_result : pysnmp.smi.rfc1902.ObjectType + Result from a pysnmp GET command. + time : float + Timestamp for when the SNMP GET was issued. + + """ + for item in get_result: + field_name, oid_value, oid_description = self._extract_oid_field_and_value(item) + if oid_value is None: + continue + + # Update OID Cache for session.data + self.oid_cache[field_name] = {"status": oid_value} + self.oid_cache[field_name]["lastGet"] = time + self.oid_cache[field_name]["description"] = oid_description + + def get_cache(self): + """Return the current cache. Should be used to pass cached values to + session.data. See MeinbergSNMP.update_cache() for a description of the cache + data structure. + + Returns + ------- + dict + The OID Value Cache, containing each OID, their latest status + value, description, and last updated time. + + """ + return self.oid_cache + + def _build_message(self, interval, get_result, time): + """Built the message for publication on an OCS Feed. + + For a given MIB timing interval, build a message for Feed publication. + Each interval contains only the OIDs that are sampled on the same timing + interval. We split by interval since the available fields cannot change + within a block over time. + + Parameters + ---------- + interval : int + Timing interval in seconds + get_result : pysnmp.smi.rfc1902.ObjectType + Result from a pysnmp GET command. + time : float + Timestamp for when the SNMP GET was issued. + + Returns + ------- + message : dict + OCS Feed formatted message for publishing + + """ + message = { + 'block_name': f'm1000_{interval}', + 'timestamp': time, + 'data': {} + } + + for item in get_result: + field_name, oid_value, oid_description = self._extract_oid_field_and_value(item) + + if oid_value is None: + continue + + message['data'][field_name] = oid_value + message['data'][field_name + "_description"] = oid_description + + return message + + @inlineCallbacks + def run_snmp_get(self, session): + """Peform the main data acquisition steps, issuing SNMP GET commands + for each OID, depending on when we last queried them. + + These steps are performed for each group of OIDs in the same timing + interval. We first build a list of OIDs to query. We then query them, update + the local cache which is passed to the session.data object, build an OCS + formatted message, and publish that message on the OCS Feed. + + If no OID should be queried yet we continue, expecting the Agent to + handle any waiting that should be done between queries. + + """ + for interval in self.interval_groups: + # Create list of OIDs to GET based on last time we checked them + get_list = self._build_get_list(interval) + + # empty if an interval of time hasn't passed since last GET + if not get_list: + continue + + # Issue SNMP GET command + result = yield self.snmp.get(get_list) + read_time = time.time() + + self.update_cache(result, read_time) + message = self._build_message(interval, result, read_time) + + # Update lastGet time + for mib in self.mib_timings: + if mib['oid'] in get_list: + mib['lastGet'] = read_time + + self.log.debug("{msg}", msg=message) + session.app.publish_to_feed('m1000', message) + session.data = self.get_cache() + + +class MeinbergM1000Agent: + """Monitor the Meinberg LANTIME M1000 timing system via SNMP. + + Parameters + ---------- + agent : OCSAgent + OCSAgent object which forms this Agent + address : str + Address of the M1000. + port : int + SNMP port to issue GETs to, default to 161. + + Attributes + ---------- + agent : OCSAgent + OCSAgent object which forms this Agent + is_streaming : bool + Tracks whether or not the agent is actively issuing SNMP GET commands + to the M1000. Setting to false stops sending commands. + log : txaio.tx.Logger + txaio logger object, created by the OCSAgent + + """ + def __init__(self, agent, address, port=161): + self.agent = agent + self.is_streaming = False + self.log = self.agent.log + + self.meinberg = MeinbergSNMP(address, port) + + agg_params = { + 'frame_length': 10*60 # [sec] + } + self.agent.register_feed('m1000', + record=True, + agg_params=agg_params, + buffer_time=1) + + @inlineCallbacks + def start_acq(self, session, params=None): + """start_acq(params=None) + + OCS Process for fetching values from the M1000 via SNMP. + + The session.data object stores each unique OID with its latest status, + decoded value, and the last time the value was retrived. This will look like + the example here:: + + >>> session.data + {"mbgLtNgRefclockLeapSecondDate_1": + {"status": "not announced", + "lastGet":1598626144.5365012}, + "mbgLtNgPtpPortState_1": + {"status": 3, + "description": "disabled", + "lastGet": 1598543397.689727}, + "mbgLtNgNtpCurrentState_0": + {"status": 1, + "description": "not synchronized", + "lastGet": 1598543363.289597}, + "mbgLtNgRefclockState_1": + {"status": 2, + "description": "not synchronized", + "lastGet": 1598543359.6326838}, + "mbgLtNgSysPsStatus_1": + {"status": 2, + "description": "up", + "lastGet": 1598543359.6326838}, + "mbgLtNgSysPsStatus_2": + {"status": 2, + "description": "up", + "lastGet": 1598543359.6326838}, + "mbgLtNgEthPortLinkState_1": + {"status": 1, + "description": "up", + "lastGet": 1598543359.6326838}} + + Note that session.data is populated within the self.meinberg.run_snmp_get() call. + + """ + if params is None: + params = {} + + self.is_streaming = True + + while self.is_streaming: + yield self.meinberg.run_snmp_get(session) + self.log.debug("{data}", data=session.data) + yield dsleep(0.1) + + return True, "Finished Recording" + + def stop_acq(self, session, params=None): + """stop_acq(params=None) + + Stop method associated with start_acq process. + + """ + self.is_streaming = False + return True, "Stopping Recording" + + +def make_parser(parser=None): + """Build the argument parser for the Agent. Allows sphinx to automatically + build documentation based on this function. + + """ + if parser is None: + parser = argparse.ArgumentParser() + + # Add options specific to this agent. + pgroup = parser.add_argument_group("Agent Options") + pgroup.add_argument("--auto-start", default=True, type=bool, + help="Automatically start polling for data at " + + "Agent startup.") + pgroup.add_argument("--address", help="Address to listen to.") + pgroup.add_argument("--port", default=161, + help="Port to listen on.") + + return parser + + +if __name__ == "__main__": + # Start logging + txaio.start_logging(level=environ.get("LOGLEVEL", "info")) + + # Get the default ocs agrument parser + site_parser = site_config.add_arguments() + parser = make_parser(site_parser) + + # Parse commandline + args = parser.parse_args() + + site_config.reparse_args(args, "MeinbergM1000Agent") + + agent, runner = ocs_agent.init_site_agent(args) + listener = MeinbergM1000Agent(agent, + address=args.address, + port=int(args.port)) + + agent.register_process("acq", + listener.start_acq, + listener.stop_acq, + startup=bool(args.auto_start), blocking=False) + + runner.run(agent, auto_reconnect=True) diff --git a/agents/meinberg_m1000/mibs/MBG-SNMP-LTNG-MIB.py b/agents/meinberg_m1000/mibs/MBG-SNMP-LTNG-MIB.py new file mode 100644 index 000000000..1be4e00a3 --- /dev/null +++ b/agents/meinberg_m1000/mibs/MBG-SNMP-LTNG-MIB.py @@ -0,0 +1,840 @@ +# +# PySNMP MIB module MBG-SNMP-LTNG-MIB (http://snmplabs.com/pysmi) +# ASN.1 source file://./MBG-SNMP-LTNG-MIB.mib +# Produced by pysmi-0.3.4 at Fri May 1 22:39:55 2020 +# On host grumpy platform Linux version 4.15.0-88-generic by user bjk49 +# Using Python version 3.6.9 (default, Apr 18 2020, 01:56:04) +# +OctetString, Integer, ObjectIdentifier = mibBuilder.importSymbols("ASN1", "OctetString", "Integer", "ObjectIdentifier") +NamedValues, = mibBuilder.importSymbols("ASN1-ENUMERATION", "NamedValues") +ConstraintsUnion, ValueSizeConstraint, SingleValueConstraint, ValueRangeConstraint, ConstraintsIntersection = mibBuilder.importSymbols("ASN1-REFINEMENT", "ConstraintsUnion", "ValueSizeConstraint", "SingleValueConstraint", "ValueRangeConstraint", "ConstraintsIntersection") +MeinbergSwitch, mbgSnmpRoot = mibBuilder.importSymbols("MBG-SNMP-ROOT-MIB", "MeinbergSwitch", "mbgSnmpRoot") +ModuleCompliance, ObjectGroup, NotificationGroup = mibBuilder.importSymbols("SNMPv2-CONF", "ModuleCompliance", "ObjectGroup", "NotificationGroup") +sysName, snmpTrapEnterprise = mibBuilder.importSymbols("SNMPv2-MIB", "sysName", "snmpTrapEnterprise") +IpAddress, Gauge32, ModuleIdentity, Bits, Integer32, ObjectIdentity, Counter64, NotificationType, iso, TimeTicks, Unsigned32, Counter32, MibScalar, MibTable, MibTableRow, MibTableColumn, MibIdentifier = mibBuilder.importSymbols("SNMPv2-SMI", "IpAddress", "Gauge32", "ModuleIdentity", "Bits", "Integer32", "ObjectIdentity", "Counter64", "NotificationType", "iso", "TimeTicks", "Unsigned32", "Counter32", "MibScalar", "MibTable", "MibTableRow", "MibTableColumn", "MibIdentifier") +TextualConvention, DisplayString = mibBuilder.importSymbols("SNMPv2-TC", "TextualConvention", "DisplayString") +mbgLantimeNG = ModuleIdentity((1, 3, 6, 1, 4, 1, 5597, 30)) +mbgLantimeNG.setRevisions(('2018-11-21 07:50', '2017-10-10 06:33', '2016-05-18 05:17', '2015-08-27 08:44', '2015-04-17 06:32', '2014-11-25 07:24', '2014-08-29 08:10', '2014-01-30 09:19', '2013-11-01 09:39', '2013-10-09 11:50', '2013-10-01 08:10', '2013-09-18 12:16', '2013-02-20 07:00', '2012-11-07 14:20', '2012-03-30 07:13', '2012-01-25 07:45', '2011-09-12 08:18', '2011-09-02 11:10', '2011-06-21 09:30', '2011-05-20 10:00', '2011-05-16 13:30',)) +if mibBuilder.loadTexts: mbgLantimeNG.setLastUpdated('201811210750Z') +if mibBuilder.loadTexts: mbgLantimeNG.setOrganization('Meinberg Radio Clocks GmbH & Co. KG') +mbgLantimeNGStatus = MibIdentifier((1, 3, 6, 1, 4, 1, 5597, 30, 0)) +mbgLtNgInfo = MibIdentifier((1, 3, 6, 1, 4, 1, 5597, 30, 0, 0)) +mbgLtNgSnmpSubagentVersion = MibScalar((1, 3, 6, 1, 4, 1, 5597, 30, 0, 0, 1), DisplayString().clone('n/a')).setMaxAccess("readonly") +if mibBuilder.loadTexts: mbgLtNgSnmpSubagentVersion.setStatus('current') +mbgLtNgFirmwareVersion = MibScalar((1, 3, 6, 1, 4, 1, 5597, 30, 0, 0, 2), DisplayString().clone('n/a')).setMaxAccess("readonly") +if mibBuilder.loadTexts: mbgLtNgFirmwareVersion.setStatus('current') +mbgLtNgSerialNumber = MibScalar((1, 3, 6, 1, 4, 1, 5597, 30, 0, 0, 3), DisplayString().clone('n/a')).setMaxAccess("readonly") +if mibBuilder.loadTexts: mbgLtNgSerialNumber.setStatus('current') +mbgLtNgSubagentTimeticks = MibScalar((1, 3, 6, 1, 4, 1, 5597, 30, 0, 0, 4), Counter64()).setUnits('sec').setMaxAccess("readonly") +if mibBuilder.loadTexts: mbgLtNgSubagentTimeticks.setStatus('current') +mbgLtNgCpuSerialNumber = MibScalar((1, 3, 6, 1, 4, 1, 5597, 30, 0, 0, 5), DisplayString().clone('n/a')).setMaxAccess("readonly") +if mibBuilder.loadTexts: mbgLtNgCpuSerialNumber.setStatus('current') +mbgLtNgRefclock = MibIdentifier((1, 3, 6, 1, 4, 1, 5597, 30, 0, 1)) +mbgLtNgNumberOfRefclocks = MibScalar((1, 3, 6, 1, 4, 1, 5597, 30, 0, 1, 1), Unsigned32().subtype(subtypeSpec=ValueRangeConstraint(0, 2))).setMaxAccess("readonly") +if mibBuilder.loadTexts: mbgLtNgNumberOfRefclocks.setStatus('current') +mbgLtNgRefclockTable = MibTable((1, 3, 6, 1, 4, 1, 5597, 30, 0, 1, 2), ) +if mibBuilder.loadTexts: mbgLtNgRefclockTable.setStatus('current') +mbgLtNgRefclockTableEntry = MibTableRow((1, 3, 6, 1, 4, 1, 5597, 30, 0, 1, 2, 1), ).setIndexNames((0, "MBG-SNMP-LTNG-MIB", "mbgLtNgRefclockIndex")) +if mibBuilder.loadTexts: mbgLtNgRefclockTableEntry.setStatus('current') +mbgLtNgRefclockIndex = MibTableColumn((1, 3, 6, 1, 4, 1, 5597, 30, 0, 1, 2, 1, 1), Unsigned32().subtype(subtypeSpec=ValueRangeConstraint(1, 2))) +if mibBuilder.loadTexts: mbgLtNgRefclockIndex.setStatus('current') +mbgLtNgRefclockType = MibTableColumn((1, 3, 6, 1, 4, 1, 5597, 30, 0, 1, 2, 1, 2), Integer32().subtype(subtypeSpec=ConstraintsUnion(SingleValueConstraint(0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102))).clone(namedValues=NamedValues(("unknown", 0), ("gps166", 1), ("gps167", 2), ("gps167SV", 3), ("gps167PC", 4), ("gps167PCI", 5), ("gps163", 6), ("gps168PCI", 7), ("gps161", 8), ("gps169PCI", 9), ("tcr167PCI", 10), ("gps164", 11), ("gps170PCI", 12), ("pzf511", 13), ("gps170", 14), ("tcr511", 15), ("am511", 16), ("msf511", 17), ("grc170", 18), ("gps170PEX", 19), ("gps162", 20), ("ptp270PEX", 21), ("frc511PEX", 22), ("gen170", 23), ("tcr170PEX", 24), ("wwvb511", 25), ("mgr170", 26), ("jjy511", 27), ("pzf600", 28), ("tcr600", 29), ("gps180", 30), ("gln170", 31), ("gps180PEX", 32), ("tcr180PEX", 33), ("pzf180PEX", 34), ("mgr180", 35), ("msf600", 36), ("wwvb600", 37), ("jjy600", 38), ("gps180HS", 39), ("gps180AMC", 40), ("esi180", 41), ("cpe180", 42), ("lno180", 43), ("grc180", 44), ("liu", 45), ("dcf600HS", 46), ("dcf600RS", 47), ("mri", 48), ("bpe", 49), ("gln180Pex", 50), ("n2x", 51), ("rsc180", 52), ("lneGb", 53), ("lnePpg180", 54), ("scg", 55), ("mdu300", 56), ("sdi", 57), ("fdm180", 58), ("spt", 59), ("pzf180", 60), ("rel1000", 61), ("hps100", 62), ("vsg180", 63), ("msf180", 64), ("wwvb180", 65), ("cpc180", 66), ("ctc100", 67), ("tcr180", 68), ("lue180", 69), ("cpc01", 70), ("tsu01", 71), ("cmc01", 72), ("scu01", 73), ("fcu01", 74), ("mssb100", 75), ("lne180sfp", 76), ("gts180", 77), ("gps180csm", 78), ("grc181", 79), ("n2x180", 80), ("gns180pex", 81), ("mdu180", 82), ("mdu312", 83), ("gps165", 84), ("gns181UC", 85), ("psx4GE", 86), ("rsc180rdu", 87), ("wtf", 88), ("fdm180m", 89), ("lsg180", 90), ("gps190", 91), ("gns181", 92), ("pio180", 93), ("fcm180", 94), ("tcr180usb", 95), ("ssp100", 96), ("gns165", 97), ("rsc180rdmp", 98), ("gps16x", 99), ("mshps100", 100), ("bpestm", 101), ("vsi180", 102)))).setMaxAccess("readonly") +if mibBuilder.loadTexts: mbgLtNgRefclockType.setStatus('current') +mbgLtNgRefclockUsage = MibTableColumn((1, 3, 6, 1, 4, 1, 5597, 30, 0, 1, 2, 1, 3), Integer32().subtype(subtypeSpec=ConstraintsUnion(SingleValueConstraint(0, 1, 2, 3))).clone(namedValues=NamedValues(("notAvailable", 0), ("secondary", 1), ("compare", 2), ("primary", 3)))).setMaxAccess("readonly") +if mibBuilder.loadTexts: mbgLtNgRefclockUsage.setStatus('current') +mbgLtNgRefclockState = MibTableColumn((1, 3, 6, 1, 4, 1, 5597, 30, 0, 1, 2, 1, 4), Integer32().subtype(subtypeSpec=ConstraintsUnion(SingleValueConstraint(0, 1, 2))).clone(namedValues=NamedValues(("notAvailable", 0), ("synchronized", 1), ("notSynchronized", 2)))).setMaxAccess("readonly") +if mibBuilder.loadTexts: mbgLtNgRefclockState.setStatus('current') +mbgLtNgRefclockSubstate = MibTableColumn((1, 3, 6, 1, 4, 1, 5597, 30, 0, 1, 2, 1, 5), Integer32().subtype(subtypeSpec=ConstraintsUnion(SingleValueConstraint(-1, 0, 1, 2, 3, 4, 5, 6, 50, 51, 52, 100, 101, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167))).clone(namedValues=NamedValues(("mrsRefNone", -1), ("notAvailable", 0), ("gpsSync", 1), ("gpsTracking", 2), ("gpsAntennaDisconnected", 3), ("gpsWarmBoot", 4), ("gpsColdBoot", 5), ("gpsAntennaShortCircuit", 6), ("lwNeverSync", 50), ("lwNotSync", 51), ("lwSync", 52), ("tcrNotSync", 100), ("tcrSync", 101), ("mrsIntOscSync", 149), ("mrsGpsSync", 150), ("mrs10MhzSync", 151), ("mrsPpsInSync", 152), ("mrs10MhzPpsInSync", 153), ("mrsIrigSync", 154), ("mrsNtpSync", 155), ("mrsPtpIeee1588Sync", 156), ("mrsPtpOverE1Sync", 157), ("mrsFixedFreqInSync", 158), ("mrsPpsStringSync", 159), ("mrsVarFreqGpioSync", 160), ("mrsReserved", 161), ("mrsDcf77PzfSync", 162), ("mrsLongwaveSync", 163), ("mrsGlonassGpsSync", 164), ("mrsHavequickSync", 165), ("mrsExtOscSync", 166), ("mrsSyncE", 167)))).setMaxAccess("readonly") +if mibBuilder.loadTexts: mbgLtNgRefclockSubstate.setStatus('current') +mbgLtNgRefclockStatusA = MibTableColumn((1, 3, 6, 1, 4, 1, 5597, 30, 0, 1, 2, 1, 6), Unsigned32().subtype(subtypeSpec=ValueRangeConstraint(0, 100))).setMaxAccess("readonly") +if mibBuilder.loadTexts: mbgLtNgRefclockStatusA.setStatus('current') +mbgLtNgRefclockMaxStatusA = MibTableColumn((1, 3, 6, 1, 4, 1, 5597, 30, 0, 1, 2, 1, 7), Unsigned32().subtype(subtypeSpec=ValueRangeConstraint(0, 100))).setMaxAccess("readonly") +if mibBuilder.loadTexts: mbgLtNgRefclockMaxStatusA.setStatus('current') +mbgLtNgRefclockStatusB = MibTableColumn((1, 3, 6, 1, 4, 1, 5597, 30, 0, 1, 2, 1, 8), Unsigned32().subtype(subtypeSpec=ValueRangeConstraint(0, 100))).setMaxAccess("readonly") +if mibBuilder.loadTexts: mbgLtNgRefclockStatusB.setStatus('current') +mbgLtNgRefclockMaxStatusB = MibTableColumn((1, 3, 6, 1, 4, 1, 5597, 30, 0, 1, 2, 1, 9), Unsigned32().subtype(subtypeSpec=ValueRangeConstraint(0, 100))).setMaxAccess("readonly") +if mibBuilder.loadTexts: mbgLtNgRefclockMaxStatusB.setStatus('current') +mbgLtNgRefclockAdditionalInfo = MibTableColumn((1, 3, 6, 1, 4, 1, 5597, 30, 0, 1, 2, 1, 10), Integer32().subtype(subtypeSpec=ConstraintsUnion(SingleValueConstraint(0, 1))).clone(namedValues=NamedValues(("notAvailable", 0), ("leapSecondAnnounced", 1)))).setMaxAccess("readonly") +if mibBuilder.loadTexts: mbgLtNgRefclockAdditionalInfo.setStatus('current') +mbgLtNgRefclockLeapSecondDate = MibTableColumn((1, 3, 6, 1, 4, 1, 5597, 30, 0, 1, 2, 1, 11), DisplayString().clone('n/a')).setMaxAccess("readonly") +if mibBuilder.loadTexts: mbgLtNgRefclockLeapSecondDate.setStatus('current') +mbgLtNgRefclockGpsTable = MibTable((1, 3, 6, 1, 4, 1, 5597, 30, 0, 1, 3), ) +if mibBuilder.loadTexts: mbgLtNgRefclockGpsTable.setStatus('current') +mbgLtNgRefclockGpsTableEntry = MibTableRow((1, 3, 6, 1, 4, 1, 5597, 30, 0, 1, 3, 1), ).setIndexNames((0, "MBG-SNMP-LTNG-MIB", "mbgLtNgRefclockGpsIndex")) +if mibBuilder.loadTexts: mbgLtNgRefclockGpsTableEntry.setStatus('current') +mbgLtNgRefclockGpsIndex = MibTableColumn((1, 3, 6, 1, 4, 1, 5597, 30, 0, 1, 3, 1, 1), Unsigned32()) +if mibBuilder.loadTexts: mbgLtNgRefclockGpsIndex.setStatus('current') +mbgLtNgRefclockGpsLatitude = MibTableColumn((1, 3, 6, 1, 4, 1, 5597, 30, 0, 1, 3, 1, 2), DisplayString().clone('n/a')).setMaxAccess("readonly") +if mibBuilder.loadTexts: mbgLtNgRefclockGpsLatitude.setStatus('current') +mbgLtNgRefclockGpsLongitude = MibTableColumn((1, 3, 6, 1, 4, 1, 5597, 30, 0, 1, 3, 1, 3), DisplayString().clone('n/a')).setMaxAccess("readonly") +if mibBuilder.loadTexts: mbgLtNgRefclockGpsLongitude.setStatus('current') +mbgLtNgRefclockGpsAltitude = MibTableColumn((1, 3, 6, 1, 4, 1, 5597, 30, 0, 1, 3, 1, 4), Integer32().clone(-1)).setUnits('m').setMaxAccess("readonly") +if mibBuilder.loadTexts: mbgLtNgRefclockGpsAltitude.setStatus('current') +mbgLtNgRefclockGpsTdop = MibTableColumn((1, 3, 6, 1, 4, 1, 5597, 30, 0, 1, 3, 1, 5), DisplayString().clone('n/a')).setMaxAccess("readonly") +if mibBuilder.loadTexts: mbgLtNgRefclockGpsTdop.setStatus('current') +mbgLtNgRefclockGpsPdop = MibTableColumn((1, 3, 6, 1, 4, 1, 5597, 30, 0, 1, 3, 1, 6), DisplayString().clone('n/a')).setMaxAccess("readonly") +if mibBuilder.loadTexts: mbgLtNgRefclockGpsPdop.setStatus('current') +mbgLtNgRefclockGpsUtcOffset = MibTableColumn((1, 3, 6, 1, 4, 1, 5597, 30, 0, 1, 3, 1, 7), Integer32().clone(-1)).setUnits('sec').setMaxAccess("readonly") +if mibBuilder.loadTexts: mbgLtNgRefclockGpsUtcOffset.setStatus('current') +mbgLtNgRefclockTimeDiff = MibScalar((1, 3, 6, 1, 4, 1, 5597, 30, 0, 1, 4), Integer32()).setUnits('us').setMaxAccess("readonly") +if mibBuilder.loadTexts: mbgLtNgRefclockTimeDiff.setStatus('current') +mbgLtNgRefclockGpsPos = MibScalar((1, 3, 6, 1, 4, 1, 5597, 30, 0, 1, 5), DisplayString().clone('n/a')).setMaxAccess("readonly") +if mibBuilder.loadTexts: mbgLtNgRefclockGpsPos.setStatus('current') +mbgLtNgNtp = MibIdentifier((1, 3, 6, 1, 4, 1, 5597, 30, 0, 2)) +mbgLtNgNtpCurrentState = MibScalar((1, 3, 6, 1, 4, 1, 5597, 30, 0, 2, 1), Integer32().subtype(subtypeSpec=ConstraintsUnion(SingleValueConstraint(0, 1, 2))).clone(namedValues=NamedValues(("notAvailable", 0), ("notSynchronized", 1), ("synchronized", 2)))).setMaxAccess("readonly") +if mibBuilder.loadTexts: mbgLtNgNtpCurrentState.setStatus('current') +mbgLtNgNtpStratum = MibScalar((1, 3, 6, 1, 4, 1, 5597, 30, 0, 2, 2), Integer32().subtype(subtypeSpec=ValueRangeConstraint(0, 16))).setMaxAccess("readonly") +if mibBuilder.loadTexts: mbgLtNgNtpStratum.setStatus('current') +mbgLtNgNtpRefclockName = MibScalar((1, 3, 6, 1, 4, 1, 5597, 30, 0, 2, 3), DisplayString().clone('n/a')).setMaxAccess("readonly") +if mibBuilder.loadTexts: mbgLtNgNtpRefclockName.setStatus('current') +mbgLtNgNtpRefclockOffset = MibScalar((1, 3, 6, 1, 4, 1, 5597, 30, 0, 2, 4), DisplayString().clone('n/a')).setUnits('ms').setMaxAccess("readonly") +if mibBuilder.loadTexts: mbgLtNgNtpRefclockOffset.setStatus('current') +mbgLtNgNtpVersion = MibScalar((1, 3, 6, 1, 4, 1, 5597, 30, 0, 2, 5), DisplayString().clone('n/a')).setMaxAccess("readonly") +if mibBuilder.loadTexts: mbgLtNgNtpVersion.setStatus('current') +mbgLtNgNtpClientCounter = MibIdentifier((1, 3, 6, 1, 4, 1, 5597, 30, 0, 2, 8)) +mbgLtNgNtpCCStartedAt = MibScalar((1, 3, 6, 1, 4, 1, 5597, 30, 0, 2, 8, 1), Counter64()).setMaxAccess("readonly") +if mibBuilder.loadTexts: mbgLtNgNtpCCStartedAt.setStatus('current') +mbgLtNgNtpCCDuration = MibScalar((1, 3, 6, 1, 4, 1, 5597, 30, 0, 2, 8, 2), Unsigned32()).setUnits('sec').setMaxAccess("readonly") +if mibBuilder.loadTexts: mbgLtNgNtpCCDuration.setStatus('current') +mbgLtNgNtpCCNumberOfClients = MibScalar((1, 3, 6, 1, 4, 1, 5597, 30, 0, 2, 8, 3), Unsigned32()).setMaxAccess("readonly") +if mibBuilder.loadTexts: mbgLtNgNtpCCNumberOfClients.setStatus('current') +mbgLtNgNtpCCTotalRequests = MibScalar((1, 3, 6, 1, 4, 1, 5597, 30, 0, 2, 8, 4), Counter64()).setMaxAccess("readonly") +if mibBuilder.loadTexts: mbgLtNgNtpCCTotalRequests.setStatus('obsolete') +mbgLtNgNtpCCTotalRequestsCurrentDay = MibScalar((1, 3, 6, 1, 4, 1, 5597, 30, 0, 2, 8, 5), Counter64()).setMaxAccess("readonly") +if mibBuilder.loadTexts: mbgLtNgNtpCCTotalRequestsCurrentDay.setStatus('current') +mbgLtNgNtpCCTotalRequestsLastHour = MibScalar((1, 3, 6, 1, 4, 1, 5597, 30, 0, 2, 8, 6), Counter64()).setMaxAccess("readonly") +if mibBuilder.loadTexts: mbgLtNgNtpCCTotalRequestsLastHour.setStatus('current') +mbgLtNgNtpCCTotalRequestsLastMinute = MibScalar((1, 3, 6, 1, 4, 1, 5597, 30, 0, 2, 8, 7), Counter64()).setMaxAccess("readonly") +if mibBuilder.loadTexts: mbgLtNgNtpCCTotalRequestsLastMinute.setStatus('current') +mbgLtNgNtpCCTodaysClients = MibScalar((1, 3, 6, 1, 4, 1, 5597, 30, 0, 2, 8, 8), Unsigned32()).setMaxAccess("readonly") +if mibBuilder.loadTexts: mbgLtNgNtpCCTodaysClients.setStatus('current') +mbgLtNgNtpMrs = MibIdentifier((1, 3, 6, 1, 4, 1, 5597, 30, 0, 2, 9)) +mbgLtNgNtpMrsServer = MibScalar((1, 3, 6, 1, 4, 1, 5597, 30, 0, 2, 9, 1), DisplayString().clone('n/a')).setMaxAccess("readonly") +if mibBuilder.loadTexts: mbgLtNgNtpMrsServer.setStatus('current') +mbgLtNgNtpMrsOffset = MibScalar((1, 3, 6, 1, 4, 1, 5597, 30, 0, 2, 9, 2), DisplayString().clone('n/a')).setUnits('sec').setMaxAccess("readonly") +if mibBuilder.loadTexts: mbgLtNgNtpMrsOffset.setStatus('current') +mbgLtNgPtp = MibIdentifier((1, 3, 6, 1, 4, 1, 5597, 30, 0, 3)) +mbgLtNgPtpNumberOfModules = MibScalar((1, 3, 6, 1, 4, 1, 5597, 30, 0, 3, 1), Unsigned32()).setMaxAccess("readonly") +if mibBuilder.loadTexts: mbgLtNgPtpNumberOfModules.setStatus('current') +mbgLtNgPtpTable = MibTable((1, 3, 6, 1, 4, 1, 5597, 30, 0, 3, 2), ) +if mibBuilder.loadTexts: mbgLtNgPtpTable.setStatus('current') +mbgLtNgPtpTableEntry = MibTableRow((1, 3, 6, 1, 4, 1, 5597, 30, 0, 3, 2, 1), ).setIndexNames((0, "MBG-SNMP-LTNG-MIB", "mbgLtNgPtpIndex")) +if mibBuilder.loadTexts: mbgLtNgPtpTableEntry.setStatus('current') +mbgLtNgPtpIndex = MibTableColumn((1, 3, 6, 1, 4, 1, 5597, 30, 0, 3, 2, 1, 1), Unsigned32()) +if mibBuilder.loadTexts: mbgLtNgPtpIndex.setStatus('current') +mbgLtNgPtpMode = MibTableColumn((1, 3, 6, 1, 4, 1, 5597, 30, 0, 3, 2, 1, 2), Integer32().subtype(subtypeSpec=ConstraintsUnion(SingleValueConstraint(0, 1, 2, 3, 4))).clone(namedValues=NamedValues(("notAvailable", 0), ("stopped", 1), ("master", 2), ("slave", 3), ("ordinary", 4)))).setMaxAccess("readonly") +if mibBuilder.loadTexts: mbgLtNgPtpMode.setStatus('obsolete') +mbgLtNgPtpPortState = MibTableColumn((1, 3, 6, 1, 4, 1, 5597, 30, 0, 3, 2, 1, 3), Integer32().subtype(subtypeSpec=ConstraintsUnion(SingleValueConstraint(0, 1, 2, 3, 4, 5, 6, 7, 8, 9))).clone(namedValues=NamedValues(("uninitialized", 0), ("initializing", 1), ("faulty", 2), ("disabled", 3), ("listening", 4), ("preMaster", 5), ("master", 6), ("passive", 7), ("uncalibrated", 8), ("slave", 9))).clone(3)).setMaxAccess("readonly") +if mibBuilder.loadTexts: mbgLtNgPtpPortState.setStatus('current') +mbgLtNgPtpGrandmasterMac = MibTableColumn((1, 3, 6, 1, 4, 1, 5597, 30, 0, 3, 2, 1, 4), DisplayString().clone('n/a')).setMaxAccess("readonly") +if mibBuilder.loadTexts: mbgLtNgPtpGrandmasterMac.setStatus('current') +mbgLtNgPtpClockAccuracy = MibTableColumn((1, 3, 6, 1, 4, 1, 5597, 30, 0, 3, 2, 1, 5), Integer32().subtype(subtypeSpec=ConstraintsUnion(SingleValueConstraint(0, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 254))).clone(namedValues=NamedValues(("notAvailable", 0), ("timeAccurateTo25ns", 32), ("timeAccurateTo100ns", 33), ("timeAccurateTo250ns", 34), ("timeAccurateTo1us", 35), ("timeAccurateTo2Point5us", 36), ("timeAccurateTo10us", 37), ("timeAccurateTo25us", 38), ("timeAccurateTo100us", 39), ("timeAccurateTo250us", 40), ("timeAccurateTo1ms", 41), ("timeAccurateTo2to5ms", 42), ("timeAccurateTo10ms", 43), ("timeAccurateTo25ms", 44), ("timeAccurateTo100ms", 45), ("timeAccurateTo250ms", 46), ("timeAccurateTo1s", 47), ("timeAccurateTo10s", 48), ("timeAccurateToGT10s", 49), ("timeAccurateToUnknown", 254)))).setMaxAccess("readonly") +if mibBuilder.loadTexts: mbgLtNgPtpClockAccuracy.setStatus('current') +mbgLtNgPtpClockClass = MibTableColumn((1, 3, 6, 1, 4, 1, 5597, 30, 0, 3, 2, 1, 6), Unsigned32().subtype(subtypeSpec=ValueRangeConstraint(0, 255))).setMaxAccess("readonly") +if mibBuilder.loadTexts: mbgLtNgPtpClockClass.setStatus('current') +mbgLtNgPtpTimeSource = MibTableColumn((1, 3, 6, 1, 4, 1, 5597, 30, 0, 3, 2, 1, 7), Integer32().subtype(subtypeSpec=ConstraintsUnion(SingleValueConstraint(0, 16, 32, 48, 64, 80, 96, 144, 160))).clone(namedValues=NamedValues(("notAvailable", 0), ("atomicClock", 16), ("gps", 32), ("terrestrialRadio", 48), ("ptp", 64), ("ntp", 80), ("handSet", 96), ("other", 144), ("internalOscillator", 160)))).setMaxAccess("readonly") +if mibBuilder.loadTexts: mbgLtNgPtpTimeSource.setStatus('current') +mbgLtNgPtpUtcOffset = MibTableColumn((1, 3, 6, 1, 4, 1, 5597, 30, 0, 3, 2, 1, 8), Unsigned32().clone(35)).setUnits('seconds').setMaxAccess("readonly") +if mibBuilder.loadTexts: mbgLtNgPtpUtcOffset.setStatus('current') +mbgLtNgPtpTimeSeconds = MibTableColumn((1, 3, 6, 1, 4, 1, 5597, 30, 0, 3, 2, 1, 9), Counter64()).setUnits('seconds').setMaxAccess("readonly") +if mibBuilder.loadTexts: mbgLtNgPtpTimeSeconds.setStatus('current') +mbgLtNgPtpTsuTime = MibTableColumn((1, 3, 6, 1, 4, 1, 5597, 30, 0, 3, 2, 1, 10), DisplayString().clone('n/a')).setMaxAccess("readonly") +if mibBuilder.loadTexts: mbgLtNgPtpTsuTime.setStatus('current') +mbgLtNgPtpSysTime = MibTableColumn((1, 3, 6, 1, 4, 1, 5597, 30, 0, 3, 2, 1, 11), DisplayString().clone('n/a')).setMaxAccess("readonly") +if mibBuilder.loadTexts: mbgLtNgPtpSysTime.setStatus('current') +mbgLtNgPtpPortLinkup = MibTableColumn((1, 3, 6, 1, 4, 1, 5597, 30, 0, 3, 2, 1, 12), MeinbergSwitch()).setMaxAccess("readonly") +if mibBuilder.loadTexts: mbgLtNgPtpPortLinkup.setStatus('current') +mbgLtNgPtpOffsetFromGM = MibTableColumn((1, 3, 6, 1, 4, 1, 5597, 30, 0, 3, 2, 1, 13), DisplayString().clone('n/a')).setUnits('ns').setMaxAccess("readonly") +if mibBuilder.loadTexts: mbgLtNgPtpOffsetFromGM.setStatus('current') +mbgLtNgPtpPathDelay = MibTableColumn((1, 3, 6, 1, 4, 1, 5597, 30, 0, 3, 2, 1, 14), DisplayString().clone('n/a')).setUnits('ns').setMaxAccess("readonly") +if mibBuilder.loadTexts: mbgLtNgPtpPathDelay.setStatus('current') +mbgLtNgPtpDelayMec = MibTableColumn((1, 3, 6, 1, 4, 1, 5597, 30, 0, 3, 2, 1, 15), Integer32().subtype(subtypeSpec=ConstraintsUnion(SingleValueConstraint(0, 1))).clone(namedValues=NamedValues(("end2End", 0), ("peer2Peer", 1)))).setMaxAccess("readonly") +if mibBuilder.loadTexts: mbgLtNgPtpDelayMec.setStatus('current') +mbgLtNgPtpDomain = MibTableColumn((1, 3, 6, 1, 4, 1, 5597, 30, 0, 3, 2, 1, 16), Unsigned32().subtype(subtypeSpec=ValueRangeConstraint(0, 255))).setMaxAccess("readonly") +if mibBuilder.loadTexts: mbgLtNgPtpDomain.setStatus('current') +mbgLtNgPtpGrandmasterUuid = MibTableColumn((1, 3, 6, 1, 4, 1, 5597, 30, 0, 3, 2, 1, 17), DisplayString().clone('n/a')).setMaxAccess("readonly") +if mibBuilder.loadTexts: mbgLtNgPtpGrandmasterUuid.setStatus('current') +mbgLtNgPtpLocalMac = MibTableColumn((1, 3, 6, 1, 4, 1, 5597, 30, 0, 3, 2, 1, 18), DisplayString().clone('n/a')).setMaxAccess("readonly") +if mibBuilder.loadTexts: mbgLtNgPtpLocalMac.setStatus('current') +mbgLtNgPtpDelayAsymmetry = MibTableColumn((1, 3, 6, 1, 4, 1, 5597, 30, 0, 3, 2, 1, 19), DisplayString().clone('n/a')).setUnits('ns').setMaxAccess("readonly") +if mibBuilder.loadTexts: mbgLtNgPtpDelayAsymmetry.setStatus('current') +mbgLtNgPtpAvail = MibTableColumn((1, 3, 6, 1, 4, 1, 5597, 30, 0, 3, 2, 1, 20), Integer32().subtype(subtypeSpec=ConstraintsUnion(SingleValueConstraint(0, 1))).clone(namedValues=NamedValues(("no", 0), ("yes", 1)))).setMaxAccess("readonly") +if mibBuilder.loadTexts: mbgLtNgPtpAvail.setStatus('current') +mbgLtNgFdm = MibIdentifier((1, 3, 6, 1, 4, 1, 5597, 30, 0, 4)) +mbgLtNgFdmFreq = MibScalar((1, 3, 6, 1, 4, 1, 5597, 30, 0, 4, 1), Unsigned32().subtype(subtypeSpec=ConstraintsUnion(ValueRangeConstraint(0, 0), ValueRangeConstraint(45000, 65000), ))).setUnits('mHz').setMaxAccess("readonly") +if mibBuilder.loadTexts: mbgLtNgFdmFreq.setStatus('current') +mbgLtNgFdmFreqDev = MibScalar((1, 3, 6, 1, 4, 1, 5597, 30, 0, 4, 2), Integer32().subtype(subtypeSpec=ValueRangeConstraint(-15000, 15000))).setUnits('mHz').setMaxAccess("readonly") +if mibBuilder.loadTexts: mbgLtNgFdmFreqDev.setStatus('current') +mbgLtNgFdmNomFreq = MibScalar((1, 3, 6, 1, 4, 1, 5597, 30, 0, 4, 3), Unsigned32().subtype(subtypeSpec=ConstraintsUnion(ValueRangeConstraint(0, 0), ValueRangeConstraint(50000, 50000), ValueRangeConstraint(60000, 60000), ))).setUnits('mHz').setMaxAccess("readonly") +if mibBuilder.loadTexts: mbgLtNgFdmNomFreq.setStatus('current') +mbgLtNgSystemHardware = MibIdentifier((1, 3, 6, 1, 4, 1, 5597, 30, 0, 5)) +mbgLtNgSysPowerSupply = MibIdentifier((1, 3, 6, 1, 4, 1, 5597, 30, 0, 5, 0)) +mbgLtNgSysNumberOfPowerSupplies = MibScalar((1, 3, 6, 1, 4, 1, 5597, 30, 0, 5, 0, 1), Unsigned32().clone(1)).setMaxAccess("readonly") +if mibBuilder.loadTexts: mbgLtNgSysNumberOfPowerSupplies.setStatus('current') +mbgLtNgSysPsTable = MibTable((1, 3, 6, 1, 4, 1, 5597, 30, 0, 5, 0, 2), ) +if mibBuilder.loadTexts: mbgLtNgSysPsTable.setStatus('current') +mbgLtNgSysPsTableEntry = MibTableRow((1, 3, 6, 1, 4, 1, 5597, 30, 0, 5, 0, 2, 1), ).setIndexNames((0, "MBG-SNMP-LTNG-MIB", "mbgLtNgSysPsIndex")) +if mibBuilder.loadTexts: mbgLtNgSysPsTableEntry.setStatus('current') +mbgLtNgSysPsIndex = MibTableColumn((1, 3, 6, 1, 4, 1, 5597, 30, 0, 5, 0, 2, 1, 1), Unsigned32()) +if mibBuilder.loadTexts: mbgLtNgSysPsIndex.setStatus('current') +mbgLtNgSysPsStatus = MibTableColumn((1, 3, 6, 1, 4, 1, 5597, 30, 0, 5, 0, 2, 1, 2), Integer32().subtype(subtypeSpec=ConstraintsUnion(SingleValueConstraint(0, 1, 2))).clone(namedValues=NamedValues(("notAvailable", 0), ("down", 1), ("up", 2)))).setMaxAccess("readonly") +if mibBuilder.loadTexts: mbgLtNgSysPsStatus.setStatus('current') +mbgLtNgSysFan = MibIdentifier((1, 3, 6, 1, 4, 1, 5597, 30, 0, 5, 1)) +mbgLtNgSysNumberOfFans = MibScalar((1, 3, 6, 1, 4, 1, 5597, 30, 0, 5, 1, 1), Unsigned32()).setMaxAccess("readonly") +if mibBuilder.loadTexts: mbgLtNgSysNumberOfFans.setStatus('current') +mbgLtNgSysFanTable = MibTable((1, 3, 6, 1, 4, 1, 5597, 30, 0, 5, 1, 2), ) +if mibBuilder.loadTexts: mbgLtNgSysFanTable.setStatus('current') +mbgLtNgSysFanTableEntry = MibTableRow((1, 3, 6, 1, 4, 1, 5597, 30, 0, 5, 1, 2, 1), ).setIndexNames((0, "MBG-SNMP-LTNG-MIB", "mbgLtNgSysFanIndex")) +if mibBuilder.loadTexts: mbgLtNgSysFanTableEntry.setStatus('current') +mbgLtNgSysFanIndex = MibTableColumn((1, 3, 6, 1, 4, 1, 5597, 30, 0, 5, 1, 2, 1, 1), Unsigned32()) +if mibBuilder.loadTexts: mbgLtNgSysFanIndex.setStatus('current') +mbgLtNgSysFanStatus = MibTableColumn((1, 3, 6, 1, 4, 1, 5597, 30, 0, 5, 1, 2, 1, 2), Integer32().subtype(subtypeSpec=ConstraintsUnion(SingleValueConstraint(0, 1, 2))).clone(namedValues=NamedValues(("notAvailable", 0), ("off", 1), ("on", 2)))).setMaxAccess("readonly") +if mibBuilder.loadTexts: mbgLtNgSysFanStatus.setStatus('current') +mbgLtNgSysFanError = MibTableColumn((1, 3, 6, 1, 4, 1, 5597, 30, 0, 5, 1, 2, 1, 3), Integer32().subtype(subtypeSpec=ConstraintsUnion(SingleValueConstraint(0, 1, 2))).clone(namedValues=NamedValues(("notAvailable", 0), ("no", 1), ("yes", 2)))).setMaxAccess("readonly") +if mibBuilder.loadTexts: mbgLtNgSysFanError.setStatus('current') +mbgLtNgSysTemperature = MibIdentifier((1, 3, 6, 1, 4, 1, 5597, 30, 0, 5, 2)) +mbgLtNgSysTempCelsius = MibScalar((1, 3, 6, 1, 4, 1, 5597, 30, 0, 5, 2, 1), Unsigned32()).setUnits('C').setMaxAccess("readonly") +if mibBuilder.loadTexts: mbgLtNgSysTempCelsius.setStatus('current') +mbgLtNgCluster = MibIdentifier((1, 3, 6, 1, 4, 1, 5597, 30, 0, 6)) +mbgLtNgNumberOfClusters = MibScalar((1, 3, 6, 1, 4, 1, 5597, 30, 0, 6, 1), Unsigned32()).setMaxAccess("readonly") +if mibBuilder.loadTexts: mbgLtNgNumberOfClusters.setStatus('current') +mbgLtNgClusterTable = MibTable((1, 3, 6, 1, 4, 1, 5597, 30, 0, 6, 2), ) +if mibBuilder.loadTexts: mbgLtNgClusterTable.setStatus('current') +mbgLtNgClusterTableEntry = MibTableRow((1, 3, 6, 1, 4, 1, 5597, 30, 0, 6, 2, 1), ).setIndexNames((0, "MBG-SNMP-LTNG-MIB", "mbgLtNgClusterIndex")) +if mibBuilder.loadTexts: mbgLtNgClusterTableEntry.setStatus('current') +mbgLtNgClusterIndex = MibTableColumn((1, 3, 6, 1, 4, 1, 5597, 30, 0, 6, 2, 1, 1), Unsigned32()) +if mibBuilder.loadTexts: mbgLtNgClusterIndex.setStatus('current') +mbgLtNgClusterCommunicationIp = MibTableColumn((1, 3, 6, 1, 4, 1, 5597, 30, 0, 6, 2, 1, 2), DisplayString().clone('n/a')).setMaxAccess("readonly") +if mibBuilder.loadTexts: mbgLtNgClusterCommunicationIp.setStatus('current') +mbgLtNgClusterPortState = MibTableColumn((1, 3, 6, 1, 4, 1, 5597, 30, 0, 6, 2, 1, 3), Integer32().subtype(subtypeSpec=ConstraintsUnion(SingleValueConstraint(0, 1, 2, 3))).clone(namedValues=NamedValues(("notAvailable", 0), ("master", 1), ("slave", 2), ("listening", 3)))).setMaxAccess("readonly") +if mibBuilder.loadTexts: mbgLtNgClusterPortState.setStatus('current') +mbgLtNgClusterMasterSerial = MibTableColumn((1, 3, 6, 1, 4, 1, 5597, 30, 0, 6, 2, 1, 4), DisplayString().clone('n/a')).setMaxAccess("readonly") +if mibBuilder.loadTexts: mbgLtNgClusterMasterSerial.setStatus('current') +mbgLtNgClusterMasterIp = MibTableColumn((1, 3, 6, 1, 4, 1, 5597, 30, 0, 6, 2, 1, 5), DisplayString().clone('n/a')).setMaxAccess("readonly") +if mibBuilder.loadTexts: mbgLtNgClusterMasterIp.setStatus('current') +mbgLtNgClusterMasterPriority = MibTableColumn((1, 3, 6, 1, 4, 1, 5597, 30, 0, 6, 2, 1, 6), Unsigned32()).setMaxAccess("readonly") +if mibBuilder.loadTexts: mbgLtNgClusterMasterPriority.setStatus('current') +mbgLtNgClusterClockClass = MibTableColumn((1, 3, 6, 1, 4, 1, 5597, 30, 0, 6, 2, 1, 7), Integer32().subtype(subtypeSpec=ConstraintsUnion(SingleValueConstraint(0, 3, 4, 5, 6, 7, 8, 9, 10, 11))).clone(namedValues=NamedValues(("notAvailable", 0), ("gps", 3), ("pzf", 4), ("am", 5), ("irig", 6), ("pps", 7), ("ptp", 8), ("ntp", 9), ("e1", 10), ("rdt", 11)))).setMaxAccess("readonly") +if mibBuilder.loadTexts: mbgLtNgClusterClockClass.setStatus('current') +mbgLtNgClusterClockStatus = MibTableColumn((1, 3, 6, 1, 4, 1, 5597, 30, 0, 6, 2, 1, 8), Integer32().subtype(subtypeSpec=ConstraintsUnion(SingleValueConstraint(0, 1, 2, 3, 4))).clone(namedValues=NamedValues(("notAvailable", 0), ("normalOperation", 1), ("freeRunningOrTracking", 2), ("antennaFailure", 3), ("invalid", 4)))).setMaxAccess("readonly") +if mibBuilder.loadTexts: mbgLtNgClusterClockStatus.setStatus('current') +mbgLtNgClusterReconfigurationState = MibTableColumn((1, 3, 6, 1, 4, 1, 5597, 30, 0, 6, 2, 1, 9), Integer32().subtype(subtypeSpec=ConstraintsUnion(SingleValueConstraint(0, 1, 2, 3))).clone(namedValues=NamedValues(("notAvailable", 0), ("normal", 1), ("masterToSlave", 2), ("slaveToMaster", 3)))).setMaxAccess("readonly") +if mibBuilder.loadTexts: mbgLtNgClusterReconfigurationState.setStatus('current') +mbgLtNgClusterIsFalseticker = MibTableColumn((1, 3, 6, 1, 4, 1, 5597, 30, 0, 6, 2, 1, 10), Integer32().subtype(subtypeSpec=ConstraintsUnion(SingleValueConstraint(0, 1, 2))).clone(namedValues=NamedValues(("notAvailable", 0), ("no", 1), ("yes", 2)))).setMaxAccess("readonly") +if mibBuilder.loadTexts: mbgLtNgClusterIsFalseticker.setStatus('current') +mbgLtNgMisc = MibIdentifier((1, 3, 6, 1, 4, 1, 5597, 30, 0, 7)) +mbgLtNgEthPortLinkTable = MibTable((1, 3, 6, 1, 4, 1, 5597, 30, 0, 7, 1), ) +if mibBuilder.loadTexts: mbgLtNgEthPortLinkTable.setStatus('current') +mbgLtNgEthPortLinkTableEntry = MibTableRow((1, 3, 6, 1, 4, 1, 5597, 30, 0, 7, 1, 1), ).setIndexNames((0, "MBG-SNMP-LTNG-MIB", "mbgLtNgEthPortLinkIndex")) +if mibBuilder.loadTexts: mbgLtNgEthPortLinkTableEntry.setStatus('current') +mbgLtNgEthPortLinkIndex = MibTableColumn((1, 3, 6, 1, 4, 1, 5597, 30, 0, 7, 1, 1, 1), Unsigned32()) +if mibBuilder.loadTexts: mbgLtNgEthPortLinkIndex.setStatus('current') +mbgLtNgEthPortLinkState = MibTableColumn((1, 3, 6, 1, 4, 1, 5597, 30, 0, 7, 1, 1, 2), Integer32().subtype(subtypeSpec=ConstraintsUnion(SingleValueConstraint(0, 1))).clone(namedValues=NamedValues(("down", 0), ("up", 1)))).setMaxAccess("readonly") +if mibBuilder.loadTexts: mbgLtNgEthPortLinkState.setStatus('current') +mbgLtNgConfig = MibIdentifier((1, 3, 6, 1, 4, 1, 5597, 30, 1)) +mbgLtNgCfgEthernet = MibIdentifier((1, 3, 6, 1, 4, 1, 5597, 30, 1, 0)) +mbgLtNgCfgEthernetHostname = MibScalar((1, 3, 6, 1, 4, 1, 5597, 30, 1, 0, 1), DisplayString().clone('n/a')).setMaxAccess("readwrite") +if mibBuilder.loadTexts: mbgLtNgCfgEthernetHostname.setStatus('current') +mbgLtNgCfgEthernetDomain = MibScalar((1, 3, 6, 1, 4, 1, 5597, 30, 1, 0, 2), DisplayString().clone('n/a')).setMaxAccess("readwrite") +if mibBuilder.loadTexts: mbgLtNgCfgEthernetDomain.setStatus('current') +mbgLtNgCfgEthernetNameserver1 = MibScalar((1, 3, 6, 1, 4, 1, 5597, 30, 1, 0, 3), DisplayString().clone('n/a')).setMaxAccess("readwrite") +if mibBuilder.loadTexts: mbgLtNgCfgEthernetNameserver1.setStatus('current') +mbgLtNgCfgEthernetNameserver2 = MibScalar((1, 3, 6, 1, 4, 1, 5597, 30, 1, 0, 4), DisplayString().clone('n/a')).setMaxAccess("readwrite") +if mibBuilder.loadTexts: mbgLtNgCfgEthernetNameserver2.setStatus('current') +mbgLtNgCfgEthernetIpv4Gateway = MibScalar((1, 3, 6, 1, 4, 1, 5597, 30, 1, 0, 5), DisplayString().clone('n/a')).setMaxAccess("readwrite") +if mibBuilder.loadTexts: mbgLtNgCfgEthernetIpv4Gateway.setStatus('current') +mbgLtNgCfgEthernetIpv6Gateway = MibScalar((1, 3, 6, 1, 4, 1, 5597, 30, 1, 0, 6), DisplayString().clone('n/a')).setMaxAccess("readwrite") +if mibBuilder.loadTexts: mbgLtNgCfgEthernetIpv6Gateway.setStatus('current') +mbgLtNgCfgNumberOfPhysicalIf = MibScalar((1, 3, 6, 1, 4, 1, 5597, 30, 1, 0, 7), Unsigned32()).setMaxAccess("readonly") +if mibBuilder.loadTexts: mbgLtNgCfgNumberOfPhysicalIf.setStatus('current') +mbgLtNgCfgNumberOfVirtualIf = MibScalar((1, 3, 6, 1, 4, 1, 5597, 30, 1, 0, 8), Unsigned32()).setMaxAccess("readonly") +if mibBuilder.loadTexts: mbgLtNgCfgNumberOfVirtualIf.setStatus('current') +mbgLtNgCfgPhysicalIfTable = MibTable((1, 3, 6, 1, 4, 1, 5597, 30, 1, 0, 9), ) +if mibBuilder.loadTexts: mbgLtNgCfgPhysicalIfTable.setStatus('current') +mbgLtNgCfgPhysicalIfTableEntry = MibTableRow((1, 3, 6, 1, 4, 1, 5597, 30, 1, 0, 9, 1), ).setIndexNames((0, "MBG-SNMP-LTNG-MIB", "mbgLtNgCfgPhysicalIfIndex")) +if mibBuilder.loadTexts: mbgLtNgCfgPhysicalIfTableEntry.setStatus('current') +mbgLtNgCfgPhysicalIfIndex = MibTableColumn((1, 3, 6, 1, 4, 1, 5597, 30, 1, 0, 9, 1, 1), Unsigned32()) +if mibBuilder.loadTexts: mbgLtNgCfgPhysicalIfIndex.setStatus('current') +mbgLtNgCfgPhysicalIfMac = MibTableColumn((1, 3, 6, 1, 4, 1, 5597, 30, 1, 0, 9, 1, 2), DisplayString().clone('n/a')).setMaxAccess("readonly") +if mibBuilder.loadTexts: mbgLtNgCfgPhysicalIfMac.setStatus('current') +mbgLtNgCfgPhysicalIfNetLinkMode = MibTableColumn((1, 3, 6, 1, 4, 1, 5597, 30, 1, 0, 9, 1, 3), Integer32().subtype(subtypeSpec=ConstraintsUnion(SingleValueConstraint(0, 1, 2, 3, 4, 5, 6))).clone(namedValues=NamedValues(("auto", 0), ("hd10Mbit", 1), ("fd10Mbit", 2), ("hd100Mbit", 3), ("fd100Mbit", 4), ("hd1000Mbit", 5), ("fd1000Mbit", 6)))).setMaxAccess("readwrite") +if mibBuilder.loadTexts: mbgLtNgCfgPhysicalIfNetLinkMode.setStatus('current') +mbgLtNgCfgPhysicalIfIndicateLink = MibTableColumn((1, 3, 6, 1, 4, 1, 5597, 30, 1, 0, 9, 1, 4), MeinbergSwitch().clone(1)).setMaxAccess("readwrite") +if mibBuilder.loadTexts: mbgLtNgCfgPhysicalIfIndicateLink.setStatus('current') +mbgLtNgCfgPhysicalIfBondingGroup = MibTableColumn((1, 3, 6, 1, 4, 1, 5597, 30, 1, 0, 9, 1, 5), Unsigned32().subtype(subtypeSpec=ValueRangeConstraint(0, 5))).setMaxAccess("readwrite") +if mibBuilder.loadTexts: mbgLtNgCfgPhysicalIfBondingGroup.setStatus('current') +mbgLtNgCfgPhysicalIfIpv6Mode = MibTableColumn((1, 3, 6, 1, 4, 1, 5597, 30, 1, 0, 9, 1, 6), Integer32().subtype(subtypeSpec=ConstraintsUnion(SingleValueConstraint(0, 1, 2))).clone(namedValues=NamedValues(("deactivated", 0), ("activated", 1), ("activatedWithAutoconf", 2)))).setMaxAccess("readwrite") +if mibBuilder.loadTexts: mbgLtNgCfgPhysicalIfIpv6Mode.setStatus('current') +mbgLtNgCfgVirtualIfTable = MibTable((1, 3, 6, 1, 4, 1, 5597, 30, 1, 0, 10), ) +if mibBuilder.loadTexts: mbgLtNgCfgVirtualIfTable.setStatus('current') +mbgLtNgCfgVirtualIfTableEntry = MibTableRow((1, 3, 6, 1, 4, 1, 5597, 30, 1, 0, 10, 1), ).setIndexNames((0, "MBG-SNMP-LTNG-MIB", "mbgLtNgCfgVirtualIfIndex")) +if mibBuilder.loadTexts: mbgLtNgCfgVirtualIfTableEntry.setStatus('current') +mbgLtNgCfgVirtualIfIndex = MibTableColumn((1, 3, 6, 1, 4, 1, 5597, 30, 1, 0, 10, 1, 1), Unsigned32()) +if mibBuilder.loadTexts: mbgLtNgCfgVirtualIfIndex.setStatus('current') +mbgLtNgCfgVirtualIfIpv4Addr = MibTableColumn((1, 3, 6, 1, 4, 1, 5597, 30, 1, 0, 10, 1, 2), DisplayString().clone('n/a')).setMaxAccess("readwrite") +if mibBuilder.loadTexts: mbgLtNgCfgVirtualIfIpv4Addr.setStatus('current') +mbgLtNgCfgVirtualIfIpv4Netmask = MibTableColumn((1, 3, 6, 1, 4, 1, 5597, 30, 1, 0, 10, 1, 3), DisplayString().clone('n/a')).setMaxAccess("readwrite") +if mibBuilder.loadTexts: mbgLtNgCfgVirtualIfIpv4Netmask.setStatus('current') +mbgLtNgCfgVirtualIfIpv4Dhcp = MibTableColumn((1, 3, 6, 1, 4, 1, 5597, 30, 1, 0, 10, 1, 4), MeinbergSwitch()).setMaxAccess("readwrite") +if mibBuilder.loadTexts: mbgLtNgCfgVirtualIfIpv4Dhcp.setStatus('current') +mbgLtNgCfgVirtualIfIpv4AddrFromDhcp = MibTableColumn((1, 3, 6, 1, 4, 1, 5597, 30, 1, 0, 10, 1, 5), DisplayString().clone('n/a')).setMaxAccess("readonly") +if mibBuilder.loadTexts: mbgLtNgCfgVirtualIfIpv4AddrFromDhcp.setStatus('current') +mbgLtNgCfgVirtualIfIpv4NetmaskFromDhcp = MibTableColumn((1, 3, 6, 1, 4, 1, 5597, 30, 1, 0, 10, 1, 6), DisplayString().clone('n/a')).setMaxAccess("readonly") +if mibBuilder.loadTexts: mbgLtNgCfgVirtualIfIpv4NetmaskFromDhcp.setStatus('current') +mbgLtNgCfgVirtualIfIpv4BroadcastFromDhcp = MibTableColumn((1, 3, 6, 1, 4, 1, 5597, 30, 1, 0, 10, 1, 7), DisplayString().clone('n/a')).setMaxAccess("readonly") +if mibBuilder.loadTexts: mbgLtNgCfgVirtualIfIpv4BroadcastFromDhcp.setStatus('current') +mbgLtNgCfgVirtualIfIpv4GatewayFromDhcp = MibTableColumn((1, 3, 6, 1, 4, 1, 5597, 30, 1, 0, 10, 1, 8), DisplayString().clone('n/a')).setMaxAccess("readonly") +if mibBuilder.loadTexts: mbgLtNgCfgVirtualIfIpv4GatewayFromDhcp.setStatus('current') +mbgLtNgCfgVirtualIfIpv4DnsFromDhcp = MibTableColumn((1, 3, 6, 1, 4, 1, 5597, 30, 1, 0, 10, 1, 9), DisplayString().clone('n/a')).setMaxAccess("readonly") +if mibBuilder.loadTexts: mbgLtNgCfgVirtualIfIpv4DnsFromDhcp.setStatus('current') +mbgLtNgCfgVirtualIfIpv4DomainFromDhcp = MibTableColumn((1, 3, 6, 1, 4, 1, 5597, 30, 1, 0, 10, 1, 10), DisplayString().clone('n/a')).setMaxAccess("readonly") +if mibBuilder.loadTexts: mbgLtNgCfgVirtualIfIpv4DomainFromDhcp.setStatus('current') +mbgLtNgCfgVirtualIfIpv6Addr = MibTableColumn((1, 3, 6, 1, 4, 1, 5597, 30, 1, 0, 10, 1, 11), DisplayString().clone('n/a')).setMaxAccess("readwrite") +if mibBuilder.loadTexts: mbgLtNgCfgVirtualIfIpv6Addr.setStatus('current') +mbgLtNgCfgVirtualIfIpv6Dhcp = MibTableColumn((1, 3, 6, 1, 4, 1, 5597, 30, 1, 0, 10, 1, 12), MeinbergSwitch()).setMaxAccess("readwrite") +if mibBuilder.loadTexts: mbgLtNgCfgVirtualIfIpv6Dhcp.setStatus('current') +mbgLtNgCfgVirtualIfIpv6RoutAdd = MibTableColumn((1, 3, 6, 1, 4, 1, 5597, 30, 1, 0, 10, 1, 13), DisplayString().clone('n/a')).setMaxAccess("readonly") +if mibBuilder.loadTexts: mbgLtNgCfgVirtualIfIpv6RoutAdd.setStatus('current') +mbgLtNgCfgVirtualIfIpv6LinkLocal = MibTableColumn((1, 3, 6, 1, 4, 1, 5597, 30, 1, 0, 10, 1, 14), DisplayString().clone('n/a')).setMaxAccess("readonly") +if mibBuilder.loadTexts: mbgLtNgCfgVirtualIfIpv6LinkLocal.setStatus('current') +mbgLtNgCfgVirtualIfAssigned = MibTableColumn((1, 3, 6, 1, 4, 1, 5597, 30, 1, 0, 10, 1, 15), Unsigned32()).setMaxAccess("readwrite") +if mibBuilder.loadTexts: mbgLtNgCfgVirtualIfAssigned.setStatus('current') +mbgLtNgCfgVirtualIfMac = MibTableColumn((1, 3, 6, 1, 4, 1, 5597, 30, 1, 0, 10, 1, 16), DisplayString().clone('n/a')).setMaxAccess("readonly") +if mibBuilder.loadTexts: mbgLtNgCfgVirtualIfMac.setStatus('current') +mbgLtNgCfgVirtualIfLabel = MibTableColumn((1, 3, 6, 1, 4, 1, 5597, 30, 1, 0, 10, 1, 17), DisplayString().clone('n/a')).setMaxAccess("readwrite") +if mibBuilder.loadTexts: mbgLtNgCfgVirtualIfLabel.setStatus('current') +mbgLtNgCfgVirtualIfVlan = MibTableColumn((1, 3, 6, 1, 4, 1, 5597, 30, 1, 0, 10, 1, 18), MeinbergSwitch()).setMaxAccess("readwrite") +if mibBuilder.loadTexts: mbgLtNgCfgVirtualIfVlan.setStatus('current') +mbgLtNgCfgVirtualIfVlanTag = MibTableColumn((1, 3, 6, 1, 4, 1, 5597, 30, 1, 0, 10, 1, 19), Unsigned32().subtype(subtypeSpec=ValueRangeConstraint(0, 4094))).setMaxAccess("readwrite") +if mibBuilder.loadTexts: mbgLtNgCfgVirtualIfVlanTag.setStatus('current') +mbgLtNgCfgVirtualIfVlanPrio = MibTableColumn((1, 3, 6, 1, 4, 1, 5597, 30, 1, 0, 10, 1, 20), Unsigned32().subtype(subtypeSpec=ValueRangeConstraint(0, 7))).setMaxAccess("readwrite") +if mibBuilder.loadTexts: mbgLtNgCfgVirtualIfVlanPrio.setStatus('current') +mbgLtNgCfgVirtualIfCluster = MibTableColumn((1, 3, 6, 1, 4, 1, 5597, 30, 1, 0, 10, 1, 21), MeinbergSwitch()).setMaxAccess("readwrite") +if mibBuilder.loadTexts: mbgLtNgCfgVirtualIfCluster.setStatus('current') +mbgLtNgCfgVirtualIfClusterIpv4Addr = MibTableColumn((1, 3, 6, 1, 4, 1, 5597, 30, 1, 0, 10, 1, 22), DisplayString().clone('n/a')).setMaxAccess("readwrite") +if mibBuilder.loadTexts: mbgLtNgCfgVirtualIfClusterIpv4Addr.setStatus('current') +mbgLtNgCfgVirtualIfClusterIpv4Netmask = MibTableColumn((1, 3, 6, 1, 4, 1, 5597, 30, 1, 0, 10, 1, 23), DisplayString().clone('n/a')).setMaxAccess("readwrite") +if mibBuilder.loadTexts: mbgLtNgCfgVirtualIfClusterIpv4Netmask.setStatus('current') +mbgLtNgCfgVirtualIfClusterPrio = MibTableColumn((1, 3, 6, 1, 4, 1, 5597, 30, 1, 0, 10, 1, 24), Unsigned32().subtype(subtypeSpec=ValueRangeConstraint(0, 10))).setMaxAccess("readwrite") +if mibBuilder.loadTexts: mbgLtNgCfgVirtualIfClusterPrio.setStatus('current') +mbgLtNgCfgVirtualIfServiceNtp = MibTableColumn((1, 3, 6, 1, 4, 1, 5597, 30, 1, 0, 10, 1, 25), MeinbergSwitch()).setMaxAccess("readwrite") +if mibBuilder.loadTexts: mbgLtNgCfgVirtualIfServiceNtp.setStatus('current') +mbgLtNgCfgVirtualIfServiceHttp = MibTableColumn((1, 3, 6, 1, 4, 1, 5597, 30, 1, 0, 10, 1, 26), MeinbergSwitch()).setMaxAccess("readwrite") +if mibBuilder.loadTexts: mbgLtNgCfgVirtualIfServiceHttp.setStatus('current') +mbgLtNgCfgVirtualIfServiceHttps = MibTableColumn((1, 3, 6, 1, 4, 1, 5597, 30, 1, 0, 10, 1, 27), MeinbergSwitch()).setMaxAccess("readwrite") +if mibBuilder.loadTexts: mbgLtNgCfgVirtualIfServiceHttps.setStatus('current') +mbgLtNgCfgVirtualIfServiceTelnet = MibTableColumn((1, 3, 6, 1, 4, 1, 5597, 30, 1, 0, 10, 1, 28), MeinbergSwitch()).setMaxAccess("readwrite") +if mibBuilder.loadTexts: mbgLtNgCfgVirtualIfServiceTelnet.setStatus('current') +mbgLtNgCfgVirtualIfServiceSsh = MibTableColumn((1, 3, 6, 1, 4, 1, 5597, 30, 1, 0, 10, 1, 29), MeinbergSwitch()).setMaxAccess("readwrite") +if mibBuilder.loadTexts: mbgLtNgCfgVirtualIfServiceSsh.setStatus('current') +mbgLtNgCfgVirtualIfServiceSnmp = MibTableColumn((1, 3, 6, 1, 4, 1, 5597, 30, 1, 0, 10, 1, 30), MeinbergSwitch()).setMaxAccess("readwrite") +if mibBuilder.loadTexts: mbgLtNgCfgVirtualIfServiceSnmp.setStatus('current') +mbgLtNgCfgVirtualIfServiceFtp = MibTableColumn((1, 3, 6, 1, 4, 1, 5597, 30, 1, 0, 10, 1, 31), MeinbergSwitch()).setMaxAccess("readwrite") +if mibBuilder.loadTexts: mbgLtNgCfgVirtualIfServiceFtp.setStatus('current') +mbgLtNgCfgVirtualIfServiceTime = MibTableColumn((1, 3, 6, 1, 4, 1, 5597, 30, 1, 0, 10, 1, 32), MeinbergSwitch()).setMaxAccess("readwrite") +if mibBuilder.loadTexts: mbgLtNgCfgVirtualIfServiceTime.setStatus('current') +mbgLtNgCfgVirtualIfServiceDaytime = MibTableColumn((1, 3, 6, 1, 4, 1, 5597, 30, 1, 0, 10, 1, 33), MeinbergSwitch()).setMaxAccess("readwrite") +if mibBuilder.loadTexts: mbgLtNgCfgVirtualIfServiceDaytime.setStatus('current') +mbgLtNgCfgVirtualIfServiceFpc = MibTableColumn((1, 3, 6, 1, 4, 1, 5597, 30, 1, 0, 10, 1, 34), MeinbergSwitch()).setMaxAccess("readwrite") +if mibBuilder.loadTexts: mbgLtNgCfgVirtualIfServiceFpc.setStatus('current') +mbgLtNgCfgEthernetGenClusterPort = MibScalar((1, 3, 6, 1, 4, 1, 5597, 30, 1, 0, 11), Unsigned32().subtype(subtypeSpec=ValueRangeConstraint(0, 65535))).setMaxAccess("readwrite") +if mibBuilder.loadTexts: mbgLtNgCfgEthernetGenClusterPort.setStatus('current') +mbgLtNgCfgEthernetGenClusterIp = MibScalar((1, 3, 6, 1, 4, 1, 5597, 30, 1, 0, 12), DisplayString()).setMaxAccess("readwrite") +if mibBuilder.loadTexts: mbgLtNgCfgEthernetGenClusterIp.setStatus('current') +mbgLtNgCfgNotifications = MibIdentifier((1, 3, 6, 1, 4, 1, 5597, 30, 1, 1)) +mbgLtNgCfgSyslog = MibIdentifier((1, 3, 6, 1, 4, 1, 5597, 30, 1, 1, 0)) +mbgLtNgCfgSyslogServerAddr = MibScalar((1, 3, 6, 1, 4, 1, 5597, 30, 1, 1, 0, 1), DisplayString().clone('n/a')).setMaxAccess("readwrite") +if mibBuilder.loadTexts: mbgLtNgCfgSyslogServerAddr.setStatus('current') +mbgLtNgCfgSyslogLoglevel = MibScalar((1, 3, 6, 1, 4, 1, 5597, 30, 1, 1, 0, 2), Integer32().subtype(subtypeSpec=ConstraintsUnion(SingleValueConstraint(0, 1, 2, 3, 4, 5, 6))).clone(namedValues=NamedValues(("emergency", 0), ("alert", 1), ("critical", 2), ("error", 3), ("warning", 4), ("notice", 5), ("info", 6)))).setMaxAccess("readwrite") +if mibBuilder.loadTexts: mbgLtNgCfgSyslogLoglevel.setStatus('current') +mbgLtNgCfgEmail = MibIdentifier((1, 3, 6, 1, 4, 1, 5597, 30, 1, 1, 1)) +mbgLtNgCfgEmailTo = MibScalar((1, 3, 6, 1, 4, 1, 5597, 30, 1, 1, 1, 1), DisplayString().clone('n/a')).setMaxAccess("readwrite") +if mibBuilder.loadTexts: mbgLtNgCfgEmailTo.setStatus('current') +mbgLtNgCfgEmailFrom = MibScalar((1, 3, 6, 1, 4, 1, 5597, 30, 1, 1, 1, 2), DisplayString().clone('n/a')).setMaxAccess("readwrite") +if mibBuilder.loadTexts: mbgLtNgCfgEmailFrom.setStatus('current') +mbgLtNgCfgEmailSmarthostAddr = MibScalar((1, 3, 6, 1, 4, 1, 5597, 30, 1, 1, 1, 3), DisplayString().clone('n/a')).setMaxAccess("readwrite") +if mibBuilder.loadTexts: mbgLtNgCfgEmailSmarthostAddr.setStatus('current') +mbgLtNgCfgEmailSmarthostPort = MibScalar((1, 3, 6, 1, 4, 1, 5597, 30, 1, 1, 1, 4), Unsigned32().subtype(subtypeSpec=ValueRangeConstraint(0, 65535))).setMaxAccess("readwrite") +if mibBuilder.loadTexts: mbgLtNgCfgEmailSmarthostPort.setStatus('current') +mbgLtNgCfgEmailSmarthostAuth = MibScalar((1, 3, 6, 1, 4, 1, 5597, 30, 1, 1, 1, 5), MeinbergSwitch()).setMaxAccess("readwrite") +if mibBuilder.loadTexts: mbgLtNgCfgEmailSmarthostAuth.setStatus('current') +mbgLtNgCfgEmailSmarthostAuthUser = MibScalar((1, 3, 6, 1, 4, 1, 5597, 30, 1, 1, 1, 6), DisplayString().clone('n/a')).setMaxAccess("readwrite") +if mibBuilder.loadTexts: mbgLtNgCfgEmailSmarthostAuthUser.setStatus('current') +mbgLtNgCfgEmailSmarthostAuthPw = MibScalar((1, 3, 6, 1, 4, 1, 5597, 30, 1, 1, 1, 7), DisplayString().clone('n/a')).setMaxAccess("readwrite") +if mibBuilder.loadTexts: mbgLtNgCfgEmailSmarthostAuthPw.setStatus('current') +mbgLtNgCfgWinpopup = MibIdentifier((1, 3, 6, 1, 4, 1, 5597, 30, 1, 1, 2)) +mbgLtNgCfgWmailAddress1 = MibScalar((1, 3, 6, 1, 4, 1, 5597, 30, 1, 1, 2, 1), DisplayString().clone('n/a')).setMaxAccess("readwrite") +if mibBuilder.loadTexts: mbgLtNgCfgWmailAddress1.setStatus('current') +mbgLtNgCfgWmailAddress2 = MibScalar((1, 3, 6, 1, 4, 1, 5597, 30, 1, 1, 2, 2), DisplayString().clone('n/a')).setMaxAccess("readwrite") +if mibBuilder.loadTexts: mbgLtNgCfgWmailAddress2.setStatus('current') +mbgLtNgCfgSNMP = MibIdentifier((1, 3, 6, 1, 4, 1, 5597, 30, 1, 1, 3)) +mbgLtNgCfgSnmpTrapRecTable = MibTable((1, 3, 6, 1, 4, 1, 5597, 30, 1, 1, 3, 1), ) +if mibBuilder.loadTexts: mbgLtNgCfgSnmpTrapRecTable.setStatus('current') +mbgLtNgCfgSnmpTrapRecTableEntry = MibTableRow((1, 3, 6, 1, 4, 1, 5597, 30, 1, 1, 3, 1, 1), ).setIndexNames((0, "MBG-SNMP-LTNG-MIB", "mbgLtNgCfgSnmpTrapRecIndex")) +if mibBuilder.loadTexts: mbgLtNgCfgSnmpTrapRecTableEntry.setStatus('current') +mbgLtNgCfgSnmpTrapRecIndex = MibTableColumn((1, 3, 6, 1, 4, 1, 5597, 30, 1, 1, 3, 1, 1, 1), Unsigned32().subtype(subtypeSpec=ValueRangeConstraint(0, 4))) +if mibBuilder.loadTexts: mbgLtNgCfgSnmpTrapRecIndex.setStatus('current') +mbgLtNgCfgSnmpTrapRecAddr = MibTableColumn((1, 3, 6, 1, 4, 1, 5597, 30, 1, 1, 3, 1, 1, 2), DisplayString().clone('n/a')).setMaxAccess("readwrite") +if mibBuilder.loadTexts: mbgLtNgCfgSnmpTrapRecAddr.setStatus('current') +mbgLtNgCfgSnmpTrapRecCommunity = MibTableColumn((1, 3, 6, 1, 4, 1, 5597, 30, 1, 1, 3, 1, 1, 3), DisplayString().clone('n/a')).setMaxAccess("readwrite") +if mibBuilder.loadTexts: mbgLtNgCfgSnmpTrapRecCommunity.setStatus('current') +mbgLtNgCfgSnmpTrapRecVersion = MibTableColumn((1, 3, 6, 1, 4, 1, 5597, 30, 1, 1, 3, 1, 1, 4), Integer32().subtype(subtypeSpec=ConstraintsUnion(SingleValueConstraint(1, 2, 3))).clone(namedValues=NamedValues(("v1", 1), ("v2c", 2), ("v3", 3))).clone(1)).setMaxAccess("readwrite") +if mibBuilder.loadTexts: mbgLtNgCfgSnmpTrapRecVersion.setStatus('current') +mbgLtNgCfgSnmpReadCommunity = MibScalar((1, 3, 6, 1, 4, 1, 5597, 30, 1, 1, 3, 2), DisplayString().clone('****')).setMaxAccess("readwrite") +if mibBuilder.loadTexts: mbgLtNgCfgSnmpReadCommunity.setStatus('current') +mbgLtNgCfgSnmpWriteCommunity = MibScalar((1, 3, 6, 1, 4, 1, 5597, 30, 1, 1, 3, 3), DisplayString().clone('****')).setMaxAccess("readwrite") +if mibBuilder.loadTexts: mbgLtNgCfgSnmpWriteCommunity.setStatus('current') +mbgLtNgCfgSnmpContact = MibScalar((1, 3, 6, 1, 4, 1, 5597, 30, 1, 1, 3, 4), DisplayString().clone('n/a')).setMaxAccess("readwrite") +if mibBuilder.loadTexts: mbgLtNgCfgSnmpContact.setStatus('current') +mbgLtNgCfgSnmpLocation = MibScalar((1, 3, 6, 1, 4, 1, 5597, 30, 1, 1, 3, 5), DisplayString().clone('n/a')).setMaxAccess("readwrite") +if mibBuilder.loadTexts: mbgLtNgCfgSnmpLocation.setStatus('current') +mbgLtNgCfgSnmpV3UserName = MibScalar((1, 3, 6, 1, 4, 1, 5597, 30, 1, 1, 3, 6), DisplayString().clone('n/a')).setMaxAccess("readwrite") +if mibBuilder.loadTexts: mbgLtNgCfgSnmpV3UserName.setStatus('current') +mbgLtNgCfgSnmpV3UserRights = MibScalar((1, 3, 6, 1, 4, 1, 5597, 30, 1, 1, 3, 7), Integer32().subtype(subtypeSpec=ConstraintsUnion(SingleValueConstraint(0, 1))).clone(namedValues=NamedValues(("readonly", 0), ("readwrite", 1)))).setMaxAccess("readwrite") +if mibBuilder.loadTexts: mbgLtNgCfgSnmpV3UserRights.setStatus('current') +mbgLtNgCfgSnmpV3Context = MibScalar((1, 3, 6, 1, 4, 1, 5597, 30, 1, 1, 3, 8), DisplayString().clone('n/a')).setMaxAccess("readwrite") +if mibBuilder.loadTexts: mbgLtNgCfgSnmpV3Context.setStatus('current') +mbgLtNgCfgSnmpV3SecurityLevel = MibScalar((1, 3, 6, 1, 4, 1, 5597, 30, 1, 1, 3, 9), DisplayString().clone('n/a')).setMaxAccess("readwrite") +if mibBuilder.loadTexts: mbgLtNgCfgSnmpV3SecurityLevel.setStatus('current') +mbgLtNgCfgSnmpV3AuthProtocol = MibScalar((1, 3, 6, 1, 4, 1, 5597, 30, 1, 1, 3, 10), DisplayString().clone('n/a')).setMaxAccess("readwrite") +if mibBuilder.loadTexts: mbgLtNgCfgSnmpV3AuthProtocol.setStatus('current') +mbgLtNgCfgSnmpV3AuthPassphrase = MibScalar((1, 3, 6, 1, 4, 1, 5597, 30, 1, 1, 3, 11), DisplayString().clone('****')).setMaxAccess("readwrite") +if mibBuilder.loadTexts: mbgLtNgCfgSnmpV3AuthPassphrase.setStatus('current') +mbgLtNgCfgSnmpV3PrivProtocol = MibScalar((1, 3, 6, 1, 4, 1, 5597, 30, 1, 1, 3, 12), DisplayString().clone('n/a')).setMaxAccess("readwrite") +if mibBuilder.loadTexts: mbgLtNgCfgSnmpV3PrivProtocol.setStatus('current') +mbgLtNgCfgSnmpV3PrivPassphrase = MibScalar((1, 3, 6, 1, 4, 1, 5597, 30, 1, 1, 3, 13), DisplayString().clone('****')).setMaxAccess("readwrite") +if mibBuilder.loadTexts: mbgLtNgCfgSnmpV3PrivPassphrase.setStatus('current') +mbgLtNgCfgSnmpRetries = MibScalar((1, 3, 6, 1, 4, 1, 5597, 30, 1, 1, 3, 14), Unsigned32().clone(3)).setMaxAccess("readwrite") +if mibBuilder.loadTexts: mbgLtNgCfgSnmpRetries.setStatus('current') +mbgLtNgCfgSnmpTimeout = MibScalar((1, 3, 6, 1, 4, 1, 5597, 30, 1, 1, 3, 15), Unsigned32().clone(3)).setUnits('sec').setMaxAccess("readwrite") +if mibBuilder.loadTexts: mbgLtNgCfgSnmpTimeout.setStatus('current') +mbgLtNgCfgSnmpEnabledVersion = MibScalar((1, 3, 6, 1, 4, 1, 5597, 30, 1, 1, 3, 16), Integer32().subtype(subtypeSpec=ConstraintsUnion(SingleValueConstraint(0, 1, 2))).clone(namedValues=NamedValues(("v1ANDv2c", 0), ("v3only", 1), ("v1ANDv2cANDv3", 2)))).setMaxAccess("readwrite") +if mibBuilder.loadTexts: mbgLtNgCfgSnmpEnabledVersion.setStatus('current') +mbgLtNgCfgWalldisplay = MibIdentifier((1, 3, 6, 1, 4, 1, 5597, 30, 1, 1, 4)) +mbgLtNgCfgVP100Display1Addr = MibScalar((1, 3, 6, 1, 4, 1, 5597, 30, 1, 1, 4, 1), DisplayString().clone('n/a')).setMaxAccess("readwrite") +if mibBuilder.loadTexts: mbgLtNgCfgVP100Display1Addr.setStatus('current') +mbgLtNgCfgVP100Display1SN = MibScalar((1, 3, 6, 1, 4, 1, 5597, 30, 1, 1, 4, 2), DisplayString().clone('n/a')).setMaxAccess("readwrite") +if mibBuilder.loadTexts: mbgLtNgCfgVP100Display1SN.setStatus('current') +mbgLtNgCfgVP100Display2Addr = MibScalar((1, 3, 6, 1, 4, 1, 5597, 30, 1, 1, 4, 3), DisplayString().clone('n/a')).setMaxAccess("readwrite") +if mibBuilder.loadTexts: mbgLtNgCfgVP100Display2Addr.setStatus('current') +mbgLtNgCfgVP100Display2SN = MibScalar((1, 3, 6, 1, 4, 1, 5597, 30, 1, 1, 4, 4), DisplayString().clone('n/a')).setMaxAccess("readwrite") +if mibBuilder.loadTexts: mbgLtNgCfgVP100Display2SN.setStatus('current') +mbgLtNgCfgNtpClientMonitoring = MibIdentifier((1, 3, 6, 1, 4, 1, 5597, 30, 1, 1, 5)) +mbgLtNgCfgNtpMaxClientOffset = MibScalar((1, 3, 6, 1, 4, 1, 5597, 30, 1, 1, 5, 1), Unsigned32().clone(10)).setUnits('ms').setMaxAccess("readwrite") +if mibBuilder.loadTexts: mbgLtNgCfgNtpMaxClientOffset.setStatus('current') +mbgLtNgCfgNtpMaxClientStratum = MibScalar((1, 3, 6, 1, 4, 1, 5597, 30, 1, 1, 5, 2), Unsigned32().subtype(subtypeSpec=ValueRangeConstraint(1, 16)).clone(10)).setMaxAccess("readwrite") +if mibBuilder.loadTexts: mbgLtNgCfgNtpMaxClientStratum.setStatus('current') +mbgLtNgCfgTrapTrigger = MibIdentifier((1, 3, 6, 1, 4, 1, 5597, 30, 1, 1, 6)) +mbgLtNgCfgTrapNormalOperation = MibScalar((1, 3, 6, 1, 4, 1, 5597, 30, 1, 1, 6, 1), DisplayString().clone('n/a')).setMaxAccess("readwrite") +if mibBuilder.loadTexts: mbgLtNgCfgTrapNormalOperation.setStatus('current') +mbgLtNgCfgTrapNtpNotSync = MibScalar((1, 3, 6, 1, 4, 1, 5597, 30, 1, 1, 6, 2), DisplayString().clone('n/a')).setMaxAccess("readwrite") +if mibBuilder.loadTexts: mbgLtNgCfgTrapNtpNotSync.setStatus('current') +mbgLtNgCfgTrapNtpSync = MibScalar((1, 3, 6, 1, 4, 1, 5597, 30, 1, 1, 6, 3), DisplayString().clone('n/a')).setMaxAccess("readwrite") +if mibBuilder.loadTexts: mbgLtNgCfgTrapNtpSync.setStatus('current') +mbgLtNgCfgTrapNtpStopped = MibScalar((1, 3, 6, 1, 4, 1, 5597, 30, 1, 1, 6, 4), DisplayString().clone('n/a')).setMaxAccess("readwrite") +if mibBuilder.loadTexts: mbgLtNgCfgTrapNtpStopped.setStatus('current') +mbgLtNgCfgTrapServerBoot = MibScalar((1, 3, 6, 1, 4, 1, 5597, 30, 1, 1, 6, 5), DisplayString().clone('n/a')).setMaxAccess("readwrite") +if mibBuilder.loadTexts: mbgLtNgCfgTrapServerBoot.setStatus('current') +mbgLtNgCfgTrapRefclockNotResponding = MibScalar((1, 3, 6, 1, 4, 1, 5597, 30, 1, 1, 6, 6), DisplayString().clone('n/a')).setMaxAccess("readwrite") +if mibBuilder.loadTexts: mbgLtNgCfgTrapRefclockNotResponding.setStatus('current') +mbgLtNgCfgTrapRefclockSynchronized = MibScalar((1, 3, 6, 1, 4, 1, 5597, 30, 1, 1, 6, 7), DisplayString().clone('n/a')).setMaxAccess("readwrite") +if mibBuilder.loadTexts: mbgLtNgCfgTrapRefclockSynchronized.setStatus('current') +mbgLtNgCfgTrapRefclockNotSynchronized = MibScalar((1, 3, 6, 1, 4, 1, 5597, 30, 1, 1, 6, 8), DisplayString().clone('n/a')).setMaxAccess("readwrite") +if mibBuilder.loadTexts: mbgLtNgCfgTrapRefclockNotSynchronized.setStatus('current') +mbgLtNgCfgTrapSecRefclockNotResponding = MibScalar((1, 3, 6, 1, 4, 1, 5597, 30, 1, 1, 6, 9), DisplayString().clone('n/a')).setMaxAccess("readwrite") +if mibBuilder.loadTexts: mbgLtNgCfgTrapSecRefclockNotResponding.setStatus('current') +mbgLtNgCfgTrapSecRefclockSynchronized = MibScalar((1, 3, 6, 1, 4, 1, 5597, 30, 1, 1, 6, 10), DisplayString().clone('n/a')).setMaxAccess("readwrite") +if mibBuilder.loadTexts: mbgLtNgCfgTrapSecRefclockSynchronized.setStatus('current') +mbgLtNgCfgTrapSecRefclockNotSynchronized = MibScalar((1, 3, 6, 1, 4, 1, 5597, 30, 1, 1, 6, 11), DisplayString().clone('n/a')).setMaxAccess("readwrite") +if mibBuilder.loadTexts: mbgLtNgCfgTrapSecRefclockNotSynchronized.setStatus('current') +mbgLtNgCfgTrapAntennaFaulty = MibScalar((1, 3, 6, 1, 4, 1, 5597, 30, 1, 1, 6, 12), DisplayString().clone('n/a')).setMaxAccess("readwrite") +if mibBuilder.loadTexts: mbgLtNgCfgTrapAntennaFaulty.setStatus('current') +mbgLtNgCfgTrapAntennaReconnect = MibScalar((1, 3, 6, 1, 4, 1, 5597, 30, 1, 1, 6, 13), DisplayString().clone('n/a')).setMaxAccess("readwrite") +if mibBuilder.loadTexts: mbgLtNgCfgTrapAntennaReconnect.setStatus('current') +mbgLtNgCfgTrapAntennaShortCircuit = MibScalar((1, 3, 6, 1, 4, 1, 5597, 30, 1, 1, 6, 14), DisplayString().clone('n/a')).setMaxAccess("readwrite") +if mibBuilder.loadTexts: mbgLtNgCfgTrapAntennaShortCircuit.setStatus('current') +mbgLtNgCfgTrapConfigChanged = MibScalar((1, 3, 6, 1, 4, 1, 5597, 30, 1, 1, 6, 15), DisplayString().clone('n/a')).setMaxAccess("readwrite") +if mibBuilder.loadTexts: mbgLtNgCfgTrapConfigChanged.setStatus('current') +mbgLtNgCfgTrapLeapSecAnnounced = MibScalar((1, 3, 6, 1, 4, 1, 5597, 30, 1, 1, 6, 16), DisplayString().clone('n/a')).setMaxAccess("readwrite") +if mibBuilder.loadTexts: mbgLtNgCfgTrapLeapSecAnnounced.setStatus('current') +mbgLtNgCfgTrapNtpClientLimitExceeded = MibScalar((1, 3, 6, 1, 4, 1, 5597, 30, 1, 1, 6, 17), DisplayString().clone('n/a')).setMaxAccess("readwrite") +if mibBuilder.loadTexts: mbgLtNgCfgTrapNtpClientLimitExceeded.setStatus('current') +mbgLtNgCfgTrapRefSrcLimitExceeded = MibScalar((1, 3, 6, 1, 4, 1, 5597, 30, 1, 1, 6, 18), DisplayString().clone('n/a')).setMaxAccess("readwrite") +if mibBuilder.loadTexts: mbgLtNgCfgTrapRefSrcLimitExceeded.setStatus('current') +mbgLtNgCfgTrapRefSrcDisconnected = MibScalar((1, 3, 6, 1, 4, 1, 5597, 30, 1, 1, 6, 19), DisplayString().clone('n/a')).setMaxAccess("readwrite") +if mibBuilder.loadTexts: mbgLtNgCfgTrapRefSrcDisconnected.setStatus('current') +mbgLtNgCfgTrapRefSrcReconnected = MibScalar((1, 3, 6, 1, 4, 1, 5597, 30, 1, 1, 6, 20), DisplayString().clone('n/a')).setMaxAccess("readwrite") +if mibBuilder.loadTexts: mbgLtNgCfgTrapRefSrcReconnected.setStatus('current') +mbgLtNgCfgTrapShsTimeLimitError = MibScalar((1, 3, 6, 1, 4, 1, 5597, 30, 1, 1, 6, 21), DisplayString().clone('n/a')).setMaxAccess("readwrite") +if mibBuilder.loadTexts: mbgLtNgCfgTrapShsTimeLimitError.setStatus('current') +mbgLtNgCfgTrapShsTimeLimitWarning = MibScalar((1, 3, 6, 1, 4, 1, 5597, 30, 1, 1, 6, 22), DisplayString().clone('n/a')).setMaxAccess("readwrite") +if mibBuilder.loadTexts: mbgLtNgCfgTrapShsTimeLimitWarning.setStatus('current') +mbgLtNgCfgTrapNetworkDown = MibScalar((1, 3, 6, 1, 4, 1, 5597, 30, 1, 1, 6, 23), DisplayString().clone('n/a')).setMaxAccess("readwrite") +if mibBuilder.loadTexts: mbgLtNgCfgTrapNetworkDown.setStatus('current') +mbgLtNgCfgTrapNetworkUp = MibScalar((1, 3, 6, 1, 4, 1, 5597, 30, 1, 1, 6, 24), DisplayString().clone('n/a')).setMaxAccess("readwrite") +if mibBuilder.loadTexts: mbgLtNgCfgTrapNetworkUp.setStatus('current') +mbgLtNgCfgTrapPowerSupplyUp = MibScalar((1, 3, 6, 1, 4, 1, 5597, 30, 1, 1, 6, 25), DisplayString().clone('n/a')).setMaxAccess("readwrite") +if mibBuilder.loadTexts: mbgLtNgCfgTrapPowerSupplyUp.setStatus('current') +mbgLtNgCfgTrapPowerSupplyDown = MibScalar((1, 3, 6, 1, 4, 1, 5597, 30, 1, 1, 6, 26), DisplayString().clone('n/a')).setMaxAccess("readwrite") +if mibBuilder.loadTexts: mbgLtNgCfgTrapPowerSupplyDown.setStatus('current') +mbgLtNgCfgTrapFdmError = MibScalar((1, 3, 6, 1, 4, 1, 5597, 30, 1, 1, 6, 27), DisplayString().clone('n/a')).setMaxAccess("readwrite") +if mibBuilder.loadTexts: mbgLtNgCfgTrapFdmError.setStatus('current') +mbgLtNgCfgTrapLowSystemResources = MibScalar((1, 3, 6, 1, 4, 1, 5597, 30, 1, 1, 6, 28), DisplayString().clone('n/a')).setMaxAccess("readwrite") +if mibBuilder.loadTexts: mbgLtNgCfgTrapLowSystemResources.setStatus('current') +mbgLtNgCfgTrapPtpNetworkDown = MibScalar((1, 3, 6, 1, 4, 1, 5597, 30, 1, 1, 6, 29), DisplayString().clone('n/a')).setMaxAccess("readwrite") +if mibBuilder.loadTexts: mbgLtNgCfgTrapPtpNetworkDown.setStatus('current') +mbgLtNgCfgTrapPtpNetworkUp = MibScalar((1, 3, 6, 1, 4, 1, 5597, 30, 1, 1, 6, 30), DisplayString().clone('n/a')).setMaxAccess("readwrite") +if mibBuilder.loadTexts: mbgLtNgCfgTrapPtpNetworkUp.setStatus('current') +mbgLtNgCfgTrapPtpStateChanged = MibScalar((1, 3, 6, 1, 4, 1, 5597, 30, 1, 1, 6, 31), DisplayString().clone('n/a')).setMaxAccess("readwrite") +if mibBuilder.loadTexts: mbgLtNgCfgTrapPtpStateChanged.setStatus('current') +mbgLtNgCfgTrapPtpError = MibScalar((1, 3, 6, 1, 4, 1, 5597, 30, 1, 1, 6, 32), DisplayString().clone('n/a')).setMaxAccess("readwrite") +if mibBuilder.loadTexts: mbgLtNgCfgTrapPtpError.setStatus('current') +mbgLtNgCfgTrapFanDown = MibScalar((1, 3, 6, 1, 4, 1, 5597, 30, 1, 1, 6, 33), DisplayString().clone('n/a')).setMaxAccess("readwrite") +if mibBuilder.loadTexts: mbgLtNgCfgTrapFanDown.setStatus('current') +mbgLtNgCfgTrapFanUp = MibScalar((1, 3, 6, 1, 4, 1, 5597, 30, 1, 1, 6, 34), DisplayString().clone('n/a')).setMaxAccess("readwrite") +if mibBuilder.loadTexts: mbgLtNgCfgTrapFanUp.setStatus('current') +mbgLtNgCfgRepeatEvent = MibScalar((1, 3, 6, 1, 4, 1, 5597, 30, 1, 1, 6, 35), Integer32().subtype(subtypeSpec=ConstraintsUnion(SingleValueConstraint(0, 1, 2, 3))).clone(namedValues=NamedValues(("never", 0), ("everyMinute", 1), ("everyHour", 2), ("everyDay", 3)))).setMaxAccess("readwrite") +if mibBuilder.loadTexts: mbgLtNgCfgRepeatEvent.setStatus('current') +mbgLtNgCfgRepetitions = MibScalar((1, 3, 6, 1, 4, 1, 5597, 30, 1, 1, 6, 36), Unsigned32().subtype(subtypeSpec=ValueRangeConstraint(0, 50))).setMaxAccess("readwrite") +if mibBuilder.loadTexts: mbgLtNgCfgRepetitions.setStatus('current') +mbgLtNgCfgTrapWarmedUp = MibScalar((1, 3, 6, 1, 4, 1, 5597, 30, 1, 1, 6, 37), DisplayString().clone('n/a')).setMaxAccess("readwrite") +if mibBuilder.loadTexts: mbgLtNgCfgTrapWarmedUp.setStatus('current') +mbgLtNgCfgTrapNotWarmedUp = MibScalar((1, 3, 6, 1, 4, 1, 5597, 30, 1, 1, 6, 38), DisplayString().clone('n/a')).setMaxAccess("readwrite") +if mibBuilder.loadTexts: mbgLtNgCfgTrapNotWarmedUp.setStatus('current') +mbgLtNgCfgSecurity = MibIdentifier((1, 3, 6, 1, 4, 1, 5597, 30, 1, 2)) +mbgLtNgCfgLoginAccess = MibIdentifier((1, 3, 6, 1, 4, 1, 5597, 30, 1, 2, 0)) +mbgLtNgCfgDisableRootLogin = MibScalar((1, 3, 6, 1, 4, 1, 5597, 30, 1, 2, 0, 1), MeinbergSwitch()).setMaxAccess("readwrite") +if mibBuilder.loadTexts: mbgLtNgCfgDisableRootLogin.setStatus('current') +mbgLtNgCfgAllowNetworkDiscovery = MibScalar((1, 3, 6, 1, 4, 1, 5597, 30, 1, 2, 0, 2), MeinbergSwitch()).setMaxAccess("readwrite") +if mibBuilder.loadTexts: mbgLtNgCfgAllowNetworkDiscovery.setStatus('current') +mbgLtNgCfgFrontPanel = MibIdentifier((1, 3, 6, 1, 4, 1, 5597, 30, 1, 2, 1)) +mbgLtNgCfgLockFrontPanel = MibScalar((1, 3, 6, 1, 4, 1, 5597, 30, 1, 2, 1, 1), MeinbergSwitch()).setMaxAccess("readwrite") +if mibBuilder.loadTexts: mbgLtNgCfgLockFrontPanel.setStatus('current') +mbgLtNgCfgDisableUsbPort = MibScalar((1, 3, 6, 1, 4, 1, 5597, 30, 1, 2, 1, 2), MeinbergSwitch()).setMaxAccess("readwrite") +if mibBuilder.loadTexts: mbgLtNgCfgDisableUsbPort.setStatus('current') +mbgLtNgCfgSsh = MibIdentifier((1, 3, 6, 1, 4, 1, 5597, 30, 1, 2, 2)) +mbgLtNgCfgSshKeyLength = MibScalar((1, 3, 6, 1, 4, 1, 5597, 30, 1, 2, 2, 1), Unsigned32().subtype(subtypeSpec=ConstraintsUnion(ValueRangeConstraint(768, 768), ValueRangeConstraint(1024, 1024), ValueRangeConstraint(2048, 2048), ValueRangeConstraint(4096, 4096), ValueRangeConstraint(8192, 8192), ValueRangeConstraint(16384, 16384), ValueRangeConstraint(32768, 32768), )).clone(1024)).setUnits('bits').setMaxAccess("readwrite") +if mibBuilder.loadTexts: mbgLtNgCfgSshKeyLength.setStatus('current') +mbgLtNgCfgSshShellTimeout = MibScalar((1, 3, 6, 1, 4, 1, 5597, 30, 1, 2, 2, 2), Unsigned32().subtype(subtypeSpec=ConstraintsUnion(ValueRangeConstraint(0, 0), ValueRangeConstraint(60, 60), ValueRangeConstraint(120, 120), ValueRangeConstraint(300, 300), ValueRangeConstraint(600, 600), ValueRangeConstraint(3600, 3600), ValueRangeConstraint(10800, 10800), ValueRangeConstraint(18000, 18000), ValueRangeConstraint(86400, 86400), )).clone(300)).setUnits('seconds').setMaxAccess("readwrite") +if mibBuilder.loadTexts: mbgLtNgCfgSshShellTimeout.setStatus('current') +mbgLtNgCfgNtp = MibIdentifier((1, 3, 6, 1, 4, 1, 5597, 30, 1, 3)) +mbgLtNgCfgNtpTable = MibTable((1, 3, 6, 1, 4, 1, 5597, 30, 1, 3, 1), ) +if mibBuilder.loadTexts: mbgLtNgCfgNtpTable.setStatus('current') +mbgLtNgCfgNtpTableEntry = MibTableRow((1, 3, 6, 1, 4, 1, 5597, 30, 1, 3, 1, 1), ).setIndexNames((0, "MBG-SNMP-LTNG-MIB", "mbgLtNgCfgNtpIndex")) +if mibBuilder.loadTexts: mbgLtNgCfgNtpTableEntry.setStatus('current') +mbgLtNgCfgNtpIndex = MibTableColumn((1, 3, 6, 1, 4, 1, 5597, 30, 1, 3, 1, 1, 1), Unsigned32().subtype(subtypeSpec=ValueRangeConstraint(1, 7))) +if mibBuilder.loadTexts: mbgLtNgCfgNtpIndex.setStatus('current') +mbgLtNgCfgNtpServerIP = MibTableColumn((1, 3, 6, 1, 4, 1, 5597, 30, 1, 3, 1, 1, 2), DisplayString().clone('n/a')).setMaxAccess("readwrite") +if mibBuilder.loadTexts: mbgLtNgCfgNtpServerIP.setStatus('current') +mbgLtNgCfgNtpServerKey = MibTableColumn((1, 3, 6, 1, 4, 1, 5597, 30, 1, 3, 1, 1, 3), Unsigned32().subtype(subtypeSpec=ValueRangeConstraint(0, 255))).setMaxAccess("readwrite") +if mibBuilder.loadTexts: mbgLtNgCfgNtpServerKey.setStatus('current') +mbgLtNgCfgNtpServerAutokey = MibTableColumn((1, 3, 6, 1, 4, 1, 5597, 30, 1, 3, 1, 1, 4), MeinbergSwitch()).setMaxAccess("readwrite") +if mibBuilder.loadTexts: mbgLtNgCfgNtpServerAutokey.setStatus('current') +mbgLtNgCfgNtpServerMinpoll = MibTableColumn((1, 3, 6, 1, 4, 1, 5597, 30, 1, 3, 1, 1, 5), Unsigned32().subtype(subtypeSpec=ValueRangeConstraint(4, 10)).clone(6)).setMaxAccess("readwrite") +if mibBuilder.loadTexts: mbgLtNgCfgNtpServerMinpoll.setStatus('current') +mbgLtNgCfgNtpServerMaxpoll = MibTableColumn((1, 3, 6, 1, 4, 1, 5597, 30, 1, 3, 1, 1, 6), Unsigned32().subtype(subtypeSpec=ValueRangeConstraint(4, 10)).clone(6)).setMaxAccess("readwrite") +if mibBuilder.loadTexts: mbgLtNgCfgNtpServerMaxpoll.setStatus('current') +mbgLtNgCfgNtpServerIburst = MibTableColumn((1, 3, 6, 1, 4, 1, 5597, 30, 1, 3, 1, 1, 7), MeinbergSwitch()).setMaxAccess("readwrite") +if mibBuilder.loadTexts: mbgLtNgCfgNtpServerIburst.setStatus('current') +mbgLtNgCfgNtpBMTable = MibTable((1, 3, 6, 1, 4, 1, 5597, 30, 1, 3, 2), ) +if mibBuilder.loadTexts: mbgLtNgCfgNtpBMTable.setStatus('current') +mbgLtNgCfgNtpBMTableEntry = MibTableRow((1, 3, 6, 1, 4, 1, 5597, 30, 1, 3, 2, 1), ).setIndexNames((0, "MBG-SNMP-LTNG-MIB", "mbgLtNgCfgNtpBMIndex")) +if mibBuilder.loadTexts: mbgLtNgCfgNtpBMTableEntry.setStatus('current') +mbgLtNgCfgNtpBMIndex = MibTableColumn((1, 3, 6, 1, 4, 1, 5597, 30, 1, 3, 2, 1, 1), Unsigned32().subtype(subtypeSpec=ValueRangeConstraint(0, 16))) +if mibBuilder.loadTexts: mbgLtNgCfgNtpBMIndex.setStatus('current') +mbgLtNgCfgNtpBroadAddr = MibTableColumn((1, 3, 6, 1, 4, 1, 5597, 30, 1, 3, 2, 1, 2), DisplayString().clone('n/a')).setMaxAccess("readonly") +if mibBuilder.loadTexts: mbgLtNgCfgNtpBroadAddr.setStatus('current') +mbgLtNgCfgNtpBroadSymKey = MibTableColumn((1, 3, 6, 1, 4, 1, 5597, 30, 1, 3, 2, 1, 3), Unsigned32().subtype(subtypeSpec=ValueRangeConstraint(0, 10))).setMaxAccess("readonly") +if mibBuilder.loadTexts: mbgLtNgCfgNtpBroadSymKey.setStatus('current') +mbgLtNgCfgNtpBroadInterval = MibTableColumn((1, 3, 6, 1, 4, 1, 5597, 30, 1, 3, 2, 1, 4), Unsigned32().subtype(subtypeSpec=ValueRangeConstraint(0, 10))).setMaxAccess("readonly") +if mibBuilder.loadTexts: mbgLtNgCfgNtpBroadInterval.setStatus('current') +mbgLtNgCfgNtpBroadUseAutokey = MibTableColumn((1, 3, 6, 1, 4, 1, 5597, 30, 1, 3, 2, 1, 5), MeinbergSwitch()).setMaxAccess("readonly") +if mibBuilder.loadTexts: mbgLtNgCfgNtpBroadUseAutokey.setStatus('current') +mbgLtNgCfgNtpEnableMulticast = MibScalar((1, 3, 6, 1, 4, 1, 5597, 30, 1, 3, 3), MeinbergSwitch()).setMaxAccess("readwrite") +if mibBuilder.loadTexts: mbgLtNgCfgNtpEnableMulticast.setStatus('current') +mbgLtNgCfgNtpMultiAddr = MibScalar((1, 3, 6, 1, 4, 1, 5597, 30, 1, 3, 4), DisplayString().clone('n/a')).setMaxAccess("readwrite") +if mibBuilder.loadTexts: mbgLtNgCfgNtpMultiAddr.setStatus('current') +mbgLtNgCfgNtpMultiInterval = MibScalar((1, 3, 6, 1, 4, 1, 5597, 30, 1, 3, 5), Unsigned32()).setMaxAccess("readwrite") +if mibBuilder.loadTexts: mbgLtNgCfgNtpMultiInterval.setStatus('current') +mbgLtNgCfgNtpMultiSymKey = MibScalar((1, 3, 6, 1, 4, 1, 5597, 30, 1, 3, 6), Unsigned32()).setMaxAccess("readwrite") +if mibBuilder.loadTexts: mbgLtNgCfgNtpMultiSymKey.setStatus('current') +mbgLtNgCfgNtpMultiUseAutokey = MibScalar((1, 3, 6, 1, 4, 1, 5597, 30, 1, 3, 7), MeinbergSwitch()).setMaxAccess("readwrite") +if mibBuilder.loadTexts: mbgLtNgCfgNtpMultiUseAutokey.setStatus('current') +mbgLtNgCfgNtpEnableManycast = MibScalar((1, 3, 6, 1, 4, 1, 5597, 30, 1, 3, 8), MeinbergSwitch()).setMaxAccess("readwrite") +if mibBuilder.loadTexts: mbgLtNgCfgNtpEnableManycast.setStatus('current') +mbgLtNgCfgNtpManyAddr = MibScalar((1, 3, 6, 1, 4, 1, 5597, 30, 1, 3, 9), DisplayString().clone('n/a')).setMaxAccess("readwrite") +if mibBuilder.loadTexts: mbgLtNgCfgNtpManyAddr.setStatus('current') +mbgLtNgCfgNtpManySymKey = MibScalar((1, 3, 6, 1, 4, 1, 5597, 30, 1, 3, 11), Unsigned32()).setMaxAccess("readwrite") +if mibBuilder.loadTexts: mbgLtNgCfgNtpManySymKey.setStatus('current') +mbgLtNgCfgNtpManyUseAutokey = MibScalar((1, 3, 6, 1, 4, 1, 5597, 30, 1, 3, 12), MeinbergSwitch()).setMaxAccess("readwrite") +if mibBuilder.loadTexts: mbgLtNgCfgNtpManyUseAutokey.setStatus('current') +mbgLtNgCfgNtpLocalClkStratum = MibScalar((1, 3, 6, 1, 4, 1, 5597, 30, 1, 3, 13), Unsigned32().subtype(subtypeSpec=ValueRangeConstraint(1, 16)).clone(12)).setMaxAccess("readwrite") +if mibBuilder.loadTexts: mbgLtNgCfgNtpLocalClkStratum.setStatus('current') +mbgLtNgCfgNtpDisableLocalClk = MibScalar((1, 3, 6, 1, 4, 1, 5597, 30, 1, 3, 14), MeinbergSwitch()).setMaxAccess("readwrite") +if mibBuilder.loadTexts: mbgLtNgCfgNtpDisableLocalClk.setStatus('current') +mbgLtNgCfgNtpSpoofLocalTime = MibScalar((1, 3, 6, 1, 4, 1, 5597, 30, 1, 3, 15), MeinbergSwitch()).setMaxAccess("readwrite") +if mibBuilder.loadTexts: mbgLtNgCfgNtpSpoofLocalTime.setStatus('obsolete') +mbgLtNgCfgNtpLocalTrustedKeys = MibScalar((1, 3, 6, 1, 4, 1, 5597, 30, 1, 3, 16), DisplayString().clone('n/a')).setMaxAccess("readwrite") +if mibBuilder.loadTexts: mbgLtNgCfgNtpLocalTrustedKeys.setStatus('current') +mbgLtNgCfgNtpTrusttime = MibScalar((1, 3, 6, 1, 4, 1, 5597, 30, 1, 3, 17), Unsigned32()).setUnits('seconds').setMaxAccess("readwrite") +if mibBuilder.loadTexts: mbgLtNgCfgNtpTrusttime.setStatus('current') +mbgLtNgCfgNtpTimeScale = MibScalar((1, 3, 6, 1, 4, 1, 5597, 30, 1, 3, 18), Integer32().subtype(subtypeSpec=ConstraintsUnion(SingleValueConstraint(0, 1))).clone(namedValues=NamedValues(("utc", 0), ("local", 1)))).setMaxAccess("readwrite") +if mibBuilder.loadTexts: mbgLtNgCfgNtpTimeScale.setStatus('current') +mbgLtNgCfgNtpEnableClientCounter = MibScalar((1, 3, 6, 1, 4, 1, 5597, 30, 1, 3, 19), MeinbergSwitch()).setMaxAccess("readwrite") +if mibBuilder.loadTexts: mbgLtNgCfgNtpEnableClientCounter.setStatus('current') +mbgLtNgCfgNtpEnableClientCounterDuration = MibScalar((1, 3, 6, 1, 4, 1, 5597, 30, 1, 3, 20), Integer32().subtype(subtypeSpec=ValueRangeConstraint(0, 2147483647))).setUnits('seconds').setMaxAccess("readwrite") +if mibBuilder.loadTexts: mbgLtNgCfgNtpEnableClientCounterDuration.setStatus('current') +mbgLtNgCfgPtp = MibIdentifier((1, 3, 6, 1, 4, 1, 5597, 30, 1, 4)) +mbgLtNgCfgPtpTable = MibTable((1, 3, 6, 1, 4, 1, 5597, 30, 1, 4, 1), ) +if mibBuilder.loadTexts: mbgLtNgCfgPtpTable.setStatus('current') +mbgLtNgCfgPtpTableEntry = MibTableRow((1, 3, 6, 1, 4, 1, 5597, 30, 1, 4, 1, 1), ).setIndexNames((0, "MBG-SNMP-LTNG-MIB", "mbgLtNgCfgPtpIndex")) +if mibBuilder.loadTexts: mbgLtNgCfgPtpTableEntry.setStatus('current') +mbgLtNgCfgPtpIndex = MibTableColumn((1, 3, 6, 1, 4, 1, 5597, 30, 1, 4, 1, 1, 1), Unsigned32()) +if mibBuilder.loadTexts: mbgLtNgCfgPtpIndex.setStatus('current') +mbgLtNgCfgPtpHostname = MibTableColumn((1, 3, 6, 1, 4, 1, 5597, 30, 1, 4, 1, 1, 2), DisplayString().clone('n/a')).setMaxAccess("readwrite") +if mibBuilder.loadTexts: mbgLtNgCfgPtpHostname.setStatus('current') +mbgLtNgCfgPtpDomainname = MibTableColumn((1, 3, 6, 1, 4, 1, 5597, 30, 1, 4, 1, 1, 3), DisplayString().clone('n/a')).setMaxAccess("readwrite") +if mibBuilder.loadTexts: mbgLtNgCfgPtpDomainname.setStatus('current') +mbgLtNgCfgPtpNameserver1 = MibTableColumn((1, 3, 6, 1, 4, 1, 5597, 30, 1, 4, 1, 1, 4), DisplayString().clone('n/a')).setMaxAccess("readwrite") +if mibBuilder.loadTexts: mbgLtNgCfgPtpNameserver1.setStatus('current') +mbgLtNgCfgPtpNameserver2 = MibTableColumn((1, 3, 6, 1, 4, 1, 5597, 30, 1, 4, 1, 1, 5), DisplayString().clone('n/a')).setMaxAccess("readwrite") +if mibBuilder.loadTexts: mbgLtNgCfgPtpNameserver2.setStatus('current') +mbgLtNgCfgPtpIpv4 = MibTableColumn((1, 3, 6, 1, 4, 1, 5597, 30, 1, 4, 1, 1, 6), DisplayString().clone('n/a')).setMaxAccess("readwrite") +if mibBuilder.loadTexts: mbgLtNgCfgPtpIpv4.setStatus('current') +mbgLtNgCfgPtpNetmask = MibTableColumn((1, 3, 6, 1, 4, 1, 5597, 30, 1, 4, 1, 1, 7), DisplayString().clone('n/a')).setMaxAccess("readwrite") +if mibBuilder.loadTexts: mbgLtNgCfgPtpNetmask.setStatus('current') +mbgLtNgCfgPtpGateway = MibTableColumn((1, 3, 6, 1, 4, 1, 5597, 30, 1, 4, 1, 1, 8), DisplayString().clone('n/a')).setMaxAccess("readwrite") +if mibBuilder.loadTexts: mbgLtNgCfgPtpGateway.setStatus('current') +mbgLtNgCfgPtpEnableVlan = MibTableColumn((1, 3, 6, 1, 4, 1, 5597, 30, 1, 4, 1, 1, 9), MeinbergSwitch()).setMaxAccess("readwrite") +if mibBuilder.loadTexts: mbgLtNgCfgPtpEnableVlan.setStatus('current') +mbgLtNgCfgPtpVlanId = MibTableColumn((1, 3, 6, 1, 4, 1, 5597, 30, 1, 4, 1, 1, 10), Unsigned32().subtype(subtypeSpec=ValueRangeConstraint(0, 4094))).setMaxAccess("readwrite") +if mibBuilder.loadTexts: mbgLtNgCfgPtpVlanId.setStatus('current') +mbgLtNgCfgPtpVlanPriority = MibTableColumn((1, 3, 6, 1, 4, 1, 5597, 30, 1, 4, 1, 1, 11), Unsigned32().subtype(subtypeSpec=ValueRangeConstraint(0, 7))).setMaxAccess("readwrite") +if mibBuilder.loadTexts: mbgLtNgCfgPtpVlanPriority.setStatus('current') +mbgLtNgCfgPtpEnableDhcp = MibTableColumn((1, 3, 6, 1, 4, 1, 5597, 30, 1, 4, 1, 1, 12), MeinbergSwitch()).setMaxAccess("readwrite") +if mibBuilder.loadTexts: mbgLtNgCfgPtpEnableDhcp.setStatus('current') +mbgLtNgCfgPtpIpv6Avail = MibTableColumn((1, 3, 6, 1, 4, 1, 5597, 30, 1, 4, 1, 1, 23), Integer32().subtype(subtypeSpec=ConstraintsUnion(SingleValueConstraint(0, 1))).clone(namedValues=NamedValues(("no", 0), ("yes", 1)))).setMaxAccess("readonly") +if mibBuilder.loadTexts: mbgLtNgCfgPtpIpv6Avail.setStatus('current') +mbgLtNgCfgPtpIpv6Mode = MibTableColumn((1, 3, 6, 1, 4, 1, 5597, 30, 1, 4, 1, 1, 24), Integer32().subtype(subtypeSpec=ConstraintsUnion(SingleValueConstraint(0, 1, 2))).clone(namedValues=NamedValues(("static", 0), ("ra", 1), ("dhcp", 2)))).setMaxAccess("readwrite") +if mibBuilder.loadTexts: mbgLtNgCfgPtpIpv6Mode.setStatus('current') +mbgLtNgCfgPtpIpv6Address = MibTableColumn((1, 3, 6, 1, 4, 1, 5597, 30, 1, 4, 1, 1, 25), DisplayString().clone('n/a')).setMaxAccess("readwrite") +if mibBuilder.loadTexts: mbgLtNgCfgPtpIpv6Address.setStatus('current') +mbgLtNgCfgPtpIpv6McastScope = MibTableColumn((1, 3, 6, 1, 4, 1, 5597, 30, 1, 4, 1, 1, 26), Integer32().subtype(subtypeSpec=ConstraintsUnion(SingleValueConstraint(1, 2, 3, 4, 5, 8, 14))).clone(namedValues=NamedValues(("intfLocal", 1), ("linkLocal", 2), ("realmLocal", 3), ("adminLocal", 4), ("siteLocal", 5), ("orgaLocal", 8), ("globalScope", 14))).clone(1)).setMaxAccess("readwrite") +if mibBuilder.loadTexts: mbgLtNgCfgPtpIpv6McastScope.setStatus('current') +mbgLtNgCfgPtpDisableSsh = MibTableColumn((1, 3, 6, 1, 4, 1, 5597, 30, 1, 4, 1, 1, 27), MeinbergSwitch()).setMaxAccess("readwrite") +if mibBuilder.loadTexts: mbgLtNgCfgPtpDisableSsh.setStatus('current') +mbgLtNgCfgPtpDscpClass = MibTableColumn((1, 3, 6, 1, 4, 1, 5597, 30, 1, 4, 1, 1, 28), Unsigned32().subtype(subtypeSpec=ValueRangeConstraint(0, 64))).setMaxAccess("readwrite") +if mibBuilder.loadTexts: mbgLtNgCfgPtpDscpClass.setStatus('current') +mbgLtNgCfgPtpMcastTtl = MibTableColumn((1, 3, 6, 1, 4, 1, 5597, 30, 1, 4, 1, 1, 29), Unsigned32().subtype(subtypeSpec=ValueRangeConstraint(0, 255)).clone(5)).setMaxAccess("readwrite") +if mibBuilder.loadTexts: mbgLtNgCfgPtpMcastTtl.setStatus('current') +mbgLtNgCfgPtpMode = MibTableColumn((1, 3, 6, 1, 4, 1, 5597, 30, 1, 4, 1, 1, 13), Integer32().subtype(subtypeSpec=ConstraintsUnion(SingleValueConstraint(0, 1, 2, 3, 4, 5, 6, 7))).clone(namedValues=NamedValues(("multicastSlave", 0), ("unicastSlave", 1), ("multicastMaster", 2), ("unicastMaster", 3), ("multicastAuto", 4), ("bothMaster", 5), ("ntpServer", 6), ("ntpClient", 7)))).setMaxAccess("readwrite") +if mibBuilder.loadTexts: mbgLtNgCfgPtpMode.setStatus('current') +mbgLtNgCfgPtpDelayMechanism = MibTableColumn((1, 3, 6, 1, 4, 1, 5597, 30, 1, 4, 1, 1, 14), Integer32().subtype(subtypeSpec=ConstraintsUnion(SingleValueConstraint(0, 1))).clone(namedValues=NamedValues(("e2e", 0), ("p2p", 1)))).setMaxAccess("readwrite") +if mibBuilder.loadTexts: mbgLtNgCfgPtpDelayMechanism.setStatus('current') +mbgLtNgCfgPtpNetworkProtocol = MibTableColumn((1, 3, 6, 1, 4, 1, 5597, 30, 1, 4, 1, 1, 15), Integer32().subtype(subtypeSpec=ConstraintsUnion(SingleValueConstraint(0, 1, 2, 3))).clone(namedValues=NamedValues(("reserved", 0), ("udpIpv4", 1), ("udpIpv6", 2), ("ieee8023", 3)))).setMaxAccess("readwrite") +if mibBuilder.loadTexts: mbgLtNgCfgPtpNetworkProtocol.setStatus('current') +mbgLtNgCfgPtpDomainNumber = MibTableColumn((1, 3, 6, 1, 4, 1, 5597, 30, 1, 4, 1, 1, 16), Unsigned32().subtype(subtypeSpec=ValueRangeConstraint(0, 255))).setMaxAccess("readwrite") +if mibBuilder.loadTexts: mbgLtNgCfgPtpDomainNumber.setStatus('current') +mbgLtNgCfgPtpPriority1 = MibTableColumn((1, 3, 6, 1, 4, 1, 5597, 30, 1, 4, 1, 1, 17), Unsigned32().subtype(subtypeSpec=ValueRangeConstraint(0, 255))).setMaxAccess("readwrite") +if mibBuilder.loadTexts: mbgLtNgCfgPtpPriority1.setStatus('current') +mbgLtNgCfgPtpPriority2 = MibTableColumn((1, 3, 6, 1, 4, 1, 5597, 30, 1, 4, 1, 1, 18), Unsigned32().subtype(subtypeSpec=ValueRangeConstraint(0, 255))).setMaxAccess("readwrite") +if mibBuilder.loadTexts: mbgLtNgCfgPtpPriority2.setStatus('current') +mbgLtNgCfgPtpSyncInterval = MibTableColumn((1, 3, 6, 1, 4, 1, 5597, 30, 1, 4, 1, 1, 19), Integer32().subtype(subtypeSpec=ValueRangeConstraint(-7, 7))).setMaxAccess("readwrite") +if mibBuilder.loadTexts: mbgLtNgCfgPtpSyncInterval.setStatus('current') +mbgLtNgCfgPtpAnnounceInterval = MibTableColumn((1, 3, 6, 1, 4, 1, 5597, 30, 1, 4, 1, 1, 20), Integer32().subtype(subtypeSpec=ValueRangeConstraint(-7, 7))).setMaxAccess("readwrite") +if mibBuilder.loadTexts: mbgLtNgCfgPtpAnnounceInterval.setStatus('current') +mbgLtNgCfgPtpDelayReqInterval = MibTableColumn((1, 3, 6, 1, 4, 1, 5597, 30, 1, 4, 1, 1, 21), Integer32().subtype(subtypeSpec=ValueRangeConstraint(-7, 7))).setMaxAccess("readwrite") +if mibBuilder.loadTexts: mbgLtNgCfgPtpDelayReqInterval.setStatus('current') +mbgLtNgCfgPtpTimescale = MibTableColumn((1, 3, 6, 1, 4, 1, 5597, 30, 1, 4, 1, 1, 22), Integer32().subtype(subtypeSpec=ConstraintsUnion(SingleValueConstraint(0, 1))).clone(namedValues=NamedValues(("arbitrary", 0), ("ptp", 1))).clone(1)).setMaxAccess("readwrite") +if mibBuilder.loadTexts: mbgLtNgCfgPtpTimescale.setStatus('current') +mbgLtNgCfgPtpOpMode = MibTableColumn((1, 3, 6, 1, 4, 1, 5597, 30, 1, 4, 1, 1, 30), Integer32().subtype(subtypeSpec=ConstraintsUnion(SingleValueConstraint(0, 1))).clone(namedValues=NamedValues(("ptp", 0), ("ntp", 1)))).setMaxAccess("readwrite") +if mibBuilder.loadTexts: mbgLtNgCfgPtpOpMode.setStatus('current') +mbgLtNgCfgPtpProfile = MibTableColumn((1, 3, 6, 1, 4, 1, 5597, 30, 1, 4, 1, 1, 31), Integer32().subtype(subtypeSpec=ConstraintsUnion(SingleValueConstraint(0, 1, 2, 3, 4, 5, 6))).clone(namedValues=NamedValues(("custom", 0), ("defE2eIeee15882008", 1), ("defP2pIeee15882008", 2), ("powIeeeC37238", 3), ("telItuTG82651", 4), ("telItuTG82751", 5), ("smpteSt20592", 6)))).setMaxAccess("readonly") +if mibBuilder.loadTexts: mbgLtNgCfgPtpProfile.setStatus('current') +mbgLtNgCfgPtpHybridMode = MibTableColumn((1, 3, 6, 1, 4, 1, 5597, 30, 1, 4, 1, 1, 32), MeinbergSwitch()).setMaxAccess("readwrite") +if mibBuilder.loadTexts: mbgLtNgCfgPtpHybridMode.setStatus('current') +mbgLtNgCfgPtpUcastMstAddr = MibTableColumn((1, 3, 6, 1, 4, 1, 5597, 30, 1, 4, 1, 1, 33), DisplayString().clone('n/a')).setMaxAccess("readwrite") +if mibBuilder.loadTexts: mbgLtNgCfgPtpUcastMstAddr.setStatus('current') +mbgLtNgCfgPtpAnnRcptTmout = MibTableColumn((1, 3, 6, 1, 4, 1, 5597, 30, 1, 4, 1, 1, 34), Unsigned32().subtype(subtypeSpec=ValueRangeConstraint(2, 255)).clone(3)).setMaxAccess("readwrite") +if mibBuilder.loadTexts: mbgLtNgCfgPtpAnnRcptTmout.setStatus('current') +mbgLtNgCfgPtpMessageDuration = MibTableColumn((1, 3, 6, 1, 4, 1, 5597, 30, 1, 4, 1, 1, 35), Unsigned32().subtype(subtypeSpec=ValueRangeConstraint(10, 65535)).clone(60)).setMaxAccess("readwrite") +if mibBuilder.loadTexts: mbgLtNgCfgPtpMessageDuration.setStatus('current') +mbgLtNgCfgPtpSyncEAvail = MibTableColumn((1, 3, 6, 1, 4, 1, 5597, 30, 1, 4, 1, 1, 36), MeinbergSwitch()).setMaxAccess("readonly") +if mibBuilder.loadTexts: mbgLtNgCfgPtpSyncEAvail.setStatus('current') +mbgLtNgCfgPtpSyncEEnabled = MibTableColumn((1, 3, 6, 1, 4, 1, 5597, 30, 1, 4, 1, 1, 37), MeinbergSwitch()).setMaxAccess("readwrite") +if mibBuilder.loadTexts: mbgLtNgCfgPtpSyncEEnabled.setStatus('current') +mbgLtNgCfgPtpSyncEQltLvlSelEnable = MibTableColumn((1, 3, 6, 1, 4, 1, 5597, 30, 1, 4, 1, 1, 38), MeinbergSwitch()).setMaxAccess("readwrite") +if mibBuilder.loadTexts: mbgLtNgCfgPtpSyncEQltLvlSelEnable.setStatus('current') +mbgLtNgCfgPtpSyncESdhNwOption = MibTableColumn((1, 3, 6, 1, 4, 1, 5597, 30, 1, 4, 1, 1, 39), Integer32().subtype(subtypeSpec=ConstraintsUnion(SingleValueConstraint(0, 1))).clone(namedValues=NamedValues(("opt1", 0), ("opt2", 1)))).setMaxAccess("readwrite") +if mibBuilder.loadTexts: mbgLtNgCfgPtpSyncESdhNwOption.setStatus('current') +mbgLtNgCfgPtpSyncEInputSsm = MibTableColumn((1, 3, 6, 1, 4, 1, 5597, 30, 1, 4, 1, 1, 40), Integer32().subtype(subtypeSpec=ConstraintsUnion(SingleValueConstraint(0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15))).clone(namedValues=NamedValues(("stuUkn", 0), ("prs", 1), ("prc", 2), ("inv3", 3), ("ssuATnc", 4), ("inv5", 5), ("inv6", 6), ("st2", 7), ("ssuB", 8), ("inv9", 9), ("eec2St3", 10), ("eec1Sec", 11), ("smc", 12), ("st3e", 13), ("prov", 14), ("dnuDus", 15)))).setMaxAccess("readwrite") +if mibBuilder.loadTexts: mbgLtNgCfgPtpSyncEInputSsm.setStatus('current') +mbgLtNgCfgPtpSyncEOutputSsm = MibTableColumn((1, 3, 6, 1, 4, 1, 5597, 30, 1, 4, 1, 1, 41), Integer32().subtype(subtypeSpec=ConstraintsUnion(SingleValueConstraint(0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15))).clone(namedValues=NamedValues(("stuUkn", 0), ("prs", 1), ("prc", 2), ("inv3", 3), ("ssuATnc", 4), ("inv5", 5), ("inv6", 6), ("st2", 7), ("ssuB", 8), ("inv9", 9), ("eec2St3", 10), ("eec1Sec", 11), ("smc", 12), ("st3e", 13), ("prov", 14), ("dnuDus", 15)))).setMaxAccess("readwrite") +if mibBuilder.loadTexts: mbgLtNgCfgPtpSyncEOutputSsm.setStatus('current') +mbgLtNgCfgPtpSyncEGbitCopperMode = MibTableColumn((1, 3, 6, 1, 4, 1, 5597, 30, 1, 4, 1, 1, 42), Integer32().subtype(subtypeSpec=ConstraintsUnion(SingleValueConstraint(0, 1, 2, 3, 4, 5))).clone(namedValues=NamedValues(("auto", 0), ("forceSyncEAuto", 1), ("forceOrIsMaster", 2), ("forceOrIsSlave", 3), ("preferMaster", 4), ("preferSlave", 5)))).setMaxAccess("readwrite") +if mibBuilder.loadTexts: mbgLtNgCfgPtpSyncEGbitCopperMode.setStatus('current') +mbgLtNgCfgPtpMiscEnable1Step = MibTableColumn((1, 3, 6, 1, 4, 1, 5597, 30, 1, 4, 1, 1, 43), MeinbergSwitch()).setMaxAccess("readwrite") +if mibBuilder.loadTexts: mbgLtNgCfgPtpMiscEnable1Step.setStatus('current') +mbgLtNgCfgPtpDisableMgmtMsgs = MibTableColumn((1, 3, 6, 1, 4, 1, 5597, 30, 1, 4, 1, 1, 44), MeinbergSwitch()).setMaxAccess("readwrite") +if mibBuilder.loadTexts: mbgLtNgCfgPtpDisableMgmtMsgs.setStatus('current') +mbgLtNgCfgPtpOutput1 = MibTableColumn((1, 3, 6, 1, 4, 1, 5597, 30, 1, 4, 1, 1, 45), Integer32().subtype(subtypeSpec=ConstraintsUnion(SingleValueConstraint(0, 1, 2, 3, 4, 5))).clone(namedValues=NamedValues(("off", 0), ("pps", 1), ("mhz10", 2), ("khzGPS2048", 3), ("mhzGPS10", 4), ("ppsGPS", 5)))).setMaxAccess("readwrite") +if mibBuilder.loadTexts: mbgLtNgCfgPtpOutput1.setStatus('current') +mbgLtNgCfgPtpOutput2 = MibTableColumn((1, 3, 6, 1, 4, 1, 5597, 30, 1, 4, 1, 1, 46), Integer32().subtype(subtypeSpec=ConstraintsUnion(SingleValueConstraint(0, 1, 2, 3, 4, 5))).clone(namedValues=NamedValues(("off", 0), ("pps", 1), ("mhz10", 2), ("khzGPS2048", 3), ("mhzGPS10", 4), ("ppsGPS", 5)))).setMaxAccess("readwrite") +if mibBuilder.loadTexts: mbgLtNgCfgPtpOutput2.setStatus('current') +mbgLtNgCfgPtpCmd = MibScalar((1, 3, 6, 1, 4, 1, 5597, 30, 1, 4, 2), Integer32().subtype(subtypeSpec=ConstraintsUnion(SingleValueConstraint(0, 1, 2, 3))).clone(namedValues=NamedValues(("none", 0), ("configure", 1), ("reset", 2), ("apply", 3)))).setMaxAccess("readwrite") +if mibBuilder.loadTexts: mbgLtNgCfgPtpCmd.setStatus('current') +mbgLtNgCfgSystem = MibIdentifier((1, 3, 6, 1, 4, 1, 5597, 30, 1, 5)) +mbgLtNgCfgGeneral = MibIdentifier((1, 3, 6, 1, 4, 1, 5597, 30, 1, 5, 0)) +mbgLtNgCfgWebLanguage = MibScalar((1, 3, 6, 1, 4, 1, 5597, 30, 1, 5, 0, 1), Integer32().subtype(subtypeSpec=ConstraintsUnion(SingleValueConstraint(0, 1, 2))).clone(namedValues=NamedValues(("notAvailable", 0), ("englisch", 1), ("german", 2)))).setMaxAccess("readonly") +if mibBuilder.loadTexts: mbgLtNgCfgWebLanguage.setStatus('current') +mbgLtNgCfgActivateChangesAsStartup = MibScalar((1, 3, 6, 1, 4, 1, 5597, 30, 1, 5, 0, 2), MeinbergSwitch().clone(1)).setMaxAccess("readwrite") +if mibBuilder.loadTexts: mbgLtNgCfgActivateChangesAsStartup.setStatus('current') +mbgLtNgCfgDisplay = MibIdentifier((1, 3, 6, 1, 4, 1, 5597, 30, 1, 5, 1)) +mbgLtNgCfgEnableFrontPanelLight = MibScalar((1, 3, 6, 1, 4, 1, 5597, 30, 1, 5, 1, 1), MeinbergSwitch()).setMaxAccess("readwrite") +if mibBuilder.loadTexts: mbgLtNgCfgEnableFrontPanelLight.setStatus('current') +mbgLtNgCommands = MibIdentifier((1, 3, 6, 1, 4, 1, 5597, 30, 2)) +mbgLtNgCmdExecute = MibScalar((1, 3, 6, 1, 4, 1, 5597, 30, 2, 1), Integer32().subtype(subtypeSpec=ConstraintsUnion(SingleValueConstraint(0, 1, 2, 3, 4, 5, 6, 7))).clone(namedValues=NamedValues(("none", 0), ("applyChanges", 1), ("saveChanges", 2), ("saveAndApplyChanges", 3), ("startFirmwareUpdate", 4), ("reboot", 5), ("resendErrorConditions", 6), ("sendTestNotifications", 7)))).setMaxAccess("readwrite") +if mibBuilder.loadTexts: mbgLtNgCmdExecute.setStatus('current') +mbgLtNgCmdSetTime = MibScalar((1, 3, 6, 1, 4, 1, 5597, 30, 2, 2), DisplayString().clone('n/a')).setMaxAccess("readwrite") +if mibBuilder.loadTexts: mbgLtNgCmdSetTime.setStatus('current') +mbgLtNgTrapNotifications = MibIdentifier((1, 3, 6, 1, 4, 1, 5597, 30, 3)) +mbgLtNgTraps = MibIdentifier((1, 3, 6, 1, 4, 1, 5597, 30, 3, 0)) +mbgLtNgTrapNTPNotSync = NotificationType((1, 3, 6, 1, 4, 1, 5597, 30, 3, 0, 1)).setObjects(("MBG-SNMP-LTNG-MIB", "mbgLtNgTrapMessage"), ("SNMPv2-MIB", "snmpTrapEnterprise"), ("SNMPv2-MIB", "sysName")) +if mibBuilder.loadTexts: mbgLtNgTrapNTPNotSync.setStatus('current') +mbgLtNgTrapNTPStopped = NotificationType((1, 3, 6, 1, 4, 1, 5597, 30, 3, 0, 2)).setObjects(("MBG-SNMP-LTNG-MIB", "mbgLtNgTrapMessage"), ("SNMPv2-MIB", "snmpTrapEnterprise"), ("SNMPv2-MIB", "sysName")) +if mibBuilder.loadTexts: mbgLtNgTrapNTPStopped.setStatus('current') +mbgLtNgTrapServerBoot = NotificationType((1, 3, 6, 1, 4, 1, 5597, 30, 3, 0, 3)).setObjects(("MBG-SNMP-LTNG-MIB", "mbgLtNgTrapMessage"), ("SNMPv2-MIB", "snmpTrapEnterprise"), ("SNMPv2-MIB", "sysName")) +if mibBuilder.loadTexts: mbgLtNgTrapServerBoot.setStatus('current') +mbgLtNgTrapReceiverNotResponding = NotificationType((1, 3, 6, 1, 4, 1, 5597, 30, 3, 0, 4)).setObjects(("MBG-SNMP-LTNG-MIB", "mbgLtNgTrapMessage"), ("SNMPv2-MIB", "snmpTrapEnterprise"), ("SNMPv2-MIB", "sysName")) +if mibBuilder.loadTexts: mbgLtNgTrapReceiverNotResponding.setStatus('current') +mbgLtNgTrapReceiverNotSync = NotificationType((1, 3, 6, 1, 4, 1, 5597, 30, 3, 0, 5)).setObjects(("MBG-SNMP-LTNG-MIB", "mbgLtNgTrapMessage"), ("SNMPv2-MIB", "snmpTrapEnterprise"), ("SNMPv2-MIB", "sysName")) +if mibBuilder.loadTexts: mbgLtNgTrapReceiverNotSync.setStatus('current') +mbgLtNgTrapAntennaFaulty = NotificationType((1, 3, 6, 1, 4, 1, 5597, 30, 3, 0, 6)).setObjects(("MBG-SNMP-LTNG-MIB", "mbgLtNgTrapMessage"), ("SNMPv2-MIB", "snmpTrapEnterprise"), ("SNMPv2-MIB", "sysName")) +if mibBuilder.loadTexts: mbgLtNgTrapAntennaFaulty.setStatus('current') +mbgLtNgTrapAntennaReconnect = NotificationType((1, 3, 6, 1, 4, 1, 5597, 30, 3, 0, 7)).setObjects(("MBG-SNMP-LTNG-MIB", "mbgLtNgTrapMessage"), ("SNMPv2-MIB", "snmpTrapEnterprise"), ("SNMPv2-MIB", "sysName")) +if mibBuilder.loadTexts: mbgLtNgTrapAntennaReconnect.setStatus('current') +mbgLtNgTrapConfigChanged = NotificationType((1, 3, 6, 1, 4, 1, 5597, 30, 3, 0, 8)).setObjects(("MBG-SNMP-LTNG-MIB", "mbgLtNgTrapMessage"), ("SNMPv2-MIB", "snmpTrapEnterprise"), ("SNMPv2-MIB", "sysName")) +if mibBuilder.loadTexts: mbgLtNgTrapConfigChanged.setStatus('current') +mbgLtNgTrapLeapSecondAnnounced = NotificationType((1, 3, 6, 1, 4, 1, 5597, 30, 3, 0, 9)).setObjects(("MBG-SNMP-LTNG-MIB", "mbgLtNgTrapMessage"), ("SNMPv2-MIB", "snmpTrapEnterprise"), ("SNMPv2-MIB", "sysName")) +if mibBuilder.loadTexts: mbgLtNgTrapLeapSecondAnnounced.setStatus('current') +mbgLtNgTrapSHSTimeLimitError = NotificationType((1, 3, 6, 1, 4, 1, 5597, 30, 3, 0, 10)).setObjects(("MBG-SNMP-LTNG-MIB", "mbgLtNgTrapMessage"), ("SNMPv2-MIB", "snmpTrapEnterprise"), ("SNMPv2-MIB", "sysName")) +if mibBuilder.loadTexts: mbgLtNgTrapSHSTimeLimitError.setStatus('current') +mbgLtNgTrapSecondaryRecNotSync = NotificationType((1, 3, 6, 1, 4, 1, 5597, 30, 3, 0, 11)).setObjects(("MBG-SNMP-LTNG-MIB", "mbgLtNgTrapMessage"), ("SNMPv2-MIB", "snmpTrapEnterprise"), ("SNMPv2-MIB", "sysName")) +if mibBuilder.loadTexts: mbgLtNgTrapSecondaryRecNotSync.setStatus('current') +mbgLtNgTrapPowerSupplyFailure = NotificationType((1, 3, 6, 1, 4, 1, 5597, 30, 3, 0, 12)).setObjects(("MBG-SNMP-LTNG-MIB", "mbgLtNgTrapMessage"), ("SNMPv2-MIB", "snmpTrapEnterprise"), ("SNMPv2-MIB", "sysName")) +if mibBuilder.loadTexts: mbgLtNgTrapPowerSupplyFailure.setStatus('current') +mbgLtNgTrapAntennaShortCircuit = NotificationType((1, 3, 6, 1, 4, 1, 5597, 30, 3, 0, 13)).setObjects(("MBG-SNMP-LTNG-MIB", "mbgLtNgTrapMessage"), ("SNMPv2-MIB", "snmpTrapEnterprise"), ("SNMPv2-MIB", "sysName")) +if mibBuilder.loadTexts: mbgLtNgTrapAntennaShortCircuit.setStatus('current') +mbgLtNgTrapReceiverSync = NotificationType((1, 3, 6, 1, 4, 1, 5597, 30, 3, 0, 14)).setObjects(("MBG-SNMP-LTNG-MIB", "mbgLtNgTrapMessage"), ("SNMPv2-MIB", "snmpTrapEnterprise"), ("SNMPv2-MIB", "sysName")) +if mibBuilder.loadTexts: mbgLtNgTrapReceiverSync.setStatus('current') +mbgLtNgTrapNTPClientAlarm = NotificationType((1, 3, 6, 1, 4, 1, 5597, 30, 3, 0, 15)).setObjects(("MBG-SNMP-LTNG-MIB", "mbgLtNgTrapMessage"), ("SNMPv2-MIB", "snmpTrapEnterprise"), ("SNMPv2-MIB", "sysName")) +if mibBuilder.loadTexts: mbgLtNgTrapNTPClientAlarm.setStatus('current') +mbgLtNgTrapPowerSupplyUp = NotificationType((1, 3, 6, 1, 4, 1, 5597, 30, 3, 0, 16)).setObjects(("MBG-SNMP-LTNG-MIB", "mbgLtNgTrapMessage"), ("SNMPv2-MIB", "snmpTrapEnterprise"), ("SNMPv2-MIB", "sysName")) +if mibBuilder.loadTexts: mbgLtNgTrapPowerSupplyUp.setStatus('current') +mbgLtNgTrapNetworkDown = NotificationType((1, 3, 6, 1, 4, 1, 5597, 30, 3, 0, 17)).setObjects(("MBG-SNMP-LTNG-MIB", "mbgLtNgTrapMessage"), ("SNMPv2-MIB", "snmpTrapEnterprise"), ("SNMPv2-MIB", "sysName")) +if mibBuilder.loadTexts: mbgLtNgTrapNetworkDown.setStatus('current') +mbgLtNgTrapNetworkUp = NotificationType((1, 3, 6, 1, 4, 1, 5597, 30, 3, 0, 18)).setObjects(("MBG-SNMP-LTNG-MIB", "mbgLtNgTrapMessage"), ("SNMPv2-MIB", "snmpTrapEnterprise"), ("SNMPv2-MIB", "sysName")) +if mibBuilder.loadTexts: mbgLtNgTrapNetworkUp.setStatus('current') +mbgLtNgTrapSecondaryRecNotResp = NotificationType((1, 3, 6, 1, 4, 1, 5597, 30, 3, 0, 19)).setObjects(("MBG-SNMP-LTNG-MIB", "mbgLtNgTrapMessage"), ("SNMPv2-MIB", "snmpTrapEnterprise"), ("SNMPv2-MIB", "sysName")) +if mibBuilder.loadTexts: mbgLtNgTrapSecondaryRecNotResp.setStatus('current') +mbgLtNgTrapXmrLimitExceeded = NotificationType((1, 3, 6, 1, 4, 1, 5597, 30, 3, 0, 30)).setObjects(("MBG-SNMP-LTNG-MIB", "mbgLtNgTrapMessage"), ("SNMPv2-MIB", "snmpTrapEnterprise"), ("SNMPv2-MIB", "sysName")) +if mibBuilder.loadTexts: mbgLtNgTrapXmrLimitExceeded.setStatus('current') +mbgLtNgTrapXmrRefDisconnect = NotificationType((1, 3, 6, 1, 4, 1, 5597, 30, 3, 0, 31)).setObjects(("MBG-SNMP-LTNG-MIB", "mbgLtNgTrapMessage"), ("SNMPv2-MIB", "snmpTrapEnterprise"), ("SNMPv2-MIB", "sysName")) +if mibBuilder.loadTexts: mbgLtNgTrapXmrRefDisconnect.setStatus('current') +mbgLtNgTrapXmrRefReconnect = NotificationType((1, 3, 6, 1, 4, 1, 5597, 30, 3, 0, 32)).setObjects(("MBG-SNMP-LTNG-MIB", "mbgLtNgTrapMessage"), ("SNMPv2-MIB", "snmpTrapEnterprise"), ("SNMPv2-MIB", "sysName")) +if mibBuilder.loadTexts: mbgLtNgTrapXmrRefReconnect.setStatus('current') +mbgLtNgTrapFdmError = NotificationType((1, 3, 6, 1, 4, 1, 5597, 30, 3, 0, 33)).setObjects(("MBG-SNMP-LTNG-MIB", "mbgLtNgTrapMessage"), ("SNMPv2-MIB", "snmpTrapEnterprise"), ("SNMPv2-MIB", "sysName")) +if mibBuilder.loadTexts: mbgLtNgTrapFdmError.setStatus('current') +mbgLtNgTrapSHSTimeLimitWarning = NotificationType((1, 3, 6, 1, 4, 1, 5597, 30, 3, 0, 34)).setObjects(("MBG-SNMP-LTNG-MIB", "mbgLtNgTrapMessage"), ("SNMPv2-MIB", "snmpTrapEnterprise"), ("SNMPv2-MIB", "sysName")) +if mibBuilder.loadTexts: mbgLtNgTrapSHSTimeLimitWarning.setStatus('current') +mbgLtNgTrapSecondaryRecSync = NotificationType((1, 3, 6, 1, 4, 1, 5597, 30, 3, 0, 35)).setObjects(("MBG-SNMP-LTNG-MIB", "mbgLtNgTrapMessage"), ("SNMPv2-MIB", "snmpTrapEnterprise"), ("SNMPv2-MIB", "sysName")) +if mibBuilder.loadTexts: mbgLtNgTrapSecondaryRecSync.setStatus('current') +mbgLtNgTrapNTPSync = NotificationType((1, 3, 6, 1, 4, 1, 5597, 30, 3, 0, 36)).setObjects(("MBG-SNMP-LTNG-MIB", "mbgLtNgTrapMessage"), ("SNMPv2-MIB", "snmpTrapEnterprise"), ("SNMPv2-MIB", "sysName")) +if mibBuilder.loadTexts: mbgLtNgTrapNTPSync.setStatus('current') +mbgLtNgTrapPtpPortDisconnected = NotificationType((1, 3, 6, 1, 4, 1, 5597, 30, 3, 0, 37)).setObjects(("MBG-SNMP-LTNG-MIB", "mbgLtNgTrapMessage"), ("SNMPv2-MIB", "snmpTrapEnterprise"), ("SNMPv2-MIB", "sysName")) +if mibBuilder.loadTexts: mbgLtNgTrapPtpPortDisconnected.setStatus('current') +mbgLtNgTrapPtpPortConnected = NotificationType((1, 3, 6, 1, 4, 1, 5597, 30, 3, 0, 38)).setObjects(("MBG-SNMP-LTNG-MIB", "mbgLtNgTrapMessage"), ("SNMPv2-MIB", "snmpTrapEnterprise"), ("SNMPv2-MIB", "sysName")) +if mibBuilder.loadTexts: mbgLtNgTrapPtpPortConnected.setStatus('current') +mbgLtNgTrapPtpStateChanged = NotificationType((1, 3, 6, 1, 4, 1, 5597, 30, 3, 0, 39)).setObjects(("MBG-SNMP-LTNG-MIB", "mbgLtNgTrapMessage"), ("SNMPv2-MIB", "snmpTrapEnterprise"), ("SNMPv2-MIB", "sysName")) +if mibBuilder.loadTexts: mbgLtNgTrapPtpStateChanged.setStatus('current') +mbgLtNgTrapPtpError = NotificationType((1, 3, 6, 1, 4, 1, 5597, 30, 3, 0, 40)).setObjects(("MBG-SNMP-LTNG-MIB", "mbgLtNgTrapMessage"), ("SNMPv2-MIB", "snmpTrapEnterprise"), ("SNMPv2-MIB", "sysName")) +if mibBuilder.loadTexts: mbgLtNgTrapPtpError.setStatus('current') +mbgLtNgTrapLowSystemResources = NotificationType((1, 3, 6, 1, 4, 1, 5597, 30, 3, 0, 41)).setObjects(("MBG-SNMP-LTNG-MIB", "mbgLtNgTrapMessage"), ("SNMPv2-MIB", "snmpTrapEnterprise"), ("SNMPv2-MIB", "sysName")) +if mibBuilder.loadTexts: mbgLtNgTrapLowSystemResources.setStatus('current') +mbgLtNgTrapFanDown = NotificationType((1, 3, 6, 1, 4, 1, 5597, 30, 3, 0, 45)).setObjects(("MBG-SNMP-LTNG-MIB", "mbgLtNgTrapMessage"), ("SNMPv2-MIB", "snmpTrapEnterprise"), ("SNMPv2-MIB", "sysName")) +if mibBuilder.loadTexts: mbgLtNgTrapFanDown.setStatus('current') +mbgLtNgTrapFanUp = NotificationType((1, 3, 6, 1, 4, 1, 5597, 30, 3, 0, 46)).setObjects(("MBG-SNMP-LTNG-MIB", "mbgLtNgTrapMessage"), ("SNMPv2-MIB", "snmpTrapEnterprise"), ("SNMPv2-MIB", "sysName")) +if mibBuilder.loadTexts: mbgLtNgTrapFanUp.setStatus('current') +mbgLtNgTrapCertificateExpired = NotificationType((1, 3, 6, 1, 4, 1, 5597, 30, 3, 0, 47)).setObjects(("MBG-SNMP-LTNG-MIB", "mbgLtNgTrapMessage"), ("SNMPv2-MIB", "snmpTrapEnterprise"), ("SNMPv2-MIB", "sysName")) +if mibBuilder.loadTexts: mbgLtNgTrapCertificateExpired.setStatus('current') +mbgLtNgTrapSufficientSystemResources = NotificationType((1, 3, 6, 1, 4, 1, 5597, 30, 3, 0, 48)).setObjects(("MBG-SNMP-LTNG-MIB", "mbgLtNgTrapMessage"), ("SNMPv2-MIB", "snmpTrapEnterprise"), ("SNMPv2-MIB", "sysName")) +if mibBuilder.loadTexts: mbgLtNgTrapSufficientSystemResources.setStatus('current') +mbgLtNgTrapOscillatorWarmedUp = NotificationType((1, 3, 6, 1, 4, 1, 5597, 30, 3, 0, 49)).setObjects(("MBG-SNMP-LTNG-MIB", "mbgLtNgTrapMessage"), ("SNMPv2-MIB", "snmpTrapEnterprise"), ("SNMPv2-MIB", "sysName")) +if mibBuilder.loadTexts: mbgLtNgTrapOscillatorWarmedUp.setStatus('current') +mbgLtNgTrapOscillatorNotWarmedUp = NotificationType((1, 3, 6, 1, 4, 1, 5597, 30, 3, 0, 50)).setObjects(("MBG-SNMP-LTNG-MIB", "mbgLtNgTrapMessage"), ("SNMPv2-MIB", "snmpTrapEnterprise"), ("SNMPv2-MIB", "sysName")) +if mibBuilder.loadTexts: mbgLtNgTrapOscillatorNotWarmedUp.setStatus('current') +mbgLtNgTrapXmrRefChanged = NotificationType((1, 3, 6, 1, 4, 1, 5597, 30, 3, 0, 51)).setObjects(("MBG-SNMP-LTNG-MIB", "mbgLtNgTrapMessage"), ("SNMPv2-MIB", "snmpTrapEnterprise"), ("SNMPv2-MIB", "sysName")) +if mibBuilder.loadTexts: mbgLtNgTrapXmrRefChanged.setStatus('current') +mbgLtNgTrapClusterMasterChanged = NotificationType((1, 3, 6, 1, 4, 1, 5597, 30, 3, 0, 52)).setObjects(("MBG-SNMP-LTNG-MIB", "mbgLtNgTrapMessage"), ("SNMPv2-MIB", "snmpTrapEnterprise"), ("SNMPv2-MIB", "sysName")) +if mibBuilder.loadTexts: mbgLtNgTrapClusterMasterChanged.setStatus('current') +mbgLtNgTrapClusterFalsetickerDetected = NotificationType((1, 3, 6, 1, 4, 1, 5597, 30, 3, 0, 53)).setObjects(("MBG-SNMP-LTNG-MIB", "mbgLtNgTrapMessage"), ("SNMPv2-MIB", "snmpTrapEnterprise"), ("SNMPv2-MIB", "sysName")) +if mibBuilder.loadTexts: mbgLtNgTrapClusterFalsetickerDetected.setStatus('current') +mbgLtNgTrapClusterFalsetickerCleared = NotificationType((1, 3, 6, 1, 4, 1, 5597, 30, 3, 0, 54)).setObjects(("MBG-SNMP-LTNG-MIB", "mbgLtNgTrapMessage"), ("SNMPv2-MIB", "snmpTrapEnterprise"), ("SNMPv2-MIB", "sysName")) +if mibBuilder.loadTexts: mbgLtNgTrapClusterFalsetickerCleared.setStatus('current') +mbgLtNgTrapSHSTimeLimitOk = NotificationType((1, 3, 6, 1, 4, 1, 5597, 30, 3, 0, 55)).setObjects(("MBG-SNMP-LTNG-MIB", "mbgLtNgTrapMessage"), ("SNMPv2-MIB", "snmpTrapEnterprise"), ("SNMPv2-MIB", "sysName")) +if mibBuilder.loadTexts: mbgLtNgTrapSHSTimeLimitOk.setStatus('current') +mbgLtNgTrapIMSError = NotificationType((1, 3, 6, 1, 4, 1, 5597, 30, 3, 0, 56)).setObjects(("MBG-SNMP-LTNG-MIB", "mbgLtNgTrapMessage"), ("SNMPv2-MIB", "snmpTrapEnterprise"), ("SNMPv2-MIB", "sysName")) +if mibBuilder.loadTexts: mbgLtNgTrapIMSError.setStatus('current') +mbgLtNgTrapIMSOk = NotificationType((1, 3, 6, 1, 4, 1, 5597, 30, 3, 0, 57)).setObjects(("MBG-SNMP-LTNG-MIB", "mbgLtNgTrapMessage"), ("SNMPv2-MIB", "snmpTrapEnterprise"), ("SNMPv2-MIB", "sysName")) +if mibBuilder.loadTexts: mbgLtNgTrapIMSOk.setStatus('current') +mbgLtNgTrapFDMOk = NotificationType((1, 3, 6, 1, 4, 1, 5597, 30, 3, 0, 58)).setObjects(("MBG-SNMP-LTNG-MIB", "mbgLtNgTrapMessage"), ("SNMPv2-MIB", "snmpTrapEnterprise"), ("SNMPv2-MIB", "sysName")) +if mibBuilder.loadTexts: mbgLtNgTrapFDMOk.setStatus('current') +mbgLtNgTrapNTPOffsetLimitExceeded = NotificationType((1, 3, 6, 1, 4, 1, 5597, 30, 3, 0, 59)).setObjects(("MBG-SNMP-LTNG-MIB", "mbgLtNgTrapMessage"), ("SNMPv2-MIB", "snmpTrapEnterprise"), ("SNMPv2-MIB", "sysName")) +if mibBuilder.loadTexts: mbgLtNgTrapNTPOffsetLimitExceeded.setStatus('current') +mbgLtNgTrapNTPOffsetLimitOk = NotificationType((1, 3, 6, 1, 4, 1, 5597, 30, 3, 0, 60)).setObjects(("MBG-SNMP-LTNG-MIB", "mbgLtNgTrapMessage"), ("SNMPv2-MIB", "snmpTrapEnterprise"), ("SNMPv2-MIB", "sysName")) +if mibBuilder.loadTexts: mbgLtNgTrapNTPOffsetLimitOk.setStatus('current') +mbgLtNgTrapXheRubOk = NotificationType((1, 3, 6, 1, 4, 1, 5597, 30, 3, 0, 61)).setObjects(("MBG-SNMP-LTNG-MIB", "mbgLtNgTrapMessage"), ("SNMPv2-MIB", "snmpTrapEnterprise"), ("SNMPv2-MIB", "sysName")) +if mibBuilder.loadTexts: mbgLtNgTrapXheRubOk.setStatus('current') +mbgLtNgTrapXheRubError = NotificationType((1, 3, 6, 1, 4, 1, 5597, 30, 3, 0, 62)).setObjects(("MBG-SNMP-LTNG-MIB", "mbgLtNgTrapMessage"), ("SNMPv2-MIB", "snmpTrapEnterprise"), ("SNMPv2-MIB", "sysName")) +if mibBuilder.loadTexts: mbgLtNgTrapXheRubError.setStatus('current') +mbgLtNgTrapPowerConsumptionExceeded = NotificationType((1, 3, 6, 1, 4, 1, 5597, 30, 3, 0, 63)).setObjects(("MBG-SNMP-LTNG-MIB", "mbgLtNgTrapMessage"), ("SNMPv2-MIB", "snmpTrapEnterprise"), ("SNMPv2-MIB", "sysName")) +if mibBuilder.loadTexts: mbgLtNgTrapPowerConsumptionExceeded.setStatus('current') +mbgLtNgTrapPowerConsumptionOk = NotificationType((1, 3, 6, 1, 4, 1, 5597, 30, 3, 0, 64)).setObjects(("MBG-SNMP-LTNG-MIB", "mbgLtNgTrapMessage"), ("SNMPv2-MIB", "snmpTrapEnterprise"), ("SNMPv2-MIB", "sysName")) +if mibBuilder.loadTexts: mbgLtNgTrapPowerConsumptionOk.setStatus('current') +mbgLtNgTrapPowerRedundancyNotAvail = NotificationType((1, 3, 6, 1, 4, 1, 5597, 30, 3, 0, 65)).setObjects(("MBG-SNMP-LTNG-MIB", "mbgLtNgTrapMessage"), ("SNMPv2-MIB", "snmpTrapEnterprise"), ("SNMPv2-MIB", "sysName")) +if mibBuilder.loadTexts: mbgLtNgTrapPowerRedundancyNotAvail.setStatus('current') +mbgLtNgTrapPowerRedundancyAvail = NotificationType((1, 3, 6, 1, 4, 1, 5597, 30, 3, 0, 66)).setObjects(("MBG-SNMP-LTNG-MIB", "mbgLtNgTrapMessage"), ("SNMPv2-MIB", "snmpTrapEnterprise"), ("SNMPv2-MIB", "sysName")) +if mibBuilder.loadTexts: mbgLtNgTrapPowerRedundancyAvail.setStatus('current') +mbgLtNgTrapTrustedSourceError = NotificationType((1, 3, 6, 1, 4, 1, 5597, 30, 3, 0, 67)).setObjects(("MBG-SNMP-LTNG-MIB", "mbgLtNgTrapMessage"), ("SNMPv2-MIB", "snmpTrapEnterprise"), ("SNMPv2-MIB", "sysName")) +if mibBuilder.loadTexts: mbgLtNgTrapTrustedSourceError.setStatus('current') +mbgLtNgTrapTrustedSourceOk = NotificationType((1, 3, 6, 1, 4, 1, 5597, 30, 3, 0, 68)).setObjects(("MBG-SNMP-LTNG-MIB", "mbgLtNgTrapMessage"), ("SNMPv2-MIB", "snmpTrapEnterprise"), ("SNMPv2-MIB", "sysName")) +if mibBuilder.loadTexts: mbgLtNgTrapTrustedSourceOk.setStatus('current') +mbgLtNgTrapNormalOperation = NotificationType((1, 3, 6, 1, 4, 1, 5597, 30, 3, 0, 77)).setObjects(("MBG-SNMP-LTNG-MIB", "mbgLtNgTrapMessage"), ("SNMPv2-MIB", "snmpTrapEnterprise"), ("SNMPv2-MIB", "sysName")) +if mibBuilder.loadTexts: mbgLtNgTrapNormalOperation.setStatus('current') +mbgLtNgTrapHeartbeat = NotificationType((1, 3, 6, 1, 4, 1, 5597, 30, 3, 0, 88)).setObjects(("MBG-SNMP-LTNG-MIB", "mbgLtNgTrapMessage"), ("SNMPv2-MIB", "snmpTrapEnterprise"), ("SNMPv2-MIB", "sysName")) +if mibBuilder.loadTexts: mbgLtNgTrapHeartbeat.setStatus('current') +mbgLtNgTrapTestNotification = NotificationType((1, 3, 6, 1, 4, 1, 5597, 30, 3, 0, 99)).setObjects(("MBG-SNMP-LTNG-MIB", "mbgLtNgTrapMessage"), ("SNMPv2-MIB", "snmpTrapEnterprise"), ("SNMPv2-MIB", "sysName")) +if mibBuilder.loadTexts: mbgLtNgTrapTestNotification.setStatus('current') +mbgLtNgTrapMessage = MibScalar((1, 3, 6, 1, 4, 1, 5597, 30, 3, 0, 100), DisplayString().clone('no event')).setMaxAccess("readonly") +if mibBuilder.loadTexts: mbgLtNgTrapMessage.setStatus('current') +mbgLtNgConformance = MibIdentifier((1, 3, 6, 1, 4, 1, 5597, 30, 90)) +mbgLtNgCompliances = MibIdentifier((1, 3, 6, 1, 4, 1, 5597, 30, 90, 1)) +mbgLtNgGroups = MibIdentifier((1, 3, 6, 1, 4, 1, 5597, 30, 90, 2)) +mbgLtNgCompliance = ModuleCompliance((1, 3, 6, 1, 4, 1, 5597, 30, 90, 1, 1)).setObjects(("MBG-SNMP-LTNG-MIB", "mbgLtNgObjectsGroup"), ("MBG-SNMP-LTNG-MIB", "mbgLtNgTrapsGroup")) + +if getattr(mibBuilder, 'version', (0, 0, 0)) > (4, 4, 0): + mbgLtNgCompliance = mbgLtNgCompliance.setStatus('current') +mbgLtNgObjectsGroup = ObjectGroup((1, 3, 6, 1, 4, 1, 5597, 30, 90, 2, 1)) +for _mbgLtNgObjectsGroup_obj in [[("MBG-SNMP-LTNG-MIB", "mbgLtNgSnmpSubagentVersion"), ("MBG-SNMP-LTNG-MIB", "mbgLtNgFirmwareVersion"), ("MBG-SNMP-LTNG-MIB", "mbgLtNgSerialNumber"), ("MBG-SNMP-LTNG-MIB", "mbgLtNgSubagentTimeticks"), ("MBG-SNMP-LTNG-MIB", "mbgLtNgCpuSerialNumber"), ("MBG-SNMP-LTNG-MIB", "mbgLtNgNtpCurrentState"), ("MBG-SNMP-LTNG-MIB", "mbgLtNgNtpStratum"), ("MBG-SNMP-LTNG-MIB", "mbgLtNgNtpRefclockName"), ("MBG-SNMP-LTNG-MIB", "mbgLtNgNtpRefclockOffset"), ("MBG-SNMP-LTNG-MIB", "mbgLtNgNtpVersion"), ("MBG-SNMP-LTNG-MIB", "mbgLtNgNtpCCStartedAt"), ("MBG-SNMP-LTNG-MIB", "mbgLtNgNtpCCDuration"), ("MBG-SNMP-LTNG-MIB", "mbgLtNgNtpCCNumberOfClients"), ("MBG-SNMP-LTNG-MIB", "mbgLtNgNtpCCTotalRequests"), ("MBG-SNMP-LTNG-MIB", "mbgLtNgNtpCCTotalRequestsLastHour"), ("MBG-SNMP-LTNG-MIB", "mbgLtNgNtpCCTotalRequestsLastMinute"), ("MBG-SNMP-LTNG-MIB", "mbgLtNgNtpCCTotalRequestsCurrentDay"), ("MBG-SNMP-LTNG-MIB", "mbgLtNgNtpCCTodaysClients"), ("MBG-SNMP-LTNG-MIB", "mbgLtNgNtpMrsServer"), ("MBG-SNMP-LTNG-MIB", "mbgLtNgNtpMrsOffset"), ("MBG-SNMP-LTNG-MIB", "mbgLtNgNumberOfRefclocks"), ("MBG-SNMP-LTNG-MIB", "mbgLtNgRefclockType"), ("MBG-SNMP-LTNG-MIB", "mbgLtNgRefclockUsage"), ("MBG-SNMP-LTNG-MIB", "mbgLtNgRefclockState"), ("MBG-SNMP-LTNG-MIB", "mbgLtNgRefclockSubstate"), ("MBG-SNMP-LTNG-MIB", "mbgLtNgRefclockStatusA"), ("MBG-SNMP-LTNG-MIB", "mbgLtNgRefclockMaxStatusA"), ("MBG-SNMP-LTNG-MIB", "mbgLtNgRefclockStatusB"), ("MBG-SNMP-LTNG-MIB", "mbgLtNgRefclockMaxStatusB"), ("MBG-SNMP-LTNG-MIB", "mbgLtNgRefclockAdditionalInfo"), ("MBG-SNMP-LTNG-MIB", "mbgLtNgRefclockLeapSecondDate"), ("MBG-SNMP-LTNG-MIB", "mbgLtNgRefclockGpsLatitude"), ("MBG-SNMP-LTNG-MIB", "mbgLtNgRefclockGpsLongitude"), ("MBG-SNMP-LTNG-MIB", "mbgLtNgRefclockGpsTdop"), ("MBG-SNMP-LTNG-MIB", "mbgLtNgRefclockGpsPdop"), ("MBG-SNMP-LTNG-MIB", "mbgLtNgRefclockGpsUtcOffset"), ("MBG-SNMP-LTNG-MIB", "mbgLtNgRefclockGpsAltitude"), ("MBG-SNMP-LTNG-MIB", "mbgLtNgRefclockTimeDiff"), ("MBG-SNMP-LTNG-MIB", "mbgLtNgRefclockGpsPos"), ("MBG-SNMP-LTNG-MIB", "mbgLtNgTrapMessage"), ("MBG-SNMP-LTNG-MIB", "mbgLtNgNumberOfClusters"), ("MBG-SNMP-LTNG-MIB", "mbgLtNgClusterCommunicationIp"), ("MBG-SNMP-LTNG-MIB", "mbgLtNgClusterPortState"), ("MBG-SNMP-LTNG-MIB", "mbgLtNgClusterMasterSerial"), ("MBG-SNMP-LTNG-MIB", "mbgLtNgClusterMasterIp"), ("MBG-SNMP-LTNG-MIB", "mbgLtNgClusterMasterPriority"), ("MBG-SNMP-LTNG-MIB", "mbgLtNgClusterClockStatus"), ("MBG-SNMP-LTNG-MIB", "mbgLtNgClusterClockClass"), ("MBG-SNMP-LTNG-MIB", "mbgLtNgClusterReconfigurationState"), ("MBG-SNMP-LTNG-MIB", "mbgLtNgClusterIsFalseticker"), ("MBG-SNMP-LTNG-MIB", "mbgLtNgCfgNtpServerIP"), ("MBG-SNMP-LTNG-MIB", "mbgLtNgCfgNtpServerKey"), ("MBG-SNMP-LTNG-MIB", "mbgLtNgCfgNtpServerAutokey"), ("MBG-SNMP-LTNG-MIB", "mbgLtNgCfgNtpServerMinpoll"), ("MBG-SNMP-LTNG-MIB", "mbgLtNgCfgNtpServerMaxpoll"), ("MBG-SNMP-LTNG-MIB", "mbgLtNgCfgNtpServerIburst"), ("MBG-SNMP-LTNG-MIB", "mbgLtNgCfgNtpBroadAddr"), ("MBG-SNMP-LTNG-MIB", "mbgLtNgCfgNtpBroadInterval"), ("MBG-SNMP-LTNG-MIB", "mbgLtNgCfgNtpBroadSymKey"), ("MBG-SNMP-LTNG-MIB", "mbgLtNgCfgNtpBroadUseAutokey"), ("MBG-SNMP-LTNG-MIB", "mbgLtNgCfgNtpEnableMulticast"), ("MBG-SNMP-LTNG-MIB", "mbgLtNgCfgNtpMultiAddr"), ("MBG-SNMP-LTNG-MIB", "mbgLtNgCfgNtpMultiInterval"), ("MBG-SNMP-LTNG-MIB", "mbgLtNgCfgNtpMultiSymKey"), ("MBG-SNMP-LTNG-MIB", "mbgLtNgCfgNtpMultiUseAutokey"), ("MBG-SNMP-LTNG-MIB", "mbgLtNgCfgNtpEnableManycast"), ("MBG-SNMP-LTNG-MIB", "mbgLtNgCfgNtpManyAddr"), ("MBG-SNMP-LTNG-MIB", "mbgLtNgCfgNtpManySymKey"), ("MBG-SNMP-LTNG-MIB", "mbgLtNgCfgNtpManyUseAutokey"), ("MBG-SNMP-LTNG-MIB", "mbgLtNgCfgNtpLocalTrustedKeys"), ("MBG-SNMP-LTNG-MIB", "mbgLtNgCfgNtpTrusttime"), ("MBG-SNMP-LTNG-MIB", "mbgLtNgCfgNtpTimeScale"), ("MBG-SNMP-LTNG-MIB", "mbgLtNgCfgNtpLocalClkStratum"), ("MBG-SNMP-LTNG-MIB", "mbgLtNgCfgNtpDisableLocalClk"), ("MBG-SNMP-LTNG-MIB", "mbgLtNgCfgNtpSpoofLocalTime"), ("MBG-SNMP-LTNG-MIB", "mbgLtNgCfgNtpEnableClientCounter"), ("MBG-SNMP-LTNG-MIB", "mbgLtNgCfgNtpEnableClientCounterDuration"), ("MBG-SNMP-LTNG-MIB", "mbgLtNgCfgPtpHostname"), ("MBG-SNMP-LTNG-MIB", "mbgLtNgCfgPtpDomainname"), ("MBG-SNMP-LTNG-MIB", "mbgLtNgCfgPtpNameserver1"), ("MBG-SNMP-LTNG-MIB", "mbgLtNgCfgPtpNameserver2"), ("MBG-SNMP-LTNG-MIB", "mbgLtNgCfgPtpIpv4"), ("MBG-SNMP-LTNG-MIB", "mbgLtNgCfgPtpNetmask"), ("MBG-SNMP-LTNG-MIB", "mbgLtNgCfgPtpGateway"), ("MBG-SNMP-LTNG-MIB", "mbgLtNgCfgPtpEnableVlan"), ("MBG-SNMP-LTNG-MIB", "mbgLtNgCfgPtpVlanId"), ("MBG-SNMP-LTNG-MIB", "mbgLtNgCfgPtpVlanPriority"), ("MBG-SNMP-LTNG-MIB", "mbgLtNgCfgPtpEnableDhcp"), ("MBG-SNMP-LTNG-MIB", "mbgLtNgCfgPtpIpv6Avail"), ("MBG-SNMP-LTNG-MIB", "mbgLtNgCfgPtpIpv6Mode"), ("MBG-SNMP-LTNG-MIB", "mbgLtNgCfgPtpIpv6Address"), ("MBG-SNMP-LTNG-MIB", "mbgLtNgCfgPtpIpv6McastScope"), ("MBG-SNMP-LTNG-MIB", "mbgLtNgCfgPtpDisableSsh"), ("MBG-SNMP-LTNG-MIB", "mbgLtNgCfgPtpDscpClass"), ("MBG-SNMP-LTNG-MIB", "mbgLtNgCfgPtpMcastTtl"), ("MBG-SNMP-LTNG-MIB", "mbgLtNgCfgPtpOpMode"), ("MBG-SNMP-LTNG-MIB", "mbgLtNgCfgPtpMode"), ("MBG-SNMP-LTNG-MIB", "mbgLtNgCfgPtpHybridMode"), ("MBG-SNMP-LTNG-MIB", "mbgLtNgCfgPtpUcastMstAddr"), ("MBG-SNMP-LTNG-MIB", "mbgLtNgCfgPtpProfile"), ("MBG-SNMP-LTNG-MIB", "mbgLtNgCfgPtpDelayMechanism"), ("MBG-SNMP-LTNG-MIB", "mbgLtNgCfgPtpNetworkProtocol"), ("MBG-SNMP-LTNG-MIB", "mbgLtNgCfgPtpDomainNumber"), ("MBG-SNMP-LTNG-MIB", "mbgLtNgCfgPtpPriority1"), ("MBG-SNMP-LTNG-MIB", "mbgLtNgCfgPtpPriority2"), ("MBG-SNMP-LTNG-MIB", "mbgLtNgCfgPtpSyncInterval"), ("MBG-SNMP-LTNG-MIB", "mbgLtNgCfgPtpAnnounceInterval"), ("MBG-SNMP-LTNG-MIB", "mbgLtNgCfgPtpDelayReqInterval"), ("MBG-SNMP-LTNG-MIB", "mbgLtNgCfgPtpTimescale"), ("MBG-SNMP-LTNG-MIB", "mbgLtNgCfgPtpAnnRcptTmout"), ("MBG-SNMP-LTNG-MIB", "mbgLtNgCfgPtpMessageDuration"), ("MBG-SNMP-LTNG-MIB", "mbgLtNgCfgPtpCmd"), ("MBG-SNMP-LTNG-MIB", "mbgLtNgCfgPtpSyncEAvail"), ("MBG-SNMP-LTNG-MIB", "mbgLtNgCfgPtpSyncEEnabled"), ("MBG-SNMP-LTNG-MIB", "mbgLtNgCfgPtpSyncEQltLvlSelEnable"), ("MBG-SNMP-LTNG-MIB", "mbgLtNgCfgPtpSyncESdhNwOption"), ("MBG-SNMP-LTNG-MIB", "mbgLtNgCfgPtpSyncEInputSsm"), ("MBG-SNMP-LTNG-MIB", "mbgLtNgCfgPtpSyncEOutputSsm"), ("MBG-SNMP-LTNG-MIB", "mbgLtNgCfgPtpSyncEGbitCopperMode"), ("MBG-SNMP-LTNG-MIB", "mbgLtNgCfgPtpMiscEnable1Step"), ("MBG-SNMP-LTNG-MIB", "mbgLtNgCfgPtpDisableMgmtMsgs"), ("MBG-SNMP-LTNG-MIB", "mbgLtNgCfgPtpOutput1"), ("MBG-SNMP-LTNG-MIB", "mbgLtNgCfgPtpOutput2"), ("MBG-SNMP-LTNG-MIB", "mbgLtNgCfgEmailTo"), ("MBG-SNMP-LTNG-MIB", "mbgLtNgEthPortLinkState"), ("MBG-SNMP-LTNG-MIB", "mbgLtNgCfgEmailFrom"), ("MBG-SNMP-LTNG-MIB", "mbgLtNgCfgEmailSmarthostAddr"), ("MBG-SNMP-LTNG-MIB", "mbgLtNgCfgEmailSmarthostPort"), ("MBG-SNMP-LTNG-MIB", "mbgLtNgCfgEmailSmarthostAuth"), ("MBG-SNMP-LTNG-MIB", "mbgLtNgCfgEmailSmarthostAuthUser"), ("MBG-SNMP-LTNG-MIB", "mbgLtNgCfgEmailSmarthostAuthPw"), ("MBG-SNMP-LTNG-MIB", "mbgLtNgCfgSnmpContact"), ("MBG-SNMP-LTNG-MIB", "mbgLtNgCfgSnmpLocation"), ("MBG-SNMP-LTNG-MIB", "mbgLtNgCfgVP100Display1Addr"), ("MBG-SNMP-LTNG-MIB", "mbgLtNgCfgVP100Display1SN"), ("MBG-SNMP-LTNG-MIB", "mbgLtNgCfgVP100Display2Addr"), ("MBG-SNMP-LTNG-MIB", "mbgLtNgCfgVP100Display2SN"), ("MBG-SNMP-LTNG-MIB", "mbgLtNgCfgEthernetHostname"), ("MBG-SNMP-LTNG-MIB", "mbgLtNgCfgEthernetDomain"), ("MBG-SNMP-LTNG-MIB", "mbgLtNgCfgEthernetNameserver1"), ("MBG-SNMP-LTNG-MIB", "mbgLtNgCfgEthernetNameserver2"), ("MBG-SNMP-LTNG-MIB", "mbgLtNgCfgEthernetIpv4Gateway"), ("MBG-SNMP-LTNG-MIB", "mbgLtNgCfgEthernetIpv6Gateway"), ("MBG-SNMP-LTNG-MIB", "mbgLtNgCfgNumberOfPhysicalIf"), ("MBG-SNMP-LTNG-MIB", "mbgLtNgCfgNumberOfVirtualIf"), ("MBG-SNMP-LTNG-MIB", "mbgLtNgCfgPhysicalIfMac"), ("MBG-SNMP-LTNG-MIB", "mbgLtNgCfgPhysicalIfNetLinkMode"), ("MBG-SNMP-LTNG-MIB", "mbgLtNgCfgPhysicalIfIndicateLink"), ("MBG-SNMP-LTNG-MIB", "mbgLtNgCfgPhysicalIfBondingGroup"), ("MBG-SNMP-LTNG-MIB", "mbgLtNgCfgPhysicalIfIpv6Mode"), ("MBG-SNMP-LTNG-MIB", "mbgLtNgCfgVirtualIfIpv4AddrFromDhcp"), ("MBG-SNMP-LTNG-MIB", "mbgLtNgCfgVirtualIfIpv4NetmaskFromDhcp"), ("MBG-SNMP-LTNG-MIB", "mbgLtNgCfgVirtualIfIpv4BroadcastFromDhcp"), ("MBG-SNMP-LTNG-MIB", "mbgLtNgCfgVirtualIfIpv4GatewayFromDhcp"), ("MBG-SNMP-LTNG-MIB", "mbgLtNgCfgVirtualIfIpv4DnsFromDhcp"), ("MBG-SNMP-LTNG-MIB", "mbgLtNgCfgVirtualIfIpv4DomainFromDhcp"), ("MBG-SNMP-LTNG-MIB", "mbgLtNgCfgVirtualIfAssigned"), ("MBG-SNMP-LTNG-MIB", "mbgLtNgCfgVirtualIfMac"), ("MBG-SNMP-LTNG-MIB", "mbgLtNgCfgVirtualIfLabel"), ("MBG-SNMP-LTNG-MIB", "mbgLtNgCfgVirtualIfServiceNtp"), ("MBG-SNMP-LTNG-MIB", "mbgLtNgCfgVirtualIfServiceHttp"), ("MBG-SNMP-LTNG-MIB", "mbgLtNgCfgVirtualIfServiceHttps"), ("MBG-SNMP-LTNG-MIB", "mbgLtNgCfgVirtualIfServiceTelnet"), ("MBG-SNMP-LTNG-MIB", "mbgLtNgCfgVirtualIfServiceSsh"), ("MBG-SNMP-LTNG-MIB", "mbgLtNgCfgVirtualIfServiceSnmp"), ("MBG-SNMP-LTNG-MIB", "mbgLtNgCfgVirtualIfServiceFtp"), ("MBG-SNMP-LTNG-MIB", "mbgLtNgCfgVirtualIfServiceTime"), ("MBG-SNMP-LTNG-MIB", "mbgLtNgCfgVirtualIfServiceDaytime"), ("MBG-SNMP-LTNG-MIB", "mbgLtNgCfgVirtualIfServiceFpc"), ("MBG-SNMP-LTNG-MIB", "mbgLtNgCfgVirtualIfIpv4Addr"), ("MBG-SNMP-LTNG-MIB", "mbgLtNgCfgVirtualIfIpv4Netmask"), ("MBG-SNMP-LTNG-MIB", "mbgLtNgCfgVirtualIfIpv4Dhcp"), ("MBG-SNMP-LTNG-MIB", "mbgLtNgCfgVirtualIfIpv6Addr"), ("MBG-SNMP-LTNG-MIB", "mbgLtNgCfgVirtualIfIpv6Dhcp"), ("MBG-SNMP-LTNG-MIB", "mbgLtNgCfgVirtualIfIpv6RoutAdd"), ("MBG-SNMP-LTNG-MIB", "mbgLtNgCfgVirtualIfIpv6LinkLocal"), ("MBG-SNMP-LTNG-MIB", "mbgLtNgCfgVirtualIfVlan"), ("MBG-SNMP-LTNG-MIB", "mbgLtNgCfgVirtualIfVlanTag"), ("MBG-SNMP-LTNG-MIB", "mbgLtNgCfgVirtualIfVlanPrio"), ("MBG-SNMP-LTNG-MIB", "mbgLtNgCfgVirtualIfCluster"), ("MBG-SNMP-LTNG-MIB", "mbgLtNgCfgVirtualIfClusterIpv4Addr"), ("MBG-SNMP-LTNG-MIB", "mbgLtNgCfgVirtualIfClusterIpv4Netmask"), ("MBG-SNMP-LTNG-MIB", "mbgLtNgCfgVirtualIfClusterPrio"), ("MBG-SNMP-LTNG-MIB", "mbgLtNgCfgEthernetGenClusterIp"), ("MBG-SNMP-LTNG-MIB", "mbgLtNgCfgEthernetGenClusterPort"), ("MBG-SNMP-LTNG-MIB", "mbgLtNgCfgSyslogServerAddr"), ("MBG-SNMP-LTNG-MIB", "mbgLtNgCfgSyslogLoglevel"), ("MBG-SNMP-LTNG-MIB", "mbgLtNgCfgWmailAddress1"), ("MBG-SNMP-LTNG-MIB", "mbgLtNgCfgWmailAddress2"), ("MBG-SNMP-LTNG-MIB", "mbgLtNgCfgSnmpTrapRecAddr"), ("MBG-SNMP-LTNG-MIB", "mbgLtNgCfgSnmpTrapRecCommunity"), ("MBG-SNMP-LTNG-MIB", "mbgLtNgCfgSnmpTrapRecVersion"), ("MBG-SNMP-LTNG-MIB", "mbgLtNgCfgSnmpReadCommunity"), ("MBG-SNMP-LTNG-MIB", "mbgLtNgCfgSnmpWriteCommunity"), ("MBG-SNMP-LTNG-MIB", "mbgLtNgCfgSnmpV3UserName"), ("MBG-SNMP-LTNG-MIB", "mbgLtNgCfgSnmpV3UserRights"), ("MBG-SNMP-LTNG-MIB", "mbgLtNgCfgSnmpV3Context"), ("MBG-SNMP-LTNG-MIB", "mbgLtNgCfgSnmpV3SecurityLevel"), ("MBG-SNMP-LTNG-MIB", "mbgLtNgCfgSnmpV3AuthProtocol"), ("MBG-SNMP-LTNG-MIB", "mbgLtNgCfgSnmpV3AuthPassphrase"), ("MBG-SNMP-LTNG-MIB", "mbgLtNgCfgSnmpV3PrivProtocol"), ("MBG-SNMP-LTNG-MIB", "mbgLtNgCfgSnmpV3PrivPassphrase"), ("MBG-SNMP-LTNG-MIB", "mbgLtNgCfgSnmpRetries"), ("MBG-SNMP-LTNG-MIB", "mbgLtNgCfgSnmpTimeout"), ("MBG-SNMP-LTNG-MIB", "mbgLtNgCfgSnmpEnabledVersion"), ("MBG-SNMP-LTNG-MIB", "mbgLtNgCfgNtpMaxClientOffset"), ("MBG-SNMP-LTNG-MIB", "mbgLtNgCfgNtpMaxClientStratum"), ("MBG-SNMP-LTNG-MIB", "mbgLtNgCfgTrapNormalOperation"), ("MBG-SNMP-LTNG-MIB", "mbgLtNgCfgTrapNtpNotSync"), ("MBG-SNMP-LTNG-MIB", "mbgLtNgCfgTrapNtpSync"), ("MBG-SNMP-LTNG-MIB", "mbgLtNgCfgTrapNtpStopped"), ("MBG-SNMP-LTNG-MIB", "mbgLtNgCfgTrapServerBoot"), ("MBG-SNMP-LTNG-MIB", "mbgLtNgCfgTrapRefclockNotResponding"), ("MBG-SNMP-LTNG-MIB", "mbgLtNgCfgTrapRefclockSynchronized"), ("MBG-SNMP-LTNG-MIB", "mbgLtNgCfgTrapRefclockNotSynchronized"), ("MBG-SNMP-LTNG-MIB", "mbgLtNgCfgTrapSecRefclockNotResponding"), ("MBG-SNMP-LTNG-MIB", "mbgLtNgCfgTrapSecRefclockSynchronized"), ("MBG-SNMP-LTNG-MIB", "mbgLtNgCfgTrapSecRefclockNotSynchronized"), ("MBG-SNMP-LTNG-MIB", "mbgLtNgCfgTrapAntennaFaulty"), ("MBG-SNMP-LTNG-MIB", "mbgLtNgCfgTrapAntennaReconnect"), ("MBG-SNMP-LTNG-MIB", "mbgLtNgCfgTrapAntennaShortCircuit"), ("MBG-SNMP-LTNG-MIB", "mbgLtNgCfgTrapConfigChanged"), ("MBG-SNMP-LTNG-MIB", "mbgLtNgCfgTrapLeapSecAnnounced"), ("MBG-SNMP-LTNG-MIB", "mbgLtNgCfgTrapNtpClientLimitExceeded"), ("MBG-SNMP-LTNG-MIB", "mbgLtNgCfgTrapRefSrcDisconnected"), ("MBG-SNMP-LTNG-MIB", "mbgLtNgCfgTrapRefSrcReconnected"), ("MBG-SNMP-LTNG-MIB", "mbgLtNgCfgTrapShsTimeLimitError"), ("MBG-SNMP-LTNG-MIB", "mbgLtNgCfgTrapShsTimeLimitWarning"), ("MBG-SNMP-LTNG-MIB", "mbgLtNgCfgTrapNetworkDown"), ("MBG-SNMP-LTNG-MIB", "mbgLtNgCfgTrapNetworkUp"), ("MBG-SNMP-LTNG-MIB", "mbgLtNgCfgTrapPowerSupplyUp"), ("MBG-SNMP-LTNG-MIB", "mbgLtNgCfgTrapPowerSupplyDown"), ("MBG-SNMP-LTNG-MIB", "mbgLtNgCfgTrapFdmError"), ("MBG-SNMP-LTNG-MIB", "mbgLtNgCfgTrapLowSystemResources"), ("MBG-SNMP-LTNG-MIB", "mbgLtNgCfgTrapPtpNetworkDown"), ("MBG-SNMP-LTNG-MIB", "mbgLtNgCfgTrapPtpNetworkUp"), ("MBG-SNMP-LTNG-MIB", "mbgLtNgCfgTrapPtpStateChanged"), ("MBG-SNMP-LTNG-MIB", "mbgLtNgCfgTrapPtpError"), ("MBG-SNMP-LTNG-MIB", "mbgLtNgCfgTrapRefSrcLimitExceeded"), ("MBG-SNMP-LTNG-MIB", "mbgLtNgCfgTrapFanDown"), ("MBG-SNMP-LTNG-MIB", "mbgLtNgCfgTrapFanUp"), ("MBG-SNMP-LTNG-MIB", "mbgLtNgCfgRepeatEvent"), ("MBG-SNMP-LTNG-MIB", "mbgLtNgCfgRepetitions"), ("MBG-SNMP-LTNG-MIB", "mbgLtNgCfgTrapWarmedUp"), ("MBG-SNMP-LTNG-MIB", "mbgLtNgCfgTrapNotWarmedUp"), ("MBG-SNMP-LTNG-MIB", "mbgLtNgCfgDisableRootLogin"), ("MBG-SNMP-LTNG-MIB", "mbgLtNgCfgDisableUsbPort"), ("MBG-SNMP-LTNG-MIB", "mbgLtNgCfgAllowNetworkDiscovery"), ("MBG-SNMP-LTNG-MIB", "mbgLtNgCfgLockFrontPanel"), ("MBG-SNMP-LTNG-MIB", "mbgLtNgCfgSshKeyLength"), ("MBG-SNMP-LTNG-MIB", "mbgLtNgCfgSshShellTimeout"), ("MBG-SNMP-LTNG-MIB", "mbgLtNgCfgWebLanguage"), ("MBG-SNMP-LTNG-MIB", "mbgLtNgCfgActivateChangesAsStartup"), ("MBG-SNMP-LTNG-MIB", "mbgLtNgCfgEnableFrontPanelLight"), ("MBG-SNMP-LTNG-MIB", "mbgLtNgCmdExecute")], [("MBG-SNMP-LTNG-MIB", "mbgLtNgCmdSetTime"), ("MBG-SNMP-LTNG-MIB", "mbgLtNgFdmFreq"), ("MBG-SNMP-LTNG-MIB", "mbgLtNgFdmFreqDev"), ("MBG-SNMP-LTNG-MIB", "mbgLtNgFdmNomFreq"), ("MBG-SNMP-LTNG-MIB", "mbgLtNgPtpNumberOfModules"), ("MBG-SNMP-LTNG-MIB", "mbgLtNgPtpMode"), ("MBG-SNMP-LTNG-MIB", "mbgLtNgPtpPortState"), ("MBG-SNMP-LTNG-MIB", "mbgLtNgPtpLocalMac"), ("MBG-SNMP-LTNG-MIB", "mbgLtNgPtpGrandmasterMac"), ("MBG-SNMP-LTNG-MIB", "mbgLtNgPtpGrandmasterUuid"), ("MBG-SNMP-LTNG-MIB", "mbgLtNgPtpClockAccuracy"), ("MBG-SNMP-LTNG-MIB", "mbgLtNgPtpClockClass"), ("MBG-SNMP-LTNG-MIB", "mbgLtNgPtpTimeSource"), ("MBG-SNMP-LTNG-MIB", "mbgLtNgPtpUtcOffset"), ("MBG-SNMP-LTNG-MIB", "mbgLtNgPtpTimeSeconds"), ("MBG-SNMP-LTNG-MIB", "mbgLtNgPtpTsuTime"), ("MBG-SNMP-LTNG-MIB", "mbgLtNgPtpSysTime"), ("MBG-SNMP-LTNG-MIB", "mbgLtNgPtpPortLinkup"), ("MBG-SNMP-LTNG-MIB", "mbgLtNgPtpOffsetFromGM"), ("MBG-SNMP-LTNG-MIB", "mbgLtNgPtpPathDelay"), ("MBG-SNMP-LTNG-MIB", "mbgLtNgPtpDelayMec"), ("MBG-SNMP-LTNG-MIB", "mbgLtNgPtpDomain"), ("MBG-SNMP-LTNG-MIB", "mbgLtNgPtpDelayAsymmetry"), ("MBG-SNMP-LTNG-MIB", "mbgLtNgPtpAvail"), ("MBG-SNMP-LTNG-MIB", "mbgLtNgSysNumberOfPowerSupplies"), ("MBG-SNMP-LTNG-MIB", "mbgLtNgSysPsStatus"), ("MBG-SNMP-LTNG-MIB", "mbgLtNgSysNumberOfFans"), ("MBG-SNMP-LTNG-MIB", "mbgLtNgSysFanStatus"), ("MBG-SNMP-LTNG-MIB", "mbgLtNgSysFanError"), ("MBG-SNMP-LTNG-MIB", "mbgLtNgSysTempCelsius")]]: + if getattr(mibBuilder, 'version', 0) < (4, 4, 2): + # WARNING: leading objects get lost here! + mbgLtNgObjectsGroup = mbgLtNgObjectsGroup.setObjects(*_mbgLtNgObjectsGroup_obj) + else: + mbgLtNgObjectsGroup = mbgLtNgObjectsGroup.setObjects(*_mbgLtNgObjectsGroup_obj, **dict(append=True)) +if getattr(mibBuilder, 'version', (0, 0, 0)) > (4, 4, 0): + mbgLtNgObjectsGroup = mbgLtNgObjectsGroup.setStatus('current') +mbgLtNgTrapsGroup = NotificationGroup((1, 3, 6, 1, 4, 1, 5597, 30, 90, 2, 2)).setObjects(("MBG-SNMP-LTNG-MIB", "mbgLtNgTrapNTPNotSync"), ("MBG-SNMP-LTNG-MIB", "mbgLtNgTrapNTPStopped"), ("MBG-SNMP-LTNG-MIB", "mbgLtNgTrapServerBoot"), ("MBG-SNMP-LTNG-MIB", "mbgLtNgTrapReceiverNotResponding"), ("MBG-SNMP-LTNG-MIB", "mbgLtNgTrapReceiverNotSync"), ("MBG-SNMP-LTNG-MIB", "mbgLtNgTrapAntennaFaulty"), ("MBG-SNMP-LTNG-MIB", "mbgLtNgTrapAntennaReconnect"), ("MBG-SNMP-LTNG-MIB", "mbgLtNgTrapConfigChanged"), ("MBG-SNMP-LTNG-MIB", "mbgLtNgTrapLeapSecondAnnounced"), ("MBG-SNMP-LTNG-MIB", "mbgLtNgTrapSHSTimeLimitError"), ("MBG-SNMP-LTNG-MIB", "mbgLtNgTrapSecondaryRecNotSync"), ("MBG-SNMP-LTNG-MIB", "mbgLtNgTrapPowerSupplyFailure"), ("MBG-SNMP-LTNG-MIB", "mbgLtNgTrapAntennaShortCircuit"), ("MBG-SNMP-LTNG-MIB", "mbgLtNgTrapReceiverSync"), ("MBG-SNMP-LTNG-MIB", "mbgLtNgTrapNTPClientAlarm"), ("MBG-SNMP-LTNG-MIB", "mbgLtNgTrapPowerSupplyUp"), ("MBG-SNMP-LTNG-MIB", "mbgLtNgTrapNetworkDown"), ("MBG-SNMP-LTNG-MIB", "mbgLtNgTrapNetworkUp"), ("MBG-SNMP-LTNG-MIB", "mbgLtNgTrapSecondaryRecNotResp"), ("MBG-SNMP-LTNG-MIB", "mbgLtNgTrapXmrLimitExceeded"), ("MBG-SNMP-LTNG-MIB", "mbgLtNgTrapXmrRefDisconnect"), ("MBG-SNMP-LTNG-MIB", "mbgLtNgTrapXmrRefReconnect"), ("MBG-SNMP-LTNG-MIB", "mbgLtNgTrapFdmError"), ("MBG-SNMP-LTNG-MIB", "mbgLtNgTrapSHSTimeLimitWarning"), ("MBG-SNMP-LTNG-MIB", "mbgLtNgTrapSecondaryRecSync"), ("MBG-SNMP-LTNG-MIB", "mbgLtNgTrapNTPSync"), ("MBG-SNMP-LTNG-MIB", "mbgLtNgTrapNormalOperation"), ("MBG-SNMP-LTNG-MIB", "mbgLtNgTrapHeartbeat"), ("MBG-SNMP-LTNG-MIB", "mbgLtNgTrapTestNotification"), ("MBG-SNMP-LTNG-MIB", "mbgLtNgTrapPtpPortDisconnected"), ("MBG-SNMP-LTNG-MIB", "mbgLtNgTrapPtpPortConnected"), ("MBG-SNMP-LTNG-MIB", "mbgLtNgTrapPtpStateChanged"), ("MBG-SNMP-LTNG-MIB", "mbgLtNgTrapPtpError"), ("MBG-SNMP-LTNG-MIB", "mbgLtNgTrapLowSystemResources"), ("MBG-SNMP-LTNG-MIB", "mbgLtNgTrapSufficientSystemResources"), ("MBG-SNMP-LTNG-MIB", "mbgLtNgTrapFanDown"), ("MBG-SNMP-LTNG-MIB", "mbgLtNgTrapFanUp"), ("MBG-SNMP-LTNG-MIB", "mbgLtNgTrapCertificateExpired"), ("MBG-SNMP-LTNG-MIB", "mbgLtNgTrapOscillatorWarmedUp"), ("MBG-SNMP-LTNG-MIB", "mbgLtNgTrapOscillatorNotWarmedUp"), ("MBG-SNMP-LTNG-MIB", "mbgLtNgTrapXmrRefChanged"), ("MBG-SNMP-LTNG-MIB", "mbgLtNgTrapClusterMasterChanged"), ("MBG-SNMP-LTNG-MIB", "mbgLtNgTrapClusterFalsetickerDetected"), ("MBG-SNMP-LTNG-MIB", "mbgLtNgTrapClusterFalsetickerCleared"), ("MBG-SNMP-LTNG-MIB", "mbgLtNgTrapSHSTimeLimitOk"), ("MBG-SNMP-LTNG-MIB", "mbgLtNgTrapIMSError"), ("MBG-SNMP-LTNG-MIB", "mbgLtNgTrapIMSOk"), ("MBG-SNMP-LTNG-MIB", "mbgLtNgTrapFDMOk"), ("MBG-SNMP-LTNG-MIB", "mbgLtNgTrapNTPOffsetLimitExceeded"), ("MBG-SNMP-LTNG-MIB", "mbgLtNgTrapNTPOffsetLimitOk"), ("MBG-SNMP-LTNG-MIB", "mbgLtNgTrapXheRubOk"), ("MBG-SNMP-LTNG-MIB", "mbgLtNgTrapXheRubError"), ("MBG-SNMP-LTNG-MIB", "mbgLtNgTrapPowerConsumptionExceeded"), ("MBG-SNMP-LTNG-MIB", "mbgLtNgTrapPowerConsumptionOk"), ("MBG-SNMP-LTNG-MIB", "mbgLtNgTrapPowerRedundancyNotAvail"), ("MBG-SNMP-LTNG-MIB", "mbgLtNgTrapPowerRedundancyAvail"), ("MBG-SNMP-LTNG-MIB", "mbgLtNgTrapTrustedSourceError"), ("MBG-SNMP-LTNG-MIB", "mbgLtNgTrapTrustedSourceOk")) +if getattr(mibBuilder, 'version', (0, 0, 0)) > (4, 4, 0): + mbgLtNgTrapsGroup = mbgLtNgTrapsGroup.setStatus('current') +mibBuilder.exportSymbols("MBG-SNMP-LTNG-MIB", mbgLtNgCfgActivateChangesAsStartup=mbgLtNgCfgActivateChangesAsStartup, mbgLtNgPtpUtcOffset=mbgLtNgPtpUtcOffset, mbgLtNgCfgVirtualIfServiceFtp=mbgLtNgCfgVirtualIfServiceFtp, mbgLtNgCfgPtpEnableDhcp=mbgLtNgCfgPtpEnableDhcp, mbgLtNgPtpPathDelay=mbgLtNgPtpPathDelay, mbgLtNgCfgNtpBroadAddr=mbgLtNgCfgNtpBroadAddr, mbgLtNgClusterIndex=mbgLtNgClusterIndex, mbgLtNgNtpCCTotalRequestsLastMinute=mbgLtNgNtpCCTotalRequestsLastMinute, mbgLtNgCfgNtpManyUseAutokey=mbgLtNgCfgNtpManyUseAutokey, mbgLtNgTrapPowerRedundancyAvail=mbgLtNgTrapPowerRedundancyAvail, mbgLtNgCfgEthernetDomain=mbgLtNgCfgEthernetDomain, mbgLtNgCfgVirtualIfServiceSnmp=mbgLtNgCfgVirtualIfServiceSnmp, mbgLtNgCfgPtpDisableMgmtMsgs=mbgLtNgCfgPtpDisableMgmtMsgs, mbgLtNgCfgNtpEnableMulticast=mbgLtNgCfgNtpEnableMulticast, mbgLtNgCfgTrapRefclockSynchronized=mbgLtNgCfgTrapRefclockSynchronized, mbgLtNgCompliance=mbgLtNgCompliance, mbgLtNgCfgNtpBMIndex=mbgLtNgCfgNtpBMIndex, mbgLtNgCfgTrapPowerSupplyDown=mbgLtNgCfgTrapPowerSupplyDown, mbgLtNgCfgPtpMiscEnable1Step=mbgLtNgCfgPtpMiscEnable1Step, mbgLtNgPtpNumberOfModules=mbgLtNgPtpNumberOfModules, mbgLtNgRefclockGpsUtcOffset=mbgLtNgRefclockGpsUtcOffset, mbgLtNgCfgPtpSyncEGbitCopperMode=mbgLtNgCfgPtpSyncEGbitCopperMode, mbgLtNgNtpCCTotalRequestsLastHour=mbgLtNgNtpCCTotalRequestsLastHour, mbgLtNgCfgSnmpTrapRecTableEntry=mbgLtNgCfgSnmpTrapRecTableEntry, mbgLtNgSnmpSubagentVersion=mbgLtNgSnmpSubagentVersion, mbgLtNgCfgEmail=mbgLtNgCfgEmail, mbgLtNgTrapNetworkDown=mbgLtNgTrapNetworkDown, mbgLtNgCfgSnmpRetries=mbgLtNgCfgSnmpRetries, mbgLtNgCfgVirtualIfServiceNtp=mbgLtNgCfgVirtualIfServiceNtp, mbgLtNgPtpDelayMec=mbgLtNgPtpDelayMec, mbgLtNgNtp=mbgLtNgNtp, mbgLtNgCfgSnmpV3UserRights=mbgLtNgCfgSnmpV3UserRights, mbgLtNgCfgEthernetHostname=mbgLtNgCfgEthernetHostname, mbgLtNgCfgPtpProfile=mbgLtNgCfgPtpProfile, mbgLtNgNtpRefclockOffset=mbgLtNgNtpRefclockOffset, mbgLtNgCfgVirtualIfMac=mbgLtNgCfgVirtualIfMac, mbgLtNgCfgSnmpTimeout=mbgLtNgCfgSnmpTimeout, mbgLtNgCfgDisableRootLogin=mbgLtNgCfgDisableRootLogin, mbgLtNgTrapXmrRefReconnect=mbgLtNgTrapXmrRefReconnect, mbgLtNgCfgPtpPriority2=mbgLtNgCfgPtpPriority2, mbgLtNgCfgVirtualIfServiceFpc=mbgLtNgCfgVirtualIfServiceFpc, mbgLtNgCfgPtpSyncEOutputSsm=mbgLtNgCfgPtpSyncEOutputSsm, mbgLtNgCfgTrapNetworkDown=mbgLtNgCfgTrapNetworkDown, mbgLtNgCfgTrapNtpClientLimitExceeded=mbgLtNgCfgTrapNtpClientLimitExceeded, mbgLtNgCfgVirtualIfServiceDaytime=mbgLtNgCfgVirtualIfServiceDaytime, mbgLtNgPtpGrandmasterUuid=mbgLtNgPtpGrandmasterUuid, mbgLtNgSysFanTableEntry=mbgLtNgSysFanTableEntry, mbgLtNgCfgVP100Display1SN=mbgLtNgCfgVP100Display1SN, mbgLtNgCfgPtpVlanPriority=mbgLtNgCfgPtpVlanPriority, mbgLtNgTrapConfigChanged=mbgLtNgTrapConfigChanged, mbgLtNgCfgPtpAnnounceInterval=mbgLtNgCfgPtpAnnounceInterval, mbgLtNgTrapNetworkUp=mbgLtNgTrapNetworkUp, mbgLtNgTrapXheRubOk=mbgLtNgTrapXheRubOk, mbgLtNgCfgNotifications=mbgLtNgCfgNotifications, mbgLtNgCfgTrapPowerSupplyUp=mbgLtNgCfgTrapPowerSupplyUp, mbgLtNgSysPsStatus=mbgLtNgSysPsStatus, mbgLtNgCfgSyslogServerAddr=mbgLtNgCfgSyslogServerAddr, mbgLtNgCfgSnmpTrapRecTable=mbgLtNgCfgSnmpTrapRecTable, mbgLtNgCfgNtpTable=mbgLtNgCfgNtpTable, mbgLtNgCfgVirtualIfClusterIpv4Netmask=mbgLtNgCfgVirtualIfClusterIpv4Netmask, mbgLtNgCfgVirtualIfVlanPrio=mbgLtNgCfgVirtualIfVlanPrio, mbgLtNgCfgTrapTrigger=mbgLtNgCfgTrapTrigger, mbgLtNgCfgVirtualIfTable=mbgLtNgCfgVirtualIfTable, mbgLtNgCfgPtpDisableSsh=mbgLtNgCfgPtpDisableSsh, mbgLtNgPtpSysTime=mbgLtNgPtpSysTime, mbgLtNgSerialNumber=mbgLtNgSerialNumber, mbgLtNgCfgPtpTimescale=mbgLtNgCfgPtpTimescale, mbgLtNgCfgNtpServerIP=mbgLtNgCfgNtpServerIP, mbgLtNgNtpRefclockName=mbgLtNgNtpRefclockName, mbgLtNgPtpLocalMac=mbgLtNgPtpLocalMac, mbgLtNgCfgPtpIpv6Mode=mbgLtNgCfgPtpIpv6Mode, mbgLtNgNtpClientCounter=mbgLtNgNtpClientCounter, mbgLtNgCfgRepeatEvent=mbgLtNgCfgRepeatEvent, mbgLtNgCfgSnmpV3PrivPassphrase=mbgLtNgCfgSnmpV3PrivPassphrase, mbgLtNgFdmNomFreq=mbgLtNgFdmNomFreq, mbgLtNgTrapNTPClientAlarm=mbgLtNgTrapNTPClientAlarm, mbgLtNgCfgPtpHybridMode=mbgLtNgCfgPtpHybridMode, mbgLtNgTrapSHSTimeLimitError=mbgLtNgTrapSHSTimeLimitError, mbgLtNgCfgSnmpV3UserName=mbgLtNgCfgSnmpV3UserName, mbgLtNgPtpClockAccuracy=mbgLtNgPtpClockAccuracy, mbgLtNgCompliances=mbgLtNgCompliances, mbgLtNgTrapPowerConsumptionExceeded=mbgLtNgTrapPowerConsumptionExceeded, mbgLtNgCfgTrapLowSystemResources=mbgLtNgCfgTrapLowSystemResources, mbgLtNgRefclockStatusB=mbgLtNgRefclockStatusB, mbgLtNgCfgTrapServerBoot=mbgLtNgCfgTrapServerBoot, mbgLtNgTrapSHSTimeLimitWarning=mbgLtNgTrapSHSTimeLimitWarning, mbgLtNgNtpMrs=mbgLtNgNtpMrs, mbgLtNgCfgTrapSecRefclockNotSynchronized=mbgLtNgCfgTrapSecRefclockNotSynchronized, mbgLtNgCfgVirtualIfClusterPrio=mbgLtNgCfgVirtualIfClusterPrio, mbgLantimeNG=mbgLantimeNG, mbgLantimeNGStatus=mbgLantimeNGStatus, mbgLtNgCfgNtpBroadUseAutokey=mbgLtNgCfgNtpBroadUseAutokey, mbgLtNgCfgPtpTableEntry=mbgLtNgCfgPtpTableEntry, mbgLtNgRefclockGpsTdop=mbgLtNgRefclockGpsTdop, mbgLtNgNumberOfRefclocks=mbgLtNgNumberOfRefclocks, mbgLtNgPtpTimeSeconds=mbgLtNgPtpTimeSeconds, mbgLtNgCfgSyslog=mbgLtNgCfgSyslog, mbgLtNgCfgVirtualIfIpv6Addr=mbgLtNgCfgVirtualIfIpv6Addr, mbgLtNgCfgVP100Display2SN=mbgLtNgCfgVP100Display2SN, mbgLtNgCfgTrapFanDown=mbgLtNgCfgTrapFanDown, mbgLtNgSubagentTimeticks=mbgLtNgSubagentTimeticks, mbgLtNgCfgVirtualIfVlanTag=mbgLtNgCfgVirtualIfVlanTag, mbgLtNgNtpCCTotalRequests=mbgLtNgNtpCCTotalRequests, mbgLtNgCfgTrapAntennaShortCircuit=mbgLtNgCfgTrapAntennaShortCircuit, mbgLtNgPtpPortState=mbgLtNgPtpPortState, mbgLtNgCfgTrapFdmError=mbgLtNgCfgTrapFdmError, mbgLtNgCfgSnmpContact=mbgLtNgCfgSnmpContact, mbgLtNgSysTemperature=mbgLtNgSysTemperature, mbgLtNgRefclockMaxStatusA=mbgLtNgRefclockMaxStatusA, mbgLtNgSysPsTableEntry=mbgLtNgSysPsTableEntry, mbgLtNgCfgNtpTrusttime=mbgLtNgCfgNtpTrusttime, mbgLtNgCfgTrapRefclockNotResponding=mbgLtNgCfgTrapRefclockNotResponding, mbgLtNgCfgGeneral=mbgLtNgCfgGeneral, mbgLtNgCfgSnmpTrapRecAddr=mbgLtNgCfgSnmpTrapRecAddr, mbgLtNgClusterClockStatus=mbgLtNgClusterClockStatus, mbgLtNgCfgSnmpReadCommunity=mbgLtNgCfgSnmpReadCommunity, mbgLtNgNtpStratum=mbgLtNgNtpStratum, mbgLtNgCfgVirtualIfServiceTelnet=mbgLtNgCfgVirtualIfServiceTelnet, mbgLtNgTrapNTPOffsetLimitExceeded=mbgLtNgTrapNTPOffsetLimitExceeded, mbgLtNgCfgNtpMultiUseAutokey=mbgLtNgCfgNtpMultiUseAutokey, mbgLtNgFdmFreqDev=mbgLtNgFdmFreqDev, mbgLtNgCfgPtpUcastMstAddr=mbgLtNgCfgPtpUcastMstAddr, mbgLtNgCfgTrapPtpStateChanged=mbgLtNgCfgTrapPtpStateChanged, mbgLtNgCfgPtpDelayMechanism=mbgLtNgCfgPtpDelayMechanism, mbgLtNgCfgNtpEnableManycast=mbgLtNgCfgNtpEnableManycast, mbgLtNgFdm=mbgLtNgFdm, mbgLtNgCfgEthernetNameserver1=mbgLtNgCfgEthernetNameserver1, mbgLtNgPtpClockClass=mbgLtNgPtpClockClass, mbgLtNgCfgSnmpTrapRecIndex=mbgLtNgCfgSnmpTrapRecIndex, mbgLtNgPtpTableEntry=mbgLtNgPtpTableEntry, mbgLtNgTrapPowerRedundancyNotAvail=mbgLtNgTrapPowerRedundancyNotAvail, mbgLtNgCfgTrapPtpError=mbgLtNgCfgTrapPtpError, PYSNMP_MODULE_ID=mbgLantimeNG, mbgLtNgPtp=mbgLtNgPtp, mbgLtNgCfgNtpDisableLocalClk=mbgLtNgCfgNtpDisableLocalClk, mbgLtNgCfgSnmpV3Context=mbgLtNgCfgSnmpV3Context, mbgLtNgCfgNtpBroadInterval=mbgLtNgCfgNtpBroadInterval, mbgLtNgCfgPtpGateway=mbgLtNgCfgPtpGateway, mbgLtNgCfgPtpIpv6Address=mbgLtNgCfgPtpIpv6Address, mbgLtNgNumberOfClusters=mbgLtNgNumberOfClusters, mbgLtNgCpuSerialNumber=mbgLtNgCpuSerialNumber, mbgLtNgRefclockAdditionalInfo=mbgLtNgRefclockAdditionalInfo, mbgLtNgCfgNtpMaxClientOffset=mbgLtNgCfgNtpMaxClientOffset, mbgLtNgSysPowerSupply=mbgLtNgSysPowerSupply, mbgLtNgTrapPtpPortConnected=mbgLtNgTrapPtpPortConnected, mbgLtNgTrapPtpError=mbgLtNgTrapPtpError, mbgLtNgMisc=mbgLtNgMisc, mbgLtNgTrapClusterFalsetickerDetected=mbgLtNgTrapClusterFalsetickerDetected, mbgLtNgCfgSnmpLocation=mbgLtNgCfgSnmpLocation, mbgLtNgClusterTable=mbgLtNgClusterTable, mbgLtNgTrapFdmError=mbgLtNgTrapFdmError, mbgLtNgCfgTrapSecRefclockNotResponding=mbgLtNgCfgTrapSecRefclockNotResponding, mbgLtNgCfgPtpCmd=mbgLtNgCfgPtpCmd, mbgLtNgCfgNtpMaxClientStratum=mbgLtNgCfgNtpMaxClientStratum, mbgLtNgCfgWmailAddress2=mbgLtNgCfgWmailAddress2, mbgLtNgCfgNtpEnableClientCounter=mbgLtNgCfgNtpEnableClientCounter, mbgLtNgTrapOscillatorNotWarmedUp=mbgLtNgTrapOscillatorNotWarmedUp, mbgLtNgCfgNtpEnableClientCounterDuration=mbgLtNgCfgNtpEnableClientCounterDuration, mbgLtNgRefclockIndex=mbgLtNgRefclockIndex, mbgLtNgNtpCCTodaysClients=mbgLtNgNtpCCTodaysClients, mbgLtNgCfgDisableUsbPort=mbgLtNgCfgDisableUsbPort, mbgLtNgRefclockMaxStatusB=mbgLtNgRefclockMaxStatusB, mbgLtNgCfgVirtualIfVlan=mbgLtNgCfgVirtualIfVlan, mbgLtNgTrapTrustedSourceOk=mbgLtNgTrapTrustedSourceOk, mbgLtNgEthPortLinkState=mbgLtNgEthPortLinkState, mbgLtNgCfgVirtualIfServiceHttp=mbgLtNgCfgVirtualIfServiceHttp, mbgLtNgCfgNtpLocalTrustedKeys=mbgLtNgCfgNtpLocalTrustedKeys, mbgLtNgCfgVirtualIfClusterIpv4Addr=mbgLtNgCfgVirtualIfClusterIpv4Addr, mbgLtNgCfgNtpManySymKey=mbgLtNgCfgNtpManySymKey, mbgLtNgTrapClusterFalsetickerCleared=mbgLtNgTrapClusterFalsetickerCleared, mbgLtNgTrapClusterMasterChanged=mbgLtNgTrapClusterMasterChanged, mbgLtNgCfgTrapSecRefclockSynchronized=mbgLtNgCfgTrapSecRefclockSynchronized, mbgLtNgCfgTrapConfigChanged=mbgLtNgCfgTrapConfigChanged, mbgLtNgClusterMasterIp=mbgLtNgClusterMasterIp, mbgLtNgCfgSecurity=mbgLtNgCfgSecurity, mbgLtNgRefclockGpsIndex=mbgLtNgRefclockGpsIndex, mbgLtNgPtpOffsetFromGM=mbgLtNgPtpOffsetFromGM, mbgLtNgCmdExecute=mbgLtNgCmdExecute, mbgLtNgCfgVirtualIfIpv4Netmask=mbgLtNgCfgVirtualIfIpv4Netmask, mbgLtNgCfgNumberOfVirtualIf=mbgLtNgCfgNumberOfVirtualIf, mbgLtNgCfgNtpManyAddr=mbgLtNgCfgNtpManyAddr, mbgLtNgCfgPtpSyncEInputSsm=mbgLtNgCfgPtpSyncEInputSsm, mbgLtNgTrapAntennaReconnect=mbgLtNgTrapAntennaReconnect, mbgLtNgCfgNtpSpoofLocalTime=mbgLtNgCfgNtpSpoofLocalTime, mbgLtNgCfgPtpDomainNumber=mbgLtNgCfgPtpDomainNumber, mbgLtNgCfgVirtualIfServiceTime=mbgLtNgCfgVirtualIfServiceTime, mbgLtNgPtpDelayAsymmetry=mbgLtNgPtpDelayAsymmetry, mbgLtNgCluster=mbgLtNgCluster, mbgLtNgCfgTrapNotWarmedUp=mbgLtNgCfgTrapNotWarmedUp, mbgLtNgCfgEmailSmarthostAddr=mbgLtNgCfgEmailSmarthostAddr, mbgLtNgClusterTableEntry=mbgLtNgClusterTableEntry, mbgLtNgTrapNTPOffsetLimitOk=mbgLtNgTrapNTPOffsetLimitOk, mbgLtNgRefclock=mbgLtNgRefclock, mbgLtNgCfgEthernetNameserver2=mbgLtNgCfgEthernetNameserver2, mbgLtNgCfgVirtualIfIpv4GatewayFromDhcp=mbgLtNgCfgVirtualIfIpv4GatewayFromDhcp, mbgLtNgCfgVirtualIfIpv6LinkLocal=mbgLtNgCfgVirtualIfIpv6LinkLocal, mbgLtNgCfgPtpNameserver1=mbgLtNgCfgPtpNameserver1, mbgLtNgCfgEthernetGenClusterPort=mbgLtNgCfgEthernetGenClusterPort, mbgLtNgTrapSecondaryRecNotSync=mbgLtNgTrapSecondaryRecNotSync, mbgLtNgCfgPtpOutput1=mbgLtNgCfgPtpOutput1, mbgLtNgTrapTestNotification=mbgLtNgTrapTestNotification, mbgLtNgPtpAvail=mbgLtNgPtpAvail, mbgLtNgTrapNormalOperation=mbgLtNgTrapNormalOperation, mbgLtNgCfgNtpBroadSymKey=mbgLtNgCfgNtpBroadSymKey, mbgLtNgCfgVirtualIfServiceHttps=mbgLtNgCfgVirtualIfServiceHttps, mbgLtNgCfgVirtualIfIpv4NetmaskFromDhcp=mbgLtNgCfgVirtualIfIpv4NetmaskFromDhcp, mbgLtNgSysFanStatus=mbgLtNgSysFanStatus, mbgLtNgTrapAntennaShortCircuit=mbgLtNgTrapAntennaShortCircuit, mbgLtNgSystemHardware=mbgLtNgSystemHardware, mbgLtNgTrapLowSystemResources=mbgLtNgTrapLowSystemResources, mbgLtNgCfgSnmpV3PrivProtocol=mbgLtNgCfgSnmpV3PrivProtocol, mbgLtNgTrapOscillatorWarmedUp=mbgLtNgTrapOscillatorWarmedUp, mbgLtNgNtpCCTotalRequestsCurrentDay=mbgLtNgNtpCCTotalRequestsCurrentDay, mbgLtNgTrapMessage=mbgLtNgTrapMessage, mbgLtNgClusterIsFalseticker=mbgLtNgClusterIsFalseticker, mbgLtNgCommands=mbgLtNgCommands, mbgLtNgRefclockType=mbgLtNgRefclockType, mbgLtNgFirmwareVersion=mbgLtNgFirmwareVersion, mbgLtNgCfgTrapAntennaFaulty=mbgLtNgCfgTrapAntennaFaulty, mbgLtNgCfgPhysicalIfIndicateLink=mbgLtNgCfgPhysicalIfIndicateLink, mbgLtNgCfgPhysicalIfBondingGroup=mbgLtNgCfgPhysicalIfBondingGroup, mbgLtNgCfgPtpNetmask=mbgLtNgCfgPtpNetmask, mbgLtNgCfgPtpTable=mbgLtNgCfgPtpTable, mbgLtNgPtpTable=mbgLtNgPtpTable, mbgLtNgEthPortLinkTableEntry=mbgLtNgEthPortLinkTableEntry, mbgLtNgCfgVirtualIfIpv6Dhcp=mbgLtNgCfgVirtualIfIpv6Dhcp, mbgLtNgCfgPhysicalIfMac=mbgLtNgCfgPhysicalIfMac, mbgLtNgTrapNTPStopped=mbgLtNgTrapNTPStopped, mbgLtNgCfgSnmpTrapRecVersion=mbgLtNgCfgSnmpTrapRecVersion, mbgLtNgCfgTrapShsTimeLimitWarning=mbgLtNgCfgTrapShsTimeLimitWarning, mbgLtNgTrapServerBoot=mbgLtNgTrapServerBoot, mbgLtNgCfgEmailFrom=mbgLtNgCfgEmailFrom, mbgLtNgRefclockGpsPdop=mbgLtNgRefclockGpsPdop, mbgLtNgConformance=mbgLtNgConformance, mbgLtNgTrapCertificateExpired=mbgLtNgTrapCertificateExpired, mbgLtNgCfgPtpEnableVlan=mbgLtNgCfgPtpEnableVlan, mbgLtNgCfgNtpServerMaxpoll=mbgLtNgCfgNtpServerMaxpoll, mbgLtNgPtpMode=mbgLtNgPtpMode, mbgLtNgCfgEnableFrontPanelLight=mbgLtNgCfgEnableFrontPanelLight, mbgLtNgCfgEmailSmarthostAuthUser=mbgLtNgCfgEmailSmarthostAuthUser, mbgLtNgTrapAntennaFaulty=mbgLtNgTrapAntennaFaulty, mbgLtNgCfgPtpSyncInterval=mbgLtNgCfgPtpSyncInterval, mbgLtNgCfgVP100Display2Addr=mbgLtNgCfgVP100Display2Addr, mbgLtNgClusterMasterPriority=mbgLtNgClusterMasterPriority, mbgLtNgTrapTrustedSourceError=mbgLtNgTrapTrustedSourceError, mbgLtNgCfgTrapFanUp=mbgLtNgCfgTrapFanUp, mbgLtNgNtpMrsServer=mbgLtNgNtpMrsServer, mbgLtNgTrapPowerConsumptionOk=mbgLtNgTrapPowerConsumptionOk, mbgLtNgCfgEthernetIpv4Gateway=mbgLtNgCfgEthernetIpv4Gateway, mbgLtNgCfgDisplay=mbgLtNgCfgDisplay, mbgLtNgCfgNtpIndex=mbgLtNgCfgNtpIndex, mbgLtNgCfgNtpMultiAddr=mbgLtNgCfgNtpMultiAddr, mbgLtNgCfgEmailSmarthostAuthPw=mbgLtNgCfgEmailSmarthostAuthPw, mbgLtNgCfgPtpMessageDuration=mbgLtNgCfgPtpMessageDuration) +mibBuilder.exportSymbols("MBG-SNMP-LTNG-MIB", mbgLtNgNtpMrsOffset=mbgLtNgNtpMrsOffset, mbgLtNgNtpCCStartedAt=mbgLtNgNtpCCStartedAt, mbgLtNgCfgEmailSmarthostPort=mbgLtNgCfgEmailSmarthostPort, mbgLtNgCfgVirtualIfIpv6RoutAdd=mbgLtNgCfgVirtualIfIpv6RoutAdd, mbgLtNgCfgTrapNtpNotSync=mbgLtNgCfgTrapNtpNotSync, mbgLtNgCfgVirtualIfIpv4AddrFromDhcp=mbgLtNgCfgVirtualIfIpv4AddrFromDhcp, mbgLtNgCfgNtpServerAutokey=mbgLtNgCfgNtpServerAutokey, mbgLtNgCfgNtpServerIburst=mbgLtNgCfgNtpServerIburst, mbgLtNgConfig=mbgLtNgConfig, mbgLtNgRefclockGpsPos=mbgLtNgRefclockGpsPos, mbgLtNgTrapPtpPortDisconnected=mbgLtNgTrapPtpPortDisconnected, mbgLtNgCfgPhysicalIfTable=mbgLtNgCfgPhysicalIfTable, mbgLtNgRefclockState=mbgLtNgRefclockState, mbgLtNgGroups=mbgLtNgGroups, mbgLtNgRefclockTableEntry=mbgLtNgRefclockTableEntry, mbgLtNgRefclockGpsLatitude=mbgLtNgRefclockGpsLatitude, mbgLtNgTrapSecondaryRecSync=mbgLtNgTrapSecondaryRecSync, mbgLtNgTrapNotifications=mbgLtNgTrapNotifications, mbgLtNgInfo=mbgLtNgInfo, mbgLtNgCfgPtpPriority1=mbgLtNgCfgPtpPriority1, mbgLtNgCfgTrapNtpStopped=mbgLtNgCfgTrapNtpStopped, mbgLtNgClusterCommunicationIp=mbgLtNgClusterCommunicationIp, mbgLtNgCfgEthernetIpv6Gateway=mbgLtNgCfgEthernetIpv6Gateway, mbgLtNgTrapXmrRefChanged=mbgLtNgTrapXmrRefChanged, mbgLtNgCfgVirtualIfIpv4Addr=mbgLtNgCfgVirtualIfIpv4Addr, mbgLtNgPtpDomain=mbgLtNgPtpDomain, mbgLtNgCfgPtpDomainname=mbgLtNgCfgPtpDomainname, mbgLtNgCfgPhysicalIfTableEntry=mbgLtNgCfgPhysicalIfTableEntry, mbgLtNgRefclockTimeDiff=mbgLtNgRefclockTimeDiff, mbgLtNgCfgNtpTimeScale=mbgLtNgCfgNtpTimeScale, mbgLtNgCfgPtpDscpClass=mbgLtNgCfgPtpDscpClass, mbgLtNgTrapReceiverNotResponding=mbgLtNgTrapReceiverNotResponding, mbgLtNgSysNumberOfPowerSupplies=mbgLtNgSysNumberOfPowerSupplies, mbgLtNgTrapIMSOk=mbgLtNgTrapIMSOk, mbgLtNgPtpGrandmasterMac=mbgLtNgPtpGrandmasterMac, mbgLtNgCfgPtpAnnRcptTmout=mbgLtNgCfgPtpAnnRcptTmout, mbgLtNgCfgWebLanguage=mbgLtNgCfgWebLanguage, mbgLtNgSysFanIndex=mbgLtNgSysFanIndex, mbgLtNgPtpPortLinkup=mbgLtNgPtpPortLinkup, mbgLtNgCfgVirtualIfCluster=mbgLtNgCfgVirtualIfCluster, mbgLtNgRefclockStatusA=mbgLtNgRefclockStatusA, mbgLtNgTrapSufficientSystemResources=mbgLtNgTrapSufficientSystemResources, mbgLtNgCfgNtp=mbgLtNgCfgNtp, mbgLtNgCfgVP100Display1Addr=mbgLtNgCfgVP100Display1Addr, mbgLtNgCfgWalldisplay=mbgLtNgCfgWalldisplay, mbgLtNgCfgLockFrontPanel=mbgLtNgCfgLockFrontPanel, mbgLtNgCfgSnmpV3AuthProtocol=mbgLtNgCfgSnmpV3AuthProtocol, mbgLtNgCfgTrapWarmedUp=mbgLtNgCfgTrapWarmedUp, mbgLtNgCfgVirtualIfServiceSsh=mbgLtNgCfgVirtualIfServiceSsh, mbgLtNgCfgPtpMode=mbgLtNgCfgPtpMode, mbgLtNgRefclockGpsAltitude=mbgLtNgRefclockGpsAltitude, mbgLtNgCfgPtpMcastTtl=mbgLtNgCfgPtpMcastTtl, mbgLtNgCfgVirtualIfIpv4Dhcp=mbgLtNgCfgVirtualIfIpv4Dhcp, mbgLtNgCfgSnmpWriteCommunity=mbgLtNgCfgSnmpWriteCommunity, mbgLtNgPtpTsuTime=mbgLtNgPtpTsuTime, mbgLtNgCfgPtpIndex=mbgLtNgCfgPtpIndex, mbgLtNgTrapNTPNotSync=mbgLtNgTrapNTPNotSync, mbgLtNgCfgNtpLocalClkStratum=mbgLtNgCfgNtpLocalClkStratum, mbgLtNgCfgTrapRefSrcReconnected=mbgLtNgCfgTrapRefSrcReconnected, mbgLtNgCfgAllowNetworkDiscovery=mbgLtNgCfgAllowNetworkDiscovery, mbgLtNgCfgPhysicalIfIndex=mbgLtNgCfgPhysicalIfIndex, mbgLtNgCfgRepetitions=mbgLtNgCfgRepetitions, mbgLtNgCfgWmailAddress1=mbgLtNgCfgWmailAddress1, mbgLtNgCfgPtpSyncEQltLvlSelEnable=mbgLtNgCfgPtpSyncEQltLvlSelEnable, mbgLtNgCfgPhysicalIfNetLinkMode=mbgLtNgCfgPhysicalIfNetLinkMode, mbgLtNgCfgSnmpV3AuthPassphrase=mbgLtNgCfgSnmpV3AuthPassphrase, mbgLtNgCfgPtpVlanId=mbgLtNgCfgPtpVlanId, mbgLtNgTrapLeapSecondAnnounced=mbgLtNgTrapLeapSecondAnnounced, mbgLtNgSysFan=mbgLtNgSysFan, mbgLtNgClusterReconfigurationState=mbgLtNgClusterReconfigurationState, mbgLtNgCfgPtpSyncEAvail=mbgLtNgCfgPtpSyncEAvail, mbgLtNgCfgTrapPtpNetworkUp=mbgLtNgCfgTrapPtpNetworkUp, mbgLtNgSysTempCelsius=mbgLtNgSysTempCelsius, mbgLtNgCfgPtpOutput2=mbgLtNgCfgPtpOutput2, mbgLtNgCfgFrontPanel=mbgLtNgCfgFrontPanel, mbgLtNgCfgPhysicalIfIpv6Mode=mbgLtNgCfgPhysicalIfIpv6Mode, mbgLtNgCfgSshKeyLength=mbgLtNgCfgSshKeyLength, mbgLtNgCfgSystem=mbgLtNgCfgSystem, mbgLtNgCfgNtpClientMonitoring=mbgLtNgCfgNtpClientMonitoring, mbgLtNgCfgSshShellTimeout=mbgLtNgCfgSshShellTimeout, mbgLtNgTrapXmrLimitExceeded=mbgLtNgTrapXmrLimitExceeded, mbgLtNgCfgNumberOfPhysicalIf=mbgLtNgCfgNumberOfPhysicalIf, mbgLtNgSysNumberOfFans=mbgLtNgSysNumberOfFans, mbgLtNgCfgVirtualIfTableEntry=mbgLtNgCfgVirtualIfTableEntry, mbgLtNgNtpVersion=mbgLtNgNtpVersion, mbgLtNgCfgSnmpTrapRecCommunity=mbgLtNgCfgSnmpTrapRecCommunity, mbgLtNgRefclockGpsTable=mbgLtNgRefclockGpsTable, mbgLtNgCfgVirtualIfLabel=mbgLtNgCfgVirtualIfLabel, mbgLtNgTrapReceiverSync=mbgLtNgTrapReceiverSync, mbgLtNgTrapFanUp=mbgLtNgTrapFanUp, mbgLtNgCfgNtpTableEntry=mbgLtNgCfgNtpTableEntry, mbgLtNgTrapXheRubError=mbgLtNgTrapXheRubError, mbgLtNgTrapFanDown=mbgLtNgTrapFanDown, mbgLtNgRefclockGpsLongitude=mbgLtNgRefclockGpsLongitude, mbgLtNgRefclockSubstate=mbgLtNgRefclockSubstate, mbgLtNgPtpTimeSource=mbgLtNgPtpTimeSource, mbgLtNgCfgEmailTo=mbgLtNgCfgEmailTo, mbgLtNgCfgEthernet=mbgLtNgCfgEthernet, mbgLtNgEthPortLinkTable=mbgLtNgEthPortLinkTable, mbgLtNgFdmFreq=mbgLtNgFdmFreq, mbgLtNgTrapReceiverNotSync=mbgLtNgTrapReceiverNotSync, mbgLtNgCfgTrapShsTimeLimitError=mbgLtNgCfgTrapShsTimeLimitError, mbgLtNgCfgNtpBMTableEntry=mbgLtNgCfgNtpBMTableEntry, mbgLtNgCfgTrapAntennaReconnect=mbgLtNgCfgTrapAntennaReconnect, mbgLtNgCfgPtpIpv4=mbgLtNgCfgPtpIpv4, mbgLtNgRefclockUsage=mbgLtNgRefclockUsage, mbgLtNgCfgVirtualIfIndex=mbgLtNgCfgVirtualIfIndex, mbgLtNgCfgNtpServerMinpoll=mbgLtNgCfgNtpServerMinpoll, mbgLtNgCfgPtpNameserver2=mbgLtNgCfgPtpNameserver2, mbgLtNgTrapHeartbeat=mbgLtNgTrapHeartbeat, mbgLtNgCfgLoginAccess=mbgLtNgCfgLoginAccess, mbgLtNgSysFanTable=mbgLtNgSysFanTable, mbgLtNgCfgSnmpV3SecurityLevel=mbgLtNgCfgSnmpV3SecurityLevel, mbgLtNgCfgPtpHostname=mbgLtNgCfgPtpHostname, mbgLtNgSysPsTable=mbgLtNgSysPsTable, mbgLtNgPtpIndex=mbgLtNgPtpIndex, mbgLtNgNtpCurrentState=mbgLtNgNtpCurrentState, mbgLtNgRefclockLeapSecondDate=mbgLtNgRefclockLeapSecondDate, mbgLtNgCfgSnmpEnabledVersion=mbgLtNgCfgSnmpEnabledVersion, mbgLtNgCfgPtpOpMode=mbgLtNgCfgPtpOpMode, mbgLtNgCfgNtpServerKey=mbgLtNgCfgNtpServerKey, mbgLtNgCfgNtpMultiSymKey=mbgLtNgCfgNtpMultiSymKey, mbgLtNgSysPsIndex=mbgLtNgSysPsIndex, mbgLtNgTrapFDMOk=mbgLtNgTrapFDMOk, mbgLtNgCfgPtpIpv6Avail=mbgLtNgCfgPtpIpv6Avail, mbgLtNgTraps=mbgLtNgTraps, mbgLtNgCfgTrapRefSrcDisconnected=mbgLtNgCfgTrapRefSrcDisconnected, mbgLtNgCfgTrapRefSrcLimitExceeded=mbgLtNgCfgTrapRefSrcLimitExceeded, mbgLtNgTrapPtpStateChanged=mbgLtNgTrapPtpStateChanged, mbgLtNgCfgPtpNetworkProtocol=mbgLtNgCfgPtpNetworkProtocol, mbgLtNgCfgVirtualIfIpv4BroadcastFromDhcp=mbgLtNgCfgVirtualIfIpv4BroadcastFromDhcp, mbgLtNgCfgPtpDelayReqInterval=mbgLtNgCfgPtpDelayReqInterval, mbgLtNgCfgWinpopup=mbgLtNgCfgWinpopup, mbgLtNgCfgNtpMultiInterval=mbgLtNgCfgNtpMultiInterval, mbgLtNgCfgTrapNormalOperation=mbgLtNgCfgTrapNormalOperation, mbgLtNgTrapXmrRefDisconnect=mbgLtNgTrapXmrRefDisconnect, mbgLtNgCfgTrapNetworkUp=mbgLtNgCfgTrapNetworkUp, mbgLtNgCfgSsh=mbgLtNgCfgSsh, mbgLtNgRefclockTable=mbgLtNgRefclockTable, mbgLtNgCfgEmailSmarthostAuth=mbgLtNgCfgEmailSmarthostAuth, mbgLtNgEthPortLinkIndex=mbgLtNgEthPortLinkIndex, mbgLtNgSysFanError=mbgLtNgSysFanError, mbgLtNgClusterClockClass=mbgLtNgClusterClockClass, mbgLtNgRefclockGpsTableEntry=mbgLtNgRefclockGpsTableEntry, mbgLtNgTrapSecondaryRecNotResp=mbgLtNgTrapSecondaryRecNotResp, mbgLtNgCfgTrapRefclockNotSynchronized=mbgLtNgCfgTrapRefclockNotSynchronized, mbgLtNgCfgNtpBMTable=mbgLtNgCfgNtpBMTable, mbgLtNgNtpCCNumberOfClients=mbgLtNgNtpCCNumberOfClients, mbgLtNgCfgPtp=mbgLtNgCfgPtp, mbgLtNgTrapPowerSupplyUp=mbgLtNgTrapPowerSupplyUp, mbgLtNgCfgVirtualIfIpv4DnsFromDhcp=mbgLtNgCfgVirtualIfIpv4DnsFromDhcp, mbgLtNgCfgTrapNtpSync=mbgLtNgCfgTrapNtpSync, mbgLtNgTrapsGroup=mbgLtNgTrapsGroup, mbgLtNgObjectsGroup=mbgLtNgObjectsGroup, mbgLtNgCfgSyslogLoglevel=mbgLtNgCfgSyslogLoglevel, mbgLtNgCmdSetTime=mbgLtNgCmdSetTime, mbgLtNgCfgEthernetGenClusterIp=mbgLtNgCfgEthernetGenClusterIp, mbgLtNgClusterMasterSerial=mbgLtNgClusterMasterSerial, mbgLtNgCfgTrapLeapSecAnnounced=mbgLtNgCfgTrapLeapSecAnnounced, mbgLtNgTrapIMSError=mbgLtNgTrapIMSError, mbgLtNgCfgPtpSyncESdhNwOption=mbgLtNgCfgPtpSyncESdhNwOption, mbgLtNgTrapPowerSupplyFailure=mbgLtNgTrapPowerSupplyFailure, mbgLtNgCfgPtpSyncEEnabled=mbgLtNgCfgPtpSyncEEnabled, mbgLtNgCfgPtpIpv6McastScope=mbgLtNgCfgPtpIpv6McastScope, mbgLtNgCfgSNMP=mbgLtNgCfgSNMP, mbgLtNgNtpCCDuration=mbgLtNgNtpCCDuration, mbgLtNgClusterPortState=mbgLtNgClusterPortState, mbgLtNgTrapNTPSync=mbgLtNgTrapNTPSync, mbgLtNgCfgTrapPtpNetworkDown=mbgLtNgCfgTrapPtpNetworkDown, mbgLtNgCfgVirtualIfIpv4DomainFromDhcp=mbgLtNgCfgVirtualIfIpv4DomainFromDhcp, mbgLtNgTrapSHSTimeLimitOk=mbgLtNgTrapSHSTimeLimitOk, mbgLtNgCfgVirtualIfAssigned=mbgLtNgCfgVirtualIfAssigned) diff --git a/agents/meinberg_m1000/mibs/MBG-SNMP-ROOT-MIB.py b/agents/meinberg_m1000/mibs/MBG-SNMP-ROOT-MIB.py new file mode 100644 index 000000000..d0ce9a54e --- /dev/null +++ b/agents/meinberg_m1000/mibs/MBG-SNMP-ROOT-MIB.py @@ -0,0 +1,23 @@ +# +# PySNMP MIB module MBG-SNMP-ROOT-MIB (http://snmplabs.com/pysmi) +# ASN.1 source file://./MBG-SNMP-ROOT-MIB.mib +# Produced by pysmi-0.3.4 at Fri May 1 22:39:55 2020 +# On host grumpy platform Linux version 4.15.0-88-generic by user bjk49 +# Using Python version 3.6.9 (default, Apr 18 2020, 01:56:04) +# +OctetString, Integer, ObjectIdentifier = mibBuilder.importSymbols("ASN1", "OctetString", "Integer", "ObjectIdentifier") +NamedValues, = mibBuilder.importSymbols("ASN1-ENUMERATION", "NamedValues") +ConstraintsUnion, ValueSizeConstraint, SingleValueConstraint, ValueRangeConstraint, ConstraintsIntersection = mibBuilder.importSymbols("ASN1-REFINEMENT", "ConstraintsUnion", "ValueSizeConstraint", "SingleValueConstraint", "ValueRangeConstraint", "ConstraintsIntersection") +ModuleCompliance, NotificationGroup = mibBuilder.importSymbols("SNMPv2-CONF", "ModuleCompliance", "NotificationGroup") +IpAddress, Gauge32, ModuleIdentity, Unsigned32, enterprises, Bits, Integer32, ObjectIdentity, iso, Counter64, NotificationType, TimeTicks, Counter32, MibScalar, MibTable, MibTableRow, MibTableColumn, MibIdentifier = mibBuilder.importSymbols("SNMPv2-SMI", "IpAddress", "Gauge32", "ModuleIdentity", "Unsigned32", "enterprises", "Bits", "Integer32", "ObjectIdentity", "iso", "Counter64", "NotificationType", "TimeTicks", "Counter32", "MibScalar", "MibTable", "MibTableRow", "MibTableColumn", "MibIdentifier") +TextualConvention, DisplayString = mibBuilder.importSymbols("SNMPv2-TC", "TextualConvention", "DisplayString") +mbgSnmpRoot = ModuleIdentity((1, 3, 6, 1, 4, 1, 5597)) +mbgSnmpRoot.setRevisions(('2012-01-25 07:45', '2011-10-14 06:30',)) +if mibBuilder.loadTexts: mbgSnmpRoot.setLastUpdated('201201250745Z') +if mibBuilder.loadTexts: mbgSnmpRoot.setOrganization('Meinberg Radio Clocks GmbH & Co. KG') +class MeinbergSwitch(TextualConvention, Integer32): + status = 'current' + subtypeSpec = Integer32.subtypeSpec + ConstraintsUnion(SingleValueConstraint(0, 1)) + namedValues = NamedValues(("off", 0), ("on", 1)) + +mibBuilder.exportSymbols("MBG-SNMP-ROOT-MIB", mbgSnmpRoot=mbgSnmpRoot, MeinbergSwitch=MeinbergSwitch, PYSNMP_MODULE_ID=mbgSnmpRoot) diff --git a/agents/meinberg_m1000/mibs/SNMPv2-MIB.py b/agents/meinberg_m1000/mibs/SNMPv2-MIB.py new file mode 100644 index 000000000..9a9b4f9b7 --- /dev/null +++ b/agents/meinberg_m1000/mibs/SNMPv2-MIB.py @@ -0,0 +1,159 @@ +# +# PySNMP MIB module SNMPv2-MIB (http://snmplabs.com/pysmi) +# ASN.1 source file:///usr/share/snmp/mibs/ietf/SNMPv2-MIB +# Produced by pysmi-0.3.4 at Fri May 1 22:39:55 2020 +# On host grumpy platform Linux version 4.15.0-88-generic by user bjk49 +# Using Python version 3.6.9 (default, Apr 18 2020, 01:56:04) +# +OctetString, Integer, ObjectIdentifier = mibBuilder.importSymbols("ASN1", "OctetString", "Integer", "ObjectIdentifier") +NamedValues, = mibBuilder.importSymbols("ASN1-ENUMERATION", "NamedValues") +ConstraintsUnion, ValueSizeConstraint, SingleValueConstraint, ValueRangeConstraint, ConstraintsIntersection = mibBuilder.importSymbols("ASN1-REFINEMENT", "ConstraintsUnion", "ValueSizeConstraint", "SingleValueConstraint", "ValueRangeConstraint", "ConstraintsIntersection") +ModuleCompliance, ObjectGroup, NotificationGroup = mibBuilder.importSymbols("SNMPv2-CONF", "ModuleCompliance", "ObjectGroup", "NotificationGroup") +IpAddress, snmpModules, mib_2, ModuleIdentity, Gauge32, Unsigned32, Bits, Integer32, ObjectIdentity, NotificationType, iso, Counter64, TimeTicks, Counter32, MibScalar, MibTable, MibTableRow, MibTableColumn, MibIdentifier = mibBuilder.importSymbols("SNMPv2-SMI", "IpAddress", "snmpModules", "mib-2", "ModuleIdentity", "Gauge32", "Unsigned32", "Bits", "Integer32", "ObjectIdentity", "NotificationType", "iso", "Counter64", "TimeTicks", "Counter32", "MibScalar", "MibTable", "MibTableRow", "MibTableColumn", "MibIdentifier") +TimeStamp, TestAndIncr, TextualConvention, DisplayString = mibBuilder.importSymbols("SNMPv2-TC", "TimeStamp", "TestAndIncr", "TextualConvention", "DisplayString") +snmpMIB = ModuleIdentity((1, 3, 6, 1, 6, 3, 1)) +snmpMIB.setRevisions(('2002-10-16 00:00', '1995-11-09 00:00', '1993-04-01 00:00',)) +if mibBuilder.loadTexts: snmpMIB.setLastUpdated('200210160000Z') +if mibBuilder.loadTexts: snmpMIB.setOrganization('IETF SNMPv3 Working Group') +snmpMIBObjects = MibIdentifier((1, 3, 6, 1, 6, 3, 1, 1)) +system = MibIdentifier((1, 3, 6, 1, 2, 1, 1)) +sysDescr = MibScalar((1, 3, 6, 1, 2, 1, 1, 1), DisplayString().subtype(subtypeSpec=ValueSizeConstraint(0, 255))).setMaxAccess("readonly") +if mibBuilder.loadTexts: sysDescr.setStatus('current') +sysObjectID = MibScalar((1, 3, 6, 1, 2, 1, 1, 2), ObjectIdentifier()).setMaxAccess("readonly") +if mibBuilder.loadTexts: sysObjectID.setStatus('current') +sysUpTime = MibScalar((1, 3, 6, 1, 2, 1, 1, 3), TimeTicks()).setMaxAccess("readonly") +if mibBuilder.loadTexts: sysUpTime.setStatus('current') +sysContact = MibScalar((1, 3, 6, 1, 2, 1, 1, 4), DisplayString().subtype(subtypeSpec=ValueSizeConstraint(0, 255))).setMaxAccess("readwrite") +if mibBuilder.loadTexts: sysContact.setStatus('current') +sysName = MibScalar((1, 3, 6, 1, 2, 1, 1, 5), DisplayString().subtype(subtypeSpec=ValueSizeConstraint(0, 255))).setMaxAccess("readwrite") +if mibBuilder.loadTexts: sysName.setStatus('current') +sysLocation = MibScalar((1, 3, 6, 1, 2, 1, 1, 6), DisplayString().subtype(subtypeSpec=ValueSizeConstraint(0, 255))).setMaxAccess("readwrite") +if mibBuilder.loadTexts: sysLocation.setStatus('current') +sysServices = MibScalar((1, 3, 6, 1, 2, 1, 1, 7), Integer32().subtype(subtypeSpec=ValueRangeConstraint(0, 127))).setMaxAccess("readonly") +if mibBuilder.loadTexts: sysServices.setStatus('current') +sysORLastChange = MibScalar((1, 3, 6, 1, 2, 1, 1, 8), TimeStamp()).setMaxAccess("readonly") +if mibBuilder.loadTexts: sysORLastChange.setStatus('current') +sysORTable = MibTable((1, 3, 6, 1, 2, 1, 1, 9), ) +if mibBuilder.loadTexts: sysORTable.setStatus('current') +sysOREntry = MibTableRow((1, 3, 6, 1, 2, 1, 1, 9, 1), ).setIndexNames((0, "SNMPv2-MIB", "sysORIndex")) +if mibBuilder.loadTexts: sysOREntry.setStatus('current') +sysORIndex = MibTableColumn((1, 3, 6, 1, 2, 1, 1, 9, 1, 1), Integer32().subtype(subtypeSpec=ValueRangeConstraint(1, 2147483647))) +if mibBuilder.loadTexts: sysORIndex.setStatus('current') +sysORID = MibTableColumn((1, 3, 6, 1, 2, 1, 1, 9, 1, 2), ObjectIdentifier()).setMaxAccess("readonly") +if mibBuilder.loadTexts: sysORID.setStatus('current') +sysORDescr = MibTableColumn((1, 3, 6, 1, 2, 1, 1, 9, 1, 3), DisplayString()).setMaxAccess("readonly") +if mibBuilder.loadTexts: sysORDescr.setStatus('current') +sysORUpTime = MibTableColumn((1, 3, 6, 1, 2, 1, 1, 9, 1, 4), TimeStamp()).setMaxAccess("readonly") +if mibBuilder.loadTexts: sysORUpTime.setStatus('current') +snmp = MibIdentifier((1, 3, 6, 1, 2, 1, 11)) +snmpInPkts = MibScalar((1, 3, 6, 1, 2, 1, 11, 1), Counter32()).setMaxAccess("readonly") +if mibBuilder.loadTexts: snmpInPkts.setStatus('current') +snmpInBadVersions = MibScalar((1, 3, 6, 1, 2, 1, 11, 3), Counter32()).setMaxAccess("readonly") +if mibBuilder.loadTexts: snmpInBadVersions.setStatus('current') +snmpInBadCommunityNames = MibScalar((1, 3, 6, 1, 2, 1, 11, 4), Counter32()).setMaxAccess("readonly") +if mibBuilder.loadTexts: snmpInBadCommunityNames.setStatus('current') +snmpInBadCommunityUses = MibScalar((1, 3, 6, 1, 2, 1, 11, 5), Counter32()).setMaxAccess("readonly") +if mibBuilder.loadTexts: snmpInBadCommunityUses.setStatus('current') +snmpInASNParseErrs = MibScalar((1, 3, 6, 1, 2, 1, 11, 6), Counter32()).setMaxAccess("readonly") +if mibBuilder.loadTexts: snmpInASNParseErrs.setStatus('current') +snmpEnableAuthenTraps = MibScalar((1, 3, 6, 1, 2, 1, 11, 30), Integer32().subtype(subtypeSpec=ConstraintsUnion(SingleValueConstraint(1, 2))).clone(namedValues=NamedValues(("enabled", 1), ("disabled", 2)))).setMaxAccess("readwrite") +if mibBuilder.loadTexts: snmpEnableAuthenTraps.setStatus('current') +snmpSilentDrops = MibScalar((1, 3, 6, 1, 2, 1, 11, 31), Counter32()).setMaxAccess("readonly") +if mibBuilder.loadTexts: snmpSilentDrops.setStatus('current') +snmpProxyDrops = MibScalar((1, 3, 6, 1, 2, 1, 11, 32), Counter32()).setMaxAccess("readonly") +if mibBuilder.loadTexts: snmpProxyDrops.setStatus('current') +snmpTrap = MibIdentifier((1, 3, 6, 1, 6, 3, 1, 1, 4)) +snmpTrapOID = MibScalar((1, 3, 6, 1, 6, 3, 1, 1, 4, 1), ObjectIdentifier()).setMaxAccess("accessiblefornotify") +if mibBuilder.loadTexts: snmpTrapOID.setStatus('current') +snmpTrapEnterprise = MibScalar((1, 3, 6, 1, 6, 3, 1, 1, 4, 3), ObjectIdentifier()).setMaxAccess("accessiblefornotify") +if mibBuilder.loadTexts: snmpTrapEnterprise.setStatus('current') +snmpTraps = MibIdentifier((1, 3, 6, 1, 6, 3, 1, 1, 5)) +coldStart = NotificationType((1, 3, 6, 1, 6, 3, 1, 1, 5, 1)) +if mibBuilder.loadTexts: coldStart.setStatus('current') +warmStart = NotificationType((1, 3, 6, 1, 6, 3, 1, 1, 5, 2)) +if mibBuilder.loadTexts: warmStart.setStatus('current') +authenticationFailure = NotificationType((1, 3, 6, 1, 6, 3, 1, 1, 5, 5)) +if mibBuilder.loadTexts: authenticationFailure.setStatus('current') +snmpSet = MibIdentifier((1, 3, 6, 1, 6, 3, 1, 1, 6)) +snmpSetSerialNo = MibScalar((1, 3, 6, 1, 6, 3, 1, 1, 6, 1), TestAndIncr()).setMaxAccess("readwrite") +if mibBuilder.loadTexts: snmpSetSerialNo.setStatus('current') +snmpMIBConformance = MibIdentifier((1, 3, 6, 1, 6, 3, 1, 2)) +snmpMIBCompliances = MibIdentifier((1, 3, 6, 1, 6, 3, 1, 2, 1)) +snmpMIBGroups = MibIdentifier((1, 3, 6, 1, 6, 3, 1, 2, 2)) +snmpBasicCompliance = ModuleCompliance((1, 3, 6, 1, 6, 3, 1, 2, 1, 2)).setObjects(("SNMPv2-MIB", "snmpGroup"), ("SNMPv2-MIB", "snmpSetGroup"), ("SNMPv2-MIB", "systemGroup"), ("SNMPv2-MIB", "snmpBasicNotificationsGroup"), ("SNMPv2-MIB", "snmpCommunityGroup")) + +if getattr(mibBuilder, 'version', (0, 0, 0)) > (4, 4, 0): + snmpBasicCompliance = snmpBasicCompliance.setStatus('deprecated') +snmpBasicComplianceRev2 = ModuleCompliance((1, 3, 6, 1, 6, 3, 1, 2, 1, 3)).setObjects(("SNMPv2-MIB", "snmpGroup"), ("SNMPv2-MIB", "snmpSetGroup"), ("SNMPv2-MIB", "systemGroup"), ("SNMPv2-MIB", "snmpBasicNotificationsGroup"), ("SNMPv2-MIB", "snmpCommunityGroup"), ("SNMPv2-MIB", "snmpWarmStartNotificationGroup")) + +if getattr(mibBuilder, 'version', (0, 0, 0)) > (4, 4, 0): + snmpBasicComplianceRev2 = snmpBasicComplianceRev2.setStatus('current') +snmpGroup = ObjectGroup((1, 3, 6, 1, 6, 3, 1, 2, 2, 8)).setObjects(("SNMPv2-MIB", "snmpInPkts"), ("SNMPv2-MIB", "snmpInBadVersions"), ("SNMPv2-MIB", "snmpInASNParseErrs"), ("SNMPv2-MIB", "snmpSilentDrops"), ("SNMPv2-MIB", "snmpProxyDrops"), ("SNMPv2-MIB", "snmpEnableAuthenTraps")) +if getattr(mibBuilder, 'version', (0, 0, 0)) > (4, 4, 0): + snmpGroup = snmpGroup.setStatus('current') +snmpCommunityGroup = ObjectGroup((1, 3, 6, 1, 6, 3, 1, 2, 2, 9)).setObjects(("SNMPv2-MIB", "snmpInBadCommunityNames"), ("SNMPv2-MIB", "snmpInBadCommunityUses")) +if getattr(mibBuilder, 'version', (0, 0, 0)) > (4, 4, 0): + snmpCommunityGroup = snmpCommunityGroup.setStatus('current') +snmpSetGroup = ObjectGroup((1, 3, 6, 1, 6, 3, 1, 2, 2, 5)).setObjects(("SNMPv2-MIB", "snmpSetSerialNo")) +if getattr(mibBuilder, 'version', (0, 0, 0)) > (4, 4, 0): + snmpSetGroup = snmpSetGroup.setStatus('current') +systemGroup = ObjectGroup((1, 3, 6, 1, 6, 3, 1, 2, 2, 6)).setObjects(("SNMPv2-MIB", "sysDescr"), ("SNMPv2-MIB", "sysObjectID"), ("SNMPv2-MIB", "sysUpTime"), ("SNMPv2-MIB", "sysContact"), ("SNMPv2-MIB", "sysName"), ("SNMPv2-MIB", "sysLocation"), ("SNMPv2-MIB", "sysServices"), ("SNMPv2-MIB", "sysORLastChange"), ("SNMPv2-MIB", "sysORID"), ("SNMPv2-MIB", "sysORUpTime"), ("SNMPv2-MIB", "sysORDescr")) +if getattr(mibBuilder, 'version', (0, 0, 0)) > (4, 4, 0): + systemGroup = systemGroup.setStatus('current') +snmpBasicNotificationsGroup = NotificationGroup((1, 3, 6, 1, 6, 3, 1, 2, 2, 7)).setObjects(("SNMPv2-MIB", "coldStart"), ("SNMPv2-MIB", "authenticationFailure")) +if getattr(mibBuilder, 'version', (0, 0, 0)) > (4, 4, 0): + snmpBasicNotificationsGroup = snmpBasicNotificationsGroup.setStatus('current') +snmpWarmStartNotificationGroup = NotificationGroup((1, 3, 6, 1, 6, 3, 1, 2, 2, 11)).setObjects(("SNMPv2-MIB", "warmStart")) +if getattr(mibBuilder, 'version', (0, 0, 0)) > (4, 4, 0): + snmpWarmStartNotificationGroup = snmpWarmStartNotificationGroup.setStatus('current') +snmpNotificationGroup = ObjectGroup((1, 3, 6, 1, 6, 3, 1, 2, 2, 12)).setObjects(("SNMPv2-MIB", "snmpTrapOID"), ("SNMPv2-MIB", "snmpTrapEnterprise")) +if getattr(mibBuilder, 'version', (0, 0, 0)) > (4, 4, 0): + snmpNotificationGroup = snmpNotificationGroup.setStatus('current') +snmpOutPkts = MibScalar((1, 3, 6, 1, 2, 1, 11, 2), Counter32()).setMaxAccess("readonly") +if mibBuilder.loadTexts: snmpOutPkts.setStatus('obsolete') +snmpInTooBigs = MibScalar((1, 3, 6, 1, 2, 1, 11, 8), Counter32()).setMaxAccess("readonly") +if mibBuilder.loadTexts: snmpInTooBigs.setStatus('obsolete') +snmpInNoSuchNames = MibScalar((1, 3, 6, 1, 2, 1, 11, 9), Counter32()).setMaxAccess("readonly") +if mibBuilder.loadTexts: snmpInNoSuchNames.setStatus('obsolete') +snmpInBadValues = MibScalar((1, 3, 6, 1, 2, 1, 11, 10), Counter32()).setMaxAccess("readonly") +if mibBuilder.loadTexts: snmpInBadValues.setStatus('obsolete') +snmpInReadOnlys = MibScalar((1, 3, 6, 1, 2, 1, 11, 11), Counter32()).setMaxAccess("readonly") +if mibBuilder.loadTexts: snmpInReadOnlys.setStatus('obsolete') +snmpInGenErrs = MibScalar((1, 3, 6, 1, 2, 1, 11, 12), Counter32()).setMaxAccess("readonly") +if mibBuilder.loadTexts: snmpInGenErrs.setStatus('obsolete') +snmpInTotalReqVars = MibScalar((1, 3, 6, 1, 2, 1, 11, 13), Counter32()).setMaxAccess("readonly") +if mibBuilder.loadTexts: snmpInTotalReqVars.setStatus('obsolete') +snmpInTotalSetVars = MibScalar((1, 3, 6, 1, 2, 1, 11, 14), Counter32()).setMaxAccess("readonly") +if mibBuilder.loadTexts: snmpInTotalSetVars.setStatus('obsolete') +snmpInGetRequests = MibScalar((1, 3, 6, 1, 2, 1, 11, 15), Counter32()).setMaxAccess("readonly") +if mibBuilder.loadTexts: snmpInGetRequests.setStatus('obsolete') +snmpInGetNexts = MibScalar((1, 3, 6, 1, 2, 1, 11, 16), Counter32()).setMaxAccess("readonly") +if mibBuilder.loadTexts: snmpInGetNexts.setStatus('obsolete') +snmpInSetRequests = MibScalar((1, 3, 6, 1, 2, 1, 11, 17), Counter32()).setMaxAccess("readonly") +if mibBuilder.loadTexts: snmpInSetRequests.setStatus('obsolete') +snmpInGetResponses = MibScalar((1, 3, 6, 1, 2, 1, 11, 18), Counter32()).setMaxAccess("readonly") +if mibBuilder.loadTexts: snmpInGetResponses.setStatus('obsolete') +snmpInTraps = MibScalar((1, 3, 6, 1, 2, 1, 11, 19), Counter32()).setMaxAccess("readonly") +if mibBuilder.loadTexts: snmpInTraps.setStatus('obsolete') +snmpOutTooBigs = MibScalar((1, 3, 6, 1, 2, 1, 11, 20), Counter32()).setMaxAccess("readonly") +if mibBuilder.loadTexts: snmpOutTooBigs.setStatus('obsolete') +snmpOutNoSuchNames = MibScalar((1, 3, 6, 1, 2, 1, 11, 21), Counter32()).setMaxAccess("readonly") +if mibBuilder.loadTexts: snmpOutNoSuchNames.setStatus('obsolete') +snmpOutBadValues = MibScalar((1, 3, 6, 1, 2, 1, 11, 22), Counter32()).setMaxAccess("readonly") +if mibBuilder.loadTexts: snmpOutBadValues.setStatus('obsolete') +snmpOutGenErrs = MibScalar((1, 3, 6, 1, 2, 1, 11, 24), Counter32()).setMaxAccess("readonly") +if mibBuilder.loadTexts: snmpOutGenErrs.setStatus('obsolete') +snmpOutGetRequests = MibScalar((1, 3, 6, 1, 2, 1, 11, 25), Counter32()).setMaxAccess("readonly") +if mibBuilder.loadTexts: snmpOutGetRequests.setStatus('obsolete') +snmpOutGetNexts = MibScalar((1, 3, 6, 1, 2, 1, 11, 26), Counter32()).setMaxAccess("readonly") +if mibBuilder.loadTexts: snmpOutGetNexts.setStatus('obsolete') +snmpOutSetRequests = MibScalar((1, 3, 6, 1, 2, 1, 11, 27), Counter32()).setMaxAccess("readonly") +if mibBuilder.loadTexts: snmpOutSetRequests.setStatus('obsolete') +snmpOutGetResponses = MibScalar((1, 3, 6, 1, 2, 1, 11, 28), Counter32()).setMaxAccess("readonly") +if mibBuilder.loadTexts: snmpOutGetResponses.setStatus('obsolete') +snmpOutTraps = MibScalar((1, 3, 6, 1, 2, 1, 11, 29), Counter32()).setMaxAccess("readonly") +if mibBuilder.loadTexts: snmpOutTraps.setStatus('obsolete') +snmpObsoleteGroup = ObjectGroup((1, 3, 6, 1, 6, 3, 1, 2, 2, 10)).setObjects(("SNMPv2-MIB", "snmpOutPkts"), ("SNMPv2-MIB", "snmpInTooBigs"), ("SNMPv2-MIB", "snmpInNoSuchNames"), ("SNMPv2-MIB", "snmpInBadValues"), ("SNMPv2-MIB", "snmpInReadOnlys"), ("SNMPv2-MIB", "snmpInGenErrs"), ("SNMPv2-MIB", "snmpInTotalReqVars"), ("SNMPv2-MIB", "snmpInTotalSetVars"), ("SNMPv2-MIB", "snmpInGetRequests"), ("SNMPv2-MIB", "snmpInGetNexts"), ("SNMPv2-MIB", "snmpInSetRequests"), ("SNMPv2-MIB", "snmpInGetResponses"), ("SNMPv2-MIB", "snmpInTraps"), ("SNMPv2-MIB", "snmpOutTooBigs"), ("SNMPv2-MIB", "snmpOutNoSuchNames"), ("SNMPv2-MIB", "snmpOutBadValues"), ("SNMPv2-MIB", "snmpOutGenErrs"), ("SNMPv2-MIB", "snmpOutGetRequests"), ("SNMPv2-MIB", "snmpOutGetNexts"), ("SNMPv2-MIB", "snmpOutSetRequests"), ("SNMPv2-MIB", "snmpOutGetResponses"), ("SNMPv2-MIB", "snmpOutTraps")) +if getattr(mibBuilder, 'version', (0, 0, 0)) > (4, 4, 0): + snmpObsoleteGroup = snmpObsoleteGroup.setStatus('obsolete') +mibBuilder.exportSymbols("SNMPv2-MIB", snmpInSetRequests=snmpInSetRequests, system=system, snmpInPkts=snmpInPkts, systemGroup=systemGroup, snmpCommunityGroup=snmpCommunityGroup, snmpOutPkts=snmpOutPkts, sysLocation=sysLocation, snmpMIB=snmpMIB, snmpInTotalReqVars=snmpInTotalReqVars, sysORUpTime=sysORUpTime, snmp=snmp, snmpSet=snmpSet, snmpObsoleteGroup=snmpObsoleteGroup, snmpOutGenErrs=snmpOutGenErrs, sysObjectID=sysObjectID, snmpOutNoSuchNames=snmpOutNoSuchNames, sysServices=sysServices, snmpOutGetResponses=snmpOutGetResponses, sysUpTime=sysUpTime, snmpOutBadValues=snmpOutBadValues, sysORID=sysORID, authenticationFailure=authenticationFailure, snmpInGenErrs=snmpInGenErrs, snmpBasicNotificationsGroup=snmpBasicNotificationsGroup, snmpMIBObjects=snmpMIBObjects, snmpTrapOID=snmpTrapOID, snmpOutSetRequests=snmpOutSetRequests, snmpInTooBigs=snmpInTooBigs, snmpOutTraps=snmpOutTraps, snmpSilentDrops=snmpSilentDrops, snmpInNoSuchNames=snmpInNoSuchNames, snmpMIBCompliances=snmpMIBCompliances, snmpInTraps=snmpInTraps, snmpNotificationGroup=snmpNotificationGroup, snmpProxyDrops=snmpProxyDrops, sysORTable=sysORTable, sysDescr=sysDescr, sysORIndex=sysORIndex, snmpInASNParseErrs=snmpInASNParseErrs, snmpInBadCommunityNames=snmpInBadCommunityNames, coldStart=coldStart, warmStart=warmStart, snmpMIBConformance=snmpMIBConformance, snmpInBadVersions=snmpInBadVersions, snmpMIBGroups=snmpMIBGroups, snmpBasicComplianceRev2=snmpBasicComplianceRev2, snmpInBadValues=snmpInBadValues, snmpSetSerialNo=snmpSetSerialNo, snmpInTotalSetVars=snmpInTotalSetVars, snmpBasicCompliance=snmpBasicCompliance, snmpOutTooBigs=snmpOutTooBigs, snmpTrapEnterprise=snmpTrapEnterprise, snmpOutGetNexts=snmpOutGetNexts, sysName=sysName, snmpSetGroup=snmpSetGroup, sysORLastChange=sysORLastChange, snmpEnableAuthenTraps=snmpEnableAuthenTraps, snmpInReadOnlys=snmpInReadOnlys, sysORDescr=sysORDescr, snmpInGetNexts=snmpInGetNexts, snmpTrap=snmpTrap, snmpInBadCommunityUses=snmpInBadCommunityUses, snmpGroup=snmpGroup, snmpWarmStartNotificationGroup=snmpWarmStartNotificationGroup, snmpInGetResponses=snmpInGetResponses, sysContact=sysContact, sysOREntry=sysOREntry, snmpOutGetRequests=snmpOutGetRequests, snmpTraps=snmpTraps, snmpInGetRequests=snmpInGetRequests, PYSNMP_MODULE_ID=snmpMIB) diff --git a/agents/pfeiffer_tpg366/Dockerfile b/agents/pfeiffer_tpg366/Dockerfile index 8c835d023..b474ce75a 100644 --- a/agents/pfeiffer_tpg366/Dockerfile +++ b/agents/pfeiffer_tpg366/Dockerfile @@ -11,7 +11,7 @@ WORKDIR /app/socs/agents/pfeiffer_tpg366/ COPY . . # Run registry on container startup -ENTRYPOINT ["python3", "-u", "pfeiffer_tpg366_agent.py"] +ENTRYPOINT ["dumb-init", "python3", "-u", "pfeiffer_tpg366_agent.py"] -CMD ["--site-hub=ws://sisock-crossbar:8001/ws", \ - "--site-http=http://sisock-crossbar:8001/call"] +CMD ["--site-hub=ws://crossbar:8001/ws", \ + "--site-http=http://crossbar:8001/call"] diff --git a/agents/pysmurf_archiver/Dockerfile b/agents/pysmurf_archiver/Dockerfile index b9cc2e432..f3aee2fcd 100644 --- a/agents/pysmurf_archiver/Dockerfile +++ b/agents/pysmurf_archiver/Dockerfile @@ -14,7 +14,7 @@ RUN apt-get install rsync -y RUN pip3 install -r requirements.txt # Run registry on container startup -ENTRYPOINT ["python3", "-u", "pysmurf_archiver_agent.py"] +ENTRYPOINT ["dumb-init", "python3", "-u", "pysmurf_archiver_agent.py"] -CMD ["--site-hub=ws://sisock-crossbar:8001/ws", \ - "--site-http=http://sisock-crossbar:8001/call"] +CMD ["--site-hub=ws://crossbar:8001/ws", \ + "--site-http=http://crossbar:8001/call"] diff --git a/agents/pysmurf_controller/Dockerfile b/agents/pysmurf_controller/Dockerfile index 33a460191..a6a850829 100644 --- a/agents/pysmurf_controller/Dockerfile +++ b/agents/pysmurf_controller/Dockerfile @@ -31,8 +31,8 @@ WORKDIR /app/socs/agents/pysmurf_controller COPY . . RUN pip3 install -r requirements.txt -ENTRYPOINT ["python3", "-u", "pysmurf_controller.py"] +ENTRYPOINT ["dumb-init", "python3", "-u", "pysmurf_controller.py"] # Sensible defaults for setup with sisock -CMD ["--site-hub=ws://sisock-crossbar:8001/ws", \ - "--site-http=http://sisock-crossbar:8001/call"] +CMD ["--site-hub=ws://crossbar:8001/ws", \ + "--site-http=http://crossbar:8001/call"] diff --git a/agents/pysmurf_monitor/Dockerfile b/agents/pysmurf_monitor/Dockerfile index 3de671443..4235631db 100644 --- a/agents/pysmurf_monitor/Dockerfile +++ b/agents/pysmurf_monitor/Dockerfile @@ -13,7 +13,7 @@ RUN pip3 install -r requirements.txt # Run registry on container startup -ENTRYPOINT ["python3", "-u", "pysmurf_monitor.py"] +ENTRYPOINT ["dumb-init", "python3", "-u", "pysmurf_monitor.py"] -CMD ["--site-hub=ws://sisock-crossbar:8001/ws", \ - "--site-http=http://sisock-crossbar:8001/call"] +CMD ["--site-hub=ws://crossbar:8001/ws", \ + "--site-http=http://crossbar:8001/call"] diff --git a/agents/scpi_psu/Dockerfile b/agents/scpi_psu/Dockerfile index e73880ee7..2535e7caf 100644 --- a/agents/scpi_psu/Dockerfile +++ b/agents/scpi_psu/Dockerfile @@ -11,7 +11,7 @@ WORKDIR /app/socs/agents/scpi_psu/ COPY . . # Run agent on container startup -ENTRYPOINT ["python3", "-u", "scpi_psu_agent.py"] +ENTRYPOINT ["dumb-init", "python3", "-u", "scpi_psu_agent.py"] -CMD ["--site-hub=ws://sisock-crossbar:8001/ws", \ - "--site-http=http://sisock-crossbar:8001/call"] +CMD ["--site-hub=ws://crossbar:8001/ws", \ + "--site-http=http://crossbar:8001/call"] diff --git a/agents/smurf_recorder/Dockerfile b/agents/smurf_recorder/Dockerfile index 67b684413..01f8932c1 100644 --- a/agents/smurf_recorder/Dockerfile +++ b/agents/smurf_recorder/Dockerfile @@ -8,8 +8,8 @@ WORKDIR /app/socs/agents/smurf_recorder/ COPY . . # Run registry on container startup -ENTRYPOINT ["python3", "-u", "smurf_recorder.py"] +ENTRYPOINT ["dumb-init", "python3", "-u", "smurf_recorder.py"] # Default site-hub -CMD ["--site-hub=ws://sisock-crossbar:8001/ws", \ - "--site-http=http://sisock-crossbar:8001/call"] +CMD ["--site-hub=ws://crossbar:8001/ws", \ + "--site-http=http://crossbar:8001/call"] diff --git a/agents/smurf_recorder/smurf_recorder.py b/agents/smurf_recorder/smurf_recorder.py index 15b31fc96..1009982be 100644 --- a/agents/smurf_recorder/smurf_recorder.py +++ b/agents/smurf_recorder/smurf_recorder.py @@ -58,17 +58,62 @@ class SmurfRecorder: false stops the recording of data. log : txaio.tx.Logger txaio logger object, created by the OCSAgent - + target_rate : float + Target sampling rate for monitored channels. + monitored_channels : list + Readout channels to monitor. Incoming data for these channels will be + downsampled and published to an OCS feed. """ - def __init__(self, agent, time_per_file, data_dir, address="localhost", - port=4536): + def __init__(self, agent, time_per_file, data_dir, stream_id, + address="localhost", port=4536, target_rate=10): self.agent = agent self.time_per_file = time_per_file self.data_dir = data_dir + self.stream_id = stream_id self.address = "tcp://{}:{}".format(address, port) self.is_streaming = False self.log = self.agent.log + self.target_rate = target_rate + self.monitored_channels = [] + + self.agent.register_feed('detectors', record=True) + + def set_monitored_channels(self, session, params=None): + """Sets channels that the recorder should monitor. + + Args + ----- + channels : List[Int], required + List of channel numbers (integers between 0 and 2048) to be + monitored. A maximum of 6 channels can be monitored at a time. + """ + if params is None: + params = {} + + if len(params['channels']) > 6: + return False, "Cannot monitor more than 6 channels" + + self.monitored_channels = params['channels'] + return True, f"Set monitored channels to {self.monitored_channels}" + + def set_target_rate(self, session, params=None): + """Sets the target sample rate for monitored channels. + + Args + ----- + target_rate : float, required + Target rate after downsampling for monitored channels in Hz. + Max target rate is 10 Hz. + """ + if params is None: + params = {} + + if params['target_rate'] > 10: + return False, "Max target rate is 10 Hz" + + self.target_rate = params['target_rate'] + return True, f"Set target sampling rate to {self.target_rate}" def start_record(self, session, params=None): """start_record(params=None) @@ -88,10 +133,16 @@ def start_record(self, session, params=None): self.is_streaming = True recorder = FrameRecorder(self.time_per_file, self.address, - self.data_dir) + self.data_dir, self.stream_id, + target_rate=self.target_rate) while self.is_streaming: + recorder.monitored_channels = self.monitored_channels + recorder.target_rate = self.target_rate recorder.run() + for k, v in recorder.stream_data.items(): + if v['timestamps']: + self.agent.publish_to_feed('detectors', v) # Explicitly clean up when done del recorder @@ -129,6 +180,14 @@ def make_parser(parser=None): help="Port to listen on.") pgroup.add_argument("--address", default="localhost", help="Address to listen to.") + pgroup.add_argument('--stream-id', default='None', + help="Stream id of recorded stream. If one is not " + "present in the G3Frames, this is the stream-id" + "that will be used to determine file paths.") + pgroup.add_argument('--target-rate', default=10, type=float, + help="Target rate for monitored readout channels in " + "Hz. This willl be the rate that detector data is " + "streamed to an OCS feed") return parser @@ -137,25 +196,26 @@ def make_parser(parser=None): # Start logging txaio.start_logging(level=environ.get("LOGLEVEL", "info")) - # Get the default ocs agrument parser - site_parser = site_config.add_arguments() - parser = make_parser(site_parser) - - # Parse commandline - args = parser.parse_args() - - site_config.reparse_args(args, "SmurfRecorder") + parser = make_parser() + args = site_config.parse_args(agent_class='SmurfRecorder', parser=parser) agent, runner = ocs_agent.init_site_agent(args) listener = SmurfRecorder(agent, int(args.time_per_file), args.data_dir, + args.stream_id, address=args.address, - port=int(args.port)) + port=int(args.port), + target_rate=args.target_rate) agent.register_process("record", listener.start_record, listener.stop_record, startup=bool(args.auto_start)) + agent.register_task('set_monitored_channels', + listener.set_monitored_channels, blocking=False) + agent.register_task('set_target_rate', listener.set_target_rate, + blocking=False) + runner.run(agent, auto_reconnect=True) diff --git a/agents/smurf_stream_simulator/Dockerfile b/agents/smurf_stream_simulator/Dockerfile index 39bf388de..fd2a75218 100644 --- a/agents/smurf_stream_simulator/Dockerfile +++ b/agents/smurf_stream_simulator/Dockerfile @@ -7,8 +7,8 @@ FROM socs:latest WORKDIR /app/socs/agents/smurf_stream_simulator/ COPY . . # Run registry on container startup -ENTRYPOINT ["python3", "-u", "smurf_stream_simulator.py"] +ENTRYPOINT ["dumb-init", "python3", "-u", "smurf_stream_simulator.py"] -CMD ["--site-hub=ws://sisock-crossbar:8001/ws", \ - "--site-http=http://sisock-crossbar:8001/call"] +CMD ["--site-hub=ws://crossbar:8001/ws", \ + "--site-http=http://crossbar:8001/call"] diff --git a/agents/smurf_stream_simulator/smurf_stream_simulator.py b/agents/smurf_stream_simulator/smurf_stream_simulator.py index 9094b945f..1e9b7f593 100644 --- a/agents/smurf_stream_simulator/smurf_stream_simulator.py +++ b/agents/smurf_stream_simulator/smurf_stream_simulator.py @@ -72,6 +72,8 @@ class SmurfStreamSimulator: Port to send data over num_chans : int Number of channels to simulate + stream_id : str + Stream ID to put into G3Frames. Defaults to "stream_sim" Attributes ---------- @@ -95,13 +97,16 @@ class SmurfStreamSimulator: List of simulated channels to stream """ - def __init__(self, agent, target_host="*", port=4536, num_chans=528): + def __init__(self, agent, target_host="*", port=4536, num_chans=528, + stream_id='stream_sim'): self.agent = agent self.log = agent.log self.target_host = target_host self.port = port + self.stream_id = stream_id + self.writer = None self.is_streaming = False self.running_in_background = False @@ -164,13 +169,14 @@ def start_background_streamer(self, session, params=None): f = core.G3Frame(core.G3FrameType.Scan) f['session_id'] = 0 f['frame_num'] = frame_num + f['sostream_id'] = self.stream_id f['data'] = core.G3TimestreamMap() for i, chan in enumerate(self.channels): ts = core.G3Timestream([chan.read() for t in times]) ts.start = core.G3Time(frame_start * core.G3Units.sec) ts.stop = core.G3Time(frame_stop * core.G3Units.sec) - f['data'][str(i)] = ts + f['data'][f"r{i:04}"] = ts self.writer.Process(f) self.log.info("Writing frame...") @@ -211,6 +217,7 @@ def _send_start_flowcontrol_frame(self): f = core.G3Frame(core.G3FrameType.Observation) f['session_id'] = 0 f['start_time'] = time.time() + f['sostream_id'] = self.stream_id self.writer.Process(f) diff --git a/agents/synacc/Dockerfile b/agents/synacc/Dockerfile new file mode 100644 index 000000000..867dcad70 --- /dev/null +++ b/agents/synacc/Dockerfile @@ -0,0 +1,19 @@ +# SOCS Synaccess Agent, used to run the Synaccess power strip + +# Use socs base image +FROM socs:latest + +# Set the working directory to proper agent directory +WORKDIR /app/socs/agents/synacc/ + +## Copy this agent into the app/agents directory +COPY . . + +RUN pip3 install -r requirements.txt + +# Run registry on container startup +ENTRYPOINT ["python3", "-u", "synacc.py"] + +# Sensible default arguments +CMD ["--site-hub=ws://crossbar:8001/ws", \ + "--site-http=http://crossbar:8001/call"] diff --git a/agents/synacc/requirements.txt b/agents/synacc/requirements.txt new file mode 100644 index 000000000..663bd1f6a --- /dev/null +++ b/agents/synacc/requirements.txt @@ -0,0 +1 @@ +requests \ No newline at end of file diff --git a/agents/synacc/synacc.py b/agents/synacc/synacc.py new file mode 100644 index 000000000..cf3d16bf7 --- /dev/null +++ b/agents/synacc/synacc.py @@ -0,0 +1,138 @@ +#!/usr/bin/env python +import os +import requests +import argparse + +on_rtd = os.environ.get('READTHEDOCS') == 'True' +if not on_rtd: + from ocs import ocs_agent, site_config + from ocs.ocs_twisted import TimeoutLock + + +class SynaccessAgent: + def __init__(self, agent, ip_address, username, password): + """ + Initializes the class variables + + Args: + ip_address(str): IP Address for the agent. + username(str): username credential to login to strip + password(str): password credential to login to strip + """ + self.agent = agent + self.lock = TimeoutLock() + self.ip_address = ip_address + self.user = username + self.passw = password + + def get_status(self, session, params=None): + with self.lock.acquire_timeout(1) as acquired: + if acquired: + req = "http://" + self.user + ":" + self.passw + "@" +\ + self.ip_address+"/cmd.cgi?$A5" + r = requests.get(req) + resp = str(r.content)[6:11][::-1] + ret_str = [] + for x in resp: + if x == '1': + ret_str.append('on') + else: + ret_str.append('off') + return True, 'status outlet [1,2,3,4,5] is {}'.format(ret_str) + else: + return False, "Could not acquire lock" + + def reboot(self, session, params=None): + with self.lock.acquire_timeout(1) as acquired: + if acquired: + req = "http://"+self.user + ":" + \ + self.passw + "@" + self.ip_address + \ + "/cmd.cgi?$A4" + " " + str(params['outlet']) + requests.get(req) + return True, 'Rebooted outlet {}'.format(params['outlet']) + else: + return False, "Could not acquire lock" + + def set_outlet(self, session, params=None): + """ + Sets a particular outlet to on/off + + Args: + outlet (int): the outlet that we are changing the state of + on (bool): the new state + """ + with self.lock.acquire_timeout(1) as acquired: + if acquired: + if params['on']: + on = "1" + else: + on = "0" + req = "http://" + self.user + ":" + self.passw + "@" + \ + self.ip_address+"/cmd.cgi?$A3" + " " + \ + str(params['outlet']) + " " + on + requests.get(req) + return True, 'Set outlet {} to {}'.\ + format(params['outlet'], params['on']) + else: + return False, "Could not acquire lock" + + def set_all(self, session, params=None): + """ + + Sets all outlets to on/off + + Args: + on (bool): the new state + + """ + with self.lock.acquire_timeout(1) as acquired: + if acquired: + on = "0" + if params['on']: + on = "1" + req = "http://" + self.user + ":" + self.passw + "@" +\ + self.ip_address + "/cmd.cgi?$A7" + " " + on + requests.get(req) + return True, 'Set all outlets to {}'.format(params['on']) + else: + return False, "Could not acquire lock" + + +def make_parser(parser=None): + """Build the argument parser for the Agent. Allows sphinx to automatically + build documentation based on this function. + + """ + if parser is None: + parser = argparse.ArgumentParser() + + # Add options specific to this agent. + pgroup = parser.add_argument_group('Agent Options') + pgroup.add_argument('--ip-address') + pgroup.add_argument('--username') + pgroup.add_argument('--password') + return parser + + +if __name__ == '__main__': + site_parser = site_config.add_arguments() + parser = make_parser(site_parser) + + # Get the parser to process the command line. + args = parser.parse_args() + + # Interpret options in the context of site_config. + site_config.reparse_args(args, 'SynAccAgent') + + agent, runner = ocs_agent.init_site_agent(args) + + p = SynaccessAgent(agent, + ip_address=args.ip_address, + username=args.username, + password=args.password) + agent.register_task('get_status', p.get_status, startup={}) + agent.register_task('reboot', p.reboot) + agent.register_task('set_outlet', p.set_outlet) + agent.register_task('set_all', p.set_all) + + runner.run(agent, auto_reconnect=True) diff --git a/bin/rename_fields b/bin/rename_fields index 42eb46c00..18bb23a0f 100755 --- a/bin/rename_fields +++ b/bin/rename_fields @@ -315,6 +315,8 @@ if __name__ == '__main__': help='Set loglevel.') parser.add_argument('--logfile', '-f', default='rename_fields.log', help='Set the logfile.') + parser.add_argument('--skip-file-check', '-s', action='store_true', + help='Skip file check step.') args = parser.parse_args() # Logging Configuration @@ -344,7 +346,8 @@ if __name__ == '__main__': # Record of processed files. record = RenamerRecord() - record.add_unknown_files_to_db(file_list) + if not args.skip_file_check: + record.add_unknown_files_to_db(file_list) unprocessed_files = record.get_unprocessed_files(file_list) c = record.db.cursor() @@ -373,6 +376,11 @@ if __name__ == '__main__': record.db.commit() logging.warning(f"{_file} failed to process, removing any output") os.remove(output_file) + except ValueError as e: + c.execute("UPDATE files SET processed=2 WHERE path=?", (_file,)) + record.db.commit() + logging.error(f"ValueError in {_file}. Removing any output. -- {e}") + os.remove(output_file) c.close() diff --git a/docker-compose.yml b/docker-compose.yml index 9ed25dff2..622d32934 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -94,6 +94,20 @@ services: ocs-pfeiffer-tpg366-agent: image: "ocs-pfeiffer-tpg366-agent" build: ./agents/pfeiffer_tpg366/ + + # -------------------------------------------------------------------------- + # Synaccess power strip agent + # -------------------------------------------------------------------------- + ocs-synaccess-agent: + image: "ocs-synaccess-agent" + build: ./agents/synacc/ + + # -------------------------------------------------------------------------- + # Meinberg M1000 + # -------------------------------------------------------------------------- + ocs-meinberg-m1000-agent: + image: "ocs-meinberg-m1000-agent" + build: ./agents/meinberg_m1000/ # -------------------------------------------------------------------------- # SOCS Simulators @@ -105,3 +119,11 @@ services: ocs-lakeshore240-simulator: image: "ocs-lakeshore240-simulator" build: ./simulators/lakeshore240/ + + # -------------------------------------------------------------------------- + # Lakeshore240 Simulator + # -------------------------------------------------------------------------- + ocs-lakeshore240-simulator: + image: "ocs-lakeshore240-simulator" + build: ./simulators/lakeshore240/ + diff --git a/docs/agents/labjack.rst b/docs/agents/labjack.rst index f4cce7104..8ffbbedbc 100644 --- a/docs/agents/labjack.rst +++ b/docs/agents/labjack.rst @@ -40,26 +40,27 @@ available arguments:: You should assign your LabJack a static IP, you'll need to know that here. The 'active-channels' argument specifies the channels that will be read out. It can be a list, 'T7-all', or 'T4-all'. The latter two read out all -14 or 12 analog channels on the T7 and T4, respectively. The 'function-file' +14 or 12 analog channels on the T7 and T4, respectively. 'sampling_frequency' +is in Hz, and has been tested sucessfully up to about 700 Hz. The 'function-file' argument specifies the labjack configuration file, which is located in your OCS configuration directory. This allows analog voltage inputs on the labjack to be converted to different units. Here is an example labjack configuration file:: - Channel 1: + Channel_1: user_defined: 'False' type: "MKS390" - Channel 2: + Channel_2: user_defined: 'False' type: 'warm_therm' - Channel 3: + Channel_3: user_defined: 'True' units: 'Ohms' function: '(2.5-v)*10000/v' -In this example, Channels 1 and 2 (AIN1 and AIN2 on the labjack) are hooked +In this example, Channels 1 and 2 (AIN0 and AIN1 on the labjack) are hooked up to the MKS390 pressure `gauge`_ and a `thermistor`_ from the SO-specified warm thermometry setup, respectively. Since these are defined functions in the LabJackFunctions class, specifying the name of their method is all that is @@ -100,7 +101,7 @@ shows the basic acquisition funcionality:: lj.init_labjack.wait() #Start data acquisiton - status, msg, session = lj.acq.start() + status, msg, session = lj.acq.start(sampling_frequency=10) print(session) #Get the current data values 1 second after starting acquistion diff --git a/docs/agents/lakeshore240.rst b/docs/agents/lakeshore240.rst index 72d56449f..bbedd3aaf 100644 --- a/docs/agents/lakeshore240.rst +++ b/docs/agents/lakeshore240.rst @@ -69,7 +69,7 @@ configs documentation for more details. The following tasks are registered for the LS240 agent. .. autoclass:: agents.lakeshore240.LS240_agent.LS240_Agent - :members: init_lakeshore_task, set_values, upload_cal_curve, acq + :members: init_lakeshore_task, set_values, upload_cal_curve, acq, start_acq Out of the box, the Lakeshore 240 channels are not enabled or configured to correctly measure thermometers. To enable, you can use the ``set_values`` task @@ -101,7 +101,7 @@ Docker container. An example configuration is:: ocs-LSA24MA: image: grumpy.physics.yale.edu/ocs-lakeshore240-agent:latest depends_on: - - "sisock-crossbar" + - "crossbar" devices: - "/dev/LSA24MA:/dev/LSA24MA" hostname: nuc-docker @@ -109,8 +109,8 @@ Docker container. An example configuration is:: - ${OCS_CONFIG_DIR}:/config:ro command: - "--instance-id=LSA24MA" - - "--site-hub=ws://sisock-crossbar:8001/ws" - - "--site-http=http://sisock-crossbar:8001/call" + - "--site-hub=ws://crossbar:8001/ws" + - "--site-http=http://crossbar:8001/call" The serial number will need to be updated in your configuration. The hostname should also match your configured host in your OCS configuration file. The diff --git a/docs/agents/lakeshore372.rst b/docs/agents/lakeshore372.rst index 2e0599cde..c97ebb6f2 100644 --- a/docs/agents/lakeshore372.rst +++ b/docs/agents/lakeshore372.rst @@ -99,7 +99,7 @@ Agent API --------- .. autoclass:: agents.lakeshore372.LS372_agent.LS372_Agent - :members: init_lakeshore_task + :members: init_lakeshore_task, start_acq Driver API ---------- diff --git a/docs/agents/meinberg_m1000_agent.rst b/docs/agents/meinberg_m1000_agent.rst new file mode 100644 index 000000000..06a51de38 --- /dev/null +++ b/docs/agents/meinberg_m1000_agent.rst @@ -0,0 +1,100 @@ +.. _meinberg_m1000: + +==================== +Meinberg M1000 Agent +==================== + +The Meinberg M1000 Agent is an OCS Agent which monitors the Meinberg M1000, the +main source of timing for the SO site. Monitoring is performed via SNMP. + +.. argparse:: + :filename: ../agents/meinberg_m1000/meinberg_m1000_agent.py + :func: make_parser + :prog: python3 meinberg_m1000_agent.py + +Description +----------- +The Meinberg M1000 is a critical piece of hardware, it provides the precise +timing information distributed among the SO site. The M1000 synchronizes to GPS +and distributes timing mostly over the network using PTP. The M1000 has an +Simple Network Management Protocol (SNMP) interface, allowing one to monitor +the state of the device. + +The Meinberg M1000 Agent actively issues SNMP GET commands to request the +status from several Object Identifiers (OIDs) specified by the Meinberg +provided Management Information Base (MIB). We sample only a subset of the OIDs +defined by the MIB, following recommendations from the `M1000 manual`_. +This MIB has been converted from the original .mib format to a .py format that +is consumable via pysnmp and is provided by socs. + +Agent Fields +```````````` +The fields returned by the Agent are built from the SNMP GET responses from the +M1000. The field names consist of the OID name and the last value of the OID, +which often serves as an index for duplicate pieces of hardware that share a +OID string, i.e. redundant power supplies on the OID "mbgLtNgSysPsStatus". This +results in field names such as "mbgLtNgSysPsStatus_0" and +"mbgLtNgSysPsStatus_1". + +These queries mostly return integers which map to some state. These integers +get decoded into their corresponding string representations and stored in the +OCS Agent Process' session.data object. For more details on this structure, see +the Agent API below. For information about the states corresponding to these +values we refer to the `M1000 manual`_. + +.. _M1000 manual: https://www.meinbergglobal.com/download/docs/manuals/english/ltos_6-24.pdf + +Configuration File Examples +--------------------------- +Below are configuration examples for the ocs config file and for running the +Agent in a docker container. + +ocs-config +`````````` +To configure the Meinberg M1000 Agent we need to add a MeinbergM1000Agent +block to our ocs configuration file. Here is an example configuration block +using all of the available arguments:: + + {'agent-class': 'MeinbergM1000Agent', + 'instance-id': 'meinberg-m1000', + 'arguments': [['--address', '10.10.10.101'], + ['--port', 161], + ['--autostart', True]]}, + +The ``--address`` argument should be the address of the M1000 on the network. +This is the main network interface for the device, not the PTP interface, +which is different. + +Docker +`````` +The Meinberg M1000 Agent should be configured to run in a Docker container. An +example docker-compose service configuration is shown here:: + + ocs-m1000: + image: simonsobs/meinberg-m1000-agent + hostname: ocs-docker + network_mode: "host" + volumes: + - ${OCS_CONFIG_DIR}:/config:ro + environment: + - "LOGLEVEL=info" + command: + - "--instance-id=meinberg-m1000" + - "--site-hub=ws://10.10.10.2:8001/ws" + - "--site-http=http://10.10.10.2:8001/call" + + +The ``LOGLEVEL`` environment variable can be used to set the log level for +debugging. The default level is "info". + +MeinbergSNMP API +---------------- + +.. autoclass:: agents.meinberg_m1000.meinberg_m1000_agent.MeinbergSNMP + :members: + +Agent API +--------- + +.. autoclass:: agents.meinberg_m1000.meinberg_m1000_agent.MeinbergM1000Agent + :members: start_acq diff --git a/docs/agents/pysmurf/pysmurf-archiver.rst b/docs/agents/pysmurf/pysmurf-archiver.rst index 1a615f7b9..f6d334985 100644 --- a/docs/agents/pysmurf/pysmurf-archiver.rst +++ b/docs/agents/pysmurf/pysmurf-archiver.rst @@ -59,7 +59,7 @@ The docker-compose entry is similar to that of the pysmurf-monitor. For example: - /home/ocs:/home/ocs - /data:/data depends_on: - - "sisock-crossbar" + - "crossbar" Archived Path -------------- diff --git a/docs/agents/pysmurf/pysmurf-controller.rst b/docs/agents/pysmurf/pysmurf-controller.rst index ecf2551a0..3c830d593 100644 --- a/docs/agents/pysmurf/pysmurf-controller.rst +++ b/docs/agents/pysmurf/pysmurf-controller.rst @@ -86,7 +86,7 @@ named ``ocs-pysmurf-monitor`` might look something like:: - /data:/data - /path/to/dev/pysmurf/:/usr/local/src/pysmurf depends_on: - - "sisock-crossbar" + - "crossbar" diff --git a/docs/agents/pysmurf/pysmurf-monitor.rst b/docs/agents/pysmurf/pysmurf-monitor.rst index 09d6d571e..60c9c83a3 100644 --- a/docs/agents/pysmurf/pysmurf-monitor.rst +++ b/docs/agents/pysmurf/pysmurf-monitor.rst @@ -139,7 +139,7 @@ An example docker-compose entry might look like:: - ${OCS_CONFIG_DIR}:/config - /data:/data depends_on: - - "sisock-crossbar" + - "crossbar" Where DB_HOST, DB, DB_USER, and DB_PW are set in the ``.env`` file in the same dir as the docker-compose file. \ No newline at end of file diff --git a/docs/agents/smurf_recorder.rst b/docs/agents/smurf_recorder.rst index a1a83d0eb..a4d999d39 100644 --- a/docs/agents/smurf_recorder.rst +++ b/docs/agents/smurf_recorder.rst @@ -34,6 +34,14 @@ connection will need to be reestablished in the next iteration of the loop. This should be fine, as long as we do not enter a state where many connections are made in succession. +G3Files will be written to the path:: + + /<5 ctime digits>//filename + +The recorder will attempt to read the stream-id from the G3Frames, however +if no stream-id is present, the stream-id passed in the site arguments will +be used. + The recorder will write the frames to file with file names and location based on the timestamp when the acquisition was started (i.e. the first frame was written.) Files will be at most "time-per-file" long, which is configurable but @@ -75,7 +83,8 @@ using all of the available arguments:: ['--time-per-file', '600'], ['--data-dir', '/data/'], ['--port', '50000'], - ['--address', 'smurf-stream-sim']]}, + ['--address', 'smurf-stream-sim'], + ['--stream-id', 'crate1slot2']]}, A few things to keep in mind. The ``--data-dir`` is the directory within the container, the default is probably fine, but can be changed if needed, you'll diff --git a/docs/agents/synacc.rst b/docs/agents/synacc.rst new file mode 100644 index 000000000..58aa54137 --- /dev/null +++ b/docs/agents/synacc.rst @@ -0,0 +1,82 @@ +.. highlight:: rst + +.. _synacc: + +================== +Synaccess Agent +================== +The Synaccess Agent interfaces with the power strip over ethernet to control +different outlets as well as get their status. + +.. argparse:: + :filename: ../agents/synacc/synacc.py + :func: make_parser + :prog: python3 synacc.py + + +Configuration File Examples +--------------------------- +Below are configuration examples for the ocs config file and for running the +Agent in a docker container. + +ocs-config +`````````` +To configure the Synaccess Agent we need to add a Synaccess Agent block to our ocs +configuration file. Here is an example configuration block using all of the +available arguments:: + + {'agent-class': 'SynaccessAgent', + 'instance-id': 'synacc', + 'arguments':[ + ['--ip-address', '10.10.10.8'], + ['--username', 'admin'], + ['--password', 'admin'], + ]} + +Docker +`````` +The Synaccess Agent should be configured to run in a Docker container. +An example docker-compose service configuration is shown here:: + + ocs-synacc: + image: simonsobs/ocs-synaccess-agent + hostname: ocs-docker + network_mode: "host" + volumes: + - ${OCS_CONFIG_DIR}:/config:ro + command: + - "--instance-id=synacc" + +Since the agent within the container needs to communicate with hardware on the +host network you must use ``network_mode: "host"`` in your compose file. + +Example Client +-------------- +Below is an example client to control outlets:: + + from ocs import matched_client + synaccess = matched_client.MatchedClient('synacc', args=[]) + + #Get status of the strip + synaccess.get_status.start() + status, msg, session = synaccess.get_status.wait() + session['messages'] + + #Reboot outlet + synaccess.reboot.start(outlet=1) + synaccess.reboot.wait() + + #Turn on/off outlet + synaccess.set_outlet.start(outlet=1, on=True) + synaccess.set_outlet.wait() + + #Turn on/off all outlets + synaccess.set_all.start(on=True) + synaccess.set_all.wait() + + +Agent API +--------- + +.. autoclass:: agents.synacc.synacc.SynaccessAgent + :members: get_status, reboot, set_outlet, set_all diff --git a/docs/developer/snmp.rst b/docs/developer/snmp.rst new file mode 100644 index 000000000..88d2edd86 --- /dev/null +++ b/docs/developer/snmp.rst @@ -0,0 +1,99 @@ +.. _snmp: + +========================================= +Simple Network Management Protocol (SNMP) +========================================= + +SOCS supports monitoring of networked devices via the Simple Network Management +Protocol (SNMP). SNMP is a standard protocol for collecting and organizing +information about devices on the network. + +SNMP support is provided through the python module `pysnmp`_. pysnmp supports +twisted as an I/O framework, which integrates nicely with OCS/SOCS. SOCS makes this +twisted interface for SNMP available via the SNMPTwister class. + +.. _pysnmp: http://snmplabs.com/pysnmp/contents.html + +MIB to Python Conversion +------------------------ +For developers adding a new SNMP monitoring OCS Agent, you may need to convert +a MIB file to python. This can be done with mibdump.py, a conversion script +provided by pysmi. Other useful (linux) packages for debugging include smitools +and snmp. + +An example which converted the MBG-SNMP-LTNG-MIB .mib file:: + + $ mibdump.py --mib-source . --mib-source /usr/share/snmp/mibs/ MBG-SNMP-LTNG-MIB + Source MIB repositories: ., /usr/share/snmp/mibs/ + Borrow missing/failed MIBs from: http://mibs.snmplabs.com/pysnmp/notexts/@mib@ + Existing/compiled MIB locations: pysnmp.smi.mibs, pysnmp_mibs + Compiled MIBs destination directory: /home/bjk49/.pysnmp/mibs + MIBs excluded from code generation: INET-ADDRESS-MIB, PYSNMP-USM-MIB, RFC-1212, RFC-1215, RFC1065-SMI, RFC1155-SMI, RFC1158-MIB, RFC1213-MIB, SNMP-FRAMEWORK-MIB, SNMP-TARGET-MIB, SNMPv2-CONF, SNMPv2-SMI, SNMPv2-TC, SNMPv2-TM, TRANSPORT-ADDRESS-MIB + MIBs to compile: MBG-SNMP-LTNG-MIB + Destination format: pysnmp + Parser grammar cache directory: not used + Also compile all relevant MIBs: yes + Rebuild MIBs regardless of age: no + Dry run mode: no + Create/update MIBs: yes + Byte-compile Python modules: yes (optimization level no) + Ignore compilation errors: no + Generate OID->MIB index: no + Generate texts in MIBs: no + Keep original texts layout: no + Try various file names while searching for MIB module: yes + Created/updated MIBs: MBG-SNMP-LTNG-MIB, MBG-SNMP-ROOT-MIB, SNMPv2-MIB + Pre-compiled MIBs borrowed: + Up to date MIBs: SNMPv2-CONF, SNMPv2-SMI, SNMPv2-TC + Missing source MIBs: + Ignored MIBs: + Failed MIBs: + +.. note:: + There can be several "gotchas" during the conversion process, mostly to do + with the naming of the .mib files and location of where they can be found. This + example specifies the source locations manually. The ``--debug all`` flag can + be useful in debugging conversion problems. + +Examples +-------- +A standalone example of using ``SNMPTwister`` to interact with a device:: + + from twisted.internet import reactor + from twisted.internet.defer import inlineCallbacks + from socs.snmp import SNMPTwister + + # Setup communication with M1000 + snmp = SNMPTwister('10.10.10.186', 161) + + # Define OIDs to query + get_list = [('MBG-SNMP-LTNG-MIB', 'mbgLtNgRefclockState', 1), + ('MBG-SNMP-LTNG-MIB', 'mbgLtNgSysPsStatus', 1), + ('MBG-SNMP-LTNG-MIB', 'mbgLtNgSysPsStatus', 2)] + + @inlineCallbacks + def query_snmp(): + x = yield snmp.get(get_list) + print(x) + reactor.stop() + + # Call query_snmp within the reactor + reactor.callWhenRunning(query_snmp) + reactor.run() + +This will return something like the following:: + + $ python3 snmp_twister_test.py + [ObjectType(ObjectIdentity(, payload [1.3.6.1.4.1.5597.30.0.1.2.1.4.1]>), , subtypeSpec , >>, namedValues , payload [notSynchronized]>), ObjectType(ObjectIdentity(, payload [1.3.6.1.4.1.5597...30.0.5.0.2.1.2.1]>), , subtypeSpec , >>, namedValues , payload [up]>), ObjectType(ObjectIdentity(, payload [1.3.6.1.4.1.5597...30.0.5.0.2.1.2.2]>), , subtypeSpec , >>, namedValues , payload [up]>)] + +See existing SNMP using agents, such as the Meinberg M1000 Agent for more +examples. + +API +--- + +If you are developing an SNMP monitoring agent, the SNMP + twisted +interface is available for use and detailed here: + +.. autoclass:: socs.snmp.SNMPTwister + :members: diff --git a/docs/index.rst b/docs/index.rst index d469c1f3a..218efaac3 100644 --- a/docs/index.rst +++ b/docs/index.rst @@ -45,6 +45,7 @@ Simulator Reference Simulators are used to mock software and hardware agents/pysmurf/index agents/smurf_recorder agents/pfeiffer + agents/meinberg_m1000_agent .. toctree:: :caption: Simulator Reference @@ -53,6 +54,12 @@ Simulator Reference Simulators are used to mock software and hardware simulators/ls240_simulator simulators/smurf_stream_simulator +.. toctree:: + :caption: Developer Guide + :maxdepth: 2 + + developer/snmp + Indices and tables ================== diff --git a/requirements.txt b/requirements.txt index 543d52ea6..e2482fd82 100644 --- a/requirements.txt +++ b/requirements.txt @@ -13,3 +13,10 @@ pymodbus numexpr pyyaml scipy + +# Meinberg M1000 +pysnmp +pysmi + +# Docs +sphinx_rtd_theme diff --git a/socs/Lakeshore/Lakeshore372.py b/socs/Lakeshore/Lakeshore372.py index 2af30fcd9..9422d13be 100644 --- a/socs/Lakeshore/Lakeshore372.py +++ b/socs/Lakeshore/Lakeshore372.py @@ -1313,7 +1313,8 @@ def _check_curve(self, _file): values = [] for i in range(9, len(content)): values.append(content[i].strip().split()) #data points that should have been uploaded - for j in range(1, 201): + + for j in range(1, len(values)+1): try: resp = self.get_data_point(j) #response from the 372 point = values[j-1] diff --git a/socs/agent/smurf_recorder.py b/socs/agent/smurf_recorder.py index 7a632d7d9..4f179e6f5 100644 --- a/socs/agent/smurf_recorder.py +++ b/socs/agent/smurf_recorder.py @@ -20,7 +20,7 @@ class FlowControl(Enum): CLEANSE = 3 -def _create_dirname(start_time, data_dir): +def _create_dirname(start_time, data_dir, stream_id): """Create the file path for .g3 file output. Note: This will create directories if they don't exist already. @@ -31,6 +31,8 @@ def _create_dirname(start_time, data_dir): Timestamp for start of data collection data_dir : str Top level data directory for output + stream_id : str + Stream id of collection Returns ------- @@ -39,7 +41,8 @@ def _create_dirname(start_time, data_dir): """ sub_dir = os.path.join(data_dir, - "{:.5}".format(str(start_time))) + "{:.5}".format(str(start_time)), + stream_id) # Create new dir for current day if not os.path.exists(sub_dir): @@ -95,6 +98,8 @@ class FrameRecorder: data_dir : str Location to write data files to. Subdirectories will be created within this directory roughly corresponding to one day. + stream_id : str + Stream ID to use to determine file path if one is not found in frames. Attributes ---------- @@ -141,13 +146,23 @@ class FrameRecorder: basename : str The basename of the file currently being used. The actual file will also contain the tracked suffix. - + monitored_channels : list + List of readout channels to be monitored. Data from these channels will + be stored in ``stream_data`` after each ``run`` function call. + target_rate : float + Target sampling rate for monitored channels in Hz. + stream_data : dict + Data containing downsampled timestream data from the monitored. This + dict will have the channel name (such as ``r0012``) as the key, and + the values will have the structure required by the OCS_Feed. """ - def __init__(self, file_duration, tcp_addr, data_dir): + def __init__(self, file_duration, tcp_addr, data_dir, stream_id, + target_rate=10): # Parameters self.time_per_file = file_duration self.address = tcp_addr self.data_dir = data_dir + self.stream_id = stream_id self.log = txaio.make_logger() # Reader/Writer @@ -166,6 +181,10 @@ def __init__(self, file_duration, tcp_addr, data_dir): self.dirname = None self.basename = None + self.monitored_channels = [] + self.target_rate = target_rate + self.stream_data = {} + def __del__(self): """Clean up by closing out the file once writing is complete.""" if self.writer is not None: @@ -327,7 +346,15 @@ def create_new_file(self): # Only create new dir and basename if we've finished an acquisition if self.filename_suffix == 0: - self.dirname = _create_dirname(self.start_time, self.data_dir) + stream_id = self.stream_id + for f in self.frames: + if f.get('sostream_id') is not None: + stream_id = f['sostream_id'] + break + + self.dirname = _create_dirname(self.start_time, + self.data_dir, + stream_id) self.basename = int(self.start_time) suffix = "_{:03d}".format(self.filename_suffix) @@ -412,7 +439,36 @@ def run(self): """ self.read_frames() self.check_for_frame_gap(10) + self.read_stream_data() if self.frames: self.create_new_file() self.write_frames_to_file() self.split_acquisition() + + def read_stream_data(self): + """Reads stream data from ``self.frames``, downsamples it, and stores + it in ``self.stream_data``. + """ + chan_keys = [f'r{c:04}' for c in self.monitored_channels] + self.stream_data = { + k: {'timestamps': [], 'block_name': k, 'data': {k:[]}} + for k in chan_keys + } + + for frame in self.frames: + if frame.type != core.G3FrameType.Scan: + continue + ds_factor = (frame['data'].sample_rate/core.G3Units.Hz) \ + // self.target_rate + ds_factor = max(int(ds_factor), 1) + times = [ + t.time / core.G3Units.s + for t in frame['data'].times()[::ds_factor] + ] + for key in chan_keys: + data = frame['data'].get(key) + if data is None: + continue + self.stream_data[key]['timestamps'].extend(times) + self.stream_data[key]['data'][key].extend(list(data[::ds_factor])) + diff --git a/socs/snmp.py b/socs/snmp.py new file mode 100644 index 000000000..15e8d606e --- /dev/null +++ b/socs/snmp.py @@ -0,0 +1,133 @@ +import txaio + +from pysnmp.hlapi.twisted import getCmd, SnmpEngine, CommunityData, UdpTransportTarget,\ + ContextData, ObjectType, ObjectIdentity + +# For logging +txaio.use_twisted() + + +class SNMPTwister: + """Helper class for handling SNMP communication with twisted. + + More information can be found in the pySNMP documentation. The + `SNMP Operations`_ page is particularly helpful for understanding the setup + of this object. + + Note: This helper currently only supports SNMPv1. + + .. _SNMP Operations: http://snmplabs.com/pysnmp/docs/pysnmp-hlapi-tutorial.html + + Parameters + ---------- + address : str + Address of the SNMP Agent to send GET/SET requests to + port : int + Associated port for SNMP communication. Default is 161 + + Attributes + ---------- + snmp_engine : pysnmp.entity.engine.SnmpEngine + PySNMP engine + address : str + Address of the SNMP Agent to send GET/SET requests to + udp_transport : pysnmp.hlapi.twisted.transport.UdpTransportTarget + UDP transport for UDP over IPv4 + log : txaio.tx.Logger + txaio logger object + + """ + + def __init__(self, address, port=161): + self.snmp_engine = SnmpEngine() + self.address = address + self.udp_transport = UdpTransportTarget((address, port)) + self.log = txaio.make_logger() + + def _success(self, args): + """Success callback for getCmd. + + Taken from Twisted example for SNMPv1 from pySNMP documentation: + http://snmplabs.com/pysnmp/examples/hlapi/twisted/contents.html + + Returns + ------- + list + A sequence of ObjectType class instances representing MIB variables + returned in SNMP response. + + """ + (error_status, error_index, var_binds) = args + + if error_status: + self.log.error('%s: %s at %s' % (self.address, + error_status.prettyPrint(), + error_index and + var_binds[int(error_index) - 1][0] or '?')) + else: + for var in var_binds: + self.log.debug(' = '.join([x.prettyPrint() for x in var])) + + return var_binds + + def _failure(self, error_indication): + """Failure Errback for getCmd. + + Taken from Twisted example for SNMPv1 from pySNMP documentation: + http://snmplabs.com/pysnmp/examples/hlapi/twisted/contents.html + + """ + self.log.error('%s failure: %s' % (self.address, error_indication)) + + def get(self, oid_list): + """Issue a getCmd to get SNMP OID states. + + Example + ------- + >>> snmp = SNMPTwister('localhost', 161) + >>> snmp.get([ObjectType(ObjectIdentity('MBG-SNMP-LTNG-MIB', + 'mbgLtNgRefclockState', + 1)), + ObjectType(ObjectIdentity('MBG-SNMP-LTNG-MIB', + 'mbgLtNgRefclockLeapSecondDate', + 1))]) + + >>> snmp = SNMPTwister('localhost', 161) + >>> result = snmp.get([('MBG-SNMP-LTNG-MIB', 'mbgLtNgRefclockState', 1), + ('MBG-SNMP-LTNG-MIB', 'mbgLtNgRefclockLeapSecondDate', 1)]) + >>> # Simply printing the returned object shows a nice string + >>> print(result[0]) + MBG-SNMP-LTNG-MIB::mbgLtNgRefclockState.1 = notSynchronized + >>> # The corresponding integer value is hidden within the returned object + >>> print(result[0][1]._value) + 2 + + Parameters + ---------- + oid_list : list + List of high-level MIB Object OIDs. The list elements should either be + ObjectType, or tuples which define the OIDs, as shown in the + example above. See `Specifying MIB Objects`_ for more info. + + .. _Specifying MIB Objects: + http://snmplabs.com/pysnmp/docs/pysnmp-hlapi-tutorial.html#specifying-mib-object + + Returns + ------ + twisted.internet.defer.Deferred + A Deferred which will callback with the var_binds list from + self._success. If successful, this will contain a list of ObjectType class + instances representing MIB variables returned in SNMP response. + + """ + oid_list = [ObjectType(ObjectIdentity(*x)) if isinstance(x, tuple) else x for x in oid_list] + + datagram = getCmd(self.snmp_engine, + CommunityData('public', mpModel=0), # SNMPv1 + self.udp_transport, + ContextData(), + *oid_list) + + datagram.addCallback(self._success).addErrback(self._failure) + + return datagram diff --git a/tests/agents/test_smurf_recorder.py b/tests/agents/test_smurf_recorder.py index c7fee60ce..49bb50873 100644 --- a/tests/agents/test_smurf_recorder.py +++ b/tests/agents/test_smurf_recorder.py @@ -11,7 +11,7 @@ @pytest.fixture def frame_recorder(tmpdir): p = tmpdir.mkdir("data") - record = FrameRecorder(10, "tcp://127.0.0.1:4536", p) + record = FrameRecorder(10, "tcp://127.0.0.1:4536", p, 'test_id') return record