HPE Morpheus Enterprise
1844460 Members
3378 Online
110233 Solutions
New Discussion

Re: Remote Console for Windows VM from custom Cloud provider

 
nolano
Visitor

Remote Console for Windows VM from custom Cloud provider

Hello,

I am trying to bring up a remote console in Morpheus for windows VM's. These run in a Cloud, in which the Morpheus integration comes from a separate plugin.

The error message: "Ambiguous method overloading for method com.morpheus.provision.CloudPluginProvisioningService#getPluginProvisionProvider. Cannot resolve which method to invoke for [null] due to overlapping prototypes between: [class com.morpheus.ComputeServer] [class com.morpheus.Container] [class com.morpheus.Instance] [class com.morpheus.ProvisionType]"

I do not see any logs in guacd process, so I do not think it is a network issue. I think the issue is between Morpheus and the plugin.

Could I please get some info on what is needed in a Cloud Provider implementation for windows vm console access? So that I can try to determine what is missing in our plugin.

 

More specifics of our setup:

Morpheus 8.0.11

These are Windows VMs in containers running on rke2 using kubeVirt.

 

Full error and stack trace:

[http-nio-127.0.0.1-8080-exec-245] Closing session due to exception for StandardWebSocketSession[id=3569d1a2-1163-105b-958b-fe11f21bd78b, uri=ws://<redacted>/remote/socket?leaseToken=&clientOs=Windows&containerId=&consoleKeymap=en-us-qwerty&consoleMode=guest&serverId=533&allocationId=&remoteApp=&GUAC_ID=08d29fa7-07e4-4575-ba39-8f01388ea743&GUAC_AUDIO=audio%2FL8&GUAC_AUDIO=audio%2FL16&GUAC_WIDTH=1024&GUAC_HEIGHT=768&GUAC_IMAGE=image%2Fjpeg&GUAC_IMAGE=image%2Fpng&GUAC_IMAGE=image%2Fwebp] groovy.lang.GroovyRuntimeException: Ambiguous method overloading for method com.morpheus.provision.CloudPluginProvisioningService#getPluginProvisionProvider. Cannot resolve which method to invoke for [null] due to overlapping prototypes between: [class com.morpheus.ComputeServer] [class com.morpheus.Container] [class com.morpheus.Instance] [class com.morpheus.ProvisionType] at com.morpheus.provision.AbstractProvisionService.getPluginProvisionProvider(AbstractProvisionService.groovy:4130) [10 skipped] at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) at com.morpheus.provision.CloudPluginProvisioningService.enableConsoleAccess(CloudPluginProvisioningService.groovy:2550) [7 skipped] at com.morpheus.provision.CloudPluginProvisioningService$enableConsoleAccess.call(Unknown Source) at com.morpheus.remote.GuacamoleTunnelBuilder$Trait$Helper$_getTunnel_closure1$_closure3.doCall(GuacamoleTunnelBuilder.groovy:196) [3 skipped] at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) at com.bertramlabs.plugins.Account.withNewSession(Account.groovy) [16 skipped] at com.bertramlabs.plugins.Account$withNewSession$1.call(Unknown Source) at com.morpheus.remote.GuacamoleTunnelBuilder$Trait$Helper$_getTunnel_closure1.doCall(GuacamoleTunnelBuilder.groovy:104) [3 skipped] at com.morpheus.remote.GuacamoleTunnelBuilder$Trait$Helper$_getTunnel_closure1.doCall(GuacamoleTunnelBuilder.groovy) at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) at jdk.internal.reflect.GeneratedMethodAccessor776.invoke(Unknown Source) [8 skipped] at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) at jdk.proxy3/jdk.proxy3.$Proxy221.subscribe(Unknown Source) [8 skipped] at io.reactivex.internal.operators.single.SingleCreate.subscribeActual(SingleCreate.java:39) at io.reactivex.Single.subscribe(Single.java:3666) at io.reactivex.internal.operators.single.SingleSubscribeOn$SubscribeOnObserver.run(SingleSubscribeOn.java:89) at io.reactivex.Scheduler$DisposeTask.run(Scheduler.java:608) at io.reactivex.internal.schedulers.ScheduledRunnable.run(ScheduledRunnable.java:66) at io.reactivex.internal.schedulers.ScheduledRunnable.call(ScheduledRunnable.java:57)
1 REPLY 1
nolano
Visitor

Re: Remote Console for Windows VM from custom Cloud provider

This error was caused by the ProvisionProvider returning a code which did not match with the Cloud Provider.

The fix was to ensure both implementations returned the same string.

CloudProvider getDefaultProvisionTypeCode()

ProvisionProvider getCode()