mirror of
https://hubproxy.babadafafafafa.cn/https://github.com/yunionio/cloudpods.git
synced 2026-09-20 08:03:53 +08:00
fix(region): fake server generate (#15896)
This commit is contained in:
@@ -384,6 +384,10 @@ type ServerCreateInput struct {
|
||||
// required: false
|
||||
UserData string `json:"user_data"`
|
||||
|
||||
// swagger: ignore
|
||||
// 创建测试数据,不实际创建资源
|
||||
FakeCreate bool `json:"fake_create"`
|
||||
|
||||
// swagger:ignore
|
||||
// Deprecated
|
||||
Keypair string `json:"keypair" yunion-deprecated-by:"keypair_id"`
|
||||
|
||||
@@ -1439,9 +1439,57 @@ func (self *SGuest) GuestNonSchedStartTask(
|
||||
}
|
||||
|
||||
func (self *SGuest) StartGuestCreateTask(ctx context.Context, userCred mcclient.TokenCredential, input *api.ServerCreateInput, pendingUsage quotas.IQuota, parentTaskId string) error {
|
||||
if input.FakeCreate {
|
||||
self.fixFakeServerInfo(ctx, userCred)
|
||||
return nil
|
||||
}
|
||||
return self.GetDriver().StartGuestCreateTask(self, ctx, userCred, input.JSON(input), pendingUsage, parentTaskId)
|
||||
}
|
||||
|
||||
func (self *SGuest) fixFakeServerInfo(ctx context.Context, userCred mcclient.TokenCredential) {
|
||||
status := []string{api.VM_READY, api.VM_RUNNING}
|
||||
rand.Seed(time.Now().Unix())
|
||||
db.Update(self, func() error {
|
||||
self.Status = status[rand.Intn(len(status))]
|
||||
self.PowerStates = api.VM_POWER_STATES_ON
|
||||
if self.Status == api.VM_READY {
|
||||
self.PowerStates = api.VM_POWER_STATES_OFF
|
||||
}
|
||||
return nil
|
||||
})
|
||||
disks, _ := self.GetDisks()
|
||||
for i := range disks {
|
||||
db.Update(&disks[i], func() error {
|
||||
disks[i].Status = api.DISK_READY
|
||||
return nil
|
||||
})
|
||||
}
|
||||
networks, _ := self.GetNetworks("")
|
||||
for i := range networks {
|
||||
if len(networks[i].IpAddr) > 0 {
|
||||
continue
|
||||
}
|
||||
network := networks[i].GetNetwork()
|
||||
if network != nil {
|
||||
db.Update(&networks[i], func() error {
|
||||
networks[i].IpAddr, _ = network.GetFreeIP(ctx, userCred, nil, nil, "", api.IPAllocationRadnom, false)
|
||||
return nil
|
||||
})
|
||||
}
|
||||
}
|
||||
if eip, _ := self.GetEipOrPublicIp(); eip != nil && len(eip.IpAddr) == 0 {
|
||||
db.Update(eip, func() error {
|
||||
if len(eip.NetworkId) > 0 {
|
||||
if network, _ := eip.GetNetwork(); network != nil {
|
||||
eip.IpAddr, _ = network.GetFreeIP(ctx, userCred, nil, nil, "", api.IPAllocationRadnom, false)
|
||||
return nil
|
||||
}
|
||||
}
|
||||
return nil
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
func (self *SGuest) StartSyncstatus(ctx context.Context, userCred mcclient.TokenCredential, parentTaskId string) error {
|
||||
return self.GetDriver().StartGuestSyncstatusTask(self, ctx, userCred, parentTaskId)
|
||||
}
|
||||
|
||||
@@ -430,6 +430,7 @@ type ServerCreateOptionalOptions struct {
|
||||
Group []string `help:"Group ID or Name of virtual server"`
|
||||
System bool `help:"Create a system VM, sysadmin ONLY option" json:"is_system"`
|
||||
TaskNotify *bool `help:"Setup task notify" json:"-"`
|
||||
FakeCreate *bool `help:"Fake create server"`
|
||||
DryRun *bool `help:"Dry run to test scheduler" json:"-"`
|
||||
UserDataFile string `help:"user_data file path" json:"-"`
|
||||
InstanceSnapshot string `help:"instance snapshot" json:"instance_snapshot"`
|
||||
@@ -544,6 +545,10 @@ func (opts *ServerCreateOptionalOptions) OptionalParams() (*computeapi.ServerCre
|
||||
EnableMemclean: opts.EnableMemclean,
|
||||
}
|
||||
|
||||
if opts.FakeCreate != nil {
|
||||
params.FakeCreate = *opts.FakeCreate
|
||||
}
|
||||
|
||||
if len(opts.EncryptKey) > 0 {
|
||||
params.EncryptKeyId = &opts.EncryptKey
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user