c521b8c28c
use absolute path imports to compat python3 remove H301 ignore to enable H304 flake8 check Story: 2003433 Task: 28376 Change-Id: I3a50a0298fe34c60e3c63df23e72dcbb07c585d1 Signed-off-by: Sun Austin <austin.sun@intel.com>
186 lines
4.9 KiB
Python
Executable File
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
|