Archived community.zenoss.org | full text search
Skip navigation
Currently Being Moderated

Dev chat 04/15/2010

VERSION 1 
Created on: Apr 15, 2010 12:31 PM by Matt Ray - Last Modified:  Apr 15, 2010 12:34 PM by Matt Ray

9:51:21 AM bedwards: I'm a Zenoss Developer
9:51:42 AM themactech: Hi, can I ask you a few questions?
9:52:54 AM bedwards: yes
mrayzenoss has changed the topic to: Zenoss Developers are here to answer questions (9:53:51 AM)
9:54:17 AM themactech: I have some questions regarding types of data, I have made some custom zProperties, using zendmd, with devices._setProperty('zWarExp','',type='date') as an example
9:54:42 AM themactech: now how is such a property different from say, the comment field
9:55:23 AM themactech: I have set these custom properties at the root device location, as I was made to understand that is the only place you can create custom zProperties
9:56:06 AM themactech: they take the default values when that was specified in the zendmd command, but I can't seem to overwrite the values at lower branches in the device tree, it gives me an error message
9:56:31 AM bedwards: what is the message?
9:56:39 AM themactech: some datetime error
9:57:38 AM themactech: also, i have written custom modelers, that would say map and OID value to the 'comments' field, and I can't seem to map that data to my custom zProperties
9:59:38 AM themactech: I have a zProperty called zCustom1, and when I try to map a value to it from a collector plugin with snmpGetMap = GetMap '.1.3.6.x.x.x.x.x' : 'zCustom1' it does not work, though it works fine if I put 'comment' field, then that value goes into the comment field with no issue
10:02:32 AM mrayzenoss: themactech: don't you have a forum post that talks about what you're trying to do?
10:02:44 AM themactech: Yes I do
10:06:07 AM Jesper: question. (I talked a bit about this earlier today) I have 2000+ routers with various Internet connection speeds, and I would like to I'm trying to set up my Zenoss installation to support speeds on ADSL connections. What's the easiest/best way to go about this?
jmp242 left the room. (10:06:24 AM)
10:06:58 AM Jesper: I've tried to make a subclass with routers that has eg. a 4Mbit/768Kbit connection, but I can't quite seem to figure out how to add a correct template to it.
10:07:50 AM Jesper: that is, other than making a local copy. And that's not really a viable approach on more than a few routers.
10:07:51 AM bedwards: themactech, we don't have any date zProps so you are in uncharted territory.  Maybe you need a Zope date instead of a datetime date.
10:08:24 AM themactech: I have the same problem with my other zProperties, one is a integer and the others are strings
10:08:44 AM themactech: and what is the difference between an added zProperty, and a custom schema, or are they the same
10:09:03 AM cgibbons: do any of our plugins actually set/modify zProperties via ApplyDataMap, Brian? I'm trying to think of an example.
10:09:04 AM themactech: and are these different from the other fields that show in the status tab, i.e. comment, tag #, serial #
10:09:20 AM cgibbons: Looking at the code I'm not sure it would work right either.
10:09:39 AM themactech: What I'm trying to do is make some custom fields to show device-personalized data in the status tab
10:09:57 AM bedwards: I don't know of any.  I don't think ApplyDataMap makes a setZenProperty call
10:10:18 AM cgibbons: looks like it does an aq_base(obj) when it tries to get the attr, too
10:10:40 AM themactech: for example the promise raid boxes I need to monitor have 2 controllers, having the same firmware on both is critical so I want to show the firmware version of both controllers in the status tab and maybe even set a threshold if both are not identical, which can happen when you swap out a defective
10:11:28 AM bedwards: You should subclass Device and add a new attribute.
10:11:42 AM themactech: if a custom zProperty is not the way to go, what are my options, are their any differences vs a zProperty and a custom schema?
10:12:17 AM themactech: the zWarExp was for me to try and implement warranty expiration tracking and alerts for gear
10:13:05 AM themactech: usually if you let a warranty expire on a piece of gear you cannot renew it, and this happens a lot and clients are notorious for not tracking this properly, we would implement this in zenoss if possible
10:13:05 AM bedwards: basically zProperty might be acquired, an attribute will always be directly on the instance.  I don't think that custom schema is what you want either.  I'm looking for an example.
10:14:54 AM themactech: how do I add an attribute, and how is an attribute different from a zProperty, also keep in mind I want to set these with custom modelers, I have a custom modeler for Apple devices that will get the serial number via SNMP and query Apple's website to pull the warranty expiration, amongst other things
10:15:28 AM themactech: Dont want to have to input these manually for large apple deployments
10:16:00 AM themactech: also if you renew your warranty, your warranty expiration date would be automatically update as Apple updates their database, same can be done with Dell
10:19:24 AM bedwards: check out EC2Manager in the ZenAWS zenpack.  It subclasses Device and adds an access_id attribute.
10:19:38 AM themactech: is that available for core?
10:19:42 AM themactech: i'm using core
10:19:52 AM mrayzenoss: yeah, it's the AWS ZenPack
10:19:57 AM themactech: alright will do
10:21:09 AM themactech: now when I want to modify the UI skin for this data, I know how to insert a <dt>data here</dt> table, and russell at the community day in austin told me that the text in the <dt></dt> could hold a zenoss variable, but I can't find the syntax to do so
10:21:52 AM themactech: because what I am trying to do is create say 2 custom fields, called custom1 and custom2, and have 2 other fields called customheader1 customheader2
10:22:17 AM themactech: and have the <dt></dt> table display the value in customheader1 instead of static text
10:22:57 AM bedwards: Jesper, are you writing a new zenpack for a type of device that isn't currently supported?
10:23:51 AM themactech: this way for a class of devices, for example my promise raids, it would display "FW CTRL 1" and then the firmware, but for another device class, I could set the customheader1 value to "codec license" and then it would display "codec license" and for example mpeg, avi as the value
10:24:18 AM mrayzenoss: themactech: would it be easier just to stuff everything into zLinks?
10:24:26 AM mrayzenoss: wouldn't have to edit the apges
10:24:31 AM mrayzenoss: s/apges/pages/
10:24:58 AM themactech: but then setting threshold would be complicated no? I would have to parse thru the zlink field to extract actual data
10:25:12 AM mrayzenoss: threshold?
10:25:50 AM themactech: yes, if I set the custom1 field to hold firmware of controller1, and custom2 to hold firmware of controller2, i want to be able to test if both are equal and alert if not
10:26:16 AM themactech: so if a client replaces a controller and it shipped from Promise Inc with older firmware and client does not check it, I will know and warn him
10:26:28 AM themactech: also I do want alerts tied to the warranty expiration
10:26:53 AM themactech: I would really like to make a nice zenpack that integrates warranty status tracking into zenoss
10:26:55 AM mrayzenoss: ahh, I just meant for presenting the data on the status page, not for alerting on it
10:27:02 AM themactech: our clients would appreciate that feature
10:27:21 AM mrayzenoss: I know I've seen people link to their Dell pages by the service tag
10:27:22 AM Jane_Curry: hiya
10:27:23 AM bedwards: themactech, check out ec2ManagerStatus.pt.  It displays the access_id attribute.
10:27:31 AM bedwards: hello Jane
10:27:38 AM themactech: oh, well i can already display data with a custom schema, and have already successfully modified the skin to show it
10:28:05 AM themactech: I just don't know how to set that custom schema from a modeler plugin
10:29:01 AM themactech: as for what russell told me in austin last week, can the text in a <dt></dt> be dynamic with a zenoss variable?
10:29:09 AM themactech: or was that info wrong?
10:29:35 AM Jane_Curry: Does anyone know what the collector parameter "Maximum ping failures" actually does in 2.5.1 / 2.5.2?
10:29:46 AM themactech: I've tried about every combo of syntax i.e. <dt>here/zCustom1</dt>
10:30:03 AM Jane_Curry: Devices definitely still get pinged after they have been down after this number of failed pings
10:30:29 AM Jesper: bedwards: no, I don't think so. It's a Cisco router that get detected just fine and everything. The problem is the WAN connection, it's detected as 100Mbit (Ethernet link speed) and it is in fact just 4Mbit/768Kbit (ADSL). I want to make a "high utilization" template for it, that supports both up- and download. I can do that on one unit, but I can't figure out how to make it as a template for multiple routers/units.
10:31:07 AM themactech: make your template and bind it to the device class
10:31:17 AM Jesper: I'm uncertain if it's a ZenPack I need to make, or if it's a Template, or....
10:31:18 AM themactech: then put all these devices in that class
10:31:29 AM Jesper: ok
10:32:34 AM themactech: that is something that threw me off as well when i was testing, I made a template directly in the subclass I wanted it to apply to, and it ONLY showed in that subclass, yet it would not apply to it until i chose Bind template and bound it to the device class i wanted
10:33:08 AM themactech: that made no sense to me as I figured if I made the template IN the class it should have been bound to it by default but its not the case
10:33:42 AM themactech: so go to /devices/routes/jasper's_kick_ass_routes/ add a template with name of your choise
10:33:44 AM themactech: choice
10:33:59 AM bedwards: we are working on making template definition/binding clearer in the UI for the next release
10:34:00 AM jplouis: themactech: unfortunately you can't modify custom schema values or zProperties from a modeler plugin. bedwards was correct, you will have to subclass Device to add a new type
10:34:09 AM themactech: do all your settings datapoints, graphs, thresholds, etc, when done, bind it to that class
10:34:45 AM themactech: alright thanks, I will look into it, now I can still show those attributes in the status page?
10:35:14 AM bedwards: you have to override the default status page like the AWS zenpack does
10:35:18 AM jplouis: yes, if you create you own version of the status page
10:35:21 AM themactech: ok
10:35:49 AM themactech: now, for the cherry on top, can the text in a <dt></dt> entry contain dynamic zenoss data
10:36:05 AM themactech: or only static text?
10:36:30 AM jplouis: I'm not sure what you are referring to, don't know what <dt> is
10:36:46 AM Brixius: I think you have to goto zProperties/zDeviceTemplates of the device class and add it in there.
10:36:47 AM themactech: when you modify the skin of the status page to show a new field
10:37:05 AM themactech: you have to add a dt table
10:37:18 AM rocket: page templates in general have access to some dynamic data via tales expressions etc
10:37:51 AM themactech: that's what I was told and it works fine for the DATA of the field, however I can't seem to have the HEADER of the field contain such data
10:37:58 AM themactech: (dt)TestFoo(/dt)
10:37:58 AM themactech: (dd)
10:37:59 AM themactech: (div tal:content="here/cTestFoo"/>
10:37:59 AM themactech: (/dd)
10:38:04 AM themactech: this is an example
10:38:34 AM themactech: what I want is to make (dt)TestFoo(/dt) use here/insertzenossvarhere
10:38:46 AM Jesper: themactech: ok, thank you very much. Gotta run now, but I'll have a look at that later.    and bedwards, sounds good about the UI in the next release.
10:39:07 AM themactech: in the (dd)(/dd) section this works fine but I can't seem to do it in the (dt)(/dt)
10:40:36 AM themactech: that would allow me to have custom fields, that I can set the header for, so the layout in the status tab would dynamically change to specifically taylor to a device class
10:41:34 AM themactech: I want to show firmware version for both controllers for my Promise boxes, set customheader1 and customheader2 to "FW CTRL 1" and "FW CTRL 2" and voilà! my status page is customized for my promise boxes
10:42:43 AM jplouis: does <dt tal:content="here/foo"> not work?
10:42:45 AM themactech: for another device class, say my Vbrick streaming devices, I need to show what video codecs are registered on that device, so I set the customheader1 and 2 to what I need and presto! status tab is customized for my vbricks, all of this with only one custom status page
10:42:53 AM rocket: themactech: can you do <dt tal:content="here/foo"> ?
10:42:58 AM rocket: jplouis: you beat me to it
10:43:19 AM themactech: I think I tried that but I give it another go, my zenoss virtualbox is firing up now
10:46:22 AM themactech: OMG it works, you guys rock, customized status pages PER device class are now mine!!! MUHAHAHAHAHA
10:47:05 AM themactech: I had the syntax wrong before, I'm not very well versed in HTML
10:47:09 AM themactech: thanks a bunch
10:47:14 AM jplouis: dt tags are just html tags, nothing special.  You can do the tal:content for any html tag
10:47:16 AM jplouis: NP
10:47:59 AM themactech: this IRC thing is a weekly event right?
10:48:04 AM mrayzenoss: biweekly
10:48:06 AM jplouis: 2 weeks
10:48:08 AM themactech: perfect
10:48:13 AM mrayzenoss: themactech: looking forward to any ZenPacks you want to send in
10:48:30 AM themactech: I've gotten more answers in 5 minutes then in 3 months of posting in the forums
10:49:03 AM bedwards: The dt is not the issue here, Dude. I'm talking about drawing a line in the sand, Dude. Across this line, you DO NOT...
10:49:18 AM themactech: Well, I can't give away the Apple secret sauce but the warranty tracking and the custom field per class is something I will be able to post in the community
10:49:36 AM themactech: if I get it all done right
10:50:52 AM Brixius: themactech: Wouldn't that be AppleSauce... What's the secret... lol
10:51:11 AM Brixius: should say, where's the secret...
10:51:15 AM themactech: I am working on templates for very detailed monitoring of Apple xsans
10:51:40 AM citrus2: its funny that bi weekly can mean twice a week or once every 2 weeks
10:51:45 AM citrus2: english...
10:52:04 AM themactech: yeah, well french is my native tongue so I beat you on complexity right there
10:52:15 AM bedwards: brixius: you should be in product marketing. also, what you said about zDeviceTemplates is correct. The "Bind Templates" and "Reset Bindings" menu items just set that zProperty.
10:52:20 AM themactech: though I never got why you anglos drive on a parkway and park in a driveway
10:52:39 AM bedwards: semiweekly = twice a week
10:53:47 AM themactech: ok, well I guess I have a lot of testing to do, hopefully I can do most of this within 2 weeks so I can be here to bug you guys some more in the next session
10:53:57 AM themactech: when do these end, I assume you're all not here till 11pm
10:54:41 AM bedwards: In six minutes the official Developer chat is done, but people are on here all the time.
10:55:22 AM themactech: alright, well thank you all very much for the info, its much appreciated, I will try out the leads you gave me, have a great day fellas
10:57:48 AM themactech: hey, I just remembered a question I wanted to ask
10:58:23 AM themactech: I have looked up how zenoss sets model name and os name, it does so via the relationship set by the OSproductkey and HWproductkey
10:58:51 AM themactech: that means you have to keep an updated db of os and hw products
10:59:02 AM themactech: could a modeler add entries in there automatically?
10:59:19 AM Jane_Curry: Anyone seen my earlier querstion...
10:59:22 AM Jane_Curry: Does anyone know what the collector parameter "Maximum ping failures" actually does in 2.5.1 / 2.5.2?
11:00:01 AM themactech: so my apple modeler that pulls the apple model name from apple's web site, could I have the modeler check models in the Apple manufacturer, and if it does not find it, add the proper entry
11:00:16 AM themactech: that way my modeler would automatically update the product and os database
11:00:40 AM bedwards: it adds new products/manufacturers by default
11:00:59 AM bedwards: Jane: I have not tested Maximum ping failures
11:01:45 AM themactech: thanks
11:06:56 AM mrayzenoss: Jane_Curry: http://dev.zenoss.org/trac/ticket/5809
11:16:05 AM Jane_Curry: Thanks Matt - v helpful
11:16:46 AM Simon4_: evening all
11:16:59 AM Simon4_: volcanic ash is fail.
11:17:11 AM mrayzenoss: Simon4_: interfere with your vacation?
11:17:22 AM Simon4_: mrayzenoss: I'm supposed to be on a plane to NZ right now
11:17:36 AM mrayzenoss: awwww, that's terrible
11:20:28 AM Simon4_: in other, more zenoss stuff... ssh collectors. Do these have to be a command on the remote server that returns stuff in nagios format? or can you extend a class in a similar way to a ssh modeler where you can run commands and parse the output?
11:20:42 AM Simon4_: I've been trying to find a zenpack that I can copy from, but failing so far
11:22:20 AM Simon4_: basically want it to ssh to the device, run some "show xxxx" commands, parse the output and use those values for collection
11:25:15 AM mrayzenoss: Simon4_: you can definitely do modeling and collection, take a look at the LinuxMonitor or OpenSolaris
11:25:43 AM Simon4_: thanks  off for a look now
11:26:19 AM mrayzenoss: Simon4_: and this: docs/DOC-2381
11:28:35 AM Simon4_: cool... modelling I have down (hpbladechassis uses it), just want to get collection working via ssh also so we're not using 4 different ways of talking to the chassis

Comments (0)