summaryrefslogtreecommitdiff
path: root/cpp/src/IceGrid/AdminI.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'cpp/src/IceGrid/AdminI.cpp')
-rw-r--r--cpp/src/IceGrid/AdminI.cpp68
1 files changed, 5 insertions, 63 deletions
diff --git a/cpp/src/IceGrid/AdminI.cpp b/cpp/src/IceGrid/AdminI.cpp
index 0bbe9b17982..a50db10a188 100644
--- a/cpp/src/IceGrid/AdminI.cpp
+++ b/cpp/src/IceGrid/AdminI.cpp
@@ -43,70 +43,13 @@ AdminI::addApplication(const ApplicationDescriptorPtr& descriptor, const Current
void
AdminI::syncApplication(const ApplicationDescriptorPtr& descriptor, const Current&)
{
- _database->updateApplicationDescriptor(descriptor);
+ _database->syncApplicationDescriptor(descriptor);
}
void
AdminI::updateApplication(const ApplicationUpdateDescriptor& descriptor, const Current&)
{
- ApplicationDescriptorPtr oldApp = _database->getApplicationDescriptor(descriptor.name);
-
- ApplicationDescriptorPtr newApp = new ApplicationDescriptor();
- newApp->name = oldApp->name;
- newApp->comment = oldApp->comment;
- newApp->targets = oldApp->targets;
- newApp->variables = descriptor.variables;
- newApp->variables.insert(oldApp->variables.begin(), oldApp->variables.end());
- StringSeq::const_iterator p;
- for(p = descriptor.removeVariables.begin(); p != descriptor.removeVariables.end(); ++p)
- {
- newApp->variables.erase(*p);
- }
-
- newApp->serverTemplates = descriptor.serverTemplates;
- newApp->serverTemplates.insert(oldApp->serverTemplates.begin(), oldApp->serverTemplates.end());
- for(p = descriptor.removeServerTemplates.begin(); p != descriptor.removeServerTemplates.end(); ++p)
- {
- newApp->serverTemplates.erase(*p);
- }
-
- newApp->serviceTemplates = descriptor.serviceTemplates;
- newApp->serviceTemplates.insert(oldApp->serviceTemplates.begin(), oldApp->serviceTemplates.end());
- for(p = descriptor.removeServiceTemplates.begin(); p != descriptor.removeServiceTemplates.end(); ++p)
- {
- newApp->serviceTemplates.erase(*p);
- }
-
- newApp->servers = descriptor.servers;
- set<string> remove(descriptor.removeServers.begin(), descriptor.removeServers.end());
- set<string> updated;
- for_each(newApp->servers.begin(), newApp->servers.end(), AddServerName(updated));
- for(InstanceDescriptorSeq::const_iterator q = oldApp->servers.begin(); q != oldApp->servers.end(); ++q)
- {
- if(updated.find(q->descriptor->name) == updated.end() && remove.find(q->descriptor->name) == remove.end())
- {
- newApp->servers.push_back(*q);
- }
- }
-
- newApp->nodes = descriptor.nodes;
- for(NodeDescriptorSeq::const_iterator q = oldApp->nodes.begin(); q != oldApp->nodes.end(); ++q)
- {
- NodeDescriptorSeq::const_iterator r;
- for(r = descriptor.nodes.begin(); r != descriptor.nodes.end(); ++r)
- {
- if(q->name == r->name)
- {
- break;
- }
- }
- if(r == descriptor.nodes.end())
- {
- newApp->nodes.push_back(*q);
- }
- }
-
- _database->updateApplicationDescriptor(newApp);
+ _database->updateApplicationDescriptor(descriptor);
}
void
@@ -122,15 +65,14 @@ AdminI::getApplicationDescriptor(const string& name, const Current&) const
}
void
-AdminI::instantiateServer(const string& name, const string& tmpl, const string& node,
- const StringStringDict& parameters, const Current&)
+AdminI::instantiateServer(const string& name, const string& tmpl, const StringStringDict& parameters, const Current&)
{
try
{
ApplicationDescriptorHelper helper(_communicator, _database->getApplicationDescriptor(name));
- helper.getVariables()->addVariable("node", node);
helper.addServer(tmpl, parameters);
- _database->updateApplicationDescriptor(helper.getDescriptor());
+ _database->syncApplicationDescriptor(helper.getDescriptor());
+ ApplicationUpdateDescriptor update;
}
catch(const std::string& msg)
{