diff --git a/go.mod b/go.mod index 488f087191..e448849a4c 100644 --- a/go.mod +++ b/go.mod @@ -83,7 +83,7 @@ require ( k8s.io/client-go v0.19.3 k8s.io/cluster-bootstrap v0.19.3 moul.io/http2curl/v2 v2.3.0 - yunion.io/x/cloudmux v0.3.10-0-alpha.1.0.20231106041355-ad38cfeccb74 + yunion.io/x/cloudmux v0.3.10-0-alpha.1.0.20231108093555-49a6b3a6f94e yunion.io/x/executor v0.0.0-20230705125604-c5ac3141db32 yunion.io/x/jsonutils v1.0.1-0.20230613121553-0f3b41e2ef19 yunion.io/x/log v1.0.1-0.20230411060016-feb3f46ab361 diff --git a/go.sum b/go.sum index fdab0bc26d..aab46f3379 100644 --- a/go.sum +++ b/go.sum @@ -1179,8 +1179,8 @@ sigs.k8s.io/structured-merge-diff/v4 v4.0.1/go.mod h1:bJZC9H9iH24zzfZ/41RGcq60oK sigs.k8s.io/yaml v1.1.0/go.mod h1:UJmg0vDUVViEyp3mgSv9WPwZCDxu4rQW1olrI1uml+o= sigs.k8s.io/yaml v1.2.0 h1:kr/MCeFWJWTwyaHoR9c8EjH9OumOmoF9YGiZd7lFm/Q= sigs.k8s.io/yaml v1.2.0/go.mod h1:yfXDCHCao9+ENCvLSE62v9VSji2MKu5jeNfTrofGhJc= -yunion.io/x/cloudmux v0.3.10-0-alpha.1.0.20231106041355-ad38cfeccb74 h1:149fOpxkgML65G80SulEFFXlFYy5GulPbK11xTZJ9mo= -yunion.io/x/cloudmux v0.3.10-0-alpha.1.0.20231106041355-ad38cfeccb74/go.mod h1:McRjoG2gaOUisB+Qa41kLCNZhr0lsCu4apEjTiphXVY= +yunion.io/x/cloudmux v0.3.10-0-alpha.1.0.20231108093555-49a6b3a6f94e h1:8+NOTuIa8sNN1sA3E9PZ0LexNIspxmE6E0c8RFKETdg= +yunion.io/x/cloudmux v0.3.10-0-alpha.1.0.20231108093555-49a6b3a6f94e/go.mod h1:McRjoG2gaOUisB+Qa41kLCNZhr0lsCu4apEjTiphXVY= yunion.io/x/executor v0.0.0-20230705125604-c5ac3141db32 h1:v7POYkQwo1XzOxBoIoRVr/k0V9Y5JyjpshlIFa9raug= yunion.io/x/executor v0.0.0-20230705125604-c5ac3141db32/go.mod h1:Uxuou9WQIeJXNpy7t2fPLL0BYLvLiMvGQwY7Qc6aSws= yunion.io/x/jsonutils v0.0.0-20190625054549-a964e1e8a051/go.mod h1:4N0/RVzsYL3kH3WE/H1BjUQdFiWu50JGCFQuuy+Z634= diff --git a/pkg/webconsole/server/server.go b/pkg/webconsole/server/server.go index f1954121dd..dbd55eda96 100644 --- a/pkg/webconsole/server/server.go +++ b/pkg/webconsole/server/server.go @@ -61,7 +61,6 @@ func (s *ConnectionServer) ServeHTTP(w http.ResponseWriter, req *http.Request) { info := sessionObj.ISessionData.(*session.RemoteConsoleInfo) if utils.IsInStringArray(info.Hypervisor, []string{ api.HYPERVISOR_OPENSTACK, - api.HYPERVISOR_PROXMOX, api.HYPERVISOR_CTYUN, }) { srv, err = NewWebsocketProxyServer(sessionObj) diff --git a/vendor/modules.txt b/vendor/modules.txt index 7517b78b0a..06f66a8830 100644 --- a/vendor/modules.txt +++ b/vendor/modules.txt @@ -1438,7 +1438,7 @@ sigs.k8s.io/structured-merge-diff/v4/value # sigs.k8s.io/yaml v1.2.0 ## explicit; go 1.12 sigs.k8s.io/yaml -# yunion.io/x/cloudmux v0.3.10-0-alpha.1.0.20231106041355-ad38cfeccb74 +# yunion.io/x/cloudmux v0.3.10-0-alpha.1.0.20231108093555-49a6b3a6f94e ## explicit; go 1.18 yunion.io/x/cloudmux/pkg/apis yunion.io/x/cloudmux/pkg/apis/billing diff --git a/vendor/yunion.io/x/cloudmux/pkg/multicloud/proxmox/host.go b/vendor/yunion.io/x/cloudmux/pkg/multicloud/proxmox/host.go index 467d7a7bb1..eb5dc8cdba 100644 --- a/vendor/yunion.io/x/cloudmux/pkg/multicloud/proxmox/host.go +++ b/vendor/yunion.io/x/cloudmux/pkg/multicloud/proxmox/host.go @@ -19,6 +19,7 @@ import ( "net/url" "strconv" "strings" + "time" "yunion.io/x/jsonutils" "yunion.io/x/pkg/errors" @@ -233,6 +234,17 @@ func (self *SHost) CreateVM(opts *cloudprovider.SManagedVMCreateConfig) (cloudpr } vmIdRet := strconv.Itoa(vmId) + cloudprovider.Wait(time.Second*5, time.Minute, func() (bool, error) { + _, err := self.zone.region.GetInstance(vmIdRet) + if err != nil { + if errors.Cause(err) == cloudprovider.ErrNotFound { + return false, nil + } + return false, errors.Wrapf(err, "after created") + } + return true, nil + }) + vm, err := self.zone.region.GetInstance(vmIdRet) if err != nil { return nil, err diff --git a/vendor/yunion.io/x/cloudmux/pkg/multicloud/proxmox/instance.go b/vendor/yunion.io/x/cloudmux/pkg/multicloud/proxmox/instance.go index f1c302c323..bd40fd6adb 100644 --- a/vendor/yunion.io/x/cloudmux/pkg/multicloud/proxmox/instance.go +++ b/vendor/yunion.io/x/cloudmux/pkg/multicloud/proxmox/instance.go @@ -419,11 +419,10 @@ func (self *SInstance) GetVNCInfo(input *cloudprovider.ServerVncInput) (*cloudpr return nil, err } ret := &cloudprovider.ServerVncOutput{} - params := url.Values{} - params.Set("port", fmt.Sprintf("%d", vnc.Port)) - params.Set("vncticket", vnc.Ticket) - ret.Url = fmt.Sprintf("wss://%s:%d/api2/json/nodes/%s/qemu/%d/vncwebsocket?%s", self.host.zone.region.client.host, self.host.zone.region.client.port, self.Node, self.VmID, params.Encode()) ret.Protocol = "vnc" + ret.Host = self.host.zone.region.client.host + ret.Port = int64(vnc.Port) + ret.Password = vnc.Ticket ret.Hypervisor = api.HYPERVISOR_PROXMOX return ret, nil } @@ -839,7 +838,7 @@ func (self *SRegion) GetInstance(id string) (*SInstance, error) { nodeName := "" vmId, _ := strconv.Atoi(id) if resource, ok := resources[vmId]; !ok { - return nil, errors.Errorf("failed get Instance id %s", id) + return nil, errors.Wrapf(cloudprovider.ErrNotFound, id) } else { nodeName = resource.Node } @@ -1010,7 +1009,10 @@ type InstanceVnc struct { func (self *SRegion) GetVNCInfo(node string, vmId int) (*InstanceVnc, error) { res := fmt.Sprintf("/nodes/%s/qemu/%d/vncproxy", node, vmId) - resp, err := self.post(res, map[string]interface{}{}) + resp, err := self.post(res, map[string]interface{}{ + "websocket": "1", + "generate-password": "0", + }) if err != nil { return nil, err }