HPE Morpheus VM Essentials
1844311 Members
2803 Online
110230 Solutions
New Discussion

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()