Plugin Type Ideas

We are rapidly expanding Plugins to support more capabilities into the product and would love to hear from people as to what types of expansions you would like to see next in the product!

Hey David, yes, task plugins could support output chaining like the native tasks do. I couldn’t see how to do that - maybe I missed it. Be great to pass the plugin task output down through the workflow.

1 Like

You should be able to do this. Variables sent to the response data object on the ServiceResponse class can be used as chained variables. Set the Result Type to “JSON” when using a task like this and this should allow objects to be parsed off the data object.

1 Like

I was mistaken. A flag was necessary on TaskProvider’s interface.

Boolean hasResults() { return true }

This will be added to morpheus-plugin-api:0.12.5 for Morpheus 5.4.6 Release in May. Thanks for pointing this out!

1 Like

Great stuff, thank you!

I’m interested in seeing some plugin action on the load balancer parts. Is the framework rework completed to allow this type of plugins?

Hello,

We have unfortunately not yet gotten to making load balancers pluggable. We are doing clouds and backups as we speak. Load balancers will be a fast follower.

1 Like

Plugin for a pollicy would be useful.

Hello Morpheus! Hope you are well. With 5.5.0 and the 0.12.5 plugin framework my task plugin is able to chain result output to subsequent tasks in the workflow. Thank you!

I can read results from previous tasks, but how do I access the morpheus context/vars in the groovy task API. Should we be able to access it?

Should be able to via the morpheus context. If you extend from AbstractTaskService you get some helper methods to access those variables as such

	@Override
	TaskResult executeLocalTask(Task task, Map opts, Container container, ComputeServer server, Instance instance) {
		TaskConfig config = buildLocalTaskConfig([:], task, [], opts).blockingGet()
		if(instance) {
			config = buildInstanceTaskConfig(instance, [:], task, [], opts).blockingGet()
		}
		if(container) {
			config = buildContainerTaskConfig(container, [:], task, [], opts).blockingGet()
		}
	
		executeTask(task, config)
	}
1 Like

Thanks David, will look at that!