Liebe Alle,
leider finde ich im Netz und auch in der Doku nichts darüber, wie man eine Custom Category (also eine selbstdefinierte Category) mittels API anlegt.
Kann mir bitte jemand auf die Sprünge helfen. Lieber Gruß, hu
Liebe Alle,
leider finde ich im Netz und auch in der Doku nichts darüber, wie man eine Custom Category (also eine selbstdefinierte Category) mittels API anlegt.
Kann mir bitte jemand auf die Sprünge helfen. Lieber Gruß, hu
... ich beantworte es mir an dieser Stelle einfach mal selber, damit anderen evtl. geholfen sein möge:
Liebe Liste,
könnt Ihr mir einen Tipp geben, wie man eine implizite Beziehung in I-Doit löscht, ohne dass verwaiste Einträge in der CMDB zurückbleiben. D.h. konkret, wie man z.B. ein zuvor in ein Rack eingebautes Patchpanel wieder ausbaut.
Der Einbau von HUtest_PATCHPANEL_11 in das Rack HUtest_RACK_03 (Vorderseite, horizontal, HE 3) wurde von der API so quitiert:
{
"assign patchpanel to rack": {
"id": 1,
"jsonrpc": "2.0",
"result": {
"success": true,
"message": "Category entry successfully saved",
"entry": 5935
}
},
"set assembly, insertion and position in rack": {
"id": 1,
"jsonrpc": "2.0",
"result": {
"success": true,
"message": "Category entry successfully saved",
"entry": 5935
}
}
}
Ist es ausreichend die ID 5935 zu entfernen und mit welchem API-Request erhalte ich für ein eingebautes Patchpanel die entsprechende ID?
Lieber Gruß, hu
DICT_CATEGORYUPDATE = {
'method': 'cmdb.category.save',
'params': {
'object': 0,
'category': 'C__CATG__CONNECTOR',
'entry': 0,
'data': {},
'apikey': IDOIT_API_LOGIN.IDOIT_API_KEY,
'language': 'de'
},
'id': 1,
'version': '2.0'
}
if len(sorted_ports_1) == len(sorted_ports_2) == len(cables):
print('\ncreating ', len(cables), ' cable connections ...')
ARRAY_OF_DICT_CATEGORYUPDATE = [{}] * len(cables)
for index in range(len(cables)):
print('\nindex = ', index)
ARRAY_OF_DICT_CATEGORYUPDATE[index] = copy.deepcopy(DICT_CATEGORYUPDATE)
ARRAY_OF_DICT_CATEGORYUPDATE[index]['params']['object'] = OBJID_PATCHPANEL_01
ARRAY_OF_DICT_CATEGORYUPDATE[index]['params']['entry'] = sorted_ports_1[index]['id']
ARRAY_OF_DICT_CATEGORYUPDATE[index]['params']['data']['assigned_connector'] = sorted_ports_2[index]['id']
ARRAY_OF_DICT_CATEGORYUPDATE[index]['params']['data']['cable_connection'] = cables[index]['id']
ARRAY_OF_DICT_CATEGORYUPDATE[index]['id'] = index
Und ab damit:
API_RETURN = requests.post(IDOIT_API_LOGIN.IDOIT_API_URL, json=ARRAY_OF_DICT_CATEGORYUPDATE, headers=IDOIT_API_HEADER_AUTHENTICATED)
Hallo Community,
wenn ich umfangreiche Batcht-Requests an die I-Doit API sende, erhalte ich teilweise anscheinend Timeouts.
API_RETURN = requests.post(IDOIT_API_URL, json=ARRAY_OF_DICT_OBJECTDELETE, headers=IDOIT_API_HEADER_AUTHENTICATED, timeout=600)
print(API_RETURN)
# <Response [504]>
Error 504 zeigt üblicherweise einen Timeout an. Kann mir jemand beantworten, wie man den Timeout I-Doit-API-seitig hoch setzen kann, damit ich den Batch-Request nicht auf kleine Päckchen verteilen muss?
Lieber Gruß & danke für Eure Hilfe, hu
1.) Es sollen 2 Patchpanels mittels API erstellt werden, die jeweils der Einfachheit halber nur einen Ein- und Ausgang besitzen.
2.) Es soll ein Kabel erstellt werden.
3.) Die beiden Patchpanels sollen mittels des Kabels verbunden werden.
1a.) Erstellung des ersten Patchpanels
Schritt 1: Erstellung des Patchpanels HUtest_PATCHPANEL_01 und aller input-ports.
request:
data = {
"method": "cmdb.object.create",
"params": {
"type": "C__OBJTYPE__PATCH_PANEL",
"title": "HUtest_PATCHPANEL_01",
"description": "virtual Test-Panel",
"categories": {
"C__CATG__GLOBAL": [
{
"category": "TEST",
"purpose": "Test"
}
],
"C__CATG__CONNECTOR": [
{
"title": "P-1-1",
"type": 1,
"connection_type": 16,
"description": "P-1-1 Eingang"
}
]
},
"apikey": "0815",
"language": "de"
},
"id": 1,
"version": "2.0"
}
answer:
API_RETURN = {
"id": 1,
"jsonrpc": "2.0",
"result": {
"id": 50158,
"message": "Object was successfully created",
"categories": {
"C__CATG__GLOBAL": [
"50155"
],
"C__CATG__CONNECTOR": [
53756
]
},
"success": true
}
}
Schritt 2: Erstellung aller output-ports und sibbling zu den entsprechenden input ports.
request:
data = {
"method": "cmdb.category.save",
"params": {
"object": 50158,
"category": "C__CATG__CONNECTOR",
"data": {
"title": "P-1-1",
"type": 2,
"connection_type": 12,
"connector_sibling": 53756,
"description": "P-1-1 Ausgang"
},
"apikey": "0815",
"language": "de"
},
"id": 1,
"version": "2.0"
}
answer:
API_RETURN = {
"id": 1,
"jsonrpc": "2.0",
"result": {
"success": true,
"message": "Category entry successfully saved",
"entry": 53757
}
}
1b.) Erstellung des zweiten Patchpanels
Schritt 1: Erstellung des Patchpanels HUtest_PATCHPANEL_02 und aller input-ports.
request:
data = {
"method": "cmdb.object.create",
"params": {
"type": "C__OBJTYPE__PATCH_PANEL",
"title": "HUtest_PATCHPANEL_02",
"description": "virtual Test-Panel",
"categories": {
"C__CATG__GLOBAL": [
{
"category": "TEST",
"purpose": "Test"
}
],
"C__CATG__CONNECTOR": [
{
"title": "P-1-1",
"type": 1,
"connection_type": 16,
"description": "P-1-1 Eingang"
}
]
},
"apikey": "0815",
"language": "de"
},
"id": 1,
"version": "2.0"
}
answer:
API_RETURN = {
"id": 1,
"jsonrpc": "2.0",
"result": {
"id": 50159,
"message": "Object was successfully created",
"categories": {
"C__CATG__GLOBAL": [
"50156"
],
"C__CATG__CONNECTOR": [
53758
]
},
"success": true
}
}
Schritt 2: Erstellung aller output-ports und sibbling zu den entsprechenden input ports.
request:
"method": "cmdb.category.save",
"params": {
"object": 50159,
"category": "C__CATG__CONNECTOR",
"data": {
"title": "P-1-1",
"type": 2,
"connection_type": 12,
"connector_sibling": 53758,
"description": "P-1-1 Ausgang"
},
"apikey": "0815",
"language": "de"
},
"id": 1,
"version": "2.0"
}
answer:
API_RETURN = {
"id": 1,
"jsonrpc": "2.0",
"result": {
"success": true,
"message": "Category entry successfully saved",
"entry": 53759
}
}
2.) Erstellung des Kabels K-HUtest-001
request:
data = {
"method": "cmdb.object.create",
"params": {
"type": "C__OBJTYPE__CABLE",
"title": "K-HUtest-001-1",
"description": "virtual Cable",
"apikey": "0815",
"language": "de"
},
"id": 1,
"version": "2.0"
}
answer:
API_RETURN = {
"id": 1,
"jsonrpc": "2.0",
"result": {
"id": 50160,
"message": "Object was successfully created",
"success": true
}
}
3.) Die beiden Patchpanels mittels des Kabels verbinden.
Weder der Versuch über die Methode cmdb.category.save noch über die Methode cmdb.category.update war von Erfolg gekrönt. Hier meine Version von cmdb.category.update.
Ich vermute, dass ich mit meinem Ansatz an dieser Stelle auf dem Holzweg bin. Leider komme ich mit der Dokumentation der API nicht gut zurecht.
request:
"method": "cmdb.category.update",
"params": {
"objID": "50158",
"category": "C__CATG__CONNECTOR",
"data": {
"assigned_connector": "53758",
"cable_connection": "50160"
},
"apikey": "0815",
"language": "de"
},
"id": 1,
"version": "2.0"
}
answer:
API_RETURN = {
"id": 1,
"jsonrpc": "2.0",
"error": {
"code": -32099,
"message": "i-doit system error: Please define the category entry you want to update by setting data.id or data.category_id.",
"data": null
Wäre schön, wenn mir jemand der bereits erfolgreich Kabel mittels API verbunden hat, helfen könnte, liebe Grüße, hu
@MartinV : lieber Martin, danke für die Bereitstellung Deiner Inhouse-Portierung von Benjamin Heisig's php client library für i-doit's JSON-RPC API.
Ich habe mich heute Morgen ein wenig mit Deiner Implementierung beschäftigt und konnte auf Anhieb erfolgreich das mitgelieferte Testscript read_Objects_and_Categories.py zum Laufen bekommen.
Andere Methoden, wie CMDBObjectsByRelation oder CMDBLocationTree konte ich ebenfalls aus der python i-doit API client library von Dir, erfolgreich verwenden.
Hast Du vor das ganze offiziell zu veröffentlichen? Ich bin am überlegen, ob ich meine Programmentwicklungen auf Dein Fundament stellen soll. Da wäre es natürlich toll, weiterhin Anteil an Deiner Arbeit haben zu könen.
Zunächst aber vielen, vielen Dank. Das macht auf den ersten Blick einen sehr guten Eindruck.
@StephanBuerger said in API-Suche nach it service relations für Kabel:
@hu Was soll der "push nach vorn"?
Das mag niemand in einem Forum
... das ist mir absolut neu bei Foren. Tut mir leid dass Dich das stört. Ich mache dies bereits seit Jahrzehnten so und Du bist der erste der sich beschwert. Falls Du diesbezüglich einen netiquette Hinweis im Netz findest, kannst du ihn gerne posten, ich bin nicht fündig geworden.
Ich würde mich weiterhin freuen, wenn jemand eine Idee zu meinem Problem hat.