Update environment statuses
* Do not create session in case of observing environment applications * Forbid redeployment after failed deploy since it's not working * Do not show 'Deploy Environment' when environment status is 'ready' Change-Id: I90a673d82c528ea9f05dfe1967d6c5d3d1df228c Closes-Bug: #1342404
This commit is contained in:
parent
f1bb16e065
commit
d3a6d9bc81
@ -122,8 +122,7 @@ class Session(object):
|
|||||||
"""
|
"""
|
||||||
#We store opened sessions for each environment in dictionary per user
|
#We store opened sessions for each environment in dictionary per user
|
||||||
sessions = request.session.get('sessions', {})
|
sessions = request.session.get('sessions', {})
|
||||||
session_id = sessions[environment_id] \
|
session_id = sessions.get(environment_id, '')
|
||||||
if environment_id in sessions else None
|
|
||||||
if session_id:
|
if session_id:
|
||||||
LOG.debug("Using session_id {0} for the environment {1}".format(
|
LOG.debug("Using session_id {0} for the environment {1}".format(
|
||||||
session_id, environment_id))
|
session_id, environment_id))
|
||||||
@ -133,6 +132,19 @@ class Session(object):
|
|||||||
return session_id
|
return session_id
|
||||||
|
|
||||||
|
|
||||||
|
def _update_env(env):
|
||||||
|
env.has_new_services = False
|
||||||
|
if env.services:
|
||||||
|
for service in env.services:
|
||||||
|
if service['?']['status'] == 'pending':
|
||||||
|
env.has_new_services = True
|
||||||
|
|
||||||
|
if not env.has_new_services and env.version == 0:
|
||||||
|
if env.status == consts.STATUS_ID_READY:
|
||||||
|
env.status = consts.STATUS_ID_NEW
|
||||||
|
return env
|
||||||
|
|
||||||
|
|
||||||
def environments_list(request):
|
def environments_list(request):
|
||||||
environments = []
|
environments = []
|
||||||
client = api.muranoclient(request)
|
client = api.muranoclient(request)
|
||||||
@ -140,15 +152,8 @@ def environments_list(request):
|
|||||||
environments = client.environments.list()
|
environments = client.environments.list()
|
||||||
LOG.debug('Environment::List {0}'.format(environments))
|
LOG.debug('Environment::List {0}'.format(environments))
|
||||||
for index, env in enumerate(environments):
|
for index, env in enumerate(environments):
|
||||||
environments[index].has_services = False
|
environments[index] = environment_get(request, env.id)
|
||||||
environment = environment_get(request, env.id)
|
|
||||||
for service in environment.services or []:
|
|
||||||
if service:
|
|
||||||
environments[index].has_services = True
|
|
||||||
break
|
|
||||||
if not environments[index].has_services:
|
|
||||||
if environments[index].status == consts.STATUS_ID_READY:
|
|
||||||
environments[index].status = consts.STATUS_ID_NEW
|
|
||||||
return environments
|
return environments
|
||||||
|
|
||||||
|
|
||||||
@ -171,6 +176,8 @@ def environment_get(request, environment_id):
|
|||||||
format(environment_id, session_id))
|
format(environment_id, session_id))
|
||||||
client = api.muranoclient(request)
|
client = api.muranoclient(request)
|
||||||
env = client.environments.get(environment_id, session_id)
|
env = client.environments.get(environment_id, session_id)
|
||||||
|
env = _update_env(env)
|
||||||
|
|
||||||
LOG.debug('Environment::Get {0}'.format(env))
|
LOG.debug('Environment::Get {0}'.format(env))
|
||||||
return env
|
return env
|
||||||
|
|
||||||
@ -194,7 +201,7 @@ def services_list(request, environment_id):
|
|||||||
|
|
||||||
services = []
|
services = []
|
||||||
# need to create new session to see services deployed be other user
|
# need to create new session to see services deployed be other user
|
||||||
session_id = Session.get_or_create(request, environment_id)
|
session_id = Session.get(request, environment_id)
|
||||||
|
|
||||||
get_environment = api.muranoclient(request).environments.get
|
get_environment = api.muranoclient(request).environments.get
|
||||||
environment = get_environment(environment_id, session_id)
|
environment = get_environment(environment_id, session_id)
|
||||||
@ -202,6 +209,8 @@ def services_list(request, environment_id):
|
|||||||
client = api.muranoclient(request)
|
client = api.muranoclient(request)
|
||||||
reports = client.environments.last_status(environment_id, session_id)
|
reports = client.environments.last_status(environment_id, session_id)
|
||||||
except exc.HTTPNotFound:
|
except exc.HTTPNotFound:
|
||||||
|
LOG.exception(_('Could not get last status for '
|
||||||
|
'the {0} environment').format(environment_id))
|
||||||
reports = {}
|
reports = {}
|
||||||
|
|
||||||
for service_item in environment.services or []:
|
for service_item in environment.services or []:
|
||||||
|
@ -38,7 +38,9 @@ STATUS_ID_DELETE_FAILURE = 'delete failure'
|
|||||||
STATUS_ID_DEPLOY_FAILURE = 'deploy failure'
|
STATUS_ID_DEPLOY_FAILURE = 'deploy failure'
|
||||||
STATUS_ID_NEW = 'new'
|
STATUS_ID_NEW = 'new'
|
||||||
|
|
||||||
NO_ACTION_ALLOWED_STATUSES = (STATUS_ID_DEPLOYING, STATUS_ID_DELETING)
|
NO_ACTION_ALLOWED_STATUSES = (STATUS_ID_DEPLOYING,
|
||||||
|
STATUS_ID_DELETING,
|
||||||
|
STATUS_ID_DEPLOY_FAILURE)
|
||||||
|
|
||||||
DEP_STATUS_ID_RUNNING = 'running'
|
DEP_STATUS_ID_RUNNING = 'running'
|
||||||
DEP_STATUS_ID_RUNNING_W_ERRORS = 'running_w_errors'
|
DEP_STATUS_ID_RUNNING_W_ERRORS = 'running_w_errors'
|
||||||
|
@ -22,7 +22,6 @@ from horizon import tables
|
|||||||
|
|
||||||
from muranodashboard.environments import api
|
from muranodashboard.environments import api
|
||||||
from muranodashboard.environments import consts
|
from muranodashboard.environments import consts
|
||||||
from muranodashboard.openstack.common import timeutils
|
|
||||||
|
|
||||||
|
|
||||||
def _get_environment_status_and_version(request, table):
|
def _get_environment_status_and_version(request, table):
|
||||||
@ -67,17 +66,12 @@ class CreateEnvironment(tables.LinkAction):
|
|||||||
class DeleteEnvironment(tables.DeleteAction):
|
class DeleteEnvironment(tables.DeleteAction):
|
||||||
data_type_singular = _('Environment')
|
data_type_singular = _('Environment')
|
||||||
data_type_plural = _('Environments')
|
data_type_plural = _('Environments')
|
||||||
|
action_past = _('Start Deleting')
|
||||||
|
|
||||||
def allowed(self, request, environment):
|
def allowed(self, request, environment):
|
||||||
if environment:
|
if environment:
|
||||||
environment = api.environment_get(request, environment.id)
|
return environment.status not in (consts.STATUS_ID_DEPLOYING,
|
||||||
if environment.status == consts.STATUS_ID_DEPLOYING:
|
consts.STATUS_ID_DELETING)
|
||||||
deployment = api.deployments_list(request, environment.id)[0]
|
|
||||||
last_action = timeutils.parse_strtime(
|
|
||||||
deployment.started.replace(' ', 'T'),
|
|
||||||
timeutils._ISO8601_TIME_FORMAT)
|
|
||||||
return timeutils.is_older_than(last_action, 15 * 60)
|
|
||||||
return environment.status not in consts.NO_ACTION_ALLOWED_STATUSES
|
|
||||||
return True
|
return True
|
||||||
|
|
||||||
def action(self, request, environment_id):
|
def action(self, request, environment_id):
|
||||||
@ -102,6 +96,7 @@ class EditEnvironment(tables.LinkAction):
|
|||||||
class DeleteService(tables.DeleteAction):
|
class DeleteService(tables.DeleteAction):
|
||||||
data_type_singular = _('Component')
|
data_type_singular = _('Component')
|
||||||
data_type_plural = _('Components')
|
data_type_plural = _('Components')
|
||||||
|
action_past = _('Start Deleting')
|
||||||
|
|
||||||
def allowed(self, request, service=None):
|
def allowed(self, request, service=None):
|
||||||
status, version = _get_environment_status_and_version(request,
|
status, version = _get_environment_status_and_version(request,
|
||||||
@ -132,9 +127,9 @@ class DeployEnvironment(tables.BatchAction):
|
|||||||
|
|
||||||
def allowed(self, request, environment):
|
def allowed(self, request, environment):
|
||||||
status = getattr(environment, 'status', None)
|
status = getattr(environment, 'status', None)
|
||||||
if status not in consts.NO_ACTION_ALLOWED_STATUSES:
|
if not environment.has_new_services:
|
||||||
return True
|
return False
|
||||||
if environment.version == 0 and not environment.has_services:
|
if status in consts.NO_ACTION_ALLOWED_STATUSES:
|
||||||
return False
|
return False
|
||||||
return True
|
return True
|
||||||
|
|
||||||
@ -156,7 +151,8 @@ class DeployThisEnvironment(tables.Action):
|
|||||||
def allowed(self, request, service):
|
def allowed(self, request, service):
|
||||||
status, version = _get_environment_status_and_version(request,
|
status, version = _get_environment_status_and_version(request,
|
||||||
self.table)
|
self.table)
|
||||||
if status == consts.STATUS_ID_DEPLOYING:
|
if (status in consts.NO_ACTION_ALLOWED_STATUSES
|
||||||
|
or status == consts.STATUS_ID_READY):
|
||||||
return False
|
return False
|
||||||
|
|
||||||
apps = self.table.data
|
apps = self.table.data
|
||||||
|
Loading…
Reference in New Issue
Block a user