aboutsummaryrefslogtreecommitdiff
path: root/infra/libkookie/nixpkgs/pkgs/applications/networking/cluster/terraform-providers
diff options
context:
space:
mode:
Diffstat (limited to 'infra/libkookie/nixpkgs/pkgs/applications/networking/cluster/terraform-providers')
-rw-r--r--infra/libkookie/nixpkgs/pkgs/applications/networking/cluster/terraform-providers/cloudfoundry/default.nix29
-rw-r--r--infra/libkookie/nixpkgs/pkgs/applications/networking/cluster/terraform-providers/default.nix141
-rw-r--r--infra/libkookie/nixpkgs/pkgs/applications/networking/cluster/terraform-providers/hcloud/default.nix32
-rw-r--r--infra/libkookie/nixpkgs/pkgs/applications/networking/cluster/terraform-providers/libvirt/default.nix4
-rw-r--r--infra/libkookie/nixpkgs/pkgs/applications/networking/cluster/terraform-providers/linuxbox/default.nix26
-rw-r--r--infra/libkookie/nixpkgs/pkgs/applications/networking/cluster/terraform-providers/lxd/default.nix6
-rw-r--r--infra/libkookie/nixpkgs/pkgs/applications/networking/cluster/terraform-providers/providers.json178
-rwxr-xr-xinfra/libkookie/nixpkgs/pkgs/applications/networking/cluster/terraform-providers/update-provider187
8 files changed, 360 insertions, 243 deletions
diff --git a/infra/libkookie/nixpkgs/pkgs/applications/networking/cluster/terraform-providers/cloudfoundry/default.nix b/infra/libkookie/nixpkgs/pkgs/applications/networking/cluster/terraform-providers/cloudfoundry/default.nix
new file mode 100644
index 000000000000..7e807d2ed5ce
--- /dev/null
+++ b/infra/libkookie/nixpkgs/pkgs/applications/networking/cluster/terraform-providers/cloudfoundry/default.nix
@@ -0,0 +1,29 @@
+{ stdenv, buildGoModule, fetchFromGitHub }:
+
+buildGoModule rec {
+ pname = "terraform-provider-cloudfoundry";
+ version = "0.12.6";
+
+ src = fetchFromGitHub {
+ owner = "cloudfoundry-community";
+ repo = pname;
+ rev = "v${version}";
+ sha256 = "0n5ybpzk6zkrnd9vpmbjlkm8fdp7nbfr046wih0jk72pmiyrcygi";
+ };
+
+ vendorSha256 = "01lfsd9aw9w3kr1a2a5b7ac6d8jaij83lhxl4y4qsnjlqk86fbxq";
+
+ # needs a running cloudfoundry
+ doCheck = false;
+
+ postInstall = "mv $out/bin/terraform-provider-cloudfoundry{,_v${version}}";
+
+ passthru = { provider-source-address = "registry.terraform.io/cloudfoundry-community/cloudfoundry"; };
+
+ meta = with stdenv.lib; {
+ homepage = "https://github.com/cloudfoundry-community/terraform-provider-cloudfoundry";
+ description = "Terraform provider for cloudfoundry";
+ license = licenses.mpl20;
+ maintainers = with maintainers; [ ris ];
+ };
+}
diff --git a/infra/libkookie/nixpkgs/pkgs/applications/networking/cluster/terraform-providers/default.nix b/infra/libkookie/nixpkgs/pkgs/applications/networking/cluster/terraform-providers/default.nix
index 73fc6df024e6..b7b6c8ad73b3 100644
--- a/infra/libkookie/nixpkgs/pkgs/applications/networking/cluster/terraform-providers/default.nix
+++ b/infra/libkookie/nixpkgs/pkgs/applications/networking/cluster/terraform-providers/default.nix
@@ -1,4 +1,5 @@
{ lib
+, buildGoModule
, buildGoPackage
, fetchFromGitHub
, callPackage
@@ -7,7 +8,23 @@
let
list = lib.importJSON ./providers.json;
- toDrv = name: data:
+ buildWithGoModule = data:
+ buildGoModule {
+ pname = data.repo;
+ version = data.version;
+ subPackages = [ "." ];
+ src = fetchFromGitHub {
+ inherit (data) owner repo rev sha256;
+ };
+ vendorSha256 = data.vendorSha256 or null;
+
+ # Terraform allow checking the provider versions, but this breaks
+ # if the versions are not provided via file paths.
+ postBuild = "mv $NIX_BUILD_TOP/go/bin/${data.repo}{,_v${data.version}}";
+ passthru = data;
+ };
+
+ buildWithGoPackage = data:
buildGoPackage {
pname = data.repo;
version = data.version;
@@ -22,43 +39,13 @@ let
passthru = data;
};
- # Google is now using the vendored go modules, which works a bit differently
- # and is not 100% compatible with the pre-modules vendored folders.
- #
- # Instead of switching to goModules which requires a goModSha256, patch the
- # goPackage derivation so it can install the top-level.
- patchGoModVendor = drv:
- drv.overrideAttrs (attrs: {
- buildFlags = "-mod=vendor";
-
- # override configurePhase to not move the source into GOPATH
- configurePhase = ''
- export GOPATH=$NIX_BUILD_TOP/go:$GOPATH
- export GOCACHE=$TMPDIR/go-cache
- export GO111MODULE=on
- '';
-
- # just build and install into $GOPATH/bin
- buildPhase = ''
- go install -mod=vendor -v -p 16 .
-
- runHook postBuild
- '';
-
- # don't run the tests, they are broken in this setup
- doCheck = false;
- });
-
# These providers are managed with the ./update-all script
- automated-providers = lib.mapAttrs (toDrv) list;
+ automated-providers = lib.mapAttrs (_: attrs:
+ (if (lib.hasAttr "vendorSha256" attrs) then buildWithGoModule else buildWithGoPackage)
+ attrs) list;
# These are the providers that don't fall in line with the default model
special-providers = {
- # Override providers that use Go modules + vendor/ folder
- google = patchGoModVendor automated-providers.google;
- google-beta = patchGoModVendor automated-providers.google-beta;
- ibm = patchGoModVendor automated-providers.ibm;
-
acme = automated-providers.acme.overrideAttrs (attrs: {
prePatch = attrs.prePatch or "" + ''
substituteInPlace go.mod --replace terraform-providers/terraform-provider-acme getstackhead/terraform-provider-acme
@@ -66,95 +53,15 @@ let
'';
});
- # providers that were moved to the `hashicorp` organization,
- # but haven't updated their references yet:
-
- # https://github.com/hashicorp/terraform-provider-archive/pull/67
- archive = automated-providers.archive.overrideAttrs (attrs: {
- prePatch = attrs.prePatch or "" + ''
- substituteInPlace go.mod --replace terraform-providers/terraform-provider-archive hashicorp/terraform-provider-archive
- substituteInPlace main.go --replace terraform-providers/terraform-provider-archive hashicorp/terraform-provider-archive
- '';
- });
-
- # https://github.com/hashicorp/terraform-provider-dns/pull/101
- dns = automated-providers.dns.overrideAttrs (attrs: {
- prePatch = attrs.prePatch or "" + ''
- substituteInPlace go.mod --replace terraform-providers/terraform-provider-dns hashicorp/terraform-provider-dns
- substituteInPlace main.go --replace terraform-providers/terraform-provider-dns hashicorp/terraform-provider-dns
- '';
- });
-
- # https://github.com/hashicorp/terraform-provider-external/pull/41
- external = automated-providers.external.overrideAttrs (attrs: {
- prePatch = attrs.prePatch or "" + ''
- substituteInPlace go.mod --replace terraform-providers/terraform-provider-external hashicorp/terraform-provider-external
- substituteInPlace main.go --replace terraform-providers/terraform-provider-external hashicorp/terraform-provider-external
- '';
- });
-
- # https://github.com/hashicorp/terraform-provider-helm/pull/522
- helm = automated-providers.helm.overrideAttrs (attrs: {
- prePatch = attrs.prePatch or "" + ''
- substituteInPlace go.mod --replace terraform-providers/terraform-provider-helm hashicorp/terraform-provider-helm
- substituteInPlace main.go --replace terraform-providers/terraform-provider-helm hashicorp/terraform-provider-helm
- '';
- });
-
- # https://github.com/hashicorp/terraform-provider-http/pull/40
- http = automated-providers.http.overrideAttrs (attrs: {
- prePatch = attrs.prePatch or "" + ''
- substituteInPlace go.mod --replace terraform-providers/terraform-provider-http hashicorp/terraform-provider-http
- substituteInPlace main.go --replace terraform-providers/terraform-provider-http hashicorp/terraform-provider-http
- '';
- });
-
- # https://github.com/hashicorp/terraform-provider-local/pull/40
- local = automated-providers.local.overrideAttrs (attrs: {
- prePatch = attrs.prePatch or "" + ''
- substituteInPlace go.mod --replace terraform-providers/terraform-provider-local hashicorp/terraform-provider-local
- substituteInPlace main.go --replace terraform-providers/terraform-provider-local hashicorp/terraform-provider-local
- '';
- });
-
- # https://github.com/hashicorp/terraform-provider-null/pull/43
- null = automated-providers.null.overrideAttrs (attrs: {
- prePatch = attrs.prePatch or "" + ''
- substituteInPlace go.mod --replace terraform-providers/terraform-provider-null hashicorp/terraform-provider-null
- substituteInPlace main.go --replace terraform-providers/terraform-provider-null hashicorp/terraform-provider-null
- '';
- });
-
- # https://github.com/hashicorp/terraform-provider-random/pull/107
- random = automated-providers.random.overrideAttrs (attrs: {
- prePatch = attrs.prePatch or "" + ''
- substituteInPlace go.mod --replace terraform-providers/terraform-provider-random hashicorp/terraform-provider-random
- substituteInPlace main.go --replace terraform-providers/terraform-provider-random hashicorp/terraform-provider-random
- '';
- });
-
- # https://github.com/hashicorp/terraform-provider-template/pull/79
- template = automated-providers.template.overrideAttrs (attrs: {
- prePatch = attrs.prePatch or "" + ''
- substituteInPlace go.mod --replace terraform-providers/terraform-provider-template hashicorp/terraform-provider-template
- substituteInPlace main.go --replace terraform-providers/terraform-provider-template hashicorp/terraform-provider-template
- '';
- });
-
- # https://github.com/hashicorp/terraform-provider-tls/pull/71
- tls = automated-providers.tls.overrideAttrs (attrs: {
- prePatch = attrs.prePatch or "" + ''
- substituteInPlace go.mod --replace terraform-providers/terraform-provider-tls hashicorp/terraform-provider-tls
- substituteInPlace main.go --replace terraform-providers/terraform-provider-tls hashicorp/terraform-provider-tls
- '';
- });
-
# Packages that don't fit the default model
ansible = callPackage ./ansible {};
+ cloudfoundry = callPackage ./cloudfoundry {};
elasticsearch = callPackage ./elasticsearch {};
gandi = callPackage ./gandi {};
+ hcloud = callPackage ./hcloud {};
keycloak = callPackage ./keycloak {};
libvirt = callPackage ./libvirt {};
+ linuxbox = callPackage ./linuxbox {};
lxd = callPackage ./lxd {};
shell = callPackage ./shell {};
vpsadmin = callPackage ./vpsadmin {};
diff --git a/infra/libkookie/nixpkgs/pkgs/applications/networking/cluster/terraform-providers/hcloud/default.nix b/infra/libkookie/nixpkgs/pkgs/applications/networking/cluster/terraform-providers/hcloud/default.nix
new file mode 100644
index 000000000000..89a22c718efb
--- /dev/null
+++ b/infra/libkookie/nixpkgs/pkgs/applications/networking/cluster/terraform-providers/hcloud/default.nix
@@ -0,0 +1,32 @@
+{ stdenv, buildGoModule, fetchFromGitHub }:
+
+buildGoModule rec {
+ pname = "terraform-provider-hcloud";
+ version = "1.22.0";
+
+ src = fetchFromGitHub {
+ owner = "hetznercloud";
+ repo = pname;
+ rev = "v${version}";
+ sha256 = "1h4kplrmpsbwa0nq3zyqa0cnvhv1s5avdrjyf1k1f2z6b6h4gynf";
+ };
+
+ vendorSha256 = "070p34g0ca55rmfdwf1l53yr8vyhmm5sb8hm8q036n066yp03yfs";
+
+ # Spends an awful time in other test folders, apparently tries to reach
+ # opencensus and fails.
+ checkPhase = ''
+ pushd hcloud
+ go test -v
+ popd
+ '';
+
+ postInstall = "mv $out/bin/terraform-provider-hcloud{,_v${version}}";
+
+ meta = with stdenv.lib; {
+ homepage = "https://github.com/cloudfoundry-community/terraform-provider-cloudfoundry";
+ description = "Terraform provider for cloudfoundry";
+ license = licenses.mpl20;
+ maintainers = with maintainers; [ ris ];
+ };
+}
diff --git a/infra/libkookie/nixpkgs/pkgs/applications/networking/cluster/terraform-providers/libvirt/default.nix b/infra/libkookie/nixpkgs/pkgs/applications/networking/cluster/terraform-providers/libvirt/default.nix
index 42ed3d21066f..4662a315a8c4 100644
--- a/infra/libkookie/nixpkgs/pkgs/applications/networking/cluster/terraform-providers/libvirt/default.nix
+++ b/infra/libkookie/nixpkgs/pkgs/applications/networking/cluster/terraform-providers/libvirt/default.nix
@@ -19,7 +19,7 @@
buildGoPackage rec {
pname = "terraform-provider-libvirt";
- version = "0.6.2";
+ version = "0.6.3";
goPackagePath = "github.com/dmacvicar/terraform-provider-libvirt";
@@ -27,7 +27,7 @@ buildGoPackage rec {
owner = "dmacvicar";
repo = "terraform-provider-libvirt";
rev = "v${version}";
- sha256 = "1wkpns047ccff0clfb1108wjax1qb5v06hky0i3h2wpzysll7r7b";
+ sha256 = "0ak2lpnv6h0i7lzfcggd90jpfhvsasdr6nflkflk2drlcpalggj9";
};
nativeBuildInputs = [ pkgconfig makeWrapper ];
diff --git a/infra/libkookie/nixpkgs/pkgs/applications/networking/cluster/terraform-providers/linuxbox/default.nix b/infra/libkookie/nixpkgs/pkgs/applications/networking/cluster/terraform-providers/linuxbox/default.nix
new file mode 100644
index 000000000000..60cd7f2d7637
--- /dev/null
+++ b/infra/libkookie/nixpkgs/pkgs/applications/networking/cluster/terraform-providers/linuxbox/default.nix
@@ -0,0 +1,26 @@
+{ stdenv, buildGoModule, fetchFromGitHub }:
+
+buildGoModule rec {
+ pname = "terraform-provider-linuxbox";
+ version = "0.3.11";
+
+ src = fetchFromGitHub {
+ owner = "numtide";
+ repo = pname;
+ rev = "v${version}";
+ sha256 = "1sxb2iv4dl0rw3v1r7k5dfkyh14nmp19cprqafhb7ncarmvawq39";
+ };
+
+ vendorSha256 = "16hp0pv1qpvr34ac1syjci39csvyj3c748inllypjwx76q6rwp7k";
+
+ postInstall = "mv $out/bin/terraform-provider-linuxbox{,_v${version}}";
+
+ passthru.provider-source-address = "registry.terraform.io/numtide/linuxbox";
+
+ meta = with stdenv.lib; {
+ homepage = "https://github.com/numtide/terraform-provider-linuxbox";
+ description = "Basic building block for Seed DevOps";
+ license = licenses.bsd3;
+ maintainers = with maintainers; [ zimbatm ];
+ };
+}
diff --git a/infra/libkookie/nixpkgs/pkgs/applications/networking/cluster/terraform-providers/lxd/default.nix b/infra/libkookie/nixpkgs/pkgs/applications/networking/cluster/terraform-providers/lxd/default.nix
index d64178b1e658..a583bc335142 100644
--- a/infra/libkookie/nixpkgs/pkgs/applications/networking/cluster/terraform-providers/lxd/default.nix
+++ b/infra/libkookie/nixpkgs/pkgs/applications/networking/cluster/terraform-providers/lxd/default.nix
@@ -2,16 +2,16 @@
buildGoModule rec {
pname = "terraform-provider-lxd";
- version = "1.3.0";
+ version = "1.4.0";
src = fetchFromGitHub {
owner = "sl1pm4t";
repo = "terraform-provider-lxd";
rev = "v${version}";
- sha256 = "1k54021178zybh9dqly2ly8ji9x5rka8dn9xd6rv7gkcl5w3y6fv";
+ sha256 = "00gj7zj45wm9sf7a7nybjijdrdr00g2yf8h41c6j679a6nfnx0fd";
};
- vendorSha256 = "1shdpl1zsbbpc3mfs0l65ykq2h15ggvqylaixcap4j4lfl7m9my0";
+ vendorSha256 = "0xq8zgx8h47pc88nkdvy5skpr8vk87b4212mm5msfxk8n7nl4fi2";
doCheck = false;
diff --git a/infra/libkookie/nixpkgs/pkgs/applications/networking/cluster/terraform-providers/providers.json b/infra/libkookie/nixpkgs/pkgs/applications/networking/cluster/terraform-providers/providers.json
index c49f4cd2b1ba..bb2a7ab582b9 100644
--- a/infra/libkookie/nixpkgs/pkgs/applications/networking/cluster/terraform-providers/providers.json
+++ b/infra/libkookie/nixpkgs/pkgs/applications/networking/cluster/terraform-providers/providers.json
@@ -33,9 +33,10 @@
"owner": "hashicorp",
"provider-source-address": "registry.terraform.io/hashicorp/archive",
"repo": "terraform-provider-archive",
- "rev": "v1.3.0",
- "sha256": "1hwg8ai4bvsmgnl669608lr4v940xnyig1xshps490f47c8hqy6y",
- "version": "1.3.0"
+ "rev": "v2.0.0",
+ "sha256": "1d5n379zyjp2srg43g78a8h33qwcpkfkj7c35idvbyydi35vzlpl",
+ "vendorSha256": null,
+ "version": "2.0.0"
},
"arukas": {
"owner": "terraform-providers",
@@ -66,12 +67,13 @@
"version": "2.14.1"
},
"aws": {
- "owner": "terraform-providers",
+ "owner": "hashicorp",
"provider-source-address": "registry.terraform.io/hashicorp/aws",
"repo": "terraform-provider-aws",
- "rev": "v2.65.0",
- "sha256": "005vs1qd6payicxldc9lr4w6kzr58xw9b930j52g1q7hlddl5mbb",
- "version": "2.65.0"
+ "rev": "v3.15.0",
+ "sha256": "0rxpdxg5p478sipbhq2x347gs5wrlwz4ggy9z007cbp34yhb2wka",
+ "vendorSha256": "0vapfnd4c8jb15pdjnnb97vgsvfakjvl1czccbfy0znhdk2ynz02",
+ "version": "3.15.0"
},
"azuread": {
"owner": "terraform-providers",
@@ -233,11 +235,13 @@
"version": "2.7.0"
},
"digitalocean": {
- "owner": "terraform-providers",
+ "owner": "digitalocean",
+ "provider-source-address": "registry.terraform.io/digitalocean/digitalocean",
"repo": "terraform-provider-digitalocean",
- "rev": "v1.19.0",
- "sha256": "0plfkwkfb19f7bzky4jfa2kmkqvbah02c6j6applsd3jyiawpbgy",
- "version": "1.19.0"
+ "rev": "v2.2.0",
+ "sha256": "14v9sh2qqdflzzp5mvkr7hd5c21hch8b8shxiwm0ar4qgdxq3wfy",
+ "vendorSha256": null,
+ "version": "2.2.0"
},
"dme": {
"owner": "terraform-providers",
@@ -250,9 +254,10 @@
"owner": "hashicorp",
"provider-source-address": "registry.terraform.io/hashicorp/dns",
"repo": "terraform-provider-dns",
- "rev": "v2.2.0",
- "sha256": "11xdxj6hfclaq9glbh14nihmrsk220crm9ld8bdv77w0bppmrrch",
- "version": "2.2.0"
+ "rev": "v3.0.0",
+ "sha256": "160dbmg7xg7iyc70f66dphyiysrdbscwya2n28idi8wp5rjx8bid",
+ "vendorSha256": null,
+ "version": "3.0.0"
},
"dnsimple": {
"owner": "terraform-providers",
@@ -293,9 +298,10 @@
"owner": "hashicorp",
"provider-source-address": "registry.terraform.io/hashicorp/external",
"repo": "terraform-provider-external",
- "rev": "v1.2.0",
- "sha256": "1kx28bffhd1pg3m0cbldclc8l9zic16mqrk7gybcls9vyds5gbvc",
- "version": "1.2.0"
+ "rev": "v2.0.0",
+ "sha256": "16wciz08gicicsirij2ql0gy8dg0372jjsqmaigkl2n07mqz2b6a",
+ "vendorSha256": null,
+ "version": "2.0.0"
},
"fastly": {
"owner": "terraform-providers",
@@ -328,30 +334,35 @@
"github": {
"owner": "terraform-providers",
"repo": "terraform-provider-github",
- "rev": "v2.8.0",
- "sha256": "11aw9wqnayl786hvbgnb9ijijaipaggj18vkn5y0kcj2v4dwq4wg",
- "version": "2.8.0"
+ "rev": "v3.1.0",
+ "sha256": "1xl4fd1lfbn1vnrdmg2xljnv8hy6rmf0iv7g8pzbnzbvj2pi7w3b",
+ "version": "3.1.0"
},
"gitlab": {
- "owner": "terraform-providers",
+ "owner": "gitlabhq",
+ "provider-source-address": "registry.terraform.io/gitlabhq/gitlab",
"repo": "terraform-provider-gitlab",
- "rev": "v2.9.0",
- "sha256": "0l0b69nxxskpsylcgli2sm9qq7p4hw96dsri24w38shhnxmpysbb",
- "version": "2.9.0"
+ "rev": "v3.1.0",
+ "sha256": "1an34ckz7lz1k25lkjpbmls55zp9pacr46vjnjjpqx6bx5s95f5g",
+ "version": "3.1.0"
},
"google": {
- "owner": "terraform-providers",
+ "owner": "hashicorp",
+ "provider-source-address": "registry.terraform.io/hashicorp/google",
"repo": "terraform-provider-google",
- "rev": "v3.18.0",
- "sha256": "18cxl1qw1wyvzvhgjm1s3c19hbi5z9s6mipgazhrac70myw8dmy7",
- "version": "3.18.0"
+ "rev": "v3.47.0",
+ "sha256": "05xb0q56y9088qbyaf3vzjm9im1s2azxffhjffjpzi0i79k0g2p0",
+ "vendorSha256": "1h83p7ncv7b4ci7qdig7hb81zk9458fq9aqqbkryawf1w7wbaq2a",
+ "version": "3.47.0"
},
"google-beta": {
- "owner": "terraform-providers",
+ "owner": "hashicorp",
+ "provider-source-address": "registry.terraform.io/hashicorp/google-beta",
"repo": "terraform-provider-google-beta",
- "rev": "v3.18.0",
- "sha256": "1rsaqrgr6ddgx1pala83y70dk32s0mvf6vi877awmimxjzsa1l4r",
- "version": "3.18.0"
+ "rev": "v3.47.0",
+ "sha256": "1nk0bg2q7dg65rn3j5pkdjv07x0gs7bkv1bpfvlhi9p4fzx9g4by",
+ "vendorSha256": "0c2q4d2khsi3v9b659q1kmncnlshv4px6ch99jpcymwqg3xrxda2",
+ "version": "3.47.0"
},
"grafana": {
"owner": "terraform-providers",
@@ -367,13 +378,6 @@
"sha256": "00l3cwvyyjk0n3j535qfj3bsf1s5l07786gnxycj0f8vz3a06bcq",
"version": "1.6.0"
},
- "hcloud": {
- "owner": "terraform-providers",
- "repo": "terraform-provider-hcloud",
- "rev": "v1.16.0",
- "sha256": "09v2bg4ffyh4ibz449dygxgd7mvjgh4b2r242l3cwi7pzn66imrz",
- "version": "1.16.0"
- },
"hedvig": {
"owner": "terraform-providers",
"repo": "terraform-provider-hedvig",
@@ -385,9 +389,10 @@
"owner": "hashicorp",
"provider-source-address": "registry.terraform.io/hashicorp/helm",
"repo": "terraform-provider-helm",
- "rev": "v1.2.2",
- "sha256": "1hjlf0pzc9jkcvqi52kvqwmd8v0cvnhhcbahzxmv0zkdwh310c12",
- "version": "1.2.2"
+ "rev": "v1.3.2",
+ "sha256": "0mpbf03483jqrwd9cx4pdn2pcv4swfs5nbp021gaqr0jf1w970x6",
+ "vendorSha256": null,
+ "version": "1.3.2"
},
"heroku": {
"owner": "terraform-providers",
@@ -400,9 +405,10 @@
"owner": "hashicorp",
"provider-source-address": "registry.terraform.io/hashicorp/http",
"repo": "terraform-provider-http",
- "rev": "v1.2.0",
- "sha256": "0q8ichbqrq62q1j0rc7sdz1jzfwg2l9v4ac9jqf6y485dblhmwqd",
- "version": "1.2.0"
+ "rev": "v2.0.0",
+ "sha256": "0x6a9qf819g16dj9inyvhwff67xy0ixyy70ck56lkidrldara444",
+ "vendorSha256": null,
+ "version": "2.0.0"
},
"huaweicloud": {
"owner": "terraform-providers",
@@ -420,10 +426,12 @@
},
"ibm": {
"owner": "IBM-Cloud",
+ "provider-source-address": "registry.terraform.io/IBM-Cloud/ibm",
"repo": "terraform-provider-ibm",
- "rev": "v1.7.0",
- "sha256": "1kb2dxdygvph65hh7qiba9kl9k5aygxxvx3x1qi28jwny594j82a",
- "version": "1.7.0"
+ "rev": "v1.14.0",
+ "sha256": "1r3y7r0mnbzd7xk6d5f7pvysl3p8vl5i5phya89dfwrk2x9xyw21",
+ "vendorSha256": null,
+ "version": "1.14.0"
},
"icinga2": {
"owner": "terraform-providers",
@@ -475,11 +483,12 @@
"version": "1.0.0"
},
"kubernetes": {
- "owner": "terraform-providers",
+ "owner": "hashicorp",
+ "provider-source-address": "registry.terraform.io/hashicorp/kubernetes",
"repo": "terraform-provider-kubernetes",
- "rev": "v1.11.3",
- "sha256": "13j4xwibjgiqpzwbwd0d3z1idv0lwz78ip38khhmhwa78mjjb4zz",
- "version": "1.11.3"
+ "rev": "v1.13.3",
+ "sha256": "01hkbb81r3k630s3ww6379p66h1fsd5cd1dz14jm833nsr142c0i",
+ "version": "1.13.3"
},
"kubernetes-alpha": {
"owner": "hashicorp",
@@ -513,9 +522,10 @@
"owner": "hashicorp",
"provider-source-address": "registry.terraform.io/hashicorp/local",
"repo": "terraform-provider-local",
- "rev": "v1.4.0",
- "sha256": "1k1kbdn99ypn1pi6vqbs1l9a8vvf4vs32wl8waa16i26514sz1wk",
- "version": "1.4.0"
+ "rev": "v2.0.0",
+ "sha256": "0c1mk63lh3qmj8pl80lyvvsgyg4gg7673abr8cfxrj45635h74z5",
+ "vendorSha256": null,
+ "version": "2.0.0"
},
"logentries": {
"owner": "terraform-providers",
@@ -619,9 +629,10 @@
"owner": "hashicorp",
"provider-source-address": "registry.terraform.io/hashicorp/null",
"repo": "terraform-provider-null",
- "rev": "v2.1.2",
- "sha256": "0di1hxmd3s80sz8hl5q2i425by8fbk15f0r4jmnm6vra0cq89jw2",
- "version": "2.1.2"
+ "rev": "v3.0.0",
+ "sha256": "0r1kvsc96922i85hdvf1pk8aicxjr6bc69gc63qi21hrl0jpvr7r",
+ "vendorSha256": null,
+ "version": "3.0.0"
},
"nutanix": {
"owner": "terraform-providers",
@@ -709,11 +720,11 @@
"version": "0.8.0"
},
"packet": {
- "owner": "terraform-providers",
+ "owner": "packethost",
"repo": "terraform-provider-packet",
- "rev": "v2.9.0",
- "sha256": "0d9r272gidkwn4zr130ml047512qq5d5d599s63blzy6m38vilha",
- "version": "2.9.0"
+ "rev": "v3.2.0",
+ "sha256": "sha256-YIv4OPRbR00YTVwz0iJ/y6qTbj50nsi5ylrWEx1kZck=",
+ "version": "3.2.0"
},
"pagerduty": {
"owner": "terraform-providers",
@@ -739,9 +750,9 @@
"postgresql": {
"owner": "terraform-providers",
"repo": "terraform-provider-postgresql",
- "rev": "v1.6.0",
- "sha256": "0m9x60hrry0cqx4bhmql081wjcbay3750jwzqiph5vpj9717banf",
- "version": "1.6.0"
+ "rev": "v1.7.1",
+ "sha256": "0qlz00svvbwxslp8v7bi7mx5mvnjmh2cvg33a006gh4fy5n75shy",
+ "version": "1.7.1"
},
"powerdns": {
"owner": "terraform-providers",
@@ -789,9 +800,10 @@
"owner": "hashicorp",
"provider-source-address": "registry.terraform.io/hashicorp/random",
"repo": "terraform-provider-random",
- "rev": "v2.2.1",
- "sha256": "1qklsxj443vsj61lwl7qf7xwgnllwcvb2yk6s0kn9g3iq63pcv30",
- "version": "2.2.1"
+ "rev": "v3.0.0",
+ "sha256": "00dkpcri9ckp0kxwgh3p8175cyd44m8z13cb013pm4mrr61n4wq9",
+ "vendorSha256": null,
+ "version": "3.0.0"
},
"rightscale": {
"owner": "terraform-providers",
@@ -909,9 +921,10 @@
"owner": "hashicorp",
"provider-source-address": "registry.terraform.io/hashicorp/template",
"repo": "terraform-provider-template",
- "rev": "v2.1.2",
- "sha256": "18w1mmma81m9j7yf6q500w8v9ss28w6sw2ynssl99pyw2gwmd04q",
- "version": "2.1.2"
+ "rev": "v2.2.0",
+ "sha256": "12pn1i06jz4xl50md94yfdggg3pg5bv1viwf35izizm5rnyksyv2",
+ "vendorSha256": null,
+ "version": "2.2.0"
},
"tencentcloud": {
"owner": "terraform-providers",
@@ -934,13 +947,22 @@
"sha256": "1cl83afm00fflsd3skynjvncid3r74fkxfznrs1v8qypcg1j79g1",
"version": "0.18.0"
},
+ "time": {
+ "owner": "hashicorp",
+ "provider-source-address": "registry.terraform.io/hashicorp/time",
+ "repo": "terraform-provider-time",
+ "rev": "v0.6.0",
+ "sha256": "0fb81hisjicib9rzbn51jqfrchyjd3hzq98adnf22cbra8wlnxlm",
+ "version": "0.6.0"
+ },
"tls": {
"owner": "hashicorp",
"provider-source-address": "registry.terraform.io/hashicorp/tls",
"repo": "terraform-provider-tls",
- "rev": "v2.1.1",
- "sha256": "1qsx540pjcq4ra034q2dwnw5nmzab5h1c3vm20ppg5dkhhyiizq8",
- "version": "2.1.1"
+ "rev": "v3.0.0",
+ "sha256": "1p9d5wrr4xwf2i930zlcarm1zl8ysj3nyc6rrbhpxk04kr6ap0wz",
+ "vendorSha256": null,
+ "version": "3.0.0"
},
"triton": {
"owner": "terraform-providers",
@@ -1014,11 +1036,11 @@
"version": "0.1.0"
},
"vultr": {
- "owner": "terraform-providers",
+ "owner": "vultr",
"repo": "terraform-provider-vultr",
- "rev": "v1.3.0",
- "sha256": "0swc2fvp83d6w0cqvyxs346c756wr48xbn8m8jqkmma5s4ab2y4k",
- "version": "1.3.0"
+ "rev": "v1.5.0",
+ "sha256": "04qy366ignn53bbdj9s3032qr1x7h84q36qzl5ywydlw2va0qbsd",
+ "version": "1.5.0"
},
"wavefront": {
"owner": "terraform-providers",
diff --git a/infra/libkookie/nixpkgs/pkgs/applications/networking/cluster/terraform-providers/update-provider b/infra/libkookie/nixpkgs/pkgs/applications/networking/cluster/terraform-providers/update-provider
index c7094e1c77e4..e1f1a0ef38a5 100755
--- a/infra/libkookie/nixpkgs/pkgs/applications/networking/cluster/terraform-providers/update-provider
+++ b/infra/libkookie/nixpkgs/pkgs/applications/networking/cluster/terraform-providers/update-provider
@@ -1,42 +1,94 @@
#!/usr/bin/env nix-shell
-#! nix-shell -i bash -p coreutils curl jq
+#! nix-shell -i bash -p coreutils curl jq moreutils
# shellcheck shell=bash
+# vim: ft=sh
+#
+# Update a terraform provider to the latest version advertised at the
+# provider source address.
#
-# Update a terraform provider to the latest version advertised at
-# the provider source address.
set -euo pipefail
-USAGE=$(cat<<DOC
-Specify the terraform provider name to update.
+show_usage() {
+ cat <<DOC
+Usage: ./update-provider [--force] [--vendor] [<owner>/]<provider>
+
+Update a single provider in the providers.json inventory file.
+
+For example to update 'terraform-providers.aws' run:
+
+ ./update-provider aws
+
+If the provider is not in the list already, use the form '<owner>/<provider>'
+to add the provider to the list:
-Example:
-To update nixpkgs.terraform-providers.aws run:
-./update-provider aws
+ ./update-provider hetznercloud/hcloud
+
+Options:
+
+ * --force: Force the update even if the version matches.
+ * --vendor: Switch from go package to go modules with vendor.
+ * --vendor-sha256 <sha256>: Override the SHA256 or "null".
DOC
-)
+}
+
+force=
+provider=
+vendor=
+vendorSha256=
+
+while [[ $# -gt 0 ]]; do
+ case "$1" in
+ -h | --help)
+ show_usage
+ exit
+ ;;
+ --force)
+ force=1
+ shift
+ ;;
+ --vendor)
+ force=1
+ vendor=1
+ shift
+ ;;
+ --vendor-sha256)
+ force=1
+ vendorSha256=$2
+ shift 2
+ ;;
+ *)
+ if [[ -n "$provider" ]]; then
+ echo "ERROR: provider name was passed two times: '$provider' and '$1'"
+ echo "Use --help for more info"
+ exit 1
+ fi
+ provider=$1
+ shift
+ esac
+done
-provider_name="${1:-}"
-if [ -z "$provider_name" ]; then
- echo "No providers specified!"
+if [[ -z "$provider" ]]; then
+ echo "ERROR: No providers specified!"
echo
- echo "$USAGE"
+ show_usage
exit 1
fi
-provider_source_address="$(jq -r ".$provider_name.\"provider-source-address\"" providers.json)"
+provider_name=$(basename "$provider")
-if [ "$provider_source_address" == "null" ]; then
- echo "No provider source address specified with provider: $provider_name"
- exit 1
-fi
+# Usage: read_attr <key>
+read_attr() {
+ jq -r ".\"$provider_name\".\"$1\"" providers.json
+}
-# The provider source address (used inside Terraform `required_providers` block) is
-# used to compute the registry API endpoint
-#
-# registry.terraform.io/hashicorp/aws (provider source address)
-# registry.terraform.io/providers/hashicorp/aws (provider URL for the website)
-# registry.terraform.io/v1/providers/hashicorp/aws (provider URL for the JSON API)
-registry_response=$(curl -s https://"${provider_source_address/\///v1/providers/}")
+# Usage: update_attr <key> <value>
+update_attr() {
+ if [[ "$2" == "null" ]]; then
+ jq -S ".\"$provider_name\".\"$1\" = null" providers.json | sponge providers.json
+ else
+ jq -S ".\"$provider_name\".\"$1\" = \"$2\"" providers.json | sponge providers.json
+ fi
+}
prefetch_github() {
# of a given owner, repo and rev, fetch the tarball and return the output of
@@ -47,31 +99,80 @@ prefetch_github() {
nix-prefetch-url --unpack "https://github.com/$owner/$repo/archive/$rev.tar.gz"
}
+old_source_address="$(read_attr provider-source-address)"
+old_vendor_sha256=$(read_attr vendorSha256)
+old_version=$(read_attr version)
+
+if [[ $provider =~ ^[^/]+/[^/]+$ ]]; then
+ source_address=registry.terraform.io/$provider
+else
+ source_address=$old_source_address
+fi
+if [[ "$source_address" == "null" ]]; then
+ echo "Could not find the source address for provider: $provider"
+ exit 1
+fi
+update_attr "provider-source-address" "$source_address"
+
+# The provider source address (used inside Terraform `required_providers` block) is
+# used to compute the registry API endpoint
+#
+# registry.terraform.io/hashicorp/aws (provider source address)
+# registry.terraform.io/providers/hashicorp/aws (provider URL for the website)
+# registry.terraform.io/v1/providers/hashicorp/aws (provider URL for the JSON API)
+registry_response=$(curl -s https://"${source_address/\///v1/providers/}")
+
+version="$(jq -r '.version' <<< "$registry_response")"
+if [[ "$old_version" = "$version" && "$force" != 1 && -z "$vendorSha256" && "$old_vendor_sha256" != "$vendorSha256" ]]; then
+ echo "$provider_name is already at version $version"
+ exit
+fi
+update_attr version "$version"
+
provider_source_url="$(jq -r '.source' <<< "$registry_response")"
org="$(echo "$provider_source_url" | cut -d '/' -f 4)"
+update_attr owner "$org"
repo="$(echo "$provider_source_url" | cut -d '/' -f 5)"
+update_attr repo "$repo"
rev="$(jq -r '.tag' <<< "$registry_response")"
-
+update_attr rev "$rev"
sha256=$(prefetch_github "$org" "$repo" "$rev")
+update_attr sha256 "$sha256"
-version="$(jq -r '.version' <<< "$registry_response")"
+repo_root=$(git rev-parse --show-toplevel)
-updated_provider="$(mktemp)"
-cat <<EOF >> "$updated_provider"
-{
- "$provider_name": {
- "owner": "$org",
- "repo": "$repo",
- "rev": "$rev",
- "sha256": "$sha256",
- "version": "$version",
- "provider-source-address": "$provider_source_address"
- }
-}
-EOF
+if [[ -z "$vendorSha256" ]]; then
+ if [[ "$old_vendor_sha256" == null ]]; then
+ vendorSha256=null
+ elif [[ -n "$old_vendor_sha256" || "$vendor" = 1 ]]; then
+ echo "=== Calculating vendorSha256 ==="
+ update_attr vendorSha256 "0000000000000000000000000000000000000000000000000000000000000000"
+ # Hackish way to find out the desired sha256. First build, then extract the
+ # error message from the logs.
+ set +e
+ nix-build --no-out-link "$repo_root" -A "terraform-providers.$provider_name.go-modules" 2>vendor_log.txt
+ set -e
+ logs=$(< vendor_log.txt)
+ if ! [[ $logs =~ got:\ +([^\ ]+) ]]; then
+ echo "ERROR: could not find new hash in output:"
+ cat vendor_log.txt
+ rm -f vendor_log.txt
+ exit 1
+ fi
+ rm -f vendor_log.txt
+ vendorSha256=${BASH_REMATCH[1]}
+ # Deal with nix unstable
+ if [[ $vendorSha256 = sha256-* ]]; then
+ vendorSha256=$(nix to-base32 "$vendorSha256")
+ fi
+ fi
+fi
-original_provider_list="$(mktemp)"
-cat providers.json > "$original_provider_list"
+if [[ -n "$vendorSha256" ]]; then
+ update_attr vendorSha256 "$vendorSha256"
+fi
-jq --sort-keys --slurp '.[0] * .[1]' "$original_provider_list" "$updated_provider" > providers.json
+# Check that the provider builds
+echo "=== Building terraform-providers.$provider_name ==="
+nix-build "$repo_root" -A "terraform-providers.$provider_name"