@@ -31,6 +31,11 @@ def _get_set_stm(attr, node_name="asset", supported_attr=[]):
3131 return ',' .join (map (lambda k : "{}.{}={}" .format (node_name , _to_camelcase (k ), repr (existing [k ])), existing ))
3232
3333
34+ def _get_oid_desc_stm (oid_desc , oid_name ):
35+ """Format dict attributes as neo4j props"""
36+ return 'OIDName: "{}",' .format (oid_name ) + ',' .join (map (lambda k : '{}: "{}"' .format (oid_desc [k ], k ), oid_desc ))
37+
38+
3439def _add_psu (key , psu_index , attr ):
3540 """Add a PSU to an existing server
3641
@@ -277,45 +282,27 @@ def create_ups(key, attr, preset_file=os.path.join(os.path.dirname(__file__), 'p
277282 preset_file = attr ['snmp_preset' ] if 'snmp_preset' in attr and attr ['snmp_preset' ] else preset_file
278283
279284 with open (preset_file ) as f , graph_ref .get_session () as session :
285+
286+ query = []
280287 data = json .load (f )
281288
282- name = attr ['name' ] if 'name' in attr and attr ['name' ] else data ['assetName' ]
283-
284- session .run ("\
285- CREATE (:Asset:UPS:SNMPSim { \
286- name: $name,\
287- key: $key,\
288- staticOidFile: $oid_file,\
289- outputPowerCapacity: $pc,\
290- minPowerOnBatteryLevel: $minbat,\
291- fullRechargeTime: $rechargehrs, \
292- type: 'ups',\
293- runtime: $runtime,\
294- port: $port \
295- })" ,
296- key = key ,
297- name = name ,
298- oid_file = data ['staticOidFile' ],
299- pc = data ['outputPowerCapacity' ],
300- minbat = data ['minPowerOnBatteryLevel' ],
301- rechargehrs = data ['fullRechargeTime' ],
302- runtime = json .dumps (data ['modelRuntime' ], sort_keys = True ),
303- port = attr ['port' ]
304- )
305-
306- set_properties (key , attr )
289+ attr ['name' ] = attr ['name' ] if 'name' in attr and attr ['name' ] else data ['assetName' ]
290+ attr ['runtime' ] = json .dumps (data ['modelRuntime' ], sort_keys = True )
291+
292+ s_attr = ["name" , "type" , "key" , "off_delay" , "on_delay" , "staticOidFile" , "port" , "host" ,
293+ "outputPowerCapacity" , "minPowerOnBatteryLevel" , "fullRechargeTime" , "runtime" ]
294+
295+ props_stm = _get_props_stm ({** attr , ** data , ** {'key' : key , 'type' : 'ups' }}, supported_attr = s_attr )
296+
297+ # create UPS asset
298+ query .append ("CREATE (ups:Asset:UPS:SNMPSim {{ {} }})" .format (props_stm ))
307299
308- # add batteries
309- session .run ("\
310- MATCH (ups:UPS {key: $key})\
311- CREATE (bat:UPSBattery:Battery { \
312- name: $name,\
313- type: 'battery'\
314- })\
315- CREATE (ups)-[:HAS_BATTERY]->(bat)\
316- CREATE (ups)-[:POWERED_BY]->(bat)\
317- " ,key = key , name = 'bat1'
318- )
300+ # add batteries (only one for now)
301+ query .append ("CREATE (bat:UPSBattery:Battery { name: 'bat1', type: 'battery' })" )
302+ query .append ("CREATE (ups)-[:HAS_BATTERY]->(bat)" )
303+ query .append ("CREATE (ups)-[:POWERED_BY]->(bat)" )
304+
305+ session .run ("\n " .join (query ))
319306
320307 for k , v in data ["OIDs" ].items ():
321308 if k == 'SerialNumber' :
@@ -490,15 +477,6 @@ def create_ups(key, attr, preset_file=os.path.join(os.path.dirname(__file__), 'p
490477 outkey = int ("{}{}" .format (key ,str (i + 1 ))))
491478
492479
493- def _get_oid_desc_stm (oid_desc , oid_name ):
494- """Format dict attributes as neo4j props"""
495-
496- # existing = dict(
497- # filter(lambda k: attr[k[0]] != None and (not supported_attr or k[0] in supported_attr), oid_desc.items())
498- # )
499- return 'OIDName: "{}",' .format (oid_name ) + ',' .join (map (lambda k : '{}: "{}"' .format (oid_desc [k ], k ), oid_desc ))
500-
501-
502480def create_pdu (key , attr , preset_file = os .path .join (os .path .dirname (__file__ ), 'presets/apc_pdu.json' )):
503481 """Add PDU to the model """
504482
0 commit comments