summaryrefslogtreecommitdiff
path: root/priv/ivi.config
blob: c53d8567fa53c841823cb4a96c2006b87295333c (plain)
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
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
%% -*- erlang -*-

%% Copyright (C) 2014, Jaguar Land Rover
%%
%% This program is licensed under the terms and conditions of the
%% Mozilla Public License, version 2.0.  The full text of the 
%% Mozilla Public License is at https://www.mozilla.org/MPL/2.0/
%%
%% Configuration file for the (in-vehicle) IVI used by the hvac_demo
%%
%% See ../hvac_demo/README.md for details on the demo.
%%
%% See ../CONFIGURE.md for a details on the configuration process
%% itself.
%% 
[
 %% All erlang apps needed to fire up a node. Do not touch.
 {apps,
  [kernel,
   stdlib,
   sasl,
   {setup, load},
   syntax_tools,
   lager,
   crypto,
   public_key,
   exo,
   bert,
   compiler,
   ssl,
   asn1,

   %% RVI-specific apps.

   %% Do not touch unless you are replacing apps with your own
   %% version.  If you are replacing an app with a non-Erlang version,
   %% it still has to be loaded in order to resolve.
   %% If, for example, you want to deploy your own scheduler 
   %% outside Erlang, replace
   %%
   %%     schedule,
   %% with
   %%     { schedule, load },
   %%
   rvi, 
   rvi_common,
   service_edge,
   service_discovery,
   authorize,
   schedule,
   data_link_bert_rpc,
   protocol ]},

 %%
 %% Custom environment settings
 %% for all apps running on the node.
 %%
 {env,
  [
   %% Lager is the main logging mechanism.
   %% See https://github.com/basho/lager for details.
   %%
   {lager, 
    [ { handlers, 
	%% Change this to debug, info, notice, warning, or error in
	%% order to lower the console chatter.
	[ {lager_console_backend, notice} ]
      }
    ]
   },
      
   %% All RVI configuration is done here.
   %% Please note that the rvi_node.sh launch script
   %% can still override the port range and static nodes
   %% through its command line parameters.
   %%
   {rvi, 
    [

     %% Specify the node address that data_link uses to listen to
     %% incoming traffic from other rvi nodes.
     %%
     %% This is the address that is announced to
     %% other rvi nodes during service discovery and should be
     %% forwarded through firewalls and port forwarding to to the port
     %% specified by the configuration entry rvi -> components ->
     %% data_link -> bert_rpc_server (see below).
     %%
     { node_address, "127.0.0.1:8817" },   

     %% Specify the prefix of all services that this rvi node is hosting.
     %% 
     %% All local services regsitering with service edge will be prefixed with 
     %% the string below when they are announced to remote rvi nodes
     %% that connect to this node (using the address specified
     %% by node_address above).
     %%
     %% If a locally connected service registers itself as 
     %% "hvac/fan_speed", and the node_service_prefix is
     %% "jlr.com/vin/1234/", this node will announce the service
     %% "jlr.com/vin/1234/hvac/fan_speed" as being available 
     %% to remotely connected rvi nodes. 
     %%
     %% Two rvi nodes should never have the same node_service_prefix
     %% value.
     %% 
     { node_service_prefix, "jlr.com/vin/1234/"},

     %% Specify static service prefixes with well known addresses
     %% 
     %% Static nodes allows a local RVI node to route services with
     %% matching prefixes to a well known address of a remote node.  A
     %% static node is often a backend/cloud server that is assumed to
     %% be found at a given address as soon as network connectivity
     %% has been established.
     %%
     %% When a locally connected service issues a message or rpc to a
     %% service, and the network address of the service cannot be
     %% found in the tables maintained by the peer-to-peer service
     %% discovery process, the static nodes table below is scanned as
     %% to prefix match the service and locate a suitable network
     %% address.
     %%
     { static_nodes, 
       [ 
	 { "jlr.com/backend/", "localhost:8807" }
       ]
     },
		      

     { components, 
       [
	{ service_edge, 
	  %% This is the URL that local services use to connect to 
	  %% the RVI system. It is also used by
	  %% the other components below to send inter-compoonent
	  %% JSON-RPC calls to the service edge. 
	  %%
	  %% The host and address given in URL should route to the port given 
	  %% in exo_http_opts below.
	  %%
	  [ { url, "http://127.0.0.1:8811" },
	    { exo_http_opts, [ { port, 8811 } ] } 
	  ]
	},
	{ service_discovery, 
	  [ { url, "http://127.0.0.1:8812" },
	    { exo_http_opts, [ { port, 8812 } ] }
	  ]
	},
	{ schedule, 
	  [ { url, "http://127.0.0.1:8813" },
	    { exo_http_opts, [ { port, 8813 } ] }
	  ]
	},
	{ authorize, 
	  [ { url, "http://127.0.0.1:8814" },
	    { exo_http_opts, [ { port, 8814 } ] }
	  ]
	},
	{ protocol, 
	  [ { url, "http://127.0.0.1:8815" },
	    { exo_http_opts, [ { port, 8815 } ] }
	  ]
	},
	{ data_link, 
	  [ { url, "http://127.0.0.1:8816" },
	    { exo_http_opts, [ { port, 8816 } ] },

	    %% The bert_rpc_server port will be used to listen to incoming
	    %% traffic from remote nodes. 
	    { bert_rpc_server, [ {port, 8817 }]}
	  ]
	}
       ]
     }
    ]}
]}
].