Initiator: Generisches Python-Template für "Process"
Generisches Python-Template für Initiatoren
Dieses einfache Template schreibt abwechseln alle 2 Sekunden den Zustand Free
und den Zustand InUse
durch einen Nutzer für eine Ressource. Es hat keinen praktischen Nutzen, zeigt jedoch, wie der Initiator zu bedienen ist. Ein Initiator erlaubt als das aktive Verändern des Zustand einer Ressource, an die er gebunden ist.
Wichtig: Die OID 1.3.6.1.4.1.48398.612.2.4
muss angegeben werden, damit FabAccess weiß, dass es sich um einen Zustand hält, der an die API übermittelt wird.
Erlaubte Zustände sind:
Free
InUse:<UserId>
ToCheck:<UserId>
Blocked:<UserId>
Disabled
Reserved:<UserId>
Raw:<data>
mkdir -p /opt/fabinfra/adapters/initiator_process_example/
vim init.py
#!/usr/bin/env python
import os
import sys
import time
import logging
LOG_FILE = os.path.join(os.path.dirname(__file__), 'init.err.log')
logging.basicConfig(
filename=LOG_FILE,
format='%(asctime)s %(levelname)-8s %(message)s',
level=logging.DEBUG,
datefmt='%Y-%m-%d %H:%M:%S')
try:
# Statements, die per print() an stdout gegeben werden, werden in bffhd geschrieben
t_sleep = 3 #darf nicht 0 sein. Sonst wechseln die Zustände zu schnell durch und verursachen Fehler und ein gefülltes BFFH Log (journalctl)
# Versetze die Ressource (Maschine) in den Zustand "Free"
state = '{ "state": "Free" }'
print(state)
sys.stdout.flush()
logging.debug(state)
time.sleep(t_sleep)
# Versetze die Ressource (Maschine) in den Zustand "Blocked" durch den Nutzer "Admin"
state = '{ "state": { "InUse": { "id": "Admin" } } }'
print(state)
sys.stdout.flush()
logging.debug(state)
time.sleep(t_sleep)
# Versetze die Ressource (Maschine) in den Zustand "Reserved" durch den Nutzer "Admin"
state = '{ "state": { "Reserved": { "id": "Admin" } } }'
print(state)
sys.stdout.flush()
logging.debug(state)
time.sleep(t_sleep)
# Versetze die Ressource (Maschine) in den Zustand "ToCheck" durch den Nutzer "Admin"
state = '{ "state": { "ToCheck": { "id": "Admin" } } }'
print(state)
sys.stdout.flush()
logging.debug(state)
time.sleep(t_sleep)
# Versetze die Ressource (Maschine) in den Zustand "Blocked" durch den Nutzer "Admin"
state = '{ "state": { "Blocked": { "id": "Admin" } } }'
print(state)
sys.stdout.flush()
logging.debug(state)
time.sleep(t_sleep)
# Versetze die Ressource (Maschine) in den Zustand "Disabled"
state = '{ "state": "Disabled" }'
print(state)
sys.stdout.flush()
logging.debug(state)
time.sleep(t_sleep)
except Exception as e:
logging.debug(e)
sys.exit(1)
sys.exit(0)
chmod +x /opt/fabinfra/adapters/initiator_process_example/init.py
Wir binden den Inititator entsprechend in unsere Konfiguration ein.