diff --git a/assets/terraform-modules/packet/flatcar-linux/kubernetes/bootkube.tf b/assets/terraform-modules/packet/flatcar-linux/kubernetes/bootkube.tf index d1feef8f8..9f809b561 100644 --- a/assets/terraform-modules/packet/flatcar-linux/kubernetes/bootkube.tf +++ b/assets/terraform-modules/packet/flatcar-linux/kubernetes/bootkube.tf @@ -15,8 +15,8 @@ module "bootkube" { etcd_endpoints = packet_device.controllers.*.access_private_ipv4 # Select private Packet NIC by using the can-reach Calico autodetection option with the first - # host in our private CIDR. - network_ip_autodetection_method = "can-reach=${cidrhost(var.node_private_cidr, 1)}" + # controller's private IP. + network_ip_autodetection_method = "can-reach=${packet_device.controllers[0].access_private_ipv4}" pod_cidr = var.pod_cidr service_cidr = var.service_cidr diff --git a/assets/terraform-modules/packet/flatcar-linux/kubernetes/calico-host-protection.tf b/assets/terraform-modules/packet/flatcar-linux/kubernetes/calico-host-protection.tf index be6417b7a..c9fb388fb 100644 --- a/assets/terraform-modules/packet/flatcar-linux/kubernetes/calico-host-protection.tf +++ b/assets/terraform-modules/packet/flatcar-linux/kubernetes/calico-host-protection.tf @@ -30,11 +30,10 @@ resource "local_file" "calico_host_protection" { } ], management_cidrs = var.management_cidrs - cluster_cidrs = [ - var.node_private_cidr, + cluster_cidrs = concat([ var.pod_cidr, var.service_cidr - ], + ], var.node_private_cidrs), }) filename = "${var.asset_dir}/charts/kube-system/calico-host-protection.yaml" diff --git a/assets/terraform-modules/packet/flatcar-linux/kubernetes/variables.tf b/assets/terraform-modules/packet/flatcar-linux/kubernetes/variables.tf index 0d7d2a064..114552969 100644 --- a/assets/terraform-modules/packet/flatcar-linux/kubernetes/variables.tf +++ b/assets/terraform-modules/packet/flatcar-linux/kubernetes/variables.tf @@ -134,9 +134,9 @@ variable "management_cidrs" { type = list(string) } -variable "node_private_cidr" { - description = "Private IPv4 CIDR of the nodes used to allow inter-node traffic" - type = string +variable "node_private_cidrs" { + description = "List of private IPv4 CIDRs of the nodes used to allow inter-node traffic" + type = list(string) } variable "enable_aggregation" { diff --git a/ci/packet/packet-cluster.lokocfg.envsubst b/ci/packet/packet-cluster.lokocfg.envsubst index a608b35a5..44887020c 100644 --- a/ci/packet/packet-cluster.lokocfg.envsubst +++ b/ci/packet/packet-cluster.lokocfg.envsubst @@ -28,14 +28,14 @@ EOF project_id = "$PACKET_PROJECT_ID" - ssh_pubkeys = ["$PUB_KEY"] - management_cidrs = ["0.0.0.0/0"] - node_private_cidr = "10.0.0.0/8" + ssh_pubkeys = ["$PUB_KEY"] + management_cidrs = ["0.0.0.0/0"] + node_private_cidrs = ["10.0.0.0/8"] worker_pool "pool-1" { count = 2 node_type = "c2.medium.x86" - labels = { + labels = { "testing.io" = "yes", "roleofnode" = "testing", } diff --git a/ci/packet_arm/packet_arm-cluster.lokocfg.envsubst b/ci/packet_arm/packet_arm-cluster.lokocfg.envsubst index 7f263fffe..c376147bc 100644 --- a/ci/packet_arm/packet_arm-cluster.lokocfg.envsubst +++ b/ci/packet_arm/packet_arm-cluster.lokocfg.envsubst @@ -32,9 +32,9 @@ EOF os_channel = "alpha" controller_type = "c2.large.arm" - ssh_pubkeys = ["$PUB_KEY"] - management_cidrs = ["0.0.0.0/0"] - node_private_cidr = "10.0.0.0/8" + ssh_pubkeys = ["$PUB_KEY"] + management_cidrs = ["0.0.0.0/0"] + node_private_cidrs = ["10.0.0.0/8"] worker_pool "pool-1" { count = 1 diff --git a/ci/packet_fluo/packet_fluo-cluster.lokocfg.envsubst b/ci/packet_fluo/packet_fluo-cluster.lokocfg.envsubst index f46da2c4e..f1c123813 100644 --- a/ci/packet_fluo/packet_fluo-cluster.lokocfg.envsubst +++ b/ci/packet_fluo/packet_fluo-cluster.lokocfg.envsubst @@ -28,9 +28,9 @@ EOF project_id = "$PACKET_PROJECT_ID" - ssh_pubkeys = ["$PUB_KEY"] - management_cidrs = ["0.0.0.0/0"] - node_private_cidr = "10.0.0.0/8" + ssh_pubkeys = ["$PUB_KEY"] + management_cidrs = ["0.0.0.0/0"] + node_private_cidrs = ["10.0.0.0/8"] worker_pool "general" { count = 1 @@ -44,7 +44,7 @@ EOF } worker_pool "storage" { - count = 3 + count = 3 node_type = "c2.medium.x86" labels = { @@ -77,7 +77,7 @@ component "rook" { } component "rook-ceph" { - monitor_count = 3 + monitor_count = 3 enable_toolbox = true node_affinity { @@ -93,7 +93,7 @@ component "rook-ceph" { } storage_class { - enable = true + enable = true default = true } } diff --git a/cli/cmd/cluster/cluster.go b/cli/cmd/cluster/cluster.go index 954f6b32a..f22bd8bb7 100644 --- a/cli/cmd/cluster/cluster.go +++ b/cli/cmd/cluster/cluster.go @@ -18,6 +18,7 @@ import ( "fmt" "path/filepath" + "github.com/hashicorp/hcl/v2" "github.com/mitchellh/go-homedir" log "github.com/sirupsen/logrus" "helm.sh/helm/v3/pkg/action" @@ -58,11 +59,19 @@ func (cc clusterConfig) initialize(contextLogger *log.Entry) (*cluster, error) { } p, diags := getConfiguredPlatform(lokoConfig, true) - if diags.HasErrors() { - for _, diagnostic := range diags { + for _, diagnostic := range diags { + if diagnostic.Severity == hcl.DiagWarning { + contextLogger.Warn(diagnostic.Error()) + + continue + } + + if diagnostic.Severity == hcl.DiagError { contextLogger.Error(diagnostic.Error()) } + } + if diags.HasErrors() { return nil, fmt.Errorf("loading platform configuration") } diff --git a/cli/cmd/cluster/utils_internal_test.go b/cli/cmd/cluster/utils_internal_test.go index 4b31203fd..d728c0f3f 100644 --- a/cli/cmd/cluster/utils_internal_test.go +++ b/cli/cmd/cluster/utils_internal_test.go @@ -172,13 +172,13 @@ func TestGetKubeconfigSourceFlag(t *testing.T) { configFile: `cluster "packet" { asset_dir = "/bad" - cluster_name = "" - controller_count = 0 - facility = "" - management_cidrs = [] - node_private_cidr = "" - project_id = "" - ssh_pubkeys = [] + cluster_name = "" + controller_count = 0 + facility = "" + management_cidrs = [] + node_private_cidrs = ["10.10.10.10"] + project_id = "" + ssh_pubkeys = [] dns { provider = "" zone = "" @@ -214,13 +214,13 @@ func TestGetKubeconfigSourceConfigFile(t *testing.T) { configFile: `cluster "packet" { asset_dir = "/foo" - cluster_name = "" - controller_count = 0 - facility = "" - management_cidrs = [] - node_private_cidr = "" - project_id = "" - ssh_pubkeys = [] + cluster_name = "" + controller_count = 0 + facility = "" + management_cidrs = [] + node_private_cidrs = ["10.10.10.10"] + project_id = "" + ssh_pubkeys = [] dns { provider = "" zone = "" @@ -277,13 +277,13 @@ func TestGetKubeconfigFromAssetsDir(t *testing.T) { configFile: fmt.Sprintf(`cluster "packet" { asset_dir = "%s" - cluster_name = "" - controller_count = 0 - facility = "" - management_cidrs = [] - node_private_cidr = "" - project_id = "" - ssh_pubkeys = [] + cluster_name = "" + controller_count = 0 + facility = "" + management_cidrs = [] + node_private_cidrs = ["10.10.10.10"] + project_id = "" + ssh_pubkeys = [] dns { provider = "" zone = "" diff --git a/docs/configuration-reference/platforms/baremetal.md b/docs/configuration-reference/platforms/baremetal.md index a823598b9..7f465c71d 100644 --- a/docs/configuration-reference/platforms/baremetal.md +++ b/docs/configuration-reference/platforms/baremetal.md @@ -36,8 +36,6 @@ variable "controller_names" {} variable "worker_domains" {} variable "worker_macs" {} variable "worker_names" {} -variable "management_cidrs" {} -variable "node_private_cidr" {} variable "state_s3_bucket" {} variable "lock_dynamodb_table" {} variable "oidc_issuer_url" {} diff --git a/docs/configuration-reference/platforms/packet.md b/docs/configuration-reference/platforms/packet.md index 61ca8e4af..dd6534c99 100644 --- a/docs/configuration-reference/platforms/packet.md +++ b/docs/configuration-reference/platforms/packet.md @@ -35,7 +35,7 @@ variable "route53_zone_id" {} variable "packet_project_id" {} variable "ssh_public_keys" {} variable "management_cidrs" {} -variable "node_private_cidr" {} +variable "node_private_cidrs" {} variable "state_s3_bucket" {} variable "lock_dynamodb_table" {} variable "oidc_issuer_url" {} @@ -43,6 +43,7 @@ variable "oidc_client_id" {} variable "oidc_username_claim" {} variable "oidc_groups_claim" {} variable "worker_clc_snippets" {} +variable "worker_pool_facility" {} backend "s3" { bucket = var.state_s3_bucket @@ -89,7 +90,7 @@ cluster "packet" { management_cidrs = var.management_cidrs - node_private_cidr = var.node_private_cidr + node_private_cidrs = var.node_private_cidrs cluster_domain_suffix = "cluster.local" @@ -144,6 +145,8 @@ cluster "packet" { disable_bgp = false + facility = var.worker_pool_facility + node_type = var.workers_type os_channel = "stable" @@ -219,7 +222,8 @@ node_type = var.custom_default_worker_type | `os_version` | Flatcar Container Linux version to install. Version such as "2303.3.1" or "current". | "current" | string | false | | `ipxe_script_url` | Boot via iPXE. Required for arm64. | - | string | false | | `management_cidrs` | List of IPv4 CIDRs authorized to access or manage the cluster. Example ["0.0.0.0/0"] to allow all. | - | list(string) | true | -| `node_private_cidr` | Private IPv4 CIDR of the nodes used to allow inter-node traffic. Example "10.0.0.0/8" | - | string | true | +| `node_private_cidr` | (Deprecated, use `node_private_cidrs` instead) Private IPv4 CIDR of the nodes used to allow inter-node traffic. Example "10.0.0.0/8". | - | string | true | +| `node_private_cidrs` | List of Private IPv4 CIDRs of the nodes used to allow inter-node traffic. Example ["10.0.0.0/8"]. | - | list(string) | true | | `enable_aggregation` | Enable the Kubernetes Aggregation Layer. | true | bool | false | | `enable_tls_bootstrap` | Enable TLS bootstraping for Kubelet. | true | bool | false | | `encrypt_pod_traffic` | Enable in-cluster pod traffic encryption. If true `network_mtu` is reduced by 60 to make room for the encryption header. | false | bool | false | @@ -243,6 +247,7 @@ node_type = var.custom_default_worker_type | `worker_pool.os_channel` | Flatcar Container Linux channel to install from (stable, beta, alpha, edge). | "stable" | string | false | | `worker_pool.os_version` | Flatcar Container Linux version to install. Version such as "2303.3.1" or "current". | "current" | string | false | | `worker_pool.node_type` | Packet instance type for worker nodes. | "c3.small.x86" | string | false | +| `worker_pool.facility` | Packet facility to use for deploying the worker pool. Enable ["Backend Transfer"](https://metal.equinix.com/developers/docs/networking/features/#backend-transfer) on the Equinix Metal project for this to work. | Same as controller nodes. | string | false | | `worker_pool.labels` | Map of extra Kubernetes Node labels for worker nodes. | - | map(string) | false | | `worker_pool.taints` | Map of Taints to assign to worker nodes. | - | map(string) | false | | `worker_pool.reservation_ids` | Block with Packet hardware reservation IDs for worker nodes. Each key must have the format `worker-${index}` and the value is the reservation UUID. Can't be combined with `reservation_ids_default`. Key indexes must be sequential and start from 0. Example: `reservation_ids = { worker-0 = "" }`. | - | map(string) | false | diff --git a/docs/quickstarts/packet.md b/docs/quickstarts/packet.md index 8e6a04aa9..c7322daae 100644 --- a/docs/quickstarts/packet.md +++ b/docs/quickstarts/packet.md @@ -94,27 +94,27 @@ Create a file named `cluster.lokocfg` with the following contents: ```hcl cluster "packet" { - asset_dir = "./assets" - cluster_name = "lokomotive-demo" + asset_dir = "./assets" + cluster_name = "lokomotive-demo" dns { zone = "example.com" provider = "route53" } - facility = "ams1" + facility = "ams1" project_id = "89273817-4f44-4b41-9f0c-cb00bf538542" controller_type = "c3.small.x86" - ssh_pubkeys = ["ssh-rsa AAAA..."] - management_cidrs = ["0.0.0.0/0"] - node_private_cidr = "10.0.0.0/8" + ssh_pubkeys = ["ssh-rsa AAAA..."] + management_cidrs = ["0.0.0.0/0"] + node_private_cidrs = ["10.0.0.0/8"] controller_count = 1 worker_pool "pool-1" { - count = 2 + count = 2 node_type = "c3.small.x86" } } @@ -173,11 +173,11 @@ Your configurations are stored in ./assets Now checking health and readiness of the cluster nodes ... -Node Ready Reason Message - -lokomotive-demo-controller-0 True KubeletReady kubelet is posting ready status -lokomotive-demo-pool-1-worker-0 True KubeletReady kubelet is posting ready status -lokomotive-demo-pool-1-worker-1 True KubeletReady kubelet is posting ready status +Node Ready Reason Message + +lokomotive-demo-controller-0 True KubeletReady kubelet is posting ready status +lokomotive-demo-pool-1-worker-0 True KubeletReady kubelet is posting ready status +lokomotive-demo-pool-1-worker-1 True KubeletReady kubelet is posting ready status Success - cluster is healthy and nodes are ready! ``` @@ -219,13 +219,13 @@ Sample output: ``` { - "args": {}, + "args": {}, "headers": { - "Accept": "*/*", - "Host": "localhost:8080", + "Accept": "*/*", + "Host": "localhost:8080", "User-Agent": "curl/7.70.0" - }, - "origin": "127.0.0.1", + }, + "origin": "127.0.0.1", "url": "http://localhost:8080/get" } ``` diff --git a/examples/packet-production/cluster.lokocfg b/examples/packet-production/cluster.lokocfg index 993bfc8f7..a1db5fa9c 100644 --- a/examples/packet-production/cluster.lokocfg +++ b/examples/packet-production/cluster.lokocfg @@ -3,7 +3,7 @@ variable "route53_zone_id" {} variable "packet_project_id" {} variable "ssh_public_keys" {} variable "management_cidrs" {} -variable "node_private_cidr" {} +variable "node_private_cidrs" {} variable "cert_manager_email" {} variable "state_s3_bucket" {} variable "lock_dynamodb_table" {} @@ -76,9 +76,9 @@ cluster "packet" { project_id = var.packet_project_id - ssh_pubkeys = var.ssh_public_keys - management_cidrs = var.management_cidrs - node_private_cidr = var.node_private_cidr + ssh_pubkeys = var.ssh_public_keys + management_cidrs = var.management_cidrs + node_private_cidrs = var.node_private_cidrs worker_pool "pool-1" { count = var.workers_count diff --git a/examples/packet-testing/cluster.lokocfg b/examples/packet-testing/cluster.lokocfg index 21f417b9f..ea8ded76d 100644 --- a/examples/packet-testing/cluster.lokocfg +++ b/examples/packet-testing/cluster.lokocfg @@ -33,8 +33,8 @@ variable "management_cidrs" { default = ["0.0.0.0/0"] } -variable "node_private_cidr" { - default = "10.0.0.0/8" +variable "node_private_cidrs" { + default = ["10.0.0.0/8"] } cluster "packet" { @@ -54,9 +54,9 @@ cluster "packet" { project_id = var.packet_project_id - ssh_pubkeys = var.ssh_public_keys - management_cidrs = var.management_cidrs - node_private_cidr = var.node_private_cidr + ssh_pubkeys = var.ssh_public_keys + management_cidrs = var.management_cidrs + node_private_cidrs = var.node_private_cidrs worker_pool "pool-1" { count = var.workers_count diff --git a/go.mod b/go.mod index c6b90d537..fccf396ea 100644 --- a/go.mod +++ b/go.mod @@ -1,6 +1,6 @@ module github.com/kinvolk/lokomotive -go 1.12 +go 1.15 require ( github.com/MakeNowJust/heredoc v1.0.0 // indirect diff --git a/pkg/assets/generated_assets.go b/pkg/assets/generated_assets.go index 383e49b03..26ec7a002 100644 --- a/pkg/assets/generated_assets.go +++ b/pkg/assets/generated_assets.go @@ -6700,9 +6700,9 @@ var vfsgenAssets = func() http.FileSystem { "/terraform-modules/packet/flatcar-linux/kubernetes/bootkube.tf": &vfsgen۰CompressedFileInfo{ name: "bootkube.tf", modTime: time.Date(1970, 1, 1, 0, 0, 1, 0, time.UTC), - uncompressedSize: 2112, + uncompressedSize: 2125, - compressedContent: []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\x8c\x56\xdd\x6a\x23\x47\x13\xbd\xd7\x53\x14\xda\x6f\x61\xfd\x61\x8f\xd6\xce\x06\x76\x0d\x22\x24\x76\x08\xbe\x31\x26\x7b\x91\x0b\x63\x9a\x56\x77\x8d\xa6\x51\xab\x6b\xe8\xaa\x91\xac\x2c\x7e\xf7\x50\xd3\x1a\x79\x2c\xdb\x21\x83\xc1\xd0\xe7\xcc\xa9\xae\xbf\x33\x8a\xe4\x6c\x64\xf8\x31\x01\xb0\x6d\x30\x8c\x79\x83\x19\xe6\x50\x53\x5e\x5b\xf9\x34\xfd\xc8\x67\x6d\x0e\x1b\x2b\x58\x7d\xe4\xe9\x29\x6c\x6c\xae\x5c\xec\x58\x30\x9b\x64\xd7\x58\x4e\x7c\x62\xf3\x37\x25\x3c\x99\x3c\x4d\x26\x6b\xf2\x5d\x44\x98\x2e\x88\x64\xd5\x2d\x70\xda\xab\x33\x75\xd9\x21\x94\x67\x0e\xd3\xaa\x9a\x95\xbf\x03\x6d\x02\x30\x56\x86\xf9\xab\x60\x93\x09\xc0\x07\xb8\xb2\x29\x91\x40\xc7\x08\x6e\xe7\x62\x70\xe0\xb1\xc5\xe4\x31\xb9\x80\x0c\x94\xc0\x51\x92\x4c\x31\x62\x66\xa0\x0c\xd2\x60\xc8\x70\x7d\xfb\x1d\x32\x3a\xca\x9e\x5f\x24\xcb\x70\x78\xe6\x70\xdf\xd7\xa3\x7a\x46\x1f\x5e\x72\x0d\x3e\x0a\xe6\x64\xa3\x72\x9f\x6b\xf4\x9f\x6a\xa3\x52\x28\xce\xbf\x8a\x5b\xa4\x20\x9c\x82\x87\x90\xa0\xb5\x6e\x85\x62\x3c\x6e\x82\xc3\x6a\x9c\xcb\xe5\xb8\x2d\x2a\xf5\xd1\xbf\x17\x39\xbc\x11\xdc\x32\xab\x6e\xc8\x00\xe3\x9c\x95\x77\x80\x26\x00\x09\x65\x4b\x79\x65\xd6\xd2\x1d\xd3\x46\xd0\x90\x0c\x26\xdf\x52\x48\xc2\x07\xe2\xbb\xf7\xaf\xfe\x5f\x59\xe7\x90\xd9\xec\x47\xca\x84\x76\xf3\xa5\x34\xf5\x3b\x46\x74\x02\x7b\x00\xee\x7a\x0d\xb8\xbd\xb9\x82\xc5\x0e\x3a\x0e\x69\xa9\x6d\x04\x67\xd3\x59\x46\xeb\x1a\xb8\xb2\x31\x38\x02\xdb\x09\x79\x14\x74\x12\x28\x01\xb5\xfd\xbf\x6d\x90\xa6\xa7\xd7\x21\xb3\xf4\xfa\x0d\xb1\x68\x71\xa9\xcb\x87\x20\x57\x37\xd7\x7f\x56\xa3\x84\x43\x6b\x5e\xc8\x99\x35\x4a\x43\x5e\xa7\xf5\x10\x77\xfe\xbf\x1f\x2e\xf8\xac\x72\x9f\xfa\x8a\x90\xc7\x43\x3a\x8a\x9c\xc2\xf9\xc9\xd3\x54\x93\x6a\xc9\xf7\x27\x00\xaf\xeb\x3d\x60\xba\x18\x98\xb5\x50\x47\xd4\x42\x1b\x63\xa3\xf5\xf0\xb4\xb6\x21\x19\xee\xea\x3a\x3c\x1e\xed\xc9\x0b\x4c\x9b\x94\xec\x22\xa2\xc9\xd8\x52\x16\x2d\xe3\x48\xfe\x18\x7b\xa6\xdb\xe5\x32\xe3\xd2\xf6\xd5\x3c\xa6\x8f\x30\x4d\xd3\x61\x16\x36\x1b\x1b\x83\x0f\xb2\x33\x2d\xe6\x40\xde\x34\xd4\x65\x1e\xae\xf6\x3e\xa3\x34\xff\x3a\xb0\x2a\xf7\x2d\x63\x8c\x75\xdf\x2d\xf4\xa0\xb6\x10\x51\xb4\x47\xbe\x50\x8c\xc2\xa6\xc0\x66\x0f\xef\xa3\xfc\x0b\xa3\x0f\xf2\xfb\xa3\x64\x0b\x75\xb4\x4b\x06\x21\xf8\xf5\xee\x06\xca\x22\xaa\xbc\x12\x8d\x6d\x43\x39\xd1\x2d\xcf\xd6\x14\x6e\x51\x7f\x9f\x50\x52\xf8\x2d\x92\x5b\x41\x19\x6f\x95\xdf\x0f\xf0\x1a\xc5\x7a\x2b\x76\xe8\xb2\xc6\xfa\x50\x06\x52\xa4\xe5\xcb\xd9\x6c\xbb\xdd\x56\x65\x63\x2a\x47\xeb\x99\xc7\x0d\x46\x6a\x31\xf3\xcc\x93\xe3\xd9\xde\x2b\x66\x2b\xdc\x9d\xd5\x68\xa5\xcb\xc8\xb3\x41\x75\x76\x50\x1b\x4e\x06\xa9\x84\x02\xdc\x50\x17\x3d\xd8\xb8\xb5\x3b\x86\x8c\x4c\x71\x83\x7a\xb7\xf3\x6f\x17\xd5\xd7\xcf\xd5\xd7\xea\xfc\xe2\x8b\x5e\x68\xa1\x77\x47\x6f\x06\x91\x7e\xdc\x34\xf1\xfb\xe9\x98\x3a\xfb\xe9\x62\xfa\xa0\xd9\xaa\x63\xb3\x64\xdb\x1a\xa1\x15\x26\x7e\x3d\x51\x12\xd9\x1c\x58\xf0\x8b\x1a\xb2\xb3\xf2\x69\xef\xae\xcf\x96\x60\x8e\xa4\x1e\x8a\x6b\xe9\x36\xbe\x06\xf9\x04\x2e\xe1\xfe\xe1\x79\x48\x5f\x46\x79\xff\x02\xa5\x43\x7f\x21\x84\xc4\x62\x63\x04\xd7\x7b\xc7\x99\x0e\xc9\x59\x9b\x69\x70\x0f\xd7\xd8\x2c\xfa\xfd\xd8\x37\x6f\xdb\x04\xd7\x00\x37\xa1\x65\xf8\xe3\xf6\x8e\x4f\x81\x09\xb6\xbd\x09\x0d\xf3\x08\xb5\x0d\x91\x6d\x8d\xa0\x2b\xc4\xea\x30\xc5\x98\xb4\xae\x03\x66\x42\x5a\x50\x97\x7c\x3f\x95\xa6\x10\xe7\x43\x26\x2e\xef\x5a\x3d\xf4\x46\xb2\xad\xeb\xe0\x8e\x2c\xe0\x0d\x86\xe6\x13\x96\x89\x32\x9a\xc7\x9f\x3f\x7f\x33\x2e\x19\xd7\xa0\x5b\xed\xdf\x78\x0b\xea\x17\x95\x52\x92\x6c\xdd\xca\xac\xed\xa3\x6e\xa1\x71\x94\x0f\x9f\xd9\x37\xc1\xfe\xb5\x48\x9d\x37\x6d\xa6\x4d\xf0\xfd\x4f\x83\xe9\xf0\x0d\x9c\x4e\x9e\x26\xff\x04\x00\x00\xff\xff\xd6\xf1\x4c\xed\x40\x08\x00\x00"), + compressedContent: []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\x8c\x56\xdf\x6b\xe3\x46\x10\x7e\xf7\x5f\x31\xe8\x1a\x7a\x57\x12\x29\x97\x5e\xe1\x2e\x60\x4a\x9b\x2b\x25\x2f\x21\x70\x0f\x7d\x08\x61\x59\xef\x8e\xac\xc5\xeb\x1d\xb1\x33\xb2\xe3\x1e\xf9\xdf\xcb\x6a\x2d\x5b\x76\xec\x72\x22\x10\xd8\xef\xd3\x37\xfb\xcd\x2f\xd9\x93\xd1\x9e\xe1\xfb\x04\x40\xb7\x4e\x31\xc6\x15\x46\x98\x42\x4d\x71\xa9\xe5\x7d\x71\xc1\x57\x6d\x74\x2b\x2d\x58\x5e\x70\x71\x09\x2b\x1d\x4b\xe3\x3b\x16\x8c\x2a\xe8\x25\xe6\x13\x1b\x58\xfd\x4b\x01\x3f\x4c\x5e\x27\x93\x25\xd9\xce\x23\x14\x33\x22\x59\x74\x33\x2c\x7a\x75\xa6\x2e\x1a\x84\xfc\x4c\xa1\x28\xcb\x2a\xff\xed\x68\x13\x80\xb1\x32\x4c\xdf\x04\x9b\x4c\x00\xde\xc1\x9d\x0e\x81\x04\x3a\x46\x30\x1b\xe3\x9d\x01\x8b\x2d\x06\x8b\xc1\x38\x64\xa0\x00\x86\x82\x44\xf2\x1e\x23\x03\x45\x90\x06\x5d\x84\xaf\x0f\xdf\x20\xa2\xa1\x68\xf9\xc0\x2c\xc3\xee\x99\xc2\x53\x9f\x8f\x72\x8f\x3e\x1f\x72\x15\xbe\x08\xc6\xa0\x7d\xe2\xee\x73\xf4\x43\xb9\x49\x52\x28\xc6\xbe\x89\x9b\xa5\xc0\x5d\x82\x05\x17\xa0\xd5\x66\x81\xa2\x2c\xae\x9c\xc1\x72\xec\xe5\x76\x5c\x96\x24\x75\x61\xcf\x45\x76\x27\x82\x6b\xe6\xa4\xeb\x22\xc0\xd8\x73\xe2\xed\xa0\x09\x40\x40\x59\x53\x5c\xa8\xa5\x74\xc7\xb4\x11\x34\x98\xc1\x60\x5b\x72\x41\x78\x47\x3c\x7b\xff\xf2\x97\x52\x1b\x83\xcc\x6a\xdb\x52\xca\xb5\xab\x4f\xb9\xa8\xdf\xd0\xa3\x11\xd8\x02\xf0\xd8\x6b\xc0\xc3\xfd\x1d\xcc\x36\xd0\xb1\x0b\xf3\x54\x46\x30\x3a\x5c\x45\xd4\xa6\x81\x3b\xed\x9d\x21\xd0\x9d\x90\x45\x41\x23\x8e\x02\x50\xdb\xff\x5b\x3b\x69\x7a\x7a\xed\x22\x4b\xaf\xbf\xbf\xc6\xcf\xbc\x8b\x72\xff\x58\x8e\xfc\xba\x56\x1d\xa8\xa9\x25\x4a\x43\x36\x35\xeb\x2e\xec\xf4\xa7\xef\x67\xed\x3d\x5d\x3f\x9f\xf2\xf7\x5a\x24\x87\x2d\x59\x65\x9c\x3d\x48\xfd\x90\xd5\x01\x4b\x53\x82\x31\xc9\x1e\x51\x33\x6d\x8c\x8d\x66\xc5\xd2\x52\xbb\xa0\xb8\xab\x6b\xf7\x72\x34\x34\x07\x58\xaa\x58\xd0\x33\x8f\x2a\x62\x4b\x51\x52\x4e\x47\xf2\xc7\xd8\x9e\xae\xe7\xf3\x88\x73\xdd\xa7\xf6\x98\x3e\xc2\x92\x4d\x83\x51\x58\xad\xb4\x77\xd6\xc9\x46\xb5\x18\x1d\x59\xd5\x50\x17\x79\xb8\xda\x79\x46\xee\x84\xaf\x8e\x93\x72\x5f\x3f\x46\x5f\x43\x43\x2c\x68\x21\xed\x08\x8f\x92\x2a\x66\x33\x45\x25\x58\x65\x58\x6d\xe1\x6d\x94\xff\x61\xf4\x41\xfe\x7a\x91\xa8\xa1\xf6\x7a\xce\x20\x04\x7f\x3c\xde\x43\x9e\xca\x24\x9f\x88\x4a\xb7\x2e\x9f\xa4\x91\x8f\x5a\x65\x6e\x56\x3f\x4f\xc8\x16\xfe\xf4\x64\x16\x90\x7b\x21\xc9\x6f\xbb\x79\x89\xa2\xad\x16\x3d\x54\x39\xc5\x7a\xd7\xbf\xd0\x88\xb4\x7c\x5b\x55\xeb\xf5\xba\xcc\xfd\x55\x1a\x5a\x56\x16\x57\xe8\xa9\xc5\xc8\x95\x25\xc3\xd5\x76\x71\x54\x0b\xdc\x5c\xd5\xa8\xa5\x8b\xc8\xd5\xa0\x5a\xed\xd4\x86\x93\x41\x2a\xa0\x00\x37\xd4\x79\x0b\xda\xaf\xf5\x86\x21\x22\x93\x5f\x61\xba\xdb\xc7\x2f\x37\xe5\xe7\xeb\xf2\x73\xf9\xf1\xe6\x53\xba\xd0\x2c\xdd\x1d\xad\x1a\x44\xfa\x76\x4b\xc6\x9f\x8a\x31\xb5\xfa\xf5\xa6\x78\x4e\x6e\xd3\xfa\x66\x89\xba\x55\x42\x0b\x0c\xfc\xb6\xa3\xc4\xb3\xda\xb1\xe0\xf7\x34\x8a\x46\xcb\xfb\xed\xaa\xdd\x0f\x90\x3a\x92\x7a\xce\x2b\x2c\xcd\xe6\x5b\x90\x3f\xc0\x2d\x3c\x3d\xef\x9b\xf4\x30\xca\xf9\x0b\xe4\x0a\xfd\x83\xe0\x02\x8b\xf6\x1e\x4c\xbf\x48\xae\x52\x93\x5c\xb5\x91\x86\x55\x62\x1a\x1d\x25\x7d\x4c\xb6\xc5\x5b\x37\xce\x34\xc0\x8d\x6b\x19\xfe\x7e\x78\xe4\x4b\x60\x82\x75\xbf\x91\x86\x7e\x84\x5a\x3b\xcf\xba\x46\x48\x23\xc4\x69\x97\xe7\x2d\x95\xf2\x3a\x60\xca\x85\x19\x75\xc1\xf6\x5d\xa9\x32\x71\x3a\x38\x31\x71\xd3\xa6\x43\xab\x24\xea\xba\x76\xe6\x68\x05\x9c\x60\x24\x3f\x6e\x1e\x28\xa2\x7a\xf9\xed\xfa\x8b\x32\x41\x99\x06\xcd\x62\xfb\xc6\x29\xa8\x1f\x54\x0a\x41\xa2\x36\x0b\xb5\xd4\x2f\x69\x0a\x95\xa1\xb8\xfb\xe6\x9e\x04\xfb\xd7\x3c\x75\x56\xb5\x91\x56\xce\xf6\xbf\x13\x8a\xe1\x83\x58\x4c\x5e\x27\xff\x05\x00\x00\xff\xff\xcf\x35\x0f\x17\x4d\x08\x00\x00"), }, "/terraform-modules/packet/flatcar-linux/kubernetes/bootstrap-configs.tf": &vfsgen۰CompressedFileInfo{ name: "bootstrap-configs.tf", @@ -6714,9 +6714,9 @@ var vfsgenAssets = func() http.FileSystem { "/terraform-modules/packet/flatcar-linux/kubernetes/calico-host-protection.tf": &vfsgen۰CompressedFileInfo{ name: "calico-host-protection.tf", modTime: time.Date(1970, 1, 1, 0, 0, 1, 0, time.UTC), - uncompressedSize: 1504, + uncompressedSize: 1507, - compressedContent: []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\x94\x53\x4f\xab\xe3\x46\x0c\xbf\xfb\x53\x08\xb3\x87\x6e\x49\x3c\xdd\x43\x29\x3c\xc8\xe9\xed\xa1\xb7\x85\xf6\xdd\x4a\x09\xca\x58\x79\x1e\x22\x8f\xcc\x48\xce\x6b\x78\xe4\xbb\x97\x19\xdb\x71\xc8\x6e\xb7\x6c\x2e\x06\x8d\x7e\x7f\xf4\x93\xe2\x1c\xbc\x7c\xf9\xfc\xe5\x09\x9e\xc7\x94\x28\x1a\x5f\x36\x70\x10\xb1\xd3\x78\x20\x08\x51\x0d\x99\x15\x90\x19\x7c\x87\xc9\x14\x42\x84\x01\x13\x32\x13\x6f\xe0\xad\x0b\xbe\x03\x8f\xa3\x92\x56\xce\x81\x47\x0e\x5e\xb6\x9d\xa8\x6d\x87\x24\x46\xde\x82\xc4\x09\xba\xb0\x61\x29\x99\xc0\x11\x03\x83\x78\x8f\x1a\x24\x22\x67\x65\x54\x08\x96\x89\x5e\xa9\x48\x15\x00\xb5\x70\xa0\xa3\x24\x02\xeb\x08\x9e\x8b\xc4\x42\x69\x4a\x7c\x6c\x2a\xe7\x32\xe8\x45\xe0\x4d\xd2\x09\x93\x8c\xb1\x05\xeb\x82\x42\x50\x1d\x69\x03\x6f\x04\x3d\x9e\x08\x30\x02\xfd\x63\x09\xc1\xcb\x70\x01\x39\xde\x33\x3e\xff\xf1\x39\x4b\x9a\x64\xaa\x5c\xbf\xc5\xd0\x63\x0c\x47\x52\x53\x68\x43\x22\x6f\x92\x26\xab\xd6\x89\x12\xbc\x05\x66\x38\x10\xe0\x30\x70\xa0\x36\xa3\x67\xbb\x39\xb5\xdf\x89\xfb\x39\xba\x06\x5e\xb2\x25\x8a\x3a\x26\xca\x68\xb4\x49\x3f\x0b\x63\x22\xf0\x89\xd0\x6e\xd3\x2e\x36\xbe\x9f\xe9\x5d\x4a\x4b\x0c\x7f\x12\x41\x67\x36\xe8\x93\x73\xaf\xc1\xba\xf1\xd0\x78\xe9\xdd\x29\xc4\xb3\xf0\xc9\xb1\x9c\xa4\x17\x0b\x67\x72\x25\x1d\x75\x9f\x3e\xfd\xf6\x2b\x1c\x25\x41\x9f\x5d\xb7\x64\x18\x58\x9b\x2a\x91\xca\x98\x3c\x41\xcd\xe2\x91\xf7\xc7\xc0\x54\x43\x3d\xf9\xd9\xfb\xd4\x6a\x0d\xef\x15\x64\xe4\x9e\xd0\x77\xb0\x83\xdc\xa2\x64\x3f\xd5\x1f\xde\xcf\x98\x1a\x54\x25\xdb\xb7\x21\x5d\xdd\x14\x81\xcb\x79\x6e\xf5\xa2\x46\xbd\x9b\x88\x5c\x21\xda\x40\xfd\x73\x73\xc1\x9e\xeb\x8f\x55\x05\xe0\x25\x1a\x45\x83\x99\xf2\x87\xf9\xdc\x87\xf7\xec\xa8\x39\x23\x8f\x74\xad\x3f\x66\x97\x81\x29\x62\x4f\xb0\x83\xaf\xd9\x6e\x1b\xde\xce\x69\xfb\x36\x3d\x92\x54\xd7\xea\x7f\x22\xc9\x2b\xda\xaf\x2b\x9a\xd2\x59\x46\xd9\x81\x51\x3f\x30\x1a\x2d\x13\x0d\x68\x5d\xd3\x4b\x3b\x32\x5d\xdd\xb7\xb7\x5c\x22\x69\xac\x1f\xb8\xde\x14\x36\x80\x22\x42\xb1\x1d\x24\x44\x53\xd8\xc1\x5f\xa5\x5c\xd6\x00\x2d\x9d\x83\xa7\xe9\x3f\xea\x4f\x79\xba\x52\x68\xb2\x89\x24\xcc\x94\x14\x9e\xe6\xfe\xf7\xf9\x0b\x50\x62\x59\x7f\x25\xa0\x19\x98\xd5\xf2\xf3\x75\x7b\x90\xd8\xfe\x52\x6f\x56\x90\xb4\xb4\x5f\x91\x3b\x78\x40\xac\x9d\x21\x1a\xa5\x23\xfa\xb9\x7d\x07\xf5\x23\x17\xe3\x81\x38\xcf\xb2\x7a\x02\xa8\x4b\x16\xcb\xa4\x75\xc6\x85\xf8\x9a\x48\xb5\xbe\xef\xca\x3e\xec\x32\x50\x7d\x33\xbf\x0e\xbb\x36\x5e\xab\xfb\xef\xdf\x93\x74\x8f\x11\x5f\xa9\xa7\x68\x7b\x1f\xda\x94\x0d\xe4\xbb\x78\x2c\x97\x5e\xcf\xa3\x1a\xa5\x5b\xe3\x92\x7a\x06\x94\x28\x86\x14\xce\x68\x54\x1a\x36\x77\x8f\x83\xb4\x5f\xd5\x94\x52\xce\xaa\xd4\x57\x43\xd7\x72\xfa\xdf\xbd\xd3\xff\xbc\xfa\x6f\x1e\x4e\x3e\xd9\x7f\x03\x00\x00\xff\xff\x52\x2d\x58\x11\xe0\x05\x00\x00"), + compressedContent: []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\x94\x53\x4f\x8b\xeb\x46\x0c\xbf\xfb\x53\x08\xf3\x0e\x6f\x4b\xe2\xe9\x3b\x94\xc2\x42\x4e\xfb\x0e\xbd\x3d\x68\xf7\x56\x4a\x50\xc6\xca\x7a\x88\x3c\x32\x23\x39\xdb\xb0\xe4\xbb\x97\x19\xdb\x71\xd8\xbe\x6e\x79\xb9\x18\x34\xfa\xfd\xd1\x4f\x8a\x73\xf0\xfc\xed\xeb\xb7\x47\x78\x1a\x53\xa2\x68\x7c\xd9\xc0\x41\xc4\x4e\xe3\x81\x20\x44\x35\x64\x56\x40\x66\xf0\x1d\x26\x53\x08\x11\x06\x4c\xc8\x4c\xbc\x81\xd7\x2e\xf8\x0e\x3c\x8e\x4a\x5a\x39\x07\x1e\x39\x78\xd9\x76\xa2\xb6\x1d\x92\x18\x79\x0b\x12\x27\xe8\xc2\x86\xa5\x64\x02\x47\x0c\x0c\xe2\x3d\x6a\x90\x88\x9c\x95\x51\x21\x58\x26\x7a\xa1\x22\x55\x00\xd4\xc2\x81\x8e\x92\x08\xac\x23\x78\x2a\x12\x0b\xa5\x29\xf1\xb1\xa9\x9c\xcb\xa0\x67\x81\x57\x49\x27\x4c\x32\xc6\x16\xac\x0b\x0a\x41\x75\xa4\x0d\xbc\x12\xf4\x78\x22\xc0\x08\xf4\xb7\x25\x04\x2f\xc3\x05\xe4\x78\xcf\xf8\xf4\xfb\xd7\x2c\x69\x92\xa9\x72\xfd\x16\x43\x8f\x31\x1c\x49\x4d\xa1\x0d\x89\xbc\x49\x9a\xac\x5a\x27\x4a\xf0\x1a\x98\xe1\x40\x80\xc3\xc0\x81\xda\x8c\x9e\xed\xe6\xd4\x7e\x23\xee\xe7\xe8\x1a\x78\xce\x96\x28\xea\x98\x28\xa3\xd1\x26\xfd\x2c\x8c\x89\xc0\x27\x42\xbb\x4d\xbb\xd8\xf8\x38\xd3\xbb\x94\x96\x18\xfe\x20\x82\xce\x6c\xd0\x47\xe7\x5e\x82\x75\xe3\xa1\xf1\xd2\xbb\x53\x88\x67\xe1\x93\x63\x39\x49\x2f\x16\xce\xe4\x4a\x3a\xea\xbe\x7c\xf9\xf5\x17\x38\x4a\x82\x3e\xbb\x6e\xc9\x30\xb0\x36\x55\x22\x95\x31\x79\x82\x9a\xc5\x23\xef\x8f\x81\xa9\x86\x7a\xf2\xb3\xf7\xa9\xd5\x1a\xde\x2a\xc8\xc8\x3d\xa1\xef\x60\x07\xb9\x45\xc9\x3e\xd7\x9f\xde\xce\x98\x1a\x54\x25\xdb\xb7\x21\x5d\xdd\x14\x81\xcb\x79\x6e\xf5\xa2\x46\xbd\x9b\x88\x5c\x21\xda\x40\xfd\x53\x73\xc1\x9e\xeb\x87\xaa\x02\xf0\x12\x8d\xa2\xc1\x4c\xf9\xc3\x7c\xee\xd3\x5b\x76\xd4\x9c\x91\x47\xba\xd6\x0f\xd9\x65\x60\x8a\xd8\x13\xec\xe0\xdf\x6c\xb7\x0d\x6f\xe7\xb4\x7d\x9b\xde\x93\x54\xd7\xea\x7f\x22\xc9\x2b\xda\xaf\x2b\x9a\xd2\x59\x46\xd9\x81\x51\x3f\x30\x1a\x2d\x13\x0d\x68\x5d\xd3\x4b\x3b\x32\x5d\xdd\xf7\xb7\x5c\x22\x69\xac\x1f\xb8\xde\x14\x36\x80\x22\x42\xb1\x1d\x24\x44\x53\xd8\xc1\x9f\xa5\x5c\xd6\x00\x2d\x9d\x83\xa7\xe9\x3f\xea\x4f\x79\xba\x52\x68\xb2\x89\x24\xcc\x94\x14\x1e\xe7\xfe\xb7\xf9\x0b\x50\x62\x59\x7f\x25\xa0\x19\x98\xd5\xf2\xf3\x75\x7b\x90\xd8\xfe\x5c\x6f\x56\x90\xb4\xb4\x5f\x91\x3b\x78\x87\x58\x3b\x43\x34\x4a\x47\xf4\x73\xfb\x0e\xea\xf7\x5c\x8c\x07\xe2\x3c\xcb\xea\x09\xa0\x2e\x59\x2c\x93\xd6\x19\x17\xe2\x4b\x22\xd5\xfa\xbe\x2b\xfb\xb0\xcb\x40\xf5\xcd\xfc\x3a\xec\xda\x78\xad\xee\xbf\x7f\x4d\xd2\x3d\x46\x7c\xa1\x9e\xa2\xed\x7d\x68\x53\x36\x90\xef\xe2\x7d\xb9\xf4\x7a\x1e\xd5\x28\xdd\x1a\xbd\x44\x8f\xf6\x79\x09\x3f\xe3\x06\x69\xcb\xf3\xe6\xae\xa6\x94\x72\x2a\xa5\x3e\x4b\x97\x7a\x49\x6f\x48\xe1\x8c\x36\x3d\xea\x43\x86\x5d\xcb\xf5\x7f\x78\xaa\xff\x79\xf8\xdf\xbd\x9d\x7c\xb5\xff\x04\x00\x00\xff\xff\x72\x8f\x3a\x1a\xe3\x05\x00\x00"), }, "/terraform-modules/packet/flatcar-linux/kubernetes/calico-host-protection.yaml.tmpl": &vfsgen۰CompressedFileInfo{ name: "calico-host-protection.yaml.tmpl", @@ -6779,9 +6779,9 @@ var vfsgenAssets = func() http.FileSystem { "/terraform-modules/packet/flatcar-linux/kubernetes/variables.tf": &vfsgen۰CompressedFileInfo{ name: "variables.tf", modTime: time.Date(1970, 1, 1, 0, 0, 1, 0, time.UTC), - uncompressedSize: 6428, + uncompressedSize: 6444, - compressedContent: []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xa4\x58\x7b\x53\xdc\x38\x12\xff\x7f\x3e\x45\xd7\xec\x56\x01\x55\xd8\x3c\x96\x25\x81\xda\x5c\x55\x02\xc9\x86\x0b\xb0\xdc\x41\xee\xae\xf6\x36\xe5\x68\xa4\xb6\xad\x45\x96\x7c\x92\x3c\x8f\xa4\xf2\xdd\xaf\x5a\xb2\x87\x79\x78\x08\xdc\xe5\x9f\x00\x6e\xfd\xfa\xa7\x7e\xb7\x7e\x80\xf3\xeb\x5b\xb0\xc8\x8d\x15\x6e\x30\x18\x33\x2b\xd9\x48\x21\x0c\xb9\x6a\x9c\x47\x9b\x69\x56\xe1\x10\xbe\x0e\x00\xfc\xac\x46\x68\xff\xbd\x02\xe7\xad\xd4\xc5\x00\x40\xa0\xe3\x56\xd6\x5e\x1a\x0d\xaf\x60\xf8\x51\xcb\xff\x34\x08\xed\x71\xa0\xe3\xb0\x5d\x5b\xac\x51\x0b\x14\xe0\x0d\x08\xed\xb2\x2f\x46\xe3\xce\x70\xf0\x6d\x51\x63\xf7\xf7\xe7\x68\x23\xf2\xbf\x1b\x8d\xb0\x8d\x69\x91\x02\x4e\x59\x55\x2b\x4c\xb9\xa9\x56\xd1\x6b\x6b\xfe\x44\xee\x33\x29\x22\xfe\x0a\xd0\x0d\xe3\xf7\xe8\xa1\x95\x82\x8b\xf3\x16\xf1\x68\xff\x67\xcc\xf1\x84\x27\x9c\xe3\x49\x72\xc4\x5f\x1c\x24\x2f\x5f\xf0\x83\xe4\xe4\xe8\x84\x1f\x9e\xec\x8f\x0e\x5f\x08\xbe\xaa\x8a\x35\xbe\xcc\xbc\xb9\x47\xfd\x98\xaa\xd7\x8d\x2f\x21\x48\x75\xaa\x3e\x7c\x3c\xff\xfd\xe2\xcc\xeb\x0f\xf9\xf5\xbb\xa3\xe6\xaf\xb7\xbf\x4e\xa7\x97\xf2\xe8\xd7\xf2\x9f\xd3\xf2\xcb\x87\x9b\x3f\xa3\x9a\x1f\xe0\xda\x08\x5c\x72\x95\x71\x19\xb3\xbc\xfc\x8e\xdd\x72\xd6\x28\xdf\xfe\x79\xc8\x2a\x71\x7c\x34\x5c\xe7\xf6\x4e\x31\xcf\x99\x85\x33\xa3\x3d\x93\x1a\x2d\x5c\x4a\xdd\x4c\x81\xf0\xa5\x47\xee\x1b\x8b\xe4\x43\xa9\x9d\x67\x4a\xc1\x76\x00\xda\x05\x66\xab\xe3\xa3\x55\x3b\x18\x97\xf1\x92\x69\x8d\xea\x39\xd4\x9c\xa7\xd3\xcf\xe0\xd6\xea\x58\xa4\x95\x5b\x53\xc1\x76\x44\xda\x85\x11\x7a\xb6\x0b\x4c\xd5\x25\xdb\x05\x14\xc5\x5a\xe4\x19\x97\x8d\xd1\x3a\x69\xf4\x73\x88\xf2\xc6\x5a\xd4\xfe\x19\x4c\x5b\x25\x4b\x06\xcc\x8d\xed\xc2\x16\xb6\x0e\x0f\x4e\x0e\xd2\x9f\xd3\xfd\x2d\x48\xc0\x21\x42\xe9\x7d\xed\x4e\xf7\xf6\x26\x93\x49\x9a\x47\xd0\x44\x11\x54\x6a\x6c\xb1\x67\x51\x21\x73\xe8\xf6\x76\x76\xc1\x68\x35\x03\xc2\x92\x37\xff\x7a\xbb\x72\x3d\x6e\xb4\xb7\x46\x29\xb4\x19\x37\x8d\xf6\x7d\x97\xd4\x4d\x35\x42\xbb\x76\xc9\x83\xf5\xcb\x5d\x07\x49\x30\x39\x3c\xe0\x3a\xd8\x96\x29\xa6\x50\x31\x4a\x7a\xb7\x6a\xdf\x05\x02\xa4\xf5\x59\x46\xfe\x29\x75\x15\x53\x2a\x9d\xbe\x3c\xee\xb1\x74\x9b\x4b\xc1\x9a\x9a\x63\x04\x25\x33\x2c\x70\x5b\x21\x23\xeb\x29\x66\x11\x24\x6b\xec\x62\x68\xce\x59\x0c\x00\x28\xcd\x3c\x9e\x06\x73\x26\x23\x63\xbc\xd4\x05\x74\x7e\x35\x1a\x5a\xc5\x66\x8c\x16\xde\xdf\xdd\xdd\xdc\x82\x74\x90\x33\xa9\x48\x4e\x34\x21\x49\x18\x8c\x9a\x02\xa4\x0e\x20\x69\x00\xbd\x2b\xa5\x83\x9a\x79\x5e\x92\xbc\x6b\xea\xda\xb8\x58\x15\x73\x39\x05\x5f\x4a\x77\x1a\x9c\x7e\xba\xb7\x57\x48\x9f\x12\xd7\xe0\xea\xf0\x43\x21\xfd\x1e\x37\x55\x25\xbd\x90\x79\xbe\x37\x3a\xce\x73\x3c\x7c\xc9\x0e\x03\xf2\x7b\x33\xc1\x31\xda\x5d\xf0\x25\x42\x53\x3b\x6f\x91\x55\x01\x95\x33\x0d\x13\x63\xef\x63\x8c\x4c\x4a\xd4\x41\x26\xb2\x76\x68\xe9\x0a\xc2\xa0\x03\x6d\x3c\x58\x54\x33\xba\x1f\x2a\x45\x56\xe6\x01\x9b\x37\x76\x8c\x2e\x85\x5b\x03\x13\x04\x57\x9a\x46\x09\x68\x5c\x87\x31\x8f\xbd\x08\xe6\x60\x22\x7d\x69\x1a\x3f\x07\x69\x01\x76\x81\x69\x01\xc6\x97\x68\x27\xd2\x61\x80\xee\x50\x52\x78\x67\xac\x6f\x34\xf3\xa8\x66\xbb\xe0\x24\x79\x33\x26\x70\xda\xc6\xf9\x4a\x06\x68\xf4\x4f\xa4\x2d\x7d\xc7\x99\x44\x47\x08\x8c\xea\xfc\x48\x61\x45\xce\xf1\x25\xf3\xc0\x09\x3f\x1c\xba\xf0\x50\x32\x07\x23\x44\x0d\xb5\x71\x4e\x52\xd0\x78\x03\x9a\x79\x39\x26\x2d\x5d\xe6\x76\xc1\x20\x2b\x56\xa0\x03\xe6\xc0\xe4\xb9\xe4\x92\x29\xf8\xed\x16\x4c\x0c\xd1\x79\xa4\xec\x06\xf0\x51\xe3\x1f\xac\x15\x4a\x67\x0a\x77\x25\x5a\xa4\x68\xd0\x26\x96\xd1\x65\x64\x60\x63\x26\x55\x08\xdd\x39\x58\xba\x90\x27\xaf\x60\x38\x1c\xac\x27\xc6\xa5\xe1\xcc\xb7\xb5\x46\x19\x26\x82\xcb\xeb\x29\x02\xc5\x32\x44\xd1\x50\x26\x57\xb2\x23\x67\x5c\x2a\xe9\x67\xcf\x69\xc2\x6d\x2e\x74\x47\x43\x8f\xc7\x5a\x99\x59\x50\xda\x4d\x02\x52\x3f\x52\x96\x14\xcf\x9c\x96\x75\x8d\xde\xf5\x69\x56\xd2\xf9\xed\xa8\x7e\x67\x5d\xff\xd9\x1c\x68\xad\xe2\x9e\x19\x9d\xcb\x02\xe6\xd8\x6b\x05\xe6\xdf\x9f\x62\x53\x8d\x82\x8d\x0d\x46\x5b\x64\xe9\x5c\x99\xdd\xe3\xec\x7f\xa0\x75\x7b\xfb\x1e\xea\x66\xa4\x24\x07\x02\x08\x3e\x6f\x1c\x5a\xd8\xe2\xc6\xe2\xd6\xea\xd0\xe0\x1c\xfa\x4c\x48\xbb\x61\x66\x08\xc3\x02\x30\x10\xd2\x22\xf7\xc6\x86\x4c\xb6\x08\x05\x6a\xb4\xcc\xa3\x80\x80\xe0\xba\x50\x1f\x21\xd4\x8a\x71\x14\xb0\xcd\xa3\x51\x1c\x38\xe4\x16\x3d\x95\xe7\x0d\xae\x5d\x62\xa4\xd1\x53\xd9\xc8\x2a\xdf\xf4\x73\x2a\x67\x4e\x72\xa6\xe0\x3a\x0a\xc2\xd5\xdd\xc7\x74\x1d\xba\xed\x2c\xbd\xd0\xb2\xce\x58\xe3\x8d\x40\x1a\x2d\xa4\xd1\x59\x85\xbe\x34\xfd\x13\xda\x55\xf8\x14\x8c\x30\x3f\x12\x02\xac\x34\xce\xc3\xc5\xcd\xf8\x08\x98\x10\x16\x9d\xdb\x78\xbd\xb5\xee\x92\x4b\xeb\x7c\x92\x9b\x46\x8b\xd5\x71\xd1\x88\x8c\x4b\xd1\xef\x8d\xb3\x8b\xf3\xbf\x47\x8d\x96\xe9\x22\xd6\x7a\xe7\x64\xa1\xe1\x43\x33\x42\xab\xd1\xa3\x83\xda\x88\x67\x30\x39\xd8\x4f\x0f\xd3\xfd\x74\x7f\xef\xe0\x78\x85\x09\x15\x55\xc9\x71\x23\x9b\x5f\x7e\x79\xfb\xdb\xf9\xe0\x49\x94\x5a\x28\x97\x0e\xee\x4a\x84\x83\x60\x36\x98\x48\xa5\x28\x5a\x2c\x86\xf2\x2d\x42\x9c\xde\x37\x23\xcc\x58\x2d\x63\x45\x8f\x4d\xe5\x60\xdf\x97\x1b\x0f\x50\x48\x0b\xed\xd2\x01\x91\x19\x2c\x5c\xbb\xe7\xca\xf1\xba\x3f\xf5\x5f\xb7\xdb\x3b\x84\xa9\x98\xd4\x99\x6b\xf2\x5c\x4e\x7b\xbd\xf0\xb7\x06\xad\xc4\x98\x57\x51\x3a\x76\x9e\x40\x36\x9e\x9b\x73\x65\xda\x4d\xd0\xa2\x80\xd1\x6c\x4e\x15\xce\x5b\x3e\xd2\x75\x45\x2a\x55\x86\x02\x3a\xce\xe3\xb9\x31\x69\x4b\x39\x75\x63\x9e\x2e\xc9\xec\xc0\xd3\x7d\xbb\x74\x70\xe5\xba\xa8\xe9\xff\xcc\x62\x6d\x2c\xcd\x18\x7d\x65\x66\x64\x8c\x5a\xbf\xfe\xdb\x70\x12\x1a\x47\x4d\x82\xda\x89\x66\x6a\xe6\x25\x77\x30\x07\xa3\x28\xe8\x46\x01\x07\xdb\x67\x4c\x49\x6e\x76\xd6\x8b\x60\xce\x94\xc3\x65\x5e\x15\xd3\xac\xc0\x0a\xb5\x0f\x81\xe7\x7a\x3d\x70\x29\x9d\xa7\x41\x30\xc4\x1d\x45\xa0\xa3\xdc\x2c\x8d\x95\x5f\xe2\x50\xc3\x38\x47\xe7\x88\x5d\xc4\x5b\x6c\x08\xeb\xf6\x5b\x2a\xa7\xcb\xf5\xc2\x08\xcc\x6a\x2b\xc7\xcc\x6f\x4e\x84\xe1\x4d\x14\x78\xa0\x43\xdc\x48\x23\x1d\x77\x54\x7b\x23\x29\xa5\xcc\x04\xa4\xf6\x68\x13\xfa\x02\xde\x32\xea\xdc\x4f\xab\x8a\xad\xc3\x58\x51\x58\x2c\x42\xb7\xe8\xe5\xd2\x7a\x87\xb4\x2f\x24\xe0\xeb\x87\x53\x70\xc9\x66\x68\x61\xbb\xf5\x84\x23\x66\xde\x36\xd8\x53\x9c\xe7\xfe\x5f\xf4\x19\xc9\x2e\x33\x8b\xf9\x18\xc0\x33\x29\xfa\x3d\x76\x5b\x23\x97\xf9\xac\x1b\x5f\x4b\x66\xc5\x84\x59\x8a\xbf\xc5\xb3\x71\x91\x68\x67\x6a\x97\xc2\x6b\xa8\x58\xdd\xf6\x1b\xba\xd1\x3d\x86\x09\xa6\x62\x21\x77\xb6\x1e\x1a\x79\xf2\xe3\x8f\x5f\xa5\x16\x38\xfd\xb6\x15\x66\x3d\x12\x1e\x33\xd5\x84\xf9\x86\x7e\x59\xd0\x03\x17\xe7\x69\xdc\x65\xc3\x58\x56\xd3\x27\xed\xe3\x44\x86\x51\x21\x25\x2f\x0d\x88\x0f\x30\x26\x87\xcf\x2b\xf7\xcc\x5a\xbb\x7c\x86\xce\x14\x29\xbc\x8d\x0b\xd5\x29\xac\xc8\xc2\x2b\xf8\xba\xb0\x1a\x24\xfb\xf0\x0a\xfe\x18\xfe\xb2\x2c\xf5\x97\x3f\x86\xf0\x6d\xdd\x0b\x15\xab\x97\x7a\xfd\xa2\x33\xbe\x7e\x7b\xd4\x15\x1d\xc5\xcd\xe5\xfb\xa6\x9b\x34\xc3\x35\xdd\x29\x0c\x87\xc1\x80\x43\x8d\x53\x9f\xcc\x47\xc0\x61\x3a\x18\x74\x2e\x64\x73\x0e\xcb\x46\x0d\xce\xd3\x73\xbb\x52\x52\xa1\xe8\xcc\xba\x6a\xbc\xcf\x83\x8a\xd5\x29\xbc\xd6\x80\x55\xed\x67\x6d\xc4\x43\x85\x4c\x3b\x18\x92\xed\xb5\x99\x47\xc9\xa2\xa2\x61\x0a\x9f\x97\xb9\x7d\x0e\xfe\x1a\xf0\xd2\x18\x47\x05\x77\xb6\xc4\x2b\x4c\xd9\x15\x2d\x3e\x18\x23\xa1\x36\x46\x6d\x39\x10\x48\x1d\x29\x9a\x9a\x2e\xdc\x0d\x91\x4f\x6d\x24\xab\x6f\x48\xd2\x85\xf4\x74\xa8\xf2\x8c\x06\x03\x14\x19\xf5\x32\x85\xbd\xc6\x1f\x9e\x47\xf9\xd8\x32\x50\xe5\x10\xcf\x40\x7b\xa6\x1b\xf6\x63\xe3\xe8\xbc\xd8\x9f\xa0\x7d\x55\xc2\x2b\x97\xd1\xc0\xed\xbc\x65\xf5\x63\x75\xe2\xee\xf2\x16\xde\x74\x82\xc1\x83\x1f\x22\x83\x9e\x81\x6a\x5d\x1b\xcd\x52\x68\x1f\x34\xc5\xc7\xa7\xc7\x6b\x76\x10\x49\xa4\x88\x79\x1a\x7e\x89\xe3\x21\x7d\x44\xc6\xcb\x10\x43\x3d\xea\x43\x95\x66\x7a\xb6\xd3\x0e\xce\x68\xbd\xcc\x25\x67\x7e\xf9\x51\x8a\xa3\xf5\x2e\x1b\x33\x25\x85\xf4\xb3\xac\x46\x2b\x8d\xc8\x4a\xd3\x6c\xe8\x25\xff\x68\x25\x49\x3d\xad\x57\xa1\x53\x2c\x60\x53\x04\xc7\xd3\x4f\x7d\xbb\x78\xf9\xe2\x78\x7f\xd9\x4e\x9e\x15\xdf\x31\x0a\x2b\x5c\x0c\xd5\x6e\x70\xa8\xad\xa9\x59\x11\xe6\x6b\x6f\xda\xf7\x8d\x98\x5d\xdf\xe9\x5f\x6b\x8b\xc6\xf0\x2a\xb4\x40\xf1\x66\x76\x7a\x69\xee\x4d\x65\x68\x9f\x1c\xee\xc2\xf0\xcc\x22\xe1\xbf\x99\x9d\x7e\xd4\x2e\x24\xb7\x44\x31\xfc\xb4\xde\x01\xa9\x8e\xd4\xa8\x45\xb6\xa1\xe7\x5c\xb1\xfb\xb6\xc3\x3e\x2c\x44\xb1\x10\xc4\x73\x60\x62\x11\x50\xed\x6d\x2d\x3a\xd3\xd8\x50\xe1\xaf\x64\x51\xfa\xf0\x92\x56\xe0\x2e\x54\x8d\xf3\xdd\xae\x1c\xba\xe6\x68\x06\x4c\x03\x6a\x91\xd0\x02\xf3\x58\x4c\xac\x5e\x5b\x37\x6a\x25\x58\x97\x47\xcb\x0c\xa7\xde\xb2\x2c\x57\x9b\x5c\xf3\x96\xbe\x43\xf8\x0e\x35\xad\x38\xc1\x11\x94\xab\xc9\x42\xae\x26\x73\xc0\x4d\x11\xbb\xd1\x2f\x9f\x56\x33\x97\xdb\x59\xed\x33\x5a\x00\xba\xc1\xe0\x91\xc4\x95\x3a\xe9\x16\xdc\x9a\xb6\x93\x78\x02\x5a\x14\x69\xf4\xa6\x04\x7e\xc2\x0c\x26\x0b\x6d\x2c\x66\xd3\x9f\xf7\x4f\x32\xae\x33\x5e\x22\xbf\xef\xe5\x72\x11\x04\xe1\xec\x1a\x82\x4c\xc8\x15\x3a\xb5\x94\x40\xff\x07\x11\x6e\xb4\xf6\x96\xf1\xfb\xac\x62\x53\x4a\xe5\x8c\x66\xe8\x5e\x2a\x49\x32\x17\x4e\x2a\x36\x4d\x6a\xb4\x09\x09\xb7\xfd\xbb\xdb\x2d\x92\xda\x9a\xe9\x2c\x85\x2b\x36\x95\x55\x53\xb5\x29\x4c\x41\x79\xfd\xfa\x8e\xe2\x57\xc7\x85\xb0\x1d\x8b\x18\xbf\x87\x9a\xd6\xfb\x9b\x8f\x61\x7c\x87\xed\xfd\xf0\xb0\x81\x6c\x8c\x6d\x48\x57\xd2\x03\x73\x89\x74\xa1\xa0\x45\xd3\x75\xc9\xd0\xf1\x91\x7a\x41\x79\x88\xa9\x9d\xc7\x16\xd6\xff\x06\x00\x00\xff\xff\xe5\x3f\xd7\xa3\x1c\x19\x00\x00"), + compressedContent: []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xa4\x58\x7b\x53\xdc\x38\x12\xff\x7f\x3e\x45\xd7\xec\x56\x01\x55\xd8\x3c\x96\x25\x81\xda\x5c\x55\x02\xc9\x86\x0b\xb0\xdc\x41\xee\xae\xf6\x36\xe5\x68\xa4\xb6\xad\x45\x96\x7c\x6a\x79\x1e\x49\xe5\xbb\x5f\x49\xb2\x87\x79\x78\x08\xdc\xe5\x9f\x00\x6e\xfd\xfa\xa7\x7e\xb7\x7e\x80\xf3\xeb\x5b\xb0\xc8\x8d\x15\x34\x18\x8c\x99\x95\x6c\xa4\x10\x86\x5c\x35\xe4\xd0\x66\x9a\x55\x38\x84\xaf\x03\x00\x37\xab\x11\xda\x7f\xaf\x80\x9c\x95\xba\x18\x00\x08\x24\x6e\x65\xed\xa4\xd1\xf0\x0a\x86\x1f\xb5\xfc\x4f\x83\xd0\x1e\x07\x7f\x1c\xb6\x6b\x8b\x35\x6a\x81\x02\x9c\x01\xa1\x29\xfb\x62\x34\xee\x0c\x07\xdf\x16\x35\x76\x7f\x7f\x8e\x36\x4f\xfe\x77\xa3\x11\xb6\x31\x2d\x52\xc0\x29\xab\x6a\x85\x29\x37\xd5\x2a\x7a\x6d\xcd\x9f\xc8\x5d\x26\x45\xc4\x5f\x01\xba\x61\xfc\x1e\x1d\xb4\x52\x70\x71\xde\x22\x1e\xed\xff\x8c\x39\x9e\xf0\x84\x73\x3c\x49\x8e\xf8\x8b\x83\xe4\xe5\x0b\x7e\x90\x9c\x1c\x9d\xf0\xc3\x93\xfd\xd1\xe1\x0b\xc1\x57\x55\xb1\xc6\x95\x99\x33\xf7\xa8\x1f\x53\xf5\xba\x71\x25\x04\xa9\x4e\xd5\x87\x8f\xe7\xbf\x5f\x9c\x39\xfd\x21\xbf\x7e\x77\xd4\xfc\xf5\xf6\xd7\xe9\xf4\x52\x1e\xfd\x5a\xfe\x73\x5a\x7e\xf9\x70\xf3\x67\x54\xf3\x03\x5c\x1b\x81\x4b\xae\x32\x94\x31\xcb\xcb\xef\xd8\x2d\x67\x8d\x72\xed\x9f\x87\xac\x12\xc7\x47\xc3\x75\x6e\xef\x14\x73\x9c\x59\x38\x33\xda\x31\xa9\xd1\xc2\xa5\xd4\xcd\x14\x3c\xbe\x74\xc8\x5d\x63\xd1\xfb\x50\x6a\x72\x4c\x29\xd8\x0e\x40\xbb\xc0\x6c\x75\x7c\xb4\x6a\x07\x43\x19\x2f\x99\xd6\xa8\x9e\x43\x8d\x9c\x3f\xfd\x0c\x6e\xad\x8e\x45\x5a\xb9\x35\x15\x6c\x47\xa4\x5d\x18\xa1\x63\xbb\xc0\x54\x5d\xb2\x5d\x40\x51\xac\x45\x9e\xa1\x6c\x8c\x96\xa4\xd1\xcf\x21\xca\x1b\x6b\x51\xbb\x67\x30\x6d\x95\x2c\x19\x30\x37\xb6\x0b\x5b\xd8\x3a\x3c\x38\x39\x48\x7f\x4e\xf7\xb7\x20\x01\x42\x84\xd2\xb9\x9a\x4e\xf7\xf6\x26\x93\x49\x9a\x47\xd0\x44\x79\xa8\xd4\xd8\x62\xcf\xa2\x42\x46\x48\x7b\x3b\xbb\x60\xb4\x9a\x81\xc7\x92\x37\xff\x7a\xbb\x72\x3d\x6e\xb4\xb3\x46\x29\xb4\x19\x37\x8d\x76\x7d\x97\xd4\x4d\x35\x42\xbb\x76\xc9\x83\xf5\xcb\x5d\x07\x49\x30\x39\x3c\xe0\x12\x6c\xcb\x14\x53\xa8\x98\x4f\x7a\x5a\xb5\xef\x02\x01\xaf\xf5\x59\x46\xfe\x29\xa5\x8a\x29\x95\x4e\x5f\x1e\xf7\x58\xba\xcd\xa5\x60\x4d\xcd\x31\x82\x7a\x33\x2c\x70\x5b\x21\x23\xeb\x29\x66\x11\x24\x6b\xec\x62\x68\xce\x59\x0c\x00\x7c\x9a\x39\x3c\x0d\xe6\x4c\x46\xc6\x38\xa9\x0b\xe8\xfc\x6a\x34\xb4\x8a\xcd\x18\x2d\xbc\xbf\xbb\xbb\xb9\x05\x49\x90\x33\xa9\xbc\x9c\x68\x42\x92\x30\x18\x35\x05\x48\x1d\x40\xd2\x00\x7a\x57\x4a\x82\x9a\x39\x5e\x7a\x79\x6a\xea\xda\x50\xac\x8a\xb9\x9c\x82\x2b\x25\x9d\x06\xa7\x9f\xee\xed\x15\xd2\xa5\x9e\x6b\x70\x75\xf8\xa1\x90\x6e\x8f\x9b\xaa\x92\x4e\xc8\x3c\xdf\x1b\x1d\xe7\x39\x1e\xbe\x64\x87\x01\xf9\xbd\x99\xe0\x18\xed\x2e\xb8\x12\xa1\xa9\xc9\x59\x64\x55\x40\xe5\x4c\xc3\xc4\xd8\xfb\x18\x23\x93\x12\x75\x90\x89\xac\x09\xad\xbf\x82\x30\x48\xa0\x8d\x03\x8b\x6a\xe6\xef\x87\x4a\x79\x2b\xf3\x80\xcd\x1b\x3b\x46\x4a\xe1\xd6\xc0\x04\x81\x4a\xd3\x28\x01\x0d\x75\x18\xf3\xd8\x8b\x60\x04\x13\xe9\x4a\xd3\xb8\x39\x48\x0b\xb0\x0b\x4c\x0b\x30\xae\x44\x3b\x91\x84\x01\xba\x43\x49\xe1\x9d\xb1\xae\xd1\xcc\xa1\x9a\xed\x02\x49\xef\xcd\x98\xc0\x69\x1b\xe7\x2b\x19\xa0\xd1\x3d\x91\xb6\x74\x1d\x67\x2f\x3a\x42\x60\xbe\xce\x8f\x14\x56\xde\x39\xae\x64\x0e\xb8\xc7\x0f\x87\x2e\x1c\x94\x8c\x60\x84\xa8\xa1\x36\x44\xd2\x07\x8d\x33\xa0\x99\x93\x63\xaf\xa5\xcb\xdc\x2e\x18\x64\xc5\x0a\x24\x60\x04\x26\xcf\x25\x97\x4c\xc1\x6f\xb7\x60\x62\x88\xce\x23\x65\x37\x80\x8f\x1a\xf7\x60\xad\x50\x3a\x53\xb8\x2b\xd1\xa2\x8f\x06\x6d\x62\x19\x5d\x46\x06\x36\x66\x52\x85\xd0\x9d\x83\xa5\x0b\x79\xf2\x0a\x86\xc3\xc1\x7a\x62\x5c\x1a\xce\x5c\x5b\x6b\x94\x61\x22\xb8\xbc\x9e\x22\xf8\x58\x86\x28\x1a\xca\xe4\x4a\x76\xe4\x8c\x4b\x25\xdd\xec\x39\x4d\xb8\xcd\x85\xee\x68\xe8\xf1\x58\x2b\x33\x0b\x4a\xbb\x49\x40\xea\x47\xca\x92\xe2\x19\x69\x59\xd7\xe8\xa8\x4f\xb3\x92\xe4\xb6\xa3\xfa\x9d\x75\xfd\x67\x73\xa0\xb5\x8a\x7b\x66\x74\x2e\x0b\x98\x63\xaf\x15\x98\x7f\x7f\x8a\x4d\x35\x0a\x36\x36\x18\x6d\x91\x25\x51\x99\xdd\xe3\xec\x7f\xa0\x75\x7b\xfb\x1e\xea\x66\xa4\x24\x07\x0f\x10\x7c\xde\x10\x5a\xd8\xe2\xc6\xe2\xd6\xea\xd0\x40\x84\x2e\x13\xd2\x6e\x98\x19\xc2\xb0\x00\x0c\x84\xb4\xc8\x9d\xb1\x21\x93\x2d\x42\x81\x1a\x2d\x73\x28\x20\x20\x50\x17\xea\x23\x84\x5a\x31\x8e\x02\xb6\x79\x34\x0a\x01\x21\xb7\xe8\x7c\x79\xde\xe0\xda\x25\x46\x1a\x9d\x2f\x1b\x59\xe5\x9a\x7e\x4e\xe5\x8c\x24\x67\x0a\xae\xa3\x20\x5c\xdd\x7d\x4c\xd7\xa1\xdb\xce\xd2\x0b\x2d\xeb\x8c\x35\xce\x08\xf4\xa3\x85\x34\x3a\xab\xd0\x95\xa6\x7f\x42\xbb\x0a\x9f\x82\x11\xe6\x47\x42\x80\x95\x86\x1c\x5c\xdc\x8c\x8f\x80\x09\x61\x91\x68\xe3\xf5\xd6\xba\x4b\x2e\x2d\xb9\x24\x37\x8d\x16\xab\xe3\xa2\x11\x19\x97\xa2\xdf\x1b\x67\x17\xe7\x7f\x8f\x1a\x2d\xd3\x45\xac\xf5\x44\xb2\xd0\xf0\xa1\x19\xa1\xd5\xe8\x90\xa0\x36\xe2\x19\x4c\x0e\xf6\xd3\xc3\x74\x3f\xdd\xdf\x3b\x38\x5e\x61\xe2\x8b\xaa\xe4\xb8\x91\xcd\x2f\xbf\xbc\xfd\xed\x7c\xf0\x24\x4a\x2d\x14\xa5\x83\xbb\x12\xe1\x20\x98\x0d\x26\x52\x29\x1f\x2d\x16\x43\xf9\x16\x21\x4e\xef\x9b\x11\x66\xac\x96\xb1\xa2\xc7\xa6\x72\xb0\xef\xca\x8d\x07\x7c\x48\x0b\x4d\xe9\xc0\x93\x19\x2c\x5c\xbb\xe7\xca\xf1\xba\x3f\xf5\x5f\xb7\xdb\x3b\x84\xa9\x98\xd4\x19\x35\x79\x2e\xa7\xbd\x5e\xf8\x5b\x83\x56\x62\xcc\xab\x28\x1d\x3b\x4f\x20\x1b\xcf\xcd\xb9\x32\x4d\x13\xb4\x28\x60\x34\x9b\x53\x85\xf3\x96\x8f\xa4\xae\x48\xa5\xca\xf8\x80\x8e\xf3\x78\x6e\x4c\xda\x52\x4e\x69\xcc\xd3\x25\x99\x1d\x78\xba\x6f\x97\x0e\xae\x5c\x17\xb5\xff\x3f\xb3\x58\x1b\xeb\x67\x8c\xbe\x32\x33\x32\x46\xad\x5f\xff\x6d\x38\x09\x0d\xf9\x26\xe1\xdb\x89\x66\x6a\xe6\x24\x27\x98\x83\xf9\x28\xe8\x46\x01\x82\xed\x33\xa6\x24\x37\x3b\xeb\x45\x30\x67\x8a\x70\x99\x57\xc5\x34\x2b\xb0\x42\xed\x42\xe0\x51\xaf\x07\x2e\x25\x39\x3f\x08\x86\xb8\xf3\x11\x48\x3e\x37\x4b\x63\xe5\x97\x38\xd4\x30\xce\x91\xc8\xb3\x8b\x78\x8b\x0d\x61\xdd\x7e\x4b\xe5\x74\xb9\x5e\x18\x81\x59\x6d\xe5\x98\x39\x7c\x02\x9f\x56\x72\x91\x97\xc9\x83\x6e\x0f\x44\xbe\x0a\x47\x7a\x4a\x99\x09\x48\xed\xd0\x26\xfe\x0b\x38\xcb\x7c\x0f\x7f\x0e\xb5\xd6\x81\xac\x28\x2c\x16\xa1\x7b\xf4\x52\x6b\xbd\xe5\x39\x2c\x24\xe4\xeb\x87\x53\x70\xc9\x66\x68\x61\xbb\xf5\x0c\x79\x7e\xce\x36\xd8\x53\xac\xe7\xf1\xb0\xe8\x43\x2f\xbb\xcc\x2c\xe6\x67\x00\xcf\xa4\xe8\xb7\xd8\x6d\x8d\x5c\xe6\xb3\x6e\x9c\x2d\x99\x15\x13\x66\x7d\x3c\x2e\x9e\x8d\x8b\x45\x3b\x63\x53\x0a\xaf\xa1\x62\x75\xdb\x7f\xfc\x8d\xee\x31\x4c\x34\x15\x0b\xb9\xb4\xf5\xd0\xd8\x93\x1f\x7f\xfc\x2a\xb5\xc0\xe9\xb7\xad\x30\xfb\x79\xe1\x31\x53\x4d\x98\x77\xfc\x2f\x0b\x7a\xe0\xe2\x3c\x8d\xbb\x6d\x18\xd3\x6a\xff\x49\xbb\x38\xa1\x61\x54\xe8\x93\xd9\x0f\x8c\x0f\x30\x26\x87\xcf\x2b\xf7\xcc\x5a\xbb\x7c\x86\xce\x14\x29\xbc\x8d\x0b\xd6\x29\xac\xc8\xc2\x2b\xf8\xba\xb0\x2a\x24\xfb\xf0\x0a\xfe\x18\xfe\xb2\x2c\xf5\x97\x3f\x86\xf0\x6d\xdd\x0b\x15\xab\x97\x7a\xff\xa2\x33\xbe\x7e\x7b\xd4\x15\x1d\xc5\xcd\xe5\xfc\xa6\x9b\x3c\xc3\x35\xe9\x14\x86\xc3\x60\xc0\xa1\xc6\xa9\x4b\xe6\x23\xe1\x30\x1d\x0c\x3a\x17\xb2\x39\x87\x65\xa3\x06\xe7\xe9\xb9\x5d\x7d\x24\xa3\xe8\xcc\xba\x6a\xbc\xcf\x83\x8a\xd5\x29\xbc\xd6\x80\x55\xed\x66\x6d\x49\x83\x0a\x99\x26\x18\x7a\xdb\x6b\x33\x8f\x92\x45\x45\xc3\x14\x3e\x2f\x73\xfb\x1c\xfc\x35\xe0\xa5\x31\xe4\x0b\xf0\x6c\x89\x57\x98\xba\x2b\xbf\x08\x61\x8c\x84\xda\x18\xb5\x45\x20\xd0\x77\xa8\x68\x6a\x7f\xe1\x6e\xa8\x7c\x6a\x63\x59\x7d\x53\x92\x14\xd2\x93\x50\xe5\x99\x1f\x14\x50\x64\xbe\xb7\x29\xec\x35\xfe\xf0\x3c\xca\xc7\x16\x82\x2a\x87\x78\x06\xda\x33\xdd\xf0\x1f\x1b\x49\xe7\xc5\xfe\x04\xed\xab\x12\x4e\x51\xe6\x07\x70\x72\x96\xd5\x8f\xd5\x89\xbb\xcb\x5b\x78\xd3\x09\x06\x0f\x7e\x88\x0c\x7a\x06\xac\x75\x6d\x7e\xb6\x42\xfb\xa0\x29\x3e\x46\x3d\x5e\x33\x83\x48\x22\x45\xcc\xd3\xf0\x4b\x1c\x17\xfd\x47\x64\xbc\x0c\x31\xd4\xa3\x3e\x94\x46\xa6\x67\x3b\xed\x20\x8d\xd6\xc9\x5c\x72\xe6\x96\x1f\xa9\x38\x5a\x47\xd9\x98\x29\x29\xa4\x9b\x65\x35\x5a\x69\x44\x56\x9a\x66\x43\x2d\xff\x47\x2b\xe9\xd5\xfb\x75\x2b\x74\x8e\x05\x6c\x1f\xc1\xf1\xf4\x53\xdf\x32\x5e\xbe\x38\xde\x5f\xb6\x93\x63\xc5\x77\x8c\xc2\x0a\x8a\xa1\xda\x0d\x12\xb5\x35\x35\x2b\xc2\xbc\xed\x4c\xfb\xde\x11\xb3\xeb\x3b\x4d\x63\x6d\xf1\x18\x5e\x85\x96\x28\xde\xcc\x4e\x2f\xcd\xbd\xa9\x8c\xdf\x2f\x87\xbb\x30\x3c\xb3\xe8\xf1\xdf\xcc\x4e\x3f\x6a\x0a\xc9\x2d\x51\x0c\x3f\xad\x77\x44\x5f\x47\x6a\xd4\x22\xdb\xd0\x73\xae\xd8\x7d\xdb\x71\x1f\x16\xa4\x58\x08\xe2\x39\x30\xb1\x08\xa8\xf6\xb6\x16\xc9\x34\x36\x54\xf8\x2b\x59\x94\x2e\xbc\xac\x15\xb8\x0b\x55\x43\xae\xdb\x9d\x43\xef\x1c\xcd\x80\x69\x40\x2d\x12\xbf\xd0\x3c\x16\x13\xab\xd7\xd6\x8d\x5a\x09\xd6\xe5\x51\x33\xc3\xa9\xb3\x2c\xcb\xd5\x26\xd7\xbc\xf5\xdf\x21\x7c\x87\xda\xaf\x3c\xc1\x11\x3e\x57\x93\x85\x5c\x4d\xe6\x80\x9b\x22\x76\xa3\x5f\x3e\xad\x66\x2e\xb7\xb3\xda\x65\x7e\x21\xe8\xc6\x83\x47\x12\x57\xea\xa4\x5b\x78\x6b\xbf\xad\xc4\x13\xd0\xa2\x48\xa3\x37\x25\xf0\x13\x66\x32\x59\x68\x63\x31\x9b\xfe\xbc\x7f\x92\x71\x9d\xf1\x12\xf9\x7d\x2f\x97\x8b\x20\x08\x67\xd7\x10\x64\x42\xae\xf8\x53\x4b\x09\xf4\x7f\x10\xe1\x46\x6b\x67\x19\xbf\xcf\x2a\x36\xf5\xa9\x9c\xf9\x99\xba\x97\x4a\x92\xcc\x85\x93\x8a\x4d\x93\x1a\x6d\xe2\x85\xdb\xfe\xdd\xed\x1a\x49\x6d\xcd\x74\x96\xc2\x15\x9b\xca\xaa\xa9\xda\x14\xf6\x41\x79\xfd\xfa\xce\xc7\xaf\x8e\x0b\x62\x3b\x16\x31\x7e\x0f\xb5\x5f\xf7\x6f\x3e\x86\x71\x1e\xb6\xf7\xc3\x43\x07\xb2\x31\xb6\x21\x5d\x49\x07\x8c\x12\x49\xa1\xa0\x45\xd3\x75\xc9\xd0\xf1\x91\x7a\x41\x79\x88\xa9\x9d\xc7\x16\xd8\xff\x06\x00\x00\xff\xff\x1e\x75\x0e\xc4\x2c\x19\x00\x00"), }, "/terraform-modules/packet/flatcar-linux/kubernetes/versions.tf": &vfsgen۰CompressedFileInfo{ name: "versions.tf", diff --git a/pkg/platform/packet/packet.go b/pkg/platform/packet/packet.go index 21c07909c..37056ca1a 100644 --- a/pkg/platform/packet/packet.go +++ b/pkg/platform/packet/packet.go @@ -46,6 +46,7 @@ const ( type workerPool struct { Name string `hcl:"pool_name,label"` Count int `hcl:"count"` + Facility string `hcl:"facility,optional"` DisableBGP bool `hcl:"disable_bgp,optional"` IPXEScriptURL string `hcl:"ipxe_script_url,optional"` OSArch string `hcl:"os_arch,optional"` @@ -82,7 +83,8 @@ type config struct { OSVersion string `hcl:"os_version,optional"` IPXEScriptURL string `hcl:"ipxe_script_url,optional"` ManagementCIDRs []string `hcl:"management_cidrs"` - NodePrivateCIDR string `hcl:"node_private_cidr"` + NodePrivateCIDR string `hcl:"node_private_cidr,optional"` + NodePrivateCIDRs []string `hcl:"node_private_cidrs,optional"` EnableAggregation bool `hcl:"enable_aggregation,optional"` NetworkMTU int `hcl:"network_mtu,optional"` PodCIDR string `hcl:"pod_cidr,optional"` @@ -235,6 +237,12 @@ func createTerraformConfigFile(cfg *config, terraformPath string) error { // TODO: Render manually instead of marshaling. return fmt.Errorf("marshaling management CIDRs: %w", err) } + + nodePrivateCIDRs, diags := cfg.resolveNodePrivateCIDRs() + if diags.HasErrors() { + return fmt.Errorf("validating Node Private CIDR: %s", diags.Error()) + } + // Configure oidc flags and set it to KubeAPIServerExtraFlags. if cfg.OIDC != nil { // Skipping the error checking here because its done in checkValidConfig(). @@ -269,15 +277,17 @@ func createTerraformConfigFile(cfg *config, terraformPath string) error { cfg.terraformAddDeps() terraformCfg := struct { - Config config - Tags string - SSHPublicKeys string - ManagementCIDRs string + Config config + Tags string + SSHPublicKeys string + ManagementCIDRs string + NodePrivateCIDRs []string }{ - Config: *cfg, - Tags: string(tags), - SSHPublicKeys: string(keyListBytes), - ManagementCIDRs: string(managementCIDRs), + Config: *cfg, + Tags: string(tags), + SSHPublicKeys: string(keyListBytes), + ManagementCIDRs: string(managementCIDRs), + NodePrivateCIDRs: nodePrivateCIDRs, } if err := t.Execute(f, terraformCfg); err != nil { @@ -287,6 +297,50 @@ func createTerraformConfigFile(cfg *config, terraformPath string) error { return nil } +func (c *config) resolveNodePrivateCIDRs() ([]string, hcl.Diagnostics) { + // If both the deprecated and the new fields are provided then error out. + if c.NodePrivateCIDR != "" && len(c.NodePrivateCIDRs) > 0 { + return nil, hcl.Diagnostics{ + &hcl.Diagnostic{ + Severity: hcl.DiagError, + Summary: "`node_private_cidr` and `node_private_cidrs` cannot be used together, use `node_private_cidrs` only", + }, + } + } + + // If just the deprecated field is provided then produce a warning. + if c.NodePrivateCIDR != "" { + return []string{c.NodePrivateCIDR}, hcl.Diagnostics{ + &hcl.Diagnostic{ + Severity: hcl.DiagWarning, + Summary: "`node_private_cidr` is deprecated, use `node_private_cidrs` instead", + }, + } + } + + // If there are repeated CIDRs then error out. + if repeatedCIDR := findDuplicateString(c.NodePrivateCIDRs); repeatedCIDR != "" { + return nil, hcl.Diagnostics{ + &hcl.Diagnostic{ + Severity: hcl.DiagError, + Summary: fmt.Sprintf("multiple entries of node private CIDR: %v", repeatedCIDR), + }, + } + } + + // If there are no CIDRs provided then error out. + if len(c.NodePrivateCIDRs) == 0 { + return nil, hcl.Diagnostics{ + &hcl.Diagnostic{ + Severity: hcl.DiagError, + Summary: "neither `node_private_cidr` nor `node_private_cidrs` provided", + }, + } + } + + return c.NodePrivateCIDRs, nil +} + // terraformSmartApply applies cluster configuration. func (c *config) terraformSmartApply(ex *terraform.Executor, dc dns.Config) error { // If the provider isn't manual, apply everything in a single step. @@ -442,6 +496,10 @@ func (c *config) checkValidConfig() hcl.Diagnostics { diagnostics = append(diagnostics, diags...) } + if _, diags := c.resolveNodePrivateCIDRs(); diags != nil { + diagnostics = append(diagnostics, diags...) + } + return diagnostics } @@ -666,3 +724,17 @@ func checkResFormat(reservationIDs map[string]string, name, errorPrefix, resPref return diagnostics } + +func findDuplicateString(strs []string) string { + uniqueStrs := make(map[string]interface{}, len(strs)) + + for _, str := range strs { + if _, ok := uniqueStrs[str]; ok { + return str + } + + uniqueStrs[str] = nil + } + + return "" +} diff --git a/pkg/platform/packet/packet_test.go b/pkg/platform/packet/packet_test.go index 057710eff..ad2fed8fb 100644 --- a/pkg/platform/packet/packet_test.go +++ b/pkg/platform/packet/packet_test.go @@ -17,6 +17,8 @@ package packet import ( "reflect" "testing" + + "github.com/google/go-cmp/cmp" ) func TestCheckNotEmptyWorkersEmpty(t *testing.T) { @@ -232,6 +234,29 @@ func TestCheckValidConfig(t *testing.T) { }, expectError: false, }, + "NodePrivateCIDR_both_fields_provided": { + mutateF: func(c *config) { + c.NodePrivateCIDR = "10.10.10.10" + c.NodePrivateCIDRs = []string{"10.11.11.11"} + }, + expectError: true, + }, + "NodePrivateCIDR_repeated_CIDRs": { + mutateF: func(c *config) { + // Override the default value. + c.NodePrivateCIDRs = nil + c.NodePrivateCIDRs = []string{"10.10.10.10", "10.10.10.10"} + }, + expectError: true, + }, + + "NodePrivateCIDR_no_node_private_cidr_given": { + mutateF: func(c *config) { + // Override the default value. + c.NodePrivateCIDRs = nil + }, + expectError: true, + }, } for name, c := range cases { @@ -266,6 +291,7 @@ func baseConfig() *config { Name: "2", }, }, + NodePrivateCIDRs: []string{"11.11.11.11"}, } } @@ -355,3 +381,101 @@ func TestTerraformAddDeps(t *testing.T) { }) } } + +func Test_findDuplicateString(t *testing.T) { + tests := []struct { + name string + strs []string + want string + }{ + { + name: "repeated_strings", + strs: []string{"1", "2", "3", "1"}, + want: "1", + }, + { + name: "unique_strings", + strs: []string{"1", "2", "3"}, + want: "", + }, + { + name: "empty_input", + strs: []string{}, + want: "", + }, + } + for _, tt := range tests { + tt := tt + t.Run(tt.name, func(t *testing.T) { + t.Parallel() + if got := findDuplicateString(tt.strs); got != tt.want { + t.Errorf("findDuplicateString() = %v, want %v", got, tt.want) + } + }) + } +} + +func Test_resolveNodePrivateCIDRs(t *testing.T) { //nolint:funlen + tests := []struct { + name string + cfg *config + want []string + wantErr bool + }{ + { + name: "both_fields_provided", + cfg: &config{ + NodePrivateCIDR: "10.10.10.10", + NodePrivateCIDRs: []string{"10.11.11.11"}, + }, + wantErr: true, + }, + { + name: "repeated_CIDRs", + cfg: &config{ + NodePrivateCIDRs: []string{"10.10.10.10", "10.10.10.10"}, + }, + wantErr: true, + }, + { + name: "no_node_private_cidr_given", + cfg: &config{}, + wantErr: true, + }, + { + name: "only_node_private_cidr_given", + cfg: &config{ + NodePrivateCIDR: "10.10.10.10", + }, + want: []string{"10.10.10.10"}, + }, + { + name: "only_node_private_cidrs_given", + cfg: &config{ + NodePrivateCIDRs: []string{"10.10.10.10", "10.10.10.11"}, + }, + want: []string{"10.10.10.10", "10.10.10.11"}, + }, + } + for _, tt := range tests { + tt := tt + t.Run(tt.name, func(t *testing.T) { + t.Parallel() + + got, diags := tt.cfg.resolveNodePrivateCIDRs() + if diags.HasErrors() && !tt.wantErr || !diags.HasErrors() && tt.wantErr { + t.Fatalf("got error: %v\nwantErr: %v", diags.Error(), tt.wantErr) + } + + if diags.HasErrors() && tt.wantErr { + t.Logf("Successfully failed with err: %v", diags.Error()) + + return + } + + if diff := cmp.Diff(got, tt.want); diff != "" { + t.Fatalf("unexpected list -want +got)\n%s", diff) + } + }) + } +} diff --git a/pkg/platform/packet/template.go b/pkg/platform/packet/template.go index 530491896..5d84a035d 100644 --- a/pkg/platform/packet/template.go +++ b/pkg/platform/packet/template.go @@ -53,7 +53,12 @@ module "packet-{{.Config.ClusterName}}" { ipxe_script_url = "{{ .Config.IPXEScriptURL }}" {{ end }} management_cidrs = {{.ManagementCIDRs}} - node_private_cidr = "{{.Config.NodePrivateCIDR}}" + + node_private_cidrs = [ + {{- range .NodePrivateCIDRs }} + "{{ . }}", + {{- end }} + ] enable_aggregation = {{.Config.EnableAggregation}} @@ -160,7 +165,13 @@ EOF {{- end }} project_id = "{{$.Config.ProjectID}}" + + {{- if $pool.Facility }} + facility = "{{$pool.Facility}}" + {{- else }} facility = "{{$.Config.Facility}}" + {{- end }} + {{- if $.Config.ClusterDomainSuffix }} cluster_domain_suffix = "{{$.Config.ClusterDomainSuffix}}" {{- end }} diff --git a/vendor/modules.txt b/vendor/modules.txt index 567e1bdd3..3efe6e89d 100644 --- a/vendor/modules.txt +++ b/vendor/modules.txt @@ -4,6 +4,7 @@ github.com/Azure/go-ansiterm/winterm # github.com/BurntSushi/toml v0.3.1 github.com/BurntSushi/toml # github.com/MakeNowJust/heredoc v1.0.0 +## explicit github.com/MakeNowJust/heredoc # github.com/Masterminds/goutils v1.1.0 github.com/Masterminds/goutils @@ -40,8 +41,10 @@ github.com/PuerkitoBio/purell # github.com/PuerkitoBio/urlesc v0.0.0-20170810143723-de5bf2ad4578 github.com/PuerkitoBio/urlesc # github.com/StackExchange/wmi v0.0.0-20190523213315-cbe66965904d +## explicit github.com/StackExchange/wmi # github.com/agext/levenshtein v1.2.3 +## explicit github.com/agext/levenshtein # github.com/apparentlymart/go-textseg/v12 v12.0.0 github.com/apparentlymart/go-textseg/v12/textseg @@ -52,6 +55,7 @@ github.com/beorn7/perks/quantile # github.com/cespare/xxhash/v2 v2.1.1 github.com/cespare/xxhash/v2 # github.com/containerd/cgroups v0.0.0-20200308110149-6c3dec43a103 +## explicit github.com/containerd/cgroups/stats/v1 # github.com/containerd/containerd v1.3.4 github.com/containerd/containerd/archive/compression @@ -70,6 +74,7 @@ github.com/containerd/containerd/remotes/docker/schema1 github.com/containerd/containerd/sys github.com/containerd/containerd/version # github.com/containerd/continuity v0.0.0-20200228182428-0f16d7a0959c +## explicit github.com/containerd/continuity/pathdriver # github.com/cpuguy83/go-md2man/v2 v2.0.0 github.com/cpuguy83/go-md2man/v2/md2man @@ -85,6 +90,7 @@ github.com/deislabs/oras/pkg/content github.com/deislabs/oras/pkg/context github.com/deislabs/oras/pkg/oras # github.com/docker/cli v0.0.0-20200312141509-ef2f64abbd37 +## explicit github.com/docker/cli/cli/config github.com/docker/cli/cli/config/configfile github.com/docker/cli/cli/config/credentials @@ -103,6 +109,7 @@ github.com/docker/distribution/registry/client/transport github.com/docker/distribution/registry/storage/cache github.com/docker/distribution/registry/storage/cache/memory # github.com/docker/docker v1.13.1 => github.com/docker/engine v1.4.2-0.20191113042239-ea84732a7725 +## explicit github.com/docker/docker/api/types github.com/docker/docker/api/types/blkiodev github.com/docker/docker/api/types/container @@ -136,6 +143,7 @@ github.com/docker/go-connections/nat github.com/docker/go-connections/sockets github.com/docker/go-connections/tlsconfig # github.com/docker/go-metrics v0.0.1 +## explicit github.com/docker/go-metrics # github.com/docker/go-units v0.4.0 github.com/docker/go-units @@ -143,6 +151,7 @@ github.com/docker/go-units github.com/docker/spdystream github.com/docker/spdystream/spdy # github.com/emicklei/go-restful v2.12.0+incompatible +## explicit github.com/emicklei/go-restful github.com/emicklei/go-restful/log # github.com/evanphx/json-patch v4.9.0+incompatible @@ -150,6 +159,7 @@ github.com/evanphx/json-patch # github.com/exponent-io/jsonpath v0.0.0-20151013193312-d6023ce2651d github.com/exponent-io/jsonpath # github.com/fatih/color v1.9.0 +## explicit github.com/fatih/color # github.com/fsnotify/fsnotify v1.4.9 github.com/fsnotify/fsnotify @@ -158,6 +168,7 @@ github.com/ghodss/yaml # github.com/go-logr/logr v0.2.0 github.com/go-logr/logr # github.com/go-ole/go-ole v1.2.4 +## explicit github.com/go-ole/go-ole github.com/go-ole/go-ole/oleutil # github.com/go-openapi/jsonpointer v0.19.3 @@ -165,8 +176,10 @@ github.com/go-openapi/jsonpointer # github.com/go-openapi/jsonreference v0.19.3 github.com/go-openapi/jsonreference # github.com/go-openapi/spec v0.19.7 => github.com/go-openapi/spec v0.19.8 +## explicit github.com/go-openapi/spec # github.com/go-openapi/swag v0.19.8 +## explicit github.com/go-openapi/swag # github.com/gobwas/glob v0.2.3 github.com/gobwas/glob @@ -183,6 +196,7 @@ github.com/gogo/protobuf/proto github.com/gogo/protobuf/protoc-gen-gogo/descriptor github.com/gogo/protobuf/sortkeys # github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b +## explicit github.com/golang/glog # github.com/golang/groupcache v0.0.0-20200121045136-8c9f03a8e57e github.com/golang/groupcache/lru @@ -195,6 +209,7 @@ github.com/golang/protobuf/ptypes/timestamp # github.com/google/btree v1.0.0 github.com/google/btree # github.com/google/go-cmp v0.5.2 +## explicit github.com/google/go-cmp/cmp github.com/google/go-cmp/cmp/internal/diff github.com/google/go-cmp/cmp/internal/flags @@ -209,17 +224,21 @@ github.com/googleapis/gnostic/compiler github.com/googleapis/gnostic/extensions github.com/googleapis/gnostic/openapiv2 # github.com/gorilla/mux v1.7.4 +## explicit github.com/gorilla/mux # github.com/gosuri/uitable v0.0.4 github.com/gosuri/uitable github.com/gosuri/uitable/util/strutil github.com/gosuri/uitable/util/wordwrap # github.com/gregjones/httpcache v0.0.0-20190611155906-901d90724c79 +## explicit github.com/gregjones/httpcache github.com/gregjones/httpcache/diskcache # github.com/hashicorp/go-version v1.2.0 +## explicit github.com/hashicorp/go-version # github.com/hashicorp/golang-lru v0.5.4 +## explicit github.com/hashicorp/golang-lru github.com/hashicorp/golang-lru/simplelru # github.com/hashicorp/hcl v1.0.0 @@ -234,6 +253,7 @@ github.com/hashicorp/hcl/json/parser github.com/hashicorp/hcl/json/scanner github.com/hashicorp/hcl/json/token # github.com/hashicorp/hcl/v2 v2.7.2 +## explicit github.com/hashicorp/hcl/v2 github.com/hashicorp/hcl/v2/ext/customdecode github.com/hashicorp/hcl/v2/gohcl @@ -242,6 +262,7 @@ github.com/hashicorp/hcl/v2/hclsyntax github.com/hashicorp/hcl/v2/hclwrite github.com/hashicorp/hcl/v2/json # github.com/hpcloud/tail v1.0.0 +## explicit github.com/hpcloud/tail github.com/hpcloud/tail/ratelimiter github.com/hpcloud/tail/util @@ -259,7 +280,10 @@ github.com/jmoiron/sqlx/reflectx # github.com/json-iterator/go v1.1.10 github.com/json-iterator/go # github.com/kardianos/osext v0.0.0-20190222173326-2bc1f35cddc0 +## explicit github.com/kardianos/osext +# github.com/kylelemons/godebug v1.1.0 +## explicit # github.com/lann/builder v0.0.0-20180802200727-47ae307949d0 github.com/lann/builder # github.com/lann/ps v0.0.0-20150810152359-62de8c46ede0 @@ -271,30 +295,37 @@ github.com/lib/pq/scram # github.com/liggitt/tabwriter v0.0.0-20181228230101-89fcab3d43de github.com/liggitt/tabwriter # github.com/linkerd/linkerd2 v0.5.1-0.20200623171206-83ae0ccf0f1a +## explicit github.com/linkerd/linkerd2/pkg/tls # github.com/magiconair/properties v1.8.1 github.com/magiconair/properties # github.com/mailru/easyjson v0.7.1 +## explicit github.com/mailru/easyjson/buffer github.com/mailru/easyjson/jlexer github.com/mailru/easyjson/jwriter # github.com/mattn/go-colorable v0.1.6 +## explicit github.com/mattn/go-colorable # github.com/mattn/go-isatty v0.0.12 github.com/mattn/go-isatty # github.com/mattn/go-runewidth v0.0.8 +## explicit github.com/mattn/go-runewidth # github.com/matttproud/golang_protobuf_extensions v1.0.2-0.20181231171920-c182affec369 github.com/matttproud/golang_protobuf_extensions/pbutil # github.com/mitchellh/copystructure v1.0.0 github.com/mitchellh/copystructure # github.com/mitchellh/go-homedir v1.1.0 +## explicit github.com/mitchellh/go-homedir # github.com/mitchellh/go-wordwrap v1.0.1 +## explicit github.com/mitchellh/go-wordwrap # github.com/mitchellh/mapstructure v1.1.2 github.com/mitchellh/mapstructure # github.com/mitchellh/reflectwalk v1.0.1 +## explicit github.com/mitchellh/reflectwalk # github.com/moby/term v0.0.0-20200312100748-672ec06f55cd github.com/moby/term @@ -314,16 +345,20 @@ github.com/opencontainers/image-spec/specs-go/v1 github.com/opencontainers/runc/libcontainer/system github.com/opencontainers/runc/libcontainer/user # github.com/packethost/packngo v0.2.0 +## explicit github.com/packethost/packngo # github.com/pelletier/go-toml v1.6.0 +## explicit github.com/pelletier/go-toml # github.com/peterbourgon/diskv v2.0.1+incompatible github.com/peterbourgon/diskv # github.com/pkg/errors v0.9.1 github.com/pkg/errors # github.com/prometheus/alertmanager v0.20.0 +## explicit github.com/prometheus/alertmanager/pkg/modtimevfs # github.com/prometheus/client_golang v1.7.1 +## explicit github.com/prometheus/client_golang/api github.com/prometheus/client_golang/api/prometheus/v1 github.com/prometheus/client_golang/prometheus @@ -339,14 +374,18 @@ github.com/prometheus/common/model github.com/prometheus/procfs github.com/prometheus/procfs/internal/fs github.com/prometheus/procfs/internal/util +# github.com/rogpeppe/go-internal v1.6.1 +## explicit # github.com/rubenv/sql-migrate v0.0.0-20200616145509-8d140a17f351 github.com/rubenv/sql-migrate github.com/rubenv/sql-migrate/sqlparse # github.com/russross/blackfriday v2.0.0+incompatible => github.com/russross/blackfriday v1.5.2 +## explicit github.com/russross/blackfriday # github.com/russross/blackfriday/v2 v2.0.1 github.com/russross/blackfriday/v2 # github.com/shirou/gopsutil v2.20.2+incompatible +## explicit github.com/shirou/gopsutil/cpu github.com/shirou/gopsutil/internal/common github.com/shirou/gopsutil/mem @@ -355,13 +394,16 @@ github.com/shirou/gopsutil/process # github.com/shopspring/decimal v1.2.0 github.com/shopspring/decimal # github.com/shurcooL/httpfs v0.0.0-20190707220628-8d4bc4ba7749 +## explicit github.com/shurcooL/httpfs/union github.com/shurcooL/httpfs/vfsutil # github.com/shurcooL/sanitized_anchor_name v1.0.0 github.com/shurcooL/sanitized_anchor_name # github.com/shurcooL/vfsgen v0.0.0-20181202132449-6a9ea43bcacd +## explicit github.com/shurcooL/vfsgen # github.com/sirupsen/logrus v1.7.0 +## explicit github.com/sirupsen/logrus # github.com/spf13/afero v1.2.2 github.com/spf13/afero @@ -369,23 +411,29 @@ github.com/spf13/afero/mem # github.com/spf13/cast v1.3.1 github.com/spf13/cast # github.com/spf13/cobra v1.1.1 +## explicit github.com/spf13/cobra github.com/spf13/cobra/doc # github.com/spf13/jwalterweatherman v1.1.0 +## explicit github.com/spf13/jwalterweatherman # github.com/spf13/pflag v1.0.5 +## explicit github.com/spf13/pflag # github.com/spf13/viper v1.7.0 +## explicit github.com/spf13/viper # github.com/subosito/gotenv v1.2.0 github.com/subosito/gotenv # github.com/xeipuuv/gojsonpointer v0.0.0-20190905194746-02993c407bfb +## explicit github.com/xeipuuv/gojsonpointer # github.com/xeipuuv/gojsonreference v0.0.0-20180127040603-bd5ef7bd5415 github.com/xeipuuv/gojsonreference # github.com/xeipuuv/gojsonschema v1.2.0 github.com/xeipuuv/gojsonschema # github.com/zclconf/go-cty v1.7.0 +## explicit github.com/zclconf/go-cty/cty github.com/zclconf/go-cty/cty/convert github.com/zclconf/go-cty/cty/function @@ -446,6 +494,8 @@ golang.org/x/text/unicode/norm golang.org/x/text/width # golang.org/x/time v0.0.0-20200630173020-3af7569d3a1e golang.org/x/time/rate +# golang.org/x/tools v0.0.0-20200731060945-b5fad4ed8dd6 +## explicit # google.golang.org/appengine v1.6.5 google.golang.org/appengine/internal google.golang.org/appengine/internal/base @@ -457,6 +507,7 @@ google.golang.org/appengine/urlfetch # google.golang.org/genproto v0.0.0-20201110150050-8816d57aaa9a google.golang.org/genproto/googleapis/rpc/status # google.golang.org/grpc v1.28.0 +## explicit google.golang.org/grpc/codes google.golang.org/grpc/connectivity google.golang.org/grpc/grpclog @@ -500,12 +551,14 @@ gopkg.in/gorp.v1 # gopkg.in/inf.v0 v0.9.1 gopkg.in/inf.v0 # gopkg.in/ini.v1 v1.54.0 +## explicit gopkg.in/ini.v1 # gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7 gopkg.in/tomb.v1 # gopkg.in/yaml.v2 v2.3.0 gopkg.in/yaml.v2 # helm.sh/helm/v3 v3.5.1 => github.com/kinvolk/helm/v3 v3.5.1-2-g498bb0c0 +## explicit helm.sh/helm/v3/internal/experimental/registry helm.sh/helm/v3/internal/fileutil helm.sh/helm/v3/internal/ignore @@ -542,6 +595,7 @@ helm.sh/helm/v3/pkg/storage helm.sh/helm/v3/pkg/storage/driver helm.sh/helm/v3/pkg/time # k8s.io/api v0.20.2 +## explicit k8s.io/api/admission/v1 k8s.io/api/admission/v1beta1 k8s.io/api/admissionregistration/v1 @@ -593,6 +647,7 @@ k8s.io/apiextensions-apiserver/pkg/apis/apiextensions k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1 k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1beta1 # k8s.io/apimachinery v0.20.2 +## explicit k8s.io/apimachinery/pkg/api/equality k8s.io/apimachinery/pkg/api/errors k8s.io/apimachinery/pkg/api/meta @@ -661,6 +716,7 @@ k8s.io/cli-runtime/pkg/kustomize/k8sdeps/validator k8s.io/cli-runtime/pkg/printers k8s.io/cli-runtime/pkg/resource # k8s.io/client-go v0.20.2 => k8s.io/client-go v0.20.2 +## explicit k8s.io/client-go/discovery k8s.io/client-go/discovery/cached/disk k8s.io/client-go/discovery/cached/memory @@ -846,4 +902,12 @@ sigs.k8s.io/kustomize/pkg/types # sigs.k8s.io/structured-merge-diff/v4 v4.0.2 sigs.k8s.io/structured-merge-diff/v4/value # sigs.k8s.io/yaml v1.2.0 +## explicit sigs.k8s.io/yaml +# github.com/docker/docker => github.com/docker/engine v1.4.2-0.20191113042239-ea84732a7725 +# github.com/docker/spdystream => github.com/moby/spdystream v0.1.0 +# github.com/docker/distribution => github.com/docker/distribution v0.0.0-20191216044856-a8371794149d +# github.com/russross/blackfriday => github.com/russross/blackfriday v1.5.2 +# helm.sh/helm/v3 => github.com/kinvolk/helm/v3 v3.5.1-2-g498bb0c0 +# github.com/go-openapi/spec => github.com/go-openapi/spec v0.19.8 +# k8s.io/client-go => k8s.io/client-go v0.20.2