Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

asset: Add TerraformVariables asset to generated tfvar files #273

Merged
merged 4 commits into from
Sep 19, 2018

Conversation

yifan-gu
Copy link
Contributor

@yifan-gu yifan-gu commented Sep 18, 2018

Next steps are:

  • Use the ignition content directly in the tfvar file to launch cluster
  • Clean up and trim the terraform tfvar definition (type Cluster struct).

@openshift-ci-robot openshift-ci-robot added approved Indicates a PR has been approved by an approver from all required OWNERS files. size/XL Denotes a PR that changes 500-999 lines, ignoring generated files. labels Sep 18, 2018
}

var installConfig types.InstallConfig
if err := yaml.Unmarshal(state.Contents[0].Data, &installConfig); err != nil {
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Can't you use GetInstallConfig for instead of these last seven lines?

if !ok {
return nil, fmt.Errorf("failed to get the worker ignition state in the parent asset states")
}
workerIgn := string(state.Contents[0].Data)
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The file-retrieval through here could be more compact with something like:

contents := map[*asset.Asset][]string
for _, dependency := range []*asset.Asset{t.bootstrapIgnition, t.masterIgnition, t.workerIgnition}
  state, ok = parents[dependency]
  if !ok {
    return nil, fmt.Errorf("failed to find %T in parents", dependency)
  }
  for _, content := range state.Contents {
    contents[dependency] = append(contents[dependency], string(content.Data))
  }
}

cluster, err := config.ConvertInstallConfigToTFVar(installConfig, contents[t.bootstrapIgnition][0], contents[t.masterIgnition], contents[t.workerIgnition])

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

sounds good

masterIgns = append(masterIgns, string(st.Data))
}

state, ok = parents[t.workerIgnition]
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I'd thought worker ignition files would be obsolete since #119, although it looks like we still have some local code for them. Do you know who's going to be responsible for them long-term?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Talked with @abhinavdahiya , looks like we still need to pass the worker ignition to the operator.

// PlatformLibvirt is the platform for a cluster launched on libvirt.
PlatformLibvirt Platform = "libvirt"
// DefaultChannel is the default RHCOS channel for the cluster.
DefaultChannel = "tested"
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

These are not types, so I'd like to keep them out of pkg/types/.... DefaultChannel should probably live in pkg/rhcos, the ignition paths should probably live in pkg/asset/ignition, etc.

And I think this shift is a really good time to drop the old YAML-specific strings and just write the Terraform with the same JSON properties that we use for YAML, although that will mean updating the consuming Terraform code (e.g. with tectonic_cluster_cidr -> podCIDR.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@wking I'd like to do that in another separate PR, wdyt?

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I'd like to do that in another separate PR, wdyt?

Fine with me.

for _, st := range state.Contents {
masterIgns = append(masterIgns, string(st.Data))
}
for _, ign := range []asset.Asset{
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Looks like this belongs to an earlier commit.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

moved

@yifan-gu yifan-gu force-pushed the invoke_terraform branch 2 times, most recently from 7cac975 to 0ccfd78 Compare September 18, 2018 23:38
pkg/rhcos/ami.go Outdated
// DefaultChannel is the default RHCOS channel for the cluster.
DefaultChannel = "tested"
)

// AMI calculates a Red Hat CoreOS AMI.
func AMI(channel, region string) (ami string, err error) {
if channel != "tested" {
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

maybe DefaultChannel ?

@abhinavdahiya
Copy link
Contributor

abhinavdahiya commented Sep 19, 2018

/lgtm
/hold
@yifan-gu /hold cancel whenever its lgtm from @crawford / @wking as they previously had comments.

@openshift-ci-robot openshift-ci-robot added do-not-merge/hold Indicates that a PR should not merge because someone has issued a /hold command. lgtm Indicates that a PR is ready to be merged. labels Sep 19, 2018
@openshift-ci-robot openshift-ci-robot removed the lgtm Indicates that a PR is ready to be merged. label Sep 19, 2018
Copy link
Member

@wking wking left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

If it helps, my probably-stale-by-now attempt at InstallConfig -> Cluster conversion is here.

pkg/types/config/cluster.go Show resolved Hide resolved
Copy link
Member

@wking wking left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

A few nits, but I think the Count++ thing may be a bug that needs addressing before merge.

Networking: Networking{
Type: tectonicnetwork.NetworkType(cfg.Networking.Type),
ServiceCIDR: cfg.Networking.ServiceCIDR.String(),
PodCIDR: cfg.Networking.PodCIDR.String(),
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

These will panic if the CIDR is null, but I'm fine with punting a more robust IPNet.String() to future work.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

why CIDR will be null? they are not pointers.

VPCCIDRBlock: cfg.Platform.AWS.VPCCIDRBlock,
}

case cfg.Platform.Libvirt != nil:
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

nit: I'd prefer handling these with chained if else statements, since that feels more idiomatic to me than a switch for boolean-comparison cases.

And it would be nice to error out if both cfg.Platform.AWS and cfg.Platform.Libvirt were non-nil, but I'm fine punting that to follow-up validation work.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think switch makes it easier to read the condition then changed if else when the if else block is big.
But I'm fine to change it.

Copy link
Member

@wking wking Sep 19, 2018

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think switch makes it easier to read the condition then chained if else when the if else block is big.

Split anyghing that big out into helper functions? But whatever, I'm fine with any of these options ;).

return nil, fmt.Errorf("unrecognized platform %v", cfg.Platform)
}

for _, m := range cfg.Machines {
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think we want to revisit this approach soon, but am fine with this for now. Cross-linking #264.

cluster.Master.Count++
cluster.Master.NodePools = append(cluster.Master.NodePools, m.Name)
switch {
case m.Platform.AWS != nil:
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think if is more idiomatic here than a single-case switch.

}
}
case "worker":
cluster.Worker.Count++
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This is strange. I thought Worker.Count was the total number of workers (like here). In that case, I expect you want cluster.Worker.Count += nodePool.Count here (and similarly for master above). As you have it, cluster.Worker.Count is just going to come out to be len(cluster.Worker.NodePools).

@yifan-gu yifan-gu force-pushed the invoke_terraform branch 3 times, most recently from 8bdd3d8 to 3be0b54 Compare September 19, 2018 19:22
@wking
Copy link
Member

wking commented Sep 19, 2018

/lgtm
/hold cancel

@openshift-ci-robot openshift-ci-robot added lgtm Indicates that a PR is ready to be merged. and removed do-not-merge/hold Indicates that a PR should not merge because someone has issued a /hold command. labels Sep 19, 2018
@wking
Copy link
Member

wking commented Sep 19, 2018

/lgtm cancel

Looks like you need the Name from a23d3e6 (#279). Rebase?

@openshift-ci-robot openshift-ci-robot removed the lgtm Indicates that a PR is ready to be merged. label Sep 19, 2018

const (
tfvarFilename = "terraform.tfvar"
tfvarAssetName = "Terraform tfvar file"
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@crawford seems to prefer inline title case for these:

$ git grep -A1 ' Name(' origin/master -- pkg/asset/ | head -n11
origin/master:pkg/asset/ignition/bootstrap.go:func (a *bootstrap) Name() string {
origin/master:pkg/asset/ignition/bootstrap.go-	return "Bootstrap Ignition Config"
--
origin/master:pkg/asset/ignition/master.go:func (a *master) Name() string {
origin/master:pkg/asset/ignition/master.go-	return "Master Ignition Config(s)"
--
origin/master:pkg/asset/ignition/testasset_test.go:func (a *testAsset) Name() string {
origin/master:pkg/asset/ignition/testasset_test.go-	return "Test Asset"
--
origin/master:pkg/asset/ignition/worker.go:func (a *worker) Name() string {
origin/master:pkg/asset/ignition/worker.go-	return "Worker Ignition Config"

Can we follow that pattern with:

// Name returns the human-friendly name of the asset.
func (t *TerraformVariables) Name() string {
  return "Terraform Variables"
}

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Updated

Yifan Gu added 3 commits September 19, 2018 12:47
TerraformVariables implements asset.Asset interface to generate tfvar
files.
Add a function to convert the installconfig to old terraform tfvar
file that can be used by the old terraform invocation.
Add terraform tfvar asset into the stock so it can be retrieved
by the CLI.
Copy link
Member

@wking wking left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

/lgtm


const (
tfvarFilename = "terraform.tfvar"
tfvarAssetName = "Terraform Variables"
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I still don't think we need a constant for this (folks who need it should just use the Name() method). But we can adjust that later if we care.

@openshift-ci-robot openshift-ci-robot added the lgtm Indicates that a PR is ready to be merged. label Sep 19, 2018
@openshift-ci-robot
Copy link
Contributor

[APPROVALNOTIFIER] This PR is APPROVED

This pull-request has been approved by: abhinavdahiya, wking, yifan-gu

The full list of commands accepted by this bot can be found here.

The pull request process is described here

Needs approval from an approver in each of these files:
  • OWNERS [abhinavdahiya,wking,yifan-gu]

Approvers can indicate their approval by writing /approve in a comment
Approvers can cancel approval by writing /approve cancel in a comment

@openshift-merge-robot openshift-merge-robot merged commit 29e8376 into openshift:master Sep 19, 2018
@yifan-gu yifan-gu deleted the invoke_terraform branch September 19, 2018 22:00
wking added a commit to wking/openshift-installer that referenced this pull request Mar 6, 2019
…-release:4.0.0-0.7

Clayton pushed release:4.0.0-0.nightly-2019-03-04-234414 to
quay.io/openshift-release-dev/ocp-release:4.0.0-0.7.  Extracting the
associated RHCOS build:

  $ oc adm release info --pullspecs quay.io/openshift-release-dev/ocp-release:4.0.0-0.7 | grep machine-os-content
    machine-os-content                            quay.io/openshift-release-dev/ocp-v4.0-art-dev@sha256:399582f711226ab1a0e76d8928ec55436dea9f8dc60976c10790d308b9d92181
  $ oc image info quay.io/openshift-release-dev/ocp-v4.0-art-dev@sha256:399582f711226ab1a0e76d8928ec55436dea9f8dc60976c10790d308b9d92181 | grep version
              version=47.330

that's the same machine-os-content image referenced from 4.0.0-0.5,
which we used for installer v0.13.0, and 4.0.0-0.6, which we used for
installer v0.13.1.

Renaming OPENSHIFT_INSTALL_RELEASE_IMAGE_OVERRIDE gets us CI testing
of the pinned release despite openshift/release@60007df2 (Use
RELEASE_IMAGE_LATEST for CVO payload, 2018-10-03,
openshift/release#1793).

Also comment out regions which this particular RHCOS build wasn't
pushed to, leaving only:

  $ curl -s https://releases-rhcos.svc.ci.openshift.org/storage/releases/maipo/47.330/meta.json | jq -r '.amis[] | .name'
  ap-northeast-1
  ap-northeast-2
  ap-south-1
  ap-southeast-1
  ap-southeast-2
  ca-central-1
  eu-central-1
  eu-west-1
  eu-west-2
  eu-west-3
  sa-east-1
  us-east-1
  us-east-2
  us-west-1
  us-west-2

I'd initially expected to export the pinning environment variables in
release.sh, but I've put them in build.sh here because our continuous
integration tests use build.sh directly and don't go through
release.sh.

Using the slick, new change-log generator from [1], here's everything
that changed in the update payload:

  $ oc adm release info --changelog ~/.local/lib/go/src --changes-from quay.io/openshift-release-dev/ocp-release:4.0.0-0.6 quay.io/openshift-release-dev/ocp-release:4.0.0-0.7
  # 4.0.0-0.7

  Created: 2019-03-05 18:33:12 +0000 UTC
  Image Digest: `sha256:641c0e4f550af59ec20349187a31751ae5108270f13332d1771935520ebf34c1`
  Promoted from registry.svc.ci.openshift.org/ocp/release:4.0.0-0.nightly-2019-03-04-234414

  ## Changes from 4.0.0-0.6

  ### Components

  * Kubernetes 1.12.4

  ### New images

  * [must-gather](https://github.com/openshift/must-gather) git [8286a5dc](https://github.com/openshift/must-gather/commit/8286a5dc432e339dc79c75044424cd9c89dc634b) `sha256:8faf4b3739c952de448c69325c8c101193c0665bb149d3d2830afd2aca973413`

  ### Rebuilt images without code change

  * [cluster-config-operator](https://github.com/openshift/cluster-config-operator) git [aa1805e7](https://github.com/openshift/cluster-config-operator/commit/aa1805e73138deabbfa57772170f310e2f3097cd) `sha256:86bb159de280a6d9f81a69081090148cfad233db1b6f596a996097b56c0d6940`
  * [cluster-openshift-apiserver-operator](https://github.com/openshift/cluster-openshift-apiserver-operator) git [0a65fe40](https://github.com/openshift/cluster-openshift-apiserver-operator/commit/0a65fe40a74cfc6114fdaa30e2b2c24924509cda) `sha256:71f521d9cb0b1f03fe78938f90df7a0a9bdf5a45a31c65b168533e507644da34`
  * [cluster-storage-operator](https://github.com/openshift/cluster-storage-operator) git [b8502422](https://github.com/openshift/cluster-storage-operator/commit/b850242280b7ef2cf7631952229c0a438ec39e64) `sha256:7b9990d7f21ddd4d981701d7f1e326e3ae2041d9aafad53115a828a9f0fa8d0e`
  * [cluster-svcat-apiserver-operator](https://github.com/openshift/cluster-svcat-apiserver-operator) git [547648cb](https://github.com/openshift/cluster-svcat-apiserver-operator/commit/547648cb7b3f2a0d8f049f680c18ac66cd339b3f) `sha256:6edd77ad4ef48f3b29045acc0c9a57b01dcfb2c42b497ab857fa4eb27d8a841c`
  * [cluster-svcat-controller-manager-operator](https://github.com/openshift/cluster-svcat-controller-manager-operator) git [9261f420](https://github.com/openshift/cluster-svcat-controller-manager-operator/commit/9261f420a3db9556606c8ee0980a5e02a8f28d89) `sha256:9af8c72361b3a8bad34c44be6903e02c0f8a56b6ef4d459fce9c75ee38251093`
  * [configmap-reloader](https://github.com/openshift/configmap-reload) git [3c2f8572](https://github.com/openshift/configmap-reload/commit/3c2f85724078cbf7ffab56886ff32d677c386afe) `sha256:fc79d84dee4f2a998a105e94a1457eb5aabf85b1b9d1a6468aca6f8835c04408`
  * [container-networking-plugins-supported](https://github.com/openshift/ose-containernetworking-plugins) git [f6a58dce](https://github.com/openshift/ose-containernetworking-plugins/commit/f6a58dcec62ca740305a58a0a6b008c5e57b8943) `sha256:4a561991866a16773e965586f40a5684174229430e56ad25f15b851fe8e725ed`
  * [container-networking-plugins-unsupported](https://github.com/openshift/ose-containernetworking-plugins) git [f6a58dce](https://github.com/openshift/ose-containernetworking-plugins/commit/f6a58dcec62ca740305a58a0a6b008c5e57b8943) `sha256:9f720109ad203a0a0e44e0da14e2e82aefaa40e6d41accdefdc5ec2b3aed9153`
  * [coredns](https://github.com/openshift/coredns) git [fbcb8252](https://github.com/openshift/coredns/commit/fbcb8252a1bab3d32ecf2dd3307f798aacd0280e) `sha256:3fe76f173faaf16af80d4f865c377a4dc4db24d32c1bba4c6d3115e66a788861`
  * [docker-builder](https://github.com/openshift/builder) git [1a77d837](https://github.com/openshift/builder/commit/1a77d837d8d74d5dcb6f8afcadb082629b04883e) `sha256:7bcb847c457cf8bf5813e10e46058f34426560d0798ca1d80f8ee34e5fa5727b`
  * [docker-registry](https://github.com/openshift/image-registry) git [afcc7daa](https://github.com/openshift/image-registry/commit/afcc7daa5eeeb6a77754ae86decefade83314189) `sha256:a457ab8bc3be66c97ce6babd77e6f1c1eaff91477bd5442460f927db06a15e55`
  * [etcd](https://github.com/openshift/etcd) git [a0e62b48](https://github.com/openshift/etcd/commit/a0e62b48f8db8572c129fa3d3507c7ce118ab650) `sha256:6b65c7ff285c611ae17a91deff91c0585773507e7fcffec7353ea849a66bd018`
  * [k8s-prometheus-adapter](https://github.com/openshift/k8s-prometheus-adapter) git [815fa76b](https://github.com/openshift/k8s-prometheus-adapter/commit/815fa76bdbccfd5ee6da8f9fa45d039c4342dcdb) `sha256:4274c276fec8729ad17ff77d74188ade01e3695b3b2afa3b995081394b107857`
  * [kube-rbac-proxy](https://github.com/openshift/kube-rbac-proxy) git [3f271e09](https://github.com/openshift/kube-rbac-proxy/commit/3f271e0951f18276ec54e8eac936725d6d68e073) `sha256:61180c69f1cba674625bd6c85995f524bdbdde27b2d08ea7efcecd7d3427409b`
  * [kube-state-metrics](https://github.com/openshift/kube-state-metrics) git [2ab51c9f](https://github.com/openshift/kube-state-metrics/commit/2ab51c9f341799107ffbf7f373ab55254dc044d0) `sha256:fc9fa4ce84819c084737115feef722f49d05d43ca6f438edfbc21535e2479b2d`
  * [multus-cni](https://github.com/openshift/ose-multus-cni) git [61f9e088](https://github.com/openshift/ose-multus-cni/commit/61f9e0886370ea5f6093ed61d4cfefc6dadef582) `sha256:077b65e55d01d3abd114933c4e132a642a0315f83b93b05b185fa338ce09595a`
  * [operator-registry](https://github.com/operator-framework/operator-registry) git [0531400c](https://github.com/operator-framework/operator-registry/commit/0531400c661ef7088d71b86ff5f52892f9407a1a) `sha256:035af1a1f35a1f0d8159576460437d9d3529b4f64e0b142a8da59a5e4e056a68`
  * [pod](https://github.com/openshift/images) git [2f60da39](https://github.com/openshift/images/commit/2f60da39a9d2e5cc00293b8ec7ad559fcd32446a) `sha256:810ded5c25b9ec252dba6a2497d1eff9ad13a19cc3ac290ef8943b7d658803f2`
  * [prom-label-proxy](https://github.com/openshift/prom-label-proxy) git [46423f9d](https://github.com/openshift/prom-label-proxy/commit/46423f9d573c7d53f5727de1e2db095ae039da06) `sha256:da1d1556af41b9d71e24cdc7406e0671f3eca877a16e465e6e5bdd5ecfad6bd1`
  * [prometheus](https://github.com/openshift/prometheus) git [6e5fb5dc](https://github.com/openshift/prometheus/commit/6e5fb5dcb6a709bd20ea68cddc1abfcceb8a487d) `sha256:5625206aa10f98cb2306bb37621cc3a6637ef69a43713fb4f9a34ebff1d4b3ff`
  * [prometheus-alertmanager](https://github.com/openshift/prometheus-alertmanager) git [4617d550](https://github.com/openshift/prometheus-alertmanager/commit/4617d5502332dc41c9c885cc12ecde5069191f73) `sha256:414275a7a91f92951cae01928234aed2e0d4670fb911f0d1f189a2ee0a821c9e`
  * [prometheus-config-reloader](https://github.com/openshift/prometheus-operator) git [f8a0aa17](https://github.com/openshift/prometheus-operator/commit/f8a0aa170bf81ef70e16875053573a037461042d) `sha256:26c197ba809ac3cd18a79c1dde21812e97e6957e0dfc93ac6f4c50947f3dfe99`
  * [prometheus-node-exporter](https://github.com/openshift/node_exporter) git [f248b582](https://github.com/openshift/node_exporter/commit/f248b582878226c8a8cd650223cf981cc556eb44) `sha256:8a107dd61b46e2fd0b71e1e6c291f97ccd634fd4c759f46d9f4403c3a6f4496a`
  * [prometheus-operator](https://github.com/openshift/prometheus-operator) git [f8a0aa17](https://github.com/openshift/prometheus-operator/commit/f8a0aa170bf81ef70e16875053573a037461042d) `sha256:1d0dd92b072c381c0471b1b8ed6f3bc5eded95d747c87b4bbe659c1396ad63ed`
  * [service-catalog](https://github.com/openshift/service-catalog) git [b24ffd6f](https://github.com/openshift/service-catalog/commit/b24ffd6f826fe094a49afc04a5d62ab65490bb37) `sha256:03b053176eacf0e847d75c5ce8137455faa4c7a52623381f723de1fa87a36761`
  * [service-serving-cert-signer](https://github.com/openshift/service-serving-cert-signer) git [30924216](https://github.com/openshift/service-serving-cert-signer/commit/309242162ed5bcf9398fca0ba9418244ec7c6808) `sha256:032cf8f0fd7ac91f58ee670244892812cd024d8d7eee923266b9acf97ee21ac4`

  ### [aws-machine-controllers](https://github.com/openshift/cluster-api-provider-aws)

  * deps: switch cluster-api dependency to use master branch [#169](https://github.com/openshift/cluster-api-provider-aws/pull/169)
  * E2e ginkgo [#170](https://github.com/openshift/cluster-api-provider-aws/pull/170)
  * Update list of owners [#171](https://github.com/openshift/cluster-api-provider-aws/pull/171)
  * [Full changelog](https://github.com/openshift/cluster-api-provider-aws/compare/c0c3b9e0e8e626d74360ecb806b06c3b09df27bb...17d5aacdeb2df8898b20286970ace7d42f0c376a)

  ### [cli, deployer, hyperkube, hypershift, node, tests](https://github.com/openshift/ose)

  * update external examples [#22029](https://github.com/openshift/ose/pull/22029)
  * UPSTREAM: <carry>: openapi: half encoding costs [#22056](https://github.com/openshift/ose/pull/22056)
  * UPSTREAM: 74416: apiserver: add --minimal-shutdown-duration to delay until endpoint convergence [#22151](https://github.com/openshift/ose/pull/22151)
  * UPSTREAM: 74617: make audit metadata work for custom resources [#22157](https://github.com/openshift/ose/pull/22157)
  * Poll in bootstrap user e2e test [#22070](https://github.com/openshift/ose/pull/22070)
  * If the git log is empty don't error out from `release info --changelog` [#22163](https://github.com/openshift/ose/pull/22163)
  * UPSTREAM: 0000: retry on discovery errors in crd-discovery-available post-start hook [#22168](https://github.com/openshift/ose/pull/22168)
  * UPSTREAM: 00000: wait for CRD discovery to be successful once before … [#22178](https://github.com/openshift/ose/pull/22178)
  * add some advice to 'oc debug' for debugging nodes [#22109](https://github.com/openshift/ose/pull/22109)
  * Fix deads2k typo in features OWNERS [#22128](https://github.com/openshift/ose/pull/22128)
  * Replace all kubectl in oc adm top pod/node examples [#22152](https://github.com/openshift/ose/pull/22152) [rhbz#1470006](https://bugzilla.redhat.com/show_bug.cgi?id=1470006)
  * [4.0] UPSTREAM: 74306: Fix scanning of failed targets [#22136](https://github.com/openshift/ose/pull/22136)
  * Add openshift-integrated-oauth-server command [#21987](https://github.com/openshift/ose/pull/21987)
  * UPSTREAM: 74668: kube-apiserver: don't create endpoints before being ready [#22181](https://github.com/openshift/ose/pull/22181)
  * apiextensions: openapi ObjectMeta/TypeMeta schema only if validation spec is given [#22193](https://github.com/openshift/ose/pull/22193)
  * [4.0] UPSTREAM: 74524: Don't fail if iface is being used by iSCSI session [#22176](https://github.com/openshift/ose/pull/22176)
  * UPSTREAM: 74636: Remove reflector metrics as they currently cause a memory leak [#22180](https://github.com/openshift/ose/pull/22180)
  * apiextensions-apiserver: fix empty APIResource group+version handling in wait logic [#22188](https://github.com/openshift/ose/pull/22188)
  * Ensure clone works without `-C` for release extraction [#22184](https://github.com/openshift/ose/pull/22184)
  * Test conformance from 1.12 for Kube [#21995](https://github.com/openshift/ose/pull/21995)
  * [d42ad916](https://github.com/openshift/ose/commit/d42ad916)
  * [Full changelog](https://github.com/openshift/ose/compare/0cbcfc5afeab12a1b5b3f801eb247ff023e42b67...e268aada53a27b7cba51e4267d035dad207a1d8a)

  ### [cloud-credential-operator](https://github.com/openshift/cloud-credential-operator)

  * pkg/controller/utils: Fix "reutrn" -> "return" comment typo [#36](https://github.com/openshift/cloud-credential-operator/pull/36)
  * aws: include operator version in UserAgent for AWS API calls [#34](https://github.com/openshift/cloud-credential-operator/pull/34)
  * [Full changelog](https://github.com/openshift/cloud-credential-operator/compare/01bbf372a2c83bd4b1c9a433cba15808ba1e5e92...97e00568622e2a82cde1e964be7ea7c37fe85b4f)

  ### [cluster-authentication-operator](https://github.com/openshift/cluster-authentication-operator)

  * fix template synced secret names [#85](https://github.com/openshift/cluster-authentication-operator/pull/85)
  * Move to OsinServerConfig [#79](https://github.com/openshift/cluster-authentication-operator/pull/79)
  * Move to a passthrough route to support mTLS [#83](https://github.com/openshift/cluster-authentication-operator/pull/83)
  * [Full changelog](https://github.com/openshift/cluster-authentication-operator/compare/35879ec061749de8926fa9a14dbd687e4e052048...88650bd64069ed79a411098b481ac2416526ce0e)

  ### [cluster-autoscaler](https://github.com/openshift/kubernetes-autoscaler)

  * E2e ginkgo [#43](https://github.com/openshift/kubernetes-autoscaler/pull/43)
  * UPSTREAM: <carry>: openshiftmachineapi: remove unused fields [#44](https://github.com/openshift/kubernetes-autoscaler/pull/44)
  * [Full changelog](https://github.com/openshift/kubernetes-autoscaler/compare/d8a4a30478e04c8e97a693f99fb3ad802115171c...e1a6a0960a100132abc5f8398ff73dbb0f45ae28)

  ### [cluster-autoscaler-operator](https://github.com/openshift/cluster-autoscaler-operator)

  * Remove resource limits in operator deployment [#58](https://github.com/openshift/cluster-autoscaler-operator/pull/58)
  * Override default CAO image [#59](https://github.com/openshift/cluster-autoscaler-operator/pull/59)
  * Add tests and change StatusReporter.client to osconfig.Interface [#56](https://github.com/openshift/cluster-autoscaler-operator/pull/56)
  * Add cluster-critical priority to autoscaler-operator [#57](https://github.com/openshift/cluster-autoscaler-operator/pull/57)
  * Vendor ginkgo tests [#60](https://github.com/openshift/cluster-autoscaler-operator/pull/60)
  * Update list of owners [#64](https://github.com/openshift/cluster-autoscaler-operator/pull/64)
  * Add unit tests for Apply [#63](https://github.com/openshift/cluster-autoscaler-operator/pull/63)
  * [Full changelog](https://github.com/openshift/cluster-autoscaler-operator/compare/73c46659d0e2c0ac03e6e207d52ff0c025b04786...0c2284a7a7cff0e123ace8d5e43337e4cc9739e9)

  ### [cluster-bootstrap](https://github.com/openshift/cluster-bootstrap)

  * Add --tear-down-early, defaulting to true [#19](https://github.com/openshift/cluster-bootstrap/pull/19)
  * [Full changelog](https://github.com/openshift/cluster-bootstrap/compare/05a5c8e68f409baccdb421b9f80ce0e8841172bd...90a38fd8d9dc0b0a61214f079fd4734b034bae0c)

  ### [cluster-dns-operator](https://github.com/openshift/cluster-dns-operator)

  * status: report cluster operator version from payload [#78](https://github.com/openshift/cluster-dns-operator/pull/78)
  * [Full changelog](https://github.com/openshift/cluster-dns-operator/compare/ffb04ae9e56023812e55e35ac6713568ece0fbac...e4aa0a50f865e8399aeeccaf8c24f8d891cd67c2)

  ### [cluster-image-registry-operator](https://github.com/openshift/cluster-image-registry-operator)

  * disable kube/openshift api server operators before running tests [#222](https://github.com/openshift/cluster-image-registry-operator/pull/222)
  * Return error that happened [#224](https://github.com/openshift/cluster-image-registry-operator/pull/224)
  * test/e2e: Do not wait for PVC to change its status from "Pending" to something else [#226](https://github.com/openshift/cluster-image-registry-operator/pull/226)
  * [Full changelog](https://github.com/openshift/cluster-image-registry-operator/compare/80600487ebb150b67f6356c7e521953dbe94abbf...689aa65b90644aead5b579acce2725a08bd70f93)

  ### [cluster-ingress-operator](https://github.com/openshift/cluster-ingress-operator)

  * controller/certificate: move cert generation to cert controller [#141](https://github.com/openshift/cluster-ingress-operator/pull/141)
  * controller/certificate: relocate CA publishing [#142](https://github.com/openshift/cluster-ingress-operator/pull/142)
  * Publish global secret with default certificates and keys [#139](https://github.com/openshift/cluster-ingress-operator/pull/139)
  * Simplify ClusterOperatorStatus comparison [#148](https://github.com/openshift/cluster-ingress-operator/pull/148)
  * Add function for name of in-use default certificate [#149](https://github.com/openshift/cluster-ingress-operator/pull/149)
  * [Full changelog](https://github.com/openshift/cluster-ingress-operator/compare/09d14db8edbc265299bd70095136359a45dc8b55...e53dfea77b35656f105c41d5c1a3bcb2bc6fbcba)

  ### [cluster-kube-apiserver-operator](https://github.com/openshift/cluster-kube-apiserver-operator)

  * do not default the internal registry hostname to anything [#311](https://github.com/openshift/cluster-kube-apiserver-operator/pull/311)
  * switch to pull if not present [#313](https://github.com/openshift/cluster-kube-apiserver-operator/pull/313)
  * library-go: fix retry logic when getting installer pod self-reference [#310](https://github.com/openshift/cluster-kube-apiserver-operator/pull/310)
  * bump(library-go): improve logging of what causes a static pod rollout [#315](https://github.com/openshift/cluster-kube-apiserver-operator/pull/315)
  * [Full changelog](https://github.com/openshift/cluster-kube-apiserver-operator/compare/fa75c058db5e9c9de6b0a4674029f869a6062555...4c34fbfd2b4382e366d45f5e9acd07fb8da1ee9d)

  ### [cluster-kube-controller-manager-operator](https://github.com/openshift/cluster-kube-controller-manager-operator)

  * library-go: fix retry logic when getting installer pod self-reference [#185](https://github.com/openshift/cluster-kube-controller-manager-operator/pull/185)
  * bump(library-go): improve logging of what causes a static pod rollout [#187](https://github.com/openshift/cluster-kube-controller-manager-operator/pull/187)
  * [Full changelog](https://github.com/openshift/cluster-kube-controller-manager-operator/compare/53ff6d862bbd258b8e6ee1bc7016ec36a333ef1a...52a2f710ae90f0624c47040bf6d9b0ad55538de0)

  ### [cluster-kube-scheduler-operator](https://github.com/openshift/cluster-kube-scheduler-operator)

  * bump to get versions, status, upgradeable, servicemonitors, installer pod fixes [#66](https://github.com/openshift/cluster-kube-scheduler-operator/pull/66)
  * Change kubescheduler type name from instance to cluster [#68](https://github.com/openshift/cluster-kube-scheduler-operator/pull/68)
  * switch to pull if not present from always [#69](https://github.com/openshift/cluster-kube-scheduler-operator/pull/69)
  * [Full changelog](https://github.com/openshift/cluster-kube-scheduler-operator/compare/7066c963cb2b35227767f19f565f0a3816a54a01...c68e8b1af27033dec9ca9cd36c831b0796cef798)

  ### [cluster-machine-approver](https://github.com/openshift/cluster-machine-approver)

  * Approve CSRs based on machine status [#10](https://github.com/openshift/cluster-machine-approver/pull/10)
  * [Full changelog](https://github.com/openshift/cluster-machine-approver/compare/2fbc6a6b2b4dd37e953aeb8331dc4edc17ead993...c4ba3024437a348a03ee1459cdf9823d7c6de4a8)

  ### [cluster-monitoring-operator](https://github.com/openshift/cluster-monitoring-operator)

  * jsonnet: programmatically remove limits [#273](https://github.com/openshift/cluster-monitoring-operator/pull/273)
  * pkg/tasks/prometheus: update kubelet serving CA if it changed [#271](https://github.com/openshift/cluster-monitoring-operator/pull/271)
  * jsonnet: No shared tooltip and use node-exporter metrics in adapter [#272](https://github.com/openshift/cluster-monitoring-operator/pull/272)
  * *: Enable etcd monitoring by default [#239](https://github.com/openshift/cluster-monitoring-operator/pull/239)
  * pkg/tasks: create service monitor at the end of each tasks. [#274](https://github.com/openshift/cluster-monitoring-operator/pull/274)
  * assets: Drop accidental and high cardinality metrics [#276](https://github.com/openshift/cluster-monitoring-operator/pull/276)
  * hack: Adapt generate etcd secret script to 4.0 [#277](https://github.com/openshift/cluster-monitoring-operator/pull/277)
  * clusteroperator: Report the appropriate injected status version [#278](https://github.com/openshift/cluster-monitoring-operator/pull/278)
  * [Full changelog](https://github.com/openshift/cluster-monitoring-operator/compare/3609aea4fc2defca4cfef8f2e46677d9f45946ad...25fd008f1fb34cc27332fcc59f6821ef01c306a6)

  ### [cluster-network-operator](https://github.com/openshift/cluster-network-operator)

  * HACKING: add steps for how to build the node image. [#107](https://github.com/openshift/cluster-network-operator/pull/107)
  * [Full changelog](https://github.com/openshift/cluster-network-operator/compare/15204e63ace4000afa531193af95894371d4cfe0...b13c79c1ae6290bbc472c0ac260855e26d71dfd3)

  ### [cluster-node-tuned](https://github.com/openshift/openshift-tuned)

  * Lower the number of times tuned needs to be reloaded. [#15](https://github.com/openshift/openshift-tuned/pull/15)
  * [Full changelog](https://github.com/openshift/openshift-tuned/compare/278ee72d9c6d5302c00ee83356d0574c63c26e3d...b580cb6f52a0e352aebbe0e368d5ec020230c532)

  ### [cluster-node-tuning-operator](https://github.com/openshift/cluster-node-tuning-operator)

  * Retry loop for creating Tuned CR. [#42](https://github.com/openshift/cluster-node-tuning-operator/pull/42)
  * status: report cluster operator version from payload [#43](https://github.com/openshift/cluster-node-tuning-operator/pull/43)
  * [Full changelog](https://github.com/openshift/cluster-node-tuning-operator/compare/b5c14debb9963f2239270d61f4b05719ca7d2df0...900d59d3aa7a59aa31318bc25efc5df1e994e4b9)

  ### [cluster-openshift-controller-manager-operator](https://github.com/openshift/cluster-openshift-controller-manager-operator)

  * bump(*): pick up https://github.com/openshift/library-go/pull/284 [#78](https://github.com/openshift/cluster-openshift-controller-manager-operator/pull/78)
  * Drop etcd metrics [#80](https://github.com/openshift/cluster-openshift-controller-manager-operator/pull/80)
  * [Full changelog](https://github.com/openshift/cluster-openshift-controller-manager-operator/compare/3f79b51b7a524109e6803dd0f772d4dbf3b62c61...6656fd894295a9924c6bf5de244586705508e595)

  ### [cluster-samples-operator](https://github.com/openshift/cluster-samples-operator)

  * Goto tbr [#111](https://github.com/openshift/cluster-samples-operator/pull/111)
  * Cvo tweaks [#115](https://github.com/openshift/cluster-samples-operator/pull/115)
  * Add must-gather image reference and ImageStream [#116](https://github.com/openshift/cluster-samples-operator/pull/116)
  * [Full changelog](https://github.com/openshift/cluster-samples-operator/compare/f00132453a0b88b8393a27b16debc8eb89f80c38...204cf2ba6a3a12d2344f69d19f539ebc31f39683)

  ### [cluster-version-operator](https://github.com/openshift/cluster-version-operator)

  * pkg/cvo: report actual metrics on Complete() [#124](https://github.com/openshift/cluster-version-operator/pull/124)
  * [Full changelog](https://github.com/openshift/cluster-version-operator/compare/70c0232ed95e4b0e0cd78efdcdec6f2410f592bb...bcf8bf290bc7d0090769b4722831dbb157b75d01)

  ### [console](https://github.com/openshift/console)

  * Only store swagger.json definitions [#1226](https://github.com/openshift/console/pull/1226)
  * Improve console-e2e test reliability in CI [#1236](https://github.com/openshift/console/pull/1236)
  * Edit secret page returns to previous page when cancelling [#1196](https://github.com/openshift/console/pull/1196)
  * Adjust modal height at landscape orientation so that buttons aren't beneath viewport on ios. [#1229](https://github.com/openshift/console/pull/1229)
  * Update default operator image [#1198](https://github.com/openshift/console/pull/1198)
  * Updated Resource Quota dashboard layout [#1222](https://github.com/openshift/console/pull/1222)
  * Add missing OpenShift Dedicated option to getProductName [#1232](https://github.com/openshift/console/pull/1232)
  * Fix bug where cluster name is incorrect in kubeconfig created from se… [#1195](https://github.com/openshift/console/pull/1195)
  * Align line-height for copy-to-clipboard to match height of copy button [#1234](https://github.com/openshift/console/pull/1234)
  * Apply table--layout-fixed to images table... [#1212](https://github.com/openshift/console/pull/1212)
  * Fix runtime error on machine set and machine deployment details pages [#1187](https://github.com/openshift/console/pull/1187) [rhbz#1684217](https://bugzilla.redhat.com/show_bug.cgi?id=1684217)
  * Update README for OpenShift 4.0 and CI changes [#1219](https://github.com/openshift/console/pull/1219)
  * Change dropdown units for consistency on PVC form [#1228](https://github.com/openshift/console/pull/1228)
  * Show community operators, warn on details [#1178](https://github.com/openshift/console/pull/1178)
  * [Full changelog](https://github.com/openshift/console/compare/d10fb8b637562015a0c704e72855e2d0c318783c...24942e86dd5bef0b17c1e33bfcd386b450c49b19)

  ### [console-operator](https://github.com/openshift/console-operator)

  * Restrict console OAuthClient redirect to `/auth/callback` path [#161](https://github.com/openshift/console-operator/pull/161)
  * bump deps [#163](https://github.com/openshift/console-operator/pull/163)
  * Validate URLs from the CR file and additional unit tests for ocp tag [#152](https://github.com/openshift/console-operator/pull/152)
  * Validate properties in CRD [#165](https://github.com/openshift/console-operator/pull/165)
  * Change unit test to use cleaner error output [#160](https://github.com/openshift/console-operator/pull/160)
  * [Full changelog](https://github.com/openshift/console-operator/compare/32ed7c037c4037d4cb34c6abeeebaaa121748a2e...8665600274308fbda0f66e7ed8a0e5cc5c0bb7d9)

  ### [grafana](https://github.com/openshift/grafana)

  * bus: support multiple dispatch in one transaction [#12203](https://github.com/openshift/grafana/pull/12203)
  * Set current org when adding/removing user to org [#12263](https://github.com/openshift/grafana/pull/12263)
  * Copy correct annotation props when creating a snapshot [#12317](https://github.com/openshift/grafana/pull/12317)
  * #11607 Cleanup time of temporary files is now configurable [#12274](https://github.com/openshift/grafana/pull/12274)
  * ldap: allow use of DN in group_search_filter_user_attribute and member_of [#10970](https://github.com/openshift/grafana/pull/10970)
  * expose session and transaction helpers to other services [#12322](https://github.com/openshift/grafana/pull/12322)
  * Fix regressions after save modal changes [#12350](https://github.com/openshift/grafana/pull/12350)
  * Fix dashboard drop down links [#12345](https://github.com/openshift/grafana/pull/12345)
  * graph: fix legend decimals precision calculation [#12123](https://github.com/openshift/grafana/pull/12123)
  * Make sure to process panels in collapsed rows when exporting dashboard [#12346](https://github.com/openshift/grafana/pull/12346)
  * build: fix signing of multiple rpm packages [#12363](https://github.com/openshift/grafana/pull/12363)
  * Fix error in InfluxDB query [#12325](https://github.com/openshift/grafana/pull/12325)
  * Conditionally select a field to return in ResponseParser for InfluxDB [#12018](https://github.com/openshift/grafana/pull/12018)
  * Pass configured/auth headers to a Datasource. [#11643](https://github.com/openshift/grafana/pull/11643)
  * Karma to Jest: history_ctrl [#12367](https://github.com/openshift/grafana/pull/12367)
  * fix "Cloudwatch panel does not allow arbitrary variable values in query" [#11990](https://github.com/openshift/grafana/pull/11990)
  * Return a 404 when deleting a datasource through the API if it doesn't… [#12387](https://github.com/openshift/grafana/pull/12387)
  * Set $rootScope in DatasourceSrv [#12383](https://github.com/openshift/grafana/pull/12383)
  * Fix selecting current dashboard from search does not reload dashboard [#12392](https://github.com/openshift/grafana/pull/12392)
  * enhance error message if phantomjs executable is not found [#12198](https://github.com/openshift/grafana/pull/12198)
  * routing: allows routes to be added to existing groups [#12396](https://github.com/openshift/grafana/pull/12396)
  * Fix typo [#12407](https://github.com/openshift/grafana/pull/12407)
  * Set correct text in drop down when variable is present in url [#12395](https://github.com/openshift/grafana/pull/12395)
  * docs: update installation instructions [#12399](https://github.com/openshift/grafana/pull/12399)
  * login: fix layout issues [#12412](https://github.com/openshift/grafana/pull/12412)
  * Fix footer CSS issue [#12441](https://github.com/openshift/grafana/pull/12441)
  * Make colorization of prefix and postfix optional in singlestat [#11892](https://github.com/openshift/grafana/pull/11892)
  * Revert "auth proxy: use real ip when validating white listed ip's" [#12444](https://github.com/openshift/grafana/pull/12444)
  * Fix: Log close (ie flush) was done too early, before final shutdown log [#12439](https://github.com/openshift/grafana/pull/12439)
  * Fix HTTP-API admin doc [#12502](https://github.com/openshift/grafana/pull/12502)
  * Karma to Jest: elasticsearch datasource [#12493](https://github.com/openshift/grafana/pull/12493)
  * [c35c1d72](https://github.com/openshift/grafana/commit/c35c1d72)
  * [52b475f9](https://github.com/openshift/grafana/commit/52b475f9)
  * [7f166668](https://github.com/openshift/grafana/commit/7f166668)
  * [d6631222](https://github.com/openshift/grafana/commit/d6631222)
  * [84af0332](https://github.com/openshift/grafana/commit/84af0332)
  * [afee29be](https://github.com/openshift/grafana/commit/afee29be)
  * mysql,mssql: improve $__timeFilter, $__timeFrom, $__timeTo macros
 [#12402](https://github.com/openshift/grafana/pull/12402)
  * Fix links not updating after changing variables [#12518](https://github.com/openshift/grafana/pull/12518)
  * Prometheus heatmap: fix unhandled error when some points are missing [#12511](https://github.com/openshift/grafana/pull/12511)
  * Fix datasource sorting with template variables [#12521](https://github.com/openshift/grafana/pull/12521)
  * Query field refactorings to support external plugins [#12284](https://github.com/openshift/grafana/pull/12284)
  * Karma to Jest: 3 data sources [#12496](https://github.com/openshift/grafana/pull/12496)
  * Fix freezing browser when loading plugin [#12585](https://github.com/openshift/grafana/pull/12585)
  * Prevent scroll on focus for iframe [#12586](https://github.com/openshift/grafana/pull/12586)
  * Explore Datasource selector [#12596](https://github.com/openshift/grafana/pull/12596)
  * [f0508aa5](https://github.com/openshift/grafana/commit/f0508aa5)
  * Adding eval_data to alerts query results [#12624](https://github.com/openshift/grafana/pull/12624)
  * Explore: calculate query interval based on available width [#12634](https://github.com/openshift/grafana/pull/12634)
  * Dont parse empty explore state from url [#12630](https://github.com/openshift/grafana/pull/12630)
  * Use url params for explore state [#12631](https://github.com/openshift/grafana/pull/12631)
  * [660dc09f](https://github.com/openshift/grafana/commit/660dc09f)
  * [c63f1425](https://github.com/openshift/grafana/commit/c63f1425)
  * [3fa2ec07](https://github.com/openshift/grafana/commit/3fa2ec07)
  * [29291f88](https://github.com/openshift/grafana/commit/29291f88)
  * Make prometheus value formatting more robust [#12617](https://github.com/openshift/grafana/pull/12617)
  * CloudWatch GetMetricData support [#11624](https://github.com/openshift/grafana/pull/11624)
  * [608303f4](https://github.com/openshift/grafana/commit/608303f4)
  * migrated jquery.flot.events to ts [#11469](https://github.com/openshift/grafana/pull/11469)
  * Id validation of CloudWatch GetMetricData [#12690](https://github.com/openshift/grafana/pull/12690)
  * Add Polish złoty to currency formatters [#12691](https://github.com/openshift/grafana/pull/12691)
  * Interval and range in query template variable [#12597](https://github.com/openshift/grafana/pull/12597)
  * Karma to Jest: graph_ctrl [#12692](https://github.com/openshift/grafana/pull/12692)
  * Datasource for Grafana logging platform [#12675](https://github.com/openshift/grafana/pull/12675)
  * postgres; escape ssl mode parameter [#12678](https://github.com/openshift/grafana/pull/12678)
  * CloudWatch backend return 400 if user input error [#12698](https://github.com/openshift/grafana/pull/12698)
  * docs: mentation that config changes requires restart. [#12699](https://github.com/openshift/grafana/pull/12699)
  * Karma to Jest: influx query_ctrl [#12702](https://github.com/openshift/grafana/pull/12702)
  * Karma to Jest: completer [#12704](https://github.com/openshift/grafana/pull/12704)
  * Karma to Jest: graphite query_ctrl [#12706](https://github.com/openshift/grafana/pull/12706)
  * fix failing test due to time diff issues [#12707](https://github.com/openshift/grafana/pull/12707)
  * fix invalid reference [#12709](https://github.com/openshift/grafana/pull/12709)
  * adjust table header contrast for the light theme [#12672](https://github.com/openshift/grafana/pull/12672)
  * Docs: Prometheus template query variables [#12693](https://github.com/openshift/grafana/pull/12693)
  * Karma to Jest: variable_srv_init [#12723](https://github.com/openshift/grafana/pull/12723)
  * Add tslib to TS compiler [#12718](https://github.com/openshift/grafana/pull/12718)
  * elasticsearch: fix index patterns [#12734](https://github.com/openshift/grafana/pull/12734)
  * built a component for delete button in tables [#12665](https://github.com/openshift/grafana/pull/12665)
  * SQL datasources - backend refactor [#12730](https://github.com/openshift/grafana/pull/12730)
  * removed unused class from the deletebutton pr [#12740](https://github.com/openshift/grafana/pull/12740)
  * Karma to Jest: singlestat [#12737](https://github.com/openshift/grafana/pull/12737)
  * Karma to Jest: backend_srv [#12742](https://github.com/openshift/grafana/pull/12742)
  * Karma to Jest: heatmap_ctrl [#12745](https://github.com/openshift/grafana/pull/12745)
  * Use metric column as prefix when returning multiple value columns [#12679](https://github.com/openshift/grafana/pull/12679)
  * change units to include characters for power of 2 and 3 [#12744](https://github.com/openshift/grafana/pull/12744)
  * Adding Cloudwatch AWS/AppSync metrics and dimensions [#12301](https://github.com/openshift/grafana/pull/12301)
  * add AWS/DX metrics and dimension to cloudwatch [#12762](https://github.com/openshift/grafana/pull/12762)
  * Added BurstBalance metric to list of AWS RDS metrics. [#12561](https://github.com/openshift/grafana/pull/12561)
  * Karma to Jest: prometheus datasource [#12771](https://github.com/openshift/grafana/pull/12771)
  * fix custom variable quoting in sql* query interpolations [#12791](https://github.com/openshift/grafana/pull/12791)
  * Add new Redshift metrics and dimensions for Cloudwatch datasource [#12063](https://github.com/openshift/grafana/pull/12063)
  * table link color fix [#12774](https://github.com/openshift/grafana/pull/12774)
  * remove alias from postgres $__timeGroup macro
 [#12760](https://github.com/openshift/grafana/pull/12760)
  * Add auto_assign_org_id to defaults.ini [#12802](https://github.com/openshift/grafana/pull/12802)
  * Karma to Jest: remove tests [#12808](https://github.com/openshift/grafana/pull/12808)
  * Karma to Jest: OpenTSDB datasource [#12819](https://github.com/openshift/grafana/pull/12819)
  * Karma to Jest: variable_srv [#12787](https://github.com/openshift/grafana/pull/12787)
  * Merges the Grafana docker build into the main repository. [#12798](https://github.com/openshift/grafana/pull/12798)
  * unix socket docs [#12823](https://github.com/openshift/grafana/pull/12823)
  * Mssql: add logo [#12746](https://github.com/openshift/grafana/pull/12746)
  * Explore: Add history to query fields [#12799](https://github.com/openshift/grafana/pull/12799)
  * Explore: show message if queries did not return data [#12813](https://github.com/openshift/grafana/pull/12813)
  * WIP: Fit panels to screen height [#12796](https://github.com/openshift/grafana/pull/12796)
  * Explore: prometheus query helpers [#12821](https://github.com/openshift/grafana/pull/12821)
  * fix missing * [#12835](https://github.com/openshift/grafana/pull/12835)
  * Fix issue with secret fields after updating datasource [#12834](https://github.com/openshift/grafana/pull/12834)
  * Fixing bug in url query reader and added test cases [#12815](https://github.com/openshift/grafana/pull/12815)
  * Add fill mode to fill in previously seen value when point is missing to SQL datasources [#12753](https://github.com/openshift/grafana/pull/12753)
  * Explore: expand recording rules for queries [#12846](https://github.com/openshift/grafana/pull/12846)
  * Delete button for team members page [#12856](https://github.com/openshift/grafana/pull/12856)
  * Add example OR search_filter to docs [#12848](https://github.com/openshift/grafana/pull/12848)
  * Convert URL-like text to links in plugins readme [#12843](https://github.com/openshift/grafana/pull/12843)
  * Refactor setting fillmode [#12880](https://github.com/openshift/grafana/pull/12880)
  * show teams on profile [#12838](https://github.com/openshift/grafana/pull/12838)
  * Support client certificates for LDAP servers [#12807](https://github.com/openshift/grafana/pull/12807)
  * Use uid when linking to dashboards internally in a dashboard [#12844](https://github.com/openshift/grafana/pull/12844)
  * Support timeFilter in query templating for InfluxDB [#12598](https://github.com/openshift/grafana/pull/12598)
  * Karma to Jest: share_modal_ctrl [#12809](https://github.com/openshift/grafana/pull/12809)
  * WIP Karma to Jest: heatmap renderer (refactor) [#12897](https://github.com/openshift/grafana/pull/12897)
  * [postgres] add timescaledb option to postgres datasource [#12680](https://github.com/openshift/grafana/pull/12680)
  * Karma to Jest: rename and cleanup [#12914](https://github.com/openshift/grafana/pull/12914)
  * GitLab authentication backend [#11314](https://github.com/openshift/grafana/pull/11314)
  * Fix typo [#12879](https://github.com/openshift/grafana/pull/12879)
  * Set User-Agent header in datasource proxied requests [#12909](https://github.com/openshift/grafana/pull/12909)
  * Doc - fix broken link [#12947](https://github.com/openshift/grafana/pull/12947)
  * add $__unixEpochGroup and $__unixEpochGroupAlias to sql datasources [#12891](https://github.com/openshift/grafana/pull/12891)
  * Login button issue in light theme [#12955](https://github.com/openshift/grafana/pull/12955)
  * Provisioning: Should allow one default datasource per organisation [#12921](https://github.com/openshift/grafana/pull/12921)
  * dsproxy: interpolate route url [#12974](https://github.com/openshift/grafana/pull/12974)
  * Explore: Fix initial state in split view [#12873](https://github.com/openshift/grafana/pull/12873)
  * [8f875951](https://github.com/openshift/grafana/commit/8f875951)
  * Explore: Filter out existing labels in label suggestions [#12874](https://github.com/openshift/grafana/pull/12874)
  * [75db4d8e](https://github.com/openshift/grafana/commit/75db4d8e)
  * Explore: still show rate hint if query is complex [#12876](https://github.com/openshift/grafana/pull/12876)
  * [dd796bfb](https://github.com/openshift/grafana/commit/dd796bfb)
  * Explore: Fix label filtering for rate queries [#12893](https://github.com/openshift/grafana/pull/12893)
  * Fix: Template variables are executing excessive queries [#12959](https://github.com/openshift/grafana/pull/12959)
  * [5f81c879](https://github.com/openshift/grafana/commit/5f81c879)
  * Update notifications.md [#12994](https://github.com/openshift/grafana/pull/12994)
  * tests: fix missing tests (with .jest suffix) [#13012](https://github.com/openshift/grafana/pull/13012)
  * Heatmap: fix tooltip and crosshair in firefox [#12999](https://github.com/openshift/grafana/pull/12999)
  * Replacing variable interpolation in "All value" value [#12967](https://github.com/openshift/grafana/pull/12967)
  * [ad9f38ae](https://github.com/openshift/grafana/commit/ad9f38ae)
  * animation during slow login [#12939](https://github.com/openshift/grafana/pull/12939)
  * docs: How to get started with Grafana for the first time [#12919](https://github.com/openshift/grafana/pull/12919)
  * Update provisioning.md [#13056](https://github.com/openshift/grafana/pull/13056)
  * [9423e3e1](https://github.com/openshift/grafana/commit/9423e3e1)
  * [36bc8b77](https://github.com/openshift/grafana/commit/36bc8b77)
  * [eef41cbc](https://github.com/openshift/grafana/commit/eef41cbc)
  * * master: (30 commits) [0e647db4](https://github.com/openshift/grafana/commit/0e647db4)
  * alerting: invert sendOnce to sendReminder [#12161](https://github.com/openshift/grafana/pull/12161)
  * * master: (84 commits) [6cd83e18](https://github.com/openshift/grafana/commit/6cd83e18)
  * * fork/bus_multi_dispatch: [0cfdebf0](https://github.com/openshift/grafana/commit/0cfdebf0)
  * * master: [ffda5efc](https://github.com/openshift/grafana/commit/ffda5efc)
  * * master: (95 commits) [d31c7bc6](https://github.com/openshift/grafana/commit/d31c7bc6)
  * [6d2136b8](https://github.com/openshift/grafana/commit/6d2136b8)
  * [34e448c6](https://github.com/openshift/grafana/commit/34e448c6)
  * Alerting notification reminder [#12145](https://github.com/openshift/grafana/pull/12145)
  * added Bitcoin as a currency option [#13125](https://github.com/openshift/grafana/pull/13125)
  * [wip]added empty list cta to team list [#12854](https://github.com/openshift/grafana/pull/12854)
  * [01a1737d](https://github.com/openshift/grafana/commit/01a1737d)
  * [09efcbc2](https://github.com/openshift/grafana/commit/09efcbc2)
  * [bb68cb6e](https://github.com/openshift/grafana/commit/bb68cb6e)
  * [dd2b6c70](https://github.com/openshift/grafana/commit/dd2b6c70)
  * [c5de5ed5](https://github.com/openshift/grafana/commit/c5de5ed5)
  * [6c6be9cf](https://github.com/openshift/grafana/commit/6c6be9cf)
  * [1a051ce3](https://github.com/openshift/grafana/commit/1a051ce3)
  * [6766028d](https://github.com/openshift/grafana/commit/6766028d)
  * [6b656094](https://github.com/openshift/grafana/commit/6b656094)
  * [e5900680](https://github.com/openshift/grafana/commit/e5900680)
  * [1849e938](https://github.com/openshift/grafana/commit/1849e938)
  * [046ee8ef](https://github.com/openshift/grafana/commit/046ee8ef)
  * [f4006911](https://github.com/openshift/grafana/commit/f4006911)
  * [8392fe5c](https://github.com/openshift/grafana/commit/8392fe5c)
  * [95a5a613](https://github.com/openshift/grafana/commit/95a5a613)
  * [fa170b3c](https://github.com/openshift/grafana/commit/fa170b3c)
  * [107c0d81](https://github.com/openshift/grafana/commit/107c0d81)
  * [24eafa45](https://github.com/openshift/grafana/commit/24eafa45)
  * [1c0a1882](https://github.com/openshift/grafana/commit/1c0a1882)
  * [1dd2bce0](https://github.com/openshift/grafana/commit/1dd2bce0)
  * [9e054775](https://github.com/openshift/grafana/commit/9e054775)
  * [cd49f2d4](https://github.com/openshift/grafana/commit/cd49f2d4)
  * [928353c6](https://github.com/openshift/grafana/commit/928353c6)
  * [6220dec0](https://github.com/openshift/grafana/commit/6220dec0)
  * [a05d694d](https://github.com/openshift/grafana/commit/a05d694d)
  * [6c7984a8](https://github.com/openshift/grafana/commit/6c7984a8)
  * [682c684d](https://github.com/openshift/grafana/commit/682c684d)
  * [d26caccc](https://github.com/openshift/grafana/commit/d26caccc)
  * [19dcc1f4](https://github.com/openshift/grafana/commit/19dcc1f4)
  * [aacf5559](https://github.com/openshift/grafana/commit/aacf5559)
  * [3f4c808c](https://github.com/openshift/grafana/commit/3f4c808c)
  * [1d711924](https://github.com/openshift/grafana/commit/1d711924)
  * [734118de](https://github.com/openshift/grafana/commit/734118de)
  * [d7ddab95](https://github.com/openshift/grafana/commit/d7ddab95)
  * [6613f114](https://github.com/openshift/grafana/commit/6613f114)
  * [b8af68e0](https://github.com/openshift/grafana/commit/b8af68e0)
  * [5c3b80b4](https://github.com/openshift/grafana/commit/5c3b80b4)
  * [67edb9e9](https://github.com/openshift/grafana/commit/67edb9e9)
  * [5c25844c](https://github.com/openshift/grafana/commit/5c25844c)
  * [3b6454ab](https://github.com/openshift/grafana/commit/3b6454ab)
  * [d8606ddf](https://github.com/openshift/grafana/commit/d8606ddf)
  * [3f5d325e](https://github.com/openshift/grafana/commit/3f5d325e)
  * [15c8ef6c](https://github.com/openshift/grafana/commit/15c8ef6c)
  * [5b3b0295](https://github.com/openshift/grafana/commit/5b3b0295)
  * [4acf4f9d](https://github.com/openshift/grafana/commit/4acf4f9d)
  * [998bb6eb](https://github.com/openshift/grafana/commit/998bb6eb)
  * [1b5486ae](https://github.com/openshift/grafana/commit/1b5486ae)
  * [ea110b59](https://github.com/openshift/grafana/commit/ea110b59)
  * [7177f194](https://github.com/openshift/grafana/commit/7177f194)
  * [70daa56a](https://github.com/openshift/grafana/commit/70daa56a)
  * [650e2faf](https://github.com/openshift/grafana/commit/650e2faf)
  * [265d5daf](https://github.com/openshift/grafana/commit/265d5daf)
  * [de917dfc](https://github.com/openshift/grafana/commit/de917dfc)
  * [82e60125](https://github.com/openshift/grafana/commit/82e60125)
  * postgres: graphical query builder [#11081](https://github.com/openshift/grafana/pull/11081)
  * Fix error when new variables created but not yet added/saved [#13133](https://github.com/openshift/grafana/pull/13133)
  * [432e203d](https://github.com/openshift/grafana/commit/432e203d)
  * [151e950e](https://github.com/openshift/grafana/commit/151e950e)
  * [99133c4f](https://github.com/openshift/grafana/commit/99133c4f)
  * [00c0b71f](https://github.com/openshift/grafana/commit/00c0b71f)
  * [c9ae585d](https://github.com/openshift/grafana/commit/c9ae585d)
  * [0aea60bf](https://github.com/openshift/grafana/commit/0aea60bf)
  * upgrade to golang 1.11 [#13031](https://github.com/openshift/grafana/pull/13031)
  * docs: default paths in the docker container. [#13165](https://github.com/openshift/grafana/pull/13165)
  * [32094735](https://github.com/openshift/grafana/commit/32094735)
  * make default values for alerting configurable [#13170](https://github.com/openshift/grafana/pull/13170)
  * Add min time interval support for SQL datasources [#13148](https://github.com/openshift/grafana/pull/13148)
  * Alert Teams - Adding Action to view the graph by its public URL. [#13167](https://github.com/openshift/grafana/pull/13167)
  * [1415bed0](https://github.com/openshift/grafana/commit/1415bed0)
  * [4391209f](https://github.com/openshift/grafana/commit/4391209f)
  * [035b0ab0](https://github.com/openshift/grafana/commit/035b0ab0)
  * [298c088d](https://github.com/openshift/grafana/commit/298c088d)
  * [267b96cb](https://github.com/openshift/grafana/commit/267b96cb)
  * Add jsonnet with grafonnet-lib to provisioning docs [#13209](https://github.com/openshift/grafana/pull/13209)
  * Fix postgres quoting to handle non-string values [#13184](https://github.com/openshift/grafana/pull/13184)
  * Fix query builder queries for interval start [#13200](https://github.com/openshift/grafana/pull/13200)
  * added id tag to Panels for html bookmarking on longer Dashboards [#12260](https://github.com/openshift/grafana/pull/12260)
  * [17e99bb3](https://github.com/openshift/grafana/commit/17e99bb3)
  * fix: Dashboard permissions now shows correctly [#13208](https://github.com/openshift/grafana/pull/13208)
  * Sort results from GetDashboardTags [#11681](https://github.com/openshift/grafana/pull/11681)
  * Adding Centrify configuration for Oauth [#1](https://github.com/openshift/grafana/pull/1)
  * Add Centrify documentation for generic_oauth [#13217](https://github.com/openshift/grafana/pull/13217)
  * (prometheus) get label name/value from series API [#12251](https://github.com/openshift/grafana/pull/12251)
  * (prometheus) add annotation option to treat series value as timestamp [#11789](https://github.com/openshift/grafana/pull/11789)
  * [metrics]enabled = false should disable the /metrics endpoint. [#13259](https://github.com/openshift/grafana/pull/13259)
  * Fix anonymous usage stats for authentication types [#13253](https://github.com/openshift/grafana/pull/13253)
  * use pluginName consistently when upgrading plugins [#13269](https://github.com/openshift/grafana/pull/13269)
  * Added underline to links in table [#13274](https://github.com/openshift/grafana/pull/13274)
  * Fix gauge display accuracy for "percent (0.0-1.0)" [#13270](https://github.com/openshift/grafana/pull/13270)
  * docs: include active directory ldap example and restructure [#13252](https://github.com/openshift/grafana/pull/13252)
  * [6cdfff52](https://github.com/openshift/grafana/commit/6cdfff52)
  * fix hipchat color code used for "no data" notifications [#13284](https://github.com/openshift/grafana/pull/13284)
  * [108a2019](https://github.com/openshift/grafana/commit/108a2019)
  * [9caa0301](https://github.com/openshift/grafana/commit/9caa0301)
  * [89ea47e7](https://github.com/openshift/grafana/commit/89ea47e7)
  * [7c27a87d](https://github.com/openshift/grafana/commit/7c27a87d)
  * [d173ebe7](https://github.com/openshift/grafana/commit/d173ebe7)
  * Permissions to redux [#13273](https://github.com/openshift/grafana/pull/13273)
  * [dd0b1d84](https://github.com/openshift/grafana/commit/dd0b1d84)
  * Team member labels [#13285](https://github.com/openshift/grafana/pull/13285)
  * Fix some megacheck issues [#13295](https://github.com/openshift/grafana/pull/13295)
  * Add documentation for postgres query builder [#13293](https://github.com/openshift/grafana/pull/13293)
  * * master: (3328 commits) [abd5a74e](https://github.com/openshift/grafana/commit/abd5a74e)
  * * master: [835a7533](https://github.com/openshift/grafana/commit/835a7533)
  * annotations: allows template variables to be used in tag filter [#10163](https://github.com/openshift/grafana/pull/10163)
  * Internal metrics: starts counters at zero [#13279](https://github.com/openshift/grafana/pull/13279)
  * * brian2222-patch-1: [6938fd5f](https://github.com/openshift/grafana/commit/6938fd5f)
  * Explore: Add multiline syntax highlighting to query field [#13282](https://github.com/openshift/grafana/pull/13282)
  * Moves docker/ to devenv/docker [#13300](https://github.com/openshift/grafana/pull/13300)
  * moves files from /tests to more appropriate folders [#13301](https://github.com/openshift/grafana/pull/13301)
  * Fix setting test [#13307](https://github.com/openshift/grafana/pull/13307)
  * removes unused files [#13305](https://github.com/openshift/grafana/pull/13305)
  * disable codecov [#13317](https://github.com/openshift/grafana/pull/13317)
  * Fix megacheck issues [#13330](https://github.com/openshift/grafana/pull/13330)
  * Explore: Fix click to filter for recording rule expressions [#13339](https://github.com/openshift/grafana/pull/13339)
  * Don't use unnest in queries for redshift compatibility [#13342](https://github.com/openshift/grafana/pull/13342)
  * Fix misspelled authentication in Auth overview doc [#13363](https://github.com/openshift/grafana/pull/13363)
  * Explore: Query field fixes [#13367](https://github.com/openshift/grafana/pull/13367)
  * Fix megacheck issues [#13374](https://github.com/openshift/grafana/pull/13374)
  * Explore: Fix label suggestions for recording rules [#13341](https://github.com/openshift/grafana/pull/13341)
  * Fix misspell issues [#13383](https://github.com/openshift/grafana/pull/13383)
  * [1599806b](https://github.com/openshift/grafana/commit/1599806b)
  * added span with folder title that is shown for recently and starred [#12128](https://github.com/openshift/grafana/pull/12128)
  * [87bee3d9](https://github.com/openshift/grafana/commit/87bee3d9)
  * Update Configuration.md [#12716](https://github.com/openshift/grafana/pull/12716)
  * Fix metric-segment options displaying after blur [#13388](https://github.com/openshift/grafana/pull/13388)
  * Fix #13356, where tooltips do not display individual values on stacked graphs [#13394](https://github.com/openshift/grafana/pull/13394)
  * Explore: label selector for logging [#12877](https://github.com/openshift/grafana/pull/12877)
  * devenv: adds script for creating many dashboards with alerts [#13398](https://github.com/openshift/grafana/pull/13398)
  * Fix spelling of your and you're [#13410](https://github.com/openshift/grafana/pull/13410)
  * 13312 legend table width [#13407](https://github.com/openshift/grafana/pull/13407)
  * Remove option r from ln command since its not working everywhere [#13413](https://github.com/openshift/grafana/pull/13413)
  * Concurrent render limits [#13401](https://github.com/openshift/grafana/pull/13401)
  * provisioning: changed update interval default 3 to 10 seconds [#13391](https://github.com/openshift/grafana/pull/13391)
  * Remove .dropdown-menu-open on body click fixes #13409 [#13417](https://github.com/openshift/grafana/pull/13417)
  * alerting: move all notification conditions to defaultShouldNotify [#13402](https://github.com/openshift/grafana/pull/13402)
  * filter NULL values in column value suggestion query [#13427](https://github.com/openshift/grafana/pull/13427)
  * imguploader: Add support for ECS credential provider for S3 [#13424](https://github.com/openshift/grafana/pull/13424)
  * Fix goconst issues [#13392](https://github.com/openshift/grafana/pull/13392)
  * Add goconst to CircleCI [#13432](https://github.com/openshift/grafana/pull/13432)
  * Prevent refresh on fixed time window [#12219](https://github.com/openshift/grafana/pull/12219)
  * resolve symlink on each run [#13360](https://github.com/openshift/grafana/pull/13360)
  * switch button for org users [#13380](https://github.com/openshift/grafana/pull/13380)
  * fixes to dark theme for Explore mode [#13445](https://github.com/openshift/grafana/pull/13445)
  * [f2307f92](https://github.com/openshift/grafana/commit/f2307f92)
  * Compile TS on precommit hook [#13448](https://github.com/openshift/grafana/pull/13448)
  * Plugin list to react [#13438](https://github.com/openshift/grafana/pull/13438)
  * Adding AWS Isolated Regions [#13458](https://github.com/openshift/grafana/pull/13458)
  * Grafana high availability (ha) test setup [#13439](https://github.com/openshift/grafana/pull/13439)
  * Limit number of time series in explore [#13408](https://github.com/openshift/grafana/pull/13408)
  * [3ba01953](https://github.com/openshift/grafana/commit/3ba01953)
  * [c2686781](https://github.com/openshift/grafana/commit/c2686781)
  * [dc1535cf](https://github.com/openshift/grafana/commit/dc1535cf)
  * [c67327d7](https://github.com/openshift/grafana/commit/c67327d7)
  * [785f35b1](https://github.com/openshift/grafana/commit/785f35b1)
  * [c282f391](https://github.com/openshift/grafana/commit/c282f391)
  * [b6a918ba](https://github.com/openshift/grafana/commit/b6a918ba)
  * [186dcc00](https://github.com/openshift/grafana/commit/186dcc00)
  * [2628ef7e](https://github.com/openshift/grafana/commit/2628ef7e)
  * [66c95991](https://github.com/openshift/grafana/commit/66c95991)
  * [284d0b7e](https://github.com/openshift/grafana/commit/284d0b7e)
  * [0507ff69](https://github.com/openshift/grafana/commit/0507ff69)
  * [26d9e924](https://github.com/openshift/grafana/commit/26d9e924)
  * [9748a948](https://github.com/openshift/grafana/commit/9748a948)
  * [9b90b835](https://github.com/openshift/grafana/commit/9b90b835)
  * [aedd5181](https://github.com/openshift/grafana/commit/aedd5181)
  * [cdcb14f3](https://github.com/openshift/grafana/commit/cdcb14f3)
  * Stackdriver Datasource - Fixes #6733 [#13289](https://github.com/openshift/grafana/pull/13289)
  * [3081e0f8](https://github.com/openshift/grafana/commit/3081e0f8)
  * 13411 react api key [#13444](https://github.com/openshift/grafana/pull/13444)
  * Explore: Store UI state in URL [#13463](https://github.com/openshift/grafana/pull/13463)
  * cli: fix reset-admin-password [#13422](https://github.com/openshift/grafana/pull/13422)
  * Update to ldap.md [#13480](https://github.com/openshift/grafana/pull/13480)
  * typo in sample.ini [#13481](https://github.com/openshift/grafana/pull/13481)
  * Fix megacheck issues [#13470](https://github.com/openshift/grafana/pull/13470)
  * [f37a60dc](https://github.com/openshift/grafana/commit/f37a60dc)
  * Explore: jump to explore from panels with mixed datasources [#13416](https://github.com/openshift/grafana/pull/13416)
  * [a0e1a1a1](https://github.com/openshift/grafana/commit/a0e1a1a1)
  * use alert state changes counter for alert notification dedupping. [#13477](https://github.com/openshift/grafana/pull/13477)
  * Transaction issues for alert reminder [#13440](https://github.com/openshift/grafana/pull/13440)
  * Update configuration doc to include socket at [server] [#13499](https://github.com/openshift/grafana/pull/13499)
  * Testdata tables [#13500](https://github.com/openshift/grafana/pull/13500)
  * [09b68132](https://github.com/openshift/grafana/commit/09b68132)
  * Org users to react [#13488](https://github.com/openshift/grafana/pull/13488)
  * Revert "Org users to react" [#13502](https://github.com/openshift/grafana/pull/13502)
  * build: automatically publish releases to grafana.com. [#13508](https://github.com/openshift/grafana/pull/13508)
  * Fix issue with updating role permissions #13507 [#13509](https://github.com/openshift/grafana/pull/13509)
  * [81c44eb3](https://github.com/openshift/grafana/commit/81c44eb3)
  * stackdriver: adds missing nginject attribute [#13511](https://github.com/openshift/grafana/pull/13511)
  * centered dashboard icon in search with flexbox [#13514](https://github.com/openshift/grafana/pull/13514)
  * Fix megacheck issues [#13506](https://github.com/openshift/grafana/pull/13506)
  * * grafana/master: [5425b76e](https://github.com/openshift/grafana/commit/5425b76e)
  * * grafana/master: (29 commits) [14d816af](https://github.com/openshift/grafana/commit/14d816af)
  * * grafana/master: (51 commits) [56927e55](https://github.com/openshift/grafana/commit/56927e55)
  * * grafana/master: (104 commits) [27e96179](https://github.com/openshift/grafana/commit/27e96179)
  * * grafana/master: (187 commits) [8c86a1c4](https://github.com/openshift/grafana/commit/8c86a1c4)
  * * grafana/master: (52 commits) [8cfad74a](https://github.com/openshift/grafana/commit/8cfad74a)
  * * grafana/master: [048fd87a](https://github.com/openshift/grafana/commit/048fd87a)
  * * grafana/master: (368 commits) [9f4d4a93](https://github.com/openshift/grafana/commit/9f4d4a93)
  * * grafana/master: (127 commits) [b4fad40c](https://github.com/openshift/grafana/commit/b4fad40c)
  * Keep trailing slash for datasource proxy requests [#13326](https://github.com/openshift/grafana/pull/13326)
  * move timeFrom, timeTo, unixEpochFrom and unixEpochTo macros to sql_engine [#13498](https://github.com/openshift/grafana/pull/13498)
  * Explore: typeahead and render performance improvements [#13491](https://github.com/openshift/grafana/pull/13491)
  * Moving contributing.md to top level [#13525](https://github.com/openshift/grafana/pull/13525)
  * Explore: fix rate hint for series with null values [#13528](https://github.com/openshift/grafana/pull/13528)
  * Explore: reset typeahead on cursor move [#13530](https://github.com/openshift/grafana/pull/13530)
  * ux: misc react migration fixes and info box style improvement [#13534](https://github.com/openshift/grafana/pull/13534)
  * Explore: resize graph on window resize [#13529](https://github.com/openshift/grafana/pull/13529)
  * Fixed typo in query editor placeholder text. [#13543](https://github.com/openshift/grafana/pull/13543)
  * fix gofmt tests output [#13538](https://github.com/openshift/grafana/pull/13538)
  * Fix text overflow on playlist search  #13464 [#13548](https://github.com/openshift/grafana/pull/13548)
  * docs: fix minor typos [#13547](https://github.com/openshift/grafana/pull/13547)
  * [e1c77f63](https://github.com/openshift/grafana/commit/e1c77f63)
  * New data source as separate page [#13537](https://github.com/openshift/grafana/pull/13537)
  * fix for influxdb annotation issue that caused text to be shown twice [#13556](https://github.com/openshift/grafana/pull/13556)
  * stackdriver metric name fix. Fixes #13562 [#13564](https://github.com/openshift/grafana/pull/13564)
  * Stackdriver filter wildcards [#13496](https://github.com/openshift/grafana/pull/13496)
  * Explore: do not show default suggestions after expressions [#13542](https://github.com/openshift/grafana/pull/13542)
  * Explore: trigger a query field render to fix highlighting [#13541](https://github.com/openshift/grafana/pull/13541)
  * Explore: compact state URLs [#13540](https://github.com/openshift/grafana/pull/13540)
  * ux: minor update to look of stackdriver query help [#13550](https://github.com/openshift/grafana/pull/13550)
  * Remove duplicate labels in the datasource query [#13570](https://github.com/openshift/grafana/pull/13570)
  * Improve Stackdriver provisioning docs [#13574](https://github.com/openshift/grafana/pull/13574)
  * Stackdriver heatmap support. Fixes #13559 [#13490](https://github.com/openshift/grafana/pull/13490)
  * Update debian.md [#13584](https://github.com/openshift/grafana/pull/13584)
  * fix CloudWatch id validation [#13583](https://github.com/openshift/grafana/pull/13583)
  * Render Dashboard Row drag handle only in edit mode [#13568](https://github.com/openshift/grafana/pull/13568)
  * cloudwatch: automatically set graph yaxis unit
 [#13571](https://github.com/openshift/grafana/pull/13571)
  * Update rpm.md [#13585](https://github.com/openshift/grafana/pull/13585)
  * Update windows.md [#13586](https://github.com/openshift/grafana/pull/13586)
  * Update mac.md [#13587](https://github.com/openshift/grafana/pull/13587)
  * [30fca2b1](https://github.com/openshift/grafana/commit/30fca2b1)
  * wip: whats new for 5.3 [#13403](https://github.com/openshift/grafana/pull/13403)
  * Explore: highlight typed text in suggestions [#13536](https://github.com/openshift/grafana/pull/13536)
  * [3932e4db](https://github.com/openshift/grafana/commit/3932e4db)
  * Run queries for sql data sources for panels with multiple queries concurrently
 [#13400](https://github.com/openshift/grafana/pull/13400)
  * elasticsearch: fix no limit size in terms aggregation for alerting queries [#13609](https://github.com/openshift/grafana/pull/13609)
  * Adding loading spinner to org pages [#13619](https://github.com/openshift/grafana/pull/13619)
  * fix phantomjs render of graph panel when legend displayed as table to the right [#13617](https://github.com/openshift/grafana/pull/13617)
  * [5b46c088](https://github.com/openshift/grafana/commit/5b46c088)
  * Frontend extensions [#13620](https://github.com/openshift/grafana/pull/13620)
  * stackdriver docs: metric query editor and annotations [#13618](https://github.com/openshift/grafana/pull/13618)
  * 13340 complete oauth doc [#13632](https://github.com/openshift/grafana/pull/13632)
  * [127b7d92](https://github.com/openshift/grafana/commit/127b7d92)
  * [69e0311c](https://github.com/openshift/grafana/commit/69e0311c)
  * Remove user form org in single org setup improvement [#13611](https://github.com/openshift/grafana/pull/13611)
  * [caf995bb](https://github.com/openshift/grafana/commit/caf995bb)
  * minor setting refactorings [#13638](https://github.com/openshift/grafana/pull/13638)
  * Stackdriver: Prevent filter from crashing [#13624](https://github.com/openshift/grafana/pull/13624)
  * Adds backend hooks service so extensions can modify index data [#13644](https://github.com/openshift/grafana/pull/13644)
  * updated jest to 23.10 [#13649](https://github.com/openshift/grafana/pull/13649)
  * Typos in plugin development documentation [#13657](https://github.com/openshift/grafana/pull/13657)
  * fix: label values regex for single letter labels [#13656](https://github.com/openshift/grafana/pull/1365…
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
approved Indicates a PR has been approved by an approver from all required OWNERS files. lgtm Indicates that a PR is ready to be merged. size/XL Denotes a PR that changes 500-999 lines, ignoring generated files.
Projects
None yet
Development

Successfully merging this pull request may close these issues.

6 participants