updated clangd-ubuntu-clang

* renamed worker
* fixed packages
* configured LLVM toolchain
diff --git a/buildbot/google/docker/buildbot-ubuntu-clang/Dockerfile b/buildbot/google/docker/buildbot-clangd-ubuntu-clang/Dockerfile
similarity index 88%
rename from buildbot/google/docker/buildbot-ubuntu-clang/Dockerfile
rename to buildbot/google/docker/buildbot-clangd-ubuntu-clang/Dockerfile
index e49fe2e..4b2155c 100644
--- a/buildbot/google/docker/buildbot-ubuntu-clang/Dockerfile
+++ b/buildbot/google/docker/buildbot-clangd-ubuntu-clang/Dockerfile
@@ -22,8 +22,9 @@
     ccache \
     # install python for buildbot and LIT
     python3 python3-pip python3-psutil \
-    # clangd requires libgrpc and protobuf for remote index
-    libgrpc++-dev protobuf-compiler-grpc ; \
+    # clangd requires libgrpc and protobuf for remote index, see
+    # https://github.com/llvm/llvm-project/tree/master/clang-tools-extra/clangd/index/remote#system-installed-libraries
+    libgrpc++-dev libprotobuf-dev protobuf-compiler protobuf-compiler-grpc ; \
     # clean apt cache to reduce image size
     apt-get clean
 
@@ -71,7 +72,7 @@
 RUN chmod a+rx /home/buildbot/run.sh
 
 USER buildbot
-ENV WORKER_NAME="ubuntu-clang"
+ENV WORKER_NAME="clangd-ubuntu-clang"
 
 # Allow the server port of this agent to be configurable during deployment.
 # This way we can connect the same image to production and integration. 
@@ -80,5 +81,10 @@
 #   9994 - integration
 ENV BUILDBOT_PORT="9994"
 
+#configure LLVM tools
+ENV CC=clang
+ENV CXX=clang++
+ENV LD=LLD
+
 # run startup script
 CMD /home/buildbot/run.sh
diff --git a/buildbot/google/docker/buildbot-ubuntu-clang/VERSION b/buildbot/google/docker/buildbot-clangd-ubuntu-clang/VERSION
similarity index 100%
rename from buildbot/google/docker/buildbot-ubuntu-clang/VERSION
rename to buildbot/google/docker/buildbot-clangd-ubuntu-clang/VERSION
diff --git a/buildbot/google/docker/buildbot-ubuntu-clang/run.sh b/buildbot/google/docker/buildbot-clangd-ubuntu-clang/run.sh
similarity index 100%
rename from buildbot/google/docker/buildbot-ubuntu-clang/run.sh
rename to buildbot/google/docker/buildbot-clangd-ubuntu-clang/run.sh
diff --git a/buildbot/google/terraform/main.tf b/buildbot/google/terraform/main.tf
index 2dcfbb0..7a668a1 100644
--- a/buildbot/google/terraform/main.tf
+++ b/buildbot/google/terraform/main.tf
@@ -272,3 +272,134 @@
     }
   }
 }
+
+
+resource "google_container_node_pool" "nvidia_16core_pool_nodes" {
+  name       = "nvidia-16core-pool"
+  # specify a zone here (e.g. "-a") to avoid a redundant deployment
+  location   = var.gcp_config.zone_a
+  cluster    = google_container_cluster.primary.name
+  
+  # use autoscaling to only create a machine when there is a deployment
+  autoscaling {
+    min_node_count = 0
+    max_node_count = 2
+  }
+  
+  node_config {
+    # use preemptible, as this saves costs
+    preemptible  = true
+    machine_type = "n1-highcpu-16"
+    disk_size_gb = 100
+    disk_type = "pd-ssd"
+
+    # set the premissions required for the deployment later
+    oauth_scopes = [
+      "https://www.googleapis.com/auth/logging.write",
+      "https://www.googleapis.com/auth/monitoring",
+      "https://www.googleapis.com/auth/devstorage.read_only",
+    ]
+
+    # add a label to all machines of this type, so we can select them 
+    # during deployment
+    labels = {
+      pool = "linux-generic-pool"
+    }
+  }
+}
+
+
+resource "kubernetes_deployment" "ubuntu_clang" {
+  metadata {
+    name = "ubuntu-clang"
+    labels = {
+      app = "ubuntu-clang"
+    }
+  }
+
+  spec {
+    # create one instance of this container
+    replicas = 1
+
+    selector {
+      match_labels = {
+        app = "ubuntu-clang"
+      }
+    }
+    strategy{
+      rolling_update{
+        # do not deploy more replicas, as the buildbot server 
+        # can't handle multiple workers with the same credentials
+        max_surge = 0
+        # Allow to have 0 replicas during updates. 
+        max_unavailable = 1
+        }
+      type = "RollingUpdate"
+    }
+    template {
+      metadata {
+        labels = {
+          app = "ubuntu-clang"
+        }
+      }
+
+      spec {
+        container {
+          image = "${var.gcp_config.gcr_prefix}/buildbot-ubuntu-clang:1"
+          name  = "buildbot-ubuntu-clang"
+
+          # reserve "<number of cores>-1" for this image, kubernetes also
+          # needs <1 core for management tools
+          resources {
+            limits {
+              cpu    = "15"
+              memory = "10Gi"
+            }
+            requests {
+              cpu    = "15"
+              memory = "10Gi"
+            }
+          }
+
+          # mount the secrets into a folder  
+          volume_mount {
+            mount_path = "/vol/secrets"
+            name = "buildbot-token"
+          }
+          volume_mount {
+            mount_path = "/vol/cccache"
+            name = "ccache-vol"
+          }
+          volume_mount {
+            mount_path = "/vol/buildbot"
+            name = "buildbot-vol"
+          }
+        }
+        # select which node pool to deploy to
+        node_selector = {
+          pool = "linux-generic-pool"
+        }
+        # restart in case of any crashes
+        restart_policy = "Always"
+        
+        # select the secret to be mounted
+        volume {
+          name = "buildbot-token"
+            secret {
+              optional = false
+              secret_name = "password-windows10-vs2019"
+            }
+        }
+        volume {
+          name = "sccache-vol"
+          empty_dir {}
+        }
+        volume {
+          name = "buildbot-vol"
+          empty_dir {}
+        }
+
+      }
+    }
+  }
+}