Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- %% -*- 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,
- 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_discovery,
- service_edge,
- authorize,
- schedule,
- dlink_tcp,
- bt,
- dlink_bt,
- proto_bert,
- proto_json ]},
- %%
- %% 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, debug} ]
- }
- ]
- },
- %% 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).
- %%
- %% If this node is sitting behind a firewall and cannot
- %% receive incomign connections on any address, its
- %% node_address should be set to "0.0.0.0:0" to inform
- %% the remote node that it should not attempt to
- %% connect back to self.
- { node_address, "127.0.0.1:8807" },
- %% 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 unless all services add a system-wide unique name
- %% to it.
- %%
- { node_service_prefix, "jlr.com/bt/stoffe"},
- { routing_rules,
- [
- %% Make sure to have a default if you don't want your message
- %% to error out immediately. With a default the message will
- %% be queued until it times out, waiting for a remote node
- %% to connect and announce that it can handle the targeted service.
- { "",
- [
- { proto_json_rpc, dlink_tcp_rpc}
- ]
- }
- ]
- },
- { components,
- [
- %% A note about JSON-RPC calls vs gen_server calls:
- %%
- %% All locally connected services communicate with Service Edge
- %% through JSON-RPC, as specified below.
- %%
- %% Communication between the RVi components, however, can be
- %% either JSON-RPC or gen_server calls.
- %%
- %% JSON-RPC calls provide compatability with replacement components
- %% written in languages other than Erlang.
- %%
- %% Gen_server calls provide native erlang inter-process calls that
- %% are about 4x faster than JSON-RPC when transmitting large data volumes.
- %%
- %% If one or more of the components below are replaced with external
- %% components, use JSON-RPC by specifying url and exo_http_opts
- %% for all components.
- %%
- %% If you are running an all-native erlang system, use gen_server calls
- %% by configuring gen_server.
- %%
- %% If you specify both gen_server and url/exo_http_opts, the gen_server
- %% communicaiton path will be used for inter component communication.
- %%
- %% Please note that communication between two RVI nodes are
- %% not affected by this since data_link_bert_rpc will use
- %% BERT-RPC to communicate ( using the address/port specified
- %% by bert_rpc_server).
- %%
- {service_edge,
- [
- %% Service_edge_rpc component is used as a gen_server
- { service_edge_rpc, gen_server,
- [
- %% JSON-RPC address will be translated to
- %% an URL looking like this:
- %% http://127.0.0.1:8801
- %%
- %% This URL is used both for communication with
- %% locally connected services and for intra-component
- %% communication in case the access method for
- %% service_edge_rpc is specified as json_rpc.
- { json_rpc_address, { "127.0.0.1", 8801 } },
- %% Websocket is used for websocket access, preferably
- %% through the rvi.js package available for Javascript
- %% apps in browsers and crosswalk who wants to interface
- %% RVI.
- { websocket, [ { port, 8808}]}
- ]
- }
- ]
- },
- { service_discovery,
- [ { service_discovery_rpc, gen_server,
- [
- { json_rpc_address, { "127.0.0.1", 8802 }}
- ]
- }
- ]
- },
- { schedule,
- [ { schedule_rpc, json_rpc,
- [
- { json_rpc_address, { "127.0.0.1", 8803 }}
- ]
- }
- ]
- },
- { authorize,
- [ { authorize_rpc, gen_server,
- [
- { json_rpc_address, { "127.0.0.1", 8804 } }
- ]
- }
- ]
- },
- { protocol,
- [ { proto_json_rpc, gen_server,
- [
- { json_rpc_address, { "127.0.0.1", 8805 } }
- ]
- }
- ]
- },
- { data_link,
- [
- { dlink_tcp_rpc, gen_server,
- [
- { json_rpc_address, { "127.0.0.1", 8806 } },
- %% Bert_rpc server specifies the port we should
- %% listen to for incoming connections
- %% from other rvi nodes.
- %% A specific NIC address can also be specified
- %% through the {ip, "192.168.0.1" } tuple.
- { server_opts, [ { port, 8807 }]}
- %% { persistent_connections, [ "38.129.64.13:8807" ]}
- ]
- },
- { dlink_bt_rpc, gen_server,
- [
- { server_opts, [ { channel, 1 }]}
- ]
- }
- ]
- }
- ]
- }
- ]}
- ]}
- ].
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement