mirror of
https://github.com/yunionio/cloudpods.git
synced 2026-06-08 15:24:23 +08:00
vpcagent: models: add route tables
This commit is contained in:
@@ -21,6 +21,8 @@ import (
|
||||
type Vpc struct {
|
||||
compute_models.SVpc
|
||||
|
||||
RouteTable *RouteTable `json:"-"`
|
||||
|
||||
Wire *Wire `json:"-"`
|
||||
Networks Networks `json:"-"`
|
||||
}
|
||||
@@ -31,6 +33,18 @@ func (el *Vpc) Copy() *Vpc {
|
||||
}
|
||||
}
|
||||
|
||||
type RouteTable struct {
|
||||
compute_models.SRouteTable
|
||||
|
||||
Vpc *Vpc
|
||||
}
|
||||
|
||||
func (el *RouteTable) Copy() *RouteTable {
|
||||
return &RouteTable{
|
||||
SRouteTable: el.SRouteTable,
|
||||
}
|
||||
}
|
||||
|
||||
type Wire struct {
|
||||
compute_models.SWire
|
||||
|
||||
|
||||
@@ -41,6 +41,8 @@ type (
|
||||
Guestsecgroups map[string]*Guestsecgroup // key: guestId/secgroupId
|
||||
|
||||
DnsRecords map[string]*DnsRecord
|
||||
|
||||
RouteTables map[string]*RouteTable
|
||||
)
|
||||
|
||||
func (set Vpcs) ModelManager() mcclient_modulebase.IBaseManager {
|
||||
@@ -80,6 +82,28 @@ func (ms Vpcs) joinWires(subEntries Wires) bool {
|
||||
return correct
|
||||
}
|
||||
|
||||
func (ms Vpcs) joinRouteTables(subEntries RouteTables) bool {
|
||||
correct := true
|
||||
for _, subEntry := range subEntries {
|
||||
vpcId := subEntry.VpcId
|
||||
m, ok := ms[vpcId]
|
||||
if !ok {
|
||||
log.Warningf("vpc_id %s of route table %s(%s) is not present", vpcId, subEntry.Name, subEntry.Id)
|
||||
correct = false
|
||||
continue
|
||||
}
|
||||
subEntry.Vpc = m
|
||||
if m.RouteTable != nil {
|
||||
log.Warningf("vpc %s has more than 1 route table available, skipping %s(%s)",
|
||||
m.Name, m.Id, subEntry.Name, subEntry.Id)
|
||||
correct = false
|
||||
continue
|
||||
}
|
||||
m.RouteTable = subEntry
|
||||
}
|
||||
return correct
|
||||
}
|
||||
|
||||
func (ms Vpcs) joinNetworks(subEntries Networks) bool {
|
||||
for _, m := range ms {
|
||||
m.Networks = Networks{}
|
||||
@@ -631,3 +655,24 @@ func (set DnsRecords) Copy() apihelper.IModelSet {
|
||||
}
|
||||
return setCopy
|
||||
}
|
||||
|
||||
func (set RouteTables) ModelManager() mcclient_modulebase.IBaseManager {
|
||||
return &mcclient_modules.RouteTables
|
||||
}
|
||||
|
||||
func (set RouteTables) NewModel() db.IModel {
|
||||
return &RouteTable{}
|
||||
}
|
||||
|
||||
func (set RouteTables) AddModel(i db.IModel) {
|
||||
m := i.(*RouteTable)
|
||||
set[m.Id] = m
|
||||
}
|
||||
|
||||
func (set RouteTables) Copy() apihelper.IModelSet {
|
||||
setCopy := RouteTables{}
|
||||
for id, el := range set {
|
||||
setCopy[id] = el.Copy()
|
||||
}
|
||||
return setCopy
|
||||
}
|
||||
|
||||
@@ -34,6 +34,8 @@ type ModelSetsMaxUpdatedAt struct {
|
||||
NetworkAddresses time.Time
|
||||
|
||||
DnsRecords time.Time
|
||||
|
||||
RouteTables time.Time
|
||||
}
|
||||
|
||||
func NewModelSetsMaxUpdatedAt() *ModelSetsMaxUpdatedAt {
|
||||
@@ -51,6 +53,8 @@ func NewModelSetsMaxUpdatedAt() *ModelSetsMaxUpdatedAt {
|
||||
NetworkAddresses: apihelper.PseudoZeroTime,
|
||||
|
||||
DnsRecords: apihelper.PseudoZeroTime,
|
||||
|
||||
RouteTables: apihelper.PseudoZeroTime,
|
||||
}
|
||||
}
|
||||
|
||||
@@ -68,6 +72,8 @@ type ModelSets struct {
|
||||
NetworkAddresses NetworkAddresses
|
||||
|
||||
DnsRecords DnsRecords
|
||||
|
||||
RouteTables RouteTables
|
||||
}
|
||||
|
||||
func NewModelSets() *ModelSets {
|
||||
@@ -85,6 +91,8 @@ func NewModelSets() *ModelSets {
|
||||
NetworkAddresses: NetworkAddresses{},
|
||||
|
||||
DnsRecords: DnsRecords{},
|
||||
|
||||
RouteTables: RouteTables{},
|
||||
}
|
||||
}
|
||||
|
||||
@@ -104,6 +112,8 @@ func (mss *ModelSets) ModelSetList() []apihelper.IModelSet {
|
||||
mss.NetworkAddresses,
|
||||
|
||||
mss.DnsRecords,
|
||||
|
||||
mss.RouteTables,
|
||||
}
|
||||
}
|
||||
|
||||
@@ -126,6 +136,8 @@ func (mss *ModelSets) copy_() *ModelSets {
|
||||
NetworkAddresses: mss.NetworkAddresses.Copy().(NetworkAddresses),
|
||||
|
||||
DnsRecords: mss.DnsRecords.Copy().(DnsRecords),
|
||||
|
||||
RouteTables: mss.RouteTables.Copy().(RouteTables),
|
||||
}
|
||||
return mssCopy
|
||||
}
|
||||
@@ -164,6 +176,7 @@ func (mss *ModelSets) join() bool {
|
||||
mss.Guests.initJoin()
|
||||
var p []bool
|
||||
p = append(p, mss.Vpcs.joinWires(mss.Wires))
|
||||
p = append(p, mss.Vpcs.joinRouteTables(mss.RouteTables))
|
||||
p = append(p, mss.Wires.joinNetworks(mss.Networks))
|
||||
p = append(p, mss.Vpcs.joinNetworks(mss.Networks))
|
||||
p = append(p, mss.Networks.joinGuestnetworks(mss.Guestnetworks))
|
||||
|
||||
Reference in New Issue
Block a user