From 216cc45dc499b1a0815f606988269452079b7a0e Mon Sep 17 00:00:00 2001
From: Javier Viola <pepoviola@gmail.com>
Date: Wed, 8 Nov 2023 06:48:23 -0300
Subject: [PATCH] fix(orchestrator): customize invulnerables (#131)

Call `add_collator_selection` to customize `invulnerables` for both
session and aura keys.
cc @pgherveou
---
 .../orchestrator/src/generators/chain_spec.rs | 19 ++++++++++++-------
 1 file changed, 12 insertions(+), 7 deletions(-)

diff --git a/crates/orchestrator/src/generators/chain_spec.rs b/crates/orchestrator/src/generators/chain_spec.rs
index fd81f4d..11a50c8 100644
--- a/crates/orchestrator/src/generators/chain_spec.rs
+++ b/crates/orchestrator/src/generators/chain_spec.rs
@@ -342,15 +342,18 @@ impl ChainSpec {
                 );
             } else {
                 add_aura_authorities(&pointer, &mut chain_spec_json, &validators, KeyType::Aura);
-                let invulnerables: Vec<&NodeSpec> = para
-                    .collators
-                    .iter()
-                    .filter(|node| node.is_invulnerable)
-                    .collect();
-                add_collator_selection(&pointer, &mut chain_spec_json, &invulnerables);
                 // await addParaCustom(chainSpecFullPathPlain, node);
             };
 
+            // Add nodes to collator
+            let invulnerables: Vec<&NodeSpec> = para
+                .collators
+                .iter()
+                .filter(|node| node.is_invulnerable)
+                .collect();
+
+            add_collator_selection(&pointer, &mut chain_spec_json, &invulnerables);
+
             // override `parachainInfo/parachainId`
             override_parachain_info(&pointer, &mut chain_spec_json, para.id);
 
@@ -821,11 +824,13 @@ fn add_collator_selection(
                     .clone()
             })
             .collect();
+
         // collatorSelection.invulnerables
-        if let Some(invulnerables) = val.pointer_mut("collatorSelection/invulnerables") {
+        if let Some(invulnerables) = val.pointer_mut("/collatorSelection/invulnerables") {
             *invulnerables = json!(keys);
         } else {
             // TODO: add a nice warning here.
+            println!("warn!! can't customize the invulnerables key");
         }
     } else {
         unreachable!("pointer to runtime config should be valid!")
-- 
GitLab