/usr/lib/python3/dist-packages/provisioningserver/drivers/power/ucsm.py is in python3-maas-provisioningserver 2.4.0~beta2-6865-gec43e47e6-0ubuntu1.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
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 | # Copyright 2015 Canonical Ltd. This software is licensed under the
# GNU Affero General Public License version 3 (see the file LICENSE).
"""Cisco UCS Power Driver."""
__all__ = []
from provisioningserver.drivers import (
IP_EXTRACTOR_PATTERNS,
make_ip_extractor,
make_setting_field,
SETTING_SCOPE,
)
from provisioningserver.drivers.hardware.ucsm import (
power_control_ucsm,
power_state_ucsm,
)
from provisioningserver.drivers.power import PowerDriver
def extract_ucsm_parameters(context):
url = context.get('power_address')
username = context.get('power_user')
password = context.get('power_pass')
uuid = context.get('uuid')
return url, username, password, uuid
class UCSMPowerDriver(PowerDriver):
name = 'ucsm'
description = "Cisco UCS Manager"
settings = [
make_setting_field(
'uuid', "Server UUID", scope=SETTING_SCOPE.NODE,
required=True),
make_setting_field('power_address', "URL for XML API", required=True),
make_setting_field('power_user', "API user"),
make_setting_field(
'power_pass', "API password", field_type='password'),
]
ip_extractor = make_ip_extractor(
'power_address', IP_EXTRACTOR_PATTERNS.URL)
def detect_missing_packages(self):
# uses urllib2 http client - nothing to look for!
return []
def power_on(self, system_id, context):
"""Power on UCSM node."""
url, username, password, uuid = extract_ucsm_parameters(context)
power_control_ucsm(
url, username, password, uuid, maas_power_mode='on')
def power_off(self, system_id, context):
"""Power off UCSM node."""
url, username, password, uuid = extract_ucsm_parameters(context)
power_control_ucsm(
url, username, password, uuid, maas_power_mode='off')
def power_query(self, system_id, context):
"""Power query UCSM node."""
url, username, password, uuid = extract_ucsm_parameters(context)
return power_state_ucsm(url, username, password, uuid)
|