[Bug]: Terraform hangs on creating the servers

Description
I'm trying to create a cluster on Hetzner Cloud and I'm customising the kube.tf file just  the minimum:
1 cpx31 control_plane in fsn1, 1 cpx21 agent in fsn1, ingress_ controller=ngnx,create_kubeconfig = true.
Terraform hangs on creating both the agent and the control plane servers, but in the Hetzner console I can see that they do get created dough ( see screenshots ).
module.kube-hetzner.module.agents["0-0-agent-large"].hcloud_server.server: Still creating... [46m41s elapsed]
module.kube-hetzner.module.control_planes["0-0-control-plane-fsn1"].hcloud_server.server: Still creating... [46m40s elapsed]

and when I stop terraform the error is:
Stopping operation...
╷
│ Error: execution halted
│
│
╵
╷
│ Error: execution halted
│
│
╵
╷
│ Error: execution halted
│
│
╵
╷
│ Error: execution halted
│
│
╵
╷
│ Error: local-exec provisioner error
│
│   with module.kube-hetzner.module.agents["0-0-agent-large"].hcloud_server.server,
│   on .terraform/modules/kube-hetzner/modules/host/main.tf line 63, in resource "hcloud_server" "server":
│   63:   provisioner "local-exec" {
│
│ Error running command 'until ssh -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no -o IdentitiesOnly=yes -o PubkeyAuthentication=yes -i /tmp/1e94z0kc5ae7u3j4qwv2 -o
│ ConnectTimeout=2 -p 22<EMAIL_ADDRESS>true 2> /dev/null
│ do
│   echo "Waiting for MicroOS to become available..."
│   sleep 3
│ done
│ ': signal: interrupt. Output: Waiting for MicroOS to become available...
│ Waiting for MicroOS to become available...
│ Waiting for MicroOS to become available...
│ Waiting for MicroOS to become available...
│ Waiting for MicroOS to become available...
│ Waiting for MicroOS to become available...
│
╵
╷
│ Error: local-exec provisioner error
│
│   with module.kube-hetzner.module.control_planes["0-0-control-plane-fsn1"].hcloud_server.server,
│   on .terraform/modules/kube-hetzner/modules/host/main.tf line 63, in resource "hcloud_server" "server":
│   63:   provisioner "local-exec" {
│
│ Error running command 'until ssh -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no -o IdentitiesOnly=yes -o PubkeyAuthentication=yes -i /tmp/8t6msg9zj8cf6dmpahsu -o
│ ConnectTimeout=2 -p 22<EMAIL_ADDRESS>true 2> /dev/null
│ do
│   echo "Waiting for MicroOS to become available..."
│   sleep 3
│ done
│ ': signal: interrupt. Output: Waiting for MicroOS to become available...
│ Waiting for MicroOS to become available...
│ Waiting for MicroOS to become available...
│ Waiting for MicroOS to become available...
│ Waiting for MicroOS to become available...
│

I also tried creating a single node by bringing the count of the agent to 0 as stated in # If you want to have a single node cluster, have one control plane nodepools with a count of 1, and one agent nodepool with a count of 0.,  setting automatically_upgrade_k3s and automatically_upgrade_os to `false but still the process hangs...
module.kube-hetzner.module.control_planes["0-0-control-plane-fsn1"].hcloud_server.server: Still creating... [27m30s elapsed]

and when I stop terraform the error is:
Stopping operation...
╷
│ Error: execution halted
│
│
╵
╷
│ Error: execution halted
│
│
╵
╷
│ Error: local-exec provisioner error
│
│   with module.kube-hetzner.module.control_planes["0-0-control-plane-fsn1"].hcloud_server.server,
│   on .terraform/modules/kube-hetzner/modules/host/main.tf line 63, in resource "hcloud_server" "server":
│   63:   provisioner "local-exec" {
│
│ Error running command 'until ssh -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no -o IdentitiesOnly=yes -o PubkeyAuthentication=yes -i /tmp/qpugbetgbuizzy6m2fpb -o
│ ConnectTimeout=2 -p 22<EMAIL_ADDRESS>true 2> /dev/null
│ do
│   echo "Waiting for MicroOS to become available..."
│   sleep 3
│ done
│ ': signal: interrupt. Output: Waiting for MicroOS to become available...
│ Waiting for MicroOS to become available...
│ Waiting for MicroOS to become available...
│ Waiting for MicroOS to become available...
│ Waiting for MicroOS to become available...

Looking at https://github.com/kube-hetzner/terraform-hcloud-kube-hetzner/issues/714 I tried specifying the version as version = "2.0.9"in kube.tf but still same results.
What else can I look into?
Many thanks
Kube.tf file
locals {
  # You have the choice of setting your Hetzner API token here or define the TF_VAR_hcloud_token env
  # within your shell, such as such: export TF_VAR_hcloud_token=xxxxxxxxxxx
  # If you choose to define it in the shell, this can be left as is.

  # Your Hetzner token can be found in your Project > Security > API Token (Read & Write is required).
  hcloud_token = "zL1uf4weISqcS1Hn1tzZdT8ZDpFEo51ThkXMVlxopOafCFtZQNpPbvLH9mbbn4B2"
}

module "kube-hetzner" {
  providers = {
    hcloud = hcloud
  }
  hcloud_token = var.hcloud_token != "" ? var.hcloud_token : local.hcloud_token

  # Then fill or edit the below values. Only the first values starting with a * are obligatory; the rest can remain with their default values, or you
  # could adapt them to your needs.

  # * For local dev, path to the git repo
  # source = "../../kube-hetzner/"
  # If you want to use the latest master branch
  # source = "github.com/kube-hetzner/terraform-hcloud-kube-hetzner"
  # For normal use, this is the path to the terraform registry
  source = "kube-hetzner/kube-hetzner/hcloud"

  # You can optionally specify a version number
  # version = "1.2.0"

  # Note that some values, notably "location" and "public_key" have no effect after initializing the cluster.
  # This is to keep Terraform from re-provisioning all nodes at once, which would lose data. If you want to update
  # those, you should instead change the value here and manually re-provision each node. Grep for "lifecycle".

  # Customize the SSH port (by default 22)
  # ssh_port = 2222

  # * Your ssh public key
  # ssh_public_key = file("~/.ssh/id_ed25519.pub")
  ssh_public_key = file("~/.ssh/id_rsa.pub")
  # * Your private key must be "ssh_private_key = null" when you want to use ssh-agent for a Yubikey-like device authentification or an SSH key-pair with a passphrase.
  # For more details on SSH see https://github.com/kube-hetzner/kube-hetzner/blob/master/docs/ssh.md
  # ssh_private_key = file("~/.ssh/id_ed25519")
  ssh_private_key = file("~/.ssh/id_rsa")
  # You can add additional SSH public Keys to grant other team members root access to your cluster nodes.
  # ssh_additional_public_keys = []

  # You can also add additional SSH public Keys which are saved in the hetzner cloud by a label.
  # See https://docs.hetzner.cloud/#label-selector
  # ssh_hcloud_key_label = "role=admin"

  # If you use SSH agent and have issues with SSH connecting to your nodes, you can increase the number of auth tries (default is 2)
  # ssh_max_auth_tries = 10

  # If you want to use an ssh key that is already registered within hetzner cloud, you can pass its id.
  # If no id is passed, a new ssh key will be registered within hetzner cloud.
  # It is important that exactly this key is passed via `ssh_public_key` & `ssh_private_key` vars.
  # hcloud_ssh_key_id = ""

  # These can be customized, or left with the default values
  # * For Hetzner locations see https://docs.hetzner.com/general/others/data-centers-and-connection/
  network_region = "eu-central" # change to `us-east` if location is ash

  # If you must change the network CIDR you can do so below, but it is highly advised against.
  # network_ipv4_cidr = "<IP_ADDRESS>/8"

  # If you must change the cluster CIDR you can do so below, but it is highly advised against.
  # Cluster CIDR must be a part of the network CIDR!
  # cluster_ipv4_cidr = "<IP_ADDRESS>/16"

  # For the control planes, at least three nodes are the minimum for HA. Otherwise, you need to turn off the automatic upgrades (see README).
  # **It must always be an ODD number, never even!** Search the internet for "splitbrain problem with etcd" or see https://rancher.com/docs/k3s/latest/en/installation/ha-embedded/
  # For instance, one is ok (non-HA), two is not ok, and three is ok (becomes HA). It does not matter if they are in the same nodepool or not! So they can be in different locations and of various types.

  # Of course, you can choose any number of nodepools you want, with the location you want. The only constraint on the location is that you need to stay in the same network region, Europe, or the US.
  # For the server type, the minimum instance supported is cpx11 (just a few cents more than cx11); see https://www.hetzner.com/cloud.

  # IMPORTANT: Before you create your cluster, you can do anything you want with the nodepools, but you need at least one of each, control plane and agent.
  # Once the cluster is up and running, you can change nodepool count and even set it to 0 (in the case of the first control-plane nodepool, the minimum is 1).
  # You can also rename it (if the count is 0), but do not remove a nodepool from the list.

  # The only nodepools that are safe to remove from the list are at the end. That is due to how subnets and IPs get allocated (FILO).
  # You can, however, freely add other nodepools at the end of each list if you want. The maximum number of nodepools you can create combined for both lists is 255.
  # Also, before decreasing the count of any nodepools to 0, it's essential to drain and cordon the nodes in question. Otherwise, it will leave your cluster in a bad state.

  # Before initializing the cluster, you can change all parameters and add or remove any nodepools. You need at least one nodepool of each kind, control plane, and agent.
  # The nodepool names are entirely arbitrary, you can choose whatever you want, but no special characters or underscore, and they must be unique; only alphanumeric characters and dashes are allowed.

  # If you want to have a single node cluster, have one control plane nodepools with a count of 1, and one agent nodepool with a count of 0.

  # Please note that changing labels and taints after the first run will have no effect. If needed, you can do that through Kubernetes directly.

  # ⚠ When choosing ARM cax* server types, for the moment they are only available in fsn1.
  # Muli-architecture clusters are OK for most use cases, as container underlying images tend to be multi-architecture too.

  # * Example below:

  control_plane_nodepools = [
    {
      name        = "control-plane-fsn1",
      # server_type = "cpx21",
      server_type = "cpx31",
      # server_type = "cax21",
      # server_type = "cax11",
      location    = "fsn1",
      labels      = [],
      taints      = [],
      count       = 1

      # Enable automatic backups via Hetzner (default: false)
      # backups = true
    },
    # {
    #   name        = "control-plane-nbg1",
    #   server_type = "cpx11",
    #   location    = "nbg1",
    #   labels      = [],
    #   taints      = [],
    #   count       = 1

    #   # Enable automatic backups via Hetzner (default: false)
    #   # backups = true
    # },
    # {
    #   name        = "control-plane-hel1",
    #   server_type = "cpx11",
    #   location    = "hel1",
    #   labels      = [],
    #   taints      = [],
    #   count       = 1

    #   # Enable automatic backups via Hetzner (default: false)
    #   # backups = true
    # }
  ]

  agent_nodepools = [
    # {
    #   name        = "agent-small",
    #   server_type = "cpx11",
    #   location    = "fsn1",
    #   labels      = [],
    #   taints      = [],
    #   count       = 1

    #   # Enable automatic backups via Hetzner (default: false)
    #   # backups = true
    # },
    {
      name        = "agent-large",
      server_type = "cpx21",
      # server_type = "cax21",
      # location    = "nbg1",
      location    = "fsn1",

      # server_type = "cpx11",
      labels      = [],
      taints      = [],
      count       = 1

      # Enable automatic backups via Hetzner (default: false)
      # backups = true
    },
    # {
    #   name        = "storage",
    #   server_type = "cpx21",
    #   location    = "fsn1",
    #   # Fully optional, just a demo.
    #   labels      = [
    #     "node.kubernetes.io/server-usage=storage"
    #   ],
    #   taints      = [],
    #   count       = 1

    #   # In the case of using Longhorn, you can use Hetzner volumes instead of using the node's own storage by specifying a value from 10 to 10000 (in GB)
    #   # It will create one volume per node in the nodepool, and configure Longhorn to use them.
    #   # Something worth noting is that Volume storage is slower than node storage, which is achieved by not mentioning longhorn_volume_size or setting it to 0.
    #   # So for something like DBs, you definitely want node storage, for other things like backups, volume storage is fine, and cheaper.
    #   # longhorn_volume_size = 20

    #   # Enable automatic backups via Hetzner (default: false)
    #   # backups = true
    # },
    # # Egress nodepool useful to route egress traffic using Hetzner Floating IPs (https://docs.hetzner.com/cloud/floating-ips)
    # # used with Cilium's Egress Gateway feature https://docs.cilium.io/en/stable/gettingstarted/egress-gateway/
    # # See the https://github.com/kube-hetzner/terraform-hcloud-kube-hetzner#examples for an example use case.
    # {
    #   name        = "egress",
    #   server_type = "cpx11",
    #   location    = "fsn1",
    #   labels = [
    #     "node.kubernetes.io/role=egress"
    #   ],
    #   taints = [
    #     "node.kubernetes.io/role=egress:NoSchedule"
    #   ],
    #   floating_ip = true
    #   count = 1
    # },
    # # Arm based nodes, currently available only in FSN location
    # {
    #   name        = "agent-arm-small",
    #   server_type = "cax11",
    #   location    = "fsn1",
    #   labels      = [],
    #   taints      = [],
    #   count       = 1
    # }
  ]
  # Add custom control plane configuration options here.
  # E.g to enable monitoring for etcd, proxy etc:
  control_planes_custom_config = {
   etcd-expose-metrics = true,
   kube-controller-manager-arg = "bind-address=<IP_ADDRESS>",
   kube-proxy-arg ="metrics-bind-address=<IP_ADDRESS>",
   kube-scheduler-arg = "bind-address=<IP_ADDRESS>",
  }

  # You can enable encrypted wireguard for the CNI by setting this to "true". Default is "false".
  # FYI, Hetzner says "Traffic between cloud servers inside a Network is private and isolated, but not automatically encrypted."
  # Source: https://docs.hetzner.com/cloud/networks/faq/#is-traffic-inside-hetzner-cloud-networks-encrypted
  # It works with all CNIs that we support.
  # Just note, that if Cilium with cilium_values, the responsability of enabling of disabling Wireguard falls on you.
  # enable_wireguard = true

  # * LB location and type, the latter will depend on how much load you want it to handle, see https://www.hetzner.com/cloud/load-balancer
  load_balancer_type     = "lb11"
  load_balancer_location = "fsn1"

  ### The following values are entirely optional (and can be removed from this if unused)

  # You can refine a base domain name to be use in this form of nodename.base_domain for setting the reserve dns inside Hetzner
  # base_domain = "mycluster.example.com"

  # Cluster Autoscaler
  # Providing at least one map for the array enables the cluster autoscaler feature, default is disabled
  # By default we set a compatible version with the default initial_k3s_channel, to set another one,
  # have a look at the tag value in https://github.com/kubernetes/autoscaler/blob/master/charts/cluster-autoscaler/values.yaml
  # ⚠ Based on how the autoscaler works with this project, you can only choose either x86 instances or ARM server types for ALL autocaler nodepools.
  # Also, as mentioned above, for the time being ARM cax* instances are only available in fsn1.
  # If you are curious, it's ok to have a multi-architecture cluster, as most underlying container images are multi-architecture too.
  # * Example below:
  # autoscaler_nodepools = [
  #   {
  #     name        = "autoscaled-small"
  #     server_type = "cpx21"
  #     location    = "fsn1"
  #     min_nodes   = 0
  #     max_nodes   = 5
  #   }
  # ]

  # Add extra labels on nodes started by the Cluster Autoscaler
  # This argument is not used if autoscaler_nodepools is not set, because the Cluster Autoscaler is installed only if autoscaler_nodepools is set
  # autoscaler_labels = [
  #   "node.kubernetes.io/role=peak-workloads"
  # ]

  # Add extra taints on nodes started by the Cluster Autoscaler
  # This argument is not used if autoscaler_nodepools is not set, because the Cluster Autoscaler is installed only if autoscaler_nodepools is set
  # autoscaler_taints = [
  #   "node.kubernetes.io/role=specific-workloads:NoExecute"
  # ]

  # Transmit extra arguments to the Cluster Autoscaler binary
  # These arguments are added to those generated by the preceding options
  # You should not set the following arguments because they are managed by terraform-hcloud-kube-hetzner:
  #   - --v=1
  #   - --cloud-provider=hetzner
  #   - --stderrthreshold=info
  #   - --nodes (provided multiple times if you setup multiple autoscaler_nodepools)
  # See the Cluster Autoscaler FAQ for the arguments list: https://github.com/kubernetes/autoscaler/blob/master/cluster-autoscaler/FAQ.md#what-are-the-parameters-to-ca
  # These arguments are not used if autoscaler_nodepools is not set, because the Cluster Autoscaler is installed only if autoscaler_nodepools is set
  # cluster_autoscaler_extra_args = [
  #   "--ignore-daemonsets-utilization=true",
  #   "--enforce-node-group-min-size=true",
  # ]

  # Enable etcd snapshot backups to S3 storage.
  # Just provide a map with the needed settings (according to your S3 storage provider) and backups to S3 will
  # be enabled (with the default settings for etcd snapshots).
  # Cloudflare's R2 offers 10GB, 10 million reads and 1 million writes per month for free.
  # For proper context, have a look at https://docs.k3s.io/datastore/backup-restore.
  # etcd_s3_backup = {
  #   etcd-s3-endpoint        = "xxxx.r2.cloudflarestorage.com"
  #   etcd-s3-access-key      = "<access-key>"
  #   etcd-s3-secret-key      = "<secret-key>"
  #   etcd-s3-bucket          = "k3s-etcd-snapshots"
  # }

  # To enable Hetzner Storage Box support, you can enable csi-driver-smb, default is "false".
  # enable_csi_driver_smb = true

  # To use local storage on the nodes, you can enable Longhorn, default is "false".
  # See a full recap on how to configure agent nodepools for longhorn here https://github.com/kube-hetzner/terraform-hcloud-kube-hetzner/discussions/373#discussioncomment-3983159
  # Also see Longhorn best practices here https://gist.github.com/ifeulner/d311b2868f6c00e649f33a72166c2e5b
  # enable_longhorn = true

  # By default, longhorn is pulled from https://charts.longhorn.io.
  # If you need a version of longhorn which assures compatibility with rancher you can set this variable to https://charts.rancher.io.
  # longhorn_repository = "https://charts.rancher.io"

  # The namespace for longhorn deployment, default is "longhorn-system".
  # longhorn_namespace = "longhorn-system"

  # The file system type for Longhorn, if enabled (ext4 is the default, otherwise you can choose xfs).
  # longhorn_fstype = "xfs"

  # how many replica volumes should longhorn create (default is 3).
  # longhorn_replica_count = 1

  # When you enable Longhorn, you can go with the default settings and just modify the above two variables OR you can add a longhorn_values variable
  # with all needed helm values, see towards the end of the file in the advanced section.
  # If that file is present, the system will use it during the deploy, if not it will use the default values with the two variable above that can be customized.
  # After the cluster is deployed, you can always use HelmChartConfig definition to tweak the configuration.

  # Also, you can choose to use a Hetzner volume with Longhorn. By default, it will use the nodes own storage space, but if you add an attribute of
  # longhorn_volume_size (⚠ not a variable, just a possible agent nodepool attribute) with a value between 10 and 10000 GB to your agent nodepool definition, it will create and use the volume in question.
  # See the agent nodepool section for an example of how to do that.

  # To disable Hetzner CSI storage, you can set the following to "true", default is "false".
  # disable_hetzner_csi = true

  # If you want to use a specific Hetzner CCM and CSI version, set them below; otherwise, leave them as-is for the latest versions.
  # hetzner_ccm_version = ""
  # hetzner_csi_version = ""

  # If you want to specify the Kured version, set it below - otherwise it'll use the latest version available.
  # kured_version = ""

  # If you want to enable the Nginx ingress controller (https://kubernetes.github.io/ingress-nginx/) instead of Traefik, you can set this to "nginx". Default is "traefik".
  # By the default we load optimal Traefik and Nginx ingress controller config for Hetzner, however you may need to tweak it to your needs, so to do,
  # we allow you to add a traefik_values and nginx_values, see towards the end of this file in the advanced section.
  # After the cluster is deployed, you can always use HelmChartConfig definition to tweak the configuration.
  # If you want to disable both controllers set this to "none"
  ingress_controller = "nginx"

  # You can change the number of replicas for selected ingress controller here. The default 0 means autoselecting based on number of agent nodes (1 node = 1 replica, 2 nodes = 2 replicas, 3+ nodes = 3 replicas)
  # ingress_replica_count = 1

  # Use the klipperLB (similar to metalLB), instead of the default Hetzner one, that has an advantage of dropping the cost of the setup.
  # Automatically "true" in the case of single node cluster (as it does not make sense to use the Hetzner LB in that situation).
  # It can work with any ingress controller that you choose to deploy.
  # Please note that because the klipperLB points to all nodes, we automatically allow scheduling on the control plane when it is active.
  # enable_klipper_metal_lb = "true"

  # If you want to configure additional arguments for traefik, enter them here as a list and in the form of traefik CLI arguments; see https://doc.traefik.io/traefik/reference/static-configuration/cli/
  # They are the options that go into the additionalArguments section of the Traefik helm values file.
  # Example: traefik_additional_options = ["--log.level=DEBUG", "--tracing=true"]
  # traefik_additional_options = []

  # By default traefik is configured to redirect http traffic to https, you can set this to "false" to disable the redirection.
  # traefik_redirect_to_https = false

  # If you want to disable the metric server set this to "false". Default is "true".
  # enable_metrics_server = false

  # If you want to allow non-control-plane workloads to run on the control-plane nodes, set this to "true". The default is "false".
  # True by default for single node clusters, and when enable_klipper_metal_lb is true. In those cases, the value below will be ignored.
  # allow_scheduling_on_control_plane = true

  # If you want to disable the automatic upgrade of k3s, you can set below to "false".
  # Ideally, keep it on, to always have the latest Kubernetes version, but lock the initial_k3s_channel to a kube major version,
  # of your choice, like v1.25 or v1.26. That way you get the best of both worlds without the breaking changes risk.
  # For production use, always use an HA setup with at least 3 control-plane nodes and 2 agents, and keep this on for maximum security.

  # The default is "true" (in HA setup i.e. at least 3 control plane nodes & 2 agents, just keep it enabled since it works flawlessly).
  automatically_upgrade_k3s = false

  # The default is "true" (in HA setup it works wonderfully well, with automatic roll-back to the previous snapshot in case of an issue).
  # IMPORTANT! For non-HA clusters i.e. when the number of control-plane nodes is < 3, you have to turn it off.
  automatically_upgrade_os = false

  # If you need more control over kured and the reboot behaviour, you can pass additional options to kured.
  # For example limiting reboots to certain timeframes. For all options see: https://kured.dev/docs/configuration/
  # The default options are: `--reboot-command=/usr/bin/systemctl reboot --pre-reboot-node-labels=kured=rebooting --post-reboot-node-labels=kured=done --period=5m`
  # Defaults can be overridden by using the same key.
  # kured_options = {
  #   "reboot-days": "su"
  #   "start-time": "3am"
  #   "end-time": "8am"
  #   "time-zone": "Local"
  # }

  # Allows you to specify either stable, latest, testing or supported minor versions.
  # see https://rancher.com/docs/k3s/latest/en/upgrades/basic/ and https://update.k3s.io/v1-release/channels
  # ⚠ If you are going to use Rancher addons for instance, it's always a good idea to fix the kube version to latest - 0.01,
  # ⚠ Rancher currently only supports v1.25 and earlier versions: https://github.com/rancher/rancher/issues/41113
  # The default is "v1.26".
  initial_k3s_channel = "stable"

  # The cluster name, by default "k3s"
  cluster_name = "kube-hetzener"

  # Whether to use the cluster name in the node name, in the form of {cluster_name}-{nodepool_name}, the default is "true".
  # use_cluster_name_in_node_name = false

  # Extra k3s registries. This is useful if you have private registries and you want to pull images without additional secrets.
  # Or if you want to proxy registries for various reasons like rate-limiting.
  # It will create the registries.yaml file, more info here https://docs.k3s.io/installation/private-registry.
  # Note that you do not need to get this right from the first time, you can update it when you want during the life of your cluster.
  # The default is blank.
  /* k3s_registries = <<-EOT
    mirrors:
      hub.my_registry.com:
        endpoint:
          - "hub.my_registry.com"
    configs:
      hub.my_registry.com:
        auth:
          username: username
          password: password
  EOT */

  # Additional environment variables for the host OS on which k3s runs. See for example https://docs.k3s.io/advanced#configuring-an-http-proxy .
  # additional_k3s_environment = {
  #   "CONTAINERD_HTTP_PROXY" : "http://your.proxy:port",
  #   "CONTAINERD_HTTPS_PROXY" : "http://your.proxy:port",
  #   "NO_PROXY" : "<IP_ADDRESS>/8,<IP_ADDRESS>/8,",
  # }

  # Additional commands to execute on the host OS before the k3s install, for example fetching and installing certs.
  # preinstall_exec = [
  #   "curl https://somewhere.over.the.rainbow/ca.crt > /root/ca.crt",
  #   "trust anchor --store /root/ca.crt",
  # ]

  # Additional flags to pass to the k3s server command (the control plane).
  # k3s_exec_server_args = "--kube-apiserver-arg enable-admission-plugins=PodTolerationRestriction,PodNodeSelector"

  # If you want to allow all outbound traffic you can set this to "false". Default is "true".
  # restrict_outbound_traffic = false

  # Adding extra firewall rules, like opening a port
  # More info on the format here https://registry.terraform.io/providers/hetznercloud/hcloud/latest/docs/resources/firewall
  # extra_firewall_rules = [
  #   {
  #     description = "For Postgres"
  #     direction       = "in"
  #     protocol        = "tcp"
  #     port            = "5432"
  #     source_ips      = ["<IP_ADDRESS>/0", "::/0"]
  #     destination_ips = [] # Won't be used for this rule
  #   },
  #   {
  #     description = "To Allow ArgoCD access to resources via SSH"
  #     direction       = "out"
  #     protocol        = "tcp"
  #     port            = "22"
  #     source_ips      = [] # Won't be used for this rule
  #     destination_ips = ["<IP_ADDRESS>/0", "::/0"]
  #   }
  # ]

  # If you want to configure a different CNI for k3s, use this flag
  # possible values: flannel (Default), calico, and cilium
  # As for Cilium, we allow infinite configurations via helm values, please check the CNI section of the readme over at https://github.com/kube-hetzner/terraform-hcloud-kube-hetzner/#cni.
  # Also, see the cilium_values at towards the end of this file, in the advanced section.
  # cni_plugin = "cilium"

  # You can choose the version of Calico that you want. By default, the latest is used.
  # More info on available versions can be found at https://github.com/projectcalico/calico/releases
  # Please note that if you are getting 403s from Github, it's also useful to set the version manually. However there is rarely a need for that!
  # calico_version = "v3.25.0"

  # If you want to disable the k3s default network policy controller, use this flag!
  # Both Calico and Ciliun cni_plugin values override this value to true automatically, the default is "false".
  # disable_network_policy = true

  # If you want to disable the automatic use of placement group "spread". See https://docs.hetzner.com/cloud/placement-groups/overview/
  # We advise to not touch that setting, unless you have a specific purpose.
  # The default is "false", meaning it's enabled by default.
  # placement_group_disable = true

  # By default, we allow ICMP ping in to the nodes, to check for liveness for instance. If you do not want to allow that, you can. Just set this flag to true (false by default).
  # block_icmp_ping_in = true

  # You can enable cert-manager (installed by Helm behind the scenes) with the following flag, the default is "true".
  # enable_cert_manager = false

  # IP Addresses to use for the DNS Servers, set to an empty list to use the ones provided by Hetzner, defaults to ["<IP_ADDRESS>", "<IP_ADDRESS>", "<IP_ADDRESS>"].
  # The number of different DNS servers is limited to 3 by Kubernetes itself.
  # dns_servers = []

  # When this is enabled, rather than the first node, all external traffic will be routed via a control-plane loadbalancer, allowing for high availability.
  # The default is false.
  use_control_plane_lb = true

  # Let's say you are not using the control plane LB solution above, and still want to have one hostname point to all your control-plane nodes.
  # You could create multiple A records of to let's say cp.cluster.my.org pointing to all of your control-plane nodes ips.
  # In which case, you need to define that hostname in the k3s TLS-SANs config to allow connection through it. It can be hostnames or IP addresses.
  # additional_tls_sans = ["cp.cluster.my.org"]

  # Oftentimes, you need to communicate to the cluster from inside the cluster itself, in which case it is important to set this value, as it will configure the hostname
  # at the load balancer level, and will save you from many slows downs when initiating communications from inside. Later on, you can point your DNS to the IP given
  # to the LB. And if you have other services pointing to it, you are also free to create CNAMES to point to it, or whatever you see fit.
  # If set, it will apply to either ingress controllers, Traefik or Ingress-Nginx.
  # lb_hostname = ""

  # You can enable Rancher (installed by Helm behind the scenes) with the following flag, the default is "false".
  # ⚠ Rancher currently only supports Kubernetes v1.25 and earlier, you will need to set initial_k3s_channel to a supported version: https://github.com/rancher/rancher/issues/41113
  # When Rancher is enabled, it automatically installs cert-manager too, and it uses rancher's own self-signed certificates.
  # See for options https://rancher.com/docs/rancher/v2.0-v2.4/en/installation/resources/advanced/helm2/helm-rancher/#choose-your-ssl-configuration
  # The easiest thing is to leave everything as is (using the default rancher self-signed certificate) and put Cloudflare in front of it.
  # As for the number of replicas, by default it is set to the numbe of control plane nodes.
  # You can customized all of the above by adding a rancher_values variable see at the end of this file in the advanced section.
  # After the cluster is deployed, you can always use HelmChartConfig definition to tweak the configuration.
  # IMPORTANT: Rancher's install is quite memory intensive, you will require at least 4GB if RAM, meaning cx21 server type (for your control plane).
  # ALSO, in order for Rancher to successfully deploy, you have to set the "rancher_hostname".
  # enable_rancher = true

  # If using Rancher you can set the Rancher hostname, it must be unique hostname even if you do not use it.
  # If not pointing the DNS, you can just port-forward locally via kubectl to get access to the dashboard.
  # If you already set the lb_hostname above and are using a Hetzner LB, you do not need to set this one, as it will be used by default.
  # But if you set this one explicitly, it will have preference over the lb_hostname in rancher settings.
  # rancher_hostname = "rancher.xyz.dev"

  # When Rancher is deployed, by default is uses the "latest" channel. But this can be customized.
  # The allowed values are "stable" or "latest".
  # rancher_install_channel = "stable"

  # Finally, you can specify a bootstrap-password for your rancher instance. Minimum 48 characters long!
  # If you leave empty, one will be generated for you.
  # (Can be used by another rancher2 provider to continue setup of rancher outside this module.)
  # rancher_bootstrap_password = ""

  # Separate from the above Rancher config (only use one or the other). You can import this cluster directly on an
  # an already active Rancher install. By clicking "import cluster" choosing "generic", giving it a name and pasting
  # the cluster registration url below. However, you can also ignore that and apply the url via kubectl as instructed
  # by Rancher in the wizard, and that would register your cluster too.
  # More information about the registration can be found here https://rancher.com/docs/rancher/v2.6/en/cluster-provisioning/registered-clusters/
  # rancher_registration_manifest_url = "https://rancher.xyz.dev/v3/import/xxxxxxxxxxxxxxxxxxYYYYYYYYYYYYYYYYYYYzzzzzzzzzzzzzzzzzzzzz.yaml"

  # Extra commands to be executed after the `kubectl apply -k` (useful for post-install actions, e.g. wait for CRD, apply additional manifests, etc.).
  # extra_kustomize_deployment_commands=""

  # Extra values that will be passed to the `extra-manifests/kustomization.yaml.tpl` if its present.
  # extra_kustomize_parameters={}

  # It is best practice to turn this off, but for backwards compatibility it is set to "true" by default.
  # See https://github.com/kube-hetzner/terraform-hcloud-kube-hetzner/issues/349
  # When "false". The kubeconfig file can instead be created by executing: "terraform output --raw kubeconfig > cluster_kubeconfig.yaml"
  # Always be careful to not commit this file!
  # create_kubeconfig = false

  # Don't create the kustomize backup. This can be helpful for automation.
  create_kustomization = false

  ### ADVANCED - Custom helm values for packages above (search _values if you want to located where those are mentioned upper in this file)
  # ⚠ Inside the _values variable below are examples, up to you to find out the best helm values possible, we do not provide support for customized helm values.
  # Please understand that the indentation is very important, inside the EOTs, as those are proper yaml helm values.
  # We advise you to use the default values, and only change them if you know what you are doing!

  # Cilium, all Cilium helm values can be found at https://github.com/cilium/cilium/blob/master/install/kubernetes/cilium/values.yaml
  # The following is an example, please note that the current indentation inside the EOT is important.
  /*   cilium_values = <<EOT
ipam:
  mode: kubernetes
devices: "eth1"
k8s:
  requireIPv4PodCIDR: true
kubeProxyReplacement: strict
l7Proxy: false
encryption:
  enabled: true
  type: wireguard
extraConfig:
  mtu: "1450"
  EOT */

  # Cert manager, all cert-manager helm values can be found at https://github.com/cert-manager/cert-manager/blob/master/deploy/charts/cert-manager/values.yaml
  # The following is an example, please note that the current indentation inside the EOT is important.
  /*   cert_manager_values = <<EOT
installCRDs: true
replicaCount: 1
webhook:
  replicaCount: 1
cainjector:
  replicaCount: 1
  EOT */

  # csi-driver-smb, all csi-driver-smb helm values can be found at https://github.com/kubernetes-csi/csi-driver-smb/blob/master/charts/latest/csi-driver-smb/values.yaml
  # The following is an example, please note that the current indentation inside the EOT is important.
  /*   csi_driver_smb_values = <<EOT
controller:
  name: csi-smb-controller
  replicas: 1
  runOnMaster: false
  runOnControlPlane: false
  resources:
    csiProvisioner:
      limits:
        memory: 300Mi
      requests:
        cpu: 10m
        memory: 20Mi
    livenessProbe:
      limits:
        memory: 100Mi
      requests:
        cpu: 10m
        memory: 20Mi
    smb:
      limits:
        memory: 200Mi
      requests:
        cpu: 10m
        memory: 20Mi
  EOT */

  # Longhorn, all Longhorn helm values can be found at https://github.com/longhorn/longhorn/blob/master/chart/values.yaml
  # The following is an example, please note that the current indentation inside the EOT is important.
  /*   longhorn_values = <<EOT
defaultSettings:
  defaultDataPath: /var/longhorn
persistence:
  defaultFsType: ext4
  defaultClassReplicaCount: 3
  defaultClass: true
  EOT */

  # Traefik, all Traefik helm values can be found at https://github.com/traefik/traefik-helm-chart/blob/master/traefik/values.yaml
  # The following is an example, please note that the current indentation inside the EOT is important.
  /*   traefik_values = <<EOT
deployment:
  replicas: 1
globalArguments: []
service:
  enabled: true
  type: LoadBalancer
  annotations:
    "load-balancer.hetzner.cloud/name": "k3s"
    "load-balancer.hetzner.cloud/use-private-ip": "true"
    "load-balancer.hetzner.cloud/disable-private-ingress": "true"
    "load-balancer.hetzner.cloud/location": "nbg1"
    "load-balancer.hetzner.cloud/type": "lb11"
    "load-balancer.hetzner.cloud/uses-proxyprotocol": "true"

ports:
  web:
    redirectTo: websecure

    proxyProtocol:
      trustedIPs:
        - <IP_ADDRESS>/32
        - <IP_ADDRESS>/8
    forwardedHeaders:
      trustedIPs:
        - <IP_ADDRESS>/32
        - <IP_ADDRESS>/8
  websecure:
    proxyProtocol:
      trustedIPs:
        - <IP_ADDRESS>/32
        - <IP_ADDRESS>/8
    forwardedHeaders:
      trustedIPs:
        - <IP_ADDRESS>/32
        - <IP_ADDRESS>/8
  EOT */

  # Nginx, all Nginx helm values can be found at https://github.com/kubernetes/ingress-nginx/blob/main/charts/ingress-nginx/values.yaml
  # You can also have a look at https://kubernetes.github.io/ingress-nginx/, to understand how it works, and all the options at your disposal.
  # The following is an example, please note that the current indentation inside the EOT is important.
  /*   nginx_values = <<EOT
controller:
  watchIngressWithoutClass: "true"
  kind: "DaemonSet"
  config:
    "use-forwarded-headers": "true"
    "compute-full-forwarded-for": "true"
    "use-proxy-protocol": "true"
  service:
    annotations:
      "load-balancer.hetzner.cloud/name": "k3s"
      "load-balancer.hetzner.cloud/use-private-ip": "true"
      "load-balancer.hetzner.cloud/disable-private-ingress": "true"
      "load-balancer.hetzner.cloud/location": "nbg1"
      "load-balancer.hetzner.cloud/type": "lb11"
      "load-balancer.hetzner.cloud/uses-proxyprotocol": "true"
  EOT */

  # Rancher, all Rancher helm values can be found at https://rancher.com/docs/rancher/v2.5/en/installation/install-rancher-on-k8s/chart-options/
  # The following is an example, please note that the current indentation inside the EOT is important.
  /*   rancher_values = <<EOT
ingress:
  tls:
    source: "rancher"
hostname: "rancher.example.com"
replicas: 1
bootstrapPassword: "supermario"
  EOT */

}

provider "hcloud" {
  token = var.hcloud_token != "" ? var.hcloud_token : local.hcloud_token
}

terraform {
  required_version = ">= 1.3.3"
  required_providers {
    hcloud = {
      source  = "hetznercloud/hcloud"
      version = ">= 1.39.0"
    }
  }
}

output "kubeconfig" {
  value     = module.kube-hetzner.kubeconfig
  sensitive = true
}

variable "hcloud_token" {
  sensitive = true
  default   = ""
}

Screenshots

Platform
MacBook Air M1

Normally the cluster is set up <10 minutes (< 5 minutes if you are lucky), 45 minutes indicates something has gone wrong. To find out what the reason for the problem is you need to collect some informations:

What was the last local-exec line in the log? This tells you what it tries to execute
Log into your hetzner cloud server using SSH and the SSH key you created. Inspect the system logs

ssh -i .ssh/id_ed25519 root@SERVERIP

journalctl -f

@sebastianlutter Hi and thanks for answering this quick.

Interestingly enough now even when I do have I control_plane and an agent only the agent server gets created..
I did ssh into it and the output of journalctl -f is
vincenzocalia@vincenzos-MacBook-Air Kube-Hetzner % ssh -i .ssh/id_ed25519<EMAIL_ADDRESS>Warning: Identity file .ssh/id_ed25519 not accessible: No such file or directory.
Enter passphrase for key '/Users/vincenzocalia/.ssh/id_ed25519':
Last login: Fri Jun 30 16:47:59 UTC 2023 from <IP_ADDRESS> on ssh
kube-hetzener-agent-large-lit:~ # journalctl -f
Jun 30 16:50:46 kube-hetzener-agent-large-lit systemd[6006]: Listening on D-Bus User Message Bus Socket.
Jun 30 16:50:46 kube-hetzener-agent-large-lit systemd[6006]: Reached target Sockets.
Jun 30 16:50:46 kube-hetzener-agent-large-lit systemd[6006]: Finished Create User's Volatile Files and Directories.
Jun 30 16:50:46 kube-hetzener-agent-large-lit systemd[6006]: Reached target Basic System.
Jun 30 16:50:46 kube-hetzener-agent-large-lit systemd[6006]: Reached target Main User Target.
Jun 30 16:50:46 kube-hetzener-agent-large-lit systemd[6006]: Startup finished in 260ms.
Jun 30 16:50:46 kube-hetzener-agent-large-lit systemd[1]: Started User Manager for UID 0.
Jun 30 16:50:46 kube-hetzener-agent-large-lit systemd[1]: Started Session 3 of User root.
Jun 30 16:50:46 kube-hetzener-agent-large-lit sshd[6001]: pam_unix(sshd:session): session opened for user root(uid=0) by root(uid=0)
Jun 30 16:50:46 kube-hetzener-agent-large-lit sshd[6016]: lastlog_openseek: Couldn't stat /var/log/lastlog: No such file or directory
Jun 30 16:51:14 kube-hetzener-agent-large-lit sshd[6048]: Connection closed by <IP_ADDRESS> port 57888 [preauth]

Is it helping?

did a second test:
# version = "2.0.9"
1 control plane cpx31 count=1,
1 agent cpx21 count=0,
restrict_outbound_traffic=false,
allow_scheduling_on_control_plane=true ( but this should turn to true automatically when non HA cluster right?)
ssh into it :
vincenzocalia@vincenzos-MacBook-Air Kube-Hetzner % ssh -i .ssh/id_ed25519<EMAIL_ADDRESS>
Warning: Identity file .ssh/id_ed25519 not accessible: No such file or directory.
The authenticity of host '<IP_ADDRESS> (<IP_ADDRESS>)' can't be established.
ED25519 key fingerprint is SHA256:BM6yumnIm21GN3iIvmhNVlvxBLT58c58Oz5iiIYwFfQ.
This key is not known by any other names
Are you sure you want to continue connecting (yes/no/[fingerprint])? yes
Warning: Permanently added '<IP_ADDRESS>' (ED25519) to the list of known hosts.
Enter passphrase for key '/Users/vincenzocalia/.ssh/id_ed25519':
Last login: Wed Jun 28 07:37:19 UTC 2023 from <IP_ADDRESS> on ssh
kube-hetzener-control-plane-fsn1-eqs:~ # journalctl -f
Jun 30 17:48:30 kube-hetzener-control-plane-fsn1-eqs systemd[1268]: Reached target Sockets.
Jun 30 17:48:30 kube-hetzener-control-plane-fsn1-eqs systemd[1268]: Finished Create User's Volatile Files and Directories.
Jun 30 17:48:30 kube-hetzener-control-plane-fsn1-eqs systemd[1268]: Reached target Basic System.
Jun 30 17:48:30 kube-hetzener-control-plane-fsn1-eqs systemd[1268]: Reached target Main User Target.
Jun 30 17:48:30 kube-hetzener-control-plane-fsn1-eqs systemd[1268]: Startup finished in 167ms.
Jun 30 17:48:30 kube-hetzener-control-plane-fsn1-eqs systemd[1]: Started User Manager for UID 0.
Jun 30 17:48:30 kube-hetzener-control-plane-fsn1-eqs systemd[1]: Started Session 1 of User root.
Jun 30 17:48:30 kube-hetzener-control-plane-fsn1-eqs sshd[1065]: pam_unix(sshd:session): session opened for user root(uid=0) by root(uid=0)
Jun 30 17:48:30 kube-hetzener-control-plane-fsn1-eqs sshd[1277]: lastlog_openseek: Couldn't stat /var/log/lastlog: No such file or directory
Jun 30 17:48:42 kube-hetzener-control-plane-fsn1-eqs systemd[1]: systemd-hostnamed.service: Deactivated successfully.
Jun 30 17:50:02 kube-hetzener-control-plane-fsn1-eqs sshd[1052]: fatal: Timeout before authentication for <IP_ADDRESS> port 50538
Jun 30 17:51:46 kube-hetzener-control-plane-fsn1-eqs sshd[1314]: error: kex_exchange_identification: Connection closed by remote host
Jun 30 17:51:46 kube-hetzener-control-plane-fsn1-eqs sshd[1314]: Connection closed by <IP_ADDRESS> port 41158
Jun 30 17:52:05 kube-hetzener-control-plane-fsn1-eqs sshd[1315]: Unable to negotiate with <IP_ADDRESS> port 53092: no matching host key type found. Their offer: ssh-rsa,ssh-dss [preauth]
Jun 30 17:53:47 kube-hetzener-control-plane-fsn1-eqs systemd[1268]: Created slice User Background Tasks Slice.
Jun 30 17:53:47 kube-hetzener-control-plane-fsn1-eqs systemd[1268]: Starting Cleanup of User's Temporary Files and Directories...
Jun 30 17:53:47 kube-hetzener-control-plane-fsn1-eqs systemd[1268]: Finished Cleanup of User's Temporary Files and Directories.
Jun 30 17:58:47 kube-hetzener-control-plane-fsn1-eqs systemd[1]: Started Daily Cleanup of Snapper Snapshots.
Jun 30 17:58:47 kube-hetzener-control-plane-fsn1-eqs dbus-daemon[713]: [system] Activating via systemd: service name='org.opensuse.Snapper' unit='snapperd.service' requested by ':1.15' (uid=0 pid=1323 comm="/usr/lib/snapper/systemd-helper --cleanup" label="system_u:system_r:snapperd_t:s0")
Jun 30 17:58:47 kube-hetzener-control-plane-fsn1-eqs systemd[1]: Starting DBus interface for snapper...
Jun 30 17:58:47 kube-hetzener-control-plane-fsn1-eqs dbus-daemon[713]: [system] Successfully activated service 'org.opensuse.Snapper'
Jun 30 17:58:47 kube-hetzener-control-plane-fsn1-eqs systemd[1]: Started DBus interface for snapper.
Jun 30 17:58:47 kube-hetzener-control-plane-fsn1-eqs systemd-helper[1323]: running cleanup for 'root'.
Jun 30 17:58:47 kube-hetzener-control-plane-fsn1-eqs systemd-helper[1323]: running number cleanup for 'root'.
Jun 30 17:58:47 kube-hetzener-control-plane-fsn1-eqs systemd-helper[1323]: running timeline cleanup for 'root'.
Jun 30 17:58:47 kube-hetzener-control-plane-fsn1-eqs systemd-helper[1323]: running empty-pre-post cleanup for 'root'.
Jun 30 17:58:47 kube-hetzener-control-plane-fsn1-eqs systemd[1]: snapper-cleanup.service: Deactivated successfully.
Jun 30 17:59:37 kube-hetzener-control-plane-fsn1-eqs sshd[1330]: Invalid user kiosk from <IP_ADDRESS> port 59956
Jun 30 17:59:38 kube-hetzener-control-plane-fsn1-eqs sshd[1330]: Received disconnect from <IP_ADDRESS> port 59956:11: Bye Bye [preauth]
Jun 30 17:59:38 kube-hetzener-control-plane-fsn1-eqs sshd[1330]: Disconnected from invalid user kiosk <IP_ADDRESS> port 59956 [preauth]
Jun 30 17:59:47 kube-hetzener-control-plane-fsn1-eqs systemd[1]: snapperd.service: Deactivated successfully.
Jun 30 18:00:26 kube-hetzener-control-plane-fsn1-eqs sshd[1333]: Invalid user hz from <IP_ADDRESS> port 39210
Jun 30 18:00:26 kube-hetzener-control-plane-fsn1-eqs systemd[1]: Started Timeline of Snapper Snapshots.
Jun 30 18:00:26 kube-hetzener-control-plane-fsn1-eqs dbus-daemon[713]: [system] Activating via systemd: service name='org.opensuse.Snapper' unit='snapperd.service' requested by ':1.17' (uid=0 pid=1335 comm="/usr/lib/snapper/systemd-helper --timeline" label="system_u:system_r:snapperd_t:s0")
Jun 30 18:00:26 kube-hetzener-control-plane-fsn1-eqs systemd[1]: Starting DBus interface for snapper...
Jun 30 18:00:26 kube-hetzener-control-plane-fsn1-eqs dbus-daemon[713]: [system] Successfully activated service 'org.opensuse.Snapper'
Jun 30 18:00:26 kube-hetzener-control-plane-fsn1-eqs systemd[1]: Started DBus interface for snapper.
Jun 30 18:00:26 kube-hetzener-control-plane-fsn1-eqs systemd[1]: snapper-timeline.service: Deactivated successfully.

Jun 30 18:03:27 kube-hetzener-control-plane-fsn1-eqs systemd[1]: Starting Cleanup of Temporary Directories...
Jun 30 18:03:27 kube-hetzener-control-plane-fsn1-eqs systemd[1]: systemd-tmpfiles-clean.service: Deactivated successfully.
Jun 30 18:03:27 kube-hetzener-control-plane-fsn1-eqs systemd[1]: Finished Cleanup of Temporary Directories.
Jun 30 18:03:27 kube-hetzener-control-plane-fsn1-eqs systemd[1]: run-credentials-systemd\x2dtmpfiles\x2dclean.service.mount: Deactivated successfully.
 Their offer: ssh-rsa,ssh-dss [preauth]
Jun 30 18:06:45 kube-hetzener-control-plane-fsn1-eqs sshd[1359]: Invalid user ruby from <IP_ADDRESS> port 45264
Jun 30 18:06:45 kube-hetzener-control-plane-fsn1-eqs sshd[1359]: Received disconnect from <IP_ADDRESS> port 45264:11: Bye Bye [preauth]
Jun 30 18:06:45 kube-hetzener-control-plane-fsn1-eqs sshd[1359]: Disconnected from invalid user ruby <IP_ADDRESS> port 45264 [preauth]
Jun 30 18:06:49 kube-hetzener-control-plane-fsn1-eqs sshd[1361]: Invalid user amsftp from <IP_ADDRESS> port 49232
Jun 30 18:06:49 kube-hetzener-control-plane-fsn1-eqs sshd[1361]: Received disconnect from <IP_ADDRESS> port 49232:11: Bye Bye [preauth]
Jun 30 18:06:49 kube-hetzener-control-plane-fsn1-eqs sshd[1361]: Disconnected from invalid user amsftp <IP_ADDRESS> port 49232 [preauth]
Jun 30 18:07:12 kube-hetzener-control-plane-fsn1-eqs sshd[1363]: Received disconnect from <IP_ADDRESS> port 50096:11: Bye Bye [preauth]
Jun 30 18:07:12 kube-hetzener-control-plane-fsn1-eqs sshd[1363]: Disconnected from authenticating user root <IP_ADDRESS> port 50096 [preauth]

looking at it I see many users..
kiosk, rita, gaetano, amsftp, ruby, osm
what are these?

I then tried to use cax servers (ARM) but then when I run terraform apply I get the image has incompatible architecture error for both server.
Can this have something to to do with wrong images built with the
tmp_script=$(mktemp) && curl -sSL -o "${tmp_script}" https://raw.githubusercontent.com/kube-hetzner/terraform-hcloud-kube-hetzner/master/scripts/create.sh && chmod +x "${tmp_script}" && "${tmp_script}" && rm "${tmp_script}" command??
│ Error: image has incompatible architecture (invalid_input): [image => [image has incompatible architecture]]
│
│   with module.kube-hetzner.module.control_planes["0-0-control-plane-fsn1"].hcloud_server.server,
│   on .terraform/modules/kube-hetzner/modules/host/main.tf line 22, in resource "hcloud_server" "server":
│   22: resource "hcloud_server" "server" {
│
╵
╷
│ Error: image has incompatible architecture (invalid_input): [image => [image has incompatible architecture]]
│
│   with module.kube-hetzner.module.agents["0-0-agent-large"].hcloud_server.server,
│   on .terraform/modules/kube-hetzner/modules/host/main.tf line 22, in resource "hcloud_server" "server":
│   22: resource "hcloud_server" "server" {

@vinnytwice In your case you need to upgrade!
About that general hanging issues, it seems that creating a new Hetzner project and using that fixes it.


WSL recommender shows up when launching in a new user data dir

Repro:
Run code-insiders.cmd --user-data-dir ./temp2 --extensions-dir ./temp3
I see this:

This should not be showing up as part of the set of notifications that show on first launch. It's important we keep the welcome experience as minimal as possible. Moving this to the 2nd window that's launched would be a good enough fix for this imo.

@bhavyaus for welcome experience


undefined method `where'

I'm new to Refinery CMS so I apologize if this has already been solved but I couldn't find anything in the Issues area via searching.
I have seen this issue 3 times, the first two times I thought may have been my fault, but I wasn't sure what was wrong on the 3rd instance. What I do is just create 2 engines and the 2nd one gives me this error when I click on its tab in the Refinery section of my site.
The first engine is just:
rails g refinery_engine MenuCategory category:string
This one works fine.
The second one is generated via:
rails g refinery_engine MenuItem name:string description:string price:decimal menu_category_id:integer
It is generated and migrated fine but when I load the site and click on its new tab it throws this exception:
undefined method `where' for Refinery::MenuItem:Class
The top of the trace showing:
(eval):106:in find_all_menu_items' (eval):114:in paginate_all_menu_items'
(eval):4:in index' actionpack (3.0.11) lib/action_controller/metal/implicit_render.rb:4:in send_action'
actionpack (3.0.11) lib/abstract_controller/base.rb:150:in process_action' actionpack (3.0.11) lib/action_controller/metal/rendering.rb:11:in process_action'
actionpack (3.0.11) lib/abstract_controller/callbacks.rb:18:in block in process_action' activesupport (3.0.11) lib/active_support/callbacks.rb:471:in _run__891786675933579336__process_action__1651167218366637553__callbacks'
I'm running the stable version of Refinery CMS from simply 'gem install refinerycms', Rails 3.0, Ruby 1.9.2 and I'm on Ubuntu 11.10

There's a class in Refinery called MenuItem already - https://github.com/resolve/refinerycms/blob/1-0-stable/core/lib/refinery/menu_item.rb - so you can't use tht as a name for your engine.


Adding a query so we do not create duplicate aliases

Coverage increased (+0.02%) to 75.792% when pulling 9bcbce57c11731adacbd73c056102fcb8bda3846 on repeatable into 2a6eee599cb785e3b5f85c5ece79caa9d17008c4 on develop.


Passing options to includes

Great gem! But I'm having a problem I can't seem to figure out.
I'd like to be able to pass a variable to my includes but it interprets everything after haml as the file name.
{% haml comments.haml author="tom" %} => interprets comments.haml author="tom" as the file
{% include comments.html author="tom" %} => how it would work with html
I think the cause is related to https://github.com/samvincent/jekyll-haml/blob/master/lib/jekyll-haml/tags/haml_partial.rb#L8 where file really refers to an options string, with the first part being the file.
Let me know if I'm just missing something, or if you'd be interested in a PR. Thanks!

Hi,
I've encountered myself with the same issue I couldn't fix it and it looks that the developer is not looking this. I created another gem, that uses slightly different approach https://github.com/afaundez/jekyll-haml-markup.
It had a lot of work to do, but I'm willing to maintain it.

Sounds like a good solution since this gem is dead


Browser crashes as .org.chromium.Chromium* (deleted) files are taking large disk space

Steps to reproduce
Tell us about your environment:

Puppeteer version: 2.0.0
Platform / OS version: Lambda
URLs (if applicable): https://www.google.com
Node.js version: Node JS 10.x

What steps will reproduce the problem?
When running on Lambda, available disk capacity is restricted to 512 MB.
I noticed when loading a heavy url, df shows high usage percentage as compared to du.
Eg. code to reproduce the issue of high disk usage
try {
await page.goto("https://about.google/?fg=1&utm_source=google-US&utm_medium=referral&utm_campaign=hp-header", {waitUntil: ['load', 'networkidle0'], timeout: 30000});
} catch (error) {
}
What is the expected result?
Du and df result show comparable disk usage.
What happens instead?
After loading very first URL: https://about.google/?fg=1&utm_source=google-US&utm_medium=referral&utm_campaign=hp-header, df shows 66% disk used. (DF minimum is 28% as chromium binary takes around 130MB)
However, du shows far less usage.
DF output (df -m /tmp):
Filesystem     1M-blocks      Used      Available     Use%    Mounted on
/dev/vdd             526             320          196              63%        /tmp
DU output:
DU 8.0K /tmp/puppeteer_dev_chrome_profile-pg9wQc/Default/Code Cache/wasm/index-dir
16K /tmp/puppeteer_dev_chrome_profile-pg9wQc/Default/Code Cache/wasm
8.0K /tmp/puppeteer_dev_chrome_profile-pg9wQc/Default/Code Cache/js/index-dir
148K /tmp/puppeteer_dev_chrome_profile-pg9wQc/Default/Code Cache/js
168K /tmp/puppeteer_dev_chrome_profile-pg9wQc/Default/Code Cache
4.0K /tmp/puppeteer_dev_chrome_profile-pg9wQc/Default/blob_storage/f86b4787-bad6-4642-942c-75d1f898a1de
8.0K /tmp/puppeteer_dev_chrome_profile-pg9wQc/Default/blob_storage
40K /tmp/puppeteer_dev_chrome_profile-pg9wQc/Default/GPUCache
240K /tmp/puppeteer_dev_chrome_profile-pg9wQc/Default
248K /tmp/puppeteer_dev_chrome_profile-pg9wQc
4.0K /tmp/locales
3.2M /tmp/aws/lib
976K /tmp/aws/.fonts/Open_Sans
980K /tmp/aws/.fonts
4.2M /tmp/aws
8.0K /tmp/cache-dir/index-dir
1.5M /tmp/cache-dir
4.8M /tmp/swiftshader
140M /tmp ---------------> DU shows /tmp disk usage to be 140 M whereas DF shows 320MB is used.
On further investigation, found that chromium process has Chromium process FDs referencing deleted .org.chromium.Chromium.* files causing disk to run out of space.
For this instance, I found around 40 such files out of which 36 were 4MB each.
Total disk space occupied by these deleted files ~ 160MB.
One such FD,
{
"name": "/tmp/.org.chromium.Chromium.yJcyXV (deleted)",
"fd": "101",
"stat": {
"dev": 65072,
"mode": 33152,
"nlink": 0,
"uid": 496,
"gid": 495,
"rdev": 0,
"blksize": 4096,
"ino": 218,
"size": 4198400,
"blocks": 8200,
"atimeMs":<PHONE_NUMBER>813.3027,
"mtimeMs":<PHONE_NUMBER>853.3027,
"ctimeMs":<PHONE_NUMBER>853.3027,
"birthtimeMs":<PHONE_NUMBER>793.3027,
"atime": "2020-07-28T02:06:57.813Z",
"mtime": "2020-07-28T02:06:57.853Z",
"ctime": "2020-07-28T02:06:57.853Z",
"birthtime": "2020-07-28T02:06:57.793Z"
}
},
}
For long running scripts, disk finally reaches its full capacity and browser crashes.

FYI I have the same issue in #11
A workaround is to remove the flag --disable-dev-shm-usage from puppeteer which was added in #1834 in which case they will instead be stored in /dev/shm


Rippled continuously restarts

Hi,
I recently installed a Rippled server on my Centos 7 VPS and I noticed that Rippled continuously restarts on its own. It works fine though, but I'm wondering why it restarts.
My server specs are:
2 CPU
4gb RAM + 4gb Swap
60GB ssd
Centos 7 x64
This is my rippled.cfg:
port_rpc_admin_local
port_peer
port_ws_admin_local
#port_ws_public
#ssl_key = /etc/ssl/private/server.key
#ssl_cert = /etc/ssl/certs/server.crt

[port_rpc_admin_local]
port = 5005
ip = <IP_ADDRESS>
admin = <IP_ADDRESS>
protocol = http

[port_peer]
port = 51235
ip = <IP_ADDRESS>
protocol = peer

[port_ws_admin_local]
port = 6006
ip = <IP_ADDRESS>
admin = <IP_ADDRESS>
protocol = ws

#[port_ws_public]
#port = 5005
#ip = <IP_ADDRESS>
#protocol = wss

#-------------------------------------------------------------------------------

[node_size]
small

# This is primary persistent datastore for rippled.  This includes transaction
# metadata, account states, and ledger headers.  Helpful information can be
# found here: https://ripple.com/wiki/NodeBackEnd
# delete old ledgers while maintaining at least 2000. Do not require an
# external administrative command to initiate deletion.
[node_db]
type=NuDB
path=/var/lib/rippled/nudb
open_files=1000
filter_bits=12
cache_mb=256
file_size_mb=8
file_size_mult=2
online_delete=256
advisory_delete=0

[ledger_history]
128

# This is the persistent datastore for shards. It is important for the health
# of the ripple network that rippled operators shard as much as practical.
# NuDB requires SSD storage. Helpful information can be found here
# https://ripple.com/build/history-sharding
#[shard_db]
#type=NuDB
#path=/var/lib/rippled/db/shards/nudb
#max_size_gb=500

[database_path]
/var/lib/rippled/nudb

# This needs to be an absolute directory reference, not a relative one.
# Modify this value as required.
[debug_logfile]
/var/log/rippled/debug.log

[sntp_servers]
time.windows.com
time.apple.com
time.nist.gov
pool.ntp.org

# Where to find some other servers speaking the Ripple protocol.
[ips]
r.ripple.com 51235

# To use the XRP test network (see https://ripple.com/build/xrp-test-net/),
# use the following [ips] section instead:
# [ips]
# r.altnet.rippletest.net 51235

# File containing trusted validator keys or validator list publishers.
# Unless an absolute path is specified, it will be considered relative to the
# folder in which the rippled.cfg file is located.
[validators_file]
validators.txt

# Turn down default logging to save disk space in the long run.
# Valid values here are trace, debug, info, warning, error, and fatal
[rpc_startup]
{ "command": "log_level", "severity": "warning" }

# If ssl_verify is 1, certificates will be validated.
# To allow the use of self-signed certificates for development or internal use,
# set to ssl_verify to 0.
[ssl_verify]
0

Btw here is my server_info:
{
   "result" : {
      "info" : {
         "build_version" : "1.0.0",
         "complete_ledgers" : "38839955-38840238",
         "hostid" : "webserver",
         "io_latency_ms" : 1,
         "jq_trans_overflow" : "0",
         "last_close" : {
            "converge_time_s" : 3,
            "proposers" : 16
         },
         "load" : {
            "job_types" : [
               {
                  "avg_time" : 2,
                  "job_type" : "ledgerRequest",
                  "peak_time" : 43,
                  "per_second" : 1,
                  "waiting" : 1
               },
               {
                  "job_type" : "untrustedProposal",
                  "peak_time" : 6,
                  "per_second" : 37
               },
               {
                  "avg_time" : 13,
                  "in_progress" : 1,
                  "job_type" : "ledgerData",
                  "peak_time" : 96,
                  "per_second" : 1
               },
               {
                  "in_progress" : 1,
                  "job_type" : "clientCommand",
                  "peak_time" : 7,
                  "per_second" : 4,
                  "waiting" : 1
               },
               {
                  "avg_time" : 1,
                  "job_type" : "transaction",
                  "peak_time" : 14,
                  "per_second" : 8
               },
               {
                  "job_type" : "batch",
                  "peak_time" : 23,
                  "per_second" : 7
               },
               {
                  "avg_time" : 8,
                  "in_progress" : 1,
                  "job_type" : "advanceLedger",
                  "peak_time" : 108,
                  "per_second" : 2
               },
               {
                  "avg_time" : 7,
                  "job_type" : "fetchTxnData",
                  "peak_time" : 37,
                  "per_second" : 3
               },
               {
                  "avg_time" : 1,
                  "job_type" : "trustedValidation",
                  "peak_time" : 11,
                  "per_second" : 3
               },
               {
                  "job_type" : "writeObjects",
                  "peak_time" : 12,
                  "per_second" : 2
               },
               {
                  "in_progress" : 1,
                  "job_type" : "acceptLedger"
               },
               {
                  "job_type" : "trustedProposal",
                  "peak_time" : 6,
                  "per_second" : 5
               },
               {
                  "avg_time" : 8,
                  "job_type" : "heartbeat",
                  "peak_time" : 22
               },
               {
                  "job_type" : "peerCommand",
                  "per_second" : 837
               },
               {
                  "job_type" : "diskAccess",
                  "peak_time" : 11,
                  "per_second" : 2
               },
               {
                  "job_type" : "processTransaction",
                  "per_second" : 8
               },
               {
                  "job_type" : "SyncReadNode",
                  "peak_time" : 11,
                  "per_second" : 2301
               },
               {
                  "job_type" : "AsyncReadNode",
                  "peak_time" : 13,
                  "per_second" : 176
               },
               {
                  "job_type" : "WriteNode",
                  "peak_time" : 8,
                  "per_second" : 1454
               }
            ],
            "threads" : 4
         },
         "load_factor" :<PHONE_NUMBER>5,
         "load_factor_fee_escalation" :<PHONE_NUMBER>5,
         "load_factor_server" : 1,
         "peer_disconnects" : "109",
         "peer_disconnects_resources" : "0",
         "peers" : 19,
         "pubkey_node" : "n9KpStytrbR7X7kBktEaC1zMek62S64oTc8bqCmXDuyHakmmAVk6",
         "pubkey_validator" : "none",
         "server_state" : "full",
         "state_accounting" : {
            "connected" : {
               "duration_us" : "308631443",
               "transitions" : 1
            },
            "disconnected" : {
               "duration_us" : "1316645",
               "transitions" : 1
            },
            "full" : {
               "duration_us" : "1061402760",
               "transitions" : 1
            },
            "syncing" : {
               "duration_us" : "2172985",
               "transitions" : 1
            },
            "tracking" : {
               "duration_us" : "1",
               "transitions" : 1
            }
         },
         "time" : "2018-May-22 12:44:45.070840",
         "uptime" : 1374,
         "validated_ledger" : {
            "age" : 5,
            "base_fee_xrp" : 1e-05,
            "hash" : "FCF0ED55BF94EBE3E1AAF029BA7F03FD4878167570AD1ABBBA6043C57F776ABA",
            "reserve_base_xrp" : 20,
            "reserve_inc_xrp" : 5,
            "seq" : 38840238
         },
         "validation_quorum" : 11,
         "validator_list_expires" : "2018-Jun-04 00:00:00.000000000"
      },
      "status" : "success"
   }
}

And it does give a lot of LoadMonitor warnings
LoadMonitor:WRN Job: recvPropose->checkPropose run: 0ms wait: 1527ms

Hi svendvdz,
I don't know what the cause is but given your hardware specs, I recommend trying the following changes.
Your machine has the minimum amount of RAM required, you may want to try using 'tiny' as the node_size.
[node_size]
tiny

The following settings apply only to RocksDB and since you are using NuDB they can either be commented out or removed.
open_files=1000
filter_bits=12
cache_mb=256
file_size_mb=8
file_size_mult=2

Here I recommend using a minimum value of 256.
[ledger_history]
128

Does your debug.log file contain any errors that may help diagnose your the problem further?


Allow users to specify a hidden service name as an alternative to the hostname

This makes the server spawn two irc clients that join #electrum, both with different hosts reported:
[Who] #electrum ~E_bauerj <IP_ADDRESS> kornbluth.freenode.net E_bauerj H 0 electrum.bauerj.eu v1.0 p10000 t s
[Who] #electrum ~E_bauerj_ <IP_ADDRESS> asimov.freenode.net E_bauerj_tor H 0 bauerjomfxkfgotm.onion v1.0 p10000 t s

Only the default client will be used for peer discovery as they will most likely both see the same users.
This adds a bit of join/leave spam to the irc so a better option would be to use one client to report multiple hostnames, but that's not possible with the current parser, which means all servers would need to be updated first.
To use this feature, one would need to edit the server section in electrum.conf. If that's not done, the behaviour should be the same as without this commit.

Neat. Please update the readme / manual as well with this new option including the instructions about what needs to be added to electrum.conf

For new installations there will be something like this in the default config file:
# Add your .onion address here if your server has one.
#hidden_service =

@gits7r Do you think I need to clarify this in the HOWTO?

I see this is not documented in the HOWTO so no sense expanding this there.
Electrum should not advertise a SSL port for .onion names. One because hidden services in Tor are self authenticated and end to end encrypted already, second because the default SSL certificate for the main hostname will not work with the hidden service - the common name will be different. Not everybody knows how to create a SSL cert with multiple common names and adding such instructions will complicate setup with no real benefits for security.
Also, electrum.conf.sample should include a line like this:
"Tor should be configured to forward the same virtual port as the defined TCP port for Electrum server (stratum_tcp_port) to this hidden service. For example: HiddenServicePort 50001 <IP_ADDRESS>:50001."
And make sure you bind electrum server automatically to <IP_ADDRESS> if hidden_service = is set, so the hidden service will work, even if the user configured a public IP at host = xxx. Currently, you have to enter host = <IP_ADDRESS> (so it binds to all interfaces) and use report_host = fqdn to advertise the actual address where the server is reachable.

And make sure you bind electrum server automatically to <IP_ADDRESS> if hidden_service = is set

That would defeat the purpose. The clearnet address will be advertised too if you use this.

Why? Right now I have such a setup where I have
host = <IP_ADDRESS>
and report_host = my.domain.tld
So Electrum server binds to all interfaces. But it only advertises report_host, not the IP addresses of all interfaces that it is bind to.
hidden_service , if set, should force bind to <IP_ADDRESS> (if not already required to bind by host =) and advertise the .onion hostname.
If host = public_ip_address, it'll only bind to that. So the hidden service will not work, it will just get advertised for nothing.

If electrum-server was bound to localhost, no clearnet connections would be possible.

I mean also to localhost , so it won't affect the clearnet connections. If host = <IP_ADDRESS> or host = <IP_ADDRESS> it's ok, but if not and hidden_service is set, we should make sure we are bind at leas to localhost. Hope this clarifies.

I mean also to localhost , so it won't affect the clearnet connections.

Well, it's only possible to either bind a socket to all interfaces or only to one interface. It's not possible to bind electrum-server on one address and also on locahost.

Also, electrum.conf.sample should include a line like this:
"Tor should be configured to forward the same virtual port as the defined TCP port for Electrum server (stratum_tcp_port) to this hidden service. For example: HiddenServicePort 50001 <IP_ADDRESS>:50001."

That line would be far too long :wink:

Electrum should not advertise a SSL port for .onion names. One because hidden services in Tor are self authenticated and end to end encrypted already, second because the default SSL certificate for the main hostname will not work with the hidden service - the common name will be different. Not everybody knows how to create a SSL cert with multiple common names and adding such instructions will complicate setup with no real benefits for security.

That is not true. Electrum does not verify the hostname with the SSL certificate. A second layer of encryption won't hurt.


[OAP-1884][OAP-dev]Remove arrow-cpp conda build workflow.

What changes were proposed in this pull request?
Remove arrow-cpp conda build workflow from master.

Closed #1915


Unresolved reference when adding dependency to a Kotlin module

Hi @skydoves, and thanks for this nice library
When adding this dependency to the build.gradle file of an Android module, it works fine.
But doing the same in the build.gradle of a pure Kotlin module, I'm not able to see the library (Unresolved reference). The IDE suggests "Add library 'Gradle: com.github.skydoves:sandwich:1.0.4@aar' to classpath"; and even doing that doesn't solve the problem.
This is my build.gradle file:
apply plugin: 'kotlin'

dependencies {
    // some other dependencies
    implementation "com.github.skydoves:sandwich:1.0.4"
}

Could you explain how to handle this issue?
Thanks

Hi, @FredNM.
I just tested and worked fine: New Project -> (After creating a new project) -> New Module -> Java or Kotlin Library -> (And I added the sandwich dependency)
Or Isn't that an Android project? (IntelliJ IDE, pure Kotlin project?)

Hi, @FredNM!
This library will works when you use the below plugins together.
apply plugin: 'com.android.library'
apply plugin: 'kotlin-android'

This library uses some Android-based classes internally like LiveData, Runnable, Handler, etc.
Could you explain details about why this library should be used in a pure Kotlin project?
Thanks!

Ok I understand. Thanks for answering.
Actually I have a multi-module app, and my remote module where I do the Retrofit requests is a pure Kotlin module. I will move it to an Android module. Thanks.


Update to support Storybook v6

I tried to use this addon with storybook version 6.3.8.
I managed to include the addon by adding it to the addons array (in main.js), but had no luck with specifying the options.
I see the versions tab when I add just the addon without trying to specify any options, but it always shows "No versions found".
module.exports = {
  addons: [
    "@panosvoudouris/addon-versions"
  ]
}

As soon as I try to add the options, the versions tab disappears.
module.exports = {
  addons: [
    {
      name: "@panosvoudouris/addon-versions",
      options: {
        versions: {
          availableVersions: [
            "2.0.16",
            "2.0.22",
            "2.0.24",
            "2.0.25"
          ],
          hostname: "localhost:8000",
          localhost: "localhost:9001",
          regex: "\/([^\/]+?)\/?$"
        }
      }
    }
  ]
}

Any advice?

Hello I have same issue did you managed to resolve it??

No, I did not find a working solution yet.

I am also looking for solution but didn't found anything.

you have to copy the storybook-config.json to storybook-static/storybook-config.json, then it works. When you want to update the values in he json, ensure that you disable cache in your browser because this json file gets cached, instead of fetched each time it's needed.
so far that's what I figured out.

I forked it. I want to add some more docs and instructions how I use it with gitlab ci. It works so far really well when you have some experience with versioning of docs with mkdocs and mike.
Fork can be found here:


Add Fourier checking as a tutorial

Is your feature request related to a use case or problem? Please describe.
As described in https://arxiv.org/abs/0910.4698 Fourier Checking is a simple quantum algorithm that can decide whether two 2^n random bitstrings are "forrelated" or not. I would like to showcase with this problem oracle query complexity and oracle synthesis using diagonal gates.
Describe the solution you'd like
We need the following:

a docs/tutorials/fourier_checking.ipynb that explains

Fourier Checking and why it's interesting
create classically two distributions based on n qubits that are within the promised boundaries to be forrelated
explains query complexity
why simple oracles based on truth tables are just simple diagonal gates - and how you can decompose those into 1 and 2 qubit gates in Cirq

we will need an extension of the ThreeQubitDiagonalGate class to multiple qubits. An initial starting point around this would be this paper: https://iopscience.iop.org/article/10.1088/1367-2630/16/3/033040/meta - but if a contributor finds a more efficient algorithm, that would be even better.

Additional context (e.g. screenshots)
I did some hacking on this colab, that could be used as a starting point: https://colab.research.google.com/drive/1iT-PO6GSstreo5edvxdvVQ2Xj4fxHRXo?usp=sharing.
What is the urgency from your perspective for this issue? Is it blocking important work?
P3 - I'm not really blocked by it, it is an idea I'd like to discuss / suggestion based on principle

I can contribute to this.

I can contribute to this.

Thanks @ybc1991 - as discussed, I'll also split out the oracle synthesis into a separate task from this one.

Thanks @ybc1991 - as discussed, I'll also split out the oracle synthesis into a separate task from this one.

@balopat Hi Balint, when you have time, would you please create another issue to specify the requirement of oracle synthesis? Thanks.

Interesting paper out showing some easy cases https://scirate.com/arxiv/2102.06963 and connecting them to recursive QAOA.


high vulnerabilities in dependencies

Hello, I have noticed in my project that npm started to report high & moderate vulnerabilities in dependencies and it fails to resolve them with npm audit fix. I have found that it comes to @craco/craco package (newest version 6.1.2). I am using MacBook with macOs 10.15.7. I have tested the issue with a clean project (no other dependencies) and it reports the same (see screenshot below). It looks quite concerning to me, but perhaps it's my mistake somewhere (if so then sorry for bothering, I have however seen it in CI and on other machines with Ubuntu). I would really appreciate it if the vulnerabilities would be addressed by your team (I can also take a look at it and create a PR to your repo). Have a good day :)

Hi @jakubkarabula
I bootstrapped a new project with create react app WITHOUT craco and I still get these warnings so I believe the problem is with react-scripts dependencies and not craco.

Than you,
Patrick

Thanks, I haven't considered this. It looks that there is an issue for this on CRA. Feel free to close the issue then.


Add an option to make matchings globally case-insensitive

If the parser builder could accept an option like { caseInsensitive: true }, and all parsing expressions will be case-insensitive, whether they have been appended with i or not, that would be great.

I removed this from the 0.9.0 plan.
I’m having second thoughts about this option. I suspect the number of grammars that are completely case-insensitive is rather small. The lack of “I need this too” comments seems to support this.
If anyone has a valid use case, please speak up.

@dmajda I recently came into a situation parsing TLDs in a URL parser and it would have been very nice to be able to say at a rule level that these should all be case-insensitive.
TLD "top-level domain"
  = "com"
  \ "edu"
  \ "gov"
  \ "int"
  \ "mil"
  \ "net"
  \ "org"

In this case being able to match any of the choices regardless of case would make the grammar much easier to read at a glance. It wasn't a big problem either way though.


Get order info

How can I check the status of a given order having its id ? Is there a method to say getOrderInfo(order_id) and get the order state and some other info ?

@0x0xyz There's no method for that. However, off the top of my head, you could do it by accessing the orderbook's arena field, and then looking up the ID in the arena's order_map field.

@rubik Thanks, I can do that and there is a method that gets me the qty and the price:
    pub fn get_full(&self, id: u128) -> Option<(u64, u64, usize)> {
        self.order_map
            .get(&id)
            .map(|i| (self.orders[*i].price, self.orders[*i].qty, *i))
    }

But that is pretty much it - there is no info about the status of the order. Do you know how I could obtain it ?

Many thanks

@BatiGencho If you find the order in the arena, it's assumed that the order is still valid and resting in the order book. If it's fully matched by a market order or canceled, it's removed from the arena.


Move the main display inside a window

This PR includes:

Emulation display is detached into a dockable overlay window. Still needs testing whether GL settings still apply
Shift+clicking on a display window's title bar will resize it to an integer scale
Mouse capturing by either clicking or pressing Ctrl-M in a focused display window
Main app's window size is saved and restored to box16.ini

Awesome, I know this has been on folks' wishlists for a while. Thanks!


test(bigtable): update ReadsRowParser acceptance tests

updating python code so that it can successfully parse new version of json file

This change is

I think we should update the generated .inc file in the same PR.  If you run the script, does it change the .inc file at all?
And if it does, do the tests pass?

I think we should update the generated .inc file in the same PR. If you run the script, does it change the .inc file at all?
And if it does, do the tests pass?

Hi,
the generated '.inc' file is exactly same as it was earlier. Also all tests pass with the new ".inc" file.


5e-SRD-Traits.json is a copy of  5e-SRD-Subraces.json

I was trying to request a few traits through the api, but noticed they were subraces instead.

Has there been any work on this?


Add DownloadMetadataBeforeTargetTransferCompleteTest

And update versions for galley/partyline in pom.
This test needs Galley PR https://github.com/Commonjava/galley/pull/163 to be merged first.

Wait...this should have failed. The galley fix is not in yet. I am confused...need to take a further look.

@ruhan1 I doubt it, but you might be able to do a HEAD request directly to the http-metadata.json file in question, using the ?cache-only=true query string.
That might work.

Thanks. You are right. The client.content().getInfo( remote, STORE, metaPath ) is able to check the metadata.json. It works at the end of the test case. But it saw it failed with above err after I moved it before the metadata was ready. Since I am going to test this via byteman at a different code point, this test is abandoned. I may go back later and dig something if I get a chance...


Build and safeguard remaining routes

User Stories

As a logged-in user, I want to be able to create new posts and comments and upvote other posts

Users can now create posts, comments, and upvotes.
Specifically, I accomplished the following:
Updated and deleted data by using SQLAlchemy methods.
Created a custom decorator function to act as route middleware.


Create unit tests for stock market effects

Create tests for stock-market.effects.ts in stock-market.effects.spec.ts file either by following official ngrx testing guide or feel free to suggest any improvements.
Try to keep tests as independent as possible (eg minimize importing of various modules in setting up tests)
Feel free to check out Contributors Guide for useful tips and hints that help you get started.

I'll can also take this one.

@lau32 are you taking a stab at this? If you're busy I could give it a shot this weekend :)

@zetsnotdead I guess @lau32 is currently busy because it's a pretty long time since he commented without PR so feel free to submit a PR yourself ;)

Working on it :) Should have it ready tomorrow.


DisGeNet annotator returns empty results

E.g. for 7157 (or ENSEMBL ENSG00000141510) exporting the TSV file only shows NaNs (on a local install of the app):

Reproduced same issue on the online version: https://biodatafuse.streamlit.app/

Thanks for spotting the bug @dssib.
Fixed here


Integration with Auth using request matchers

Done in https://github.com/airamhr9/citrine/commit/22c2e68fa569452c08427f942c4d2bfafd162a8f


Stop the cache varying on _ga cookie

What is this?
Follows https://github.com/wellcomecollection/wellcomecollection.org/pull/9431
As that feature is not being used, and it is causing the cache to vary unnecessarily, probably causing unnecessary load and slow response times, we should remove the _ga cookie as something we vary the cache on.
See also https://wellcome.slack.com/archives/CUA669WHH/p1731312936795359
How to test?

[ ] Measurable improvement in apdex scores

change deployed about 12:43pm 28/11/2024


SpatialTransformer - handle vast amounts of aspatial data

Two issues need to be addressed:

Need to determine how we are going to handle the vast amounts of aspatial data. 2BT data team did not separate the spatial files from the aspatial files, so there will be tonnes of aspatial records in the raw_data_tracker.
Need to determine how RecordsReviser will display only the most relevant information - e.g. dropped = False and planting year = YYYY. Or some sort of sorting filtering in the GUI itself.

Addressing point #1: We decided to add a event_type field with a spatial/aspatial flag
To address point #2: @AnthonyRodway - How difficult would it be to filter the records reviser to only display the records that were input within the last 24 hours? This would ONLY apply to when the records reviser automatically pops up at the end of the SpatialTransformer run.

Changes were made in this commit: https://github.com/cat-cfs/twobilliontoolkit/commit/c97d71018ca74810367038626a15b2a6dab668d0
Changes:

The record reviser (function) can now take a filter dictionary with some special functionality for the created_at column. If called from spatial transformer there is a filter already applied to only include entries that were created on the same day. Some other functionality may need to be implemented in the future for other filters but the framework is there.
The record reviser table can now be sorted by each column either ascending or descending. When the reset or save button is clicked it will automatically go back to sorting the project_spatial_id ascending so it is consistent with the dataframe which saves having to redo alot of the code (could be a future job to rework the tool)

The entry type was made quite a while ago in a previous commit but forgot to document which one, sorry about that. It is implemented in the new spatial logic branch

Tested and functioning


[nri-kube-events] number of replicas in the deployment

Is your feature request related to a problem? Please describe.
Is there any specific reason for hardcoding the number of replicas for nri-kube-events and nri-metadata-injection to 1?
Describe the solution you'd like
It should be at least 2 pods in the deployment for the redundancy.
Describe alternatives you've considered
Make it as variable, to allow users to pass from their values.yaml

@gopisaba Increasing the amount of replicas for the event integration will incur in duplicated event data being sent to New Relic, which could make parts of the UI confusing.
Do you think this can be still useful for you?

No, not if it makes duplicate entries in NR. I am bit concerned about the redundancy.
The second part of the question is, nri-metadata-injection replicas set to 1 as well. Is there any reason for that as well?
I think it is a critical component, if the metadata-injection service is down when the new pods come up, the mutation webhook fail to inject the NR environment variables to the new pods and that will be a problem for APM.

The metadata injection can indeed have the amount of replicas increased without any problem. It's completely stateless. 🤔
Feel free to open a pull request adding this capability to the chart, if you have time and are comfortable doing it. 💪
The events integration is a bit complicated to achieve redundancy, as it connects to the k8s api server and streams events. We would need to add a sort of leader election to decide which replica will do the work. This is not currently in our roadmap though. :/


Login doesn't work on testing

IDK the reason yet, but I will look for it

This is just a config issue: the testing server wasnt restarted after changing the config.json for the replicated db.

That's it then, didn't remember that


Added Intro to Statistical Learning textbook

This is a great book that is often called the easier version of the elements of statistical learning. I thought it would be a great addition to the list.

Hey! Thank you for suggesting this book, and I completely agree with you, which is why it is, in fact, already in the guide! :)
It is in the mathematics section rather than the book section because this book also has online exercises and youtube videos attached to it, which are all free online!
It is there :) : "An Introduction to Statistical Learning: with Applications in R (Springer Texts in Statistics) - Gareth James, Daniela Witten, Trevor Hastie and Robert Tibshirani"
https://github.com/louisfb01/start-machine-learning-in-2020#no-math-background-for-ml-check-thisout


Now print name of container being read from ExtData.rc to the DEBUG level output

Description
This PR adds a debug logger call to print out the name of the data container being read from ExtData.rc.
Related Issue

See https://github.com/geoschem/MAPL/issues/30

Motivation and Context
Currently, MAPL does not include this information in when setting the CAP.EXTDATA settings to DEBUG mode.  This can make it difficult to diagnose and find issues caused by improperly-formatted netCDF files.
How Has This Been Tested?
I have tested this with a GCHP simulation with CAP.EXTDATA options set to DEBUG in logging.yml.

Types of changes

[ ] Bug fix (non-breaking change which fixes an issue)
[x] New feature (non-breaking change which adds functionality)
[ ] Breaking change (fix or feature that would cause existing functionality to change)
[x] Trivial change (affects only documentation or cleanup)

Checklist:

[ ] I have tested this change with a run of GEOSgcm (if non-trivial)
[ ] I have added one of the required labels (0 diff, 0 diff trivial, 0 diff structural, non 0-diff)
[x] I have updated the CHANGELOG.md accordingly following the style of Keep a Changelog

@tclune, sorry, this should have gone into the geoschem/MAPL repo.  I'll close the PR.

@yantosca That said, if you have a new logger print you'd like in MAPL, we'd be happy to add it to the mothership so it doesn't get lost!


fix: Fixed sizes for toggle components

Toggle component has problems with sizes. Especially the sm size:

Here is a fix with proper Tailwind classes

Summary by CodeRabbit

New Features

Improved support for right-to-left (RTL) layouts in the toggle component, enhancing accessibility for users in different language contexts.

Improvements

Updated CSS class definitions to align with modern practices, ensuring better responsiveness and compatibility with RTL layouts.

Hey @andreyjamer 👋
Can you please fix conflict... it clashes with your other PR ;)

Ok, I'm closing this one... as this changes are already merged with this PR


bigquery.Job sets createDisposition/writeDisposition default incorrectly causing job to fail

I am trying to create a bigquery job which executes a DDL statement to create a table.
It seems like something strange is going on with the Pulumi default values of some optional parameters causing the job execution to fail.
Steps to reproduce

Create BigQuery job which executes DDL query

const testJob = new pulumi.bigquery.Job('testing9196', {
    jobId: 'testing9196',
    query: {
        query: "CREATE TABLE dataset.testing (test INT64) AS SELECT (1);",
        useLegacySql: false,
        // If query has a DDL statement then this must be explicitly set to empty string, otherwise the job fails with "Cannot set create/write disposition in jobs with DDL statements"
        // createDisposition: "",
        // writeDisposition: ""
    },
    project: config.project.id,
    location: config.region
});

Check status of job and it is FAILED unless the createDisposition or writeDisposition is explicitly set to ""

  Job Type    State      Start Time      Duration             User Email             Bytes Processed   Bytes Billed   Billing Tier   Labels
 ---------- --------- ----------------- ---------- -------------------------------- ----------------- -------------- -------------- --------
  query      FAILURE   10 Aug 17:35:33   0:00:00<EMAIL_ADDRESS>

Error encountered during job execution:
Cannot set create disposition in jobs with DDL statements

  Job Type    State      Start Time      Duration             User Email             Bytes Processed   Bytes Billed   Billing Tier   Labels
 ---------- --------- ----------------- ---------- -------------------------------- ----------------- -------------- -------------- --------
  query      FAILURE   10 Aug 17:41:28   0:00:00<EMAIL_ADDRESS>

Error encountered during job execution:
Cannot set write disposition in jobs with DDL statements

If you set createDisposition and writeDisposition to empty string to avoid the Pulumi defaults of CREATE_IF_NEEDED and WRITE_EMPTY then the job can complete:

  Job Type    State      Start Time         Duration                User Email             Bytes Processed   Bytes Billed   Billing Tier   Labels
 ---------- --------- ----------------- ---------------- -------------------------------- ----------------- -------------- -------------- --------
  query      SUCCESS   10 Aug 17:42:50   0:00:00.984000<EMAIL_ADDRESS> 0                 0              0

Created add0565d596a.dataset.testing

Expected: Proper default values are chosen
Actual: Job fails unless work around is provided
Investigation
The Google docs list these as optional fields but do note defaults that match Pulumi https://cloud.google.com/bigquery/docs/reference/rest/v2/Job#JobConfigurationQuery.
However, the BigQuery API fails with 400 Bad Request if I specify the default CREATE_AS_NEEDED and succeeds if I leave it blank or provide an empty string:
Failing with CREATE_AS_NEEDED explicitly provided:
{
    "configuration": {
        "query": {
            "query": "CREATE TABLE dataset.tablename (test INT64) AS SELECT (1);",
            "useLegacySql": false,
            "createDisposition": "CREATE_AS_NEEDED"
        }
    },
    "jobReference": {
        "jobId": "1234testcole3",
        "location": "us-east4",
        "projectId": "add0565d596a"
    }
}

Works if it's NULL or empty string:
{
    "configuration": {
        "query": {
            "query": "CREATE TABLE dataset.tablename (test INT64) AS SELECT (1);",
            "useLegacySql": false,
            "createDisposition": ""
        }
    },
    "jobReference": {
        "jobId": "1234testcole3",
        "location": "us-east4",
        "projectId": "add0565d596a"
    }
}

{
    "configuration": {
        "query": {
            "query": "CREATE TABLE dataset.tablename (test INT64) AS SELECT (1);",
            "useLegacySql": false
        }
    },
    "jobReference": {
        "jobId": "1234testcole3",
        "location": "us-east4",
        "projectId": "add0565d596a"
    }
}

  Job Type    State      Start Time         Duration                User Email             Bytes Processed   Bytes Billed   Billing Tier   Labels
 ---------- --------- ----------------- ---------------- -------------------------------- ----------------- -------------- -------------- --------
  query      SUCCESS   10 Aug 18:01:10   0:00:01.046000<EMAIL_ADDRESS> 0                 0              0

I think there must be more going on behind the scenes with the defaults noted in the BigQuery docs and it's not a good idea to hardcode them into the Pulumi objects, what do you think?

Is there an update on this issue? I am trying to update operators to us BigQueryInsertJobOperator and I am running into errors when using createDisposition & writeDisposition

I believe this issue has been resolved in the 2 years since the last report, but please file another report if you still encounter a problem like this.


Dislike default toggled find in selection

I would like this to either be turned off by default or to always allow the current selection to be cleared via clicking within the text body.
I do not want to go click the little box to turn off find in selection every time I select, copy, and paste something into find/replace.
Another solution for me would be to provide an option in the settings for one of the above solutions.
(Or let me know if there is already a setting available that I missed while searching.)

I like it.

I dislike this as well.
I frequently find myself needing to move my cursor and pressing the find keybind again, or sometimes even needing to move my hand from my keyboard to my mouse to deselect find in selection. Which may seem like a minor gripe, but I have to do this so frequently it becomes tiresome as the time it takes can really begin to add up.
Honestly though, I think the main issue here is that having your cursor at the start of the line shouldn't automatically toggle the "find in selection" option, especially not if that line is completely empty, because technically there is no explicit selection being made.. at the very least this behavior should be optional and not default.
With all of that said, this definitely seems related to #12820 in that it's "unexpected" behavior for most people, and so I'm going to mention @isidorn in hopes that he might agree. 😄

This was fixed for 1.7 in #12109 :)


cupyx/scipy.signal: port *ord filter design functions from scipy.signal

cross-ref gh-7403
Port order selection functions for several types of filters

[x] ellipord
[x] cheb1ord
[x] cheb2ord
[x] buttord
.
[x] band_stop_obj
[x] optimize.fminbound replacement : a private cupyx.scipy.signal._optimize module
[x] iirdesign

This PR is on top of gh-7537

/test mini

Rebased on main, now that gh-7537 is in.

I'll kick the CI after #7653 is merged.

/test full

/test full

/test full

/test full

CI failures are not related.

Thanks, @ev-br!


After I launch my vscode, once I open the color picker it won't let me open it again even if I click on it.

Does this issue occur when all extensions are disabled?: Yes

VS Code Version: 1.94.2
OS Version: Windows 10

Steps to Reproduce:

Launch VSCode
Open color picker by clicking color box
close color picker and try to open again

It allows me to open color picker once after the launch, but its no longer able to open after using it for once. There's a color box, but color picker won't open. No matter how many times I click on it. This bug has been there for months and its really reducing my productivity.
screen recording

only on click (for once after launch)

Hi thanks for filing this issue. It should be fixed with https://github.com/microsoft/vscode/pull/232586


Added site name after logo .

before

after

please assign issue no #131 to me. i will fix it
please merge this pull request.


Add linkcheck to CI

This PR:

adds a linkcheck to CI

adds linkcheck.yml as a separate action workflow file so that our entire CI won't show as failing if just linkcheck is having problems and potential linkcheck problems won't necessarily block PRs.
runs on main at 00:30 UTC, on PRs, and on workflow call
reuses the environment generated by nightly checks (hence running at 00:30 UTC)

and addresses some stuff that made it fail

adds :ref: roles to internal links in cards in applications/applications.rst and index.rst
alters references.bib to remove redundant urls and correct a typo in a doi
adds linkcheck_anchors = False to conf.py to allow linking to specific line numbers on github (invalid anchors will still go to the intended page, just not the intended location)
adds linkcheck_ignore = [r'https://doi.org/10.1080/104732299303296'] to conf.py. I tried to do some stuff with the user agent, but ultimately, this page is really interested in keeping track of the number of people who access it and I don't want to mess with their stats.

Addresses GA-1499

Task linked: GA-1499 Add link checker to geocat-applications