config/sysinv/sysinv/sysinv/sysinv/api/controllers/v1/sm_api.py

186 lines
4.9 KiB
Python
Executable File

#
# Copyright (c) 2016-2018 Wind River Systems, Inc.
#
# SPDX-License-Identifier: Apache-2.0
#
import json
import pecan
import socket
from sysinv.api.controllers.v1.rest_api import get_token
from sysinv.api.controllers.v1.rest_api import rest_api_request
from sysinv.openstack.common import log
LOG = log.getLogger(__name__)
SM_API_HOST = socket.gethostname()
SM_API_PORT = 7777
SM_API_PATH = "http://{host}:{port}".\
format(host=SM_API_HOST, port=SM_API_PORT)
def _get_token():
system = pecan.request.dbapi.isystem_get_one()
return get_token(system.region_name)
def swact_pre_check(hostname, timeout):
"""
Sends a Swact Pre-Check command to SM.
"""
token = _get_token()
api_cmd = SM_API_PATH
api_cmd += "/v1/servicenode/%s" % hostname
api_cmd_headers = dict()
api_cmd_headers['Content-type'] = "application/json"
api_cmd_headers['User-Agent'] = "sysinv/1.0"
api_cmd_payload = dict()
api_cmd_payload['origin'] = "sysinv"
api_cmd_payload['action'] = "swact-pre-check"
api_cmd_payload['admin'] = "unknown"
api_cmd_payload['oper'] = "unknown"
api_cmd_payload['avail'] = ""
response = rest_api_request(token, "PATCH", api_cmd, api_cmd_headers,
json.dumps(api_cmd_payload), timeout)
return response
def lock_pre_check(hostname, timeout):
"""
Sends a Lock Pre-Check command to SM.
"""
token = _get_token()
api_cmd = SM_API_PATH
api_cmd += "/v1/servicenode/%s" % hostname
api_cmd_headers = dict()
api_cmd_headers['Content-type'] = "application/json"
api_cmd_headers['User-Agent'] = "sysinv/1.0"
api_cmd_payload = dict()
api_cmd_payload['origin'] = "sysinv"
api_cmd_payload['action'] = "lock-pre-check"
api_cmd_payload['admin'] = "unknown"
api_cmd_payload['oper'] = "unknown"
api_cmd_payload['avail'] = ""
response = rest_api_request(token, "PATCH", api_cmd, api_cmd_headers,
json.dumps(api_cmd_payload), timeout)
return response
def service_list():
"""
Sends a service list command to SM.
"""
token = _get_token()
api_cmd = SM_API_PATH
api_cmd += "/v1/services"
api_cmd_headers = dict()
api_cmd_headers['Content-type'] = "application/json"
api_cmd_headers['Accept'] = "application/json"
api_cmd_headers['User-Agent'] = "sysinv/1.0"
response = rest_api_request(token, "GET", api_cmd, api_cmd_headers, None)
return response
def service_show(hostname):
"""
Sends a service show command to SM.
"""
token = _get_token()
api_cmd = SM_API_PATH
api_cmd += "/v1/services/%s" % hostname
api_cmd_headers = dict()
api_cmd_headers['Content-type'] = "application/json"
api_cmd_headers['Accept'] = "application/json"
api_cmd_headers['User-Agent'] = "sysinv/1.0"
response = rest_api_request(token, "GET", api_cmd, api_cmd_headers, None)
return response
def servicenode_list():
"""
Sends a service list command to SM.
"""
token = _get_token()
api_cmd = SM_API_PATH
api_cmd += "/v1/nodes"
api_cmd_headers = dict()
api_cmd_headers['Content-type'] = "application/json"
api_cmd_headers['Accept'] = "application/json"
api_cmd_headers['User-Agent'] = "sysinv/1.0"
response = rest_api_request(token, "GET", api_cmd, api_cmd_headers, None)
return response
def servicenode_show(hostname):
"""
Sends a service show command to SM.
"""
token = _get_token()
api_cmd = SM_API_PATH
api_cmd += "/v1/nodes/%s" % hostname
api_cmd_headers = dict()
api_cmd_headers['Content-type'] = "application/json"
api_cmd_headers['Accept'] = "application/json"
api_cmd_headers['User-Agent'] = "sysinv/1.0"
response = rest_api_request(token, "GET", api_cmd, api_cmd_headers, None)
return response
def sm_servicegroup_list():
"""
Sends a service list command to SM.
"""
token = _get_token()
api_cmd = SM_API_PATH
api_cmd += "/v1/sm_sda"
api_cmd_headers = dict()
api_cmd_headers['Content-type'] = "application/json"
api_cmd_headers['Accept'] = "application/json"
api_cmd_headers['User-Agent'] = "sysinv/1.0"
response = rest_api_request(token, "GET", api_cmd, api_cmd_headers, None)
# rename the obsolete sm_sda to sm_servicegroups
if isinstance(response, dict):
if 'sm_sda' in response:
response['sm_servicegroup'] = response.pop('sm_sda')
return response
def sm_servicegroup_show(hostname):
"""
Sends a service show command to SM.
"""
token = _get_token()
api_cmd = SM_API_PATH
api_cmd += "/v1/sm_sda/%s" % hostname
api_cmd_headers = dict()
api_cmd_headers['Content-type'] = "application/json"
api_cmd_headers['Accept'] = "application/json"
api_cmd_headers['User-Agent'] = "sysinv/1.0"
response = rest_api_request(token, "GET", api_cmd, api_cmd_headers, None)
return response