diff options
Diffstat (limited to 'java/src')
-rwxr-xr-x | java/src/IceGridGUI/Application/Root.java | 4 | ||||
-rwxr-xr-x | java/src/IceGridGUI/LiveDeployment/Node.java | 60 | ||||
-rwxr-xr-x | java/src/IceGridGUI/LiveDeployment/Server.java | 9 | ||||
-rwxr-xr-x | java/src/IceGridGUI/Utils.java | 31 |
4 files changed, 90 insertions, 14 deletions
diff --git a/java/src/IceGridGUI/Application/Root.java b/java/src/IceGridGUI/Application/Root.java index ef8854dc815..db14f4da7df 100755 --- a/java/src/IceGridGUI/Application/Root.java +++ b/java/src/IceGridGUI/Application/Root.java @@ -693,6 +693,7 @@ public class Root extends ListTreeNode commit(); _coordinator.getSaveAction().setEnabled(false); _coordinator.getDiscardUpdatesAction().setEnabled(false); + _coordinator.getSaveToRegistryAction().setEnabled(_coordinator.connectedToMaster()); } } @@ -1104,7 +1105,8 @@ public class Root extends ListTreeNode _coordinator.getSaveAction().setEnabled(false); _coordinator.getDiscardUpdatesAction().setEnabled(false); - _coordinator.getSaveToRegistryAction().setEnabled(hasFile()); + _coordinator.getSaveToRegistryAction().setEnabled(hasFile() + && _coordinator.connectedToMaster()); } } diff --git a/java/src/IceGridGUI/LiveDeployment/Node.java b/java/src/IceGridGUI/LiveDeployment/Node.java index 986fd65223e..2ede821935c 100755 --- a/java/src/IceGridGUI/LiveDeployment/Node.java +++ b/java/src/IceGridGUI/LiveDeployment/Node.java @@ -264,6 +264,7 @@ class Node extends ListTreeNode data.resolver = new Utils.Resolver(new java.util.Map[]{appDesc.variables, nodeDesc.variables}); data.resolver.put("application", appDesc.name); data.resolver.put("node", _id); + putInfoVariables(data.resolver); _map.put(appDesc.name, data); @@ -282,8 +283,6 @@ class Node extends ListTreeNode } } - - boolean remove(String appName) { _map.remove(appName); @@ -434,17 +433,20 @@ class Node extends ListTreeNode if(variablesChanged || !serviceTemplates.isEmpty() || !serverTemplates.isEmpty()) { // - // Rebuild every other server + // Rebuild every other server in this application // java.util.Iterator p = _children.iterator(); while(p.hasNext()) { Server server = (Server)p.next(); - if(!freshServers.contains(server)) + if(server.getApplication() == appDesc) { - server.rebuild(data.resolver, - variablesChanged, - serviceTemplates, serverTemplates); + if(!freshServers.contains(server)) + { + server.rebuild(data.resolver, + variablesChanged, + serviceTemplates, serverTemplates); + } } } } @@ -467,6 +469,24 @@ class Node extends ListTreeNode return _windows; } + private boolean putInfoVariables(Utils.Resolver resolver) + { + if(_info == null) + { + return false; + } + else + { + boolean updated = resolver.put("node.os", _info.info.os); + updated = resolver.put("node.hostname", _info.info.hostname) || updated; + updated = resolver.put("node.release", _info.info.release) || updated; + updated = resolver.put("node.version", _info.info.version) || updated; + updated = resolver.put("node.machine", _info.info.machine) || updated; + updated = resolver.put("node.datadir", _info.info.dataDir) || updated; + return updated; + } + } + void up(NodeDynamicInfo info, boolean fireEvent) { _up = true; @@ -474,10 +494,34 @@ class Node extends ListTreeNode _windows = info.info.os.toLowerCase().startsWith("windows"); // + // Update variables and rebuild all affected servers + // + java.util.Iterator p = _map.values().iterator(); + while(p.hasNext()) + { + ApplicationData data = (ApplicationData)p.next(); + + if(putInfoVariables(data.resolver)) + { + String appName = data.resolver.find("application"); + + java.util.Iterator q = _children.iterator(); + while(q.hasNext()) + { + Server server = (Server)q.next(); + if(server.getApplication().name.equals(appName)) + { + server.rebuild(data.resolver, true, null, null); + } + } + } + } + + // // Tell every server on this node // java.util.Set updatedServers = new java.util.HashSet(); - java.util.Iterator p = _info.servers.iterator(); + p = _info.servers.iterator(); while(p.hasNext()) { ServerDynamicInfo sinfo = (ServerDynamicInfo)p.next(); diff --git a/java/src/IceGridGUI/LiveDeployment/Server.java b/java/src/IceGridGUI/LiveDeployment/Server.java index 5fe1dc56701..8a5ad3cc9c2 100755 --- a/java/src/IceGridGUI/LiveDeployment/Server.java +++ b/java/src/IceGridGUI/LiveDeployment/Server.java @@ -650,7 +650,7 @@ class Server extends ListArrayTreeNode java.util.Set serverTemplates) { if(variablesChanged || - (_instanceDescriptor != null && serverTemplates.contains(_instanceDescriptor.template))) + (_instanceDescriptor != null && serverTemplates != null && serverTemplates.contains(_instanceDescriptor.template))) { if(_instanceDescriptor != null) { @@ -663,6 +663,11 @@ class Server extends ListArrayTreeNode _resolver.put("server", _id); _serverDescriptor = (ServerDescriptor)templateDescriptor.descriptor; } + else + { + _resolver.reset(resolver); + _resolver.put("server", _id); + } _adapters.clear(); createAdapters(); @@ -674,7 +679,7 @@ class Server extends ListArrayTreeNode getRoot().getTreeModel().nodeStructureChanged(this); } - else if(serviceTemplates.size() > 0 && _serverDescriptor instanceof IceBoxDescriptor) + else if(serviceTemplates != null && serviceTemplates.size() > 0 && _serverDescriptor instanceof IceBoxDescriptor) { _services.clear(); _servicePropertySets.clear(); diff --git a/java/src/IceGridGUI/Utils.java b/java/src/IceGridGUI/Utils.java index 2ea7cb76587..3f329e9652f 100755 --- a/java/src/IceGridGUI/Utils.java +++ b/java/src/IceGridGUI/Utils.java @@ -232,11 +232,20 @@ public class Utils } // - // Set a pre-defined variable + // Set a pre-defined variable; returns true if value was updated // - public void put(String name, String value) + public boolean put(String name, String value) { - _predefinedVariables.put(name, value); + String oldVal = (String)_predefinedVariables.get(name); + if(oldVal == null || !oldVal.equals(value)) + { + _predefinedVariables.put(name, value); + return true; + } + else + { + return false; + } } // @@ -252,6 +261,22 @@ public class Utils _subResolver = new Resolver(_variables, _predefinedVariables); } + public void reset(Resolver parent) + { + assert _variables == parent._variables; + _predefinedVariables = new java.util.HashMap(parent._predefinedVariables); + + assert _parameters == parent._parameters; + if(_parameters == null) + { + _subResolver = this; + } + else + { + _subResolver = new Resolver(_variables, _predefinedVariables); + } + } + // // The sorted substituted parameters // |