summaryrefslogtreecommitdiffstats
path: root/server/lib/external-backends
diff options
context:
space:
mode:
authorJannik Schönartz2018-12-11 13:59:50 +0100
committerJannik Schönartz2018-12-11 13:59:50 +0100
commitcee759da4149a1681a89e10cc849a0cadff3bf2d (patch)
treec964e9a5f9eaac708604851816dded24475e6910 /server/lib/external-backends
parent[groups,clients,configurator] api rework to the new format (diff)
downloadbas-cee759da4149a1681a89e10cc849a0cadff3bf2d.tar.gz
bas-cee759da4149a1681a89e10cc849a0cadff3bf2d.tar.xz
bas-cee759da4149a1681a89e10cc849a0cadff3bf2d.zip
[registration/idoit] TPM upload functionality + improve hw specs
Improved IdoIT hw specs capture. Including multiple ram slots. Set purpose of the automatic registration to Pool PC. Added upload files to idoit for uploading the tpm and ssl key.
Diffstat (limited to 'server/lib/external-backends')
-rw-r--r--server/lib/external-backends/backendhelper.js13
-rw-r--r--server/lib/external-backends/backends/idoit-backend.js133
-rw-r--r--server/lib/external-backends/index.js4
3 files changed, 91 insertions, 59 deletions
diff --git a/server/lib/external-backends/backendhelper.js b/server/lib/external-backends/backendhelper.js
index 801fea4..dc4324c 100644
--- a/server/lib/external-backends/backendhelper.js
+++ b/server/lib/external-backends/backendhelper.js
@@ -82,5 +82,18 @@ module.exports = {
if (objectsToDelete.length > 0) instance.deleteObjects(backend.credentials, objectsToDelete)
})
})
+ },
+
+ uploadFiles: async function (clientId, files) {
+ var backends = await db.backend.findAll({ include: ['mappedClients'] })
+ for (var b in backends) {
+ var backend = backends[b]
+ const ba = new ExternalBackends()
+ const instance = ba.getInstance(backend.type)
+
+ var exid = backend.mappedClients.find(y => y.id === parseInt(clientId))
+ if (exid) exid = exid.backend_x_client.externalId
+ instance.uploadFiles(backend.credentials, exid, files)
+ }
}
}
diff --git a/server/lib/external-backends/backends/idoit-backend.js b/server/lib/external-backends/backends/idoit-backend.js
index d3ce7e6..57a5929 100644
--- a/server/lib/external-backends/backends/idoit-backend.js
+++ b/server/lib/external-backends/backends/idoit-backend.js
@@ -328,7 +328,6 @@ class IdoitBackend extends ExternalBackends {
}
}
var bodies = []
-
var clientid
if (!client.id) {
// Create the object in idoIT.
@@ -338,6 +337,13 @@ class IdoitBackend extends ExternalBackends {
'apikey': c.apikey,
'language': 'en'
}
+ // 1 = Production
+ // 2 = Test
+ // 3 = Quality Assurance
+ // 5 = PVS
+ // 7 = Pool PC
+ // 8 = Mitarbeiter Arbeitsplatz
+ if (client.purpose === 'Pool PC') params.purpose = 7
var requestCreate = await this.axiosRequest(c.url, 'cmdb.object.create', params, config.headers)
@@ -346,7 +352,7 @@ class IdoitBackend extends ExternalBackends {
clientid = client.id
// Update the client title
- bodies.push({
+ var bodyGeneral = {
'version': '2.0',
'method': 'cmdb.object.update',
'params': {
@@ -356,7 +362,10 @@ class IdoitBackend extends ExternalBackends {
'language': 'en'
},
'id': 'update_title'
- })
+ }
+ if (client.purpose === 'Pool PC') bodyGeneral.params.purpose = 7
+
+ bodies.push(bodyGeneral)
}
if (client.uuid) {
@@ -462,7 +471,7 @@ class IdoitBackend extends ExternalBackends {
* id: <CLIENT_ID>, title: <CLIENT_TITLE>, parentId: <PARENT_ID>,
* system: { model: <SYSTEM_MODEL>, manufacturer: <SYSTEM_MANUFACTURER>, serialnumber: <SYSTEM_SERIALNUMBER> },
* cpu: { model: <CPU_MODEL>, manufacturer: <CPU_MANUFACTURER>, type: <CPU_TYPE>, frequency: <CPU_FREQUENCY>, cores: <CPU_CORES> },
- * ram: [{ model: <RAM_MODEL>, manufacturer: <RAM_MANUFACTURER>, type: <RAM_TYPE>, capacity: <RAM_CAPACITY>, unit: <RAM_UNIT> }, ...],
+ * ram: [{ title: <RAM_TITLE>, manufacturer: <RAM_MANUFACTURER>, type: <RAM_TYPE>, capacity: <RAM_CAPACITY>, unit: <RAM_UNIT> }, ...],
* storage: {}
* }
*/
@@ -578,12 +587,16 @@ class IdoitBackend extends ExternalBackends {
'id': 'update_cpu'
})
}
-
+ console.log(client.ram)
if (client.ram) {
var counter = 1
- var mem
- for (mem in client.ram) {
+ for (var memory in client.ram) {
+ var mem = client.ram[memory]
var id = 'create_memory_' + counter
+ if (mem.unit === 'MB') mem.capacity = mem.capacity / 1024
+
+ // 2 = MB
+ // 3 = GB
// Update the object.
bodies.push({
'version': '2.0',
@@ -592,11 +605,11 @@ class IdoitBackend extends ExternalBackends {
'objID': clientid,
'category': 'C__CATG__MEMORY',
'data': {
- 'title': mem.model,
+ 'title': mem.title,
'manufacturer': mem.manufacturer,
'type': mem.type,
'capacity': mem.capacity,
- 'unit': mem.unit
+ 'unit': 3
},
'apikey': c.apikey,
'language': 'en'
@@ -620,7 +633,7 @@ class IdoitBackend extends ExternalBackends {
return result
}
- async uploadTpm (credentials, clientid, clientuuid, tpm) {
+ async uploadFiles (credentials, externalId, files) {
var c = this.mapCredentials(credentials)
var login = await this.getSession(c)
var sid = login.data.result['session-id']
@@ -632,60 +645,66 @@ class IdoitBackend extends ExternalBackends {
'Content-Type': 'application/json'
}
}
+ var result = []
+ for (var key in files) {
+ var body = {
+ 'version': '2.0',
+ 'method': 'cmdb.object.create',
+ 'params': {
+ 'type': 'C__OBJTYPE__FILE',
+ 'title': key,
+ 'apikey': c.apikey,
+ 'language': 'en'
+ },
+ 'id': key
+ }
+ var fileObject = await axios.post(c.url, body, config)
+ result.push(fileObject)
- // Create file object in idoit.
- var body = {
- 'version': '2.0',
- 'method': 'cmdb.object.create',
- 'params': {
- 'type': 'C__OBJTYPE__FILE',
- 'title': 'Just a test',
- 'apikey': c.apikey,
- 'language': 'en'
- },
- 'id': 2
- }
- var fileobject = await axios.post(c.url, body, config)
- console.log(fileobject.data.result.id)
+ var buffer = new Buffer.from(files[key].data)
+ var filename = files[key].name
- // Upload file to fileobject.
- body = {
- 'version': '2.0',
- 'method': 'cmdb.category.create',
- 'params': {
- 'objID': fileobject.data.result.id,
- 'data': {
- 'file_content': 'dGVzdAo=',
- 'file_physical': 'test.txt',
- 'file_title': 'Just a test',
- 'version_description': 'Just a test'
+ // Upload file to fileobject.
+ body = {
+ 'version': '2.0',
+ 'method': 'cmdb.category.create',
+ 'params': {
+ 'objID': fileObject.data.result.id,
+ 'data': {
+ 'file_content': buffer.toString('base64'),
+ 'file_physical': filename,
+ 'file_title': filename,
+ 'version_description': key
+ },
+ 'category': 'C__CMDB__SUBCAT__FILE_VERSIONS',
+ 'apikey': c.apikey,
+ 'language': 'en'
},
- 'category': 'C__CMDB__SUBCAT__FILE_VERSIONS',
- 'apikey': c.apikey,
- 'language': 'en'
- },
- 'id': 3
- }
- var fileupload = await axios.post(c.url, body, config)
+ 'id': key
+ }
+ var fileupload = await axios.post(c.url, body, config)
+ result.push(fileupload)
- // Combine fileobject with object.
- body = {
- 'version': '2.0',
- 'method': 'cmdb.category.create',
- 'params': {
- 'objID': clientid,
- 'data': {
- 'file': fileobject.data.result.id
+ // Combine fileObject with object.
+ body = {
+ 'version': '2.0',
+ 'method': 'cmdb.category.create',
+ 'params': {
+ 'objID': externalId,
+ 'data': {
+ 'file': fileObject.data.result.id
+ },
+ 'category': 'C__CATG__FILE',
+ 'apikey': c.apikey,
+ 'language': 'en'
},
- 'category': 'C__CATG__FILE',
- 'apikey': c.apikey,
- 'language': 'en'
- },
- 'id': 4
+ 'id': 4
+ }
+ var concat = await axios.post(c.url, body, config)
+ result.push(concat)
}
- var concat = await axios.post(c.url, body, config)
- return { create: fileobject.data.result, upload: fileupload.data.result, concat: concat.data.result }
+ return { result: result }
}
// ############################################################################
diff --git a/server/lib/external-backends/index.js b/server/lib/external-backends/index.js
index 1adb100..c782807 100644
--- a/server/lib/external-backends/index.js
+++ b/server/lib/external-backends/index.js
@@ -154,8 +154,8 @@ class ExternalBackends {
return { success: false, status: 'NOT_IMPLEMENTED_EXCEPTION', error: 'The provided backend does not have an updateClient method' }
}
- async uploadTpm (credentials, clientid, clientuuid, tpm) {
- return { success: false, status: 'NOT_IMPLEMENTED_EXCEPTION', error: 'The provided backend does not have an uploadTpm method' }
+ async uploadFiles (credentials, externalId, files) {
+ return { success: false, status: 'NOT_IMPLEMENTED_EXCEPTION', error: 'The provided backend does not have an uploadFiles method' }
}
}