71f89822d353c31db4d070b25d70d78b13970824
[fuel.git] / mcp / salt-formulas / opendaylight / server.sls
1 ##############################################################################
2 # Copyright (c) 2017 Mirantis Inc. and others.
3 # All rights reserved. This program and the accompanying materials
4 # are made available under the terms of the Apache License, Version 2.0
5 # which accompanies this distribution, and is available at
6 # http://www.apache.org/licenses/LICENSE-2.0
7 ##############################################################################
8 {% from "opendaylight/map.jinja" import server with context %}
9 {% from "linux/map.jinja" import system with context %}
10
11 {%- if server.enabled %}
12
13 opendaylight_repo_key:
14   cmd.run:
15     - name: "apt-key adv --keyserver keyserver.ubuntu.com --recv 44C05248"
16     - env:
17 {%- if system.proxy.pkg.http is defined %}
18       - http_proxy: {{ system.proxy.pkg.http }}
19 {%- endif %}
20 {%- if system.proxy.pkg.https is defined %}
21       - https_proxy: {{ system.proxy.pkg.https }}
22 {%- endif %}
23
24 opendaylight_repo:
25   pkgrepo.managed:
26   # NOTE(armband): PPA handling behind proxy broken, define it explicitly
27   # https://github.com/saltstack/salt/pull/45224
28   # - ppa: {{ server.repo }}
29   - human_name: opendaylight-ppa
30   - name: deb http://ppa.launchpad.net/odl-team/{{ server.version }}/ubuntu xenial main
31   - file: /etc/apt/sources.list.d/odl-team-ubuntu-{{ server.version }}-xenial.list
32
33 opendaylight:
34   pkg.installed:
35   - require:
36     - pkgrepo: opendaylight_repo
37   - require_in:
38     - file: /opt/opendaylight/etc/jetty.xml
39     - file: /opt/opendaylight/bin/setenv
40     - ini: /opt/opendaylight/etc/org.apache.karaf.features.cfg
41     - ini: /opt/opendaylight/etc/org.ops4j.pax.web.cfg
42   service.running:
43   - enable: true
44   - watch:
45     - file: /opt/opendaylight/etc/jetty.xml
46     - file: /opt/opendaylight/bin/setenv
47     - ini: /opt/opendaylight/etc/org.apache.karaf.features.cfg
48     - ini: /opt/opendaylight/etc/org.ops4j.pax.web.cfg
49
50 # TODO: use service.masked state once salt get updated to 2017.7.0+
51 service.mask:
52   module.run:
53   - m_name: opendaylight
54   - require_in:
55     - pkg: opendaylight
56
57 /opt/opendaylight/etc/jetty.xml:
58   file.managed:
59   - source: salt://opendaylight/files/jetty.xml
60   - template: jinja
61   - user: odl
62   - group: odl
63
64 /opt/opendaylight/bin/setenv:
65   file.managed:
66   - source: salt://opendaylight/files/setenv.shell
67   - mode: 0755
68   - use:
69     - file: /opt/opendaylight/etc/jetty.xml
70
71 {% set features %}
72 {%- for f in server.karaf_features.itervalues() -%}
73 {{ f | join(',') }}{%- if not loop.last %},{%- endif %}
74 {%- endfor %}
75 {% endset %}
76
77 /opt/opendaylight/etc/org.apache.karaf.features.cfg:
78   ini.options_present:
79     - sections:
80         featuresBoot: {{ features }}
81
82 /opt/opendaylight/etc/org.ops4j.pax.web.cfg:
83   ini.options_present:
84     - sections:
85         org.ops4j.pax.web.listening.addresses: {{ server.odl_bind_ip }}
86         org.osgi.service.http.port: {{ server.odl_rest_port }}
87
88 {%- if server.get('router_enabled', false) %}
89 /opt/opendaylight/etc/custom.properties:
90   ini.options_present:
91     - sections:
92         ovsdb.l3.fwd.enabled: 'yes'
93         ovsdb.of.version: 1.3
94     - require:
95       - pkg: opendaylight
96     - watch_in:
97       - service: opendaylight
98 {%- endif %}
99
100 {%- if grains['cpuarch'] == 'aarch64' %}
101 opendaylight-leveldbjni:
102   pkg.installed
103 {%- endif %}
104
105 {%- endif %}