Why Gemfury? Push, build, and install  RubyGems npm packages Python packages Maven artifacts PHP packages Go Modules Debian packages RPM packages NuGet packages

Repository URL to install this package:

Details    
Size: Mime:
# 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, )