Page MenuHomec4science

deactivate_device.py
No OneTemporary

File Metadata

Created
Thu, May 23, 04:24

deactivate_device.py

#!/usr/bin/env python3
from phabricator import Phabricator
import sys
phab = Phabricator(host='https://c4science.ch/api/')
phab.update_interfaces()
# Disable write on device
def deactivate_write(action, binding):
if action == 'off':
transactions = [
{'type': 'property.set', 'value': {'writable': False}},
{'type': 'disabled', 'value': True},
]
else:
transactions = [
{'type': 'property.set', 'value': {'writable': True}},
{'type': 'disabled', 'value': False},
]
print(phab.almanac.binding.edit(
objectIdentifier = binding,
transactions = transactions,
))
# Get bindinds list
def get_bindings(devices):
device = phab.almanac.device.search(
constraints = {
'names': devices,
}
)
if len(device.data) == 0:
print('No device found')
sys.exit(1)
devices_phid = [a['phid'] for a in device.data]
service = phab.almanac.service.search(
constraints = {
'names': ['repo-cluster', 'repo-single'],
}
)
services_phid = [a['phid'] for a in service.data]
bindings = phab.almanac.binding.search(
constraints = {
'servicePHIDs': services_phid,
'devicePHIDs': devices_phid,
},
)
if len(bindings.data) == 0:
print('No binding found')
sys.exit(1)
return [a['phid'] for a in bindings.data]
# MAIN
action = sys.argv[1]
devices = sys.argv[2:]
if len(devices) == 0:
print('USAGE: {cmd} [on|off] [device]...\nexample: {cmd} off c4science-phd00 c4science-phd01'.format(cmd=sys.argv[0]))
sys.exit(1)
bindings = get_bindings(devices)
for binding in bindings:
deactivate_write(action, binding)

Event Timeline