Search in sources :

Example 1 with DashboardWidget

use of org.graylog2.dashboards.widgets.DashboardWidget in project graylog2-server by Graylog2.

the class DashboardWidgetsResource method updateDescription.

@Deprecated
@PUT
@Timed
@ApiOperation(value = "Update description of a widget")
@Path("/{widgetId}/description")
@ApiResponses(value = { @ApiResponse(code = 404, message = "Dashboard not found."), @ApiResponse(code = 404, message = "Widget not found.") })
@Produces(MediaType.APPLICATION_JSON)
@AuditEvent(type = AuditEventTypes.DASHBOARD_WIDGET_UPDATE)
public void updateDescription(@ApiParam(name = "dashboardId", required = true) @PathParam("dashboardId") String dashboardId, @ApiParam(name = "widgetId", required = true) @PathParam("widgetId") String widgetId, @ApiParam(name = "JSON body", required = true) @Valid UpdateWidgetRequest uwr) throws ValidationException, NotFoundException {
    checkPermission(RestPermissions.DASHBOARDS_EDIT, dashboardId);
    final Dashboard dashboard = dashboardService.load(dashboardId);
    final DashboardWidget widget = dashboard.getWidget(widgetId);
    if (widget == null) {
        final String msg = "Widget " + widgetId + " on dashboard " + dashboardId + " not found.";
        LOG.error(msg);
        throw new javax.ws.rs.NotFoundException(msg);
    }
    dashboardService.updateWidgetDescription(dashboard, widget, uwr.description());
    LOG.info("Updated description of widget <" + widgetId + "> on dashboard <" + dashboardId + ">. Reason: REST request.");
}
Also used : DashboardWidget(org.graylog2.dashboards.widgets.DashboardWidget) Dashboard(org.graylog2.dashboards.Dashboard) NotFoundException(org.graylog2.database.NotFoundException) Path(javax.ws.rs.Path) Produces(javax.ws.rs.Produces) Timed(com.codahale.metrics.annotation.Timed) ApiOperation(io.swagger.annotations.ApiOperation) AuditEvent(org.graylog2.audit.jersey.AuditEvent) PUT(javax.ws.rs.PUT) ApiResponses(io.swagger.annotations.ApiResponses)

Example 2 with DashboardWidget

use of org.graylog2.dashboards.widgets.DashboardWidget in project graylog2-server by Graylog2.

the class DashboardWidgetsResource method getWidget.

@GET
@Timed
@ApiOperation(value = "Get a widget")
@Path("/{widgetId}")
@ApiResponses(value = { @ApiResponse(code = 404, message = "Dashboard not found."), @ApiResponse(code = 404, message = "Widget not found.") })
@Produces(MediaType.APPLICATION_JSON)
public WidgetSummary getWidget(@ApiParam(name = "dashboardId", required = true) @PathParam("dashboardId") String dashboardId, @ApiParam(name = "widgetId", required = true) @PathParam("widgetId") String widgetId) throws NotFoundException {
    checkPermission(RestPermissions.DASHBOARDS_READ, dashboardId);
    final Dashboard dashboard = dashboardService.load(dashboardId);
    final DashboardWidget widget = dashboard.getWidget(widgetId);
    return WidgetSummary.create(widget.getId(), widget.getDescription(), widget.getType(), widget.getCacheTime(), widget.getCreatorUserId(), widget.getConfig());
}
Also used : DashboardWidget(org.graylog2.dashboards.widgets.DashboardWidget) Dashboard(org.graylog2.dashboards.Dashboard) Path(javax.ws.rs.Path) Produces(javax.ws.rs.Produces) Timed(com.codahale.metrics.annotation.Timed) GET(javax.ws.rs.GET) ApiOperation(io.swagger.annotations.ApiOperation) ApiResponses(io.swagger.annotations.ApiResponses)

Example 3 with DashboardWidget

use of org.graylog2.dashboards.widgets.DashboardWidget in project graylog2-server by Graylog2.

the class BundleExporter method exportDashboardWidgets.

private List<DashboardWidget> exportDashboardWidgets(final org.graylog2.dashboards.Dashboard dashboard) {
    final ImmutableList.Builder<DashboardWidget> dashboardWidgetBuilder = ImmutableList.builder();
    // Add all widgets of this dashboard.
    final Map<String, Object> fields = dashboard.getFields();
    @SuppressWarnings("unchecked") final Map<String, Object> positions = (Map<String, Object>) dashboard.asMap().get("positions");
    if (fields.containsKey(DashboardImpl.EMBEDDED_WIDGETS)) {
        @SuppressWarnings("unchecked") final List<BasicDBObject> embeddedWidgets = (List<BasicDBObject>) fields.get(DashboardImpl.EMBEDDED_WIDGETS);
        for (BasicDBObject widgetFields : embeddedWidgets) {
            org.graylog2.dashboards.widgets.DashboardWidget widget;
            try {
                widget = dashboardWidgetCreator.fromPersisted(widgetFields);
            } catch (Exception e) {
                LOG.warn("Error while exporting widgets of dashboard " + dashboard.getId(), e);
                continue;
            }
            final DashboardWidget dashboardWidgetDescription = new DashboardWidget();
            final Map<String, Object> widgetConfig = widget.getConfig();
            dashboardWidgetDescription.setDescription(widget.getDescription());
            dashboardWidgetDescription.setType(widget.getType());
            dashboardWidgetDescription.setConfiguration(widgetConfig);
            dashboardWidgetDescription.setCacheTime(widget.getCacheTime());
            // Mark referenced streams for export
            final Object streamId = widgetConfig.get("stream_id");
            if (streamId instanceof String && streamSet.add((String) streamId)) {
                LOG.debug("Adding stream {} to export list", streamId);
            }
            @SuppressWarnings("unchecked") final Map<String, Integer> widgetPosition = (Map<String, Integer>) positions.get(widget.getId());
            if (widgetPosition != null) {
                final int row = widgetPosition.getOrDefault("row", 0);
                final int col = widgetPosition.getOrDefault("col", 0);
                final int height = widgetPosition.getOrDefault("height", 0);
                final int width = widgetPosition.getOrDefault("width", 0);
                dashboardWidgetDescription.setRow(row);
                dashboardWidgetDescription.setCol(col);
                dashboardWidgetDescription.setHeight(height);
                dashboardWidgetDescription.setWidth(width);
            } else {
                LOG.debug("Couldn't find position for widget {} on dashboard {}, using defaults (0, 0, 0, 0).", widget.getId(), dashboard.getTitle());
                dashboardWidgetDescription.setRow(0);
                dashboardWidgetDescription.setCol(0);
                dashboardWidgetDescription.setHeight(0);
                dashboardWidgetDescription.setWidth(0);
            }
            dashboardWidgetBuilder.add(dashboardWidgetDescription);
        }
    }
    return dashboardWidgetBuilder.build();
}
Also used : ImmutableList(com.google.common.collect.ImmutableList) NotFoundException(org.graylog2.database.NotFoundException) BasicDBObject(com.mongodb.BasicDBObject) BasicDBObject(com.mongodb.BasicDBObject) List(java.util.List) ImmutableList(com.google.common.collect.ImmutableList) Map(java.util.Map)

Example 4 with DashboardWidget

use of org.graylog2.dashboards.widgets.DashboardWidget in project graylog2-server by Graylog2.

the class DashboardWidgetCreator method fromPersisted.

public DashboardWidget fromPersisted(BasicDBObject fields) throws DashboardWidget.NoSuchWidgetTypeException, InvalidRangeParametersException, InvalidWidgetConfigurationException {
    final String type = (String) fields.get(DashboardWidget.FIELD_TYPE);
    final BasicDBObject config = (BasicDBObject) fields.get(DashboardWidget.FIELD_CONFIG);
    final String widgetId = (String) fields.get(DashboardWidget.FIELD_ID);
    // Build timerange.
    final BasicDBObject timerangeConfig = (BasicDBObject) config.get("timerange");
    final TimeRange timeRange = timeRangeFactory.create(timerangeConfig);
    final String description = (String) fields.get(DashboardWidget.FIELD_DESCRIPTION);
    final int cacheTime = (int) firstNonNull(fields.get(DashboardWidget.FIELD_CACHE_TIME), 0);
    return buildDashboardWidget(type, widgetId, description, cacheTime, config, timeRange, (String) fields.get(DashboardWidget.FIELD_CREATOR_USER_ID));
}
Also used : BasicDBObject(com.mongodb.BasicDBObject) TimeRange(org.graylog2.plugin.indexer.searches.timeranges.TimeRange)

Example 5 with DashboardWidget

use of org.graylog2.dashboards.widgets.DashboardWidget in project graylog2-server by Graylog2.

the class WidgetResultCache method getComputationResultForDashboardWidget.

public ComputationResult getComputationResultForDashboardWidget(final DashboardWidget dashboardWidget) throws InvalidWidgetConfigurationException {
    final String widgetId = dashboardWidget.getId();
    if (!this.cache.containsKey(widgetId)) {
        final WidgetStrategy widgetStrategy = this.widgetStrategyFactory.getWidgetForType(dashboardWidget.getType(), dashboardWidget.getConfig(), dashboardWidget.getTimeRange(), widgetId);
        final Supplier<ComputationResult> supplier = this.cache.putIfAbsent(widgetId, Suppliers.memoizeWithExpiration(new ComputationResultSupplier(metricRegistry, dashboardWidget, widgetStrategy), dashboardWidget.getCacheTime(), TimeUnit.SECONDS));
        if (supplier == null) {
            // Only increment the counter if there has been no value for the widget ID before.
            counter.inc();
        }
    }
    return this.cache.get(widgetId).get();
}
Also used : ComputationResult(org.graylog2.plugin.dashboards.widgets.ComputationResult) WidgetStrategy(org.graylog2.plugin.dashboards.widgets.WidgetStrategy)

Aggregations

DashboardWidget (org.graylog2.dashboards.widgets.DashboardWidget)9 Timed (com.codahale.metrics.annotation.Timed)7 ApiOperation (io.swagger.annotations.ApiOperation)7 ApiResponses (io.swagger.annotations.ApiResponses)7 Produces (javax.ws.rs.Produces)7 Dashboard (org.graylog2.dashboards.Dashboard)7 Path (javax.ws.rs.Path)6 AuditEvent (org.graylog2.audit.jersey.AuditEvent)5 NotFoundException (org.graylog2.database.NotFoundException)5 BasicDBObject (com.mongodb.BasicDBObject)4 Map (java.util.Map)3 PUT (javax.ws.rs.PUT)3 InvalidWidgetConfigurationException (org.graylog2.dashboards.widgets.InvalidWidgetConfigurationException)3 InvalidRangeParametersException (org.graylog2.plugin.indexer.searches.timeranges.InvalidRangeParametersException)3 TimeRange (org.graylog2.plugin.indexer.searches.timeranges.TimeRange)3 List (java.util.List)2 BadRequestException (javax.ws.rs.BadRequestException)2 GET (javax.ws.rs.GET)2 ImmutableList (com.google.common.collect.ImmutableList)1 ImmutableMap (com.google.common.collect.ImmutableMap)1