Files
cloudpods/pkg/vpcagent/ovnutil/schema.go
T

2441 lines
58 KiB
Go

// 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 ovnutil
import (
"fmt"
"yunion.io/x/pkg/errors"
)
const (
ErrUnknownColumn = errors.Error("unknown column")
ErrUnknownTable = errors.Error("unknown table")
)
type IRow interface {
SetColumn(name string, val interface{}) error
OvnTableName() string
OvnIsRoot() bool
OvnUuid() string
OvnArgs() []string
OvnSetExternalIds(k, v string)
OvnGetExternalIds(k string) (string, bool)
OvnRemoveExternalIds(k string) (string, bool)
}
type ITable interface {
NewRow() IRow
Rows() []IRow
OvnTableName() string
OvnIsRoot() bool
}
type OVNNorthbound struct {
SSL SSLTable
NBGlobal NBGlobalTable
LogicalRouterStaticRoute LogicalRouterStaticRouteTable
LoadBalancer LoadBalancerTable
Connection ConnectionTable
DNS DNSTable
QoS QoSTable
LogicalRouter LogicalRouterTable
LogicalSwitchPort LogicalSwitchPortTable
GatewayChassis GatewayChassisTable
LogicalRouterPort LogicalRouterPortTable
LogicalSwitch LogicalSwitchTable
NAT NATTable
DHCPOptions DHCPOptionsTable
ACL ACLTable
AddressSet AddressSetTable
}
func (db *OVNNorthbound) FindOneMatchNonZeros(irow IRow) (r IRow) {
switch row := irow.(type) {
case *GatewayChassis:
if r := db.GatewayChassis.FindOneMatchNonZeros(row); r != nil {
return r
}
return nil
case *LogicalRouterPort:
if r := db.LogicalRouterPort.FindOneMatchNonZeros(row); r != nil {
return r
}
return nil
case *LogicalSwitch:
if r := db.LogicalSwitch.FindOneMatchNonZeros(row); r != nil {
return r
}
return nil
case *NAT:
if r := db.NAT.FindOneMatchNonZeros(row); r != nil {
return r
}
return nil
case *DHCPOptions:
if r := db.DHCPOptions.FindOneMatchNonZeros(row); r != nil {
return r
}
return nil
case *ACL:
if r := db.ACL.FindOneMatchNonZeros(row); r != nil {
return r
}
return nil
case *AddressSet:
if r := db.AddressSet.FindOneMatchNonZeros(row); r != nil {
return r
}
return nil
case *SSL:
if r := db.SSL.FindOneMatchNonZeros(row); r != nil {
return r
}
return nil
case *NBGlobal:
if r := db.NBGlobal.FindOneMatchNonZeros(row); r != nil {
return r
}
return nil
case *LogicalRouterStaticRoute:
if r := db.LogicalRouterStaticRoute.FindOneMatchNonZeros(row); r != nil {
return r
}
return nil
case *LoadBalancer:
if r := db.LoadBalancer.FindOneMatchNonZeros(row); r != nil {
return r
}
return nil
case *Connection:
if r := db.Connection.FindOneMatchNonZeros(row); r != nil {
return r
}
return nil
case *DNS:
if r := db.DNS.FindOneMatchNonZeros(row); r != nil {
return r
}
return nil
case *QoS:
if r := db.QoS.FindOneMatchNonZeros(row); r != nil {
return r
}
return nil
case *LogicalRouter:
if r := db.LogicalRouter.FindOneMatchNonZeros(row); r != nil {
return r
}
return nil
case *LogicalSwitchPort:
if r := db.LogicalSwitchPort.FindOneMatchNonZeros(row); r != nil {
return r
}
return nil
}
panic(ErrUnknownTable)
}
type LogicalRouter struct {
Uuid string `json:"-"`
Enabled *bool `json:"enabled"`
Nat []string `json:"nat"`
LoadBalancer []string `json:"load_balancer"`
Options map[string]string `json:"options"`
ExternalIds map[string]string `json:"external_ids"`
Name string `json:"name"`
Ports []string `json:"ports"`
StaticRoutes []string `json:"static_routes"`
}
func (row *LogicalRouter) OvnTableName() string {
return "Logical_Router"
}
func (row *LogicalRouter) OvnIsRoot() bool {
return true
}
func (row *LogicalRouter) OvnUuid() string {
return row.Uuid
}
func (row *LogicalRouter) OvnSetExternalIds(k, v string) {
if row.ExternalIds == nil {
row.ExternalIds = map[string]string{}
}
row.ExternalIds[k] = v
}
func (row *LogicalRouter) OvnGetExternalIds(k string) (string, bool) {
if row.ExternalIds == nil {
return "", false
}
r, ok := row.ExternalIds[k]
return r, ok
}
func (row *LogicalRouter) OvnRemoveExternalIds(k string) (string, bool) {
if row.ExternalIds == nil {
return "", false
}
r, ok := row.ExternalIds[k]
if ok {
delete(row.ExternalIds, k)
}
return r, ok
}
func (row *LogicalRouter) SetColumn(name string, val interface{}) (err error) {
defer func() {
if panicErr := recover(); panicErr != nil {
err = errors.Wrapf(panicErr.(error), "%s: %#v", name, fmt.Sprintf("%#v", val))
}
}()
switch name {
case "_uuid":
row.Uuid = ensureUuid(val)
case "nat":
row.Nat = ensureUuidMultiples(val)
case "load_balancer":
row.LoadBalancer = ensureUuidMultiples(val)
case "options":
row.Options = ensureMapStringString(val)
case "external_ids":
row.ExternalIds = ensureMapStringString(val)
case "name":
row.Name = ensureString(val)
case "ports":
row.Ports = ensureUuidMultiples(val)
case "static_routes":
row.StaticRoutes = ensureUuidMultiples(val)
case "enabled":
row.Enabled = ensureBooleanOptional(val)
default:
panic(ErrUnknownColumn)
}
return
}
func (row *LogicalRouter) MatchNonZeros(row1 *LogicalRouter) bool {
if !matchBooleanOptionalIfNonZero(row.Enabled, row1.Enabled) {
return false
}
if !matchUuidMultiplesIfNonZero(row.Nat, row1.Nat) {
return false
}
if !matchUuidMultiplesIfNonZero(row.LoadBalancer, row1.LoadBalancer) {
return false
}
if !matchMapStringStringIfNonZero(row.Options, row1.Options) {
return false
}
if !matchMapStringStringIfNonZero(row.ExternalIds, row1.ExternalIds) {
return false
}
if !matchStringIfNonZero(row.Name, row1.Name) {
return false
}
if !matchUuidMultiplesIfNonZero(row.Ports, row1.Ports) {
return false
}
if !matchUuidMultiplesIfNonZero(row.StaticRoutes, row1.StaticRoutes) {
return false
}
return true
}
func (row *LogicalRouter) OvnArgs() []string {
r := []string{}
r = append(r, OvnArgsUuidMultiples("nat", row.Nat)...)
r = append(r, OvnArgsUuidMultiples("load_balancer", row.LoadBalancer)...)
r = append(r, OvnArgsMapStringString("options", row.Options)...)
r = append(r, OvnArgsMapStringString("external_ids", row.ExternalIds)...)
r = append(r, OvnArgsString("name", row.Name)...)
r = append(r, OvnArgsUuidMultiples("ports", row.Ports)...)
r = append(r, OvnArgsUuidMultiples("static_routes", row.StaticRoutes)...)
r = append(r, OvnArgsBooleanOptional("enabled", row.Enabled)...)
return r
}
type LogicalRouterTable []LogicalRouter
func (tbl *LogicalRouterTable) NewRow() IRow {
*tbl = append(*tbl, LogicalRouter{})
return &(*tbl)[len(*tbl)-1]
}
func (tbl LogicalRouterTable) OvnTableName() string {
return "Logical_Router"
}
func (tbl LogicalRouterTable) OvnIsRoot() bool {
return true
}
func (tbl LogicalRouterTable) Rows() []IRow {
r := make([]IRow, len(tbl))
for i := range tbl {
r[i] = &tbl[i]
}
return r
}
func (tbl LogicalRouterTable) FindOneMatchNonZeros(row1 *LogicalRouter) *LogicalRouter {
for i := range tbl {
row := &tbl[i]
if row.MatchNonZeros(row1) {
return row
}
}
return nil
}
type LogicalSwitchPort struct {
Uuid string `json:"-"`
PortSecurity []string `json:"port_security"`
Type string `json:"type"`
Dhcpv4Options *string `json:"dhcpv4_options"`
Options map[string]string `json:"options"`
Dhcpv6Options *string `json:"dhcpv6_options"`
ParentName *string `json:"parent_name"`
Enabled *bool `json:"enabled"`
ExternalIds map[string]string `json:"external_ids"`
TagRequest *int64 `json:"tag_request"`
Addresses []string `json:"addresses"`
DynamicAddresses *string `json:"dynamic_addresses"`
Name string `json:"name"`
Tag *int64 `json:"tag"`
Up *bool `json:"up"`
}
func (row *LogicalSwitchPort) OvnTableName() string {
return "Logical_Switch_Port"
}
func (row *LogicalSwitchPort) OvnIsRoot() bool {
return false
}
func (row *LogicalSwitchPort) OvnUuid() string {
return row.Uuid
}
func (row *LogicalSwitchPort) OvnSetExternalIds(k, v string) {
if row.ExternalIds == nil {
row.ExternalIds = map[string]string{}
}
row.ExternalIds[k] = v
}
func (row *LogicalSwitchPort) OvnGetExternalIds(k string) (string, bool) {
if row.ExternalIds == nil {
return "", false
}
r, ok := row.ExternalIds[k]
return r, ok
}
func (row *LogicalSwitchPort) OvnRemoveExternalIds(k string) (string, bool) {
if row.ExternalIds == nil {
return "", false
}
r, ok := row.ExternalIds[k]
if ok {
delete(row.ExternalIds, k)
}
return r, ok
}
func (row *LogicalSwitchPort) SetColumn(name string, val interface{}) (err error) {
defer func() {
if panicErr := recover(); panicErr != nil {
err = errors.Wrapf(panicErr.(error), "%s: %#v", name, fmt.Sprintf("%#v", val))
}
}()
switch name {
case "_uuid":
row.Uuid = ensureUuid(val)
case "port_security":
row.PortSecurity = ensureStringMultiples(val)
case "type":
row.Type = ensureString(val)
case "dhcpv4_options":
row.Dhcpv4Options = ensureUuidOptional(val)
case "options":
row.Options = ensureMapStringString(val)
case "dhcpv6_options":
row.Dhcpv6Options = ensureUuidOptional(val)
case "parent_name":
row.ParentName = ensureStringOptional(val)
case "enabled":
row.Enabled = ensureBooleanOptional(val)
case "name":
row.Name = ensureString(val)
case "tag":
row.Tag = ensureIntegerOptional(val)
case "up":
row.Up = ensureBooleanOptional(val)
case "external_ids":
row.ExternalIds = ensureMapStringString(val)
case "tag_request":
row.TagRequest = ensureIntegerOptional(val)
case "addresses":
row.Addresses = ensureStringMultiples(val)
case "dynamic_addresses":
row.DynamicAddresses = ensureStringOptional(val)
default:
panic(ErrUnknownColumn)
}
return
}
func (row *LogicalSwitchPort) MatchNonZeros(row1 *LogicalSwitchPort) bool {
if !matchStringMultiplesIfNonZero(row.Addresses, row1.Addresses) {
return false
}
if !matchStringOptionalIfNonZero(row.DynamicAddresses, row1.DynamicAddresses) {
return false
}
if !matchStringIfNonZero(row.Name, row1.Name) {
return false
}
if !matchIntegerOptionalIfNonZero(row.Tag, row1.Tag) {
return false
}
if !matchBooleanOptionalIfNonZero(row.Up, row1.Up) {
return false
}
if !matchMapStringStringIfNonZero(row.ExternalIds, row1.ExternalIds) {
return false
}
if !matchIntegerOptionalIfNonZero(row.TagRequest, row1.TagRequest) {
return false
}
if !matchUuidOptionalIfNonZero(row.Dhcpv4Options, row1.Dhcpv4Options) {
return false
}
if !matchStringMultiplesIfNonZero(row.PortSecurity, row1.PortSecurity) {
return false
}
if !matchStringIfNonZero(row.Type, row1.Type) {
return false
}
if !matchStringOptionalIfNonZero(row.ParentName, row1.ParentName) {
return false
}
if !matchBooleanOptionalIfNonZero(row.Enabled, row1.Enabled) {
return false
}
if !matchMapStringStringIfNonZero(row.Options, row1.Options) {
return false
}
if !matchUuidOptionalIfNonZero(row.Dhcpv6Options, row1.Dhcpv6Options) {
return false
}
return true
}
func (row *LogicalSwitchPort) OvnArgs() []string {
r := []string{}
r = append(r, OvnArgsStringMultiples("port_security", row.PortSecurity)...)
r = append(r, OvnArgsString("type", row.Type)...)
r = append(r, OvnArgsUuidOptional("dhcpv4_options", row.Dhcpv4Options)...)
r = append(r, OvnArgsMapStringString("options", row.Options)...)
r = append(r, OvnArgsUuidOptional("dhcpv6_options", row.Dhcpv6Options)...)
r = append(r, OvnArgsStringOptional("parent_name", row.ParentName)...)
r = append(r, OvnArgsBooleanOptional("enabled", row.Enabled)...)
r = append(r, OvnArgsIntegerOptional("tag", row.Tag)...)
r = append(r, OvnArgsBooleanOptional("up", row.Up)...)
r = append(r, OvnArgsMapStringString("external_ids", row.ExternalIds)...)
r = append(r, OvnArgsIntegerOptional("tag_request", row.TagRequest)...)
r = append(r, OvnArgsStringMultiples("addresses", row.Addresses)...)
r = append(r, OvnArgsStringOptional("dynamic_addresses", row.DynamicAddresses)...)
r = append(r, OvnArgsString("name", row.Name)...)
return r
}
type LogicalSwitchPortTable []LogicalSwitchPort
func (tbl *LogicalSwitchPortTable) NewRow() IRow {
*tbl = append(*tbl, LogicalSwitchPort{})
return &(*tbl)[len(*tbl)-1]
}
func (tbl LogicalSwitchPortTable) OvnTableName() string {
return "Logical_Switch_Port"
}
func (tbl LogicalSwitchPortTable) OvnIsRoot() bool {
return false
}
func (tbl LogicalSwitchPortTable) Rows() []IRow {
r := make([]IRow, len(tbl))
for i := range tbl {
r[i] = &tbl[i]
}
return r
}
func (tbl LogicalSwitchPortTable) FindOneMatchNonZeros(row1 *LogicalSwitchPort) *LogicalSwitchPort {
for i := range tbl {
row := &tbl[i]
if row.MatchNonZeros(row1) {
return row
}
}
return nil
}
type Connection struct {
Uuid string `json:"-"`
Status map[string]string `json:"status"`
Target string `json:"target"`
MaxBackoff *int64 `json:"max_backoff"`
InactivityProbe *int64 `json:"inactivity_probe"`
OtherConfig map[string]string `json:"other_config"`
ExternalIds map[string]string `json:"external_ids"`
IsConnected bool `json:"is_connected"`
}
func (row *Connection) OvnTableName() string {
return "Connection"
}
func (row *Connection) OvnIsRoot() bool {
return false
}
func (row *Connection) OvnUuid() string {
return row.Uuid
}
func (row *Connection) OvnSetExternalIds(k, v string) {
if row.ExternalIds == nil {
row.ExternalIds = map[string]string{}
}
row.ExternalIds[k] = v
}
func (row *Connection) OvnGetExternalIds(k string) (string, bool) {
if row.ExternalIds == nil {
return "", false
}
r, ok := row.ExternalIds[k]
return r, ok
}
func (row *Connection) OvnRemoveExternalIds(k string) (string, bool) {
if row.ExternalIds == nil {
return "", false
}
r, ok := row.ExternalIds[k]
if ok {
delete(row.ExternalIds, k)
}
return r, ok
}
func (row *Connection) SetColumn(name string, val interface{}) (err error) {
defer func() {
if panicErr := recover(); panicErr != nil {
err = errors.Wrapf(panicErr.(error), "%s: %#v", name, fmt.Sprintf("%#v", val))
}
}()
switch name {
case "_uuid":
row.Uuid = ensureUuid(val)
case "target":
row.Target = ensureString(val)
case "max_backoff":
row.MaxBackoff = ensureIntegerOptional(val)
case "inactivity_probe":
row.InactivityProbe = ensureIntegerOptional(val)
case "other_config":
row.OtherConfig = ensureMapStringString(val)
case "external_ids":
row.ExternalIds = ensureMapStringString(val)
case "is_connected":
row.IsConnected = ensureBoolean(val)
case "status":
row.Status = ensureMapStringString(val)
default:
panic(ErrUnknownColumn)
}
return
}
func (row *Connection) MatchNonZeros(row1 *Connection) bool {
if !matchMapStringStringIfNonZero(row.ExternalIds, row1.ExternalIds) {
return false
}
if !matchBooleanIfNonZero(row.IsConnected, row1.IsConnected) {
return false
}
if !matchMapStringStringIfNonZero(row.Status, row1.Status) {
return false
}
if !matchStringIfNonZero(row.Target, row1.Target) {
return false
}
if !matchIntegerOptionalIfNonZero(row.MaxBackoff, row1.MaxBackoff) {
return false
}
if !matchIntegerOptionalIfNonZero(row.InactivityProbe, row1.InactivityProbe) {
return false
}
if !matchMapStringStringIfNonZero(row.OtherConfig, row1.OtherConfig) {
return false
}
return true
}
func (row *Connection) OvnArgs() []string {
r := []string{}
r = append(r, OvnArgsBoolean("is_connected", row.IsConnected)...)
r = append(r, OvnArgsMapStringString("status", row.Status)...)
r = append(r, OvnArgsString("target", row.Target)...)
r = append(r, OvnArgsIntegerOptional("max_backoff", row.MaxBackoff)...)
r = append(r, OvnArgsIntegerOptional("inactivity_probe", row.InactivityProbe)...)
r = append(r, OvnArgsMapStringString("other_config", row.OtherConfig)...)
r = append(r, OvnArgsMapStringString("external_ids", row.ExternalIds)...)
return r
}
type ConnectionTable []Connection
func (tbl *ConnectionTable) NewRow() IRow {
*tbl = append(*tbl, Connection{})
return &(*tbl)[len(*tbl)-1]
}
func (tbl ConnectionTable) OvnTableName() string {
return "Connection"
}
func (tbl ConnectionTable) OvnIsRoot() bool {
return false
}
func (tbl ConnectionTable) Rows() []IRow {
r := make([]IRow, len(tbl))
for i := range tbl {
r[i] = &tbl[i]
}
return r
}
func (tbl ConnectionTable) FindOneMatchNonZeros(row1 *Connection) *Connection {
for i := range tbl {
row := &tbl[i]
if row.MatchNonZeros(row1) {
return row
}
}
return nil
}
type DNS struct {
Uuid string `json:"-"`
Records map[string]string `json:"records"`
ExternalIds map[string]string `json:"external_ids"`
}
func (row *DNS) OvnTableName() string {
return "DNS"
}
func (row *DNS) OvnIsRoot() bool {
return true
}
func (row *DNS) OvnUuid() string {
return row.Uuid
}
func (row *DNS) OvnSetExternalIds(k, v string) {
if row.ExternalIds == nil {
row.ExternalIds = map[string]string{}
}
row.ExternalIds[k] = v
}
func (row *DNS) OvnGetExternalIds(k string) (string, bool) {
if row.ExternalIds == nil {
return "", false
}
r, ok := row.ExternalIds[k]
return r, ok
}
func (row *DNS) OvnRemoveExternalIds(k string) (string, bool) {
if row.ExternalIds == nil {
return "", false
}
r, ok := row.ExternalIds[k]
if ok {
delete(row.ExternalIds, k)
}
return r, ok
}
func (row *DNS) SetColumn(name string, val interface{}) (err error) {
defer func() {
if panicErr := recover(); panicErr != nil {
err = errors.Wrapf(panicErr.(error), "%s: %#v", name, fmt.Sprintf("%#v", val))
}
}()
switch name {
case "_uuid":
row.Uuid = ensureUuid(val)
case "records":
row.Records = ensureMapStringString(val)
case "external_ids":
row.ExternalIds = ensureMapStringString(val)
default:
panic(ErrUnknownColumn)
}
return
}
func (row *DNS) MatchNonZeros(row1 *DNS) bool {
if !matchMapStringStringIfNonZero(row.Records, row1.Records) {
return false
}
if !matchMapStringStringIfNonZero(row.ExternalIds, row1.ExternalIds) {
return false
}
return true
}
func (row *DNS) OvnArgs() []string {
r := []string{}
r = append(r, OvnArgsMapStringString("records", row.Records)...)
r = append(r, OvnArgsMapStringString("external_ids", row.ExternalIds)...)
return r
}
type DNSTable []DNS
func (tbl *DNSTable) NewRow() IRow {
*tbl = append(*tbl, DNS{})
return &(*tbl)[len(*tbl)-1]
}
func (tbl DNSTable) OvnTableName() string {
return "DNS"
}
func (tbl DNSTable) OvnIsRoot() bool {
return true
}
func (tbl DNSTable) Rows() []IRow {
r := make([]IRow, len(tbl))
for i := range tbl {
r[i] = &tbl[i]
}
return r
}
func (tbl DNSTable) FindOneMatchNonZeros(row1 *DNS) *DNS {
for i := range tbl {
row := &tbl[i]
if row.MatchNonZeros(row1) {
return row
}
}
return nil
}
type QoS struct {
Uuid string `json:"-"`
Match string `json:"match"`
Action map[string]int64 `json:"action"`
Bandwidth map[string]int64 `json:"bandwidth"`
ExternalIds map[string]string `json:"external_ids"`
Priority int64 `json:"priority"`
Direction string `json:"direction"`
}
func (row *QoS) OvnTableName() string {
return "QoS"
}
func (row *QoS) OvnIsRoot() bool {
return false
}
func (row *QoS) OvnUuid() string {
return row.Uuid
}
func (row *QoS) OvnSetExternalIds(k, v string) {
if row.ExternalIds == nil {
row.ExternalIds = map[string]string{}
}
row.ExternalIds[k] = v
}
func (row *QoS) OvnGetExternalIds(k string) (string, bool) {
if row.ExternalIds == nil {
return "", false
}
r, ok := row.ExternalIds[k]
return r, ok
}
func (row *QoS) OvnRemoveExternalIds(k string) (string, bool) {
if row.ExternalIds == nil {
return "", false
}
r, ok := row.ExternalIds[k]
if ok {
delete(row.ExternalIds, k)
}
return r, ok
}
func (row *QoS) SetColumn(name string, val interface{}) (err error) {
defer func() {
if panicErr := recover(); panicErr != nil {
err = errors.Wrapf(panicErr.(error), "%s: %#v", name, fmt.Sprintf("%#v", val))
}
}()
switch name {
case "_uuid":
row.Uuid = ensureUuid(val)
case "priority":
row.Priority = ensureInteger(val)
case "direction":
row.Direction = ensureString(val)
case "match":
row.Match = ensureString(val)
case "action":
row.Action = ensureMapStringInteger(val)
case "bandwidth":
row.Bandwidth = ensureMapStringInteger(val)
case "external_ids":
row.ExternalIds = ensureMapStringString(val)
default:
panic(ErrUnknownColumn)
}
return
}
func (row *QoS) MatchNonZeros(row1 *QoS) bool {
if !matchStringIfNonZero(row.Match, row1.Match) {
return false
}
if !matchMapStringIntegerIfNonZero(row.Action, row1.Action) {
return false
}
if !matchMapStringIntegerIfNonZero(row.Bandwidth, row1.Bandwidth) {
return false
}
if !matchMapStringStringIfNonZero(row.ExternalIds, row1.ExternalIds) {
return false
}
if !matchIntegerIfNonZero(row.Priority, row1.Priority) {
return false
}
if !matchStringIfNonZero(row.Direction, row1.Direction) {
return false
}
return true
}
func (row *QoS) OvnArgs() []string {
r := []string{}
r = append(r, OvnArgsInteger("priority", row.Priority)...)
r = append(r, OvnArgsString("direction", row.Direction)...)
r = append(r, OvnArgsString("match", row.Match)...)
r = append(r, OvnArgsMapStringInteger("action", row.Action)...)
r = append(r, OvnArgsMapStringInteger("bandwidth", row.Bandwidth)...)
r = append(r, OvnArgsMapStringString("external_ids", row.ExternalIds)...)
return r
}
type QoSTable []QoS
func (tbl *QoSTable) NewRow() IRow {
*tbl = append(*tbl, QoS{})
return &(*tbl)[len(*tbl)-1]
}
func (tbl QoSTable) OvnTableName() string {
return "QoS"
}
func (tbl QoSTable) OvnIsRoot() bool {
return false
}
func (tbl QoSTable) Rows() []IRow {
r := make([]IRow, len(tbl))
for i := range tbl {
r[i] = &tbl[i]
}
return r
}
func (tbl QoSTable) FindOneMatchNonZeros(row1 *QoS) *QoS {
for i := range tbl {
row := &tbl[i]
if row.MatchNonZeros(row1) {
return row
}
}
return nil
}
type GatewayChassis struct {
Uuid string `json:"-"`
Name string `json:"name"`
ChassisName string `json:"chassis_name"`
Priority int64 `json:"priority"`
ExternalIds map[string]string `json:"external_ids"`
Options map[string]string `json:"options"`
}
func (row *GatewayChassis) OvnTableName() string {
return "Gateway_Chassis"
}
func (row *GatewayChassis) OvnIsRoot() bool {
return false
}
func (row *GatewayChassis) OvnUuid() string {
return row.Uuid
}
func (row *GatewayChassis) OvnSetExternalIds(k, v string) {
if row.ExternalIds == nil {
row.ExternalIds = map[string]string{}
}
row.ExternalIds[k] = v
}
func (row *GatewayChassis) OvnGetExternalIds(k string) (string, bool) {
if row.ExternalIds == nil {
return "", false
}
r, ok := row.ExternalIds[k]
return r, ok
}
func (row *GatewayChassis) OvnRemoveExternalIds(k string) (string, bool) {
if row.ExternalIds == nil {
return "", false
}
r, ok := row.ExternalIds[k]
if ok {
delete(row.ExternalIds, k)
}
return r, ok
}
func (row *GatewayChassis) SetColumn(name string, val interface{}) (err error) {
defer func() {
if panicErr := recover(); panicErr != nil {
err = errors.Wrapf(panicErr.(error), "%s: %#v", name, fmt.Sprintf("%#v", val))
}
}()
switch name {
case "_uuid":
row.Uuid = ensureUuid(val)
case "name":
row.Name = ensureString(val)
case "chassis_name":
row.ChassisName = ensureString(val)
case "priority":
row.Priority = ensureInteger(val)
case "external_ids":
row.ExternalIds = ensureMapStringString(val)
case "options":
row.Options = ensureMapStringString(val)
default:
panic(ErrUnknownColumn)
}
return
}
func (row *GatewayChassis) MatchNonZeros(row1 *GatewayChassis) bool {
if !matchStringIfNonZero(row.ChassisName, row1.ChassisName) {
return false
}
if !matchIntegerIfNonZero(row.Priority, row1.Priority) {
return false
}
if !matchMapStringStringIfNonZero(row.ExternalIds, row1.ExternalIds) {
return false
}
if !matchMapStringStringIfNonZero(row.Options, row1.Options) {
return false
}
if !matchStringIfNonZero(row.Name, row1.Name) {
return false
}
return true
}
func (row *GatewayChassis) OvnArgs() []string {
r := []string{}
r = append(r, OvnArgsString("name", row.Name)...)
r = append(r, OvnArgsString("chassis_name", row.ChassisName)...)
r = append(r, OvnArgsInteger("priority", row.Priority)...)
r = append(r, OvnArgsMapStringString("external_ids", row.ExternalIds)...)
r = append(r, OvnArgsMapStringString("options", row.Options)...)
return r
}
type GatewayChassisTable []GatewayChassis
func (tbl *GatewayChassisTable) NewRow() IRow {
*tbl = append(*tbl, GatewayChassis{})
return &(*tbl)[len(*tbl)-1]
}
func (tbl GatewayChassisTable) OvnTableName() string {
return "Gateway_Chassis"
}
func (tbl GatewayChassisTable) OvnIsRoot() bool {
return false
}
func (tbl GatewayChassisTable) Rows() []IRow {
r := make([]IRow, len(tbl))
for i := range tbl {
r[i] = &tbl[i]
}
return r
}
func (tbl GatewayChassisTable) FindOneMatchNonZeros(row1 *GatewayChassis) *GatewayChassis {
for i := range tbl {
row := &tbl[i]
if row.MatchNonZeros(row1) {
return row
}
}
return nil
}
type LogicalRouterPort struct {
Uuid string `json:"-"`
Networks []string `json:"networks"`
ExternalIds map[string]string `json:"external_ids"`
Enabled *bool `json:"enabled"`
Peer *string `json:"peer"`
Ipv6RaConfigs map[string]string `json:"ipv6_ra_configs"`
GatewayChassis []string `json:"gateway_chassis"`
Mac string `json:"mac"`
Name string `json:"name"`
Options map[string]string `json:"options"`
}
func (row *LogicalRouterPort) OvnTableName() string {
return "Logical_Router_Port"
}
func (row *LogicalRouterPort) OvnIsRoot() bool {
return false
}
func (row *LogicalRouterPort) OvnUuid() string {
return row.Uuid
}
func (row *LogicalRouterPort) OvnSetExternalIds(k, v string) {
if row.ExternalIds == nil {
row.ExternalIds = map[string]string{}
}
row.ExternalIds[k] = v
}
func (row *LogicalRouterPort) OvnGetExternalIds(k string) (string, bool) {
if row.ExternalIds == nil {
return "", false
}
r, ok := row.ExternalIds[k]
return r, ok
}
func (row *LogicalRouterPort) OvnRemoveExternalIds(k string) (string, bool) {
if row.ExternalIds == nil {
return "", false
}
r, ok := row.ExternalIds[k]
if ok {
delete(row.ExternalIds, k)
}
return r, ok
}
func (row *LogicalRouterPort) SetColumn(name string, val interface{}) (err error) {
defer func() {
if panicErr := recover(); panicErr != nil {
err = errors.Wrapf(panicErr.(error), "%s: %#v", name, fmt.Sprintf("%#v", val))
}
}()
switch name {
case "_uuid":
row.Uuid = ensureUuid(val)
case "peer":
row.Peer = ensureStringOptional(val)
case "ipv6_ra_configs":
row.Ipv6RaConfigs = ensureMapStringString(val)
case "gateway_chassis":
row.GatewayChassis = ensureUuidMultiples(val)
case "mac":
row.Mac = ensureString(val)
case "name":
row.Name = ensureString(val)
case "options":
row.Options = ensureMapStringString(val)
case "networks":
row.Networks = ensureStringMultiples(val)
case "external_ids":
row.ExternalIds = ensureMapStringString(val)
case "enabled":
row.Enabled = ensureBooleanOptional(val)
default:
panic(ErrUnknownColumn)
}
return
}
func (row *LogicalRouterPort) MatchNonZeros(row1 *LogicalRouterPort) bool {
if !matchMapStringStringIfNonZero(row.ExternalIds, row1.ExternalIds) {
return false
}
if !matchBooleanOptionalIfNonZero(row.Enabled, row1.Enabled) {
return false
}
if !matchStringMultiplesIfNonZero(row.Networks, row1.Networks) {
return false
}
if !matchMapStringStringIfNonZero(row.Ipv6RaConfigs, row1.Ipv6RaConfigs) {
return false
}
if !matchUuidMultiplesIfNonZero(row.GatewayChassis, row1.GatewayChassis) {
return false
}
if !matchStringIfNonZero(row.Mac, row1.Mac) {
return false
}
if !matchStringIfNonZero(row.Name, row1.Name) {
return false
}
if !matchMapStringStringIfNonZero(row.Options, row1.Options) {
return false
}
if !matchStringOptionalIfNonZero(row.Peer, row1.Peer) {
return false
}
return true
}
func (row *LogicalRouterPort) OvnArgs() []string {
r := []string{}
r = append(r, OvnArgsString("mac", row.Mac)...)
r = append(r, OvnArgsString("name", row.Name)...)
r = append(r, OvnArgsMapStringString("options", row.Options)...)
r = append(r, OvnArgsStringOptional("peer", row.Peer)...)
r = append(r, OvnArgsMapStringString("ipv6_ra_configs", row.Ipv6RaConfigs)...)
r = append(r, OvnArgsUuidMultiples("gateway_chassis", row.GatewayChassis)...)
r = append(r, OvnArgsMapStringString("external_ids", row.ExternalIds)...)
r = append(r, OvnArgsBooleanOptional("enabled", row.Enabled)...)
r = append(r, OvnArgsStringMultiples("networks", row.Networks)...)
return r
}
type LogicalRouterPortTable []LogicalRouterPort
func (tbl *LogicalRouterPortTable) NewRow() IRow {
*tbl = append(*tbl, LogicalRouterPort{})
return &(*tbl)[len(*tbl)-1]
}
func (tbl LogicalRouterPortTable) OvnTableName() string {
return "Logical_Router_Port"
}
func (tbl LogicalRouterPortTable) OvnIsRoot() bool {
return false
}
func (tbl LogicalRouterPortTable) Rows() []IRow {
r := make([]IRow, len(tbl))
for i := range tbl {
r[i] = &tbl[i]
}
return r
}
func (tbl LogicalRouterPortTable) FindOneMatchNonZeros(row1 *LogicalRouterPort) *LogicalRouterPort {
for i := range tbl {
row := &tbl[i]
if row.MatchNonZeros(row1) {
return row
}
}
return nil
}
type ACL struct {
Uuid string `json:"-"`
Direction string `json:"direction"`
Match string `json:"match"`
Action string `json:"action"`
Log bool `json:"log"`
Severity *string `json:"severity"`
ExternalIds map[string]string `json:"external_ids"`
Name *string `json:"name"`
Priority int64 `json:"priority"`
}
func (row *ACL) OvnTableName() string {
return "ACL"
}
func (row *ACL) OvnIsRoot() bool {
return false
}
func (row *ACL) OvnUuid() string {
return row.Uuid
}
func (row *ACL) OvnSetExternalIds(k, v string) {
if row.ExternalIds == nil {
row.ExternalIds = map[string]string{}
}
row.ExternalIds[k] = v
}
func (row *ACL) OvnGetExternalIds(k string) (string, bool) {
if row.ExternalIds == nil {
return "", false
}
r, ok := row.ExternalIds[k]
return r, ok
}
func (row *ACL) OvnRemoveExternalIds(k string) (string, bool) {
if row.ExternalIds == nil {
return "", false
}
r, ok := row.ExternalIds[k]
if ok {
delete(row.ExternalIds, k)
}
return r, ok
}
func (row *ACL) SetColumn(name string, val interface{}) (err error) {
defer func() {
if panicErr := recover(); panicErr != nil {
err = errors.Wrapf(panicErr.(error), "%s: %#v", name, fmt.Sprintf("%#v", val))
}
}()
switch name {
case "_uuid":
row.Uuid = ensureUuid(val)
case "match":
row.Match = ensureString(val)
case "action":
row.Action = ensureString(val)
case "log":
row.Log = ensureBoolean(val)
case "severity":
row.Severity = ensureStringOptional(val)
case "external_ids":
row.ExternalIds = ensureMapStringString(val)
case "name":
row.Name = ensureStringOptional(val)
case "priority":
row.Priority = ensureInteger(val)
case "direction":
row.Direction = ensureString(val)
default:
panic(ErrUnknownColumn)
}
return
}
func (row *ACL) MatchNonZeros(row1 *ACL) bool {
if !matchStringIfNonZero(row.Action, row1.Action) {
return false
}
if !matchBooleanIfNonZero(row.Log, row1.Log) {
return false
}
if !matchStringOptionalIfNonZero(row.Severity, row1.Severity) {
return false
}
if !matchMapStringStringIfNonZero(row.ExternalIds, row1.ExternalIds) {
return false
}
if !matchStringOptionalIfNonZero(row.Name, row1.Name) {
return false
}
if !matchIntegerIfNonZero(row.Priority, row1.Priority) {
return false
}
if !matchStringIfNonZero(row.Direction, row1.Direction) {
return false
}
if !matchStringIfNonZero(row.Match, row1.Match) {
return false
}
return true
}
func (row *ACL) OvnArgs() []string {
r := []string{}
r = append(r, OvnArgsStringOptional("name", row.Name)...)
r = append(r, OvnArgsInteger("priority", row.Priority)...)
r = append(r, OvnArgsString("direction", row.Direction)...)
r = append(r, OvnArgsString("match", row.Match)...)
r = append(r, OvnArgsString("action", row.Action)...)
r = append(r, OvnArgsBoolean("log", row.Log)...)
r = append(r, OvnArgsStringOptional("severity", row.Severity)...)
r = append(r, OvnArgsMapStringString("external_ids", row.ExternalIds)...)
return r
}
type ACLTable []ACL
func (tbl *ACLTable) NewRow() IRow {
*tbl = append(*tbl, ACL{})
return &(*tbl)[len(*tbl)-1]
}
func (tbl ACLTable) OvnTableName() string {
return "ACL"
}
func (tbl ACLTable) OvnIsRoot() bool {
return false
}
func (tbl ACLTable) Rows() []IRow {
r := make([]IRow, len(tbl))
for i := range tbl {
r[i] = &tbl[i]
}
return r
}
func (tbl ACLTable) FindOneMatchNonZeros(row1 *ACL) *ACL {
for i := range tbl {
row := &tbl[i]
if row.MatchNonZeros(row1) {
return row
}
}
return nil
}
type AddressSet struct {
Uuid string `json:"-"`
Addresses []string `json:"addresses"`
ExternalIds map[string]string `json:"external_ids"`
Name string `json:"name"`
}
func (row *AddressSet) OvnTableName() string {
return "Address_Set"
}
func (row *AddressSet) OvnIsRoot() bool {
return true
}
func (row *AddressSet) OvnUuid() string {
return row.Uuid
}
func (row *AddressSet) OvnSetExternalIds(k, v string) {
if row.ExternalIds == nil {
row.ExternalIds = map[string]string{}
}
row.ExternalIds[k] = v
}
func (row *AddressSet) OvnGetExternalIds(k string) (string, bool) {
if row.ExternalIds == nil {
return "", false
}
r, ok := row.ExternalIds[k]
return r, ok
}
func (row *AddressSet) OvnRemoveExternalIds(k string) (string, bool) {
if row.ExternalIds == nil {
return "", false
}
r, ok := row.ExternalIds[k]
if ok {
delete(row.ExternalIds, k)
}
return r, ok
}
func (row *AddressSet) SetColumn(name string, val interface{}) (err error) {
defer func() {
if panicErr := recover(); panicErr != nil {
err = errors.Wrapf(panicErr.(error), "%s: %#v", name, fmt.Sprintf("%#v", val))
}
}()
switch name {
case "_uuid":
row.Uuid = ensureUuid(val)
case "external_ids":
row.ExternalIds = ensureMapStringString(val)
case "name":
row.Name = ensureString(val)
case "addresses":
row.Addresses = ensureStringMultiples(val)
default:
panic(ErrUnknownColumn)
}
return
}
func (row *AddressSet) MatchNonZeros(row1 *AddressSet) bool {
if !matchMapStringStringIfNonZero(row.ExternalIds, row1.ExternalIds) {
return false
}
if !matchStringIfNonZero(row.Name, row1.Name) {
return false
}
if !matchStringMultiplesIfNonZero(row.Addresses, row1.Addresses) {
return false
}
return true
}
func (row *AddressSet) OvnArgs() []string {
r := []string{}
r = append(r, OvnArgsString("name", row.Name)...)
r = append(r, OvnArgsStringMultiples("addresses", row.Addresses)...)
r = append(r, OvnArgsMapStringString("external_ids", row.ExternalIds)...)
return r
}
type AddressSetTable []AddressSet
func (tbl *AddressSetTable) NewRow() IRow {
*tbl = append(*tbl, AddressSet{})
return &(*tbl)[len(*tbl)-1]
}
func (tbl AddressSetTable) OvnTableName() string {
return "Address_Set"
}
func (tbl AddressSetTable) OvnIsRoot() bool {
return true
}
func (tbl AddressSetTable) Rows() []IRow {
r := make([]IRow, len(tbl))
for i := range tbl {
r[i] = &tbl[i]
}
return r
}
func (tbl AddressSetTable) FindOneMatchNonZeros(row1 *AddressSet) *AddressSet {
for i := range tbl {
row := &tbl[i]
if row.MatchNonZeros(row1) {
return row
}
}
return nil
}
type LogicalSwitch struct {
Uuid string `json:"-"`
ExternalIds map[string]string `json:"external_ids"`
Name string `json:"name"`
Ports []string `json:"ports"`
Acls []string `json:"acls"`
QosRules []string `json:"qos_rules"`
LoadBalancer []string `json:"load_balancer"`
DnsRecords []string `json:"dns_records"`
OtherConfig map[string]string `json:"other_config"`
}
func (row *LogicalSwitch) OvnTableName() string {
return "Logical_Switch"
}
func (row *LogicalSwitch) OvnIsRoot() bool {
return true
}
func (row *LogicalSwitch) OvnUuid() string {
return row.Uuid
}
func (row *LogicalSwitch) OvnSetExternalIds(k, v string) {
if row.ExternalIds == nil {
row.ExternalIds = map[string]string{}
}
row.ExternalIds[k] = v
}
func (row *LogicalSwitch) OvnGetExternalIds(k string) (string, bool) {
if row.ExternalIds == nil {
return "", false
}
r, ok := row.ExternalIds[k]
return r, ok
}
func (row *LogicalSwitch) OvnRemoveExternalIds(k string) (string, bool) {
if row.ExternalIds == nil {
return "", false
}
r, ok := row.ExternalIds[k]
if ok {
delete(row.ExternalIds, k)
}
return r, ok
}
func (row *LogicalSwitch) SetColumn(name string, val interface{}) (err error) {
defer func() {
if panicErr := recover(); panicErr != nil {
err = errors.Wrapf(panicErr.(error), "%s: %#v", name, fmt.Sprintf("%#v", val))
}
}()
switch name {
case "_uuid":
row.Uuid = ensureUuid(val)
case "qos_rules":
row.QosRules = ensureUuidMultiples(val)
case "load_balancer":
row.LoadBalancer = ensureUuidMultiples(val)
case "dns_records":
row.DnsRecords = ensureUuidMultiples(val)
case "other_config":
row.OtherConfig = ensureMapStringString(val)
case "external_ids":
row.ExternalIds = ensureMapStringString(val)
case "name":
row.Name = ensureString(val)
case "ports":
row.Ports = ensureUuidMultiples(val)
case "acls":
row.Acls = ensureUuidMultiples(val)
default:
panic(ErrUnknownColumn)
}
return
}
func (row *LogicalSwitch) MatchNonZeros(row1 *LogicalSwitch) bool {
if !matchUuidMultiplesIfNonZero(row.QosRules, row1.QosRules) {
return false
}
if !matchUuidMultiplesIfNonZero(row.LoadBalancer, row1.LoadBalancer) {
return false
}
if !matchUuidMultiplesIfNonZero(row.DnsRecords, row1.DnsRecords) {
return false
}
if !matchMapStringStringIfNonZero(row.OtherConfig, row1.OtherConfig) {
return false
}
if !matchMapStringStringIfNonZero(row.ExternalIds, row1.ExternalIds) {
return false
}
if !matchStringIfNonZero(row.Name, row1.Name) {
return false
}
if !matchUuidMultiplesIfNonZero(row.Ports, row1.Ports) {
return false
}
if !matchUuidMultiplesIfNonZero(row.Acls, row1.Acls) {
return false
}
return true
}
func (row *LogicalSwitch) OvnArgs() []string {
r := []string{}
r = append(r, OvnArgsUuidMultiples("qos_rules", row.QosRules)...)
r = append(r, OvnArgsUuidMultiples("load_balancer", row.LoadBalancer)...)
r = append(r, OvnArgsUuidMultiples("dns_records", row.DnsRecords)...)
r = append(r, OvnArgsMapStringString("other_config", row.OtherConfig)...)
r = append(r, OvnArgsMapStringString("external_ids", row.ExternalIds)...)
r = append(r, OvnArgsString("name", row.Name)...)
r = append(r, OvnArgsUuidMultiples("ports", row.Ports)...)
r = append(r, OvnArgsUuidMultiples("acls", row.Acls)...)
return r
}
type LogicalSwitchTable []LogicalSwitch
func (tbl *LogicalSwitchTable) NewRow() IRow {
*tbl = append(*tbl, LogicalSwitch{})
return &(*tbl)[len(*tbl)-1]
}
func (tbl LogicalSwitchTable) OvnTableName() string {
return "Logical_Switch"
}
func (tbl LogicalSwitchTable) OvnIsRoot() bool {
return true
}
func (tbl LogicalSwitchTable) Rows() []IRow {
r := make([]IRow, len(tbl))
for i := range tbl {
r[i] = &tbl[i]
}
return r
}
func (tbl LogicalSwitchTable) FindOneMatchNonZeros(row1 *LogicalSwitch) *LogicalSwitch {
for i := range tbl {
row := &tbl[i]
if row.MatchNonZeros(row1) {
return row
}
}
return nil
}
type NAT struct {
Uuid string `json:"-"`
Type string `json:"type"`
ExternalIds map[string]string `json:"external_ids"`
ExternalIp string `json:"external_ip"`
ExternalMac *string `json:"external_mac"`
LogicalIp string `json:"logical_ip"`
LogicalPort *string `json:"logical_port"`
}
func (row *NAT) OvnTableName() string {
return "NAT"
}
func (row *NAT) OvnIsRoot() bool {
return false
}
func (row *NAT) OvnUuid() string {
return row.Uuid
}
func (row *NAT) OvnSetExternalIds(k, v string) {
if row.ExternalIds == nil {
row.ExternalIds = map[string]string{}
}
row.ExternalIds[k] = v
}
func (row *NAT) OvnGetExternalIds(k string) (string, bool) {
if row.ExternalIds == nil {
return "", false
}
r, ok := row.ExternalIds[k]
return r, ok
}
func (row *NAT) OvnRemoveExternalIds(k string) (string, bool) {
if row.ExternalIds == nil {
return "", false
}
r, ok := row.ExternalIds[k]
if ok {
delete(row.ExternalIds, k)
}
return r, ok
}
func (row *NAT) SetColumn(name string, val interface{}) (err error) {
defer func() {
if panicErr := recover(); panicErr != nil {
err = errors.Wrapf(panicErr.(error), "%s: %#v", name, fmt.Sprintf("%#v", val))
}
}()
switch name {
case "_uuid":
row.Uuid = ensureUuid(val)
case "type":
row.Type = ensureString(val)
case "external_ids":
row.ExternalIds = ensureMapStringString(val)
case "external_ip":
row.ExternalIp = ensureString(val)
case "external_mac":
row.ExternalMac = ensureStringOptional(val)
case "logical_ip":
row.LogicalIp = ensureString(val)
case "logical_port":
row.LogicalPort = ensureStringOptional(val)
default:
panic(ErrUnknownColumn)
}
return
}
func (row *NAT) MatchNonZeros(row1 *NAT) bool {
if !matchMapStringStringIfNonZero(row.ExternalIds, row1.ExternalIds) {
return false
}
if !matchStringIfNonZero(row.ExternalIp, row1.ExternalIp) {
return false
}
if !matchStringOptionalIfNonZero(row.ExternalMac, row1.ExternalMac) {
return false
}
if !matchStringIfNonZero(row.LogicalIp, row1.LogicalIp) {
return false
}
if !matchStringOptionalIfNonZero(row.LogicalPort, row1.LogicalPort) {
return false
}
if !matchStringIfNonZero(row.Type, row1.Type) {
return false
}
return true
}
func (row *NAT) OvnArgs() []string {
r := []string{}
r = append(r, OvnArgsMapStringString("external_ids", row.ExternalIds)...)
r = append(r, OvnArgsString("external_ip", row.ExternalIp)...)
r = append(r, OvnArgsStringOptional("external_mac", row.ExternalMac)...)
r = append(r, OvnArgsString("logical_ip", row.LogicalIp)...)
r = append(r, OvnArgsStringOptional("logical_port", row.LogicalPort)...)
r = append(r, OvnArgsString("type", row.Type)...)
return r
}
type NATTable []NAT
func (tbl *NATTable) NewRow() IRow {
*tbl = append(*tbl, NAT{})
return &(*tbl)[len(*tbl)-1]
}
func (tbl NATTable) OvnTableName() string {
return "NAT"
}
func (tbl NATTable) OvnIsRoot() bool {
return false
}
func (tbl NATTable) Rows() []IRow {
r := make([]IRow, len(tbl))
for i := range tbl {
r[i] = &tbl[i]
}
return r
}
func (tbl NATTable) FindOneMatchNonZeros(row1 *NAT) *NAT {
for i := range tbl {
row := &tbl[i]
if row.MatchNonZeros(row1) {
return row
}
}
return nil
}
type DHCPOptions struct {
Uuid string `json:"-"`
ExternalIds map[string]string `json:"external_ids"`
Cidr string `json:"cidr"`
Options map[string]string `json:"options"`
}
func (row *DHCPOptions) OvnTableName() string {
return "DHCP_Options"
}
func (row *DHCPOptions) OvnIsRoot() bool {
return true
}
func (row *DHCPOptions) OvnUuid() string {
return row.Uuid
}
func (row *DHCPOptions) OvnSetExternalIds(k, v string) {
if row.ExternalIds == nil {
row.ExternalIds = map[string]string{}
}
row.ExternalIds[k] = v
}
func (row *DHCPOptions) OvnGetExternalIds(k string) (string, bool) {
if row.ExternalIds == nil {
return "", false
}
r, ok := row.ExternalIds[k]
return r, ok
}
func (row *DHCPOptions) OvnRemoveExternalIds(k string) (string, bool) {
if row.ExternalIds == nil {
return "", false
}
r, ok := row.ExternalIds[k]
if ok {
delete(row.ExternalIds, k)
}
return r, ok
}
func (row *DHCPOptions) SetColumn(name string, val interface{}) (err error) {
defer func() {
if panicErr := recover(); panicErr != nil {
err = errors.Wrapf(panicErr.(error), "%s: %#v", name, fmt.Sprintf("%#v", val))
}
}()
switch name {
case "_uuid":
row.Uuid = ensureUuid(val)
case "cidr":
row.Cidr = ensureString(val)
case "options":
row.Options = ensureMapStringString(val)
case "external_ids":
row.ExternalIds = ensureMapStringString(val)
default:
panic(ErrUnknownColumn)
}
return
}
func (row *DHCPOptions) MatchNonZeros(row1 *DHCPOptions) bool {
if !matchStringIfNonZero(row.Cidr, row1.Cidr) {
return false
}
if !matchMapStringStringIfNonZero(row.Options, row1.Options) {
return false
}
if !matchMapStringStringIfNonZero(row.ExternalIds, row1.ExternalIds) {
return false
}
return true
}
func (row *DHCPOptions) OvnArgs() []string {
r := []string{}
r = append(r, OvnArgsString("cidr", row.Cidr)...)
r = append(r, OvnArgsMapStringString("options", row.Options)...)
r = append(r, OvnArgsMapStringString("external_ids", row.ExternalIds)...)
return r
}
type DHCPOptionsTable []DHCPOptions
func (tbl *DHCPOptionsTable) NewRow() IRow {
*tbl = append(*tbl, DHCPOptions{})
return &(*tbl)[len(*tbl)-1]
}
func (tbl DHCPOptionsTable) OvnTableName() string {
return "DHCP_Options"
}
func (tbl DHCPOptionsTable) OvnIsRoot() bool {
return true
}
func (tbl DHCPOptionsTable) Rows() []IRow {
r := make([]IRow, len(tbl))
for i := range tbl {
r[i] = &tbl[i]
}
return r
}
func (tbl DHCPOptionsTable) FindOneMatchNonZeros(row1 *DHCPOptions) *DHCPOptions {
for i := range tbl {
row := &tbl[i]
if row.MatchNonZeros(row1) {
return row
}
}
return nil
}
type LoadBalancer struct {
Uuid string `json:"-"`
ExternalIds map[string]string `json:"external_ids"`
Name string `json:"name"`
Vips map[string]string `json:"vips"`
Protocol *string `json:"protocol"`
}
func (row *LoadBalancer) OvnTableName() string {
return "Load_Balancer"
}
func (row *LoadBalancer) OvnIsRoot() bool {
return true
}
func (row *LoadBalancer) OvnUuid() string {
return row.Uuid
}
func (row *LoadBalancer) OvnSetExternalIds(k, v string) {
if row.ExternalIds == nil {
row.ExternalIds = map[string]string{}
}
row.ExternalIds[k] = v
}
func (row *LoadBalancer) OvnGetExternalIds(k string) (string, bool) {
if row.ExternalIds == nil {
return "", false
}
r, ok := row.ExternalIds[k]
return r, ok
}
func (row *LoadBalancer) OvnRemoveExternalIds(k string) (string, bool) {
if row.ExternalIds == nil {
return "", false
}
r, ok := row.ExternalIds[k]
if ok {
delete(row.ExternalIds, k)
}
return r, ok
}
func (row *LoadBalancer) SetColumn(name string, val interface{}) (err error) {
defer func() {
if panicErr := recover(); panicErr != nil {
err = errors.Wrapf(panicErr.(error), "%s: %#v", name, fmt.Sprintf("%#v", val))
}
}()
switch name {
case "_uuid":
row.Uuid = ensureUuid(val)
case "name":
row.Name = ensureString(val)
case "vips":
row.Vips = ensureMapStringString(val)
case "protocol":
row.Protocol = ensureStringOptional(val)
case "external_ids":
row.ExternalIds = ensureMapStringString(val)
default:
panic(ErrUnknownColumn)
}
return
}
func (row *LoadBalancer) MatchNonZeros(row1 *LoadBalancer) bool {
if !matchMapStringStringIfNonZero(row.Vips, row1.Vips) {
return false
}
if !matchStringOptionalIfNonZero(row.Protocol, row1.Protocol) {
return false
}
if !matchMapStringStringIfNonZero(row.ExternalIds, row1.ExternalIds) {
return false
}
if !matchStringIfNonZero(row.Name, row1.Name) {
return false
}
return true
}
func (row *LoadBalancer) OvnArgs() []string {
r := []string{}
r = append(r, OvnArgsString("name", row.Name)...)
r = append(r, OvnArgsMapStringString("vips", row.Vips)...)
r = append(r, OvnArgsStringOptional("protocol", row.Protocol)...)
r = append(r, OvnArgsMapStringString("external_ids", row.ExternalIds)...)
return r
}
type LoadBalancerTable []LoadBalancer
func (tbl *LoadBalancerTable) NewRow() IRow {
*tbl = append(*tbl, LoadBalancer{})
return &(*tbl)[len(*tbl)-1]
}
func (tbl LoadBalancerTable) OvnTableName() string {
return "Load_Balancer"
}
func (tbl LoadBalancerTable) OvnIsRoot() bool {
return true
}
func (tbl LoadBalancerTable) Rows() []IRow {
r := make([]IRow, len(tbl))
for i := range tbl {
r[i] = &tbl[i]
}
return r
}
func (tbl LoadBalancerTable) FindOneMatchNonZeros(row1 *LoadBalancer) *LoadBalancer {
for i := range tbl {
row := &tbl[i]
if row.MatchNonZeros(row1) {
return row
}
}
return nil
}
type SSL struct {
Uuid string `json:"-"`
SslCiphers string `json:"ssl_ciphers"`
ExternalIds map[string]string `json:"external_ids"`
PrivateKey string `json:"private_key"`
Certificate string `json:"certificate"`
CaCert string `json:"ca_cert"`
BootstrapCaCert bool `json:"bootstrap_ca_cert"`
SslProtocols string `json:"ssl_protocols"`
}
func (row *SSL) OvnTableName() string {
return "SSL"
}
func (row *SSL) OvnIsRoot() bool {
return false
}
func (row *SSL) OvnUuid() string {
return row.Uuid
}
func (row *SSL) OvnSetExternalIds(k, v string) {
if row.ExternalIds == nil {
row.ExternalIds = map[string]string{}
}
row.ExternalIds[k] = v
}
func (row *SSL) OvnGetExternalIds(k string) (string, bool) {
if row.ExternalIds == nil {
return "", false
}
r, ok := row.ExternalIds[k]
return r, ok
}
func (row *SSL) OvnRemoveExternalIds(k string) (string, bool) {
if row.ExternalIds == nil {
return "", false
}
r, ok := row.ExternalIds[k]
if ok {
delete(row.ExternalIds, k)
}
return r, ok
}
func (row *SSL) SetColumn(name string, val interface{}) (err error) {
defer func() {
if panicErr := recover(); panicErr != nil {
err = errors.Wrapf(panicErr.(error), "%s: %#v", name, fmt.Sprintf("%#v", val))
}
}()
switch name {
case "_uuid":
row.Uuid = ensureUuid(val)
case "ssl_protocols":
row.SslProtocols = ensureString(val)
case "ssl_ciphers":
row.SslCiphers = ensureString(val)
case "external_ids":
row.ExternalIds = ensureMapStringString(val)
case "private_key":
row.PrivateKey = ensureString(val)
case "certificate":
row.Certificate = ensureString(val)
case "ca_cert":
row.CaCert = ensureString(val)
case "bootstrap_ca_cert":
row.BootstrapCaCert = ensureBoolean(val)
default:
panic(ErrUnknownColumn)
}
return
}
func (row *SSL) MatchNonZeros(row1 *SSL) bool {
if !matchMapStringStringIfNonZero(row.ExternalIds, row1.ExternalIds) {
return false
}
if !matchStringIfNonZero(row.PrivateKey, row1.PrivateKey) {
return false
}
if !matchStringIfNonZero(row.Certificate, row1.Certificate) {
return false
}
if !matchStringIfNonZero(row.CaCert, row1.CaCert) {
return false
}
if !matchBooleanIfNonZero(row.BootstrapCaCert, row1.BootstrapCaCert) {
return false
}
if !matchStringIfNonZero(row.SslProtocols, row1.SslProtocols) {
return false
}
if !matchStringIfNonZero(row.SslCiphers, row1.SslCiphers) {
return false
}
return true
}
func (row *SSL) OvnArgs() []string {
r := []string{}
r = append(r, OvnArgsBoolean("bootstrap_ca_cert", row.BootstrapCaCert)...)
r = append(r, OvnArgsString("ssl_protocols", row.SslProtocols)...)
r = append(r, OvnArgsString("ssl_ciphers", row.SslCiphers)...)
r = append(r, OvnArgsMapStringString("external_ids", row.ExternalIds)...)
r = append(r, OvnArgsString("private_key", row.PrivateKey)...)
r = append(r, OvnArgsString("certificate", row.Certificate)...)
r = append(r, OvnArgsString("ca_cert", row.CaCert)...)
return r
}
type SSLTable []SSL
func (tbl *SSLTable) NewRow() IRow {
*tbl = append(*tbl, SSL{})
return &(*tbl)[len(*tbl)-1]
}
func (tbl SSLTable) OvnTableName() string {
return "SSL"
}
func (tbl SSLTable) OvnIsRoot() bool {
return false
}
func (tbl SSLTable) Rows() []IRow {
r := make([]IRow, len(tbl))
for i := range tbl {
r[i] = &tbl[i]
}
return r
}
func (tbl SSLTable) FindOneMatchNonZeros(row1 *SSL) *SSL {
for i := range tbl {
row := &tbl[i]
if row.MatchNonZeros(row1) {
return row
}
}
return nil
}
type NBGlobal struct {
Uuid string `json:"-"`
Connections []string `json:"connections"`
Ssl *string `json:"ssl"`
NbCfg int64 `json:"nb_cfg"`
SbCfg int64 `json:"sb_cfg"`
HvCfg int64 `json:"hv_cfg"`
ExternalIds map[string]string `json:"external_ids"`
}
func (row *NBGlobal) OvnTableName() string {
return "NB_Global"
}
func (row *NBGlobal) OvnIsRoot() bool {
return true
}
func (row *NBGlobal) OvnUuid() string {
return row.Uuid
}
func (row *NBGlobal) OvnSetExternalIds(k, v string) {
if row.ExternalIds == nil {
row.ExternalIds = map[string]string{}
}
row.ExternalIds[k] = v
}
func (row *NBGlobal) OvnGetExternalIds(k string) (string, bool) {
if row.ExternalIds == nil {
return "", false
}
r, ok := row.ExternalIds[k]
return r, ok
}
func (row *NBGlobal) OvnRemoveExternalIds(k string) (string, bool) {
if row.ExternalIds == nil {
return "", false
}
r, ok := row.ExternalIds[k]
if ok {
delete(row.ExternalIds, k)
}
return r, ok
}
func (row *NBGlobal) SetColumn(name string, val interface{}) (err error) {
defer func() {
if panicErr := recover(); panicErr != nil {
err = errors.Wrapf(panicErr.(error), "%s: %#v", name, fmt.Sprintf("%#v", val))
}
}()
switch name {
case "_uuid":
row.Uuid = ensureUuid(val)
case "sb_cfg":
row.SbCfg = ensureInteger(val)
case "hv_cfg":
row.HvCfg = ensureInteger(val)
case "external_ids":
row.ExternalIds = ensureMapStringString(val)
case "connections":
row.Connections = ensureUuidMultiples(val)
case "ssl":
row.Ssl = ensureUuidOptional(val)
case "nb_cfg":
row.NbCfg = ensureInteger(val)
default:
panic(ErrUnknownColumn)
}
return
}
func (row *NBGlobal) MatchNonZeros(row1 *NBGlobal) bool {
if !matchUuidOptionalIfNonZero(row.Ssl, row1.Ssl) {
return false
}
if !matchIntegerIfNonZero(row.NbCfg, row1.NbCfg) {
return false
}
if !matchIntegerIfNonZero(row.SbCfg, row1.SbCfg) {
return false
}
if !matchIntegerIfNonZero(row.HvCfg, row1.HvCfg) {
return false
}
if !matchMapStringStringIfNonZero(row.ExternalIds, row1.ExternalIds) {
return false
}
if !matchUuidMultiplesIfNonZero(row.Connections, row1.Connections) {
return false
}
return true
}
func (row *NBGlobal) OvnArgs() []string {
r := []string{}
r = append(r, OvnArgsInteger("sb_cfg", row.SbCfg)...)
r = append(r, OvnArgsInteger("hv_cfg", row.HvCfg)...)
r = append(r, OvnArgsMapStringString("external_ids", row.ExternalIds)...)
r = append(r, OvnArgsUuidMultiples("connections", row.Connections)...)
r = append(r, OvnArgsUuidOptional("ssl", row.Ssl)...)
r = append(r, OvnArgsInteger("nb_cfg", row.NbCfg)...)
return r
}
type NBGlobalTable []NBGlobal
func (tbl *NBGlobalTable) NewRow() IRow {
*tbl = append(*tbl, NBGlobal{})
return &(*tbl)[len(*tbl)-1]
}
func (tbl NBGlobalTable) OvnTableName() string {
return "NB_Global"
}
func (tbl NBGlobalTable) OvnIsRoot() bool {
return true
}
func (tbl NBGlobalTable) Rows() []IRow {
r := make([]IRow, len(tbl))
for i := range tbl {
r[i] = &tbl[i]
}
return r
}
func (tbl NBGlobalTable) FindOneMatchNonZeros(row1 *NBGlobal) *NBGlobal {
for i := range tbl {
row := &tbl[i]
if row.MatchNonZeros(row1) {
return row
}
}
return nil
}
type LogicalRouterStaticRoute struct {
Uuid string `json:"-"`
IpPrefix string `json:"ip_prefix"`
Policy *string `json:"policy"`
Nexthop string `json:"nexthop"`
OutputPort *string `json:"output_port"`
ExternalIds map[string]string `json:"external_ids"`
}
func (row *LogicalRouterStaticRoute) OvnTableName() string {
return "Logical_Router_Static_Route"
}
func (row *LogicalRouterStaticRoute) OvnIsRoot() bool {
return false
}
func (row *LogicalRouterStaticRoute) OvnUuid() string {
return row.Uuid
}
func (row *LogicalRouterStaticRoute) OvnSetExternalIds(k, v string) {
if row.ExternalIds == nil {
row.ExternalIds = map[string]string{}
}
row.ExternalIds[k] = v
}
func (row *LogicalRouterStaticRoute) OvnGetExternalIds(k string) (string, bool) {
if row.ExternalIds == nil {
return "", false
}
r, ok := row.ExternalIds[k]
return r, ok
}
func (row *LogicalRouterStaticRoute) OvnRemoveExternalIds(k string) (string, bool) {
if row.ExternalIds == nil {
return "", false
}
r, ok := row.ExternalIds[k]
if ok {
delete(row.ExternalIds, k)
}
return r, ok
}
func (row *LogicalRouterStaticRoute) SetColumn(name string, val interface{}) (err error) {
defer func() {
if panicErr := recover(); panicErr != nil {
err = errors.Wrapf(panicErr.(error), "%s: %#v", name, fmt.Sprintf("%#v", val))
}
}()
switch name {
case "_uuid":
row.Uuid = ensureUuid(val)
case "external_ids":
row.ExternalIds = ensureMapStringString(val)
case "ip_prefix":
row.IpPrefix = ensureString(val)
case "policy":
row.Policy = ensureStringOptional(val)
case "nexthop":
row.Nexthop = ensureString(val)
case "output_port":
row.OutputPort = ensureStringOptional(val)
default:
panic(ErrUnknownColumn)
}
return
}
func (row *LogicalRouterStaticRoute) MatchNonZeros(row1 *LogicalRouterStaticRoute) bool {
if !matchStringIfNonZero(row.IpPrefix, row1.IpPrefix) {
return false
}
if !matchStringOptionalIfNonZero(row.Policy, row1.Policy) {
return false
}
if !matchStringIfNonZero(row.Nexthop, row1.Nexthop) {
return false
}
if !matchStringOptionalIfNonZero(row.OutputPort, row1.OutputPort) {
return false
}
if !matchMapStringStringIfNonZero(row.ExternalIds, row1.ExternalIds) {
return false
}
return true
}
func (row *LogicalRouterStaticRoute) OvnArgs() []string {
r := []string{}
r = append(r, OvnArgsString("ip_prefix", row.IpPrefix)...)
r = append(r, OvnArgsStringOptional("policy", row.Policy)...)
r = append(r, OvnArgsString("nexthop", row.Nexthop)...)
r = append(r, OvnArgsStringOptional("output_port", row.OutputPort)...)
r = append(r, OvnArgsMapStringString("external_ids", row.ExternalIds)...)
return r
}
type LogicalRouterStaticRouteTable []LogicalRouterStaticRoute
func (tbl *LogicalRouterStaticRouteTable) NewRow() IRow {
*tbl = append(*tbl, LogicalRouterStaticRoute{})
return &(*tbl)[len(*tbl)-1]
}
func (tbl LogicalRouterStaticRouteTable) OvnTableName() string {
return "Logical_Router_Static_Route"
}
func (tbl LogicalRouterStaticRouteTable) OvnIsRoot() bool {
return false
}
func (tbl LogicalRouterStaticRouteTable) Rows() []IRow {
r := make([]IRow, len(tbl))
for i := range tbl {
r[i] = &tbl[i]
}
return r
}
func (tbl LogicalRouterStaticRouteTable) FindOneMatchNonZeros(row1 *LogicalRouterStaticRoute) *LogicalRouterStaticRoute {
for i := range tbl {
row := &tbl[i]
if row.MatchNonZeros(row1) {
return row
}
}
return nil
}