-
Notifications
You must be signed in to change notification settings - Fork 120
/
Copy pathmap.jinja
79 lines (72 loc) · 3.37 KB
/
map.jinja
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
# -*- coding: utf-8 -*-
# vim: ft=jinja
{%- set tplroot = tpldir.split('/')[0] %}
{%- import_yaml tplroot ~ "/defaults.yaml" as default_settings %}
{%- import_yaml tplroot ~ "/osfingermap.yaml" as osfingermap %}
{%- import_yaml tplroot ~ "/osarchmap.yaml" as osarchmap %}
{%- import_yaml tplroot ~ "/osfamilymap.yaml" as osfamilymap %}
{%- set _config = salt['config.get'](tplroot, default={}) %}
{%- set defaults = salt['grains.filter_by'](
default_settings,
default=tplroot,
merge=salt['grains.filter_by']( osfamilymap, grain='os_family',
merge=salt['grains.filter_by']( osarchmap, grain='osarch',
merge=salt['grains.filter_by']( osfingermap, grain='osfinger',
merge=salt['grains.filter_by']( _config, default='lookup'
)
)
)
)
)
%}
{%- set d = salt['grains.filter_by']( {'defaults': defaults}, default='defaults', merge=_config) %}
# depreciate two params
{%- if 'software_component_matrix' in d %}
{%- do d.update({ 'components': d.software_component_matrix }) %}
{%- endif %}
{%- if 'software_package_matrix' in d %}
{%- do d.update({ 'packagetypes': d.software_package_matrix }) %}
{%- endif %}
# build dict
{%- for comp in d.componentypes %}
{%- if comp in d.pkg and d.pkg[comp] is mapping %}
{%- for name,v in d.pkg[comp].items() %}
{%- set software = d.pkg[comp][name] %}
{%- set url = None %}
{%- set path = d.dir.archive ~ '/' ~ name %}
{%- if 'version' in v and v.version %}
{%- set release = v.version.split('.')[0] ~ '.' ~ v.version.split('.')[1] %}
{%- set dir = '%s-%s'|format(name, v.version) %}
{%- set path = d.dir.archive ~ '/' ~ dir %}
{%- for package in d.packagetypes %}
{%- if package in v and v[package] %}
{%- set path = d.dir[package] if package == 'macapp' else path %}
{%- do software[package].update({'name': path}) %}
{%- if 'source' in v[package] %}
{%- set u = v[package]['source']|replace('VER', v.version) %}
{%- set url = u|replace('REL', release)|replace('ARCH', d.arch) %}
{%- do software[package].update({'source': url}) %}
{%- endif %}
{%- if 'source_hash' in v[package] %}
{%- set h = v[package]['source_hash']|replace('VER', v.version) %}
{%- set hash = h|replace('REL', release)|replace('ARCH', d.arch) %}
{%- do software[package].update({'source_hash': hash}) %}
{%- endif %}
{%- endif %}
{%- endfor %}
{%- endif %}
{%- do software.update({'path': path}) %}
{%- endfor %}
{%- endif %}
{%- endfor %}
{# MONGODB #}
{%- do d.update({'formula': 'mongodb'}) %}
{%- do d.pkg.database.mongos.update({'path': d.pkg.database.mongod.path}) %}
{%- if 'repo' in d.pkg and 'mongod' in d.pkg.database %}
{%- for fname in ('file', 'name', 'humanname', 'gpgkey',) %}
{%- if fname in d.pkg.repo %}
{%- do d.pkg.repo.update({fname: d.pkg.repo[fname]|replace('REL', d.pkg.database.mongod.version)}) %}
{%- endif %}
{%- endfor %}
{%- endif %}
{%- set data = d %}