New to Foglight scripting and new to Groovy.
Been a Foglight admin for some time now and coder for much longer.
INn the script console I've been putting togethor a little something to iterate over all the current alarms. It's WIP and for now just breaks out when it finds a matching alarm then displays some details.
def alarmID String alarmMessage String alarmRule String alarmSource boolean foundAlarm=false def alarmService = server.get("AlarmService") def alarmList = alarmService.getCurrentAlarms() for (alarm in alarmList) { alarmMessage=alarm.getMessage() if(alarm && alarmMessage && !alarmMessage.isEmpty()) { alarmID=alarm.getID() alarmRule=alarm.getRuleName() alarmSource=alarm.getSourceName() if(alarmRule.contains('Database_Error_Log')) { if(alarmMessage.contains('Error: 9414, Severity: 20, State: 1')) { foundAlarm=true break } } } } if(foundAlarm) { "Match found\nID: $alarmID Rule: $alarmRule Source: $alarmSource Message: $alarmMessage" } else { "No match found" }
Now, if I comment out either of the nested ifs that use contains it all works just fine. But if both are uncommented we get an error and stack thus
com.quest.nitro.service.sl.interfaces.scripting.ScriptingException: com.quest.nitro.service.sl.interfaces.scripting.ScriptAbortException: java.lang.NullPointerException: Cannot invoke method contains() on null object ----script start------ def alarmService = server.get("AlarmService") def alarmList = alarmService.getCurrentAlarms() for (alarm in alarmList) { alarmMessage=alarm.getMessage() if(alarm && alarmMessage && !alarmMessage.isEmpty()) { alarmID=alarm.getID() alarmRule=alarm.getRuleName() alarmSource=alarm.getSourceName() if(alarmRule.contains('Database_Error_Log')) { if(alarmMessage.contains('Error: 9414, Severity: 20, State: 1')) { foundAlarm=true break } } } } if(foundAlarm) { "Match found\nID: $alarmID Rule: $alarmRule Source: $alarmSource Message: $alarmMessage" } else { "No match found" ---- script end ------ com.quest.nitro.service.scripting.ScriptingService.invoke(ScriptingService.java:647) com.quest.nitro.service.sl.impl.scripting.ScriptingBean.invoke(ScriptingBean.java:177) sun.reflect.GeneratedMethodAccessor1539.invoke(Unknown Source) sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) java.lang.reflect.Method.invoke(Method.java:498) org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:333) org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:190) org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:157) com.quest.nitro.service.sl.aop.AuditingInterceptor.invoke(AuditingInterceptor.java:95) org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:179) org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:213) com.sun.proxy.$Proxy71.invoke(Unknown Source) sun.reflect.GeneratedMethodAccessor1539.invoke(Unknown Source) sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) java.lang.reflect.Method.invoke(Method.java:498) org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:333) org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:207) com.sun.proxy.$Proxy71.invoke(Unknown Source) sun.reflect.GeneratedMethodAccessor39154.invoke(Unknown Source) sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) java.lang.reflect.Method.invoke(Method.java:498) org.codehaus.groovy.reflection.CachedMethod.invoke(CachedMethod.java:93) groovy.lang.MetaMethod.doMethodInvoke(MetaMethod.java:325) groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:1213) groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:1022) org.codehaus.groovy.runtime.InvokerHelper.invokePojoMethod(InvokerHelper.java:913) org.codehaus.groovy.runtime.InvokerHelper.invokeMethod(InvokerHelper.java:904) com.quest.nitro.service.scripting.FoglightServiceInterface.invokeMethod(FoglightServiceInterface.java:100) org.codehaus.groovy.runtime.callsite.PogoInterceptableSite.call(PogoInterceptableSite.java:48) org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:125) system._core_commons.scripts.runScript.run(runScript:42) com.quest.nitro.service.scripting.groovy.GroovyScript.exec(GroovyScript.java:153) com.quest.nitro.service.scripting.Script.runInternal(Script.java:321) com.quest.nitro.service.scripting.Script.run(Script.java:266) com.quest.nitro.service.scripting.ScriptingService.invoke(ScriptingService.java:635) sun.reflect.GeneratedMethodAccessor443.invoke(Unknown Source) sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) java.lang.reflect.Method.invoke(Method.java:498) sun.reflect.misc.Trampoline.invoke(MethodUtil.java:72) sun.reflect.GeneratedMethodAccessor265.invoke(Unknown Source) sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) java.lang.reflect.Method.invoke(Method.java:498) sun.reflect.misc.MethodUtil.invoke(MethodUtil.java:276) com.sun.jmx.mbeanserver.StandardMBeanIntrospector.invokeM2(StandardMBeanIntrospector.java:112) com.sun.jmx.mbeanserver.StandardMBeanIntrospector.invokeM2(StandardMBeanIntrospector.java:46) com.sun.jmx.mbeanserver.MBeanIntrospector.invokeM(MBeanIntrospector.java:237) com.sun.jmx.mbeanserver.PerInterface.invoke(PerInterface.java:138) com.sun.jmx.mbeanserver.MBeanSupport.invoke(MBeanSupport.java:252) com.sun.jmx.interceptor.DefaultMBeanServerInterceptor.invoke(DefaultMBeanServerInterceptor.java:819) com.sun.jmx.mbeanserver.JmxMBeanServer.invoke(JmxMBeanServer.java:801) com.quest.nitro.service.mbean.ForgeMBeanServerSupport.invoke(ForgeMBeanServerSupport.java:144) sun.reflect.GeneratedMethodAccessor266.invoke(Unknown Source) sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) java.lang.reflect.Method.invoke(Method.java:498) com.quest.nitro.service.mbean.ForgeMBeanServerFactory$1.invoke(ForgeMBeanServerFactory.java:68) com.sun.proxy.$Proxy15.invoke(Unknown Source) javax.management.MBeanServerInvocationHandler.invoke(MBeanServerInvocationHandler.java:298) com.sun.proxy.$Proxy265.invoke(Unknown Source) com.quest.nitro.webconsole.services.ScriptServiceImpl.eval(ScriptServiceImpl.java:89) sun.reflect.GeneratedMethodAccessor441.invoke(Unknown Source) sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) java.lang.reflect.Method.invoke(Method.java:498) com.quest.wcf.services.Registry$LazyInvocationHandler.invoke(Registry.java:133) com.sun.proxy.$Proxy282.eval(Unknown Source) com.quest.wcf.core.module.function.FunctionManager.evaluateScript(FunctionManager.java:582) com.quest.wcf.core.module.function.FunctionManager.evaluateScriptFunction(FunctionManager.java:401) com.quest.wcf.core.module.function.FunctionManager.evaluate(FunctionManager.java:273) com.quest.wcf.core.module.function.FunctionManager.getResult(FunctionManager.java:189) com.quest.wcf.core.module.function.AsyncFunctionProgressTracker.execute(AsyncFunctionProgressTracker.java:64) com.quest.wcf.core.module.function.BaseAsyncProgressTracker.run(BaseAsyncProgressTracker.java:185) com.quest.nitro.service.taskmanager.RunnableTaskImpl.run(RunnableTaskImpl.java:71) com.quest.nitro.service.taskmanager.TaskStatusImpl.run(TaskStatusImpl.java:181) com.quest.nitro.service.taskmanager.TaskExecutor.run(TaskExecutor.java:104) java.lang.Thread.run(Thread.java:750) Caused by: com.quest.nitro.service.sl.interfaces.scripting.ScriptAbortException: java.lang.NullPointerException: Cannot invoke method contains() on null object ----script start------ def alarmService = server.get("AlarmService") def alarmList = alarmService.getCurrentAlarms() for (alarm in alarmList) { alarmMessage=alarm.getMessage() if(alarm && alarmMessage && !alarmMessage.isEmpty()) { alarmID=alarm.getID() alarmRule=alarm.getRuleName() alarmSource=alarm.getSourceName() if(alarmRule.contains('Database_Error_Log')) { if(alarmMessage.contains('Error: 9414, Severity: 20, State: 1')) { foundAlarm=true break } } } } if(foundAlarm) { "Match found\nID: $alarmID Rule: $alarmRule Source: $alarmSource Message: $alarmMessage" } else { "No match found" ---- script end ------ com.quest.nitro.service.scripting.Script.runInternal(Script.java:345) com.quest.nitro.service.scripting.Script.run(Script.java:266) com.quest.nitro.service.scripting.ScriptingService.invoke(ScriptingService.java:635) com.quest.nitro.service.sl.impl.scripting.ScriptingBean.invoke(ScriptingBean.java:177) sun.reflect.GeneratedMethodAccessor1539.invoke(Unknown Source) sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) java.lang.reflect.Method.invoke(Method.java:498) org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:333) org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:190) org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:157) com.quest.nitro.service.sl.aop.AuditingInterceptor.invoke(AuditingInterceptor.java:95) org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:179) org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:213) com.sun.proxy.$Proxy71.invoke(Unknown Source) sun.reflect.GeneratedMethodAccessor1539.invoke(Unknown Source) sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) java.lang.reflect.Method.invoke(Method.java:498) org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:333) org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:207) com.sun.proxy.$Proxy71.invoke(Unknown Source) sun.reflect.GeneratedMethodAccessor39154.invoke(Unknown Source) sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) java.lang.reflect.Method.invoke(Method.java:498) org.codehaus.groovy.reflection.CachedMethod.invoke(CachedMethod.java:93) groovy.lang.MetaMethod.doMethodInvoke(MetaMethod.java:325) groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:1213) groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:1022) org.codehaus.groovy.runtime.InvokerHelper.invokePojoMethod(InvokerHelper.java:913) org.codehaus.groovy.runtime.InvokerHelper.invokeMethod(InvokerHelper.java:904) com.quest.nitro.service.scripting.FoglightServiceInterface.invokeMethod(FoglightServiceInterface.java:100) org.codehaus.groovy.runtime.callsite.PogoInterceptableSite.call(PogoInterceptableSite.java:48) org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:125) system._core_commons.scripts.runScript.run(runScript:42) com.quest.nitro.service.scripting.groovy.GroovyScript.exec(GroovyScript.java:153) com.quest.nitro.service.scripting.Script.runInternal(Script.java:321) com.quest.nitro.service.scripting.Script.run(Script.java:266) com.quest.nitro.service.scripting.ScriptingService.invoke(ScriptingService.java:635) sun.reflect.GeneratedMethodAccessor443.invoke(Unknown Source) sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) java.lang.reflect.Method.invoke(Method.java:498) sun.reflect.misc.Trampoline.invoke(MethodUtil.java:72) sun.reflect.GeneratedMethodAccessor265.invoke(Unknown Source) sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) java.lang.reflect.Method.invoke(Method.java:498) sun.reflect.misc.MethodUtil.invoke(MethodUtil.java:276) com.sun.jmx.mbeanserver.StandardMBeanIntrospector.invokeM2(StandardMBeanIntrospector.java:112) com.sun.jmx.mbeanserver.StandardMBeanIntrospector.invokeM2(StandardMBeanIntrospector.java:46) com.sun.jmx.mbeanserver.MBeanIntrospector.invokeM(MBeanIntrospector.java:237) com.sun.jmx.mbeanserver.PerInterface.invoke(PerInterface.java:138) com.sun.jmx.mbeanserver.MBeanSupport.invoke(MBeanSupport.java:252) com.sun.jmx.interceptor.DefaultMBeanServerInterceptor.invoke(DefaultMBeanServerInterceptor.java:819) com.sun.jmx.mbeanserver.JmxMBeanServer.invoke(JmxMBeanServer.java:801) com.quest.nitro.service.mbean.ForgeMBeanServerSupport.invoke(ForgeMBeanServerSupport.java:144) sun.reflect.GeneratedMethodAccessor266.invoke(Unknown Source) sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) java.lang.reflect.Method.invoke(Method.java:498) com.quest.nitro.service.mbean.ForgeMBeanServerFactory$1.invoke(ForgeMBeanServerFactory.java:68) com.sun.proxy.$Proxy15.invoke(Unknown Source) javax.management.MBeanServerInvocationHandler.invoke(MBeanServerInvocationHandler.java:298) com.sun.proxy.$Proxy265.invoke(Unknown Source) com.quest.nitro.webconsole.services.ScriptServiceImpl.eval(ScriptServiceImpl.java:89) sun.reflect.GeneratedMethodAccessor441.invoke(Unknown Source) sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) java.lang.reflect.Method.invoke(Method.java:498) com.quest.wcf.services.Registry$LazyInvocationHandler.invoke(Registry.java:133) com.sun.proxy.$Proxy282.eval(Unknown Source) com.quest.wcf.core.module.function.FunctionManager.evaluateScript(FunctionManager.java:582) com.quest.wcf.core.module.function.FunctionManager.evaluateScriptFunction(FunctionManager.java:401) com.quest.wcf.core.module.function.FunctionManager.evaluate(FunctionManager.java:273) com.quest.wcf.core.module.function.FunctionManager.getResult(FunctionManager.java:189) com.quest.wcf.core.module.function.AsyncFunctionProgressTracker.execute(AsyncFunctionProgressTracker.java:64) com.quest.wcf.core.module.function.BaseAsyncProgressTracker.run(BaseAsyncProgressTracker.java:185) com.quest.nitro.service.taskmanager.RunnableTaskImpl.run(RunnableTaskImpl.java:71) com.quest.nitro.service.taskmanager.TaskStatusImpl.run(TaskStatusImpl.java:181) com.quest.nitro.service.taskmanager.TaskExecutor.run(TaskExecutor.java:104) java.lang.Thread.run(Thread.java:750)
I'm a bit mystified and wondering if anyone knows something I'm missing. Which seems pretty likely
TIA for any help anyone can provide!