Merge "Tidy up of out-of-use contexts"
diff --git a/de/heat-templates/top.yaml b/de/heat-templates/top.yaml
index 7849851..9127301 100644
--- a/de/heat-templates/top.yaml
+++ b/de/heat-templates/top.yaml
@@ -259,13 +259,18 @@
     type: string
 
 resources:
+  keypair_name:
+    type: OS::Heat::RandomString
+    properties:
+      character_classes: [{"class": "hexdigits", "min": 1}]
+      length: 128
+      salt: constant
   key_pair:
     type: OS::Nova::KeyPair
     properties:
-      name: { get_param: "OS::stack_name" }
-      public_key: { get_param: cluster_public_key}
+      name: { get_attr: [keypair_name, value] }
+      public_key: { get_param: cluster_public_key }
       save_private_key: false
-
   accessible_network:
     type: MCP2::NetworkAcc
     properties:
@@ -316,7 +321,7 @@
       docker_ee_release: { get_param: docker_ee_release }
       docker_ucp_image: { get_param: docker_ucp_image}
       node_type: "ucp"
-      key_name: { get_param: "OS::stack_name" }
+      key_name: { get_attr: [keypair_name, value] }
       image: { get_param: image }
       flavor: { get_param: ucp_flavor }
       accessible_network: { get_attr: [accessible_network, public_network] }
@@ -341,7 +346,7 @@
         properties:
           metadata: { get_param: master_metadata}
           node_type: "master"
-          key_name: { get_param: "OS::stack_name" }
+          key_name: { get_attr: [keypair_name, value] }
           image: { get_param: image }
           flavor: { get_param: masters_flavor }
           docker_ee_url: { get_param: docker_ee_url }
@@ -370,10 +375,9 @@
         properties:
           metadata: { get_param: worker_metadata}
           node_type: "worker"
-          key_name: { get_param: "OS::stack_name" }
+          key_name: { get_attr: [keypair_name, value] }
           image: { get_param: image }
           flavor: { get_param: workers_flavor }
-          key_name: { get_param: "OS::stack_name" }
           docker_ee_url: { get_param: docker_ee_url }
           docker_ee_release: { get_param: docker_ee_release }
           docker_ucp_image: { get_param: docker_ucp_image}
@@ -416,7 +420,7 @@
         properties:
           metadata: { get_param: cmp_metadata }
           node_type: "worker"
-          key_name: { get_param: "OS::stack_name" }
+          key_name: { get_attr: [keypair_name, value] }
           image: { get_param: image }
           flavor: { get_param: cmps_flavor }
           docker_ee_url: { get_param: docker_ee_url }
@@ -461,7 +465,7 @@
         properties:
           metadata: { get_param: acmp_metadata }
           node_type: "worker"
-          key_name: { get_param: "OS::stack_name" }
+          key_name: { get_attr: [keypair_name, value] }
           image: { get_param: image }
           flavor: { get_param: acmps_flavor }
           docker_ee_url: { get_param: docker_ee_url }
@@ -507,7 +511,7 @@
         properties:
           metadata: { get_param: gtw_metadata }
           node_type: "worker"
-          key_name: { get_param: "OS::stack_name" }
+          key_name: { get_attr: [keypair_name, value] }
           image: { get_param: image }
           flavor: { get_param: gtws_flavor }
           docker_ee_url: { get_param: docker_ee_url }
@@ -545,7 +549,7 @@
         properties:
           metadata: { get_param: lma_metadata }
           node_type: "worker"
-          key_name: { get_param: "OS::stack_name" }
+          key_name: { get_attr: [keypair_name, value] }
           image: { get_param: image }
           flavor: { get_param: lmas_flavor }
           docker_ee_url: { get_param: docker_ee_url }
@@ -583,7 +587,7 @@
         properties:
           metadata: { get_param: osd_metadata }
           node_type: "worker"
-          key_name: { get_param: "OS::stack_name" }
+          key_name: { get_attr: [keypair_name, value] }
           image: { get_param: image }
           flavor: { get_param: osds_flavor }
           docker_ee_url: { get_param: docker_ee_url }
@@ -628,7 +632,7 @@
         properties:
           metadata: { get_param: spare_metadata }
           node_type: "spare"
-          key_name: { get_param: "OS::stack_name" }
+          key_name: { get_attr: [keypair_name, value] }
           image: { get_param: image }
           flavor: { get_param: spares_flavor }
           docker_ee_url: { get_param: docker_ee_url }
@@ -673,7 +677,7 @@
         properties:
           metadata: { get_param: ntw_metadata }
           node_type: "worker"
-          key_name: { get_param: "OS::stack_name" }
+          key_name: { get_attr: [keypair_name, value] }
           image: { get_param: image }
           flavor: { get_param: ntws_flavor }
           docker_ee_url: { get_param: docker_ee_url }
@@ -711,7 +715,7 @@
         properties:
           metadata: { get_param: vbmc_metadata}
           node_type: "worker"
-          key_name: { get_param: "OS::stack_name" }
+          key_name: { get_attr: [keypair_name, value] }
           image: { get_param: image }
           flavor: { get_param: vbmcs_flavor }
           docker_ee_url: { get_param: docker_ee_url }