diff --git a/pkg/compute/guestdrivers/aws.go b/pkg/compute/guestdrivers/aws.go index 0327c586ce..a33db768a0 100644 --- a/pkg/compute/guestdrivers/aws.go +++ b/pkg/compute/guestdrivers/aws.go @@ -8,12 +8,13 @@ import ( "yunion.io/x/jsonutils" "yunion.io/x/log" + "yunion.io/x/pkg/utils" + "yunion.io/x/onecloud/pkg/cloudcommon/db/taskman" "yunion.io/x/onecloud/pkg/cloudprovider" "yunion.io/x/onecloud/pkg/compute/models" "yunion.io/x/onecloud/pkg/mcclient" "yunion.io/x/onecloud/pkg/util/billing" - "yunion.io/x/pkg/utils" ) type SAwsGuestDriver struct { diff --git a/pkg/compute/guestdrivers/huawei.go b/pkg/compute/guestdrivers/huawei.go index 2291da8892..9d011be163 100644 --- a/pkg/compute/guestdrivers/huawei.go +++ b/pkg/compute/guestdrivers/huawei.go @@ -7,12 +7,13 @@ import ( "yunion.io/x/jsonutils" "yunion.io/x/log" + "yunion.io/x/pkg/utils" + "yunion.io/x/onecloud/pkg/cloudcommon/db/taskman" "yunion.io/x/onecloud/pkg/cloudprovider" "yunion.io/x/onecloud/pkg/compute/models" "yunion.io/x/onecloud/pkg/mcclient" "yunion.io/x/onecloud/pkg/util/billing" - "yunion.io/x/pkg/utils" ) type SHuaweiGuestDriver struct { diff --git a/pkg/compute/guestdrivers/openstack.go b/pkg/compute/guestdrivers/openstack.go index bc68a46f1a..5fd3a2189d 100644 --- a/pkg/compute/guestdrivers/openstack.go +++ b/pkg/compute/guestdrivers/openstack.go @@ -7,6 +7,8 @@ import ( "yunion.io/x/jsonutils" "yunion.io/x/log" + "yunion.io/x/pkg/util/compare" + "yunion.io/x/onecloud/pkg/cloudcommon/db/lockman" "yunion.io/x/onecloud/pkg/cloudcommon/db/taskman" "yunion.io/x/onecloud/pkg/cloudprovider" @@ -15,7 +17,6 @@ import ( "yunion.io/x/onecloud/pkg/httperrors" "yunion.io/x/onecloud/pkg/mcclient" "yunion.io/x/onecloud/pkg/util/billing" - "yunion.io/x/pkg/util/compare" ) type SOpenStackGuestDriver struct { diff --git a/pkg/compute/models/guestnetworks.go b/pkg/compute/models/guestnetworks.go index f1932ab389..220f17acad 100644 --- a/pkg/compute/models/guestnetworks.go +++ b/pkg/compute/models/guestnetworks.go @@ -247,12 +247,23 @@ func (self *SGuestnetwork) GetTeamGuestnetwork() (*SGuestnetwork, error) { return nil, nil } - -func (self *SGuestnetwork) getJsonDescAtHost(host *SHost) jsonutils.JSONObject { - desc := jsonutils.NewDict() - +func (self *SGuestnetwork) getJsonDescAtBaremetal(host *SHost) jsonutils.JSONObject { network := self.GetNetwork() hostwire := host.getHostwireOfIdAndMac(network.WireId, self.MacAddr) + return self.getGeneralJsonDesc(host, network, hostwire) +} + +func (self *SGuestnetwork) getJsonDescAtHost(host *SHost) jsonutils.JSONObject { + network := self.GetNetwork() + hostwires := host.getHostwiresOfId(network.WireId) + if len(hostwires) > 1 { + log.Warningf("host attach to wire multiple times: %d", len(hostwires)) + } + return self.getGeneralJsonDesc(host, network, &hostwires[0]) +} + +func (self *SGuestnetwork) getGeneralJsonDesc(host *SHost, network *SNetwork, hostwire *SHostwire) jsonutils.JSONObject { + desc := jsonutils.NewDict() desc.Add(jsonutils.NewString(network.Name), "net") desc.Add(jsonutils.NewString(self.NetworkId), "net_id") diff --git a/pkg/compute/models/hosts.go b/pkg/compute/models/hosts.go index 6fb8e7dcc8..ccd1ec1cf6 100644 --- a/pkg/compute/models/hosts.go +++ b/pkg/compute/models/hosts.go @@ -1101,9 +1101,7 @@ func (self *SHost) getHostwireOfIdAndMac(wireId string, mac string) *SHostwire { hostwire.SetModelManager(HostwireManager) q := self.GetWiresQuery().Equals("wire_id", wireId) - if q.Count() > 1 { - q = q.Equals("mac_addr", mac) - } + q = q.Equals("mac_addr", mac) err := q.First(&hostwire) if err != nil { log.Errorf("getHostwireOfIdAndMac fail %s", err) diff --git a/pkg/compute/models/netinterfaces.go b/pkg/compute/models/netinterfaces.go index 42518a8e04..fdbd53cbaa 100644 --- a/pkg/compute/models/netinterfaces.go +++ b/pkg/compute/models/netinterfaces.go @@ -8,7 +8,7 @@ import ( "yunion.io/x/log" "yunion.io/x/onecloud/pkg/cloudcommon/db" "yunion.io/x/onecloud/pkg/mcclient" - "github.com/yunionio/pkg/util/regutils" + "yunion.io/x/pkg/util/regutils" ) type SNetInterface struct { @@ -173,7 +173,7 @@ func (self *SNetInterface) getServerJsonDesc() *jsonutils.JSONDict { desc := jsonutils.Marshal(self).(*jsonutils.JSONDict) gn := self.getServernetwork() if gn != nil { - desc.Update(gn.getJsonDescAtHost(self.GetBaremetal())) + desc.Update(gn.getJsonDescAtBaremetal(self.GetBaremetal())) } return desc } diff --git a/pkg/compute/models/networks.go b/pkg/compute/models/networks.go index ff0f552204..32e4ad1ac3 100644 --- a/pkg/compute/models/networks.go +++ b/pkg/compute/models/networks.go @@ -4,6 +4,7 @@ import ( "context" "database/sql" "fmt" + "strconv" "strings" "time" @@ -17,7 +18,6 @@ import ( "yunion.io/x/pkg/utils" "yunion.io/x/sqlchemy" - "strconv" "yunion.io/x/onecloud/pkg/cloudcommon/db" "yunion.io/x/onecloud/pkg/cloudcommon/db/lockman" "yunion.io/x/onecloud/pkg/cloudcommon/db/taskman" @@ -1474,8 +1474,8 @@ func (manager *SNetworkManager) ListItemFilter(ctx context.Context, q *sqlchemy. vpcs := VpcManager.Query().SubQuery() sq := wires.Query(wires.Field("id")). Join(vpcs, sqlchemy.AND( - sqlchemy.Equals(vpcs.Field("cloudregion_id"), region.GetId()), - sqlchemy.Equals(wires.Field("vpc_id"), vpcs.Field("id")))) + sqlchemy.Equals(vpcs.Field("cloudregion_id"), region.GetId()), + sqlchemy.Equals(wires.Field("vpc_id"), vpcs.Field("id")))) q = q.Filter(sqlchemy.In(q.Field("wire_id"), sq.SubQuery())) } diff --git a/pkg/compute/options/options.go b/pkg/compute/options/options.go index c0121e7033..86014296e3 100644 --- a/pkg/compute/options/options.go +++ b/pkg/compute/options/options.go @@ -20,7 +20,7 @@ type ComputeOptions struct { DefaultSecurityRules string `help:"Default security rules" default:"allow any"` DefaultAdminSecurityRules string `help:"Default admin security rules" default:""` - DefaultDiskSizeMB int `default:"10240" help:"Default disk size in MB if not specified, default to 30GiB" json:"default_disk_size"` + DefaultDiskSizeMB int `default:"10240" help:"Default disk size in MB if not specified, default to 10GiB" json:"default_disk_size"` pending_delete.SPendingDeleteOptions diff --git a/pkg/compute/storagedrivers/doc.go b/pkg/compute/storagedrivers/doc.go new file mode 100644 index 0000000000..a8e4491249 --- /dev/null +++ b/pkg/compute/storagedrivers/doc.go @@ -0,0 +1 @@ +package storagedrivers // import "yunion.io/x/onecloud/pkg/compute/storagedrivers" diff --git a/pkg/util/netutils2/macutils.go b/pkg/util/netutils2/macutils.go index 6f5e0a9ce8..32edbe8ea8 100644 --- a/pkg/util/netutils2/macutils.go +++ b/pkg/util/netutils2/macutils.go @@ -36,7 +36,7 @@ func ParseMac(macStr string) (SMacAddr, error) { func (mac SMacAddr) Add(step int) SMacAddr { mac2 := SMacAddr{} leftOver := step - for i := 5; i >= 2; i -= 1 { // skip first 2 vendor bytes + for i := 5; i >= 0; i -= 1 { // skip first 2 vendor bytes newByte := int(mac[i]) + leftOver res := 0 if newByte < 0 {