Coverage for tests/routers/test_device_router.py: 99%
626 statements
« prev ^ index » next coverage.py v7.9.1, created at 2025-06-25 05:47 +0000
« prev ^ index » next coverage.py v7.9.1, created at 2025-06-25 05:47 +0000
1import json
2import pytest
3import warnings
4from zenossapi.apiclient import ZenossAPIClientError
5from zenossapi.routers.device import DeviceRouter, ZenossDeviceClass, ZenossDevice, ZenossComponent
6from zenossapi.routers.properties import ZenossProperty, ZenossCustomProperty
7from zenossapi.routers.template import ZenossTemplate
8import resp_json
9import properties_resp
11pytest_plugins = "pytest-responses"
12url = 'https://zenoss/zport/dmd'
13headers = dict(
14 ContentType='application/json'
15)
16resp_body_template = dict(
17 result=dict(
18 success=True,
19 data=[],
20 )
21)
24def request_callback(request):
25 rdata = json.loads(request.body)
26 resp_headers = dict(ContentType='application/json')
28 def getProductionStates(rdata):
29 resp_body_template['result']['data'].extend([
30 dict(name='Production', value=1000),
31 dict(name='Maintenance', value=300),
32 ])
33 return resp_body_template
35 def getPriorities(rdata):
36 resp_body_template['result']['data'].append(dict(name='Normal', value=3))
37 return resp_body_template
39 def getInfo(rdata):
40 if rdata['uid'] == "Devices/Server/TEST":
41 return resp_json.dc_info
42 elif rdata['uid'] == "Devices/Server/TEST/devices/test.example.com":
43 return resp_json.dev_info
44 elif rdata['uid'] == "Devices/Server/TEST/devices/test.example.com/hw/cpus/0":
45 return resp_json.component_info
46 elif rdata['uid'] == "Devices/Server/TEST/devices/test.example.com/DnsMonitor":
47 return resp_json.local_template
48 elif rdata['uid'] == "Devices/Server/TEST/rrdTemplates/Device":
49 return resp_json.device_template
50 elif rdata['uid'] == "Devices/rrdTemplates/DnsMonitor":
51 return resp_json.dns_template
52 elif rdata['uid'] == "Devices/Server/rrdTemplates/Apache":
53 return resp_json.apache_template
54 elif rdata['uid'] == "Devices/Server/rrdTemplates/DigMonitor":
55 return resp_json.dig_template
56 else:
57 return resp_json.not_found
59 def getCollectors(rdata):
60 return resp_json.collectors
62 def getDeviceClasses(rdata):
63 return resp_json.dev_classes
65 def getGroups(rdata):
66 return resp_json.groups
68 def getSystems(rdata):
69 return resp_json.systems
71 def getDevices(rdata):
72 return resp_json.devices
74 def addDeviceClassNode(rdata):
75 return resp_json.add_dc
77 def addDevice(rdata):
78 return resp_json.add_dev
80 def getComponents(rdata):
81 return resp_json.components
83 def getUserCommands(rdata):
84 return resp_json.uc
86 def getLocalTemplates(rdata):
87 return resp_json.local_templates
89 def getTemplates(rdata):
90 return resp_json.templates
92 def getUnboundTemplates(rdata):
93 return resp_json.ub_templates
95 def getBoundTemplates(rdata):
96 return resp_json.bound_templates
98 def getOverridableTemplates(rdata):
99 return resp_json.or_templates
101 def moveDevices(rdata):
102 return resp_json.move_dev
104 def lockDevices(rdata):
105 return resp_json.lock
107 def resetIp(rdata):
108 return resp_json.resetip
110 def setProductionState(rdata):
111 return resp_json.prod_state
113 def setPriority(rdata):
114 return resp_json.priority
116 def setCollector(rdata):
117 return resp_json.set_collector
119 def remodel(rdata):
120 return resp_json.remodel
122 def setComponentsMonitored(rdata):
123 return resp_json.monitored
125 def lockComponents(rdata):
126 return resp_json.lock_c
128 def deleteComponents(rdata):
129 return resp_json.delete_c
131 def getZenProperties(rdata):
132 if rdata['params']:
133 if 'id' in rdata['params']:
134 if 'islocal' in rdata['params']:
135 return properties_resp.get_local_prop
136 else:
137 return properties_resp.get_prop
138 elif 'islocal' in rdata['params']:
139 return properties_resp.local_props
141 return properties_resp.props
143 def getCustomProperties(rdata):
144 if rdata['params'] and 'id' in rdata['params']:
145 if 'islocal' in rdata['params']:
146 return properties_resp.custom_local_props
148 return properties_resp.custom_props
150 def setZenProperty(rdata):
151 if rdata['zProperty'] == "zWinTrustedRealm":
152 return properties_resp.set_prop
153 elif rdata['zProperty'] == "cDateTest":
154 return properties_resp.set_custom_prop
156 def deleteZenProperty(rdata):
157 return properties_resp.delete_prop
159 def update(rdata):
160 return {
161 "uuid": "ba2f41f8-3c48-40a6-ab45-3c5e84252c3c",
162 "action": "PropertiesRouter",
163 "result": {
164 "success": True
165 },
166 "tid": 1,
167 "type": "rpc",
168 "method": "update"
169 }
171 if rdata['method'] in ['setBoundTemplates', 'bindOrUnbindTemplate',
172 'resetBoundTemplates', 'renameDevice',
173 'removeDevices']:
174 resp_body = resp_json.success
175 else:
176 method = locals()[rdata['method']]
177 resp_body = method(rdata['data'][0])
179 return (200, resp_headers, json.dumps(resp_body))
182def responses_callback(responses):
183 responses.add_callback(
184 responses.POST,
185 '{0}/device_router'.format(url),
186 callback=request_callback,
187 content_type='application/json',
188 )
191class TestDeviceRouter(object):
193 def test_device_router_init(self, responses):
194 responses_callback(responses)
196 dr = DeviceRouter(url, headers, True)
197 assert dr.uid is None
198 assert dr.properties is None
199 assert dr.prod_states_by_value[1000] == "Production"
200 assert dr.prod_states_by_name['Production'] == 1000
201 assert dr.priorities_by_value[3] == "Normal"
202 assert dr.priorities_by_name['Normal'] == 3
204 def test_device_router_get_info_by_uid(self, responses):
205 responses_callback(responses)
207 dr = DeviceRouter(url, headers, True)
208 resp = dr.get_info_by_uid('Devices/Server/TEST')
209 assert resp['data']['name'] == "TEST"
211 def test_device_router_get_info_by_uid_not_found(self, responses):
212 responses_callback(responses)
214 dr = DeviceRouter(url, headers, True)
215 with pytest.raises(ZenossAPIClientError, match="Request failed: ObjectNotFoundException: Cannot find \"Devices/Server/TEST\". KeyError: 'TEST'"):
216 resp = dr.get_info_by_uid('Devices/Server/NOTFOUND')
218 def test_device_router_list_collectors(self, responses):
219 responses_callback(responses)
221 dr = DeviceRouter(url, headers, True)
222 resp = dr.list_collectors()
223 assert resp[0] == "localhost"
225 def test_device_router_list_device_classes(self, responses):
226 responses_callback(responses)
228 dr = DeviceRouter(url, headers, True)
229 resp = dr.list_device_classes()
230 assert len(resp) == 7
231 assert resp[-1] == "Devices/Server/SSH/Linux"
233 def test_device_router_list_groups(self, responses):
234 responses_callback(responses)
236 dr = DeviceRouter(url, headers, True)
237 resp = dr.list_groups()
238 assert len(resp) == 1
239 assert resp[0] == "/TestGroup"
241 def test_device_router_list_systems(self, responses):
242 responses_callback(responses)
244 dr = DeviceRouter(url, headers, True)
245 resp = dr.list_systems()
246 assert len(resp) == 1
247 assert resp[0] == "/TestSystem"
249 def test_device_router_get_device_class(self, responses):
250 responses_callback(responses)
252 dr = DeviceRouter(url, headers, True)
253 resp = dr.get_device_class('Server/TEST')
254 assert isinstance(resp, ZenossDeviceClass)
256 def test_device_router_zenossdeviceclass_list_devices(self, responses):
257 responses_callback(responses)
259 dr = DeviceRouter(url, headers, True)
260 dc = dr.get_device_class('Server/TEST')
261 resp = dc.get_devices()
262 assert resp['total'] == 1
263 assert resp['devices'][0].name == "test.example.com"
264 assert resp['devices'][0].uid == "Devices/Server/TEST/devices/test.example.com"
266 def test_device_router_zenossdeviceclass_get_devices(self, responses):
267 responses_callback(responses)
269 dr = DeviceRouter(url, headers, True)
270 dc = dr.get_device_class('Server/TEST')
271 resp = dc.get_devices()
272 assert len(resp['devices']) == 1
273 assert isinstance(resp['devices'][0], ZenossDevice)
275 def test_device_router_zenossdeviceclass_get_device(self, responses):
276 responses_callback(responses)
278 dr = DeviceRouter(url, headers, True)
279 dc = dr.get_device_class('Server/TEST')
280 resp = dc.get_device('test.example.com')
281 assert isinstance(resp, ZenossDevice)
282 assert resp.uid == "Devices/Server/TEST/devices/test.example.com"
284 def test_device_router_zenossdeviceclass_add_subclass(self, responses):
285 responses_callback(responses)
287 dr = DeviceRouter(url, headers, True)
288 dc = dr.get_device_class('Server/TEST')
289 resp = dc.add_subclass('Foo')
290 assert isinstance(resp, ZenossDeviceClass)
292 def test_device_router_zenossdeviceclass_add_device(self, responses):
293 responses_callback(responses)
295 dr = DeviceRouter(url, headers, True)
296 dc = dr.get_device_class('Server/TEST')
297 resp = dc.add_device('test2.example.com')
298 assert resp == "721739ae-2b1d-4613-91e9-681f134a2c49"
300 def test_device_router_zenossdeviceclass_list_properties(self, responses):
301 responses.add_callback(
302 responses.POST,
303 '{0}/properties_router'.format(url),
304 callback=request_callback,
305 content_type='application/json',
306 )
307 responses.add_callback(
308 responses.POST,
309 '{0}/device_router'.format(url),
310 callback=request_callback,
311 content_type='application/json',
312 )
314 dr = DeviceRouter(url, headers, True)
315 dc = dr.get_device_class('Server/TEST')
316 props = dc.list_properties()
317 assert props['total'] == 4
318 assert len(props['properties']) == 4
319 assert props['properties'][0]['id'] == "zAggregatorCollectionInterval"
321 def test_device_router_zenossdeviceclass_list_local_properties(self, responses):
322 responses.add_callback(
323 responses.POST,
324 '{0}/properties_router'.format(url),
325 callback=request_callback,
326 content_type='application/json',
327 )
328 responses.add_callback(
329 responses.POST,
330 '{0}/device_router'.format(url),
331 callback=request_callback,
332 content_type='application/json',
333 )
335 dr = DeviceRouter(url, headers, True)
336 dc = dr.get_device_class('Server/TEST')
337 props = dc.list_local_properties()
338 assert props['total'] == 2
339 assert len(props['properties']) == 2
340 assert props['properties'][0]['id'] == "zMySQLConnectionString"
342 def test_device_router_zenossdeviceclass_list_custom_properites(self, responses):
343 responses.add_callback(
344 responses.POST,
345 '{0}/properties_router'.format(url),
346 callback=request_callback,
347 content_type='application/json',
348 )
349 responses.add_callback(
350 responses.POST,
351 '{0}/device_router'.format(url),
352 callback=request_callback,
353 content_type='application/json',
354 )
356 dr = DeviceRouter(url, headers, True)
357 dc = dr.get_device_class('Server/TEST')
358 props = dc.list_custom_properties()
359 assert props['total'] == 1
360 assert len(props['properties']) == 1
361 assert props['properties'][0]['id'] == "cDateTest"
362 assert props['properties'][0]['path'] == "/"
364 def test_device_router_zenossdeviceclass_get_properties(self, responses):
365 responses.add_callback(
366 responses.POST,
367 '{0}/properties_router'.format(url),
368 callback=request_callback,
369 content_type='application/json',
370 )
371 responses.add_callback(
372 responses.POST,
373 '{0}/device_router'.format(url),
374 callback=request_callback,
375 content_type='application/json',
376 )
378 dr = DeviceRouter(url, headers, True)
379 dc = dr.get_device_class('Server/TEST')
380 props = dc.get_properties()
381 assert props['total'] == 4
382 assert len(props['properties']) == 4
383 assert isinstance(props['properties'][0], ZenossProperty)
384 assert props['properties'][0].id == "zAggregatorCollectionInterval"
386 def test_device_router_zenossdeviceclass_get_property(self, responses):
387 responses.add_callback(
388 responses.POST,
389 '{0}/properties_router'.format(url),
390 callback=request_callback,
391 content_type='application/json',
392 )
393 responses.add_callback(
394 responses.POST,
395 '{0}/device_router'.format(url),
396 callback=request_callback,
397 content_type='application/json',
398 )
400 dr = DeviceRouter(url, headers, True)
401 dc = dr.get_device_class('Server/TEST')
402 prop = dc.get_property('zWinTrustedRealm')
403 assert isinstance(prop, ZenossProperty)
404 assert prop.id == 'zWinTrustedRealm'
406 def test_device_router_zenossdeviceclass_get_custom_properties(self, responses):
407 responses.add_callback(
408 responses.POST,
409 '{0}/properties_router'.format(url),
410 callback=request_callback,
411 content_type='application/json',
412 )
413 responses.add_callback(
414 responses.POST,
415 '{0}/device_router'.format(url),
416 callback=request_callback,
417 content_type='application/json',
418 )
420 dr = DeviceRouter(url, headers, True)
421 dc = dr.get_device_class('Server/TEST')
422 props = dc.get_custom_properties()
423 assert props['total'] == 1
424 assert len(props['properties']) == 1
425 assert isinstance(props['properties'][0], ZenossCustomProperty)
426 assert props['properties'][0].id == "cDateTest"
428 def test_device_router_zenossdeviceclass_get_custom_property(self, responses):
429 responses.add_callback(
430 responses.POST,
431 '{0}/properties_router'.format(url),
432 callback=request_callback,
433 content_type='application/json',
434 )
435 responses.add_callback(
436 responses.POST,
437 '{0}/device_router'.format(url),
438 callback=request_callback,
439 content_type='application/json',
440 )
442 dr = DeviceRouter(url, headers, True)
443 dc = dr.get_device_class('Server/TEST')
444 prop = dc.get_custom_property('zWinTrustedRealm')
445 assert isinstance(prop, ZenossCustomProperty)
446 assert prop.id == "cDateTest"
447 assert prop.path == "Devices/"
449 def test_device_router_zenossdeviceclass_set_property(self, responses):
450 responses.add_callback(
451 responses.POST,
452 '{0}/properties_router'.format(url),
453 callback=request_callback,
454 content_type='application/json',
455 )
456 responses.add_callback(
457 responses.POST,
458 '{0}/device_router'.format(url),
459 callback=request_callback,
460 content_type='application/json',
461 )
463 dr = DeviceRouter(url, headers, True)
464 dc = dr.get_device_class('Server/TEST')
465 prop = dc.set_property('zWinTrustedRealm', value='Westeros')
466 assert prop is True
468 def test_device_router_zenossdeviceclass_delete_property(self, responses):
469 responses.add_callback(
470 responses.POST,
471 '{0}/properties_router'.format(url),
472 callback=request_callback,
473 content_type='application/json',
474 )
475 responses.add_callback(
476 responses.POST,
477 '{0}/device_router'.format(url),
478 callback=request_callback,
479 content_type='application/json',
480 )
482 dr = DeviceRouter(url, headers, True)
483 dc = dr.get_device_class('Server/TEST')
484 assert dc.delete_property('zWinTrustedRealm')
486 def test_device_router_zenossdevice_list_components(self, responses):
487 responses_callback(responses)
489 dr = DeviceRouter(url, headers, True)
490 dc = dr.get_device_class('Server/TEST')
491 d = dc.get_device('test.example.com')
492 resp = d.list_components()
493 assert resp['total'] == 1
494 assert resp['components'][0] == "hw/cpus/0"
496 def test_device_router_zenossdevice_list_components_bad_filter(self, responses):
497 responses_callback(responses)
499 dr = DeviceRouter(url, headers, True)
500 dc = dr.get_device_class('Server/TEST')
501 d = dc.get_device('test.example.com')
502 with pytest.warns(UserWarning):
503 resp = d.list_components(name='foo')
505 def test_device_router_zenossdevice_get_components(self, responses):
506 responses_callback(responses)
508 dr = DeviceRouter(url, headers, True)
509 dc = dr.get_device_class('Server/TEST')
510 d = dc.get_device('test.example.com')
511 resp = d.get_components()
512 assert len(resp) == 1
513 assert isinstance(resp[0], ZenossComponent)
515 def test_device_router_zenossdevice_get_component(self, responses):
516 responses_callback(responses)
518 dr = DeviceRouter(url, headers, True)
519 dc = dr.get_device_class('Server/TEST')
520 d = dc.get_device('test.example.com')
521 resp = d.get_component('hw/cpus/0')
522 assert resp.uid == "Devices/Server/TEST/devices/test.example.com/hw/cpus/0"
523 assert resp.meta_type == "CPU"
524 assert resp.name == "0"
526 def test_device_router_zenossdevice_list_user_commands(self, responses):
527 responses_callback(responses)
529 dr = DeviceRouter(url, headers, True)
530 dc = dr.get_device_class('Server/TEST')
531 d = dc.get_device('test.example.com')
532 resp = d.list_user_commands()
533 assert len(resp) == 6
534 assert resp[2]['name'] == "ping"
536 def test_device_router_zenossdevice_list_local_templates(self, responses):
537 responses_callback(responses)
539 dr = DeviceRouter(url, headers, True)
540 dc = dr.get_device_class('Server/TEST')
541 d = dc.get_device('test.example.com')
542 resp = d.list_local_templates()
543 assert resp[0] == "DnsMonitor"
545 def test_device_router_zenossdevice_get_local_templates(self, responses):
546 responses.assert_all_requests_are_fired = False
547 responses.add(
548 responses.POST,
549 '{0}/template_router'.format(url),
550 json=resp_json.local_template,
551 status=200,
552 )
553 responses.add_callback(
554 responses.POST,
555 '{0}/device_router'.format(url),
556 callback=request_callback,
557 content_type='application/json',
558 )
559 dr = DeviceRouter(url, headers, True)
560 dc = dr.get_device_class('Server/TEST')
561 d = dc.get_device('test.example.com')
562 resp = d.get_local_templates()
563 assert isinstance(resp[0], ZenossTemplate)
564 assert resp[0].uid == "Devices/Server/TEST/devices/test.example.com/DnsMonitor"
566 def test_device_router_zenossdevice_list_active_templates(self, responses):
567 responses_callback(responses)
569 dr = DeviceRouter(url, headers, True)
570 dc = dr.get_device_class('Server/TEST')
571 d = dc.get_device('test.example.com')
572 resp = d.list_active_templates()
573 assert resp[0]['name'] == "Device"
575 def test_device_router_zenossdevice_get_active_templates(self, responses):
576 responses.assert_all_requests_are_fired = False
577 responses.add_callback(
578 responses.POST,
579 '{0}/template_router'.format(url),
580 callback=request_callback,
581 content_type='application/json',
582 )
583 responses.add_callback(
584 responses.POST,
585 '{0}/device_router'.format(url),
586 callback=request_callback,
587 content_type='application/json',
588 )
589 dr = DeviceRouter(url, headers, True)
590 dc = dr.get_device_class('Server/TEST')
591 d = dc.get_device('test.example.com')
592 resp = d.get_active_templates()
593 assert len(resp) == 2
594 assert isinstance(resp[0], ZenossTemplate)
595 assert resp[0].uid == "Devices/Server/TEST/rrdTemplates/Device"
597 def test_device_router_zenossdevice_list_unbound_templates(self, responses):
598 responses_callback(responses)
600 dr = DeviceRouter(url, headers, True)
601 dc = dr.get_device_class('Server/TEST')
602 d = dc.get_device('test.example.com')
603 resp = d.list_unbound_templates()
604 assert resp[0]['name'] == "Apache"
606 def test_device_router_zenossdevice_get_unbound_templates(self, responses):
607 responses.assert_all_requests_are_fired = False
608 responses.add_callback(
609 responses.POST,
610 '{0}/template_router'.format(url),
611 callback=request_callback,
612 content_type='application/json',
613 )
614 responses.add_callback(
615 responses.POST,
616 '{0}/device_router'.format(url),
617 callback=request_callback,
618 content_type='application/json',
619 )
620 dr = DeviceRouter(url, headers, True)
621 dc = dr.get_device_class('Server/TEST')
622 d = dc.get_device('test.example.com')
623 resp = d.get_unbound_templates()
624 assert len(resp) == 2
625 assert isinstance(resp[0], ZenossTemplate)
626 assert resp[0].uid == "Devices/Server/rrdTemplates/Apache"
627 assert resp[1].name == "DigMonitor"
629 def test_device_router_zenossdevice_list_bound_templates(self, responses):
630 responses_callback(responses)
632 dr = DeviceRouter(url, headers, True)
633 dc = dr.get_device_class('Server/TEST')
634 d = dc.get_device('test.example.com')
635 resp = d.list_bound_templates()
636 assert resp[0]['name'] == "Device"
638 def test_device_router_zenossdevice_get_bound_templates(self, responses):
639 responses.assert_all_requests_are_fired = False
640 responses.add_callback(
641 responses.POST,
642 '{0}/template_router'.format(url),
643 callback=request_callback,
644 content_type='application/json',
645 )
646 responses.add_callback(
647 responses.POST,
648 '{0}/device_router'.format(url),
649 callback=request_callback,
650 content_type='application/json',
651 )
652 dr = DeviceRouter(url, headers, True)
653 dc = dr.get_device_class('Server/TEST')
654 d = dc.get_device('test.example.com')
655 resp = d.get_bound_templates()
656 assert len(resp) == 2
657 assert isinstance(resp[0], ZenossTemplate)
659 def test_device_router_zenossdevice_list_overridable_templates(self, responses):
660 responses_callback(responses)
662 dr = DeviceRouter(url, headers, True)
663 dc = dr.get_device_class('Server/TEST')
664 d = dc.get_device('test.example.com')
665 resp = d.list_overridable_templates()
666 assert resp[0]['name'] == "Device"
668 def test_device_router_zenossdevice_get_overridable_templates(self, responses):
669 responses.assert_all_requests_are_fired = False
670 responses.add_callback(
671 responses.POST,
672 '{0}/template_router'.format(url),
673 callback=request_callback,
674 content_type='application/json',
675 )
676 responses.add_callback(
677 responses.POST,
678 '{0}/device_router'.format(url),
679 callback=request_callback,
680 content_type='application/json',
681 )
682 dr = DeviceRouter(url, headers, True)
683 dc = dr.get_device_class('Server/TEST')
684 d = dc.get_device('test.example.com')
685 resp = d.get_overridable_templates()
686 assert len(resp) == 1
687 assert isinstance(resp[0], ZenossTemplate)
689 def test_device_router_zenossdevice_set_bound_templates(self, responses):
690 responses_callback(responses)
692 dr = DeviceRouter(url, headers, True)
693 dc = dr.get_device_class('Server/TEST')
694 d = dc.get_device('test.example.com')
695 resp = d.set_bound_templates(['Device'])
697 def test_device_router_zenossdevice_bind_or_unbind_template(self, responses):
698 responses_callback(responses)
700 dr = DeviceRouter(url, headers, True)
701 dc = dr.get_device_class('Server/TEST')
702 d = dc.get_device('test.example.com')
703 resp = d.bind_or_unbind_template('Devices', 'DnsMonitor')
705 def test_device_router_zenossdevice_reset_bound_templates(self, responses):
706 responses_callback(responses)
708 dr = DeviceRouter(url, headers, True)
709 dc = dr.get_device_class('Server/TEST')
710 d = dc.get_device('test.example.com')
711 resp = d.reset_bound_templates()
713 def test_device_router_zenossdevice_move(self, responses):
714 responses_callback(responses)
716 dr = DeviceRouter(url, headers, True)
717 dc = dr.get_device_class('Server/TEST')
718 d = dc.get_device('test.example.com')
719 resp = d.move('Server/TEST')
721 def test_device_router_zenossdevice_reidentify(self, responses):
722 responses_callback(responses)
724 dr = DeviceRouter(url, headers, True)
725 dc = dr.get_device_class('Server/TEST')
726 d = dc.get_device('test.example.com')
727 resp = d.reidentify('test2.example.com')
729 def test_device_router_zenossdevice_lock(self, responses):
730 responses_callback(responses)
732 dr = DeviceRouter(url, headers, True)
733 dc = dr.get_device_class('Server/TEST')
734 d = dc.get_device('test.example.com')
735 resp = d.lock(updates=True, deletion=True)
736 assert resp == "Locked 1 devices."
738 def test_device_router_zenossdevice_lock_for_updates(self, responses):
739 responses_callback(responses)
741 dr = DeviceRouter(url, headers, True)
742 dc = dr.get_device_class('Server/TEST')
743 d = dc.get_device('test.example.com')
744 resp = d.lock_for_updates()
745 assert resp == "Locked 1 devices."
747 def test_device_router_zenossdevice_lock_for_deletion(self, responses):
748 responses_callback(responses)
750 dr = DeviceRouter(url, headers, True)
751 dc = dr.get_device_class('Server/TEST')
752 d = dc.get_device('test.example.com')
753 resp = d.lock_for_deletion()
754 assert resp == "Locked 1 devices."
756 def test_device_router_zenossdevice_reset_ip_address(self, responses):
757 responses_callback(responses)
759 dr = DeviceRouter(url, headers, True)
760 dc = dr.get_device_class('Server/TEST')
761 d = dc.get_device('test.example.com')
762 resp = d.reset_ip_address()
763 assert resp == "Reset 1 IP addresses."
765 def test_device_router_zenossdevice_set_production_state(self, responses):
766 responses_callback(responses)
768 dr = DeviceRouter(url, headers, True)
769 dc = dr.get_device_class('Server/TEST')
770 d = dc.get_device('test.example.com')
771 resp = d.set_production_state(300)
772 assert resp == "Set 1 devices to Maintenance."
774 def test_device_router_zenossdevice_set_priority(self, responses):
775 responses_callback(responses)
777 dr = DeviceRouter(url, headers, True)
778 dc = dr.get_device_class('Server/TEST')
779 d = dc.get_device('test.example.com')
780 resp = d.set_priority(3)
781 assert resp == "Set 1 devices to Normal priority."
783 def test_device_router_zenossdevice_set_collector(self, responses):
784 responses_callback(responses)
786 dr = DeviceRouter(url, headers, True)
787 dc = dr.get_device_class('Server/TEST')
788 d = dc.get_device('test.example.com')
789 resp = d.set_collector('localhost')
790 assert resp == "bd320c54-4325-47a7-baaf-048a22c1a276"
792 def test_device_router_zenossdevice_delete(self, responses):
793 responses_callback(responses)
795 dr = DeviceRouter(url, headers, True)
796 dc = dr.get_device_class('Server/TEST')
797 d = dc.get_device('test.example.com')
798 resp = d.delete('delete')
799 assert resp
801 def test_device_router_zenossdevice_remodel(self, responses):
802 responses_callback(responses)
804 dr = DeviceRouter(url, headers, True)
805 dc = dr.get_device_class('Server/TEST')
806 d = dc.get_device('test.example.com')
807 resp = d.remodel()
808 assert resp == "8735c0ba-0091-474d-8475-2ae4217aba32"
810 def test_device_router_zenossdevice_list_properties(self, responses):
811 responses.add_callback(
812 responses.POST,
813 '{0}/properties_router'.format(url),
814 callback=request_callback,
815 content_type='application/json',
816 )
817 responses.add_callback(
818 responses.POST,
819 '{0}/device_router'.format(url),
820 callback=request_callback,
821 content_type='application/json',
822 )
824 dr = DeviceRouter(url, headers, True)
825 dc = dr.get_device_class('Server/TEST')
826 d = dc.get_device('test.example.com')
827 props = d.list_properties()
828 assert props['total'] == 4
829 assert len(props['properties']) == 4
830 assert props['properties'][0]['id'] == "zAggregatorCollectionInterval"
832 def test_device_router_zenossdevice_list_local_properties(self, responses):
833 responses.add_callback(
834 responses.POST,
835 '{0}/properties_router'.format(url),
836 callback=request_callback,
837 content_type='application/json',
838 )
839 responses.add_callback(
840 responses.POST,
841 '{0}/device_router'.format(url),
842 callback=request_callback,
843 content_type='application/json',
844 )
846 dr = DeviceRouter(url, headers, True)
847 dc = dr.get_device_class('Server/TEST')
848 d = dc.get_device('test.example.com')
849 props = d.list_local_properties()
850 assert props['total'] == 2
851 assert len(props['properties']) == 2
852 assert props['properties'][0]['id'] == "zMySQLConnectionString"
854 def test_device_router_zenossdevice_list_custom_properites(self, responses):
855 responses.add_callback(
856 responses.POST,
857 '{0}/properties_router'.format(url),
858 callback=request_callback,
859 content_type='application/json',
860 )
861 responses.add_callback(
862 responses.POST,
863 '{0}/device_router'.format(url),
864 callback=request_callback,
865 content_type='application/json',
866 )
868 dr = DeviceRouter(url, headers, True)
869 dc = dr.get_device_class('Server/TEST')
870 d = dc.get_device('test.example.com')
871 props = d.list_custom_properties()
872 assert props['total'] == 1
873 assert len(props['properties']) == 1
874 assert props['properties'][0]['id'] == "cDateTest"
875 assert props['properties'][0]['path'] == "/"
877 def test_device_router_zenossdevice_get_properties(self, responses):
878 responses.add_callback(
879 responses.POST,
880 '{0}/properties_router'.format(url),
881 callback=request_callback,
882 content_type='application/json',
883 )
884 responses.add_callback(
885 responses.POST,
886 '{0}/device_router'.format(url),
887 callback=request_callback,
888 content_type='application/json',
889 )
891 dr = DeviceRouter(url, headers, True)
892 dc = dr.get_device_class('Server/TEST')
893 d = dc.get_device('test.example.com')
894 props = d.get_properties()
895 assert props['total'] == 4
896 assert len(props['properties']) == 4
897 assert isinstance(props['properties'][0], ZenossProperty)
898 assert props['properties'][0].id == "zAggregatorCollectionInterval"
900 def test_device_router_zenossdevice_get_property(self, responses):
901 responses.add_callback(
902 responses.POST,
903 '{0}/properties_router'.format(url),
904 callback=request_callback,
905 content_type='application/json',
906 )
907 responses.add_callback(
908 responses.POST,
909 '{0}/device_router'.format(url),
910 callback=request_callback,
911 content_type='application/json',
912 )
914 dr = DeviceRouter(url, headers, True)
915 dc = dr.get_device_class('Server/TEST')
916 d = dc.get_device('test.example.com')
917 prop = d.get_property('zWinTrustedRealm')
918 assert isinstance(prop, ZenossProperty)
919 assert prop.id == 'zWinTrustedRealm'
921 def test_device_router_zenossdevice_get_custom_properties(self, responses):
922 responses.add_callback(
923 responses.POST,
924 '{0}/properties_router'.format(url),
925 callback=request_callback,
926 content_type='application/json',
927 )
928 responses.add_callback(
929 responses.POST,
930 '{0}/device_router'.format(url),
931 callback=request_callback,
932 content_type='application/json',
933 )
935 dr = DeviceRouter(url, headers, True)
936 dc = dr.get_device_class('Server/TEST')
937 d = dc.get_device('test.example.com')
938 props = d.get_custom_properties()
939 assert props['total'] == 1
940 assert len(props['properties']) == 1
941 assert isinstance(props['properties'][0], ZenossCustomProperty)
942 assert props['properties'][0].id == "cDateTest"
944 def test_device_router_zenossdevice_get_custom_property(self, responses):
945 responses.add_callback(
946 responses.POST,
947 '{0}/properties_router'.format(url),
948 callback=request_callback,
949 content_type='application/json',
950 )
951 responses.add_callback(
952 responses.POST,
953 '{0}/device_router'.format(url),
954 callback=request_callback,
955 content_type='application/json',
956 )
958 dr = DeviceRouter(url, headers, True)
959 dc = dr.get_device_class('Server/TEST')
960 d = dc.get_device('test.example.com')
961 prop = d.get_custom_property('zWinTrustedRealm')
962 assert isinstance(prop, ZenossCustomProperty)
963 assert prop.id == "cDateTest"
964 assert prop.path == "Devices/"
966 def test_device_router_zenossdevice_set_property(self, responses):
967 responses.add_callback(
968 responses.POST,
969 '{0}/properties_router'.format(url),
970 callback=request_callback,
971 content_type='application/json',
972 )
973 responses.add_callback(
974 responses.POST,
975 '{0}/device_router'.format(url),
976 callback=request_callback,
977 content_type='application/json',
978 )
980 dr = DeviceRouter(url, headers, True)
981 dc = dr.get_device_class('Server/TEST')
982 d = dc.get_device('test.example.com')
983 prop = d.set_property('zWinTrustedRealm', value='Westeros')
984 assert prop is True
986 def test_device_router_zenossdevice_delete_property(self, responses):
987 responses.add_callback(
988 responses.POST,
989 '{0}/properties_router'.format(url),
990 callback=request_callback,
991 content_type='application/json',
992 )
993 responses.add_callback(
994 responses.POST,
995 '{0}/device_router'.format(url),
996 callback=request_callback,
997 content_type='application/json',
998 )
1000 dr = DeviceRouter(url, headers, True)
1001 dc = dr.get_device_class('Server/TEST')
1002 d = dc.get_device('test.example.com')
1003 assert d.delete_property('zWinTrustedRealm')
1005 def test_device_router_zenosscomponent_set_monitored(self, responses):
1006 responses_callback(responses)
1008 dr = DeviceRouter(url, headers, True)
1009 dc = dr.get_device_class('Server/TEST')
1010 d = dc.get_device('test.example.com')
1011 c = d.get_component('hw/cpus/0')
1012 resp = c.set_monitored(False)
1013 assert resp == "Set monitoring to False for 1 components."
1015 def test_device_router_zenosscomponent_lock(self, responses):
1016 responses_callback(responses)
1018 dr = DeviceRouter(url, headers, True)
1019 dc = dr.get_device_class('Server/TEST')
1020 d = dc.get_device('test.example.com')
1021 c = d.get_component('hw/cpus/0')
1022 resp = c.lock(updates=True, deletion=True)
1023 assert resp == "Locked 1 components."
1025 def test_device_router_zenosscomponent_lock_for_updates(self, responses):
1026 responses_callback(responses)
1028 dr = DeviceRouter(url, headers, True)
1029 dc = dr.get_device_class('Server/TEST')
1030 d = dc.get_device('test.example.com')
1031 c = d.get_component('hw/cpus/0')
1032 resp = c.lock_for_updates()
1033 assert resp == "Locked 1 components."
1035 def test_device_router_zenosscomponent_lock_for_deletion(self, responses):
1036 responses_callback(responses)
1038 dr = DeviceRouter(url, headers, True)
1039 dc = dr.get_device_class('Server/TEST')
1040 d = dc.get_device('test.example.com')
1041 c = d.get_component('hw/cpus/0')
1042 resp = c.lock_for_deletion()
1043 assert resp == "Locked 1 components."
1045 def test_device_router_zenosscomponent_delete(self, responses):
1046 responses_callback(responses)
1048 dr = DeviceRouter(url, headers, True)
1049 dc = dr.get_device_class('Server/TEST')
1050 d = dc.get_device('test.example.com')
1051 c = d.get_component('hw/cpus/0')
1052 resp = c.delete()
1053 assert resp == "Components deleted."