| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150 |
- // Copyright 2019 Yunion
- //
- // Licensed under the Apache License, Version 2.0 (the "License");
- // you may not use this file except in compliance with the License.
- // You may obtain a copy of the License at
- //
- // http://www.apache.org/licenses/LICENSE-2.0
- //
- // Unless required by applicable law or agreed to in writing, software
- // distributed under the License is distributed on an "AS IS" BASIS,
- // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- // See the License for the specific language governing permissions and
- // limitations under the License.
- package session
- import (
- "context"
- "net/url"
- "yunion.io/x/pkg/errors"
- compute_api "yunion.io/x/onecloud/pkg/apis/compute"
- identity_api "yunion.io/x/onecloud/pkg/apis/identity"
- "yunion.io/x/onecloud/pkg/mcclient"
- "yunion.io/x/onecloud/pkg/mcclient/auth"
- "yunion.io/x/onecloud/pkg/mcclient/modules/compute"
- "yunion.io/x/onecloud/pkg/mcclient/modules/identity"
- "yunion.io/x/onecloud/pkg/webconsole/options"
- )
- type SDisplayInfo struct {
- WaterMark string `json:"water_mark"`
- InstanceName string `json:"instance_name"`
- Ips string `json:"ips"`
- Hypervisor string `json:"hypervisor"`
- OsType string `json:"os_type"`
- OsName string `json:"os_name"`
- OsArch string `json:"os_arch"`
- OsDistribution string `json:"os_distribution"`
- SecretLevel string `json:"secret_level"`
- }
- func (dispInfo *SDisplayInfo) fetchGuestInfo(guestDetails *compute_api.ServerDetails) {
- dispInfo.Hypervisor = guestDetails.Hypervisor
- dispInfo.OsName = guestDetails.OsName
- dispInfo.OsType = guestDetails.OsType
- dispInfo.OsArch = guestDetails.OsArch
- dispInfo.OsDistribution = guestDetails.Metadata[compute_api.VM_METADATA_OS_DISTRO]
- dispInfo.InstanceName = guestDetails.Name
- dispInfo.Ips = guestDetails.IPs
- dispInfo.SecretLevel = guestDetails.Metadata["cls:secret_level"]
- }
- func (dispInfo *SDisplayInfo) fetchHostInfo(hostDetails *compute_api.HostDetails) {
- dispInfo.Hypervisor = hostDetails.HostType
- dispInfo.OsArch = hostDetails.CpuArchitecture
- dispInfo.InstanceName = hostDetails.Name
- dispInfo.Ips = hostDetails.AccessIp
- }
- func (dispInfo *SDisplayInfo) populateParams(params url.Values) url.Values {
- if options.Options.EnableWatermark && len(dispInfo.WaterMark) > 0 {
- params["water_mark"] = []string{dispInfo.WaterMark}
- }
- if len(dispInfo.InstanceName) > 0 {
- params["instance_name"] = []string{dispInfo.InstanceName}
- }
- if len(dispInfo.Ips) > 0 {
- params["ips"] = []string{dispInfo.Ips}
- }
- if len(dispInfo.Hypervisor) > 0 {
- params["hypervisor"] = []string{dispInfo.Hypervisor}
- }
- if len(dispInfo.OsType) > 0 {
- params["os_type"] = []string{dispInfo.OsType}
- }
- if len(dispInfo.OsName) > 0 {
- params["os_name"] = []string{dispInfo.OsName}
- }
- if len(dispInfo.OsArch) > 0 {
- params["os_arch"] = []string{dispInfo.OsArch}
- }
- if len(dispInfo.OsDistribution) > 0 {
- params["os_distribution"] = []string{dispInfo.OsDistribution}
- }
- if len(dispInfo.SecretLevel) > 0 {
- params["secret_level"] = []string{dispInfo.SecretLevel}
- }
- return params
- }
- func fetchWaterMark(userInfo *identity_api.UserDetails) string {
- info := userInfo.Name
- if len(userInfo.Displayname) > 0 {
- info += " (" + userInfo.Displayname + ")"
- }
- info += "<br/>"
- if len(userInfo.Mobile) > 0 {
- info += userInfo.Mobile
- } else if len(userInfo.Email) > 0 {
- info += userInfo.Email
- } else {
- info += userInfo.Id
- }
- return info
- }
- func fetchUserInfo(ctx context.Context, s *mcclient.ClientSession) (*identity_api.UserDetails, error) {
- usrObj, err := identity.UsersV3.GetById(auth.GetAdminSession(ctx, s.GetRegion()), s.GetUserId(), nil)
- if err != nil {
- return nil, errors.Wrap(err, "GetById")
- }
- usr := identity_api.UserDetails{}
- err = usrObj.Unmarshal(&usr)
- if err != nil {
- return nil, errors.Wrap(err, "Unmarshal")
- }
- return &usr, nil
- }
- func FetchServerInfo(ctx context.Context, s *mcclient.ClientSession, sid string) (*compute_api.ServerDetails, error) {
- guestInfo, err := compute.Servers.Get(s, sid, nil)
- if err != nil {
- return nil, errors.Wrapf(err, "GetById %s", sid)
- }
- guestDetails := compute_api.ServerDetails{}
- err = guestInfo.Unmarshal(&guestDetails)
- if err != nil {
- return nil, errors.Wrap(err, "Unmarshal guest info")
- }
- return &guestDetails, nil
- }
- func FetchHostInfo(ctx context.Context, s *mcclient.ClientSession, id string) (*compute_api.HostDetails, error) {
- hostInfo, err := compute.Hosts.Get(s, id, nil)
- if err != nil {
- return nil, errors.Wrapf(err, "GetById %s", id)
- }
- hostDetails := compute_api.HostDetails{}
- err = hostInfo.Unmarshal(&hostDetails)
- if err != nil {
- return nil, errors.Wrap(err, "Unmarshal guest info")
- }
- return &hostDetails, nil
- }
|