5e1313f8f7f9c13e2ee5a4e0f35d4ed6f8eb8599
[apex.git] / build / patches / puppet-neutron-vpp-ml2.patch
1 From 72afc22fbba73fdb474bd6e5c1c47ab31219a9b9 Mon Sep 17 00:00:00 2001
2 From: Feng Pan <fpan@redhat.com>
3 Date: Tue, 28 Feb 2017 18:07:53 -0500
4 Subject: [PATCH] Add support for networking-vpp ML2 driver
5
6 Change-Id: Ib45681b1e414001c42070a32e8f81778b4e9f15f
7 ---
8  .../provider/neutron_agent_vpp/ini_settings.rb     | 15 ++++
9  lib/puppet/type/neutron_agent_vpp.rb               | 28 +++++++
10  manifests/agents/ml2/vpp.pp                        | 91 ++++++++++++++++++++++
11  manifests/deps.pp                                  |  1 +
12  manifests/params.pp                                |  3 +
13  manifests/plugins/ml2/vpp.pp                       | 38 +++++++++
14  6 files changed, 176 insertions(+)
15  create mode 100644 lib/puppet/provider/neutron_agent_vpp/ini_settings.rb
16  create mode 100644 lib/puppet/type/neutron_agent_vpp.rb
17  create mode 100644 manifests/agents/ml2/vpp.pp
18  create mode 100644 manifests/plugins/ml2/vpp.pp
19
20 diff --git a/lib/puppet/provider/neutron_agent_vpp/ini_settings.rb b/lib/puppet/provider/neutron_agent_vpp/ini_settings.rb
21 new file mode 100644
22 index 0000000..d8da7ab
23 --- /dev/null
24 +++ b/lib/puppet/provider/neutron_agent_vpp/ini_settings.rb
25 @@ -0,0 +1,15 @@
26 +Puppet::Type.type(:neutron_agent_vpp).provide(
27 +  :ini_setting,
28 +  :parent => Puppet::Type.type(:openstack_config).provider(:ini_setting)
29 +) do
30 +
31 +  def self.file_path
32 +    '/etc/neutron/plugins/ml2/vpp_agent.ini'
33 +  end
34 +
35 +  # added for backwards compatibility with older versions of inifile
36 +  def file_path
37 +    self.class.file_path
38 +  end
39 +
40 +end
41 diff --git a/lib/puppet/type/neutron_agent_vpp.rb b/lib/puppet/type/neutron_agent_vpp.rb
42 new file mode 100644
43 index 0000000..0718db8
44 --- /dev/null
45 +++ b/lib/puppet/type/neutron_agent_vpp.rb
46 @@ -0,0 +1,28 @@
47 +Puppet::Type.newtype(:neutron_agent_vpp) do
48 +
49 +  ensurable
50 +
51 +  newparam(:name, :namevar => true) do
52 +    desc 'Section/setting name to manage from vpp agent config.'
53 +    newvalues(/\S+\/\S+/)
54 +  end
55 +
56 +  newproperty(:value) do
57 +    desc 'The value of the setting to be defined.'
58 +    munge do |value|
59 +      value = value.to_s.strip
60 +      value.capitalize! if value =~ /^(true|false)$/i
61 +      value
62 +    end
63 +  end
64 +
65 +  newparam(:ensure_absent_val) do
66 +    desc 'A value that is specified as the value property will behave as if ensure => absent was specified'
67 +    defaultto('<SERVICE DEFAULT>')
68 +  end
69 +
70 +  autorequire(:package) do
71 +    'neutron-vpp-agent'
72 +  end
73 +
74 +end
75 diff --git a/manifests/agents/ml2/vpp.pp b/manifests/agents/ml2/vpp.pp
76 new file mode 100644
77 index 0000000..faae279
78 --- /dev/null
79 +++ b/manifests/agents/ml2/vpp.pp
80 @@ -0,0 +1,91 @@
81 +# == Class: neutron::agents::ml2::vpp
82 +#
83 +# Configure networking-vpp Neutron agent for ML2 plugin.
84 +#
85 +# === Parameters
86 +#
87 +# [*package_ensure*]
88 +#   (optional) Package ensure state.
89 +#   Defaults to 'present'.
90 +#
91 +# [*enabled*]
92 +#   (required) Whether or not to enable the agent.
93 +#   Defaults to true.
94 +#
95 +# [*manage_service*]
96 +#   (optional) Whether to start/stop the service
97 +#   Defaults to true
98 +#
99 +# [*physnets*]
100 +#   (optional) Comma-separated list of <physical_network>:<physical_interface>
101 +#   tuples mapping physical network names to agent's node-specific physical
102 +#   network interfaces. Defaults to $::os_service_default.
103 +#
104 +# [*etcd_host*]
105 +#   (optional) etcd server host name/ip
106 +#   Defaults to $::os_service_default.
107 +#
108 +# [*etcd_port*]
109 +#   (optional) etcd server listening port.
110 +#   Defaults to $::os_service_default.
111 +#
112 +# [*etcd_user*]
113 +#   (optional) User name for etcd authentication
114 +#   Defaults to $::os_service_default.
115 +#
116 +# [*etcd_pass*]
117 +#   (optional) Password for etcd authentication
118 +#   Defaults to $::os_service_default.
119 +#
120 +# [*purge_config*]
121 +#   (optional) Whether to set only the specified config options
122 +#   in the vpp config.
123 +#   Defaults to false.
124 +#
125 +class neutron::agents::ml2::vpp (
126 +  $package_ensure   = 'present',
127 +  $enabled          = true,
128 +  $manage_service   = true,
129 +  $physnets         = $::os_service_default,
130 +  $etcd_host        = $::os_service_default,
131 +  $etcd_port        = $::os_service_default,
132 +  $etcd_user        = $::os_service_default,
133 +  $etcd_pass        = $::os_service_default,
134 +  $purge_config     = false,
135 +) {
136 +  include ::neutron::deps
137 +  include ::neutron::params
138 +
139 +  resources { 'neutron_agent_vpp':
140 +    purge => $purge_config,
141 +  }
142 +
143 +  neutron_agent_vpp {
144 +    'ml2_vpp/physnets': value  => $physnets;
145 +    'ml2_vpp/etcd_host': value => $etcd_host;
146 +    'ml2_vpp/etcd_port': value => $etcd_port;
147 +    'ml2_vpp/etcd_user': value => $etcd_user;
148 +    'ml2_vpp/etcd_pass': value => $etcd_pass;
149 +  }
150 +
151 +  package { 'neutron-vpp-agent':
152 +    ensure => $package_ensure,
153 +    name   => $::neutron::params::vpp_plugin_package,
154 +    tag    => ['openstack', 'neutron-package'],
155 +  }
156 +
157 +  if $manage_service {
158 +    if $enabled {
159 +      $service_ensure = 'running'
160 +    } else {
161 +      $service_ensure = 'stopped'
162 +    }
163 +  }
164 +
165 +  service { 'neutron-vpp-agent-service':
166 +    ensure => $service_ensure,
167 +    name   => $::neutron::params::vpp_agent_service,
168 +    enable => $enabled,
169 +    tag    => ['neutron-service'],
170 +  }
171 +}
172 diff --git a/manifests/deps.pp b/manifests/deps.pp
173 index 94b6f78..835e906 100644
174 --- a/manifests/deps.pp
175 +++ b/manifests/deps.pp
176 @@ -35,6 +35,7 @@ class neutron::deps {
177    # All other inifile providers need to be processed in the config block
178    Anchor['neutron::config::begin'] -> Neutron_agent_linuxbridge<||> ~> Anchor['neutron::config::end']
179    Anchor['neutron::config::begin'] -> Neutron_agent_ovs<||> ~> Anchor['neutron::config::end']
180 +  Anchor['neutron::config::begin'] -> Neutron_agent_vpp<||> ~> Anchor['neutron::config::end']
181    Anchor['neutron::config::begin'] -> Neutron_api_config<||> ~> Anchor['neutron::config::end']
182    Anchor['neutron::config::begin'] -> Neutron_api_paste_ini<||> ~> Anchor['neutron::config::end']
183    Anchor['neutron::config::begin'] -> Neutron_config<||> ~> Anchor['neutron::config::end']
184 diff --git a/manifests/params.pp b/manifests/params.pp
185 index 05ef627..02b9be1 100644
186 --- a/manifests/params.pp
187 +++ b/manifests/params.pp
188 @@ -86,6 +86,9 @@ class neutron::params {
189  
190      $kernel_headers     = "linux-headers-${::kernelrelease}"
191  
192 +    $vpp_plugin_package = 'python-networking-vpp'
193 +    $vpp_agent_service  = 'neutron-vpp-agent'
194 +
195    } elsif($::osfamily == 'Debian') {
196  
197      $nobody_user_group    = 'nogroup'
198 diff --git a/manifests/plugins/ml2/vpp.pp b/manifests/plugins/ml2/vpp.pp
199 new file mode 100644
200 index 0000000..837a614
201 --- /dev/null
202 +++ b/manifests/plugins/ml2/vpp.pp
203 @@ -0,0 +1,38 @@
204 +#
205 +# Install the networking-vpp ML2 mechanism driver and generate config file
206 +# from parameters in the other classes.
207 +#
208 +# === Parameters
209 +#
210 +# [*etcd_host*]
211 +# (optional) etcd server host name or IP.
212 +# Defaults to $::os_service_default
213 +#
214 +# [*etcd_port*]
215 +# (optional) etcd server listening port.
216 +# Defaults to $::os_service_default.
217 +#
218 +# [*etcd_user*]
219 +# (optional) User name for etcd authentication
220 +# Defaults to $::os_service_default.
221 +#
222 +# [*etcd_pass*]
223 +# (optional) Password for etcd authentication
224 +# Defaults to $::os_service_default.
225 +#
226 +class neutron::plugins::ml2::vpp (
227 +  $etcd_host       = $::os_service_default,
228 +  $etcd_port       = $::os_service_default,
229 +  $etcd_user       = $::os_service_default,
230 +  $etcd_pass       = $::os_service_default,
231 +) {
232 +  include ::neutron::deps
233 +  require ::neutron::plugins::ml2
234 +
235 +  neutron_plugin_ml2 {
236 +    'ml2_vpp/etcd_host': value => $etcd_host;
237 +    'ml2_vpp/etcd_port': value => $etcd_port;
238 +    'ml2_vpp/etcd_user': value => $etcd_user;
239 +    'ml2_vpp/etcd_pass': value => $etcd_pass;
240 +  }
241 +}
242 -- 
243 2.9.3
244