rundeck-plugins / rundeck-s3-log-plugin

Store execution logs in Amazon S3 buckets
Apache License 2.0
32 stars 26 forks source link

Plugin for service ExecutionFileStorage not found #14

Closed colebrumley closed 8 years ago

colebrumley commented 8 years ago

I am seeing the following error whenever I attempt to use this plugin (on CentOS7 w/ OpenJDK 1.8.0_101-b13):

2016-07-27 16:59:27,106 [grailsTopicExecutor-1] ERROR com.dtolabs.rundeck.server.plugins.RundeckPluginRegistry - Plugin [:] for service: ExecutionFileStorage was not found

I've tried Rundeck versions 2.6.7 and 2.6.8 and plugin versions 1.0.2 and 1.0.3 (same result). The AWS node has an IAM instance role allowing full S3 access, but I've also tried setting the credentials in framework.properties with no luck.

The current config for this plugin is:

/etc/rundeck/framework.properties:
framework.plugin.ExecutionFileStorage.org.rundeck.amazon-s3.bucket = rundeck-execution-log-storage
framework.plugin.ExecutionFileStorage.org.rundeck.amazon-s3.region = us-west-2

/etc/rundeck/rundeck-config.groovy:
rundeck.execution.logs.fileStoragePlugin = org.rundeck.amazon-s3

The plugin appears on the List Plugins page, and Log Storage appears in the project configuration menu, but all the values are grayed out.

On startup, the logs seem to indicate that it's loaded successfully:

2016-07-27 16:50:45,698 [main] DEBUG com.dtolabs.rundeck.core.plugins.JarPluginProviderLoader - loadClass! org.rundeck.plugins.S3LogFileStoragePlugin: /var/lib/rundeck/var/tmp/pluginJars/20160726212508000-rundeck-s3-log-plugin-1.0.2.jar
2016-07-27 16:50:45,698 [main] DEBUG com.dtolabs.rundeck.core.plugins.JarPluginProviderLoader - jar libs listed: lib/aws-java-sdk-s3-1.10.67.jar lib/aws-java-sdk-kms-1.10.67.jar lib/aws-java-sdk-core-1.10.67.jar lib/commons-logging-1.1.3.jar lib/httpclient-4.3.6.jar lib/jackson-databind-2.5.3.jar lib/jackson-dataformat-cbor-2.5.3.jar lib/joda-time-2.8.1.jar lib/httpcore-4.3.3.jar lib/commons-codec-1.6.jar lib/jackson-annotations-2.5.0.jar lib/jackson-core-2.5.3.jar for file: /var/lib/rundeck/libext/rundeck-s3-log-plugin-1.0.2.jar
2016-07-27 16:50:45,698 [main] DEBUG com.dtolabs.rundeck.core.plugins.JarPluginProviderLoader - extracting lib files from jar: /var/lib/rundeck/libext/rundeck-s3-log-plugin-1.0.2.jar
2016-07-27 16:50:45,698 [main] DEBUG com.dtolabs.rundeck.core.plugins.JarPluginProviderLoader - Expand zip /var/lib/rundeck/libext/rundeck-s3-log-plugin-1.0.2.jar to dir: /var/lib/rundeck/libext/cache/rundeck-s3-log-plugin-1.0.2, file: lib/aws-java-sdk-s3-1.10.67.jar
2016-07-27 16:50:45,702 [main] DEBUG com.dtolabs.rundeck.core.plugins.JarPluginProviderLoader - Expand zip /var/lib/rundeck/libext/rundeck-s3-log-plugin-1.0.2.jar to dir: /var/lib/rundeck/libext/cache/rundeck-s3-log-plugin-1.0.2, file: lib/aws-java-sdk-kms-1.10.67.jar
2016-07-27 16:50:45,704 [main] DEBUG com.dtolabs.rundeck.core.plugins.JarPluginProviderLoader - Expand zip /var/lib/rundeck/libext/rundeck-s3-log-plugin-1.0.2.jar to dir: /var/lib/rundeck/libext/cache/rundeck-s3-log-plugin-1.0.2, file: lib/aws-java-sdk-core-1.10.67.jar
2016-07-27 16:50:45,708 [main] DEBUG com.dtolabs.rundeck.core.plugins.JarPluginProviderLoader - Expand zip /var/lib/rundeck/libext/rundeck-s3-log-plugin-1.0.2.jar to dir: /var/lib/rundeck/libext/cache/rundeck-s3-log-plugin-1.0.2, file: lib/commons-logging-1.1.3.jar
2016-07-27 16:50:45,709 [main] DEBUG com.dtolabs.rundeck.core.plugins.JarPluginProviderLoader - Expand zip /var/lib/rundeck/libext/rundeck-s3-log-plugin-1.0.2.jar to dir: /var/lib/rundeck/libext/cache/rundeck-s3-log-plugin-1.0.2, file: lib/httpclient-4.3.6.jar
2016-07-27 16:50:45,712 [main] DEBUG com.dtolabs.rundeck.core.plugins.JarPluginProviderLoader - Expand zip /var/lib/rundeck/libext/rundeck-s3-log-plugin-1.0.2.jar to dir: /var/lib/rundeck/libext/cache/rundeck-s3-log-plugin-1.0.2, file: lib/jackson-databind-2.5.3.jar
2016-07-27 16:50:45,719 [main] DEBUG com.dtolabs.rundeck.core.plugins.JarPluginProviderLoader - Expand zip /var/lib/rundeck/libext/rundeck-s3-log-plugin-1.0.2.jar to dir: /var/lib/rundeck/libext/cache/rundeck-s3-log-plugin-1.0.2, file: lib/jackson-dataformat-cbor-2.5.3.jar
2016-07-27 16:50:45,720 [main] DEBUG com.dtolabs.rundeck.core.plugins.JarPluginProviderLoader - Expand zip /var/lib/rundeck/libext/rundeck-s3-log-plugin-1.0.2.jar to dir: /var/lib/rundeck/libext/cache/rundeck-s3-log-plugin-1.0.2, file: lib/joda-time-2.8.1.jar
2016-07-27 16:50:45,724 [main] DEBUG com.dtolabs.rundeck.core.plugins.JarPluginProviderLoader - Expand zip /var/lib/rundeck/libext/rundeck-s3-log-plugin-1.0.2.jar to dir: /var/lib/rundeck/libext/cache/rundeck-s3-log-plugin-1.0.2, file: lib/httpcore-4.3.3.jar
2016-07-27 16:50:45,726 [main] DEBUG com.dtolabs.rundeck.core.plugins.JarPluginProviderLoader - Expand zip /var/lib/rundeck/libext/rundeck-s3-log-plugin-1.0.2.jar to dir: /var/lib/rundeck/libext/cache/rundeck-s3-log-plugin-1.0.2, file: lib/commons-codec-1.6.jar
2016-07-27 16:50:45,727 [main] DEBUG com.dtolabs.rundeck.core.plugins.JarPluginProviderLoader - Expand zip /var/lib/rundeck/libext/rundeck-s3-log-plugin-1.0.2.jar to dir: /var/lib/rundeck/libext/cache/rundeck-s3-log-plugin-1.0.2, file: lib/jackson-annotations-2.5.0.jar
2016-07-27 16:50:45,728 [main] DEBUG com.dtolabs.rundeck.core.plugins.JarPluginProviderLoader - Expand zip /var/lib/rundeck/libext/rundeck-s3-log-plugin-1.0.2.jar to dir: /var/lib/rundeck/libext/cache/rundeck-s3-log-plugin-1.0.2, file: lib/jackson-core-2.5.3.jar

I grabbed the associated stack trace, please let me know if there's any other debugging info that would be helpful:

2016-07-27 16:59:27,109 [grailsTopicExecutor-1] DEBUG com.dtolabs.rundeck.server.plugins.RundeckPluginRegistry - Plugin [:] for service: ExecutionFileStorage was not found
com.dtolabs.rundeck.core.execution.service.MissingProviderException: No matching plugin found provider: [:] for Service: ExecutionFileStorage
    at com.dtolabs.rundeck.core.plugins.PluginManagerService.loadProvider(PluginManagerService.java:126)
    at com.dtolabs.rundeck.core.plugins.ServiceProviderLoader$loadProvider.call(Unknown Source)
    at org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCall(CallSiteArray.java:45)
    at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:108)
    at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:120)
    at com.dtolabs.rundeck.server.plugins.RundeckPluginRegistry.loadPluginDescriptorByName(RundeckPluginRegistry.groovy:250)
    at com.dtolabs.rundeck.server.plugins.PluginRegistry$loadPluginDescriptorByName.callCurrent(Unknown Source)
    at org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCallCurrent(CallSiteArray.java:49)
    at org.codehaus.groovy.runtime.callsite.AbstractCallSite.callCurrent(AbstractCallSite.java:133)
    at org.codehaus.groovy.runtime.callsite.AbstractCallSite.callCurrent(AbstractCallSite.java:145)
    at com.dtolabs.rundeck.server.plugins.RundeckPluginRegistry.validatePluginByName(RundeckPluginRegistry.groovy:191)
    at com.dtolabs.rundeck.server.plugins.PluginRegistry$validatePluginByName$2.callCurrent(Unknown Source)
    at org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCallCurrent(CallSiteArray.java:49)
    at org.codehaus.groovy.runtime.callsite.AbstractCallSite.callCurrent(AbstractCallSite.java:133)
    at com.dtolabs.rundeck.server.plugins.RundeckPluginRegistry.validatePluginByName(RundeckPluginRegistry.groovy:177)
    at com.dtolabs.rundeck.server.plugins.PluginRegistry$validatePluginByName$1.call(Unknown Source)
    at org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCall(CallSiteArray.java:45)
    at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:108)
    at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:128)
    at org.codehaus.groovy.runtime.callsite.AbstractCallSite.callSafe(AbstractCallSite.java:103)
    at rundeck.services.PluginService.configurePlugin(PluginService.groovy:100)
    at rundeck.services.PluginService$configurePlugin$0.call(Unknown Source)
    at org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCall(CallSiteArray.java:45)
    at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:108)
    at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:128)
    at rundeck.services.LogFileStorageService.getConfiguredPlugin(LogFileStorageService.groovy:900)
    at rundeck.services.LogFileStorageService.this$2$getConfiguredPlugin(LogFileStorageService.groovy)
    at rundeck.services.LogFileStorageService$this$2$getConfiguredPlugin$9.callCurrent(Unknown Source)
    at org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCallCurrent(CallSiteArray.java:49)
    at org.codehaus.groovy.runtime.callsite.AbstractCallSite.callCurrent(AbstractCallSite.java:133)
    at org.codehaus.groovy.runtime.callsite.AbstractCallSite.callCurrent(AbstractCallSite.java:145)
    at rundeck.services.LogFileStorageService.getConfiguredPluginForExecution(LogFileStorageService.groovy:884)
    at rundeck.services.LogFileStorageService.this$2$getConfiguredPluginForExecution(LogFileStorageService.groovy)
    at rundeck.services.LogFileStorageService$this$2$getConfiguredPluginForExecution$8.callCurrent(Unknown Source)
    at org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCallCurrent(CallSiteArray.java:49)
    at org.codehaus.groovy.runtime.callsite.AbstractCallSite.callCurrent(AbstractCallSite.java:133)
    at org.codehaus.groovy.runtime.callsite.AbstractCallSite.callCurrent(AbstractCallSite.java:145)
    at rundeck.services.LogFileStorageService.submitForStorage(LogFileStorageService.groovy:384)
    at rundeck.services.LogFileStorageService$submitForStorage$7.call(Unknown Source)
    at org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCall(CallSiteArray.java:45)
    at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:108)
    at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:116)
    at rundeck.services.ExecutionEventsService.$tt__executionComplete(ExecutionEventsService.groovy:18)
    at rundeck.services.ExecutionEventsService$_executionComplete_closure1.doCall(ExecutionEventsService.groovy)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:498)
    at org.codehaus.groovy.reflection.CachedMethod.invoke(CachedMethod.java:90)
    at groovy.lang.MetaMethod.doMethodInvoke(MetaMethod.java:324)
    at groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:1207)
    at groovy.lang.ExpandoMetaClass.invokeMethod(ExpandoMetaClass.java:1110)
    at groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:1016)
    at groovy.lang.Closure.call(Closure.java:423)
    at groovy.lang.Closure.call(Closure.java:439)
    at org.codehaus.groovy.grails.orm.support.GrailsTransactionTemplate$2.doInTransaction(GrailsTransactionTemplate.groovy:88)
    at org.springframework.transaction.support.TransactionTemplate.execute(TransactionTemplate.java:133)
    at org.codehaus.groovy.grails.orm.support.GrailsTransactionTemplate.execute(GrailsTransactionTemplate.groovy:85)
    at rundeck.services.ExecutionEventsService.executionComplete(ExecutionEventsService.groovy)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:498)
    at org.grails.plugin.platform.events.registry.DefaultEventsRegistry$ListenerHandler.invoke(DefaultEventsRegistry.java:238)
    at org.grails.plugin.platform.events.registry.DefaultEventsRegistry.invokeListeners(DefaultEventsRegistry.java:160)
    at org.grails.plugin.platform.events.publisher.DefaultEventsPublisher$Callback.call(DefaultEventsPublisher.java:155)
    at org.grails.plugin.platform.events.publisher.DefaultEventsPublisher$Callback.call(DefaultEventsPublisher.java:140)
    at java.util.concurrent.FutureTask.run(FutureTask.java:266)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
    at java.lang.Thread.run(Thread.java:745)
colebrumley commented 8 years ago

Insert facepalm here. I'm using rundeck-config.groovy instead of rundeck-config.properties, so I needed to quote the value of fileStoragePlugin like this:

rundeck.execution.logs.fileStoragePlugin = "org.rundeck.amazon-s3"

I'll see myself out -_-