Add cluster status to API

This commit is contained in:
Joshua Boniface 2019-12-29 20:42:02 -05:00
parent d2af6f4508
commit 3b08e887f8
2 changed files with 94 additions and 1 deletions

View File

@ -26,6 +26,7 @@ import json
from distutils.util import strtobool
import client_lib.common as pvc_common
import client_lib.cluster as pvc_cluster
import client_lib.node as pvc_node
import client_lib.vm as pvc_vm
import client_lib.network as pvc_network
@ -67,6 +68,17 @@ def initialize_cluster():
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
#

View File

@ -310,13 +310,94 @@ class API_Initialize(Resource):
400:
description: Bad request
"""
# TODO: Implement me in api_helper
if api_helper.initialize_cluster():
return { "message": "Successfully initialized a new PVC cluster" }, 200
else:
return { "message": "PVC cluster already initialized" }, 400
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