-
Notifications
You must be signed in to change notification settings - Fork 61
/
apis.go
95 lines (75 loc) · 2.5 KB
/
apis.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
/**
* Copyright (c) 2017 eBay Inc.
*
* 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 goovn
import (
"github.com/ebay/libovsdb"
)
// OvnCommand ovnnb command
type OvnCommand struct {
Operations []libovsdb.Operation
Exe Execution
Results [][]map[string]interface{}
}
// Execute sends command to ovnnb
func (ocmd *OvnCommand) Execute() error {
return ocmd.Exe.Execute(ocmd)
}
// Execution executes multiple ovnnb commands
type Execution interface {
//Excute multi-commands
Execute(cmds ...*OvnCommand) error
}
// OVNDisconnectedCallback executed when ovn client disconnects
type OVNDisconnectedCallback func()
// OVNSignal notifies on changes to ovnnb
type OVNSignal interface {
OnLogicalSwitchCreate(ls *LogicalSwitch)
OnLogicalSwitchDelete(ls *LogicalSwitch)
OnLogicalPortCreate(lp *LogicalSwitchPort)
OnLogicalPortDelete(lp *LogicalSwitchPort)
OnLogicalRouterCreate(lr *LogicalRouter)
OnLogicalRouterDelete(lr *LogicalRouter)
OnLogicalRouterPortCreate(lrp *LogicalRouterPort)
OnLogicalRouterPortDelete(lrp *LogicalRouterPort)
OnLogicalRouterStaticRouteCreate(lrsr *LogicalRouterStaticRoute)
OnLogicalRouterStaticRouteDelete(lrsr *LogicalRouterStaticRoute)
OnACLCreate(acl *ACL)
OnACLDelete(acl *ACL)
OnDHCPOptionsCreate(dhcp *DHCPOptions)
OnDHCPOptionsDelete(dhcp *DHCPOptions)
OnQoSCreate(qos *QoS)
OnQoSDelete(qos *QoS)
OnLoadBalancerCreate(ls *LoadBalancer)
OnLoadBalancerDelete(ls *LoadBalancer)
OnMeterCreate(meter *Meter)
OnMeterDelete(meter *Meter)
OnMeterBandCreate(band *MeterBand)
OnMeterBandDelete(band *MeterBand)
// Create/delete chassis from south bound db
OnChassisCreate(ch *Chassis)
OnChassisDelete(ch *Chassis)
// Create/delete encap from south bound db
OnEncapCreate(ch *Encap)
OnEncapDelete(ch *Encap)
}
// OVNNotifier ovnnb and ovnsb notifier
type OVNNotifier interface {
Update(context interface{}, tableUpdates libovsdb.TableUpdates)
Locked([]interface{})
Stolen([]interface{})
Echo([]interface{})
Disconnected(client *libovsdb.OvsdbClient)
}