AtYourService Dependencies
Basics
dependencies are marked in the service template hrd as follows
dependencies.global = mongodb, influxdb
dependencies.node = portal_lib, influxdb_client, mongodb_client, redis
This denotes that this service requires portal_lib, influxdb_client, mongodb_client and redis to be locally installed on the same node.
It also has global dependencies on mongodb and influxdb which means it needs them to be installed but not necessarily on the same node.
More complex example where arguments are embedded
In the actions.py of service template:
from JumpScale import j
ActionsBase=j.atyourservice.getActionsBaseClass()
class Actions(ActionsBase):
def init(self, serviceObj, args):
for k, v in args.iteritems():
_, content = j.tools.text.ask(v)
args[k] = content
data = {
'param.disk': '1',
'param.mem': '100',
'param.passwd': '',
'param.port': '9999',
'param.unixsocket': '0',
'param.ip': 'localhost',
}
j.atyourservice.new(name='redis', instance='system', args=data, parent=serviceObj.parent)
j.atyourservice.new(name='web', parent=serviceObj.parent)
data = {
'tcp.addr': 'localhost',
'tcp.port.service': '27017',
'param.replicaset': '',
}
j.atyourservice.new(name='mongodb', args=data, parent=serviceObj.parent)
data = {
'tcp.addr': 'localhost',
'param.influxdb.client.dbname': 'main',
'param.influxdb.client.login': 'root',
'param.influxdb.client.passwd': args['param.rootpasswd'],
'tcp.port.service': '8086',
}
j.atyourservice.new(name='influxdb', args=data, parent=serviceObj.parent)
data = {
'param.osis.connection.influxdb': 'main',
'param.osis.connection.mongodb': 'main',
'param.osis.superadmin.passwd': args['param.rootpasswd'],
}
j.atyourservice.new(name='osis', args=data, parent=serviceObj.parent)
j.atyourservice.new(name='influxdb_client', parent=serviceObj.parent)
j.atyourservice.new(name='mongodb_client', parent=serviceObj.parent)
j.atyourservice.new(name='osis_client', parent=serviceObj.parent)
data = {
'smtp.login': '',
'smtp.passwd': '',
'smtp.port': '25',
'smtp.sender': '[email protected]',
'smtp.server': 'localhost',
}
j.atyourservice.new(name='mailclient', args=data, parent=serviceObj.parent)
data = {
'param.cfg.admingroups': 'admin,',
'param.cfg.authentication.method': 'osis',
'param.cfg.contentdirs': '',
'param.cfg.defaultspace': 'home',
'param.cfg.force_oauth_instance': '',
'param.cfg.gitlab.connection': 'main',
'param.cfg.ipaddr': 'localhost',
'param.cfg.port': '82',
'param.cfg.secret': args['param.rootpasswd'],
'param.portal.name': 'main',
'param.portal.rootpasswd': args['param.rootpasswd'],
}
j.atyourservice.new(name='portal', args=data, parent=serviceObj.parent)
j.atyourservice.new(name='portal_client', parent=serviceObj.parent)