diff options
Diffstat (limited to 'cpp/src/IceGrid/AdminI.cpp')
-rw-r--r-- | cpp/src/IceGrid/AdminI.cpp | 68 |
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) { |