summaryrefslogtreecommitdiffstats
path: root/server/lib/external-backends/backendhelper.js
diff options
context:
space:
mode:
authorJannik Schönartz2019-04-16 13:01:43 +0200
committerJannik Schönartz2019-04-16 13:01:43 +0200
commit67887b78305d91d67bf1a174b9ddae6e9a262df6 (patch)
treec28a3d488f0e35ff8592efa9354b87244ba48863 /server/lib/external-backends/backendhelper.js
parent[server/registration] Add ipxe overview menu (diff)
downloadbas-67887b78305d91d67bf1a174b9ddae6e9a262df6.tar.gz
bas-67887b78305d91d67bf1a174b9ddae6e9a262df6.tar.xz
bas-67887b78305d91d67bf1a174b9ddae6e9a262df6.zip
[server/external-backends] Add dhcp update method & object mapping from existing entries
Diffstat (limited to 'server/lib/external-backends/backendhelper.js')
-rw-r--r--server/lib/external-backends/backendhelper.js28
1 files changed, 25 insertions, 3 deletions
diff --git a/server/lib/external-backends/backendhelper.js b/server/lib/external-backends/backendhelper.js
index b7a8a9b..5bbde55 100644
--- a/server/lib/external-backends/backendhelper.js
+++ b/server/lib/external-backends/backendhelper.js
@@ -67,7 +67,9 @@ async function updateClient (client) {
// Get the external clientid.
const exid = backend.mappedClients[0]
+ // If there is no external id, there is no client in the backend to update.
if (exid) tmpClient.id = exid.backend_x_client.externalId
+ else continue
// Convert the parent group ids to the external backend parentIds. If multiple -> conflict
if (client.parents) {
@@ -85,10 +87,30 @@ async function updateClient (client) {
}
} else if (elements.length === 1) tmpClient['parentId'] = elements[0].backend_x_group.externalId
}
+ try {
+ let updateClient = await instance.updateClient(backend.credentials, tmpClient)
+ updateClient.backendId = backend.id
+
+ // If mappings is set the backend id to external id has to be updated. Mappings is a list of oldId, newId object pairs.
+ if (updateClient.mappings) {
+ for (let index in updateClient.mappings) {
+ const mapping = updateClient.mappings[index]
+ if (mapping.newId.Error) console.log(mapping.newId)
+ else {
+ const clientDb = await db.client.findOne({ where: { id: client.id } })
+ // Update the mapping.
+ await backend.removeMappedClients(clientDb)
+ let data = { externalId: mapping.newId }
+ if (mapping.newType) data.externalType = mapping.newType
+ await backend.addMappedClients(clientDb, { through: data })
+ }
+ }
+ }
- let updateClient = await instance.updateClient(backend.credentials, tmpClient)
- updateClient.backendId = backend.id
- result.push(updateClient)
+ result.push(updateClient)
+ } catch (error) {
+ console.log(error)
+ }
}
return result
}