def cutover(self, dmd): if hasattr(dmd.Devices.rrdTemplates, 'ethernetCsmacd_64'): template = dmd.Devices.rrdTemplates._getOb('ethernetCsmacd_64') if not hasattr(template.datasources, "ifOperStatus"): bds = BasicDataSource('ifOperStatus') bds.oid = ".1.3.6.1.2.1.2.2.1.8" bds.sourcetype = "SNMP" template.datasources._setObject('ifOperStatus', bds) bds = template.datasources.ifOperStatus bds.addDataPoints() datapoint = template.datasources.ifOperStatus.datapoints.ifOperStatus datapoint.createCmd = "\n".join(( 'RRA:LAST:0.5:1:600', 'RRA:AVERAGE:0.5:1:600', # every 5 mins for 2 days 'RRA:AVERAGE:0.5:6:600', # every 30 mins for 12 days 'RRA:AVERAGE:0.5:24:600', # every 2 hours for 50 days 'RRA:AVERAGE:0.5:288:600', # every day for 600 days 'RRA:MAX:0.5:6:600', 'RRA:MAX:0.5:24:600', 'RRA:MAX:0.5:288:600', ))
def test_getCycleTime(self): deviceclass = self.dmd.Devices.createOrganizer( "/Test/CalculatedPerformance") deviceclass.setZenProperty("zCollectorClientTimeout", 20) # Basis datasources. deviceclass.manage_addRRDTemplate("FileSystem") basis_template = deviceclass.rrdTemplates._getOb("FileSystem") command_ds = BasicDataSource("command") basis_template.datasources._setObject(command_ds.id, command_ds) command_ds = basis_template.datasources._getOb(command_ds.id) command_ds.sourcetype = "COMMAND" command_ds.cycletime = 10 command_ds.manage_addRRDDataPoint("command") python_ds = PythonDataSource("python") basis_template.datasources._setObject(python_ds.id, python_ds) python_ds = basis_template.datasources._getOb(python_ds.id) python_ds.cycletime = "${here/zCollectorClientTimeout}" python_ds.manage_addRRDDataPoint("python") # Aggregating datasources. deviceclass.manage_addRRDTemplate("Device") agg_template = deviceclass.rrdTemplates._getOb("Device") agg_ds1 = AggregatingDataSource("agg1") agg_template.datasources._setObject(agg_ds1.id, agg_ds1) agg_ds1 = agg_template.datasources._getOb(agg_ds1.id) agg_ds1.targetMethod = "os.filesystems" agg_ds1.targetDataSource = "command" agg_ds1.targetDataPoint = "command" agg_ds1.useBasisInterval = False agg_ds1.cycletime = 30 agg_ds2 = AggregatingDataSource("agg2") agg_template.datasources._setObject(agg_ds2.id, agg_ds2) agg_ds2 = agg_template.datasources._getOb(agg_ds2.id) agg_ds2.targetMethod = "os.filesystems" agg_ds2.targetDataSource = "python" agg_ds2.targetDataPoint = "python" agg_ds2.useBasisInterval = True agg_ds2.cycletime = 40 # Device device = deviceclass.createInstance("TestCalculatedPerformance") device.setPerformanceMonitor("localhost") # Members fs1 = FileSystem("boot") device.os.filesystems._setObject(fs1.id, fs1) fs2 = FileSystem("root") device.os.filesystems._setObject(fs2.id, fs2) # Sanity checks. self.assertEqual(command_ds.cycletime, 10) self.assertEqual(python_ds.getCycleTime(device), 20) # useBasisInterval = False self.assertEqual(agg_ds1.getCycleTime(device), 30) # useBasisInterval = True self.assertEqual(agg_ds2.getCycleTime(device), 20) # minimumInterval agg_ds2.minimumInterval = None self.assertEqual(agg_ds2.getCycleTime(device), 20) agg_ds2.minimumInterval = 1 self.assertEqual(agg_ds2.getCycleTime(device), 20) agg_ds2.minimumInterval = 40 self.assertEqual(agg_ds2.getCycleTime(device), 40) agg_ds2.minimumInterval = None # maximumInterval agg_ds2.maximumInterval = None self.assertEqual(agg_ds2.getCycleTime(device), 20) agg_ds2.maximumInterval = 40 self.assertEqual(agg_ds2.getCycleTime(device), 20) agg_ds2.maximumInterval = 1 self.assertEqual(agg_ds2.getCycleTime(device), 1) agg_ds2.maximumInterval = None
def test_getCycleTime(self): deviceclass = self.dmd.Devices.createOrganizer( "/Test/CalculatedPerformance") deviceclass.setZenProperty("zCollectorClientTimeout", 20) deviceclass.manage_addRRDTemplate("Device") template = deviceclass.rrdTemplates._getOb("Device") # Basis datasources. basis_ds1 = BasicDataSource("basis1") template.datasources._setObject( basis_ds1.id, basis_ds1) basis_ds1 = template.datasources._getOb(basis_ds1.id) basis_ds1.sourcetype = "COMMAND" basis_ds1.cycletime = 10 basis_ds1.manage_addRRDDataPoint("basis1") basis_ds2 = PythonDataSource("basis2") template.datasources._setObject(basis_ds2.id, basis_ds2) basis_ds2 = template.datasources._getOb(basis_ds2.id) basis_ds2.cycletime = "${here/zCollectorClientTimeout}" basis_ds2.manage_addRRDDataPoint("basis2") # Calculated datasources. calc_ds1 = CalculatedPerformanceDataSource("calculated1") template.datasources._setObject(calc_ds1.id, calc_ds1) calc_ds1 = template.datasources._getOb(calc_ds1.id) calc_ds1.expression = "basis1 + basis2" calc_ds1.useBasisInterval = False calc_ds1.cycletime = 30 calc_ds1.manage_addRRDDataPoint("calculated1") calc_ds2 = CalculatedPerformanceDataSource("calculated2") template.datasources._setObject(calc_ds2.id, calc_ds2) calc_ds2 = template.datasources._getOb(calc_ds2.id) calc_ds2.expression = "basis1 + basis2" calc_ds2.useBasisInterval = True calc_ds2.cycletime = 40 calc_ds2.manage_addRRDDataPoint("calculated2") # Device device = deviceclass.createInstance("TestCalculatedPerformance") device.setPerformanceMonitor("localhost") # Santity checks. self.assertEqual(basis_ds1.cycletime, 10) self.assertEqual(basis_ds2.getCycleTime(device), 20) # useBasisInterval = False self.assertEqual(calc_ds1.getCycleTime(device), 30) # useBasisInterval = True self.assertEqual(calc_ds2.getCycleTime(device), 10) # minimumInterval calc_ds2.minimumInterval = None self.assertEqual(calc_ds2.getCycleTime(device), 10) calc_ds2.minimumInterval = 1 self.assertEqual(calc_ds2.getCycleTime(device), 10) calc_ds2.minimumInterval = 20 self.assertEqual(calc_ds2.getCycleTime(device), 20) calc_ds2.minimumInterval = None # maximumInterval calc_ds2.maximumInterval = None self.assertEqual(calc_ds2.getCycleTime(device), 10) calc_ds2.maximumInterval = 20 self.assertEqual(calc_ds2.getCycleTime(device), 10) calc_ds2.maximumInterval = 1 self.assertEqual(calc_ds2.getCycleTime(device), 1) calc_ds2.maximumInterval = None