From e218dfc6b7aac731d3ee456738de582fcec621b9 Mon Sep 17 00:00:00 2001 From: ioito Date: Mon, 22 Apr 2019 15:01:27 +0800 Subject: [PATCH] =?UTF-8?q?=E5=90=8C=E6=AD=A5=E5=85=AC=E6=9C=89=E4=BA=91?= =?UTF-8?q?=E8=B5=84=E6=BA=90=E5=88=9B=E5=BB=BA=E6=97=B6=E9=97=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- pkg/cloudprovider/resources.go | 1 + pkg/compute/models/disks.go | 8 +++++++ pkg/compute/models/elasticips.go | 4 ++++ pkg/compute/models/guests.go | 8 +++++++ pkg/util/aliyun/disk.go | 4 ++++ pkg/util/aliyun/eip.go | 4 ++++ pkg/util/aliyun/instance.go | 4 ++++ pkg/util/aws/disk.go | 4 ++++ pkg/util/aws/eip.go | 4 ++++ pkg/util/aws/instance.go | 4 ++++ pkg/util/azure/classic_disk.go | 6 ++++- pkg/util/azure/classic_eip.go | 4 ++++ pkg/util/azure/classic_instance.go | 6 ++++- pkg/util/azure/disk.go | 4 ++++ pkg/util/azure/eip.go | 4 ++++ pkg/util/azure/instance.go | 4 ++++ pkg/util/esxi/vdisk.go | 4 ++++ pkg/util/esxi/virtualmachine.go | 4 ++++ pkg/util/huawei/disk.go | 6 ++++- pkg/util/huawei/eip.go | 6 ++++- pkg/util/huawei/instance.go | 4 ++++ pkg/util/openstack/disk.go | 8 +++++-- pkg/util/openstack/instance.go | 38 +++++++++++++++++------------- pkg/util/qcloud/disk.go | 4 ++++ pkg/util/qcloud/eip.go | 4 ++++ pkg/util/qcloud/instance.go | 4 ++++ pkg/util/qcloud/localdisk.go | 6 ++++- pkg/util/ucloud/disk.go | 4 ++++ pkg/util/ucloud/eip.go | 4 ++++ pkg/util/ucloud/instance.go | 4 ++++ 30 files changed, 149 insertions(+), 24 deletions(-) diff --git a/pkg/cloudprovider/resources.go b/pkg/cloudprovider/resources.go index 80eca28a74..34d638d15b 100644 --- a/pkg/cloudprovider/resources.go +++ b/pkg/cloudprovider/resources.go @@ -45,6 +45,7 @@ type IVirtualResource interface { type IBillingResource interface { GetBillingType() string + GetCreatedAt() time.Time GetExpiredAt() time.Time } diff --git a/pkg/compute/models/disks.go b/pkg/compute/models/disks.go index 26bf989251..295dd94515 100644 --- a/pkg/compute/models/disks.go +++ b/pkg/compute/models/disks.go @@ -1069,6 +1069,10 @@ func (self *SDisk) syncWithCloudDisk(ctx context.Context, userCred mcclient.Toke self.ExpiredAt = extDisk.GetExpiredAt() } + if createdAt := extDisk.GetCreatedAt(); !createdAt.IsZero() { + self.CreatedAt = createdAt + } + return nil }) if err != nil { @@ -1112,6 +1116,10 @@ func (manager *SDiskManager) newFromCloudDisk(ctx context.Context, userCred mccl disk.ExpiredAt = extDisk.GetExpiredAt() } + if createAt := extDisk.GetCreatedAt(); !createAt.IsZero() { + disk.CreatedAt = createAt + } + err = manager.TableSpec().Insert(&disk) if err != nil { log.Errorf("newFromCloudZone fail %s", err) diff --git a/pkg/compute/models/elasticips.go b/pkg/compute/models/elasticips.go index 2dc1c73222..55f55ea8bd 100644 --- a/pkg/compute/models/elasticips.go +++ b/pkg/compute/models/elasticips.go @@ -329,6 +329,10 @@ func (self *SElasticip) SyncWithCloudEip(ctx context.Context, userCred mcclient. self.ExpiredAt = ext.GetExpiredAt() } + if createAt := ext.GetCreatedAt(); !createAt.IsZero() { + self.CreatedAt = createAt + } + return nil }) if err != nil { diff --git a/pkg/compute/models/guests.go b/pkg/compute/models/guests.go index 481bc77fad..fe65b1ebf4 100644 --- a/pkg/compute/models/guests.go +++ b/pkg/compute/models/guests.go @@ -1914,6 +1914,10 @@ func (self *SGuest) syncWithCloudVM(ctx context.Context, userCred mcclient.Token self.ExpiredAt = extVM.GetExpiredAt() } + if createdAt := extVM.GetCreatedAt(); !createdAt.IsZero() { + self.CreatedAt = createdAt + } + return nil }) if err != nil { @@ -1968,6 +1972,10 @@ func (manager *SGuestManager) newCloudVM(ctx context.Context, userCred mcclient. guest.ExpiredAt = extVM.GetExpiredAt() } + if createdAt := extVM.GetCreatedAt(); !createdAt.IsZero() { + guest.CreatedAt = createdAt + } + guest.HostId = host.Id instanceType := extVM.GetInstanceType() diff --git a/pkg/util/aliyun/disk.go b/pkg/util/aliyun/disk.go index 3bb72c9116..272465578b 100644 --- a/pkg/util/aliyun/disk.go +++ b/pkg/util/aliyun/disk.go @@ -390,6 +390,10 @@ func (self *SDisk) GetBillingType() string { return convertChargeType(self.DiskChargeType) } +func (self *SDisk) GetCreatedAt() time.Time { + return self.CreationTime +} + func (self *SDisk) GetExpiredAt() time.Time { return convertExpiredAt(self.ExpiredTime) } diff --git a/pkg/util/aliyun/eip.go b/pkg/util/aliyun/eip.go index 3c7f6be98e..e3578cb755 100644 --- a/pkg/util/aliyun/eip.go +++ b/pkg/util/aliyun/eip.go @@ -170,6 +170,10 @@ func (self *SEipAddress) GetBillingType() string { return convertChargeType(self.ChargeType) } +func (self *SEipAddress) GetCreatedAt() time.Time { + return self.AllocationTime +} + func (self *SEipAddress) GetExpiredAt() time.Time { return convertExpiredAt(self.ExpiredTime) } diff --git a/pkg/util/aliyun/instance.go b/pkg/util/aliyun/instance.go index 7ff16d779c..84afaac17c 100644 --- a/pkg/util/aliyun/instance.go +++ b/pkg/util/aliyun/instance.go @@ -921,6 +921,10 @@ func (self *SInstance) GetBillingType() string { return convertChargeType(self.InstanceChargeType) } +func (self *SInstance) GetCreatedAt() time.Time { + return self.CreationTime +} + func (self *SInstance) GetExpiredAt() time.Time { return convertExpiredAt(self.ExpiredTime) } diff --git a/pkg/util/aws/disk.go b/pkg/util/aws/disk.go index ddfd01ee68..18002c7e47 100644 --- a/pkg/util/aws/disk.go +++ b/pkg/util/aws/disk.go @@ -133,6 +133,10 @@ func (self *SDisk) GetBillingType() string { return billing.BILLING_TYPE_POSTPAID } +func (self *SDisk) GetCreatedAt() time.Time { + return self.CreationTime +} + func (self *SDisk) GetExpiredAt() time.Time { return self.ExpiredTime } diff --git a/pkg/util/aws/eip.go b/pkg/util/aws/eip.go index 1d38a9146c..a1472f1694 100644 --- a/pkg/util/aws/eip.go +++ b/pkg/util/aws/eip.go @@ -319,6 +319,10 @@ func (self *SEipAddress) GetBillingType() string { return billing.BILLING_TYPE_POSTPAID } +func (self *SEipAddress) GetCreatedAt() time.Time { + return time.Time{} +} + func (self *SEipAddress) GetExpiredAt() time.Time { return time.Time{} } diff --git a/pkg/util/aws/instance.go b/pkg/util/aws/instance.go index f10d1ce16e..d492a53347 100644 --- a/pkg/util/aws/instance.go +++ b/pkg/util/aws/instance.go @@ -245,6 +245,10 @@ func (self *SInstance) GetBillingType() string { return billing_api.BILLING_TYPE_POSTPAID } +func (self *SInstance) GetCreatedAt() time.Time { + return self.CreationTime +} + func (self *SInstance) GetExpiredAt() time.Time { return self.ExpiredTime } diff --git a/pkg/util/azure/classic_disk.go b/pkg/util/azure/classic_disk.go index c95ffcdcc3..99ed130b54 100644 --- a/pkg/util/azure/classic_disk.go +++ b/pkg/util/azure/classic_disk.go @@ -178,8 +178,12 @@ func (self *SClassicDisk) GetDiskType() string { return self.diskType } +func (self *SClassicDisk) GetCreatedAt() time.Time { + return time.Time{} +} + func (self *SClassicDisk) GetExpiredAt() time.Time { - return time.Now() + return time.Time{} } func (self *SClassicDisk) GetGlobalId() string { diff --git a/pkg/util/azure/classic_eip.go b/pkg/util/azure/classic_eip.go index 3a1839baea..35eba5341b 100644 --- a/pkg/util/azure/classic_eip.go +++ b/pkg/util/azure/classic_eip.go @@ -163,6 +163,10 @@ func (self *SClassicEipAddress) GetBillingType() string { return billing_api.BILLING_TYPE_POSTPAID } +func (self *SClassicEipAddress) GetCreatedAt() time.Time { + return time.Time{} +} + func (self *SClassicEipAddress) GetExpiredAt() time.Time { return time.Time{} } diff --git a/pkg/util/azure/classic_instance.go b/pkg/util/azure/classic_instance.go index ae767fd9dd..15ea8ec37f 100644 --- a/pkg/util/azure/classic_instance.go +++ b/pkg/util/azure/classic_instance.go @@ -540,8 +540,12 @@ func (self *SClassicInstance) GetBillingType() string { return billing_api.BILLING_TYPE_POSTPAID } +func (self *SClassicInstance) GetCreatedAt() time.Time { + return time.Time{} +} + func (self *SClassicInstance) GetExpiredAt() time.Time { - return time.Now() + return time.Time{} } func (self *SClassicInstance) UpdateUserData(userData string) error { diff --git a/pkg/util/azure/disk.go b/pkg/util/azure/disk.go index 84191613e0..744021b225 100644 --- a/pkg/util/azure/disk.go +++ b/pkg/util/azure/disk.go @@ -305,6 +305,10 @@ func (self *SDisk) GetBillingType() string { return billing_api.BILLING_TYPE_POSTPAID } +func (self *SDisk) GetCreatedAt() time.Time { + return time.Time{} +} + func (self *SDisk) GetExpiredAt() time.Time { return time.Time{} } diff --git a/pkg/util/azure/eip.go b/pkg/util/azure/eip.go index 24729c1d1c..0375ed44e1 100644 --- a/pkg/util/azure/eip.go +++ b/pkg/util/azure/eip.go @@ -254,6 +254,10 @@ func (self *SEipAddress) GetBillingType() string { return billing_api.BILLING_TYPE_POSTPAID } +func (self *SEipAddress) GetCreatedAt() time.Time { + return time.Time{} +} + func (self *SEipAddress) GetExpiredAt() time.Time { return time.Time{} } diff --git a/pkg/util/azure/instance.go b/pkg/util/azure/instance.go index 8ba16d310b..bdbfd05ad9 100644 --- a/pkg/util/azure/instance.go +++ b/pkg/util/azure/instance.go @@ -1049,6 +1049,10 @@ func (self *SInstance) GetBillingType() string { return billing_api.BILLING_TYPE_POSTPAID } +func (self *SInstance) GetCreatedAt() time.Time { + return time.Time{} +} + func (self *SInstance) GetExpiredAt() time.Time { return time.Time{} } diff --git a/pkg/util/esxi/vdisk.go b/pkg/util/esxi/vdisk.go index 6b2f193579..c3e0d1cc1d 100644 --- a/pkg/util/esxi/vdisk.go +++ b/pkg/util/esxi/vdisk.go @@ -251,6 +251,10 @@ func (disk *SVirtualDisk) GetBillingType() string { return "" } +func (disk *SVirtualDisk) GetCreatedAt() time.Time { + return time.Time{} +} + func (disk *SVirtualDisk) GetExpiredAt() time.Time { return time.Time{} } diff --git a/pkg/util/esxi/virtualmachine.go b/pkg/util/esxi/virtualmachine.go index c42dd836f9..a6b0fbc938 100644 --- a/pkg/util/esxi/virtualmachine.go +++ b/pkg/util/esxi/virtualmachine.go @@ -561,6 +561,10 @@ func (self *SVirtualMachine) GetBillingType() string { return billing_api.BILLING_TYPE_POSTPAID } +func (self *SVirtualMachine) GetCreatedAt() time.Time { + return time.Time{} +} + func (self *SVirtualMachine) GetExpiredAt() time.Time { return time.Time{} } diff --git a/pkg/util/huawei/disk.go b/pkg/util/huawei/disk.go index 1cd0255b2b..17a6252dd5 100644 --- a/pkg/util/huawei/disk.go +++ b/pkg/util/huawei/disk.go @@ -102,7 +102,7 @@ type SDisk struct { AvailabilityZone string `json:"availability_zone"` SourceVolid string `json:"source_volid"` SnapshotID string `json:"snapshot_id"` - CreatedAt string `json:"created_at"` + CreatedAt time.Time `json:"created_at"` VolumeType string `json:"volume_type"` VolumeImageMetadata VolumeImageMetadata `json:"volume_image_metadata"` ReplicationStatus string `json:"replication_status"` @@ -196,6 +196,10 @@ func (self *SDisk) GetBillingType() string { } } +func (self *SDisk) GetCreatedAt() time.Time { + return self.CreatedAt +} + func (self *SDisk) GetExpiredAt() time.Time { var expiredTime time.Time if self.Metadata.Billing == "1" { diff --git a/pkg/util/huawei/eip.go b/pkg/util/huawei/eip.go index 4b8fb3b572..c2552e0ed5 100644 --- a/pkg/util/huawei/eip.go +++ b/pkg/util/huawei/eip.go @@ -84,7 +84,7 @@ type SEipAddress struct { PublicIPAddress string `json:"public_ip_address"` PrivateIPAddress string `json:"private_ip_address"` TenantID string `json:"tenant_id"` - CreateTime string `json:"create_time"` + CreateTime time.Time `json:"create_time"` BandwidthID string `json:"bandwidth_id"` BandwidthShareType string `json:"bandwidth_share_type"` BandwidthSize int64 `json:"bandwidth_size"` @@ -204,6 +204,10 @@ func (self *SEipAddress) GetBillingType() string { } } +func (self *SEipAddress) GetCreatedAt() time.Time { + return self.CreateTime +} + func (self *SEipAddress) GetExpiredAt() time.Time { return time.Time{} } diff --git a/pkg/util/huawei/instance.go b/pkg/util/huawei/instance.go index c0e9fa2d57..b882a6b68f 100644 --- a/pkg/util/huawei/instance.go +++ b/pkg/util/huawei/instance.go @@ -271,6 +271,10 @@ func (self *SInstance) GetBillingType() string { } } +func (self *SInstance) GetCreatedAt() time.Time { + return self.Created +} + // charging_mode “0”:按需计费 “1”:按包年包月计费 func (self *SInstance) GetExpiredAt() time.Time { var expiredTime time.Time diff --git a/pkg/util/openstack/disk.go b/pkg/util/openstack/disk.go index 50f7f74e08..d12e7f9bc5 100644 --- a/pkg/util/openstack/disk.go +++ b/pkg/util/openstack/disk.go @@ -111,8 +111,8 @@ type SDisk struct { VolumeImageMetadata VolumeImageMetadata NameID string `json:"os-vol-mig-status-attr:name_id"` Bootable bool - //CreatedAt time.Time - VolumeType string + CreatedAt time.Time + VolumeType string } func (disk *SDisk) GetMetadata() *jsonutils.JSONDict { @@ -374,6 +374,10 @@ func (disk *SDisk) GetBillingType() string { return billing_api.BILLING_TYPE_POSTPAID } +func (disk *SDisk) GetCreatedAt() time.Time { + return disk.CreatedAt +} + func (disk *SDisk) GetExpiredAt() time.Time { return time.Time{} } diff --git a/pkg/util/openstack/instance.go b/pkg/util/openstack/instance.go index 036b660ec8..147eabe5e3 100644 --- a/pkg/util/openstack/instance.go +++ b/pkg/util/openstack/instance.go @@ -94,23 +94,23 @@ type SFault struct { type SInstance struct { host *SHost - DiskConfig string `json:"OS-DCF:diskConfig,omitempty"` - AvailabilityZone string `json:"OS-EXT-AZ:availability_zone,omitempty"` - Host string `json:"OS-EXT-SRV-ATTR:host,omitempty"` - Hostname string `json:"OS-EXT-SRV-ATTR:hostname,omitempty"` - HypervisorHostname string `json:"OS-EXT-SRV-ATTR:hypervisor_hostname,omitempty"` - InstanceName string `json:"OS-EXT-SRV-ATTR:instance_name,omitempty"` - KernelID string `json:"OS-EXT-SRV-ATTR:kernel_id,omitempty"` - LaunchIndex int `json:"OS-EXT-SRV-ATTR:launch_index,omitempty"` - RamdiskID string `json:"OS-EXT-SRV-ATTR:ramdisk_id,omitempty"` - ReservationID string `json:"OS-EXT-SRV-ATTR:reservation_id,omitempty"` - RootDeviceName string `json:"OS-EXT-SRV-ATTR:root_device_name,omitempty"` - UserData string `json:"OS-EXT-SRV-ATTR:user_data,omitempty"` - PowerState int `json:"OS-EXT-STS:power_state,omitempty"` - TaskState string `json:"OS-EXT-STS:task_state,omitempty"` - VmState string `json:"OS-EXT-STS:vm_state,omitempty"` - //LaunchedAt time.Time `json:"OS-SRV-USG:launched_at,omitempty"` - TerminatedAt string `json:"OS-SRV-USG:terminated_at,omitempty"` + DiskConfig string `json:"OS-DCF:diskConfig,omitempty"` + AvailabilityZone string `json:"OS-EXT-AZ:availability_zone,omitempty"` + Host string `json:"OS-EXT-SRV-ATTR:host,omitempty"` + Hostname string `json:"OS-EXT-SRV-ATTR:hostname,omitempty"` + HypervisorHostname string `json:"OS-EXT-SRV-ATTR:hypervisor_hostname,omitempty"` + InstanceName string `json:"OS-EXT-SRV-ATTR:instance_name,omitempty"` + KernelID string `json:"OS-EXT-SRV-ATTR:kernel_id,omitempty"` + LaunchIndex int `json:"OS-EXT-SRV-ATTR:launch_index,omitempty"` + RamdiskID string `json:"OS-EXT-SRV-ATTR:ramdisk_id,omitempty"` + ReservationID string `json:"OS-EXT-SRV-ATTR:reservation_id,omitempty"` + RootDeviceName string `json:"OS-EXT-SRV-ATTR:root_device_name,omitempty"` + UserData string `json:"OS-EXT-SRV-ATTR:user_data,omitempty"` + PowerState int `json:"OS-EXT-STS:power_state,omitempty"` + TaskState string `json:"OS-EXT-STS:task_state,omitempty"` + VmState string `json:"OS-EXT-STS:vm_state,omitempty"` + LaunchedAt time.Time `json:"OS-SRV-USG:launched_at,omitempty"` + TerminatedAt string `json:"OS-SRV-USG:terminated_at,omitempty"` AccessIPv4 string AccessIPv6 string @@ -676,6 +676,10 @@ func (instance *SInstance) GetBillingType() string { return billing_api.BILLING_TYPE_POSTPAID } +func (instance *SInstance) GetCreatedAt() time.Time { + return instance.Created +} + func (instance *SInstance) GetExpiredAt() time.Time { return time.Time{} } diff --git a/pkg/util/qcloud/disk.go b/pkg/util/qcloud/disk.go index 0b8ec709ca..0ba185359d 100644 --- a/pkg/util/qcloud/disk.go +++ b/pkg/util/qcloud/disk.go @@ -306,6 +306,10 @@ func (self *SDisk) GetIsAutoDelete() bool { return self.DeleteWithInstance } +func (self *SDisk) GetCreatedAt() time.Time { + return self.CreateTime +} + func (self *SDisk) GetExpiredAt() time.Time { return self.DeadlineTime } diff --git a/pkg/util/qcloud/eip.go b/pkg/util/qcloud/eip.go index 706fdfea6f..2a57374279 100644 --- a/pkg/util/qcloud/eip.go +++ b/pkg/util/qcloud/eip.go @@ -169,6 +169,10 @@ func (self *SEipAddress) GetBillingType() string { return billing_api.BILLING_TYPE_POSTPAID } +func (self *SEipAddress) GetCreatedAt() time.Time { + return self.CreatedTime +} + func (self *SEipAddress) GetExpiredAt() time.Time { return time.Time{} } diff --git a/pkg/util/qcloud/instance.go b/pkg/util/qcloud/instance.go index 21f009faec..2147a21908 100644 --- a/pkg/util/qcloud/instance.go +++ b/pkg/util/qcloud/instance.go @@ -805,6 +805,10 @@ func (self *SInstance) GetBillingType() string { } } +func (self *SInstance) GetCreatedAt() time.Time { + return self.CreatedTime +} + func (self *SInstance) GetExpiredAt() time.Time { return self.ExpiredTime } diff --git a/pkg/util/qcloud/localdisk.go b/pkg/util/qcloud/localdisk.go index 301294417f..8c28d93acd 100644 --- a/pkg/util/qcloud/localdisk.go +++ b/pkg/util/qcloud/localdisk.go @@ -82,8 +82,12 @@ func (self *SLocalDisk) GetIsAutoDelete() bool { return true } +func (self *SLocalDisk) GetCreatedAt() time.Time { + return time.Time{} +} + func (self *SLocalDisk) GetExpiredAt() time.Time { - return time.Now() + return time.Time{} } func (self *SLocalDisk) GetDiskType() string { diff --git a/pkg/util/ucloud/disk.go b/pkg/util/ucloud/disk.go index 47bf77b84d..65fff782ed 100644 --- a/pkg/util/ucloud/disk.go +++ b/pkg/util/ucloud/disk.go @@ -129,6 +129,10 @@ func (self *SDisk) GetBillingType() string { } } +func (self *SDisk) GetCreatedAt() time.Time { + return time.Unix(self.CreateTime, 0) +} + func (self *SDisk) GetExpiredAt() time.Time { return time.Unix(self.ExpiredTime, 0) } diff --git a/pkg/util/ucloud/eip.go b/pkg/util/ucloud/eip.go index fe2e6921fe..84d4995b34 100644 --- a/pkg/util/ucloud/eip.go +++ b/pkg/util/ucloud/eip.go @@ -129,6 +129,10 @@ func (self *SEip) GetBillingType() string { } } +func (self *SEip) GetCreatedAt() time.Time { + return time.Unix(self.CreateTime, 0) +} + func (self *SEip) GetExpiredAt() time.Time { return time.Unix(self.ExpireTime, 0) } diff --git a/pkg/util/ucloud/instance.go b/pkg/util/ucloud/instance.go index 0b2bcfdd6d..a56246d102 100644 --- a/pkg/util/ucloud/instance.go +++ b/pkg/util/ucloud/instance.go @@ -197,6 +197,10 @@ func (self *SInstance) GetBillingType() string { } } +func (self *SInstance) GetCreatedAt() time.Time { + return time.Unix(self.CreateTime, 0) +} + func (self *SInstance) GetExpiredAt() time.Time { return time.Unix(self.ExpireTime, 0) }