Repository URL to install this package:
Version:
5.2.8.1.dev1 ▾
|
python3-tvault-horizon-plugin
/
usr
/
lib
/
python3
/
dist-packages
/
trilio_dashboard
/
migration_plans
/
tables.py
|
---|
# Copyright (c) 2014 TrilioData, Inc.
# All Rights Reserved.
import logging
from django import template
try:
from django.core.urlresolvers import reverse
except ImportError:
from django.urls import reverse
try:
from django.core.urlresolvers import reverse_lazy
except ImportError:
from django.urls import reverse_lazy
from django.http import HttpResponse
from django.template import defaultfilters as filters
from django.utils import http
from django.utils.translation import ugettext_lazy as _
from django.utils.http import urlencode
from horizon import exceptions
from horizon import messages
from horizon import tables
from trilio_dashboard import workloadmgr
from openstack_dashboard import api
LOG = logging.getLogger(__name__)
class UpdateRow(tables.Row):
ajax = True
name = "update"
def get_data(self, request, migration_plan_id):
try:
migration_plan = workloadmgr.migration_plan_get(request, migration_plan_id)
LOG.debug('migration_plan %s data retrieved successfully' % migration_plan_id)
return migration_plan
except Exception as ex:
LOG.exception(ex)
pass
class CreateMigrationPlan(tables.LinkAction):
name = "create"
verbose_name = _("Create")
url = "horizon:project:migration_plans:create"
classes = ("ajax-modal", "btn-create")
icon = "plus"
class CreateMigration(tables.LinkAction):
name = "migrate"
verbose_name = _("Migrate")
url = "horizon:project:migration_plans:create_migration"
classes = ("ajax-modal", "btn-migrate")
icon = "plus"
def allowed(self, request, migration_plan=None):
return migration_plan.status == "available"
def get_link_url(self, project):
return self._get_link_url(project, 'create_migration')
def _get_link_url(self, migration_plan, step_slug):
base_url = reverse(self.url, args=[migration_plan.id])
param = urlencode({"step": step_slug})
return "?".join([base_url, param, migration_plan.id])
class DiscoverVMs(tables.LinkAction):
name = "DiscoverVMs"
verbose_name = _("Discover VMs")
url = "horizon:project:migration_plans:discover_vms"
classes = ("ajax-modal", "btn-confirm")
def allowed(self, request, migration_plan):
if migration_plan is not None:
return ((migration_plan.status in ['available', 'error']))
else:
return False
class EditMigrationPlan(tables.LinkAction):
name = "edit"
verbose_name = _("Edit")
url = "horizon:project:migration_plans:update"
classes = ("ajax-modal", "btn-update")
icon = "pencil"
def get_data(self, request, migration_plan_id):
try:
migration_plan = workloadmgr.migration_plan_get(request, migration_plan_id)
LOG.debug('Migration plan %s data retrieved successfully' % migration_plan_id)
except Exception as ex:
messages.error(request, str(ex))
return migration_plan
def allowed(self, request, migration_plan=None):
return migration_plan.status in ["available", 'error']
class DeleteMigrationPlan(tables.DeleteAction):
classes = ("btn-danger")
data_type_singular = _("MigrationPlan")
data_type_plural = _("MigrationPlans")
icon = "trash"
@staticmethod
def action_present(count):
return _(
"Delete"
)
@staticmethod
def action_past(count):
return _(
"Submitted Delete Request for"
)
def delete(self, request, migration_plan_id):
try:
workloadmgr.migration_plan_delete(request, migration_plan_id)
LOG.debug('Deleted migration plan %s successfully' % migration_plan_id)
except Exception as ex:
messages.error(request, str(ex))
class MigrationPlansTable(tables.DataTable):
STATUS_CHOICES = (
("available", True),
("error", True)
)
created_at = tables.Column("created_at",
verbose_name=_("Created At"),
empty_value="...",
classes=('t_col165', 'test'))
name = tables.Column("name", verbose_name=_("Name"),
link='horizon:project:migration_plans:detail',
classes=('test', 'migrationplanname'))
migrations_info = tables.Column("migrations_info",
verbose_name=_("Migrations"),
empty_value="-",
classes=('t_col200', 'migrations_info'))
description = tables.Column("description", verbose_name=_("Description"))
status = tables.Column("status",
verbose_name=_("Status"),
classes=('t_col100', 'test', 'col_status'),
status=True,
status_choices=STATUS_CHOICES)
user_id = tables.Column("user_id",
verbose_name=_("User Id"),
hidden=True,
classes=('user',))
project_id = tables.Column("project_id",
verbose_name=_("Project Id"),
hidden=True,
classes=('project',))
def __init__(self, request, data=None, needs_form_wrapper=None, **kwargs):
super(MigrationPlansTable,
self).__init__(request, data=data,
needs_form_wrapper=needs_form_wrapper,
**kwargs)
pass
class Meta:
name = "migration_plans"
verbose_name = _("Migration Plans")
status_columns = ["status", "status"]
row_class = UpdateRow
table_actions = (CreateMigrationPlan, DeleteMigrationPlan)
row_actions = (DiscoverVMs, EditMigrationPlan, CreateMigration, DeleteMigrationPlan, )