SlideShare a Scribd company logo
1 of 21
ZenPackLib 2.0
Joseph Anderson / Zenoss Solutions Engineering
Who Am I?
• Believes that “temporary fixes” often
become the norm, hence the need for
well-designed solutions
• Believes that good monitoring is a
means to improving the business and
not an end in itself
janderson@zenoss.com © 2016 All Rights Reserved CONFIDENTIAL 2
• IT career spent in availability and
performance monitoring
• Generalist
• Subject Matter Amateur
What is ZenPackLib?
janderson@zenoss.com © 2016 All Rights Reserved CONFIDENTIAL 4
ZenPack SDK
• Reduce barriers to entry
• Reduce legacy upkeep
• Demonstrate best practices
• Encourage focus on problem domain
Why Use ZenPackLib?
Why do I use ZenPackLib?
• In my previous position I wrote and maintained around 40 ZenPacks (most are
community)
• Migrating these to Zenoss 4.x was painful
• Developed ConstructionKit ZP (community) to make this easier
• Doing so made it possible
• ZenPackLib has several advantages over ConstructionKit, and now has most of its
capabilities
janderson@zenoss.com © 2016 All Rights Reserved CONFIDENTIAL 6
Why should you use ZenPackLib?
• You have more important things to do
• You need things done quickly
• You need flexibility
• You hate gaps in your monitoring coverage
• You need your monitoring system to be able to accommodate rapid changes in your
environment
janderson@zenoss.com © 2016 All Rights Reserved CONFIDENTIAL 7
0
100
200
300
400
500
600
PRE-ZPL POST-ZPL
LEVEL OF GOODNESS
How does Zenoss use ZenPackLib
• Now used extensively across most of our ZenPacks
• 1.0
• HP Proliant
• IBM Power
• LinuxMonitor
• vSphere
• HyperV
• BigIpMonitor
• Many others
• 2.0
• Microsoft Windows 2.7.0
• EMC Base
• Migration to ZenPackLib is now occurring in tandem with current development efforts
janderson@zenoss.com © 2016 All Rights Reserved CONFIDENTIAL 8
Migrating vSphere to ZenPackLib
• 30% Code Reduction:
• 8000 lines Python
• 5800 lines XML
• 2200 lines Javascript
• 1200 lines YAML
janderson@zenoss.com © 2016 All Rights Reserved CONFIDENTIAL 9
What’s new in ZenPackLib 2.0?
A LOT!
janderson@zenoss.com © 2016 All Rights Reserved CONFIDENTIAL 11
ZenPackLib 2.0
• Approximately 40 defects resolved
• Approximately 30 features added
• Major themes
• Centralization
• Performance
• Logging
• ZenModel Proxies
• Event Classes, Process Classes
• Inheritance
• Unit Testing
• https://zenpack-sdk.zenoss.com/en/latest/
janderson@zenoss.com © 2016 All Rights Reserved CONFIDENTIAL 12
Centralization
• New capabilities provided
• Performance improvements shared
• Defect fixes inherited
• Reduced downtime by reduction in need for ZenPack releases
• Improved consistency, stability, and coherence between different ZenPacks
janderson@zenoss.com © 2016 All Rights Reserved CONFIDENTIAL 13
Performance
• Optimized YAML load times
• Factors into every daemon startup time
• Summed across all installed ZPL-based ZenPacks
• Worst case average of 8-9s reduced to 1-2s
• Average use case .1-.5s
• Grid display of metrics in 5.x
janderson@zenoss.com © 2016 All Rights Reserved CONFIDENTIAL 14
Capabilities
• Proxy Classes
• Most platform classes available for use as base class
• Event Classes
• Process Classes
janderson@zenoss.com © 2016 All Rights Reserved CONFIDENTIAL 15
Other Changes
• Multiple YAML file support, directory loading
• Logging
• Inheritance Behavior
• Improved detection of and automatic backups for template customizations
• Dramatically expanded scope for unit testing
• Callable from /opt/zenoss/bin
• zenpacklib --help as the zenoss user
janderson@zenoss.com © 2016 All Rights Reserved CONFIDENTIAL 16
How do I get started?
Easily
zenpacklib --create ZenPacks.NAMESPACE.ZENPACKNAME
• Edit ZenPacks/NAMESPACE/ZENPACKNAME/zenpack.yaml
• https://zenpack-sdk.zenoss.com/en/latest/
• Example ZenPackLibDemo:
• https://github.com/zenoss/ZenPacks.zenoss.ZenPackLibDemo
• Plan to update with more examples of common use patterns
janderson@zenoss.com © 2016 All Rights Reserved CONFIDENTIAL 18
How do I migrate from zenpacklib.py (1.0)?
Easily
• Update __init__.py in your ZenPack’s root folder to contain:
• If currently importing any method or class directly from zenpacklib.py, the path and
possibly the use of the class or method will need to be revised
janderson@zenoss.com © 2016 All Rights Reserved CONFIDENTIAL 20
Questions?

More Related Content

What's hot

Lcu14 Lightning Talk- NGINX
Lcu14 Lightning Talk- NGINXLcu14 Lightning Talk- NGINX
Lcu14 Lightning Talk- NGINXLinaro
 
Nagios Conference 2014 - Eric Mislivec - Getting Started With Nagios Core
Nagios Conference 2014 - Eric Mislivec - Getting Started With Nagios CoreNagios Conference 2014 - Eric Mislivec - Getting Started With Nagios Core
Nagios Conference 2014 - Eric Mislivec - Getting Started With Nagios CoreNagios
 
Nagios Conference 2014 - Sam Lansing - Advanced Features of Nagios XI
Nagios Conference 2014 - Sam Lansing - Advanced Features of Nagios XINagios Conference 2014 - Sam Lansing - Advanced Features of Nagios XI
Nagios Conference 2014 - Sam Lansing - Advanced Features of Nagios XINagios
 
Nagios Conference 2014 - Dave Williams - Multi-Tenant Nagios Monitoring
Nagios Conference 2014 - Dave Williams - Multi-Tenant Nagios MonitoringNagios Conference 2014 - Dave Williams - Multi-Tenant Nagios Monitoring
Nagios Conference 2014 - Dave Williams - Multi-Tenant Nagios MonitoringNagios
 
Advanced nginx in mercari - How to handle over 1,200,000 HTTPS Reqs/Min
Advanced nginx in mercari - How to handle over 1,200,000 HTTPS Reqs/MinAdvanced nginx in mercari - How to handle over 1,200,000 HTTPS Reqs/Min
Advanced nginx in mercari - How to handle over 1,200,000 HTTPS Reqs/MinMasahiro Nagano
 
Day 1 General Session RedisConf
Day 1 General Session RedisConfDay 1 General Session RedisConf
Day 1 General Session RedisConfRedis Labs
 
Docker security microservices
Docker security  microservicesDocker security  microservices
Docker security microservicesVishwas Manral
 
Webinar NETGEAR - ReadyRECOVER la soluzione per il backup che permette veloci...
Webinar NETGEAR - ReadyRECOVER la soluzione per il backup che permette veloci...Webinar NETGEAR - ReadyRECOVER la soluzione per il backup che permette veloci...
Webinar NETGEAR - ReadyRECOVER la soluzione per il backup che permette veloci...Netgear Italia
 
Puppet at the centre of everything
Puppet at the centre of everythingPuppet at the centre of everything
Puppet at the centre of everythingServer Density
 
OVHcloud – Enterprise Cloud Databases
OVHcloud – Enterprise Cloud DatabasesOVHcloud – Enterprise Cloud Databases
OVHcloud – Enterprise Cloud DatabasesOVHcloud
 
Nginx internals
Nginx internalsNginx internals
Nginx internalsliqiang xu
 
Puppet at the centre of everything by David Mytton
Puppet at the centre of everything by David MyttonPuppet at the centre of everything by David Mytton
Puppet at the centre of everything by David MyttonNETWAYS
 
Alfresco Security Best Practices 2012
Alfresco Security Best Practices 2012Alfresco Security Best Practices 2012
Alfresco Security Best Practices 2012Toni de la Fuente
 
Alexander Naydenko - Nagios to Zabbix Migration | ZabConf2016
Alexander Naydenko - Nagios to Zabbix Migration | ZabConf2016Alexander Naydenko - Nagios to Zabbix Migration | ZabConf2016
Alexander Naydenko - Nagios to Zabbix Migration | ZabConf2016Zabbix
 
Requirement analysis of vim platform reliability in a three-layer decoupling ...
Requirement analysis of vim platform reliability in a three-layer decoupling ...Requirement analysis of vim platform reliability in a three-layer decoupling ...
Requirement analysis of vim platform reliability in a three-layer decoupling ...OPNFV
 
OVHcloud Hosted Private Cloud Platform Network use cases with VMware NSX
OVHcloud Hosted Private Cloud Platform Network use cases with VMware NSXOVHcloud Hosted Private Cloud Platform Network use cases with VMware NSX
OVHcloud Hosted Private Cloud Platform Network use cases with VMware NSXOVHcloud
 
DevOpsDays Singapore Habitat Ignite
DevOpsDays Singapore Habitat IgniteDevOpsDays Singapore Habitat Ignite
DevOpsDays Singapore Habitat IgniteMatt Ray
 
Making clouds: turning opennebula into a product
Making clouds: turning opennebula into a productMaking clouds: turning opennebula into a product
Making clouds: turning opennebula into a productCarlo Daffara
 
Run OPNFV Danube on ODCC Scorpio Multi-node Server - Open Software on Open Ha...
Run OPNFV Danube on ODCC Scorpio Multi-node Server - Open Software on Open Ha...Run OPNFV Danube on ODCC Scorpio Multi-node Server - Open Software on Open Ha...
Run OPNFV Danube on ODCC Scorpio Multi-node Server - Open Software on Open Ha...OPNFV
 

What's hot (19)

Lcu14 Lightning Talk- NGINX
Lcu14 Lightning Talk- NGINXLcu14 Lightning Talk- NGINX
Lcu14 Lightning Talk- NGINX
 
Nagios Conference 2014 - Eric Mislivec - Getting Started With Nagios Core
Nagios Conference 2014 - Eric Mislivec - Getting Started With Nagios CoreNagios Conference 2014 - Eric Mislivec - Getting Started With Nagios Core
Nagios Conference 2014 - Eric Mislivec - Getting Started With Nagios Core
 
Nagios Conference 2014 - Sam Lansing - Advanced Features of Nagios XI
Nagios Conference 2014 - Sam Lansing - Advanced Features of Nagios XINagios Conference 2014 - Sam Lansing - Advanced Features of Nagios XI
Nagios Conference 2014 - Sam Lansing - Advanced Features of Nagios XI
 
Nagios Conference 2014 - Dave Williams - Multi-Tenant Nagios Monitoring
Nagios Conference 2014 - Dave Williams - Multi-Tenant Nagios MonitoringNagios Conference 2014 - Dave Williams - Multi-Tenant Nagios Monitoring
Nagios Conference 2014 - Dave Williams - Multi-Tenant Nagios Monitoring
 
Advanced nginx in mercari - How to handle over 1,200,000 HTTPS Reqs/Min
Advanced nginx in mercari - How to handle over 1,200,000 HTTPS Reqs/MinAdvanced nginx in mercari - How to handle over 1,200,000 HTTPS Reqs/Min
Advanced nginx in mercari - How to handle over 1,200,000 HTTPS Reqs/Min
 
Day 1 General Session RedisConf
Day 1 General Session RedisConfDay 1 General Session RedisConf
Day 1 General Session RedisConf
 
Docker security microservices
Docker security  microservicesDocker security  microservices
Docker security microservices
 
Webinar NETGEAR - ReadyRECOVER la soluzione per il backup che permette veloci...
Webinar NETGEAR - ReadyRECOVER la soluzione per il backup che permette veloci...Webinar NETGEAR - ReadyRECOVER la soluzione per il backup che permette veloci...
Webinar NETGEAR - ReadyRECOVER la soluzione per il backup che permette veloci...
 
Puppet at the centre of everything
Puppet at the centre of everythingPuppet at the centre of everything
Puppet at the centre of everything
 
OVHcloud – Enterprise Cloud Databases
OVHcloud – Enterprise Cloud DatabasesOVHcloud – Enterprise Cloud Databases
OVHcloud – Enterprise Cloud Databases
 
Nginx internals
Nginx internalsNginx internals
Nginx internals
 
Puppet at the centre of everything by David Mytton
Puppet at the centre of everything by David MyttonPuppet at the centre of everything by David Mytton
Puppet at the centre of everything by David Mytton
 
Alfresco Security Best Practices 2012
Alfresco Security Best Practices 2012Alfresco Security Best Practices 2012
Alfresco Security Best Practices 2012
 
Alexander Naydenko - Nagios to Zabbix Migration | ZabConf2016
Alexander Naydenko - Nagios to Zabbix Migration | ZabConf2016Alexander Naydenko - Nagios to Zabbix Migration | ZabConf2016
Alexander Naydenko - Nagios to Zabbix Migration | ZabConf2016
 
Requirement analysis of vim platform reliability in a three-layer decoupling ...
Requirement analysis of vim platform reliability in a three-layer decoupling ...Requirement analysis of vim platform reliability in a three-layer decoupling ...
Requirement analysis of vim platform reliability in a three-layer decoupling ...
 
OVHcloud Hosted Private Cloud Platform Network use cases with VMware NSX
OVHcloud Hosted Private Cloud Platform Network use cases with VMware NSXOVHcloud Hosted Private Cloud Platform Network use cases with VMware NSX
OVHcloud Hosted Private Cloud Platform Network use cases with VMware NSX
 
DevOpsDays Singapore Habitat Ignite
DevOpsDays Singapore Habitat IgniteDevOpsDays Singapore Habitat Ignite
DevOpsDays Singapore Habitat Ignite
 
Making clouds: turning opennebula into a product
Making clouds: turning opennebula into a productMaking clouds: turning opennebula into a product
Making clouds: turning opennebula into a product
 
Run OPNFV Danube on ODCC Scorpio Multi-node Server - Open Software on Open Ha...
Run OPNFV Danube on ODCC Scorpio Multi-node Server - Open Software on Open Ha...Run OPNFV Danube on ODCC Scorpio Multi-node Server - Open Software on Open Ha...
Run OPNFV Danube on ODCC Scorpio Multi-node Server - Open Software on Open Ha...
 

Similar to Developing ZenPacks the Right Way: Introducing the SDK

7 Habits of Highly Effective Jenkins Users
7 Habits of Highly Effective Jenkins Users7 Habits of Highly Effective Jenkins Users
7 Habits of Highly Effective Jenkins UsersJules Pierre-Louis
 
Best Practices for Deploying Enterprise Applications on UNIX
Best Practices for Deploying Enterprise Applications on UNIXBest Practices for Deploying Enterprise Applications on UNIX
Best Practices for Deploying Enterprise Applications on UNIXNoel McKeown
 
Running productioninstance 1-localcopy
Running productioninstance 1-localcopyRunning productioninstance 1-localcopy
Running productioninstance 1-localcopyCloudBees
 
Midwest PHP - Scaling Magento
Midwest PHP - Scaling MagentoMidwest PHP - Scaling Magento
Midwest PHP - Scaling MagentoMathew Beane
 
Migrate Oracle WebLogic Applications onto a Containerized Cloud Data Center
Migrate Oracle WebLogic Applications onto a Containerized Cloud Data CenterMigrate Oracle WebLogic Applications onto a Containerized Cloud Data Center
Migrate Oracle WebLogic Applications onto a Containerized Cloud Data CenterJingnan Zhou
 
Operating OpenStack on a Budget
Operating OpenStack on a BudgetOperating OpenStack on a Budget
Operating OpenStack on a BudgetSamir Ibradzic
 
Operating OpenStack on a Budget
Operating OpenStack on a BudgetOperating OpenStack on a Budget
Operating OpenStack on a BudgetSusan Wu
 
Taking Splunk to the Next Level - Architecture Breakout Session
Taking Splunk to the Next Level - Architecture Breakout SessionTaking Splunk to the Next Level - Architecture Breakout Session
Taking Splunk to the Next Level - Architecture Breakout SessionSplunk
 
Xen, XenServer, and XAPI: What’s the Difference?-XPUS13 Bulpin,Pavlicek
Xen, XenServer, and XAPI: What’s the Difference?-XPUS13 Bulpin,PavlicekXen, XenServer, and XAPI: What’s the Difference?-XPUS13 Bulpin,Pavlicek
Xen, XenServer, and XAPI: What’s the Difference?-XPUS13 Bulpin,PavlicekThe Linux Foundation
 
MySQL InnoDB Cluster - A complete High Availability solution for MySQL
MySQL InnoDB Cluster - A complete High Availability solution for MySQLMySQL InnoDB Cluster - A complete High Availability solution for MySQL
MySQL InnoDB Cluster - A complete High Availability solution for MySQLOlivier DASINI
 
August Webinar - Water Cooler Talks: A Look into a Developer's Workbench
August Webinar - Water Cooler Talks: A Look into a Developer's WorkbenchAugust Webinar - Water Cooler Talks: A Look into a Developer's Workbench
August Webinar - Water Cooler Talks: A Look into a Developer's WorkbenchHoward Greenberg
 
Accelerate Your Migration to "Application-Centric" Storage-as-a-Service from ...
Accelerate Your Migration to "Application-Centric" Storage-as-a-Service from ...Accelerate Your Migration to "Application-Centric" Storage-as-a-Service from ...
Accelerate Your Migration to "Application-Centric" Storage-as-a-Service from ...VMware
 
Deploying your SaaS stack OnPrem
Deploying your SaaS stack OnPremDeploying your SaaS stack OnPrem
Deploying your SaaS stack OnPremKris Buytaert
 
Jumping from Continuous Integration to Continuous Delivery with Jenkins Enter...
Jumping from Continuous Integration to Continuous Delivery with Jenkins Enter...Jumping from Continuous Integration to Continuous Delivery with Jenkins Enter...
Jumping from Continuous Integration to Continuous Delivery with Jenkins Enter...CloudBees
 
Top10 list planningpostgresdeployment.2014
Top10 list planningpostgresdeployment.2014Top10 list planningpostgresdeployment.2014
Top10 list planningpostgresdeployment.2014EDB
 
create auto scale jboss cluster with openshift
create auto scale jboss cluster with openshiftcreate auto scale jboss cluster with openshift
create auto scale jboss cluster with openshiftYusuf Hadiwinata Sutandar
 

Similar to Developing ZenPacks the Right Way: Introducing the SDK (20)

7 Habits of Highly Effective Jenkins Users
7 Habits of Highly Effective Jenkins Users7 Habits of Highly Effective Jenkins Users
7 Habits of Highly Effective Jenkins Users
 
Best Practices for Deploying Enterprise Applications on UNIX
Best Practices for Deploying Enterprise Applications on UNIXBest Practices for Deploying Enterprise Applications on UNIX
Best Practices for Deploying Enterprise Applications on UNIX
 
Performance stack
Performance stackPerformance stack
Performance stack
 
Running productioninstance 1-localcopy
Running productioninstance 1-localcopyRunning productioninstance 1-localcopy
Running productioninstance 1-localcopy
 
Midwest PHP - Scaling Magento
Midwest PHP - Scaling MagentoMidwest PHP - Scaling Magento
Midwest PHP - Scaling Magento
 
Migrate Oracle WebLogic Applications onto a Containerized Cloud Data Center
Migrate Oracle WebLogic Applications onto a Containerized Cloud Data CenterMigrate Oracle WebLogic Applications onto a Containerized Cloud Data Center
Migrate Oracle WebLogic Applications onto a Containerized Cloud Data Center
 
Ansible.pdf
Ansible.pdfAnsible.pdf
Ansible.pdf
 
Operating OpenStack on a Budget
Operating OpenStack on a BudgetOperating OpenStack on a Budget
Operating OpenStack on a Budget
 
Operating OpenStack on a Budget
Operating OpenStack on a BudgetOperating OpenStack on a Budget
Operating OpenStack on a Budget
 
Oracle Storage a ochrana dat
Oracle Storage a ochrana datOracle Storage a ochrana dat
Oracle Storage a ochrana dat
 
Taking Splunk to the Next Level - Architecture Breakout Session
Taking Splunk to the Next Level - Architecture Breakout SessionTaking Splunk to the Next Level - Architecture Breakout Session
Taking Splunk to the Next Level - Architecture Breakout Session
 
Xen, XenServer, and XAPI: What’s the Difference?-XPUS13 Bulpin,Pavlicek
Xen, XenServer, and XAPI: What’s the Difference?-XPUS13 Bulpin,PavlicekXen, XenServer, and XAPI: What’s the Difference?-XPUS13 Bulpin,Pavlicek
Xen, XenServer, and XAPI: What’s the Difference?-XPUS13 Bulpin,Pavlicek
 
MySQL InnoDB Cluster - A complete High Availability solution for MySQL
MySQL InnoDB Cluster - A complete High Availability solution for MySQLMySQL InnoDB Cluster - A complete High Availability solution for MySQL
MySQL InnoDB Cluster - A complete High Availability solution for MySQL
 
August Webinar - Water Cooler Talks: A Look into a Developer's Workbench
August Webinar - Water Cooler Talks: A Look into a Developer's WorkbenchAugust Webinar - Water Cooler Talks: A Look into a Developer's Workbench
August Webinar - Water Cooler Talks: A Look into a Developer's Workbench
 
Accelerate Your Migration to "Application-Centric" Storage-as-a-Service from ...
Accelerate Your Migration to "Application-Centric" Storage-as-a-Service from ...Accelerate Your Migration to "Application-Centric" Storage-as-a-Service from ...
Accelerate Your Migration to "Application-Centric" Storage-as-a-Service from ...
 
Deploying your SaaS stack OnPrem
Deploying your SaaS stack OnPremDeploying your SaaS stack OnPrem
Deploying your SaaS stack OnPrem
 
Jumping from Continuous Integration to Continuous Delivery with Jenkins Enter...
Jumping from Continuous Integration to Continuous Delivery with Jenkins Enter...Jumping from Continuous Integration to Continuous Delivery with Jenkins Enter...
Jumping from Continuous Integration to Continuous Delivery with Jenkins Enter...
 
Top10 list planningpostgresdeployment.2014
Top10 list planningpostgresdeployment.2014Top10 list planningpostgresdeployment.2014
Top10 list planningpostgresdeployment.2014
 
Deploying PHP apps on the cloud
Deploying PHP apps on the cloudDeploying PHP apps on the cloud
Deploying PHP apps on the cloud
 
create auto scale jboss cluster with openshift
create auto scale jboss cluster with openshiftcreate auto scale jboss cluster with openshift
create auto scale jboss cluster with openshift
 

More from Zenoss

DevOps Introduction - AWS Boston Meetup - AWS Presentation
DevOps Introduction - AWS Boston Meetup - AWS PresentationDevOps Introduction - AWS Boston Meetup - AWS Presentation
DevOps Introduction - AWS Boston Meetup - AWS PresentationZenoss
 
Integrating Operational Response Automation Into Your Code - AWS Boston Meetu...
Integrating Operational Response Automation Into Your Code - AWS Boston Meetu...Integrating Operational Response Automation Into Your Code - AWS Boston Meetu...
Integrating Operational Response Automation Into Your Code - AWS Boston Meetu...Zenoss
 
Transforming IT Ops - AWS Boston Meetup - Zenoss Presentation
Transforming IT Ops - AWS Boston Meetup - Zenoss PresentationTransforming IT Ops - AWS Boston Meetup - Zenoss Presentation
Transforming IT Ops - AWS Boston Meetup - Zenoss PresentationZenoss
 
Zenoss as Core Element for Video QOS
Zenoss as Core Element for Video QOS Zenoss as Core Element for Video QOS
Zenoss as Core Element for Video QOS Zenoss
 
Zenoss as a Service: How to Get There
Zenoss as a Service: How to Get ThereZenoss as a Service: How to Get There
Zenoss as a Service: How to Get ThereZenoss
 
Why Zenoss is Right for You
Why Zenoss is Right for YouWhy Zenoss is Right for You
Why Zenoss is Right for YouZenoss
 
The Newgistics Digital Transformation Journey
The Newgistics Digital Transformation JourneyThe Newgistics Digital Transformation Journey
The Newgistics Digital Transformation JourneyZenoss
 
TransUnion's Impact of Impact
TransUnion's Impact of ImpactTransUnion's Impact of Impact
TransUnion's Impact of ImpactZenoss
 
Skeptics in the Church of Data: Getting Evangelical
Skeptics in the Church of Data: Getting EvangelicalSkeptics in the Church of Data: Getting Evangelical
Skeptics in the Church of Data: Getting EvangelicalZenoss
 
Product Overview: An Analytics Primer
Product Overview: An Analytics PrimerProduct Overview: An Analytics Primer
Product Overview: An Analytics PrimerZenoss
 
Practical DMD Scripting
Practical DMD Scripting Practical DMD Scripting
Practical DMD Scripting Zenoss
 
Leveraging the JSON API as a Self-Service Tool
Leveraging the JSON API as a Self-Service ToolLeveraging the JSON API as a Self-Service Tool
Leveraging the JSON API as a Self-Service ToolZenoss
 
Lack of Automation Ruins Lives
Lack of Automation Ruins LivesLack of Automation Ruins Lives
Lack of Automation Ruins LivesZenoss
 
IT4IT: Realize a Digital Strategy with ServiceNow
IT4IT: Realize a Digital Strategy with ServiceNowIT4IT: Realize a Digital Strategy with ServiceNow
IT4IT: Realize a Digital Strategy with ServiceNowZenoss
 
Growing Monitoring to Keep Up with Technology and Business Demands
Growing Monitoring to Keep Up with Technology and Business DemandsGrowing Monitoring to Keep Up with Technology and Business Demands
Growing Monitoring to Keep Up with Technology and Business DemandsZenoss
 
Grainger: Our Rookie Year with Zenoss
Grainger: Our Rookie Year with ZenossGrainger: Our Rookie Year with Zenoss
Grainger: Our Rookie Year with ZenossZenoss
 
Empowering Marketing Solutions Teams
Empowering Marketing Solutions TeamsEmpowering Marketing Solutions Teams
Empowering Marketing Solutions TeamsZenoss
 
Empathy in Monitoring
Empathy in MonitoringEmpathy in Monitoring
Empathy in MonitoringZenoss
 
Demystifying Network Function Virtualization (NFV) Service Assurance
Demystifying Network Function Virtualization (NFV) Service AssuranceDemystifying Network Function Virtualization (NFV) Service Assurance
Demystifying Network Function Virtualization (NFV) Service AssuranceZenoss
 
What is Zenoss as a Service?
What is Zenoss as a Service? What is Zenoss as a Service?
What is Zenoss as a Service? Zenoss
 

More from Zenoss (20)

DevOps Introduction - AWS Boston Meetup - AWS Presentation
DevOps Introduction - AWS Boston Meetup - AWS PresentationDevOps Introduction - AWS Boston Meetup - AWS Presentation
DevOps Introduction - AWS Boston Meetup - AWS Presentation
 
Integrating Operational Response Automation Into Your Code - AWS Boston Meetu...
Integrating Operational Response Automation Into Your Code - AWS Boston Meetu...Integrating Operational Response Automation Into Your Code - AWS Boston Meetu...
Integrating Operational Response Automation Into Your Code - AWS Boston Meetu...
 
Transforming IT Ops - AWS Boston Meetup - Zenoss Presentation
Transforming IT Ops - AWS Boston Meetup - Zenoss PresentationTransforming IT Ops - AWS Boston Meetup - Zenoss Presentation
Transforming IT Ops - AWS Boston Meetup - Zenoss Presentation
 
Zenoss as Core Element for Video QOS
Zenoss as Core Element for Video QOS Zenoss as Core Element for Video QOS
Zenoss as Core Element for Video QOS
 
Zenoss as a Service: How to Get There
Zenoss as a Service: How to Get ThereZenoss as a Service: How to Get There
Zenoss as a Service: How to Get There
 
Why Zenoss is Right for You
Why Zenoss is Right for YouWhy Zenoss is Right for You
Why Zenoss is Right for You
 
The Newgistics Digital Transformation Journey
The Newgistics Digital Transformation JourneyThe Newgistics Digital Transformation Journey
The Newgistics Digital Transformation Journey
 
TransUnion's Impact of Impact
TransUnion's Impact of ImpactTransUnion's Impact of Impact
TransUnion's Impact of Impact
 
Skeptics in the Church of Data: Getting Evangelical
Skeptics in the Church of Data: Getting EvangelicalSkeptics in the Church of Data: Getting Evangelical
Skeptics in the Church of Data: Getting Evangelical
 
Product Overview: An Analytics Primer
Product Overview: An Analytics PrimerProduct Overview: An Analytics Primer
Product Overview: An Analytics Primer
 
Practical DMD Scripting
Practical DMD Scripting Practical DMD Scripting
Practical DMD Scripting
 
Leveraging the JSON API as a Self-Service Tool
Leveraging the JSON API as a Self-Service ToolLeveraging the JSON API as a Self-Service Tool
Leveraging the JSON API as a Self-Service Tool
 
Lack of Automation Ruins Lives
Lack of Automation Ruins LivesLack of Automation Ruins Lives
Lack of Automation Ruins Lives
 
IT4IT: Realize a Digital Strategy with ServiceNow
IT4IT: Realize a Digital Strategy with ServiceNowIT4IT: Realize a Digital Strategy with ServiceNow
IT4IT: Realize a Digital Strategy with ServiceNow
 
Growing Monitoring to Keep Up with Technology and Business Demands
Growing Monitoring to Keep Up with Technology and Business DemandsGrowing Monitoring to Keep Up with Technology and Business Demands
Growing Monitoring to Keep Up with Technology and Business Demands
 
Grainger: Our Rookie Year with Zenoss
Grainger: Our Rookie Year with ZenossGrainger: Our Rookie Year with Zenoss
Grainger: Our Rookie Year with Zenoss
 
Empowering Marketing Solutions Teams
Empowering Marketing Solutions TeamsEmpowering Marketing Solutions Teams
Empowering Marketing Solutions Teams
 
Empathy in Monitoring
Empathy in MonitoringEmpathy in Monitoring
Empathy in Monitoring
 
Demystifying Network Function Virtualization (NFV) Service Assurance
Demystifying Network Function Virtualization (NFV) Service AssuranceDemystifying Network Function Virtualization (NFV) Service Assurance
Demystifying Network Function Virtualization (NFV) Service Assurance
 
What is Zenoss as a Service?
What is Zenoss as a Service? What is Zenoss as a Service?
What is Zenoss as a Service?
 

Recently uploaded

DevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsDevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsSergiu Bodiu
 
Streamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project SetupStreamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project SetupFlorian Wilhelm
 
"Federated learning: out of reach no matter how close",Oleksandr Lapshyn
"Federated learning: out of reach no matter how close",Oleksandr Lapshyn"Federated learning: out of reach no matter how close",Oleksandr Lapshyn
"Federated learning: out of reach no matter how close",Oleksandr LapshynFwdays
 
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek SchlawackFwdays
 
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 3652toLead Limited
 
Connect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationConnect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationSlibray Presentation
 
WordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your BrandWordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your Brandgvaughan
 
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)Bun (KitWorks Team Study 노별마루 발표 2024.4.22)
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)Wonjun Hwang
 
AI as an Interface for Commercial Buildings
AI as an Interface for Commercial BuildingsAI as an Interface for Commercial Buildings
AI as an Interface for Commercial BuildingsMemoori
 
Unraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdfUnraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdfAlex Barbosa Coqueiro
 
Powerpoint exploring the locations used in television show Time Clash
Powerpoint exploring the locations used in television show Time ClashPowerpoint exploring the locations used in television show Time Clash
Powerpoint exploring the locations used in television show Time Clashcharlottematthew16
 
Developer Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLDeveloper Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLScyllaDB
 
Install Stable Diffusion in windows machine
Install Stable Diffusion in windows machineInstall Stable Diffusion in windows machine
Install Stable Diffusion in windows machinePadma Pradeep
 
Dev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebDev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebUiPathCommunity
 
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks..."LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...Fwdays
 
My INSURER PTE LTD - Insurtech Innovation Award 2024
My INSURER PTE LTD - Insurtech Innovation Award 2024My INSURER PTE LTD - Insurtech Innovation Award 2024
My INSURER PTE LTD - Insurtech Innovation Award 2024The Digital Insurer
 
costume and set research powerpoint presentation
costume and set research powerpoint presentationcostume and set research powerpoint presentation
costume and set research powerpoint presentationphoebematthew05
 
Artificial intelligence in cctv survelliance.pptx
Artificial intelligence in cctv survelliance.pptxArtificial intelligence in cctv survelliance.pptx
Artificial intelligence in cctv survelliance.pptxhariprasad279825
 
"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii SoldatenkoFwdays
 
Pigging Solutions in Pet Food Manufacturing
Pigging Solutions in Pet Food ManufacturingPigging Solutions in Pet Food Manufacturing
Pigging Solutions in Pet Food ManufacturingPigging Solutions
 

Recently uploaded (20)

DevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsDevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platforms
 
Streamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project SetupStreamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project Setup
 
"Federated learning: out of reach no matter how close",Oleksandr Lapshyn
"Federated learning: out of reach no matter how close",Oleksandr Lapshyn"Federated learning: out of reach no matter how close",Oleksandr Lapshyn
"Federated learning: out of reach no matter how close",Oleksandr Lapshyn
 
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
 
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
 
Connect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationConnect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck Presentation
 
WordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your BrandWordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your Brand
 
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)Bun (KitWorks Team Study 노별마루 발표 2024.4.22)
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)
 
AI as an Interface for Commercial Buildings
AI as an Interface for Commercial BuildingsAI as an Interface for Commercial Buildings
AI as an Interface for Commercial Buildings
 
Unraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdfUnraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdf
 
Powerpoint exploring the locations used in television show Time Clash
Powerpoint exploring the locations used in television show Time ClashPowerpoint exploring the locations used in television show Time Clash
Powerpoint exploring the locations used in television show Time Clash
 
Developer Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLDeveloper Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQL
 
Install Stable Diffusion in windows machine
Install Stable Diffusion in windows machineInstall Stable Diffusion in windows machine
Install Stable Diffusion in windows machine
 
Dev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebDev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio Web
 
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks..."LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
 
My INSURER PTE LTD - Insurtech Innovation Award 2024
My INSURER PTE LTD - Insurtech Innovation Award 2024My INSURER PTE LTD - Insurtech Innovation Award 2024
My INSURER PTE LTD - Insurtech Innovation Award 2024
 
costume and set research powerpoint presentation
costume and set research powerpoint presentationcostume and set research powerpoint presentation
costume and set research powerpoint presentation
 
Artificial intelligence in cctv survelliance.pptx
Artificial intelligence in cctv survelliance.pptxArtificial intelligence in cctv survelliance.pptx
Artificial intelligence in cctv survelliance.pptx
 
"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko
 
Pigging Solutions in Pet Food Manufacturing
Pigging Solutions in Pet Food ManufacturingPigging Solutions in Pet Food Manufacturing
Pigging Solutions in Pet Food Manufacturing
 

Developing ZenPacks the Right Way: Introducing the SDK

  • 1. ZenPackLib 2.0 Joseph Anderson / Zenoss Solutions Engineering
  • 2. Who Am I? • Believes that “temporary fixes” often become the norm, hence the need for well-designed solutions • Believes that good monitoring is a means to improving the business and not an end in itself janderson@zenoss.com © 2016 All Rights Reserved CONFIDENTIAL 2 • IT career spent in availability and performance monitoring • Generalist • Subject Matter Amateur
  • 4. janderson@zenoss.com © 2016 All Rights Reserved CONFIDENTIAL 4 ZenPack SDK • Reduce barriers to entry • Reduce legacy upkeep • Demonstrate best practices • Encourage focus on problem domain
  • 6. Why do I use ZenPackLib? • In my previous position I wrote and maintained around 40 ZenPacks (most are community) • Migrating these to Zenoss 4.x was painful • Developed ConstructionKit ZP (community) to make this easier • Doing so made it possible • ZenPackLib has several advantages over ConstructionKit, and now has most of its capabilities janderson@zenoss.com © 2016 All Rights Reserved CONFIDENTIAL 6
  • 7. Why should you use ZenPackLib? • You have more important things to do • You need things done quickly • You need flexibility • You hate gaps in your monitoring coverage • You need your monitoring system to be able to accommodate rapid changes in your environment janderson@zenoss.com © 2016 All Rights Reserved CONFIDENTIAL 7 0 100 200 300 400 500 600 PRE-ZPL POST-ZPL LEVEL OF GOODNESS
  • 8. How does Zenoss use ZenPackLib • Now used extensively across most of our ZenPacks • 1.0 • HP Proliant • IBM Power • LinuxMonitor • vSphere • HyperV • BigIpMonitor • Many others • 2.0 • Microsoft Windows 2.7.0 • EMC Base • Migration to ZenPackLib is now occurring in tandem with current development efforts janderson@zenoss.com © 2016 All Rights Reserved CONFIDENTIAL 8
  • 9. Migrating vSphere to ZenPackLib • 30% Code Reduction: • 8000 lines Python • 5800 lines XML • 2200 lines Javascript • 1200 lines YAML janderson@zenoss.com © 2016 All Rights Reserved CONFIDENTIAL 9
  • 10. What’s new in ZenPackLib 2.0?
  • 11. A LOT! janderson@zenoss.com © 2016 All Rights Reserved CONFIDENTIAL 11
  • 12. ZenPackLib 2.0 • Approximately 40 defects resolved • Approximately 30 features added • Major themes • Centralization • Performance • Logging • ZenModel Proxies • Event Classes, Process Classes • Inheritance • Unit Testing • https://zenpack-sdk.zenoss.com/en/latest/ janderson@zenoss.com © 2016 All Rights Reserved CONFIDENTIAL 12
  • 13. Centralization • New capabilities provided • Performance improvements shared • Defect fixes inherited • Reduced downtime by reduction in need for ZenPack releases • Improved consistency, stability, and coherence between different ZenPacks janderson@zenoss.com © 2016 All Rights Reserved CONFIDENTIAL 13
  • 14. Performance • Optimized YAML load times • Factors into every daemon startup time • Summed across all installed ZPL-based ZenPacks • Worst case average of 8-9s reduced to 1-2s • Average use case .1-.5s • Grid display of metrics in 5.x janderson@zenoss.com © 2016 All Rights Reserved CONFIDENTIAL 14
  • 15. Capabilities • Proxy Classes • Most platform classes available for use as base class • Event Classes • Process Classes janderson@zenoss.com © 2016 All Rights Reserved CONFIDENTIAL 15
  • 16. Other Changes • Multiple YAML file support, directory loading • Logging • Inheritance Behavior • Improved detection of and automatic backups for template customizations • Dramatically expanded scope for unit testing • Callable from /opt/zenoss/bin • zenpacklib --help as the zenoss user janderson@zenoss.com © 2016 All Rights Reserved CONFIDENTIAL 16
  • 17. How do I get started?
  • 18. Easily zenpacklib --create ZenPacks.NAMESPACE.ZENPACKNAME • Edit ZenPacks/NAMESPACE/ZENPACKNAME/zenpack.yaml • https://zenpack-sdk.zenoss.com/en/latest/ • Example ZenPackLibDemo: • https://github.com/zenoss/ZenPacks.zenoss.ZenPackLibDemo • Plan to update with more examples of common use patterns janderson@zenoss.com © 2016 All Rights Reserved CONFIDENTIAL 18
  • 19. How do I migrate from zenpacklib.py (1.0)?
  • 20. Easily • Update __init__.py in your ZenPack’s root folder to contain: • If currently importing any method or class directly from zenpacklib.py, the path and possibly the use of the class or method will need to be revised janderson@zenoss.com © 2016 All Rights Reserved CONFIDENTIAL 20

Editor's Notes

  1. - Who Am I? - bulk of career experience in availability and performance monitoring - spent about 10 years in support and systems administration before becoming a developer - understand need for immediate solutions while knowing that these solutions live longer than intended (hence need for good design) - monitoring expertise requires generalist approach with multiple skillsets and need for flexibility - need to rabidly become subject matter amateurs and change topics rapidly - need to wrangle with monitoring targets more than wrangle with monitoring platform
  2. - What is ZPL? - part of ZenPack SDK (only part for now) - Goals: - reduce barrier to entry for new developers - reduce development costs for existing developers - reduce duplication of effort - storehouse of best practices and techniques - allow users and developers to focus on their problems, not Zenoss’ problems - Abstract development pattern - First design model (entity-relation diagram) - define classes/class_relationships in YAML - decide what to collect, how, and outline event conditions
  3. - personal experience w/upkeep nearly 40 ZPs - "devops" type role where development time was available only when everything else was OK - had to overhaul all of them to make transition from 3.x to 4.x platform - introduction of Zuul (routers, adapters, facades, interfaces, infos, etc) - first effort took 6 months to a year - after updating around 5 of these this became very repetitive - also seemed to reqire "a lot of code" to acheive modest results. - wrote ConstructionKit to collect known best practices and solutions and to streamline my work - After becoming familiar with ZPL, I realized that they had common goals with different approaches. - YAML is a superior method for generating specifications - cleaner and easier to read - abstraction should broaden ZP support across platform versions - ZPL built with a deeper expertise and understanding of platform than I had at the time when developing ConstructionKit
  4. - Reduce need for a masters in Zope, with a minor in Zuul, Javascript, and TALES - You are rarely appreciated for the issues you prevented - You can be sure your gaps will be highlighted, especially if doing so covers someone else’s oversight. Awareness of the need for monitoring usually follows production deployment, meaning you’re behind at the outset. Major changes occur within your organization with inadequate awareness or consideration of consequences.
  5. - How do we use ZPL? - Current ZPL 2 - Microsoft Windows 2.7.0 - EMCXtremeIO - Migrating from ZPL 1.x - HP - IBM Power - Linux - vSphere - AIX - HPUX - Current "legacy" ZPs will be migrated to ZPL as part of ongoing development - approximately 70-75% reduction in code.
  6. - How do we use ZPL? - Current ZPL 2 - Microsoft Windows 2.7.0 - EMCXtremeIO - Migrating from ZPL 1.x - HP - IBM Power - Linux - vSphere - AIX - HPUX - Current "legacy" ZPs will be migrated to ZPL as part of ongoing development
  7. - What's new in ZPL 2.0? - Approximately 40 (documented) bug fixes - Approximately 30 features - Major Features - Centralization - should reduce nubmer of hotfix releases (since many simply updated the zenpacklib.py) - increase predictability and consistency of capabilities and presentation between ZenPacks - future improvements leveraged across dependent zenpacks without need for per-zenpack updates - reduce development time for new features and new ZPs - simplify zenpack creation - can call zenpacklib from /opt/zenoss/bin - ZPL has stabilized and matured to the point that advantages of centralization outweigh disadvantages - bug fixes inherited by dependencies - performance improvements also shared - built-in capabilities reduce need for dependent customization and legacy upkeep - Performance - optimized YAML load times - one drawback of dynamically generated classes (zpl) is increased daemon startup times due to interpretation overhead - startup time = (normal startup) + sum (per ZP YAML load) - reduce daemon (zenbinary) startup time/cost - high complexity cases reduced from up to 9 seconds (per zenpack) to 1-2s - typical case of simple to medium complexity .1-.5s - grid display of metrics in 5.x - Logging - Verbosity configurable per-ZenPack - Class overrides can use self.LOG - New object types - Proxy classes - Base ZenModel classes now available for use - includes properties, relations, and methods - Event Classes - Process Classes - Inheritance improvements - Improved predictability/intuitive behavior of property/relation inheritance - Unit testing - drastically expanded scope - approximately 70 tests at present - improve reliability and predictability for dependent ZPs
  8. - Centralization - ZPL has stabilized and matured to the point that advantages of centralization outweigh disadvantages - bug fixes inherited by dependencies - performance improvements also shared - built-in capabilities reduce need for dependent customization and legacy upkeep - should reduce nubmer of hotfix releases (since many simply updated the zenpacklib.py) - increase predictability and consistency of capabilities and presentation between ZenPacks - future improvements leveraged across dependent zenpacks without need for per-zenpack updates - reduce development time for new features and new ZPs - simplify zenpack creation - can call zenpacklib from /opt/zenoss/bin - Performance - optimized YAML load times - one drawback of dynamically generated classes (zpl) is increased daemon startup times due to interpretation overhead - startup time = (normal startup) + sum (per ZP YAML load) - reduce daemon (zenbinary) startup time/cost - high complexity cases reduced from up to 9 seconds (per zenpack) to 1-2s - typical case of simple to medium complexity .1-.5s - grid display of metrics in 5.x - Logging - Verbosity configurable per-ZenPack - Class overrides can use self.LOG - New object types - Proxy classes - Base ZenModel classes now available for use - includes properties, relations, and methods - Event Classes - Process Classes - Inheritance improvements - Improved predictability/intuitive behavior of property/relation inheritance - Unit testing - drastically expanded scope - approximately 70 tests at present - improve reliability and predictability for dependent ZPs
  9. - Centralization - ZPL has stabilized and matured to the point that advantages of centralization outweigh disadvantages - bug fixes inherited by dependencies - performance improvements also shared - built-in capabilities reduce need for dependent customization and legacy upkeep - should reduce nubmer of hotfix releases (since many simply updated the zenpacklib.py) - increase predictability and consistency of capabilities and presentation between ZenPacks - future improvements leveraged across dependent zenpacks without need for per-zenpack updates - reduce development time for new features and new ZPs - simplify zenpack creation - can call zenpacklib from /opt/zenoss/bin - Performance - optimized YAML load times - one drawback of dynamically generated classes (zpl) is increased daemon startup times due to interpretation overhead - startup time = (normal startup) + sum (per ZP YAML load) - reduce daemon (zenbinary) startup time/cost - high complexity cases reduced from up to 9 seconds (per zenpack) to 1-2s - typical case of simple to medium complexity .1-.5s - grid display of metrics in 5.x - Logging - Verbosity configurable per-ZenPack - Class overrides can use self.LOG - New object types - Proxy classes - Base ZenModel classes now available for use - includes properties, relations, and methods - Event Classes - Process Classes - Inheritance improvements - Improved predictability/intuitive behavior of property/relation inheritance - Unit testing - drastically expanded scope - approximately 70 tests at present - improve reliability and predictability for dependent ZPs
  10. - Centralization - ZPL has stabilized and matured to the point that advantages of centralization outweigh disadvantages - bug fixes inherited by dependencies - performance improvements also shared - built-in capabilities reduce need for dependent customization and legacy upkeep - should reduce nubmer of hotfix releases (since many simply updated the zenpacklib.py) - increase predictability and consistency of capabilities and presentation between ZenPacks - future improvements leveraged across dependent zenpacks without need for per-zenpack updates - reduce development time for new features and new ZPs - simplify zenpack creation - can call zenpacklib from /opt/zenoss/bin - Performance - optimized YAML load times - one drawback of dynamically generated classes (zpl) is increased daemon startup times due to interpretation overhead - startup time = (normal startup) + sum (per ZP YAML load) - reduce daemon (zenbinary) startup time/cost - high complexity cases reduced from up to 9 seconds (per zenpack) to 1-2s - typical case of simple to medium complexity .1-.5s - grid display of metrics in 5.x - Logging - Verbosity configurable per-ZenPack - Class overrides can use self.LOG - New object types - Proxy classes - Base ZenModel classes now available for use - includes properties, relations, and methods - Event Classes - Process Classes - Inheritance improvements - Improved predictability/intuitive behavior of property/relation inheritance - Unit testing - drastically expanded scope - approximately 70 tests at present - improve reliability and predictability for dependent ZPs
  11. - Logging - Verbosity configurable per-ZenPack - Class overrides can use self.LOG - Inheritance improvements - Improved predictability/intuitive behavior of property/relation inheritance - Unit testing - drastically expanded scope - approximately 70 tests at present - improve reliability and predictability for dependent ZPs Zenpacklib arguments: Lint Optimize Diagram Paths Dump-templates Dump-event-classes Dump-process-classes