File: //usr/lib/python2.7/site-packages/lap/openstack_cinder_service.py
#!/usr/bin/python
import json
import socket
import warnings
def __run__(params):
warnings.filterwarnings("ignore")
try:
from cinderclient.client import Client
from keystoneauth1.identity import v3
from keystoneauth1 import session
except ImportError:
return [1, 'WARNING - Error: Please install python-novaclient']
try:
os_auth_url = params.get("auth_url", "http://localhost:5000/v2.0")
os_username = params.get("username", "admin")
os_password = params.get("password", "admin")
os_tenant_name = params.get("tenant_name", "admin")
if os_auth_url.endswith('v3'):
auth = v3.Password(
auth_url=os_auth_url,
username=os_username,
password=os_password,
project_name=os_tenant_name,
user_domain_name='Default',
project_domain_name='Default',
)
sess = session.Session(auth=auth)
cinder = Client('2', session=sess)
else:
cinder = Client(2, os_username, os_password, os_tenant_name, os_auth_url)
except Exception, e:
return [1, 'WARNING - %s' % str(e)]
try:
services_down=[]
for service in cinder.services.list():
if service.state == 'down':
services_down.append("%s service %s" %(service.host, service.binary))
if len(services_down) > 0:
return [2,'CRITICAL - Cinder %s service(s) down: %s' % (len(services_down), json.dumps(services_down))]
else:
return [0, 'OK - No Cinder service(s) down']
except Exception as e:
return [1, 'WARNING - %s' % str(e)]