ops/monitoring: pull in grafonnet-7.0

Change-Id: Ie036ef767419418876a18255a5ad378f5cfa1535
diff --git a/ops/monitoring/lib/grafonnet/panel/table.libsonnet b/ops/monitoring/lib/grafonnet/panel/table.libsonnet
new file mode 100644
index 0000000..1bd2152
--- /dev/null
+++ b/ops/monitoring/lib/grafonnet/panel/table.libsonnet
@@ -0,0 +1,134 @@
+// This file was generated by https://github.com/grafana/dashboard-spec
+
+{
+  new(
+    datasource='default',
+    description=null,
+    repeat=null,
+    repeatDirection=null,
+    title=null,
+    transparent=false,
+  ):: {
+    [if datasource != null then 'datasource']: datasource,
+    [if description != null then 'description']: description,
+    [if repeat != null then 'repeat']: repeat,
+    [if repeatDirection != null then 'repeatDirection']: repeatDirection,
+    [if title != null then 'title']: title,
+    [if transparent != null then 'transparent']: transparent,
+    type: 'table',
+
+    setFieldConfig(
+      displayName=null,
+      max=0,
+      min=0,
+      thresholdMode='absolute',
+      noValue=null,
+      unit='short',
+      width=null,
+    ):: self {}
+        + { fieldConfig+: { defaults+: { [if displayName != null then 'displayName']: displayName } } }
+        + { fieldConfig+: { defaults+: { [if max != null then 'max']: max } } }
+        + { fieldConfig+: { defaults+: { [if min != null then 'min']: min } } }
+        + { fieldConfig+: { defaults+: { thresholds+: { [if thresholdMode != null then 'mode']: thresholdMode } } } }
+        + { fieldConfig+: { defaults+: { [if noValue != null then 'noValue']: noValue } } }
+        + { fieldConfig+: { defaults+: { [if unit != null then 'unit']: unit } } }
+        + { fieldConfig+: { defaults+: { custom+: { [if width != null then 'width']: width } } } }
+    ,
+
+    setGridPos(
+      h=8,
+      w=12,
+      x=null,
+      y=null,
+    ):: self {}
+        + { gridPos+: { [if h != null then 'h']: h } }
+        + { gridPos+: { [if w != null then 'w']: w } }
+        + { gridPos+: { [if x != null then 'x']: x } }
+        + { gridPos+: { [if y != null then 'y']: y } }
+    ,
+
+    setOptions(
+      showHeader=true,
+    ):: self {}
+        + { options+: { [if showHeader != null then 'showHeader']: showHeader } }
+    ,
+
+
+    addDataLink(
+      targetBlank=true,
+      title=null,
+      url=null,
+    ):: self {}
+        + { fieldConfig+: { defaults+: { links+: [
+          {
+            [if targetBlank != null then 'targetBlank']: targetBlank,
+            [if title != null then 'title']: title,
+            [if url != null then 'url']: url,
+          },
+        ] } } },
+
+    addPanelLink(
+      targetBlank=true,
+      title=null,
+      url=null,
+    ):: self {}
+        + { links+: [
+          {
+            [if targetBlank != null then 'targetBlank']: targetBlank,
+            [if title != null then 'title']: title,
+            [if url != null then 'url']: url,
+          },
+        ] },
+
+    addMapping(
+      from=null,
+      id=null,
+      operator=null,
+      text=null,
+      to=null,
+      type=null,
+      value=null,
+    ):: self {}
+        + { fieldConfig+: { defaults+: { mappings+: [
+          {
+            [if from != null then 'from']: from,
+            [if id != null then 'id']: id,
+            [if operator != null then 'operator']: operator,
+            [if text != null then 'text']: text,
+            [if to != null then 'to']: to,
+            [if type != null then 'type']: type,
+            [if value != null then 'value']: value,
+          },
+        ] } } },
+
+    addOverride(
+      matcher=null,
+      properties=null,
+    ):: self {}
+        + { fieldConfig+: { overrides+: [
+          {
+            [if matcher != null then 'matcher']: matcher,
+            [if properties != null then 'properties']: properties,
+          },
+        ] } },
+
+    addThresholdStep(
+      color=null,
+      value=null,
+    ):: self {}
+        + { fieldConfig+: { defaults+: { thresholds+: { steps+: [
+          {
+            [if color != null then 'color']: color,
+            [if value != null then 'value']: value,
+          },
+        ] } } } },
+
+    addTarget(
+      target
+    ):: self {}
+        + { targets+: [
+          target,
+        ] },
+
+  },
+}