]>
Commit | Line | Data |
---|---|---|
f5eabba0 | 1 | package PVE::Network::SDN::Zones::FaucetPlugin; |
ad03c543 AD |
2 | |
3 | use strict; | |
4 | use warnings; | |
f5eabba0 | 5 | use PVE::Network::SDN::Zones::VlanPlugin; |
ad03c543 | 6 | |
f5eabba0 | 7 | use base('PVE::Network::SDN::Zones::VlanPlugin'); |
ad03c543 AD |
8 | |
9 | sub type { | |
10 | return 'faucet'; | |
11 | } | |
12 | ||
ad03c543 AD |
13 | sub properties { |
14 | return { | |
0193ebe5 AD |
15 | 'dp-id' => { |
16 | type => 'integer', | |
17 | description => 'Faucet dataplane id', | |
18 | }, | |
ad03c543 AD |
19 | }; |
20 | } | |
21 | ||
0193ebe5 | 22 | sub options { |
ad03c543 | 23 | |
0193ebe5 | 24 | return { |
c2b9c173 | 25 | nodes => { optional => 1}, |
0193ebe5 AD |
26 | 'dp-id' => { optional => 0 }, |
27 | 'uplink-id' => { optional => 0 }, | |
28 | 'controller' => { optional => 0 }, | |
0193ebe5 | 29 | }; |
ad03c543 AD |
30 | } |
31 | ||
0193ebe5 AD |
32 | # Plugin implementation |
33 | sub generate_sdn_config { | |
4405f2de | 34 | my ($class, $plugin_config, $zoneid, $vnetid, $vnet, $uplinks, $controller, $config) = @_; |
ad03c543 | 35 | |
0193ebe5 AD |
36 | my $mtu = $vnet->{mtu}; |
37 | my $uplink = $plugin_config->{'uplink-id'}; | |
ad03c543 | 38 | my $dpid = $plugin_config->{'dp-id'}; |
0193ebe5 | 39 | my $dphex = printf("%x",$dpid); #fixme :should be 16characters hex |
ad03c543 | 40 | |
0193ebe5 AD |
41 | my $iface = $uplinks->{$uplink}->{name}; |
42 | $iface = "uplink${uplink}" if !$iface; | |
ad03c543 | 43 | |
0193ebe5 AD |
44 | #tagged interface |
45 | my @iface_config = (); | |
46 | push @iface_config, "ovs_type OVSPort"; | |
47 | push @iface_config, "ovs_bridge $zoneid"; | |
48 | push @iface_config, "ovs_mtu $mtu" if $mtu; | |
49 | push(@{$config->{$iface}}, @iface_config) if !$config->{$iface}; | |
ad03c543 | 50 | |
0193ebe5 AD |
51 | #vnet bridge |
52 | @iface_config = (); | |
53 | push @iface_config, "ovs_port $iface"; | |
54 | push @iface_config, "ovs_type OVSBridge"; | |
55 | push @iface_config, "ovs_mtu $mtu" if $mtu; | |
ad03c543 | 56 | |
0193ebe5 AD |
57 | push @iface_config, "ovs_extra set bridge $zoneid other-config:datapath-id=$dphex"; |
58 | push @iface_config, "ovs_extra set bridge $zoneid other-config:disable-in-band=true"; | |
59 | push @iface_config, "ovs_extra set bridge $zoneid fail_mode=secure"; | |
60 | push @iface_config, "ovs_extra set-controller $vnetid tcp:127.0.0.1:6653"; | |
ad03c543 | 61 | |
0193ebe5 | 62 | push(@{$config->{$zoneid}}, @iface_config) if !$config->{$zoneid}; |
ad03c543 | 63 | |
0193ebe5 | 64 | return $config; |
ad03c543 AD |
65 | } |
66 | ||
fa609bdd | 67 | |
ad03c543 AD |
68 | 1; |
69 | ||
0193ebe5 | 70 |