Add cluster status to API
This commit is contained in:
parent
d2af6f4508
commit
3b08e887f8
|
@ -26,6 +26,7 @@ import json
|
||||||
from distutils.util import strtobool
|
from distutils.util import strtobool
|
||||||
|
|
||||||
import client_lib.common as pvc_common
|
import client_lib.common as pvc_common
|
||||||
|
import client_lib.cluster as pvc_cluster
|
||||||
import client_lib.node as pvc_node
|
import client_lib.node as pvc_node
|
||||||
import client_lib.vm as pvc_vm
|
import client_lib.vm as pvc_vm
|
||||||
import client_lib.network as pvc_network
|
import client_lib.network as pvc_network
|
||||||
|
@ -67,6 +68,17 @@ def initialize_cluster():
|
||||||
|
|
||||||
return True
|
return True
|
||||||
|
|
||||||
|
#
|
||||||
|
# Status function
|
||||||
|
#
|
||||||
|
def cluster_status():
|
||||||
|
"""
|
||||||
|
Get the overall status of the PVC cluster
|
||||||
|
"""
|
||||||
|
zk_conn = pvc_common.startZKConnection(config['coordinators'])
|
||||||
|
retflag, retdata = pvc_cluster.get_info(zk_conn)
|
||||||
|
return retdata, 200
|
||||||
|
|
||||||
#
|
#
|
||||||
# Node functions
|
# Node functions
|
||||||
#
|
#
|
||||||
|
|
|
@ -310,13 +310,94 @@ class API_Initialize(Resource):
|
||||||
400:
|
400:
|
||||||
description: Bad request
|
description: Bad request
|
||||||
"""
|
"""
|
||||||
# TODO: Implement me in api_helper
|
|
||||||
if api_helper.initialize_cluster():
|
if api_helper.initialize_cluster():
|
||||||
return { "message": "Successfully initialized a new PVC cluster" }, 200
|
return { "message": "Successfully initialized a new PVC cluster" }, 200
|
||||||
else:
|
else:
|
||||||
return { "message": "PVC cluster already initialized" }, 400
|
return { "message": "PVC cluster already initialized" }, 400
|
||||||
api.add_resource(API_Initialize, '/initialize')
|
api.add_resource(API_Initialize, '/initialize')
|
||||||
|
|
||||||
|
# /status
|
||||||
|
class API_Status(Resource):
|
||||||
|
@Authenticator
|
||||||
|
def get(self):
|
||||||
|
"""
|
||||||
|
Return the current PVC cluster status
|
||||||
|
---
|
||||||
|
tags:
|
||||||
|
- root
|
||||||
|
responses:
|
||||||
|
200:
|
||||||
|
description: OK
|
||||||
|
schema:
|
||||||
|
type: object
|
||||||
|
id: ClusterStatus
|
||||||
|
properties:
|
||||||
|
health:
|
||||||
|
type: string
|
||||||
|
description: The overall cluster health
|
||||||
|
example: Optimal
|
||||||
|
primary_node:
|
||||||
|
type: string
|
||||||
|
description: The current primary coordinator node
|
||||||
|
example: pvchv1
|
||||||
|
upstream_ip:
|
||||||
|
type: string
|
||||||
|
description: The cluster upstream IP address in CIDR format
|
||||||
|
example: 10.0.0.254/24
|
||||||
|
nodes:
|
||||||
|
type: array
|
||||||
|
items:
|
||||||
|
type: object
|
||||||
|
properties:
|
||||||
|
total:
|
||||||
|
type: integer
|
||||||
|
description: The total number of nodes in the cluster
|
||||||
|
example: 3
|
||||||
|
state-combination:
|
||||||
|
type: integer
|
||||||
|
description: The total number of nodes in {state-combination} state, where {state-combination} is the node daemon and domain states in CSV format, e.g. "run,ready", "stop,flushed", etc.
|
||||||
|
vms:
|
||||||
|
type: array
|
||||||
|
items:
|
||||||
|
type: object
|
||||||
|
properties:
|
||||||
|
total:
|
||||||
|
type: integer
|
||||||
|
description: The total number of VMs in the cluster
|
||||||
|
example: 6
|
||||||
|
state:
|
||||||
|
type: integer
|
||||||
|
description: The total number of VMs in {state} state, e.g. "start", "stop", etc.
|
||||||
|
networks:
|
||||||
|
type: integer
|
||||||
|
description: The total number of networks in the cluster
|
||||||
|
osds:
|
||||||
|
type: array
|
||||||
|
items:
|
||||||
|
type: object
|
||||||
|
properties:
|
||||||
|
total:
|
||||||
|
type: integer
|
||||||
|
description: The total number of OSDs in the storage cluster
|
||||||
|
example: 3
|
||||||
|
state-combination:
|
||||||
|
type: integer
|
||||||
|
description: The total number of OSDs in {state-combination} state, where {state-combination} is the OSD up and in states in CSV format, e.g. "up,in", "down,out", etc.
|
||||||
|
pools:
|
||||||
|
type: integer
|
||||||
|
description: The total number of pools in the storage cluster
|
||||||
|
volumes:
|
||||||
|
type: integer
|
||||||
|
description: The total number of volumes in the storage cluster
|
||||||
|
snapshots:
|
||||||
|
type: integer
|
||||||
|
description: The total number of snapshots in the storage cluster
|
||||||
|
400:
|
||||||
|
description: Bad request
|
||||||
|
"""
|
||||||
|
return api_helper.cluster_status()
|
||||||
|
api.add_resource(API_Status, '/status')
|
||||||
|
|
||||||
|
|
||||||
##########################################################
|
##########################################################
|
||||||
# Client API - Node
|
# Client API - Node
|
||||||
|
|
Loading…
Reference in New Issue