Beispiel #1
0
class PackageDefinitionsTable(tables.DataTable):
    name = md_utils.Column('name',
                           link="horizon:app-catalog:packages:detail",
                           verbose_name=_('Package Name'))
    tenant_name = tables.Column('tenant_name', verbose_name=_('Tenant Name'))
    enabled = tables.Column('enabled', verbose_name=_('Active'))
    is_public = tables.Column('is_public', verbose_name=_('Public'))
    type = tables.Column('type', verbose_name=_('Type'))
    version = tables.Column(lambda obj: getattr(obj, 'version', None),
                            verbose_name=_('Version'))
    created_time = tables.Column('created',
                                 verbose_name=_('Created'),
                                 filters=(filters.parse_isotime, ))
    updated_time = tables.Column('updated',
                                 verbose_name=_('Updated'),
                                 filters=(filters.parse_isotime, ))

    def get_prev_pagination_string(self):
        pagination_string = super(PackageDefinitionsTable,
                                  self).get_prev_pagination_string()
        return pagination_string + "&sort_dir=desc"

    class Meta(object):
        name = 'packages'
        prev_pagination_param = 'marker'
        verbose_name = _('Packages')
        table_actions_menu = (ToggleEnabled, TogglePublicEnabled)
        table_actions = (PackagesFilterAction, ImportPackage, ImportBundle,
                         DeletePackage)

        row_actions = (ModifyPackage, DownloadPackage, ToggleEnabled,
                       TogglePublicEnabled, DeletePackage)
Beispiel #2
0
class EnvConfigTable(tables.DataTable):
    name = md_utils.Column('name', verbose_name=_('Name'))
    _type = tables.Column(lambda datum: get_service_type(datum) or 'Unknown',
                          verbose_name=_('Type'))

    def get_object_id(self, datum):
        return datum['?']['id']

    class Meta(object):
        name = 'environment_configuration'
        verbose_name = _('Deployed Components')
Beispiel #3
0
class CategoriesTable(tables.DataTable):
    name = md_utils.Column('name', verbose_name=_('Category Name'))
    use_artifacts = getattr(settings, 'MURANO_USE_GLARE', False)
    if not use_artifacts:
        package_count = tables.Column('package_count',
                                      verbose_name=_('Package Count'))

    class Meta(object):
        name = 'categories'
        verbose_name = _('Application Categories')
        table_actions = (AddCategory,)
        row_actions = (DeleteCategory,)
        multi_select = False
Beispiel #4
0
class MarkedImagesTable(tables.DataTable):
    image = tables.Column('name',
                          link='horizon:project:images:images:detail',
                          verbose_name=_('Image'))
    type = tables.Column(lambda obj: getattr(obj, 'type', None),
                         verbose_name=_('Type'))
    title = md_utils.Column(lambda obj: getattr(obj, 'title', None),
                            verbose_name=_('Title'))

    class Meta(object):
        name = 'marked_images'
        verbose_name = _('Marked Images')
        table_actions = (MarkImage, RemoveImageMetadata)
        row_actions = (RemoveImageMetadata, )
Beispiel #5
0
class EnvironmentsTable(tables.DataTable):
    name = md_utils.Column(
        'name',
        link='horizon:app-catalog:environments:services',
        verbose_name=_('Name'),
        form_field=forms.CharField(required=False),
        update_action=UpdateName)

    status = tables.Column('status',
                           verbose_name=_('Status'),
                           status=True,
                           status_choices=consts.STATUS_CHOICES,
                           display_choices=consts.STATUS_DISPLAY_CHOICES)

    def get_env_detail_link(self, environment):
        # NOTE: using the policy check for show_environment
        if policy.check((("murano", "show_environment"),),
                        self.request, target={"environment": environment}):
            return reverse("horizon:app-catalog:environments:services",
                           args=(environment.id,))
        return None

    def __init__(self, request, data=None, needs_form_wrapper=None, **kwargs):
        super(EnvironmentsTable,
              self).__init__(request, data=data,
                             needs_form_wrapper=needs_form_wrapper,
                             **kwargs)
        self.columns['name'].get_link_url = self.get_env_detail_link

    class Meta(object):
        name = 'environments'
        verbose_name = _('Environments')
        template = 'environments/_data_table.html'
        row_class = UpdateEnvironmentRow
        status_columns = ['status']
        no_data_message = _('NO ENVIRONMENTS')
        table_actions_menu = (AbandonEnvironment,
                              DeploymentHistory)
        table_actions = (CreateEnvironment, DeployEnvironment,
                         DeleteEnvironment)
        row_actions = (ShowEnvironmentServices, DeployEnvironment,
                       DeleteEnvironment, AbandonEnvironment,
                       UpdateEnvMetadata)
Beispiel #6
0
class ServicesTable(tables.DataTable):
    name = md_utils.Column('name',
                           verbose_name=_('Name'),
                           link=get_service_details_link)

    _type = tables.Column(get_service_type, verbose_name=_('Type'))

    status = tables.Column(lambda datum: datum['?'].get('status'),
                           verbose_name=_('Status'),
                           status=True,
                           status_choices=consts.STATUS_CHOICES,
                           display_choices=consts.STATUS_DISPLAY_CHOICES)
    operation = tables.Column('operation',
                              verbose_name=_('Last operation'),
                              filters=(defaultfilters.urlize, ))
    operation_updated = tables.Column('operation_updated',
                                      verbose_name=_('Time updated'),
                                      filters=(filters.parse_isotime, ))

    def get_object_id(self, datum):
        return datum['?']['id']

    def get_apps_list(self):
        packages = []
        with api_utils.handled_exceptions(self.request):
            packages, self._more = pkg_api.package_list(self.request,
                                                        filters={
                                                            'type':
                                                            'Application',
                                                            'catalog': True
                                                        })
        return [package.to_dict() for package in packages]

    def actions_allowed(self):
        status, version = _get_environment_status_and_version(
            self.request, self)
        return status not in consts.NO_ACTION_ALLOWED_STATUSES

    def get_categories_list(self):
        return catalog_views.get_categories_list(self.request)

    def get_row_actions(self, datum):
        actions = super(ServicesTable, self).get_row_actions(datum)
        environment_id = self.kwargs['environment_id']
        app_actions = []
        for action_datum in api.extract_actions_list(datum):
            _classes = ('murano_action', )

            class CustomAction(tables.LinkAction):
                name = action_datum['name']
                verbose_name = action_datum.get('title') or name
                url = reverse('horizon:app-catalog:environments:start_action',
                              args=(environment_id, action_datum['id']))
                classes = _classes
                table = self

                def allowed(self, request, datum):
                    status, version = _get_environment_status_and_version(
                        request, self.table)
                    if status in consts.NO_ACTION_ALLOWED_STATUSES:
                        return False
                    return True

            bound_action = CustomAction()
            if not bound_action.allowed(self.request, datum):
                continue
            bound_action.datum = datum
            if issubclass(bound_action.__class__, tables.LinkAction):
                bound_action.bound_url = bound_action.get_link_url(datum)
            app_actions.append(bound_action)
        if app_actions:
            # Show native actions first (such as "Delete Component") and
            # then add sorted application actions
            actions.extend(sorted(app_actions, key=lambda x: x.name))
        return actions

    def get_repo_url(self):
        return pkg_consts.DISPLAY_MURANO_REPO_URL

    def get_pkg_def_url(self):
        return reverse('horizon:app-catalog:packages:index')

    class Meta(object):
        name = 'services'
        verbose_name = _('Component List')
        no_data_message = _('No components')
        status_columns = ['status']
        row_class = UpdateServiceRow
        table_actions = (AddApplication, DeployThisEnvironment)
        row_actions = (DeleteService, UpdateMetadata)
        multi_select = False