summaryrefslogtreecommitdiff
path: root/java/src
diff options
context:
space:
mode:
Diffstat (limited to 'java/src')
-rwxr-xr-xjava/src/IceGridGUI/Application/Root.java4
-rwxr-xr-xjava/src/IceGridGUI/LiveDeployment/Node.java60
-rwxr-xr-xjava/src/IceGridGUI/LiveDeployment/Server.java9
-rwxr-xr-xjava/src/IceGridGUI/Utils.java31
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
//