python-muranoclient/tabula/tabula/tabula/api.py

212 lines
6.7 KiB
Python

# Copyright (c) 2013 Mirantis Inc.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
# implied.
# See the License for the specific language governing permissions and
# limitations under the License.
import logging
from glazierclient.v1.client import Client as glazier_client
log = logging.getLogger(__name__)
def glazierclient(request):
url = "http://127.0.0.1:8082"
log.debug('glazierclient connection created using token "%s" and url "%s"'
% (request.user.token, url))
return glazier_client(endpoint=url, token=request.user.token.token['id'])
def environment_create(request, parameters):
env = glazierclient(request).environments.create(parameters.get('name', ''))
log.debug('Environment::Create {0}'.format(env))
return env
def environment_delete(request, environment_id):
result = glazierclient(request).environments.delete(environment_id)
log.debug('Environment::Delete Id:{0}'.format(environment_id))
return result
def environment_get(request, environment_id):
env = glazierclient(request).environments.get(environment_id)
log.debug('Environment::Get {0}'.format(env))
return env
def environments_list(request):
log.debug('Environment::List')
return glazierclient(request).environments.list()
def environment_deploy(request, environment_id):
sessions = glazierclient(request).sessions.list(environment_id)
for session in sessions:
if session.state == 'open':
session_id = session.id
if not session_id:
return "Sorry, nothing to deploy."
log.debug('Obtained session with Id: {0}'.format(session_id))
result = glazierclient(request).sessions.deploy(environment_id, session_id)
log.debug('Environment with Id: {0} deployed in session '
'with Id: {1}'.format(environment_id, session_id))
return result
def service_create(request, environment_id, parameters):
session_id = None
sessions = glazierclient(request).sessions.list(environment_id)
for s in sessions:
if s.state == 'open':
session_id = s.id
else:
glazierclient(request).sessions.delete(environment_id, s.id)
if session_id is None:
session_id = glazierclient(request).sessions.configure(environment_id).id
if parameters['service_type'] == 'Active Directory':
service = glazierclient(request)\
.activeDirectories\
.create(environment_id, session_id, parameters)
else:
service = glazierclient(request)\
.webServers.create(environment_id, session_id, parameters)
log.debug('Service::Create {0}'.format(service))
return service
def get_time(obj):
return obj.updated
def services_list(request, environment_id):
services = []
session_id = None
sessions = glazierclient(request).sessions.list(environment_id)
for s in sessions:
session_id = s.id
if session_id:
services = glazierclient(request).activeDirectories.\
list(environment_id, session_id)
services += glazierclient(request).webServers.\
list(environment_id, session_id)
for i in range(len(services)):
reports = glazierclient(request).sessions. \
reports(environment_id, session_id,
services[i].id)
for report in reports:
services[i].operation = report.text
log.debug('Service::List')
return services
def get_active_directories(request, environment_id):
services = []
session_id = None
sessions = glazierclient(request).sessions.list(environment_id)
for s in sessions:
session_id = s.id
if session_id:
services = glazierclient(request)\
.activeDirectories\
.list(environment_id, session_id)
log.debug('Service::Active Directories::List')
return services
def service_get(request, environment_id, service_id):
services = services_list(request, environment_id)
for service in services:
if service.id == service_id:
log.debug('Service::Get {0}'.format(service))
return service
def get_data_center_id_for_service(request, service_id):
environments = environments_list(request)
for environment in environments:
services = services_list(request, environment.id)
for service in services:
if service.id == service_id:
return environment.id
def get_service_datails(request, service_id):
environments = environments_list(request)
services = []
for environment in environments:
services += services_list(request, environment.id)
for service in services:
if service.id == service_id:
return service
def get_status_message_for_service(request, service_id):
environment_id = get_data_center_id_for_service(request, service_id)
session_id = None
sessions = glazierclient(request).sessions.list(environment_id)
for s in sessions:
session_id = s.id
if session_id:
reports = glazierclient(request).sessions.\
reports(environment_id, session_id, service_id)
result = 'Initialization.... \n'
for report in reports:
result += ' ' + str(report.text) + '\n'
return result
def service_delete(request, environment_id, service_id):
log.debug('Service::Remove EnvId: {0} '
'SrvId: {1}'.format(environment_id, service_id))
services = services_list(request, environment_id)
session_id = None
sessions = glazierclient(request).sessions.list(environment_id)
for session in sessions:
if session.state == 'open':
session_id = session.id
if session_id is None:
raise Exception("Sorry, you can not delete this service now.")
for service in services:
if service.id is service_id:
if service.type is 'Active Directory':
glazierclient(request).activeDirectories.delete(environment_id,
session_id,
service_id)
elif service.type is 'IIS':
glazierclient(request).webServers.delete(environment_id,
session_id,
service_id)