Github user revans2 commented on a diff in the pull request:

    https://github.com/apache/storm/pull/2747#discussion_r199566898
  
    --- Diff: 
storm-core/src/jvm/org/apache/storm/command/UploadCredentials.java ---
    @@ -52,7 +61,37 @@ public static void main(String[] args) throws Exception {
                     credentialsMap.put(rawCredentials.get(i), 
rawCredentials.get(i + 1));
                 }
             }
    -        StormSubmitter.pushCredentials(topologyName, new HashMap<>(), 
credentialsMap);
    +
    +        Map<String, Object> topologyConf = new HashMap<>();
    +        //Try to get the topology conf from nimbus, so we can reuse it.
    +        try (NimbusClient nc = NimbusClient.getConfiguredClient(new 
HashMap<>())) {
    +            Nimbus.Iface client = nc.getClient();
    +            ClusterSummary summary = client.getClusterInfo();
    +            for (TopologySummary topo : summary.get_topologies()) {
    +                if (topologyName.equals(topo.get_name())) {
    +                    //We found the topology, lets get the conf
    +                    String topologyId = topo.get_id();
    +                    topologyConf = (Map<String, Object>) 
JSONValue.parse(client.getTopologyConf(topologyId));
    +                    LOG.info("Using topology conf from {} as basis for 
getting new creds", topologyId);
    +
    +                    Map<String, Object> commandLine = 
Utils.readCommandLineOpts();
    +                    List<String> clCreds = 
(List<String>)commandLine.get(Config.TOPOLOGY_AUTO_CREDENTIALS);
    +                    List<String> topoCreds = 
(List<String>)topologyConf.get(Config.TOPOLOGY_AUTO_CREDENTIALS);
    +                    
    +                    if (clCreds != null) {
    +                        Set<String> extra = new HashSet<>(clCreds);
    +                        if (topoCreds != null) {
    +                            extra.removeAll(topoCreds);
    +                        }
    +                        if (!extra.isEmpty()) {
    --- End diff --
    
    In the case where we are missing credentials the old ones will be 
preserved, but I think you are right I'll add it in.


---

Reply via email to