@@ -134,6 +134,12 @@ func (n *ovn) Info() Info {
134
134
}
135
135
136
136
func (n * ovn ) State () (* api.NetworkState , error ) {
137
+ // Check if uplink exists
138
+ _ , err := n .ovnnb .GetLogicalRouter (context .TODO (), n .getRouterName ())
139
+ if err != nil && err == networkOVN .ErrNotFound {
140
+ return nil , nil
141
+ }
142
+
137
143
var addresses []api.NetworkStateAddress
138
144
IPv4Net , err := ParseIPCIDRToNet (n .config ["ipv4.address" ])
139
145
if err == nil {
@@ -2162,6 +2168,10 @@ func (n *ovn) setup(update bool) error {
2162
2168
return fmt .Errorf ("Failed parsing router's internal port IPv6 Net: %w" , err )
2163
2169
}
2164
2170
2171
+ if (n .config ["network" ] != "none" ) && (routerIntPortIPv4 == nil || routerIntPortIPv6 == nil ) {
2172
+ return fmt .Errorf ("The bridge addresses must be provided if has uplink network" )
2173
+ }
2174
+
2165
2175
// Create chassis group.
2166
2176
err = n .ovnnb .CreateChassisGroup (context .TODO (), n .getChassisGroupName (), update )
2167
2177
if err != nil {
@@ -2172,16 +2182,17 @@ func (n *ovn) setup(update bool) error {
2172
2182
revert .Add (func () { _ = n .ovnnb .DeleteChassisGroup (context .TODO (), n .getChassisGroupName ()) })
2173
2183
}
2174
2184
2175
- // Create logical router.
2176
- err = n .ovnnb .CreateLogicalRouter (context .TODO (), n .getRouterName (), update )
2177
- if err != nil {
2178
- return fmt .Errorf ("Failed adding router: %w" , err )
2179
- }
2185
+ if n .config ["network" ] != "none" {
2186
+ // Create logical router.
2187
+ err = n .ovnnb .CreateLogicalRouter (context .TODO (), n .getRouterName (), update )
2188
+ if err != nil {
2189
+ return fmt .Errorf ("Failed adding router: %w" , err )
2190
+ }
2180
2191
2181
- if ! update {
2182
- revert .Add (func () { _ = n .ovnnb .DeleteLogicalRouter (context .TODO (), n .getRouterName ()) })
2192
+ if ! update {
2193
+ revert .Add (func () { _ = n .ovnnb .DeleteLogicalRouter (context .TODO (), n .getRouterName ()) })
2194
+ }
2183
2195
}
2184
-
2185
2196
// Configure logical router.
2186
2197
2187
2198
// Generate external router port IPs (in CIDR format).
@@ -2401,10 +2412,6 @@ func (n *ovn) setup(update bool) error {
2401
2412
intSubnets = append (intSubnets , * routerIntPortIPv6Net )
2402
2413
}
2403
2414
2404
- if len (intRouterIPs ) <= 0 {
2405
- return fmt .Errorf ("No internal IPs defined for network router" )
2406
- }
2407
-
2408
2415
// Create internal logical switch if not updating.
2409
2416
err = n .ovnnb .CreateLogicalSwitch (context .TODO (), n .getIntSwitchName (), update )
2410
2417
if err != nil {
@@ -2551,22 +2558,24 @@ func (n *ovn) setup(update bool) error {
2551
2558
})
2552
2559
}
2553
2560
2554
- // Apply router security policy.
2555
- err = n .logicalRouterPolicySetup (n .ovnnb )
2556
- if err != nil {
2557
- return fmt .Errorf ("Failed applying router security policy: %w" , err )
2558
- }
2559
-
2560
- // Create internal router port.
2561
- err = n .ovnnb .CreateLogicalRouterPort (context .TODO (), n .getRouterName (), n .getRouterIntPortName (), routerMAC , bridgeMTU , intRouterIPs , "" , update )
2562
- if err != nil {
2563
- return fmt .Errorf ("Failed adding internal router port: %w" , err )
2564
- }
2561
+ if n .config ["network" ] != "none" {
2562
+ // Apply router security policy.
2563
+ err = n .logicalRouterPolicySetup (n .ovnnb )
2564
+ if err != nil {
2565
+ return fmt .Errorf ("Failed applying router security policy: %w" , err )
2566
+ }
2567
+ fmt .Printf ("entrei aqui linha 2575" )
2568
+ // Create internal router port.
2569
+ err = n .ovnnb .CreateLogicalRouterPort (context .TODO (), n .getRouterName (), n .getRouterIntPortName (), routerMAC , bridgeMTU , intRouterIPs , "" , update )
2570
+ if err != nil {
2571
+ return fmt .Errorf ("Failed adding internal router port: %w" , err )
2572
+ }
2565
2573
2566
- if ! update {
2567
- revert .Add (func () {
2568
- _ = n .ovnnb .DeleteLogicalRouterPort (context .TODO (), n .getRouterName (), n .getRouterIntPortName ())
2569
- })
2574
+ if ! update {
2575
+ revert .Add (func () {
2576
+ _ = n .ovnnb .DeleteLogicalRouterPort (context .TODO (), n .getRouterName (), n .getRouterIntPortName ())
2577
+ })
2578
+ }
2570
2579
}
2571
2580
2572
2581
// Configure DHCP option sets.
@@ -2658,40 +2667,42 @@ func (n *ovn) setup(update bool) error {
2658
2667
}
2659
2668
}
2660
2669
2661
- // Set IPv6 router advertisement settings.
2662
- if routerIntPortIPv6Net != nil {
2663
- adressMode := networkOVN .OVNIPv6AddressModeSLAAC
2664
- if dhcpV6Subnet != nil {
2665
- adressMode = networkOVN .OVNIPv6AddressModeDHCPStateless
2666
- if util .IsTrue (n .config ["ipv6.dhcp.stateful" ]) {
2667
- adressMode = networkOVN .OVNIPv6AddressModeDHCPStateful
2670
+ if n .config ["network" ] != "none" {
2671
+ // Set IPv6 router advertisement settings.
2672
+ if routerIntPortIPv6Net != nil {
2673
+ adressMode := networkOVN .OVNIPv6AddressModeSLAAC
2674
+ if dhcpV6Subnet != nil {
2675
+ adressMode = networkOVN .OVNIPv6AddressModeDHCPStateless
2676
+ if util .IsTrue (n .config ["ipv6.dhcp.stateful" ]) {
2677
+ adressMode = networkOVN .OVNIPv6AddressModeDHCPStateful
2678
+ }
2668
2679
}
2669
- }
2670
2680
2671
- var recursiveDNSServer net.IP
2672
- if uplinkNet != nil && len (uplinkNet .dnsIPv6 ) > 0 {
2673
- recursiveDNSServer = uplinkNet .dnsIPv6 [0 ] // OVN only supports 1 RA DNS server.
2674
- }
2681
+ var recursiveDNSServer net.IP
2682
+ if uplinkNet != nil && len (uplinkNet .dnsIPv6 ) > 0 {
2683
+ recursiveDNSServer = uplinkNet .dnsIPv6 [0 ] // OVN only supports 1 RA DNS server.
2684
+ }
2675
2685
2676
- err = n .ovnnb .UpdateLogicalRouterPort (context .TODO (), n .getRouterIntPortName (), & networkOVN.OVNIPv6RAOpts {
2677
- AddressMode : adressMode ,
2678
- SendPeriodic : true ,
2679
- DNSSearchList : n .getDNSSearchList (),
2680
- RecursiveDNSServer : recursiveDNSServer ,
2681
- MTU : bridgeMTU ,
2686
+ err = n .ovnnb .UpdateLogicalRouterPort (context .TODO (), n .getRouterIntPortName (), & networkOVN.OVNIPv6RAOpts {
2687
+ AddressMode : adressMode ,
2688
+ SendPeriodic : true ,
2689
+ DNSSearchList : n .getDNSSearchList (),
2690
+ RecursiveDNSServer : recursiveDNSServer ,
2691
+ MTU : bridgeMTU ,
2682
2692
2683
- // Keep these low until we support DNS search domains via DHCPv4, as otherwise RA DNSSL
2684
- // won't take effect until advert after DHCPv4 has run on instance.
2685
- MinInterval : time .Duration (time .Second * 30 ),
2686
- MaxInterval : time .Duration (time .Minute * 1 ),
2687
- })
2688
- if err != nil {
2689
- return fmt .Errorf ("Failed setting internal router port IPv6 advertisement settings: %w" , err )
2690
- }
2691
- } else {
2692
- err = n .ovnnb .UpdateLogicalRouterPort (context .TODO (), n .getRouterIntPortName (), & networkOVN.OVNIPv6RAOpts {})
2693
- if err != nil {
2694
- return fmt .Errorf ("Failed removing internal router port IPv6 advertisement settings: %w" , err )
2693
+ // Keep these low until we support DNS search domains via DHCPv4, as otherwise RA DNSSL
2694
+ // won't take effect until advert after DHCPv4 has run on instance.
2695
+ MinInterval : time .Duration (time .Second * 30 ),
2696
+ MaxInterval : time .Duration (time .Minute * 1 ),
2697
+ })
2698
+ if err != nil {
2699
+ return fmt .Errorf ("Failed setting internal router port IPv6 advertisement settings: %w" , err )
2700
+ }
2701
+ } else {
2702
+ err = n .ovnnb .UpdateLogicalRouterPort (context .TODO (), n .getRouterIntPortName (), & networkOVN.OVNIPv6RAOpts {})
2703
+ if err != nil {
2704
+ return fmt .Errorf ("Failed removing internal router port IPv6 advertisement settings: %w" , err )
2705
+ }
2695
2706
}
2696
2707
}
2697
2708
0 commit comments