diff --git a/lib/puppet/provider/vs_port/ovs.rb b/lib/puppet/provider/vs_port/ovs.rb index 955083c3..2ddaec3d 100644 --- a/lib/puppet/provider/vs_port/ovs.rb +++ b/lib/puppet/provider/vs_port/ovs.rb @@ -25,7 +25,11 @@ Puppet::Type.type(:vs_port).provide( end # create with first interface, other interfaces will be added later when synchronizing properties - vsctl('--', '--id=@iface0', 'create', 'Interface', "name=#{@resource[:interface][0]}", '--', 'add-port', @resource[:bridge], @resource[:port], 'interfaces=@iface0') + if @resource[:interface_type] == :internal + vsctl('add-port', @resource[:bridge], @resource[:port], '--', 'set', 'Interface', @resource[:port], 'type=internal') + else + vsctl('--', '--id=@iface0', 'create', 'Interface', "name=#{@resource[:interface][0]}", '--', 'add-port', @resource[:bridge], @resource[:port], 'interfaces=@iface0') + end # synchronize properties # Only sync those properties actually supported by the provider. This diff --git a/lib/puppet/type/vs_port.rb b/lib/puppet/type/vs_port.rb index 79f53a57..a021df1b 100644 --- a/lib/puppet/type/vs_port.rb +++ b/lib/puppet/type/vs_port.rb @@ -4,6 +4,8 @@ Puppet::Type.newtype(:vs_port) do desc 'A Virtual Switch Port' feature :bonding, "The provider supports bonded interfaces" + feature :interface_type, "The provider supports interface types" + feature :vlan, "The provider supports vlans" ensurable diff --git a/releasenotes/notes/fix_interface_type-21881ffcab9159eb.yaml b/releasenotes/notes/fix_interface_type-21881ffcab9159eb.yaml new file mode 100644 index 00000000..eec551de --- /dev/null +++ b/releasenotes/notes/fix_interface_type-21881ffcab9159eb.yaml @@ -0,0 +1,5 @@ +--- +fixes: + - | + vs_port setting interface_type to 'internal' is fixed. + see: https://bugs.launchpad.net/puppet-vswitch/+bug/1771134