71 lines
2.9 KiB
Python
71 lines
2.9 KiB
Python
import time
|
|
|
|
from solar.core.resource import virtual_resource as vr
|
|
from solar import errors
|
|
from solar.dblayer.model import ModelMeta
|
|
|
|
|
|
def run():
|
|
ModelMeta.remove_all()
|
|
|
|
node = vr.create('node', 'resources/ro_node', {'name': 'first' + str(time.time()),
|
|
'ip': '10.0.0.3',
|
|
'node_id': 'node1',
|
|
})[0]
|
|
|
|
transports = vr.create('transports_node1', 'resources/transports')[0]
|
|
|
|
ssh_transport = vr.create('ssh_transport', 'resources/transport_ssh',
|
|
{'ssh_key': '/vagrant/.vagrant/machines/solar-dev1/virtualbox/private_key',
|
|
'ssh_user': 'vagrant'})[0]
|
|
|
|
transports.connect(node, {})
|
|
|
|
# it uses reverse mappings
|
|
ssh_transport.connect(transports, {'ssh_key': 'transports:key',
|
|
'ssh_user': 'transports:user',
|
|
'ssh_port': 'transports:port',
|
|
'name': 'transports:name'})
|
|
|
|
hosts = vr.create('hosts_file', 'resources/hosts_file', {})[0]
|
|
|
|
# let's add torrent transport for hosts file deployment (useless in real life)
|
|
|
|
torrent_transport = vr.create('torrent_transport',
|
|
'resources/transport_torrent',
|
|
{'trackers': ['udp://open.demonii.com:1337',
|
|
'udp://tracker.openbittorrent.com:80']})[0]
|
|
# you could use any trackers as you want
|
|
|
|
transports_for_torrent = vr.create(
|
|
'transports_for_torrent', 'resources/transports')[0]
|
|
|
|
transports_for_torrent.connect(torrent_transport, {})
|
|
|
|
ssh_transport.connect_with_events(transports_for_torrent, {'ssh_key': 'transports:key',
|
|
'ssh_user': 'transports:user',
|
|
'ssh_port': 'transports:port',
|
|
'name': 'transports:name'},
|
|
events={})
|
|
|
|
transports_for_hosts = vr.create(
|
|
'transports_for_hosts', 'resources/transports')[0]
|
|
|
|
torrent_transport.connect(transports_for_hosts, {'trackers': 'transports:trackers',
|
|
'name': 'transports:name'})
|
|
|
|
ssh_transport.connect(transports_for_hosts, {'ssh_key': 'transports:key',
|
|
'ssh_user': 'transports:user',
|
|
'ssh_port': 'transports:port',
|
|
'name': 'transports:name'})
|
|
|
|
transports_for_hosts.connect(hosts)
|
|
transports_for_hosts.connect_with_events(node, events={})
|
|
|
|
node.connect(hosts, {
|
|
'ip': 'hosts:ip',
|
|
'name': 'hosts:name'
|
|
})
|
|
|
|
run()
|