DashboardArgs

data class DashboardArgs(val dashboardProperties: Output<String>? = null, val location: Output<String>? = null, val name: Output<String>? = null, val resourceGroupName: Output<String>? = null, val tags: Output<Map<String, String>>? = null) : ConvertibleToJava<DashboardArgs>

Manages a shared dashboard in the Azure Portal. !>Note: The azure.portal.Dashboard resource is deprecated in version 3.0 of the AzureRM provider and will be removed in version 4.0. Please use the azure.portal.PortalDashboard resource instead.

Example Usage

import * as pulumi from "@pulumi/pulumi";
import * as azure from "@pulumi/azure";
const config = new pulumi.Config();
// Content for the MD tile
const mdContent = config.get("mdContent") || "# Hello all :)";
// Link to a video
const videoLink = config.get("videoLink") || "https://www.youtube.com/watch?v=......";
const current = azure.core.getSubscription({});
const example = new azure.core.ResourceGroup("example", {
name: "mygroup",
location: "West Europe",
});
const my_board = new azure.portal.Dashboard("my-board", {
name: "my-cool-dashboard",
resourceGroupName: example.name,
location: example.location,
tags: {
source: "managed",
},
dashboardProperties: current.then(current => `{
"lenses": {
"0": {
"order": 0,
"parts": {
"0": {
"position": {
"x": 0,
"y": 0,
"rowSpan": 2,
"colSpan": 3
},
"metadata": {
"inputs": [],
"type": "Extension/HubsExtension/PartType/MarkdownPart",
"settings": {
"content": {
"settings": {
"content": "${mdContent}",
"subtitle": "",
"title": ""
}
}
}
}
},
"1": {
"position": {
"x": 5,
"y": 0,
"rowSpan": 4,
"colSpan": 6
},
"metadata": {
"inputs": [],
"type": "Extension/HubsExtension/PartType/VideoPart",
"settings": {
"content": {
"settings": {
"title": "Important Information",
"subtitle": "",
"src": "${videoLink}",
"autoplay": true
}
}
}
}
},
"2": {
"position": {
"x": 0,
"y": 4,
"rowSpan": 4,
"colSpan": 6
},
"metadata": {
"inputs": [
{
"name": "ComponentId",
"value": "/subscriptions/${current.subscriptionId}/resourceGroups/myRG/providers/microsoft.insights/components/myWebApp"
}
],
"type": "Extension/AppInsightsExtension/PartType/AppMapGalPt",
"settings": {},
"asset": {
"idInputName": "ComponentId",
"type": "ApplicationInsights"
}
}
}
}
}
},
"metadata": {
"model": {
"timeRange": {
"value": {
"relative": {
"duration": 24,
"timeUnit": 1
}
},
"type": "MsPortalFx.Composition.Configuration.ValueTypes.TimeRange"
},
"filterLocale": {
"value": "en-us"
},
"filters": {
"value": {
"MsPortalFx_TimeRange": {
"model": {
"format": "utc",
"granularity": "auto",
"relative": "24h"
},
"displayCache": {
"name": "UTC Time",
"value": "Past 24 hours"
},
"filteredPartIds": [
"StartboardPart-UnboundPart-ae44fef5-76b8-46b0-86f0-2b3f47bad1c7"
]
}
}
}
}
}
}
`),
});
import pulumi
import pulumi_azure as azure
config = pulumi.Config()
# Content for the MD tile
md_content = config.get("mdContent")
if md_content is None:
md_content = "# Hello all :)"
# Link to a video
video_link = config.get("videoLink")
if video_link is None:
video_link = "https://www.youtube.com/watch?v=......"
current = azure.core.get_subscription()
example = azure.core.ResourceGroup("example",
name="mygroup",
location="West Europe")
my_board = azure.portal.Dashboard("my-board",
name="my-cool-dashboard",
resource_group_name=example.name,
location=example.location,
tags={
"source": "managed",
},
dashboard_properties=f"""{{
"lenses": {{
"0": {{
"order": 0,
"parts": {{
"0": {{
"position": {{
"x": 0,
"y": 0,
"rowSpan": 2,
"colSpan": 3
}},
"metadata": {{
"inputs": [],
"type": "Extension/HubsExtension/PartType/MarkdownPart",
"settings": {{
"content": {{
"settings": {{
"content": "{md_content}",
"subtitle": "",
"title": ""
}}
}}
}}
}}
}},
"1": {{
"position": {{
"x": 5,
"y": 0,
"rowSpan": 4,
"colSpan": 6
}},
"metadata": {{
"inputs": [],
"type": "Extension/HubsExtension/PartType/VideoPart",
"settings": {{
"content": {{
"settings": {{
"title": "Important Information",
"subtitle": "",
"src": "{video_link}",
"autoplay": true
}}
}}
}}
}}
}},
"2": {{
"position": {{
"x": 0,
"y": 4,
"rowSpan": 4,
"colSpan": 6
}},
"metadata": {{
"inputs": [
{{
"name": "ComponentId",
"value": "/subscriptions/{current.subscription_id}/resourceGroups/myRG/providers/microsoft.insights/components/myWebApp"
}}
],
"type": "Extension/AppInsightsExtension/PartType/AppMapGalPt",
"settings": {{}},
"asset": {{
"idInputName": "ComponentId",
"type": "ApplicationInsights"
}}
}}
}}
}}
}}
}},
"metadata": {{
"model": {{
"timeRange": {{
"value": {{
"relative": {{
"duration": 24,
"timeUnit": 1
}}
}},
"type": "MsPortalFx.Composition.Configuration.ValueTypes.TimeRange"
}},
"filterLocale": {{
"value": "en-us"
}},
"filters": {{
"value": {{
"MsPortalFx_TimeRange": {{
"model": {{
"format": "utc",
"granularity": "auto",
"relative": "24h"
}},
"displayCache": {{
"name": "UTC Time",
"value": "Past 24 hours"
}},
"filteredPartIds": [
"StartboardPart-UnboundPart-ae44fef5-76b8-46b0-86f0-2b3f47bad1c7"
]
}}
}}
}}
}}
}}
}}
""")
using System.Collections.Generic;
using System.Linq;
using Pulumi;
using Azure = Pulumi.Azure;
return await Deployment.RunAsync(() =>
{
var config = new Config();
// Content for the MD tile
var mdContent = config.Get("mdContent") ?? "# Hello all :)";
// Link to a video
var videoLink = config.Get("videoLink") ?? "https://www.youtube.com/watch?v=......";
var current = Azure.Core.GetSubscription.Invoke();
var example = new Azure.Core.ResourceGroup("example", new()
{
Name = "mygroup",
Location = "West Europe",
});
var my_board = new Azure.Portal.Dashboard("my-board", new()
{
Name = "my-cool-dashboard",
ResourceGroupName = example.Name,
Location = example.Location,
Tags =
{
{ "source", "managed" },
},
DashboardProperties = @$"{{
""lenses"": {{
""0"": {{
""order"": 0,
""parts"": {{
""0"": {{
""position"": {{
""x"": 0,
""y"": 0,
""rowSpan"": 2,
""colSpan"": 3
}},
""metadata"": {{
""inputs"": [],
""type"": ""Extension/HubsExtension/PartType/MarkdownPart"",
""settings"": {{
""content"": {{
""settings"": {{
""content"": ""{mdContent}"",
""subtitle"": """",
""title"": """"
}}
}}
}}
}}
}},
""1"": {{
""position"": {{
""x"": 5,
""y"": 0,
""rowSpan"": 4,
""colSpan"": 6
}},
""metadata"": {{
""inputs"": [],
""type"": ""Extension/HubsExtension/PartType/VideoPart"",
""settings"": {{
""content"": {{
""settings"": {{
""title"": ""Important Information"",
""subtitle"": """",
""src"": ""{videoLink}"",
""autoplay"": true
}}
}}
}}
}}
}},
""2"": {{
""position"": {{
""x"": 0,
""y"": 4,
""rowSpan"": 4,
""colSpan"": 6
}},
""metadata"": {{
""inputs"": [
{{
""name"": ""ComponentId"",
""value"": ""/subscriptions/{current.Apply(getSubscriptionResult => getSubscriptionResult.SubscriptionId)}/resourceGroups/myRG/providers/microsoft.insights/components/myWebApp""
}}
],
""type"": ""Extension/AppInsightsExtension/PartType/AppMapGalPt"",
""settings"": {{}},
""asset"": {{
""idInputName"": ""ComponentId"",
""type"": ""ApplicationInsights""
}}
}}
}}
}}
}}
}},
""metadata"": {{
""model"": {{
""timeRange"": {{
""value"": {{
""relative"": {{
""duration"": 24,
""timeUnit"": 1
}}
}},
""type"": ""MsPortalFx.Composition.Configuration.ValueTypes.TimeRange""
}},
""filterLocale"": {{
""value"": ""en-us""
}},
""filters"": {{
""value"": {{
""MsPortalFx_TimeRange"": {{
""model"": {{
""format"": ""utc"",
""granularity"": ""auto"",
""relative"": ""24h""
}},
""displayCache"": {{
""name"": ""UTC Time"",
""value"": ""Past 24 hours""
}},
""filteredPartIds"": [
""StartboardPart-UnboundPart-ae44fef5-76b8-46b0-86f0-2b3f47bad1c7""
]
}}
}}
}}
}}
}}
}}
",
});
});
package main
import (
"fmt"
"github.com/pulumi/pulumi-azure/sdk/v5/go/azure/core"
"github.com/pulumi/pulumi-azure/sdk/v5/go/azure/portal"
"github.com/pulumi/pulumi/sdk/v3/go/pulumi"
"github.com/pulumi/pulumi/sdk/v3/go/pulumi/config"
)
func main() {
pulumi.Run(func(ctx *pulumi.Context) error {
cfg := config.New(ctx, "")
// Content for the MD tile
mdContent := "# Hello all :)"
if param := cfg.Get("mdContent"); param != "" {
mdContent = param
}
// Link to a video
videoLink := "https://www.youtube.com/watch?v=......"
if param := cfg.Get("videoLink"); param != "" {
videoLink = param
}
current, err := core.LookupSubscription(ctx, nil, nil)
if err != nil {
return err
}
example, err := core.NewResourceGroup(ctx, "example", &core.ResourceGroupArgs{
Name: pulumi.String("mygroup"),
Location: pulumi.String("West Europe"),
})
if err != nil {
return err
}
_, err = portal.NewDashboard(ctx, "my-board", &portal.DashboardArgs{
Name: pulumi.String("my-cool-dashboard"),
ResourceGroupName: example.Name,
Location: example.Location,
Tags: pulumi.StringMap{
"source": pulumi.String("managed"),
},
DashboardProperties: pulumi.Sprintf(`{
"lenses": {
"0": {
"order": 0,
"parts": {
"0": {
"position": {
"x": 0,
"y": 0,
"rowSpan": 2,
"colSpan": 3
},
"metadata": {
"inputs": [],
"type": "Extension/HubsExtension/PartType/MarkdownPart",
"settings": {
"content": {
"settings": {
"content": "%v",
"subtitle": "",
"title": ""
}
}
}
}
},
"1": {
"position": {
"x": 5,
"y": 0,
"rowSpan": 4,
"colSpan": 6
},
"metadata": {
"inputs": [],
"type": "Extension/HubsExtension/PartType/VideoPart",
"settings": {
"content": {
"settings": {
"title": "Important Information",
"subtitle": "",
"src": "%v",
"autoplay": true
}
}
}
}
},
"2": {
"position": {
"x": 0,
"y": 4,
"rowSpan": 4,
"colSpan": 6
},
"metadata": {
"inputs": [
{
"name": "ComponentId",
"value": "/subscriptions/%v/resourceGroups/myRG/providers/microsoft.insights/components/myWebApp"
}
],
"type": "Extension/AppInsightsExtension/PartType/AppMapGalPt",
"settings": {},
"asset": {
"idInputName": "ComponentId",
"type": "ApplicationInsights"
}
}
}
}
}
},
"metadata": {
"model": {
"timeRange": {
"value": {
"relative": {
"duration": 24,
"timeUnit": 1
}
},
"type": "MsPortalFx.Composition.Configuration.ValueTypes.TimeRange"
},
"filterLocale": {
"value": "en-us"
},
"filters": {
"value": {
"MsPortalFx_TimeRange": {
"model": {
"format": "utc",
"granularity": "auto",
"relative": "24h"
},
"displayCache": {
"name": "UTC Time",
"value": "Past 24 hours"
},
"filteredPartIds": [
"StartboardPart-UnboundPart-ae44fef5-76b8-46b0-86f0-2b3f47bad1c7"
]
}
}
}
}
}
}
`, mdContent, videoLink, current.SubscriptionId),
})
if err != nil {
return err
}
return nil
})
}
package generated_program;
import com.pulumi.Context;
import com.pulumi.Pulumi;
import com.pulumi.core.Output;
import com.pulumi.azure.core.CoreFunctions;
import com.pulumi.azure.core.inputs.GetSubscriptionArgs;
import com.pulumi.azure.core.ResourceGroup;
import com.pulumi.azure.core.ResourceGroupArgs;
import com.pulumi.azure.portal.Dashboard;
import com.pulumi.azure.portal.DashboardArgs;
import java.util.List;
import java.util.ArrayList;
import java.util.Map;
import java.io.File;
import java.nio.file.Files;
import java.nio.file.Paths;
public class App {
public static void main(String[] args) {
Pulumi.run(App::stack);
}
public static void stack(Context ctx) {
final var config = ctx.config();
final var mdContent = config.get("mdContent").orElse("# Hello all :)");
final var videoLink = config.get("videoLink").orElse("https://www.youtube.com/watch?v=......");
final var current = CoreFunctions.getSubscription();
var example = new ResourceGroup("example", ResourceGroupArgs.builder()
.name("mygroup")
.location("West Europe")
.build());
var my_board = new Dashboard("my-board", DashboardArgs.builder()
.name("my-cool-dashboard")
.resourceGroupName(example.name())
.location(example.location())
.tags(Map.of("source", "managed"))
.dashboardProperties("""
{
"lenses": {
"0": {
"order": 0,
"parts": {
"0": {
"position": {
"x": 0,
"y": 0,
"rowSpan": 2,
"colSpan": 3
},
"metadata": {
"inputs": [],
"type": "Extension/HubsExtension/PartType/MarkdownPart",
"settings": {
"content": {
"settings": {
"content": "%s",
"subtitle": "",
"title": ""
}
}
}
}
},
"1": {
"position": {
"x": 5,
"y": 0,
"rowSpan": 4,
"colSpan": 6
},
"metadata": {
"inputs": [],
"type": "Extension/HubsExtension/PartType/VideoPart",
"settings": {
"content": {
"settings": {
"title": "Important Information",
"subtitle": "",
"src": "%s",
"autoplay": true
}
}
}
}
},
"2": {
"position": {
"x": 0,
"y": 4,
"rowSpan": 4,
"colSpan": 6
},
"metadata": {
"inputs": [
{
"name": "ComponentId",
"value": "/subscriptions/%s/resourceGroups/myRG/providers/microsoft.insights/components/myWebApp"
}
],
"type": "Extension/AppInsightsExtension/PartType/AppMapGalPt",
"settings": {},
"asset": {
"idInputName": "ComponentId",
"type": "ApplicationInsights"
}
}
}
}
}
},
"metadata": {
"model": {
"timeRange": {
"value": {
"relative": {
"duration": 24,
"timeUnit": 1
}
},
"type": "MsPortalFx.Composition.Configuration.ValueTypes.TimeRange"
},
"filterLocale": {
"value": "en-us"
},
"filters": {
"value": {
"MsPortalFx_TimeRange": {
"model": {
"format": "utc",
"granularity": "auto",
"relative": "24h"
},
"displayCache": {
"name": "UTC Time",
"value": "Past 24 hours"
},
"filteredPartIds": [
"StartboardPart-UnboundPart-ae44fef5-76b8-46b0-86f0-2b3f47bad1c7"
]
}
}
}
}
}
}
", mdContent,videoLink,current.applyValue(getSubscriptionResult -> getSubscriptionResult.subscriptionId())))
.build());
}
}
configuration:
mdContent:
type: string
default: '# Hello all :)'
videoLink:
type: string
default: https://www.youtube.com/watch?v=......
resources:
example:
type: azure:core:ResourceGroup
properties:
name: mygroup
location: West Europe
my-board:
type: azure:portal:Dashboard
properties:
name: my-cool-dashboard
resourceGroupName: ${example.name}
location: ${example.location}
tags:
source: managed
dashboardProperties: "{\n \"lenses\": {\n \"0\": {\n \"order\": 0,\n \"parts\": {\n \"0\": {\n \"position\": {\n \"x\": 0,\n \"y\": 0,\n \"rowSpan\": 2,\n \"colSpan\": 3\n },\n \"metadata\": {\n \"inputs\": [],\n \"type\": \"Extension/HubsExtension/PartType/MarkdownPart\",\n \"settings\": {\n \"content\": {\n \"settings\": {\n \"content\": \"${mdContent}\",\n \"subtitle\": \"\",\n \"title\": \"\"\n }\n }\n }\n }\n }, \n \"1\": {\n \"position\": {\n \"x\": 5,\n \"y\": 0,\n \"rowSpan\": 4,\n \"colSpan\": 6\n },\n \"metadata\": {\n \"inputs\": [],\n \"type\": \"Extension/HubsExtension/PartType/VideoPart\",\n \"settings\": {\n \"content\": {\n \"settings\": {\n \"title\": \"Important Information\",\n \"subtitle\": \"\",\n \"src\": \"${videoLink}\",\n \"autoplay\": true\n }\n }\n }\n }\n },\n \"2\": {\n \"position\": {\n \"x\": 0,\n \"y\": 4,\n \"rowSpan\": 4,\n \"colSpan\": 6\n },\n \"metadata\": {\n \"inputs\": [\n {\n \"name\": \"ComponentId\",\n \"value\": \"/subscriptions/${current&#46;subscriptionId}/resourceGroups/myRG/providers/microsoft&#46;insights/components/myWebApp\"\n }\n ],\n \"type\": \"Extension/AppInsightsExtension/PartType/AppMapGalPt\",\n \"settings\": {},\n \"asset\": {\n \"idInputName\": \"ComponentId\",\n \"type\": \"ApplicationInsights\"\n }\n }\n } \n }\n }\n },\n \"metadata\": {\n \"model\": {\n \"timeRange\": {\n \"value\": {\n \"relative\": {\n \"duration\": 24,\n \"timeUnit\": 1\n }\n },\n \"type\": \"MsPortalFx&#46;Composition&#46;Configuration&#46;ValueTypes&#46;TimeRange\"\n },\n \"filterLocale\": {\n \"value\": \"en-us\"\n },\n \"filters\": {\n \"value\": {\n \"MsPortalFx_TimeRange\": {\n \"model\": {\n \"format\": \"utc\",\n \"granularity\": \"auto\",\n \"relative\": \"24h\"\n },\n \"displayCache\": {\n \"name\": \"UTC Time\",\n \"value\": \"Past 24 hours\"\n },\n \"filteredPartIds\": [\n \"StartboardPart-UnboundPart-ae44fef5-76b8-46b0-86f0-2b3f47bad1c7\"\n ]\n }\n }\n }\n }\n }\n}\n"
variables:
current:
fn::invoke:
Function: azure:core:getSubscription
Arguments: {}

It is recommended to follow the steps outlined here to create a Dashboard in the Portal and extract the relevant JSON to use in this resource. From the extracted JSON, the contents of the properties: {} object can used. Variables can be injected as needed - see above example.

Using a template_file data source or the templatefile function

Since the contents of the dashboard JSON can be quite lengthy, use a template file to improve readability: dash.tpl:

{
"lenses": {
"0": {
"order": 0,
"parts": {
"0": {
"position": {
"x": 0,
"y": 0,
"rowSpan": 2,
"colSpan": 3
},
"metadata": {
"inputs": [],
"type": "Extension/HubsExtension/PartType/MarkdownPart",
"settings": {
"content": {
"settings": {
"content": "${md_content}", // <-- note the 'var.' is dropped
"subtitle": "",
"title": ""
}
}
}
}
},
...
...

main.tf

Import

Dashboards can be imported using the resource id, e.g.

$ pulumi import azure:portal/dashboard:Dashboard my-board /subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/rg1/providers/Microsoft.Portal/dashboards/00000000-0000-0000-0000-000000000000

Note the URI in the above sample can be found using the Resource Explorer tool in the Azure Portal.

Constructors

Link copied to clipboard
constructor(dashboardProperties: Output<String>? = null, location: Output<String>? = null, name: Output<String>? = null, resourceGroupName: Output<String>? = null, tags: Output<Map<String, String>>? = null)

Properties

Link copied to clipboard
val dashboardProperties: Output<String>? = null

JSON data representing dashboard body. See above for details on how to obtain this from the Portal.

Link copied to clipboard
val location: Output<String>? = null

Specifies the supported Azure location where the resource exists. Changing this forces a new resource to be created.

Link copied to clipboard
val name: Output<String>? = null

Specifies the name of the Shared Dashboard. Changing this forces a new resource to be created.

Link copied to clipboard
val resourceGroupName: Output<String>? = null

The name of the resource group in which to create the dashboard. Changing this forces a new resource to be created.

Link copied to clipboard
val tags: Output<Map<String, String>>? = null

A mapping of tags to assign to the resource.

Functions

Link copied to clipboard
open override fun toJava(): DashboardArgs