Skip to main content

A library and actor to communicate with an SDSS-V LVM network power switch

Project description

lvmnps

Versions Code style: black Documentation Status Test Docker codecov

LVM Network Power Switch

Features

Installation

Clone this repository.

git clone https://github.com/sdss/lvmnps
cd lvmnps

Quick Start

Start the actor

Start lvmnps actor.

lvmnps start

In another terminal, type clu and lvmnps ping for test.

clu
lvmnps ping
     07:41:22.636 lvmnps >
     07:41:22.645 lvmnps : {
         "text": "Pong."
         }

Stop lvmnps actor.

lvmnps stop

Config file structure

switches:
    name_your_switch_here:    # should be a unique name
        type: dummy           # currently dummy, iboot, dli
        num: 8                # number of ports
        ports:
            1:
            name: "skyw.pwi"  # should also be a unique name
            desc: "Something that make sense"
    should_be_a_unique_name:
        type: dummy
        ports:
            1:
            name: "skye.pwi"
            desc: "PlaneWavemount Skye"

Status return for all commands

  • if name is not defined then the port name will be switch name.port number, e.g. nps_dummy_1.port1. Otherwise name from the config file will be used.
  • STATE: 1: ON, 0: OFF, -1: UNKNOWN
    "STATUS": {
    "nps_dummy_1.port1": {
        "STATE": -1,
        "DESCR": "was 1",
        "SWITCH": "nps_dummy_1",
        "PORT": 1
    },

Run the example lvmnps_dummy

cd lvmnps
poetry run lvmnps -vvv -c $(pwd)/python/lvmnps/etc/lvmnps_dummy.yml start

poetry run clu
  • Status command without parameter returns all ports of all switches.
  • The default is to return only configured ports, otherwise define 'ouo' false in the config file, see lvmnps_dummy.yml
>>> lvmnps status

12:02:08.649 lvmnps >
12:02:08.660 lvmnps i {
    "STATUS": {
        "nps_dummy_1.port1": {
            "STATE": -1,
            "DESCR": "was 1",
            "SWITCH": "nps_dummy_1",
            "PORT": 1
        },
        "skye.what.ever": {
            "STATE": -1,
            "DESCR": "whatever is connected to skye",
            "SWITCH": "nps_dummy_1",
            "PORT": 2
        },
        "skyw.what.ever": {
            "STATE": -1,
            "DESCR": "Something @ skyw",
            "SWITCH": "nps_dummy_1",
            "PORT": 4
        },
        "skye.pwi": {
            "STATE": -1,
            "DESCR": "PlaneWavemount Skye",
            "SWITCH": "skye.nps",
            "PORT": 1
        },
            "skyw.pwi": {
            "STATE": -1,
            "DESCR": "PlaneWavemount Skyw",
            "SWITCH": "nps_dummy_3",
            "PORT": 1
        }
    }
}
  • status command with port name skyw.what.ever
>>> lvmnps status skyw.what.ever

12:07:12.349 lvmnps >
12:07:12.377 lvmnps i {
    "STATUS": {
        "skyw.what.ever": {
            "STATE": -1,
            "DESCR": "Something @ skyw",
            "SWITCH": "nps_dummy_1",
            "PORT": 4
}
  • status command with switch name nps_dummy_1
>>> lvmnps status nps_dummy_1

12:07:12.349 lvmnps >
12:12:21.349 lvmnps i {
    "STATUS": {
        "nps_dummy_1.port1": {
            "STATE": -1,
            "DESCR": "was 1",
            "SWITCH": "nps_dummy_1",
            "PORT": 1
        },
        "skye.what.ever": {
            "STATE": -1,
            "DESCR": "whatever is connected to skye",
            "SWITCH": "nps_dummy_1",
            "PORT": 2
        },
        "skyw.what.ever": {
            "STATE": -1,
            "DESCR": "Something @ skyw",
            "SWITCH": "nps_dummy_1",
            "PORT": 4
        }
    }
}
  • status command with switch name nps_dummy_1 and port 4 returns
      lvmnps status nps_dummy_1 4

      12:07:12.349 lvmnps >
      12:12:21.349 lvmnps i {
          "STATUS": {
              "skyw.what.ever": {
                  "STATE": -1,
                  "DESCR": "Something @ skyw",
                  "SWITCH": "nps_dummy_1",
                  "PORT": 4
              }
          }
      }


- the commands on and off use the same addressing scheme as status

## Test

```console
poetry run pytest
poetry run pytest -p no:logging -s -vv

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

sdss-lvmnps-0.3.0.tar.gz (17.3 kB view hashes)

Uploaded Source

Built Distribution

sdss_lvmnps-0.3.0-py3-none-any.whl (23.3 kB view hashes)

Uploaded Python 3

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page