Refactor VirtualResources

- rename VirtualResource to Composer
- rename event parameter depend_action to child_action
- rename values parameter to input

Closes-bug: #1526780

Change-Id: Ib974e14ff4bda44c2d7d991f62aa4a06dea160ea
This commit is contained in:
Łukasz Oleś 2015-12-28 15:22:52 +01:00
parent f7edd1f957
commit 25dc2685f5
33 changed files with 237 additions and 235 deletions

2
.gitignore vendored
View File

@ -55,3 +55,5 @@ solar/.cache
.testrepository/ .testrepository/
.solar_config_override .solar_config_override
.ropeproject

View File

@ -8,7 +8,7 @@ from solar.core import actions
from solar.core import resource from solar.core import resource
from solar.core import signals from solar.core import signals
from solar.core import validation from solar.core import validation
from solar.core.resource import virtual_resource as vr from solar.core.resource import composer as cr
from solar import errors from solar import errors
from solar.dblayer.model import ModelMeta from solar.dblayer.model import ModelMeta
@ -21,13 +21,13 @@ def main():
def setup_resources(): def setup_resources():
ModelMeta.remove_all() ModelMeta.remove_all()
node2 = vr.create('node2', 'resources/ro_node/', { node2 = cr.create('node2', 'resources/ro_node/', {
'ip': '10.0.0.4', 'ip': '10.0.0.4',
'ssh_key': '/vagrant/.vagrant/machines/solar-dev2/virtualbox/private_key', 'ssh_key': '/vagrant/.vagrant/machines/solar-dev2/virtualbox/private_key',
'ssh_user': 'vagrant' 'ssh_user': 'vagrant'
})[0] })[0]
solar_bootstrap2 = vr.create('solar_bootstrap2', 'resources/solar_bootstrap', {'master_ip': '10.0.0.2'})[0] solar_bootstrap2 = cr.create('solar_bootstrap2', 'resources/solar_bootstrap', {'master_ip': '10.0.0.2'})[0]
signals.connect(node2, solar_bootstrap2) signals.connect(node2, solar_bootstrap2)

View File

@ -16,7 +16,7 @@ import sys
import time import time
from solar.core import actions from solar.core import actions
from solar.core.resource import virtual_resource as vr from solar.core.resource import composer as cr
from solar.core import resource from solar.core import resource
from solar.core import signals from solar.core import signals
from solar.dblayer.model import ModelMeta from solar.dblayer.model import ModelMeta
@ -55,7 +55,7 @@ def deploy():
signals.connect(openstack_vhost, openstack_rabbitmq_user, {'vhost_name': 'vhost_name'}) signals.connect(openstack_vhost, openstack_rabbitmq_user, {'vhost_name': 'vhost_name'})
errors = vr.validate_resources() errors = cr.validate_resources()
if errors: if errors:
for r, error in errors: for r, error in errors:
print 'ERROR: %s: %s' % (r.name, error) print 'ERROR: %s: %s' % (r.name, error)

View File

@ -3,14 +3,14 @@ import sys
import time import time
from solar.core import signals from solar.core import signals
from solar.core.resource import virtual_resource as vr from solar.core.resource import composer as cr
from solar.dblayer.model import ModelMeta from solar.dblayer.model import ModelMeta
def run(): def run():
ModelMeta.remove_all() ModelMeta.remove_all()
resources = vr.create('nodes', 'templates/nodes', {'count': 2}) resources = cr.create('nodes', 'templates/nodes', {'count': 2})
node1, node2 = [x for x in resources if x.name.startswith('node')] node1, node2 = [x for x in resources if x.name.startswith('node')]
hosts1, hosts2 = [x for x in resources hosts1, hosts2 = [x for x in resources

View File

@ -3,15 +3,15 @@ id: librarian_examples
resources: resources:
- id: rabbitmq_service1 - id: rabbitmq_service1
from: resources/rabbitmq_service from: resources/rabbitmq_service
location: {{node}} location: #{node}#
values: input:
management_port: 15672 management_port: 15672
port: 5672 port: 5672
- id: librarian - id: librarian
location: {{node}} location: #{node}#
from: resources/librarian from: resources/librarian
values: input:
modules: modules:
- rabbitmq_service1::module::NO_EVENTS - rabbitmq_service1::module::NO_EVENTS
@ -19,4 +19,4 @@ events:
- type: depends_on - type: depends_on
parent_action: librarian.run parent_action: librarian.run
state: success state: success
depend_action: rabbitmq_service1.run child_action: rabbitmq_service1.run

View File

@ -1,5 +1,5 @@
from solar.core.resource import virtual_resource as vr from solar.core.resource import composer as cr
from solar.dblayer.model import ModelMeta from solar.dblayer.model import ModelMeta
import yaml import yaml
@ -33,24 +33,24 @@ NETWORK_METADATA = yaml.load("""
def deploy(): def deploy():
ModelMeta.remove_all() ModelMeta.remove_all()
resources = vr.create('nodes', 'templates/nodes', {'count': 2}) resources = cr.create('nodes', 'templates/nodes', {'count': 2})
first_node, second_node = [x for x in resources if x.name.startswith('node')] first_node, second_node = [x for x in resources if x.name.startswith('node')]
first_transp = next(x for x in resources if x.name.startswith('transport')) first_transp = next(x for x in resources if x.name.startswith('transport'))
library = vr.create('library1', 'resources/fuel_library', {})[0] library = cr.create('library1', 'resources/fuel_library', {})[0]
first_node.connect(library) first_node.connect(library)
keys = vr.create('ceph_key', 'resources/ceph_keys', {})[0] keys = cr.create('ceph_key', 'resources/ceph_keys', {})[0]
first_node.connect(keys) first_node.connect(keys)
remote_file = vr.create('ceph_key2', 'resources/remote_file', remote_file = cr.create('ceph_key2', 'resources/remote_file',
{'dest': '/var/lib/astute/'})[0] {'dest': '/var/lib/astute/'})[0]
second_node.connect(remote_file) second_node.connect(remote_file)
keys.connect(remote_file, {'ip': 'remote_ip', 'path': 'remote_path'}) keys.connect(remote_file, {'ip': 'remote_ip', 'path': 'remote_path'})
first_transp.connect(remote_file, {'transports': 'remote'}) first_transp.connect(remote_file, {'transports': 'remote'})
ceph_mon = vr.create('ceph_mon1', 'resources/ceph_mon', ceph_mon = cr.create('ceph_mon1', 'resources/ceph_mon',
{'storage': STORAGE, {'storage': STORAGE,
'keystone': KEYSTONE, 'keystone': KEYSTONE,
'network_scheme': NETWORK_SCHEMA, 'network_scheme': NETWORK_SCHEMA,
@ -59,7 +59,7 @@ def deploy():
'role': 'controller', 'role': 'controller',
})[0] })[0]
managed_apt = vr.create( managed_apt = cr.create(
'managed_apt1', 'templates/mos_repos', 'managed_apt1', 'templates/mos_repos',
{'node': first_node.name, 'index': 0})[-1] {'node': first_node.name, 'index': 0})[-1]

View File

@ -10,7 +10,7 @@
import click import click
from solar.core import signals from solar.core import signals
from solar.core.resource import virtual_resource as vr from solar.core.resource import composer as cr
from solar.system_log import change from solar.system_log import change
from solar.cli import orch from solar.cli import orch
@ -45,10 +45,10 @@ def lxc_template(idx):
def deploy(): def deploy():
ModelMeta.remove_all() ModelMeta.remove_all()
node1 = vr.create('nodes', 'templates/nodes', {})[0] node1 = cr.create('nodes', 'templates/nodes', {})[0]
seed = vr.create('nodes', 'templates/seed_node', {})[0] seed = cr.create('nodes', 'templates/seed_node', {})[0]
ssh_key = vr.create('ssh_key1', 'resources/ssh_key', { ssh_key = cr.create('ssh_key1', 'resources/ssh_key', {
'keys_dir': '/vagrant/.ssh', 'keys_dir': '/vagrant/.ssh',
'private_key': '/vagrant/.ssh/id_rsa', 'private_key': '/vagrant/.ssh/id_rsa',
'public_key': '/vagrant/.ssh/id_rsa.pub', 'public_key': '/vagrant/.ssh/id_rsa.pub',
@ -56,14 +56,14 @@ def deploy():
})[0] })[0]
signals.connect(seed, ssh_key) signals.connect(seed, ssh_key)
cnets1 = vr.create('cnets1', 'resources/container_networks', { cnets1 = cr.create('cnets1', 'resources/container_networks', {
'networks': 'networks':
{'mgmt': { {'mgmt': {
'bridge': 'br-int53', 'bridge': 'br-int53',
'bridge_address': '172.18.11.254/24' 'bridge_address': '172.18.11.254/24'
}} }}
})[0] })[0]
cnets2 = vr.create('cnets2', 'resources/container_networks', { cnets2 = cr.create('cnets2', 'resources/container_networks', {
'networks': 'networks':
{'mgmt': { {'mgmt': {
'bridge': 'br-int53', 'bridge': 'br-int53',
@ -73,12 +73,12 @@ def deploy():
signals.connect(seed, cnets1) signals.connect(seed, cnets1)
signals.connect(node1, cnets2) signals.connect(node1, cnets2)
vxlan_mesh1 = vr.create('vxlan_mesh1', 'resources/vxlan_mesh', { vxlan_mesh1 = cr.create('vxlan_mesh1', 'resources/vxlan_mesh', {
'id': 53, 'id': 53,
'parent': 'eth1', 'parent': 'eth1',
'master': 'br-int53' 'master': 'br-int53'
})[0] })[0]
vxlan_mesh2 = vr.create('vxlan_mesh2', 'resources/vxlan_mesh', { vxlan_mesh2 = cr.create('vxlan_mesh2', 'resources/vxlan_mesh', {
'id': 53, 'id': 53,
'parent': 'eth1', 'parent': 'eth1',
'master': 'br-int53' 'master': 'br-int53'
@ -88,14 +88,14 @@ def deploy():
signals.connect(seed, vxlan_mesh1) signals.connect(seed, vxlan_mesh1)
signals.connect(node1, vxlan_mesh2) signals.connect(node1, vxlan_mesh2)
lxc_infra1 = vr.create('lxc_infra1', 'resources/lxc_host', {})[0] lxc_infra1 = cr.create('lxc_infra1', 'resources/lxc_host', {})[0]
signals.connect(node1, lxc_infra1) signals.connect(node1, lxc_infra1)
lxc_hosts = range(28, 35) lxc_hosts = range(28, 35)
hosts_map = {} hosts_map = {}
for idx in lxc_hosts: for idx in lxc_hosts:
lxc_host_idx = vr.create( lxc_host_idx = cr.create(
'lxc_host{}'.format(idx), 'lxc_host{}'.format(idx),
'resources/lxc_container', lxc_template(idx))[0] 'resources/lxc_container', lxc_template(idx))[0]
hosts_map[idx] = lxc_host_idx hosts_map[idx] = lxc_host_idx
@ -112,15 +112,15 @@ def deploy():
'private_key': 'user_key'}) 'private_key': 'user_key'})
# RABBIT # RABBIT
rabbitmq_service1 = vr.create('rabbitmq_service1', 'resources/rabbitmq_service/', { rabbitmq_service1 = cr.create('rabbitmq_service1', 'resources/rabbitmq_service/', {
'management_port': 15672, 'management_port': 15672,
'port': 5672, 'port': 5672,
})[0] })[0]
openstack_vhost = vr.create('openstack_vhost', 'resources/rabbitmq_vhost/', { openstack_vhost = cr.create('openstack_vhost', 'resources/rabbitmq_vhost/', {
'vhost_name': 'openstack' 'vhost_name': 'openstack'
})[0] })[0]
openstack_rabbitmq_user = vr.create('openstack_rabbitmq_user', 'resources/rabbitmq_user/', { openstack_rabbitmq_user = cr.create('openstack_rabbitmq_user', 'resources/rabbitmq_user/', {
'user_name': 'openstack', 'user_name': 'openstack',
'password': 'openstack_password' 'password': 'openstack_password'
})[0] })[0]

View File

@ -6,7 +6,7 @@ import sys
from solar.core import resource from solar.core import resource
from solar.core import signals from solar.core import signals
from solar.core import validation from solar.core import validation
from solar.core.resource import virtual_resource as vr from solar.core.resource import composer as cr
from solar import events as evapi from solar import events as evapi
from solar.dblayer.model import ModelMeta from solar.dblayer.model import ModelMeta
@ -40,9 +40,9 @@ def main():
def prepare_nodes(nodes_count): def prepare_nodes(nodes_count):
resources = vr.create('nodes', 'templates/nodes_with_transports', {"count": nodes_count}) resources = cr.create('nodes', 'templates/nodes_with_transports', {"count": nodes_count})
nodes = [x for x in resources if x.name.startswith('node')] nodes = [x for x in resources if x.name.startswith('node')]
resources = vr.create('nodes_network', 'templates/nodes_network', {"count": nodes_count}) resources = cr.create('nodes_network', 'templates/nodes_network', {"count": nodes_count})
nodes_sdn = [x for x in resources if x.name.startswith('node')] nodes_sdn = [x for x in resources if x.name.startswith('node')]
r = {} r = {}
@ -51,7 +51,7 @@ def prepare_nodes(nodes_count):
r[node_sdn.name] = node_sdn r[node_sdn.name] = node_sdn
# LIBRARIAN # LIBRARIAN
librarian = vr.create('librarian_{}'.format(node.name), 'resources/librarian', {})[0] librarian = cr.create('librarian_{}'.format(node.name), 'resources/librarian', {})[0]
r[librarian.name] = librarian r[librarian.name] = librarian
node.connect(librarian, {}) node.connect(librarian, {})
@ -70,7 +70,7 @@ def prepare_nodes(nodes_count):
def setup_base(node, librarian): def setup_base(node, librarian):
# MARIADB # MARIADB
mariadb_service = vr.create('mariadb_service1', 'resources/mariadb_service', { mariadb_service = cr.create('mariadb_service1', 'resources/mariadb_service', {
'image': 'mariadb', 'image': 'mariadb',
'port': 3306 'port': 3306
})[0] })[0]
@ -78,15 +78,15 @@ def setup_base(node, librarian):
node.connect(mariadb_service) node.connect(mariadb_service)
# RABBIT # RABBIT
rabbitmq_service = vr.create('rabbitmq_service1', 'resources/rabbitmq_service/', { rabbitmq_service = cr.create('rabbitmq_service1', 'resources/rabbitmq_service/', {
'management_port': 15672, 'management_port': 15672,
'port': 5672, 'port': 5672,
})[0] })[0]
openstack_vhost = vr.create('openstack_vhost', 'resources/rabbitmq_vhost/', { openstack_vhost = cr.create('openstack_vhost', 'resources/rabbitmq_vhost/', {
'vhost_name': 'openstack' 'vhost_name': 'openstack'
})[0] })[0]
openstack_rabbitmq_user = vr.create('openstack_rabbitmq_user', 'resources/rabbitmq_user/', { openstack_rabbitmq_user = cr.create('openstack_rabbitmq_user', 'resources/rabbitmq_user/', {
'user_name': 'openstack', 'user_name': 'openstack',
'password': 'openstack_password' 'password': 'openstack_password'
})[0] })[0]
@ -105,21 +105,21 @@ def setup_base(node, librarian):
'openstack_rabbitmq_user': openstack_rabbitmq_user} 'openstack_rabbitmq_user': openstack_rabbitmq_user}
def setup_keystone(node, librarian, mariadb_service, openstack_rabbitmq_user): def setup_keystone(node, librarian, mariadb_service, openstack_rabbitmq_user):
keystone_puppet = vr.create('keystone_puppet', 'resources/keystone_puppet', {})[0] keystone_puppet = cr.create('keystone_puppet', 'resources/keystone_puppet', {})[0]
keystone_puppet.connect_with_events(librarian, {'module': 'modules'}, {}) keystone_puppet.connect_with_events(librarian, {'module': 'modules'}, {})
evapi.add_dep(librarian.name, keystone_puppet.name, actions=('run', 'update')) evapi.add_dep(librarian.name, keystone_puppet.name, actions=('run', 'update'))
evapi.add_dep(openstack_rabbitmq_user.name, keystone_puppet.name, actions=('run', 'update')) evapi.add_dep(openstack_rabbitmq_user.name, keystone_puppet.name, actions=('run', 'update'))
keystone_db = vr.create('keystone_db', 'resources/mariadb_db/', { keystone_db = cr.create('keystone_db', 'resources/mariadb_db/', {
'db_name': 'keystone_db', 'db_name': 'keystone_db',
'login_user': 'root' 'login_user': 'root'
})[0] })[0]
keystone_db_user = vr.create('keystone_db_user', 'resources/mariadb_user/', { keystone_db_user = cr.create('keystone_db_user', 'resources/mariadb_user/', {
'user_name': 'keystone', 'user_name': 'keystone',
'user_password': 'keystone', 'user_password': 'keystone',
})[0] })[0]
keystone_service_endpoint = vr.create('keystone_service_endpoint', 'resources/keystone_service_endpoint', { keystone_service_endpoint = cr.create('keystone_service_endpoint', 'resources/keystone_service_endpoint', {
'endpoint_name': 'keystone', 'endpoint_name': 'keystone',
'adminurl': 'http://{{admin_ip}}:{{admin_port}}/v2.0', 'adminurl': 'http://{{admin_ip}}:{{admin_port}}/v2.0',
'internalurl': 'http://{{internal_ip}}:{{internal_port}}/v2.0', 'internalurl': 'http://{{internal_ip}}:{{internal_port}}/v2.0',
@ -128,20 +128,20 @@ def setup_keystone(node, librarian, mariadb_service, openstack_rabbitmq_user):
'type': 'identity' 'type': 'identity'
})[0] })[0]
admin_tenant = vr.create('admin_tenant', 'resources/keystone_tenant', { admin_tenant = cr.create('admin_tenant', 'resources/keystone_tenant', {
'tenant_name': 'admin' 'tenant_name': 'admin'
})[0] })[0]
admin_user = vr.create('admin_user', 'resources/keystone_user', { admin_user = cr.create('admin_user', 'resources/keystone_user', {
'user_name': 'admin', 'user_name': 'admin',
'user_password': 'admin' 'user_password': 'admin'
})[0] })[0]
admin_role = vr.create('admin_role', 'resources/keystone_role', { admin_role = cr.create('admin_role', 'resources/keystone_role', {
'role_name': 'admin' 'role_name': 'admin'
})[0] })[0]
services_tenant = vr.create('services_tenant', 'resources/keystone_tenant', { services_tenant = cr.create('services_tenant', 'resources/keystone_tenant', {
'tenant_name': 'services' 'tenant_name': 'services'
})[0] })[0]
admin_role_services = vr.create('admin_role_services', 'resources/keystone_role', { admin_role_services = cr.create('admin_role_services', 'resources/keystone_role', {
'role_name': 'admin' 'role_name': 'admin'
})[0] })[0]
@ -212,7 +212,7 @@ def setup_keystone(node, librarian, mariadb_service, openstack_rabbitmq_user):
def setup_openrc(node, keystone_puppet, admin_user): def setup_openrc(node, keystone_puppet, admin_user):
# OPENRC # OPENRC
openrc = vr.create('openrc_file', 'resources/openrc_file', {})[0] openrc = cr.create('openrc_file', 'resources/openrc_file', {})[0]
node.connect(openrc) node.connect(openrc)
keystone_puppet.connect(openrc, {'ip': 'keystone_host', 'admin_port':'keystone_port'}) keystone_puppet.connect(openrc, {'ip': 'keystone_host', 'admin_port':'keystone_port'})
@ -222,7 +222,7 @@ def setup_openrc(node, keystone_puppet, admin_user):
def setup_neutron(node, librarian, rabbitmq_service, openstack_rabbitmq_user, openstack_vhost): def setup_neutron(node, librarian, rabbitmq_service, openstack_rabbitmq_user, openstack_vhost):
# NEUTRON # NEUTRON
# Deploy chain neutron -> (plugins) -> neutron_server -> ( agents ) # Deploy chain neutron -> (plugins) -> neutron_server -> ( agents )
neutron_puppet = vr.create('neutron_puppet', 'resources/neutron_puppet', { neutron_puppet = cr.create('neutron_puppet', 'resources/neutron_puppet', {
'core_plugin': 'neutron.plugins.ml2.plugin.Ml2Plugin' 'core_plugin': 'neutron.plugins.ml2.plugin.Ml2Plugin'
})[0] })[0]
@ -244,29 +244,29 @@ def setup_neutron(node, librarian, rabbitmq_service, openstack_rabbitmq_user, op
def setup_neutron_api(node, mariadb_service, admin_user, keystone_puppet, services_tenant, neutron_puppet): def setup_neutron_api(node, mariadb_service, admin_user, keystone_puppet, services_tenant, neutron_puppet):
# NEUTRON PLUGIN AND NEUTRON API (SERVER) # NEUTRON PLUGIN AND NEUTRON API (SERVER)
neutron_plugins_ml2 = vr.create('neutron_plugins_ml2', 'resources/neutron_plugins_ml2_puppet', {})[0] neutron_plugins_ml2 = cr.create('neutron_plugins_ml2', 'resources/neutron_plugins_ml2_puppet', {})[0]
node.connect(neutron_plugins_ml2) node.connect(neutron_plugins_ml2)
neutron_server_puppet = vr.create('neutron_server_puppet', 'resources/neutron_server_puppet', { neutron_server_puppet = cr.create('neutron_server_puppet', 'resources/neutron_server_puppet', {
'sync_db': True, 'sync_db': True,
})[0] })[0]
evapi.add_dep(neutron_puppet.name, neutron_server_puppet.name, actions=('run',)) evapi.add_dep(neutron_puppet.name, neutron_server_puppet.name, actions=('run',))
evapi.add_dep(neutron_plugins_ml2.name, neutron_server_puppet.name, actions=('run',)) evapi.add_dep(neutron_plugins_ml2.name, neutron_server_puppet.name, actions=('run',))
evapi.add_dep(neutron_puppet.name, neutron_plugins_ml2.name, actions=('run',)) evapi.add_dep(neutron_puppet.name, neutron_plugins_ml2.name, actions=('run',))
neutron_db = vr.create('neutron_db', 'resources/mariadb_db/', { neutron_db = cr.create('neutron_db', 'resources/mariadb_db/', {
'db_name': 'neutron_db', 'login_user': 'root'})[0] 'db_name': 'neutron_db', 'login_user': 'root'})[0]
neutron_db_user = vr.create('neutron_db_user', 'resources/mariadb_user/', { neutron_db_user = cr.create('neutron_db_user', 'resources/mariadb_user/', {
'user_name': 'neutron', 'user_password': 'neutron', 'login_user': 'root'})[0] 'user_name': 'neutron', 'user_password': 'neutron', 'login_user': 'root'})[0]
neutron_keystone_user = vr.create('neutron_keystone_user', 'resources/keystone_user', { neutron_keystone_user = cr.create('neutron_keystone_user', 'resources/keystone_user', {
'user_name': 'neutron', 'user_name': 'neutron',
'user_password': 'neutron' 'user_password': 'neutron'
})[0] })[0]
neutron_keystone_role = vr.create('neutron_keystone_role', 'resources/keystone_role', { neutron_keystone_role = cr.create('neutron_keystone_role', 'resources/keystone_role', {
'role_name': 'admin' 'role_name': 'admin'
})[0] })[0]
evapi.add_dep(neutron_keystone_role.name, neutron_server_puppet.name, actions=('run',)) evapi.add_dep(neutron_keystone_role.name, neutron_server_puppet.name, actions=('run',))
neutron_keystone_service_endpoint = vr.create('neutron_keystone_service_endpoint', 'resources/keystone_service_endpoint', { neutron_keystone_service_endpoint = cr.create('neutron_keystone_service_endpoint', 'resources/keystone_service_endpoint', {
'endpoint_name': 'neutron', 'endpoint_name': 'neutron',
'adminurl': 'http://{{admin_ip}}:{{admin_port}}', 'adminurl': 'http://{{admin_ip}}:{{admin_port}}',
'internalurl': 'http://{{internal_ip}}:{{internal_port}}', 'internalurl': 'http://{{internal_ip}}:{{internal_port}}',
@ -323,7 +323,7 @@ def setup_neutron_api(node, mariadb_service, admin_user, keystone_puppet, servic
def setup_neutron_agent(node, neutron_server_puppet): def setup_neutron_agent(node, neutron_server_puppet):
# NEUTRON ML2 PLUGIN & ML2-OVS AGENT WITH GRE # NEUTRON ML2 PLUGIN & ML2-OVS AGENT WITH GRE
neutron_agents_ml2 = vr.create('neutron_agents_ml2', 'resources/neutron_agents_ml2_ovs_puppet', { neutron_agents_ml2 = cr.create('neutron_agents_ml2', 'resources/neutron_agents_ml2_ovs_puppet', {
# TODO(bogdando) these should come from the node network resource # TODO(bogdando) these should come from the node network resource
'enable_tunneling': True, 'enable_tunneling': True,
'tunnel_types': ['gre'], 'tunnel_types': ['gre'],
@ -333,11 +333,11 @@ def setup_neutron_agent(node, neutron_server_puppet):
evapi.add_dep(neutron_server_puppet.name, neutron_agents_ml2.name, actions=('run',)) evapi.add_dep(neutron_server_puppet.name, neutron_agents_ml2.name, actions=('run',))
# NEUTRON DHCP, L3, metadata agents # NEUTRON DHCP, L3, metadata agents
neutron_agents_dhcp = vr.create('neutron_agents_dhcp', 'resources/neutron_agents_dhcp_puppet', {})[0] neutron_agents_dhcp = cr.create('neutron_agents_dhcp', 'resources/neutron_agents_dhcp_puppet', {})[0]
node.connect(neutron_agents_dhcp) node.connect(neutron_agents_dhcp)
evapi.add_dep(neutron_server_puppet.name, neutron_agents_dhcp.name, actions=('run',)) evapi.add_dep(neutron_server_puppet.name, neutron_agents_dhcp.name, actions=('run',))
neutron_agents_l3 = vr.create('neutron_agents_l3', 'resources/neutron_agents_l3_puppet', { neutron_agents_l3 = cr.create('neutron_agents_l3', 'resources/neutron_agents_l3_puppet', {
# TODO(bogdando) these should come from the node network resource # TODO(bogdando) these should come from the node network resource
'metadata_port': 8775, 'metadata_port': 8775,
'external_network_bridge': 'br-floating', 'external_network_bridge': 'br-floating',
@ -345,7 +345,7 @@ def setup_neutron_agent(node, neutron_server_puppet):
node.connect(neutron_agents_l3) node.connect(neutron_agents_l3)
evapi.add_dep(neutron_server_puppet.name, neutron_agents_l3.name, actions=('run',)) evapi.add_dep(neutron_server_puppet.name, neutron_agents_l3.name, actions=('run',))
neutron_agents_metadata = vr.create('neutron_agents_metadata', 'resources/neutron_agents_metadata_puppet', { neutron_agents_metadata = cr.create('neutron_agents_metadata', 'resources/neutron_agents_metadata_puppet', {
'sh2ared_secret': 'secret', 'sh2ared_secret': 'secret',
})[0] })[0]
node.connect(neutron_agents_metadata) node.connect(neutron_agents_metadata)
@ -361,7 +361,7 @@ def setup_neutron_compute(node, librarian, neutron_puppet, neutron_server_puppet
# NEUTRON FOR COMPUTE (node1) # NEUTRON FOR COMPUTE (node1)
# Deploy chain neutron -> (plugins) -> ( agents ) # Deploy chain neutron -> (plugins) -> ( agents )
name = node.name name = node.name
neutron_puppet2 = vr.create('neutron_puppet_{}'.format(name), 'resources/neutron_puppet', {})[0] neutron_puppet2 = cr.create('neutron_puppet_{}'.format(name), 'resources/neutron_puppet', {})[0]
neutron_puppet2.connect_with_events(librarian, {'module': 'modules'}, {}) neutron_puppet2.connect_with_events(librarian, {'module': 'modules'}, {})
evapi.add_dep(librarian.name, neutron_puppet2.name, actions=('run', 'update')) evapi.add_dep(librarian.name, neutron_puppet2.name, actions=('run', 'update'))
@ -378,12 +378,12 @@ def setup_neutron_compute(node, librarian, neutron_puppet, neutron_server_puppet
}) })
# NEUTRON OVS PLUGIN & AGENT WITH GRE FOR COMPUTE (node1) # NEUTRON OVS PLUGIN & AGENT WITH GRE FOR COMPUTE (node1)
neutron_plugins_ml22 = vr.create('neutron_plugins_ml_{}'.format(name), 'resources/neutron_plugins_ml2_puppet', {})[0] neutron_plugins_ml22 = cr.create('neutron_plugins_ml_{}'.format(name), 'resources/neutron_plugins_ml2_puppet', {})[0]
node.connect(neutron_plugins_ml22) node.connect(neutron_plugins_ml22)
evapi.add_dep(neutron_puppet2.name, neutron_plugins_ml22.name, actions=('run',)) evapi.add_dep(neutron_puppet2.name, neutron_plugins_ml22.name, actions=('run',))
evapi.add_dep(neutron_server_puppet.name, neutron_plugins_ml22.name, actions=('run',)) evapi.add_dep(neutron_server_puppet.name, neutron_plugins_ml22.name, actions=('run',))
neutron_agents_ml22 = vr.create('neutron_agents_ml_{}'.format(name), 'resources/neutron_agents_ml2_ovs_puppet', { neutron_agents_ml22 = cr.create('neutron_agents_ml_{}'.format(name), 'resources/neutron_agents_ml2_ovs_puppet', {
# TODO(bogdando) these should come from the node network resource # TODO(bogdando) these should come from the node network resource
'enable_tunneling': True, 'enable_tunneling': True,
'tunnel_types': ['gre'], 'tunnel_types': ['gre'],
@ -399,16 +399,16 @@ def setup_neutron_compute(node, librarian, neutron_puppet, neutron_server_puppet
def setup_cinder(node, librarian, rabbitmq_service, mariadb_service, keystone_puppet, admin_user, openstack_vhost, openstack_rabbitmq_user, services_tenant): def setup_cinder(node, librarian, rabbitmq_service, mariadb_service, keystone_puppet, admin_user, openstack_vhost, openstack_rabbitmq_user, services_tenant):
# CINDER # CINDER
cinder_puppet = vr.create('cinder_puppet', 'resources/cinder_puppet', {})[0] cinder_puppet = cr.create('cinder_puppet', 'resources/cinder_puppet', {})[0]
cinder_db = vr.create('cinder_db', 'resources/mariadb_db/', { cinder_db = cr.create('cinder_db', 'resources/mariadb_db/', {
'db_name': 'cinder_db', 'login_user': 'root'})[0] 'db_name': 'cinder_db', 'login_user': 'root'})[0]
cinder_db_user = vr.create('cinder_db_user', 'resources/mariadb_user/', { cinder_db_user = cr.create('cinder_db_user', 'resources/mariadb_user/', {
'user_name': 'cinder', 'user_password': 'cinder', 'login_user': 'root'})[0] 'user_name': 'cinder', 'user_password': 'cinder', 'login_user': 'root'})[0]
cinder_keystone_user = vr.create('cinder_keystone_user', 'resources/keystone_user', { cinder_keystone_user = cr.create('cinder_keystone_user', 'resources/keystone_user', {
'user_name': 'cinder', 'user_password': 'cinder'})[0] 'user_name': 'cinder', 'user_password': 'cinder'})[0]
cinder_keystone_role = vr.create('cinder_keystone_role', 'resources/keystone_role', { cinder_keystone_role = cr.create('cinder_keystone_role', 'resources/keystone_role', {
'role_name': 'admin'})[0] 'role_name': 'admin'})[0]
cinder_keystone_service_endpoint = vr.create( cinder_keystone_service_endpoint = cr.create(
'cinder_keystone_service_endpoint', 'cinder_keystone_service_endpoint',
'resources/keystone_service_endpoint', { 'resources/keystone_service_endpoint', {
'endpoint_name': 'cinder', 'endpoint_name': 'cinder',
@ -454,7 +454,7 @@ def setup_cinder(node, librarian, rabbitmq_service, mariadb_service, keystone_pu
# CINDER GLANCE # CINDER GLANCE
# Deploy chain: cinder_puppet -> cinder_glance -> ( cinder_api, cinder_scheduler, cinder_volume ) # Deploy chain: cinder_puppet -> cinder_glance -> ( cinder_api, cinder_scheduler, cinder_volume )
cinder_glance_puppet = vr.create('cinder_glance_puppet', 'resources/cinder_glance_puppet', {})[0] cinder_glance_puppet = cr.create('cinder_glance_puppet', 'resources/cinder_glance_puppet', {})[0]
node.connect(cinder_glance_puppet) node.connect(cinder_glance_puppet)
evapi.add_dep(cinder_puppet.name, cinder_glance_puppet.name, actions=('run',)) evapi.add_dep(cinder_puppet.name, cinder_glance_puppet.name, actions=('run',))
@ -468,7 +468,7 @@ def setup_cinder(node, librarian, rabbitmq_service, mariadb_service, keystone_pu
def setup_cinder_api(node, cinder_puppet): def setup_cinder_api(node, cinder_puppet):
# CINDER API # CINDER API
cinder_api_puppet = vr.create('cinder_api_puppet', 'resources/cinder_api_puppet', {})[0] cinder_api_puppet = cr.create('cinder_api_puppet', 'resources/cinder_api_puppet', {})[0]
node.connect(cinder_api_puppet) node.connect(cinder_api_puppet)
cinder_puppet.connect(cinder_api_puppet, { cinder_puppet.connect(cinder_api_puppet, {
'keystone_password', 'keystone_tenant', 'keystone_user'}) 'keystone_password', 'keystone_tenant', 'keystone_user'})
@ -480,7 +480,7 @@ def setup_cinder_api(node, cinder_puppet):
def setup_cinder_scheduler(node, cinder_puppet): def setup_cinder_scheduler(node, cinder_puppet):
# CINDER SCHEDULER # CINDER SCHEDULER
cinder_scheduler_puppet = vr.create('cinder_scheduler_puppet', 'resources/cinder_scheduler_puppet', {})[0] cinder_scheduler_puppet = cr.create('cinder_scheduler_puppet', 'resources/cinder_scheduler_puppet', {})[0]
node.connect(cinder_scheduler_puppet) node.connect(cinder_scheduler_puppet)
cinder_puppet.connect(cinder_scheduler_puppet) cinder_puppet.connect(cinder_scheduler_puppet)
evapi.add_react(cinder_puppet.name, cinder_scheduler_puppet.name, actions=('update',)) evapi.add_react(cinder_puppet.name, cinder_scheduler_puppet.name, actions=('update',))
@ -488,11 +488,11 @@ def setup_cinder_scheduler(node, cinder_puppet):
def setup_cinder_volume(node, cinder_puppet): def setup_cinder_volume(node, cinder_puppet):
# CINDER VOLUME # CINDER VOLUME
cinder_volume = vr.create('cinder_volume_{}'.format(node.name), 'resources/volume_group', cinder_volume = cr.create('cinder_volume_{}'.format(node.name), 'resources/volume_group',
{'path': '/root/cinder.img', 'volume_name': 'cinder-volume'})[0] {'path': '/root/cinder.img', 'volume_name': 'cinder-volume'})[0]
node.connect(cinder_volume) node.connect(cinder_volume)
cinder_volume_puppet = vr.create('cinder_volume_puppet', 'resources/cinder_volume_puppet', {})[0] cinder_volume_puppet = cr.create('cinder_volume_puppet', 'resources/cinder_volume_puppet', {})[0]
node.connect(cinder_volume_puppet) node.connect(cinder_volume_puppet)
cinder_puppet.connect(cinder_volume_puppet) cinder_puppet.connect(cinder_volume_puppet)
evapi.add_react(cinder_puppet.name, cinder_volume_puppet.name, actions=('update',)) evapi.add_react(cinder_puppet.name, cinder_volume_puppet.name, actions=('update',))
@ -501,20 +501,20 @@ def setup_cinder_volume(node, cinder_puppet):
def setup_nova(node, librarian, mariadb_service, rabbitmq_service, admin_user, openstack_vhost, services_tenant, keystone_puppet, openstack_rabbitmq_user): def setup_nova(node, librarian, mariadb_service, rabbitmq_service, admin_user, openstack_vhost, services_tenant, keystone_puppet, openstack_rabbitmq_user):
# NOVA # NOVA
nova_puppet = vr.create('nova_puppet', 'resources/nova_puppet', {})[0] nova_puppet = cr.create('nova_puppet', 'resources/nova_puppet', {})[0]
nova_db = vr.create('nova_db', 'resources/mariadb_db/', { nova_db = cr.create('nova_db', 'resources/mariadb_db/', {
'db_name': 'nova_db', 'db_name': 'nova_db',
'login_user': 'root'})[0] 'login_user': 'root'})[0]
nova_db_user = vr.create('nova_db_user', 'resources/mariadb_user/', { nova_db_user = cr.create('nova_db_user', 'resources/mariadb_user/', {
'user_name': 'nova', 'user_name': 'nova',
'user_password': 'nova', 'user_password': 'nova',
'login_user': 'root'})[0] 'login_user': 'root'})[0]
nova_keystone_user = vr.create('nova_keystone_user', 'resources/keystone_user', { nova_keystone_user = cr.create('nova_keystone_user', 'resources/keystone_user', {
'user_name': 'nova', 'user_name': 'nova',
'user_password': 'nova'})[0] 'user_password': 'nova'})[0]
nova_keystone_role = vr.create('nova_keystone_role', 'resources/keystone_role', { nova_keystone_role = cr.create('nova_keystone_role', 'resources/keystone_role', {
'role_name': 'admin'})[0] 'role_name': 'admin'})[0]
nova_keystone_service_endpoint = vr.create('nova_keystone_service_endpoint', 'resources/keystone_service_endpoint', { nova_keystone_service_endpoint = cr.create('nova_keystone_service_endpoint', 'resources/keystone_service_endpoint', {
'endpoint_name': 'nova', 'endpoint_name': 'nova',
'adminurl': 'http://{{admin_ip}}:{{admin_port}}/v2/%(tenant_id)s', 'adminurl': 'http://{{admin_ip}}:{{admin_port}}/v2/%(tenant_id)s',
'internalurl': 'http://{{internal_ip}}:{{internal_port}}/v2/%(tenant_id)s', 'internalurl': 'http://{{internal_ip}}:{{internal_port}}/v2/%(tenant_id)s',
@ -577,7 +577,7 @@ def setup_nova(node, librarian, mariadb_service, rabbitmq_service, admin_user, o
def setup_nova_api(node, nova_puppet, neutron_agents_metadata): def setup_nova_api(node, nova_puppet, neutron_agents_metadata):
# NOVA API # NOVA API
nova_api_puppet = vr.create('nova_api_puppet', 'resources/nova_api_puppet', {})[0] nova_api_puppet = cr.create('nova_api_puppet', 'resources/nova_api_puppet', {})[0]
node.connect(nova_api_puppet) node.connect(nova_api_puppet)
nova_puppet.connect(nova_api_puppet, { nova_puppet.connect(nova_api_puppet, {
'keystone_tenant': 'admin_tenant_name', 'keystone_tenant': 'admin_tenant_name',
@ -591,7 +591,7 @@ def setup_nova_api(node, nova_puppet, neutron_agents_metadata):
def setup_nova_conductor(node, nova_puppet, nova_api_puppet): def setup_nova_conductor(node, nova_puppet, nova_api_puppet):
# NOVA CONDUCTOR # NOVA CONDUCTOR
nova_conductor_puppet = vr.create('nova_conductor_puppet', 'resources/nova_conductor_puppet', {})[0] nova_conductor_puppet = cr.create('nova_conductor_puppet', 'resources/nova_conductor_puppet', {})[0]
node.connect(nova_conductor_puppet) node.connect(nova_conductor_puppet)
nova_puppet.connect(nova_conductor_puppet) nova_puppet.connect(nova_conductor_puppet)
evapi.add_dep(nova_api_puppet.name, nova_conductor_puppet.name, actions=('run',)) evapi.add_dep(nova_api_puppet.name, nova_conductor_puppet.name, actions=('run',))
@ -602,7 +602,7 @@ def setup_nova_scheduler(node, nova_puppet, nova_api_puppet):
# NOVA SCHEDULER # NOVA SCHEDULER
# NOTE(bogdando) Generic service is used. Package and service names for Ubuntu case # NOTE(bogdando) Generic service is used. Package and service names for Ubuntu case
# come from https://github.com/openstack/puppet-nova/blob/5.1.0/manifests/params.pp # come from https://github.com/openstack/puppet-nova/blob/5.1.0/manifests/params.pp
nova_scheduler_puppet = vr.create('nova_scheduler_puppet', 'resources/nova_generic_service_puppet', { nova_scheduler_puppet = cr.create('nova_scheduler_puppet', 'resources/nova_generic_service_puppet', {
'title' : 'scheduler', 'package_name': 'nova-scheduler', 'service_name': 'nova-scheduler', 'title' : 'scheduler', 'package_name': 'nova-scheduler', 'service_name': 'nova-scheduler',
})[0] })[0]
node.connect(nova_scheduler_puppet) node.connect(nova_scheduler_puppet)
@ -615,9 +615,9 @@ def setup_nova_compute(node, librarian, nova_puppet, nova_api_puppet, neutron_se
# NOVA COMPUTE # NOVA COMPUTE
# Deploy chain (nova, node_networking(TODO)) -> (nova_compute_libvirt, nova_neutron) -> nova_compute # Deploy chain (nova, node_networking(TODO)) -> (nova_compute_libvirt, nova_neutron) -> nova_compute
name = node.name name = node.name
nova_compute_puppet = vr.create('nova_compute_puppet_{}'.format(name), 'resources/nova_compute_puppet', {})[0] nova_compute_puppet = cr.create('nova_compute_puppet_{}'.format(name), 'resources/nova_compute_puppet', {})[0]
# TODO (bogdando) figure out how to use it for multiple glance api servers # TODO (bogdando) figure out how to use it for multiple glance api servers
nova_puppet2 = vr.create('nova_puppet_{}'.format(name), 'resources/nova_puppet', { nova_puppet2 = cr.create('nova_puppet_{}'.format(name), 'resources/nova_puppet', {
'glance_api_servers': '{{glance_api_servers_host}}:{{glance_api_servers_port}}' 'glance_api_servers': '{{glance_api_servers_host}}:{{glance_api_servers_port}}'
})[0] })[0]
nova_puppet.connect(nova_puppet2, { nova_puppet.connect(nova_puppet2, {
@ -643,13 +643,13 @@ def setup_nova_compute(node, librarian, nova_puppet, nova_api_puppet, neutron_se
# NOVA COMPUTE LIBVIRT, NOVA_NEUTRON # NOVA COMPUTE LIBVIRT, NOVA_NEUTRON
# NOTE(bogdando): changes nova config, so should notify nova compute service # NOTE(bogdando): changes nova config, so should notify nova compute service
nova_compute_libvirt_puppet = vr.create('nova_compute_libvirt_puppet_{}'.format(name), 'resources/nova_compute_libvirt_puppet', {})[0] nova_compute_libvirt_puppet = cr.create('nova_compute_libvirt_puppet_{}'.format(name), 'resources/nova_compute_libvirt_puppet', {})[0]
node.connect(nova_compute_libvirt_puppet) node.connect(nova_compute_libvirt_puppet)
evapi.add_dep(nova_puppet2.name, nova_compute_libvirt_puppet.name, actions=('run',)) evapi.add_dep(nova_puppet2.name, nova_compute_libvirt_puppet.name, actions=('run',))
evapi.add_dep(nova_api_puppet.name, nova_compute_libvirt_puppet.name, actions=('run',)) evapi.add_dep(nova_api_puppet.name, nova_compute_libvirt_puppet.name, actions=('run',))
# compute configuration for neutron, use http auth/endpoint protocols, keystone v2 auth hardcoded for the resource # compute configuration for neutron, use http auth/endpoint protocols, keystone v2 auth hardcoded for the resource
nova_neutron_puppet = vr.create('nova_neutron_puppet_{}'.format(name), 'resources/nova_neutron_puppet', {})[0] nova_neutron_puppet = cr.create('nova_neutron_puppet_{}'.format(name), 'resources/nova_neutron_puppet', {})[0]
node.connect(nova_neutron_puppet) node.connect(nova_neutron_puppet)
evapi.add_dep(nova_puppet2.name, nova_neutron_puppet.name, actions=('run',)) evapi.add_dep(nova_puppet2.name, nova_neutron_puppet.name, actions=('run',))
evapi.add_dep(nova_api_puppet.name, nova_neutron_puppet.name, actions=('run',)) evapi.add_dep(nova_api_puppet.name, nova_neutron_puppet.name, actions=('run',))
@ -681,16 +681,16 @@ def setup_nova_compute(node, librarian, nova_puppet, nova_api_puppet, neutron_se
def setup_glance_api(node, librarian, mariadb_service, admin_user, keystone_puppet, services_tenant, cinder_glance_puppet): def setup_glance_api(node, librarian, mariadb_service, admin_user, keystone_puppet, services_tenant, cinder_glance_puppet):
# GLANCE (base and API) # GLANCE (base and API)
glance_api_puppet = vr.create('glance_api_puppet', 'resources/glance_puppet', {})[0] glance_api_puppet = cr.create('glance_api_puppet', 'resources/glance_puppet', {})[0]
glance_db_user = vr.create('glance_db_user', 'resources/mariadb_user/', { glance_db_user = cr.create('glance_db_user', 'resources/mariadb_user/', {
'user_name': 'glance', 'user_password': 'glance', 'login_user': 'root'})[0] 'user_name': 'glance', 'user_password': 'glance', 'login_user': 'root'})[0]
glance_db = vr.create('glance_db', 'resources/mariadb_db/', { glance_db = cr.create('glance_db', 'resources/mariadb_db/', {
'db_name': 'glance', 'login_user': 'root'})[0] 'db_name': 'glance', 'login_user': 'root'})[0]
glance_keystone_user = vr.create('glance_keystone_user', 'resources/keystone_user', { glance_keystone_user = cr.create('glance_keystone_user', 'resources/keystone_user', {
'user_name': 'glance', 'user_password': 'glance123'})[0] 'user_name': 'glance', 'user_password': 'glance123'})[0]
glance_keystone_role = vr.create('glance_keystone_role', 'resources/keystone_role', { glance_keystone_role = cr.create('glance_keystone_role', 'resources/keystone_role', {
'role_name': 'admin'})[0] 'role_name': 'admin'})[0]
glance_keystone_service_endpoint = vr.create( glance_keystone_service_endpoint = cr.create(
'glance_keystone_service_endpoint', 'glance_keystone_service_endpoint',
'resources/keystone_service_endpoint', { 'resources/keystone_service_endpoint', {
'endpoint_name': 'glance', 'endpoint_name': 'glance',
@ -750,7 +750,7 @@ def setup_glance_api(node, librarian, mariadb_service, admin_user, keystone_pupp
def setup_glance_registry(node, glance_api_puppet): def setup_glance_registry(node, glance_api_puppet):
# GLANCE REGISTRY # GLANCE REGISTRY
glance_registry_puppet = vr.create('glance_registry_puppet', 'resources/glance_registry_puppet', {})[0] glance_registry_puppet = cr.create('glance_registry_puppet', 'resources/glance_registry_puppet', {})[0]
node.connect(glance_registry_puppet) node.connect(glance_registry_puppet)
glance_api_puppet.connect(glance_registry_puppet) glance_api_puppet.connect(glance_registry_puppet)
evapi.add_react(glance_api_puppet.name, glance_registry_puppet.name, actions=('update',)) evapi.add_react(glance_api_puppet.name, glance_registry_puppet.name, actions=('update',))

View File

@ -4,14 +4,14 @@ resources:
- id: rabbit_user - id: rabbit_user
from: resources/rabbitmq_user from: resources/rabbitmq_user
location: {{node}} location: {{node}}
values: input:
user_name: {{user_name}} user_name: {{user_name}}
password: {{password}} password: {{password}}
vhost_name: {{vhost_res}}::vhost_name vhost_name: {{vhost_res}}::vhost_name
updates: updates:
- id: {{for}} - id: {{for}}
values: input:
{{for_user}}: rabbit_user::user_name {{for_user}}: rabbit_user::user_name
{{for_password}}: rabbit_user::password {{for_password}}: rabbit_user::password
@ -19,4 +19,4 @@ events:
- type: depends_on - type: depends_on
parent_action: rabbit_user.run parent_action: rabbit_user.run
state: success state: success
depend_action: {{for}}.update child_action: {{for}}.update

View File

@ -1,7 +1,7 @@
#!/usr/bin/env python #!/usr/bin/env python
import requests import requests
from solar.core.resource import virtual_resource as vr from solar.core.resource import composer as cr
from solar.events.api import add_event from solar.events.api import add_event
from solar.events.controls import React from solar.events.controls import React
@ -40,7 +40,7 @@ requests.post(bareon_sync)
nodes_list = requests.get(discovery_service).json() nodes_list = requests.get(discovery_service).json()
# Create slave node resources # Create slave node resources
node_resources = vr.create('nodes', 'templates/not_provisioned_nodes', node_resources = cr.create('nodes', 'templates/not_provisioned_nodes',
{'nodes': nodes_list}) {'nodes': nodes_list})
# Get master node # Get master node
@ -63,7 +63,7 @@ for node in nodes_list:
} }
) )
dnsmasq = vr.create('dnsmasq_{0}'.format(node.node_id), dnsmasq = cr.create('dnsmasq_{0}'.format(node.node_id),
'resources/dnsmasq', {})[0] 'resources/dnsmasq', {})[0]
master_node.connect(dnsmasq) master_node.connect(dnsmasq)
node_resource.connect(dnsmasq, {'admin_mac': 'exclude_mac_pxe'}) node_resource.connect(dnsmasq, {'admin_mac': 'exclude_mac_pxe'})

View File

@ -4,38 +4,38 @@ resources:
- id: haproxy_riak_config_http - id: haproxy_riak_config_http
from: resources/haproxy_service_config from: resources/haproxy_service_config
tags: ['service=riak', 'protocol=http'] tags: ['service=riak', 'protocol=http']
values: input:
listen_port: {{http_listen_port}} listen_port: #{http_listen_port}#
protocol: 'http' protocol: 'http'
name: 'riak_haproxy_http' name: 'riak_haproxy_http'
backends:server: backends:server:
{% for riak in riaks %} #% for riak in riaks %#
- {{riak}}::riak_hostname - #{riak}#::riak_hostname
{% endfor %} #% endfor %#
backends:port: backends:port:
{% for riak in riaks %} #% for riak in riaks %#
- {{riak}}::riak_port_http - #{riak}#::riak_port_http
{% endfor %} #% endfor %#
- id: haproxy_riak_config_pb - id: haproxy_riak_config_pb
from: resources/haproxy_service_config from: resources/haproxy_service_config
tags: ['service=riak', 'protocol=tcp'] tags: ['service=riak', 'protocol=tcp']
values: input:
listen_port: {{pb_listen_port}} listen_port: #{pb_listen_port}#
protocol: 'tcp' protocol: 'tcp'
name: 'riak_haproxy_pb' name: 'riak_haproxy_pb'
backends:server: backends:server:
{% for riak in riaks %} #% for riak in riaks %#
- {{riak}}::riak_hostname - #{riak}#::riak_hostname
{% endfor %} #% endfor %#
backends:port: backends:port:
{% for riak in riaks %} #% for riak in riaks %#
- {{riak}}::riak_port_pb - #{riak}#::riak_port_pb
{% endfor %} #% endfor %#
updates: updates:
- with_tags: ['resource=haproxy_config'] - with_tags: ['resource=haproxy_config']
values: input:
config:protocol: config:protocol:
- haproxy_riak_config_http::protocol - haproxy_riak_config_http::protocol
- haproxy_riak_config_pb::protocol - haproxy_riak_config_pb::protocol

View File

@ -3,49 +3,49 @@ id: riak_cluster
resources: resources:
- id: riak_service1 - id: riak_service1
from: examples/riak/riak_service.yaml from: examples/riak/riak_service.yaml
values: input:
node: {{nodes[0]}} node: #{nodes[0]}#
index: 1 index: 1
join_to: '' join_to: ''
- id: riak_service2 - id: riak_service2
from: examples/riak/riak_service.yaml from: examples/riak/riak_service.yaml
values: input:
node: {{nodes[1]}} node: #{nodes[1]}#
index: 2 index: 2
join_to: riak_service1 join_to: riak_service1
- id: riak_service3 - id: riak_service3
from: examples/riak/riak_service.yaml from: examples/riak/riak_service.yaml
values: input:
node: {{nodes[2]}} node: #{nodes[2]}#
index: 3 index: 3
join_to: riak_service1 join_to: riak_service1
- id: haproxy_riak_config - id: haproxy_riak_config
from: examples/riak/haproxy_riak_config.yaml from: examples/riak/haproxy_riak_config.yaml
values: input:
http_listen_port: 8098 http_listen_port: 8098
pb_listen_port: 8087 pb_listen_port: 8087
riaks: ['riak_service1', 'riak_service2', 'riak_service3'] riaks: ['riak_service1', 'riak_service2', 'riak_service3']
- id: haproxy1 - id: haproxy1
from: templates/haproxy from: templates/haproxy
values: input:
node: {{nodes[0]}} node: #{nodes[0]}#
service_configs: ['haproxy_riak_config_pb', 'haproxy_riak_config_http'] service_configs: ['haproxy_riak_config_pb', 'haproxy_riak_config_http']
index: 1 index: 1
- id: haproxy2 - id: haproxy2
from: templates/haproxy from: templates/haproxy
values: input:
node: {{nodes[1]}} node: #{nodes[1]}#
service_configs: ['haproxy_riak_config_pb', 'haproxy_riak_config_http'] service_configs: ['haproxy_riak_config_pb', 'haproxy_riak_config_http']
index: 2 index: 2
- id: haproxy3 - id: haproxy3
from: templates/haproxy from: templates/haproxy
values: input:
node: {{nodes[2]}} node: #{nodes[2]}#
service_configs: ['haproxy_riak_config_pb', 'haproxy_riak_config_http'] service_configs: ['haproxy_riak_config_pb', 'haproxy_riak_config_http']
index: 3 index: 3

View File

@ -1,61 +1,61 @@
id: riak_service id: riak_service
resources: resources:
- id: riak_service{{index}} - id: riak_service#{index}#
from: resources/riak_node from: resources/riak_node
location: {{node}} location: #{node}#
values: input:
riak_self_name: riak{{index}} riak_self_name: riak#{index}#
riak_hostname: riak_server{{index}}.solar riak_hostname: riak_server#{index}#.solar
riak_name: riak{{index}}@riak_server{{index}}.solar riak_name: riak#{index}#@riak_server#{index}#.solar
{% if join_to %} #% if join_to %#
join_to: {{join_to}}::riak_name join_to: #{join_to}#::riak_name
{% endif %} #% endif %#
ip: {{node}}::ip ip: #{node}#::ip
updates: updates:
- with_tags: 'resource=hosts_file' - with_tags: 'resource=hosts_file'
values: input:
hosts:name: hosts:name:
- riak_service{{index}}::riak_hostname::NO_EVENTS - riak_service#{index}#::riak_hostname::NO_EVENTS
hosts:ip: hosts:ip:
- riak_service{{index}}::ip::NO_EVENTS - riak_service#{index}#::ip::NO_EVENTS
- with_tags: 'resource=haproxy_service_config & service=riak & protocol=http' - with_tags: 'resource=haproxy_service_config & service=riak & protocol=http'
values: input:
backends:server: backends:server:
- riak_service{{index}}::riak_hostname - riak_service#{index}#::riak_hostname
backends:port: backends:port:
- riak_service{{index}}::riak_port_http - riak_service#{index}#::riak_port_http
- with_tags: 'resource=haproxy_service_config & service=riak & protocol=tcp' - with_tags: 'resource=haproxy_service_config & service=riak & protocol=tcp'
values: input:
backends:server: backends:server:
- riak_service{{index}}::riak_hostname - riak_service#{index}#::riak_hostname
backends:port: backends:port:
- riak_service{{index}}::riak_port_pb - riak_service#{index}#::riak_port_pb
events: events:
- type: depends_on - type: depends_on
parent: parent:
with_tags: 'resource=hosts_file & location={{node}}' with_tags: 'resource=hosts_file & location=#{node}#'
action: run action: run
state: success state: success
depend_action: riak_service{{index}}.run child_action: riak_service#{index}#.run
{% if join_to %} #% if join_to %#
- type: react_on - type: react_on
parent_action: riak_service{{index}}.run parent_action: riak_service#{index}#.run
state: success state: success
depend_action: riak_service{{index}}.join child_action: riak_service#{index}#.join
- type: react_on - type: react_on
parent_action: riak_service{{index}}.leave parent_action: riak_service#{index}#.leave
state: success state: success
depend_action: riak_service{{index}}.join child_action: riak_service#{index}#.join
- type: react_on - type: react_on
parent_action: riak_service{{index}}.join parent_action: riak_service#{index}#.join
state: success state: success
depend_action: {{join_to}}.commit child_action: #{join_to}#.commit
{% endif %} #% endif %#

View File

@ -17,7 +17,7 @@ import sys
from solar.core import resource from solar.core import resource
from solar.core import signals from solar.core import signals
from solar.core import validation from solar.core import validation
from solar.core.resource import virtual_resource as vr from solar.core.resource import composer as cr
from solar import errors from solar import errors
from solar.dblayer.model import ModelMeta from solar.dblayer.model import ModelMeta
@ -31,7 +31,7 @@ from solar.dblayer.solar_models import Resource
def setup_riak(): def setup_riak():
ModelMeta.remove_all() ModelMeta.remove_all()
resources = vr.create('nodes', 'templates/nodes', {'count': 3}) resources = cr.create('nodes', 'templates/nodes', {'count': 3})
nodes = [x for x in resources if x.name.startswith('node')] nodes = [x for x in resources if x.name.startswith('node')]
hosts_services = [x for x in resources if x.name.startswith('hosts_file')] hosts_services = [x for x in resources if x.name.startswith('hosts_file')]
node1, node2, node3 = nodes node1, node2, node3 = nodes
@ -41,7 +41,7 @@ def setup_riak():
ips = '10.0.0.%d' ips = '10.0.0.%d'
for i in xrange(3): for i in xrange(3):
num = i + 1 num = i + 1
r = vr.create('riak_service%d' % num, r = cr.create('riak_service%d' % num,
'resources/riak_node', 'resources/riak_node',
{'riak_self_name': 'riak%d' % num, {'riak_self_name': 'riak%d' % num,
'storage_backend': 'leveldb', 'storage_backend': 'leveldb',
@ -113,18 +113,18 @@ def setup_haproxies():
hpsc_pb = [] hpsc_pb = []
for i in xrange(3): for i in xrange(3):
num = i + 1 num = i + 1
hps.append(vr.create('haproxy_service%d' % num, hps.append(cr.create('haproxy_service%d' % num,
'resources/haproxy_service', 'resources/haproxy_service',
{})[0]) {})[0])
hpc.append(vr.create('haproxy_config%d' % num, hpc.append(cr.create('haproxy_config%d' % num,
'resources/haproxy_config', 'resources/haproxy_config',
{})[0]) {})[0])
hpsc_http.append(vr.create('haproxy_service_config_http%d' % num, hpsc_http.append(cr.create('haproxy_service_config_http%d' % num,
'resources/haproxy_service_config', 'resources/haproxy_service_config',
{'listen_port': 8098, {'listen_port': 8098,
'protocol': 'http', 'protocol': 'http',
'name': 'riak_haproxy_http%d' % num})[0]) 'name': 'riak_haproxy_http%d' % num})[0])
hpsc_pb.append(vr.create('haproxy_service_config_pb%d' % num, hpsc_pb.append(cr.create('haproxy_service_config_pb%d' % num,
'resources/haproxy_service_config', 'resources/haproxy_service_config',
{'listen_port': 8087, {'listen_port': 8087,
'protocol': 'tcp', 'protocol': 'tcp',
@ -208,12 +208,12 @@ def setup_haproxies():
@click.command() @click.command()
@click.argument('i', type=int, required=True) @click.argument('i', type=int, required=True)
def add_solar_agent(i): def add_solar_agent(i):
solar_agent_transport = vr.create('solar_agent_transport%s' % i, 'resources/transport_solar_agent', solar_agent_transport = cr.create('solar_agent_transport%s' % i, 'resources/transport_solar_agent',
{'solar_agent_user': 'vagrant', {'solar_agent_user': 'vagrant',
'solar_agent_password': 'password'})[0] 'solar_agent_password': 'password'})[0]
transports = resource.load('transports%s' % i) transports = resource.load('transports%s' % i)
ssh_transport = resource.load('ssh_transport%s' % i) ssh_transport = resource.load('ssh_transport%s' % i)
transports_for_solar_agent = vr.create('transports_for_solar_agent%s' % i, 'resources/transports')[0] transports_for_solar_agent = cr.create('transports_for_solar_agent%s' % i, 'resources/transports')[0]
# install solar_agent with ssh # install solar_agent with ssh
signals.connect(transports_for_solar_agent, solar_agent_transport, {}) signals.connect(transports_for_solar_agent, solar_agent_transport, {})

View File

@ -8,7 +8,7 @@ import sys
from solar.core import resource from solar.core import resource
from solar.core import signals from solar.core import signals
from solar.core import validation from solar.core import validation
from solar.core.resource import virtual_resource as vr from solar.core.resource import composer as cr
from solar import errors from solar import errors
from solar.interfaces.db import get_db from solar.interfaces.db import get_db
@ -28,7 +28,7 @@ def setup_riak(nodes_num=None, hosts_mapping=False):
nodes_num = NODES nodes_num = NODES
db.clear() db.clear()
resources = vr.create('nodes', 'templates/nodes', {'count': nodes_num}) resources = cr.create('nodes', 'templates/nodes', {'count': nodes_num})
nodes = [x for x in resources if x.name.startswith('node')] nodes = [x for x in resources if x.name.startswith('node')]
hosts_services = [x for x in resources if x.name.startswith('hosts_file')] hosts_services = [x for x in resources if x.name.startswith('hosts_file')]
@ -36,7 +36,7 @@ def setup_riak(nodes_num=None, hosts_mapping=False):
ips = '10.0.0.%d' ips = '10.0.0.%d'
for i in xrange(nodes_num): for i in xrange(nodes_num):
num = i + 1 num = i + 1
r = vr.create('riak_service%d' % num, r = cr.create('riak_service%d' % num,
'resources/riak_node', 'resources/riak_node',
{'riak_self_name': 'riak%d' % num, {'riak_self_name': 'riak%d' % num,
'riak_hostname': 'riak_server%d.solar' % num, 'riak_hostname': 'riak_server%d.solar' % num,

View File

@ -4,26 +4,26 @@ import time
from solar.core import resource from solar.core import resource
from solar.core import signals from solar.core import signals
from solar.core.resource import virtual_resource as vr from solar.core.resource import composer as cr
from solar.dblayer.model import ModelMeta from solar.dblayer.model import ModelMeta
def run(): def run():
ModelMeta.remove_all() ModelMeta.remove_all()
node = vr.create('node', 'resources/ro_node', {'name': 'first' + str(time.time()), node = cr.create('node', 'resources/ro_node', {'name': 'first' + str(time.time()),
'ip': '10.0.0.3', 'ip': '10.0.0.3',
'node_id': 'node1', 'node_id': 'node1',
})[0] })[0]
transports = vr.create('transports_node1', 'resources/transports')[0] transports = cr.create('transports_node1', 'resources/transports')[0]
transports_for_solar_agent = vr.create('transports_for_solar_agent', 'resources/transports')[0] transports_for_solar_agent = cr.create('transports_for_solar_agent', 'resources/transports')[0]
ssh_transport = vr.create('ssh_transport', 'resources/transport_ssh', ssh_transport = cr.create('ssh_transport', 'resources/transport_ssh',
{'ssh_key': '/vagrant/.vagrant/machines/solar-dev1/virtualbox/private_key', {'ssh_key': '/vagrant/.vagrant/machines/solar-dev1/virtualbox/private_key',
'ssh_user': 'vagrant'})[0] 'ssh_user': 'vagrant'})[0]
solar_agent_transport = vr.create('solar_agent_transport', 'resources/transport_solar_agent', solar_agent_transport = cr.create('solar_agent_transport', 'resources/transport_solar_agent',
{'solar_agent_user': 'vagrant', {'solar_agent_user': 'vagrant',
'solar_agent_password': 'password'})[0] 'solar_agent_password': 'password'})[0]
@ -46,7 +46,7 @@ def run():
'name': 'transports:name'}) 'name': 'transports:name'})
hosts = vr.create('hosts_file', 'resources/hosts_file', {})[0] hosts = cr.create('hosts_file', 'resources/hosts_file', {})[0]
node.connect(hosts, { node.connect(hosts, {
'ip': 'hosts:ip', 'ip': 'hosts:ip',
'name': 'hosts:name' 'name': 'hosts:name'

View File

@ -1,6 +1,6 @@
import time import time
from solar.core.resource import virtual_resource as vr from solar.core.resource import composer as cr
from solar import errors from solar import errors
from solar.dblayer.model import ModelMeta from solar.dblayer.model import ModelMeta
@ -8,14 +8,14 @@ from solar.dblayer.model import ModelMeta
def run(): def run():
ModelMeta.remove_all() ModelMeta.remove_all()
node = vr.create('node', 'resources/ro_node', {'name': 'first' + str(time.time()), node = cr.create('node', 'resources/ro_node', {'name': 'first' + str(time.time()),
'ip': '10.0.0.3', 'ip': '10.0.0.3',
'node_id': 'node1', 'node_id': 'node1',
})[0] })[0]
transports = vr.create('transports_node1', 'resources/transports')[0] transports = cr.create('transports_node1', 'resources/transports')[0]
ssh_transport = vr.create('ssh_transport', 'resources/transport_ssh', ssh_transport = cr.create('ssh_transport', 'resources/transport_ssh',
{'ssh_key': '/vagrant/.vagrant/machines/solar-dev1/virtualbox/private_key', {'ssh_key': '/vagrant/.vagrant/machines/solar-dev1/virtualbox/private_key',
'ssh_user': 'vagrant'})[0] 'ssh_user': 'vagrant'})[0]
@ -27,17 +27,17 @@ def run():
'ssh_port': 'transports:port', 'ssh_port': 'transports:port',
'name': 'transports:name'}) 'name': 'transports:name'})
hosts = vr.create('hosts_file', 'resources/hosts_file', {})[0] hosts = cr.create('hosts_file', 'resources/hosts_file', {})[0]
# let's add torrent transport for hosts file deployment (useless in real life) # let's add torrent transport for hosts file deployment (useless in real life)
torrent_transport = vr.create('torrent_transport', torrent_transport = cr.create('torrent_transport',
'resources/transport_torrent', 'resources/transport_torrent',
{'trackers': ['udp://open.demonii.com:1337', {'trackers': ['udp://open.demonii.com:1337',
'udp://tracker.openbittorrent.com:80']})[0] 'udp://tracker.openbittorrent.com:80']})[0]
# you could use any trackers as you want # you could use any trackers as you want
transports_for_torrent = vr.create( transports_for_torrent = cr.create(
'transports_for_torrent', 'resources/transports')[0] 'transports_for_torrent', 'resources/transports')[0]
transports_for_torrent.connect(torrent_transport, {}) transports_for_torrent.connect(torrent_transport, {})
@ -48,7 +48,7 @@ def run():
'name': 'transports:name'}, 'name': 'transports:name'},
events={}) events={})
transports_for_hosts = vr.create( transports_for_hosts = cr.create(
'transports_for_hosts', 'resources/transports')[0] 'transports_for_hosts', 'resources/transports')[0]
torrent_transport.connect(transports_for_hosts, {'trackers': 'transports:trackers', torrent_transport.connect(transports_for_hosts, {'trackers': 'transports:trackers',

View File

@ -3,7 +3,7 @@ id: primary_controller
resources: resources:
- id: mariadb_service - id: mariadb_service
from: resources/mariadb_service from: resources/mariadb_service
values: input:
port: 3306 port: 3306
root_password: mariadb root_password: mariadb
image: mariadb image: mariadb
@ -13,14 +13,14 @@ resources:
- id: rabbitmq_service - id: rabbitmq_service
from: resources/rabbitmq_service from: resources/rabbitmq_service
values: input:
ip: '#{ip}#' ip: '#{ip}#'
ssh_user: '#{ssh_user}#' ssh_user: '#{ssh_user}#'
ssh_key: '#{ssh_key}#' ssh_key: '#{ssh_key}#'
- id: keystone_base - id: keystone_base
from: templates/keystone_base from: templates/keystone_base
values: input:
login_user: root login_user: root
login_password: 'mariadb_service::root_password' login_password: 'mariadb_service::root_password'
login_port: 'mariadb_service::port' login_port: 'mariadb_service::port'
@ -34,7 +34,7 @@ resources:
- id: keystone_api_1 - id: keystone_api_1
from: templates/keystone_api from: templates/keystone_api
values: input:
idx: 1 idx: 1
db_password: 'keystone_db_user::user_password' db_password: 'keystone_db_user::user_password'
db_user: 'keystone_db_user::user_name' db_user: 'keystone_db_user::user_name'
@ -50,7 +50,7 @@ resources:
- id: openstack_base - id: openstack_base
from: templates/openstack_base from: templates/openstack_base
values: input:
ip: '#{ip}#' ip: '#{ip}#'
ssh_user: '#{ssh_user}#' ssh_user: '#{ssh_user}#'
ssh_key: '#{ssh_key}#' ssh_key: '#{ssh_key}#'
@ -61,7 +61,7 @@ resources:
- id: openrc_file - id: openrc_file
from: resources/openrc_file from: resources/openrc_file
values: input:
keystone_host: 'keystone_service_1::ip' keystone_host: 'keystone_service_1::ip'
keystone_port: 'keystone_service_1::admin_port' keystone_port: 'keystone_service_1::admin_port'
tenant: 'admin_user::tenant_name' tenant: 'admin_user::tenant_name'

View File

@ -3,7 +3,7 @@ id: glance_#{idx}#
resources: resources:
- id: glance_base_#{ idx }# - id: glance_base_#{ idx }#
from: templates/glance_db from: templates/glance_db
values: input:
idx: '#{ idx }#' idx: '#{ idx }#'
db_name: '#{ db_name }#' db_name: '#{ db_name }#'

View File

@ -3,7 +3,7 @@ id: glance_base
resources: resources:
- id: glance_db - id: glance_db
from: resources/mariadb_db from: resources/mariadb_db
values: input:
db_name: #{db_name}# db_name: #{db_name}#
login_user: '#{login_user}#' login_user: '#{login_user}#'
login_password: '#{login_password}#' login_password: '#{login_password}#'
@ -14,7 +14,7 @@ resources:
- id: glance_db_user - id: glance_db_user
from: resources/mariadb_user from: resources/mariadb_user
values: input:
user_password: '#{user_password}#' user_password: '#{user_password}#'
user_name: '#{user_name}#' user_name: '#{user_name}#'
db_name: 'keystone_db::db_name' db_name: 'keystone_db::db_name'

View File

@ -3,7 +3,7 @@ id: glance_db_#{ idx }#
resources: resources:
- id: glance_db_db_#{ idx }# - id: glance_db_db_#{ idx }#
from: resources/mariadb_db from: resources/mariadb_db
values: input:
db_name: '#{ db_name }#' db_name: '#{ db_name }#'
login_user: '#{ db_login_user }#' login_user: '#{ db_login_user }#'
login_password: '#{ db_login_password }#' login_password: '#{ db_login_password }#'
@ -15,7 +15,7 @@ resources:
- id: glance_db_user - id: glance_db_user
from: resources/mariadb_user from: resources/mariadb_user
values: input:
user_password: '#{ db_password }#' user_password: '#{ db_password }#'
user_name: '#{ db_user }#' user_name: '#{ db_user }#'

View File

@ -3,7 +3,7 @@ id: glance_register_#{idx}#
resources: resources:
- id: glance_config_#{idx}# - id: glance_config_#{idx}#
from: resources/glance_config from: resources/glance_config
values: input:
keystone_admin_port: '#{keystone_admin_port}#' keystone_admin_port: '#{keystone_admin_port}#'
keystone_ip: '#{keystone_ip}#' keystone_ip: '#{keystone_ip}#'
mysql_password: '#{mysql_password}#' mysql_password: '#{mysql_password}#'
@ -17,7 +17,7 @@ resources:
- id: glance_registry_#{idx}# - id: glance_registry_#{idx}#
from: resources/glance_registry_service from: resources/glance_registry_service
values: input:
ip: 'keystone_config_#{idx}#::ip' ip: 'keystone_config_#{idx}#::ip'
ssh_user: 'keystone_config_#{idx}#::ssh_user' ssh_user: 'keystone_config_#{idx}#::ssh_user'
ssh_key: 'keystone_config_#{idx}#::ssh_key' ssh_key: 'keystone_config_#{idx}#::ssh_key'

View File

@ -4,7 +4,7 @@ resources:
- id: haproxy_config#{index}# - id: haproxy_config#{index}#
from: resources/haproxy_config from: resources/haproxy_config
location: #{node}# location: #{node}#
values: input:
ip: '#{node}#::ip' ip: '#{node}#::ip'
config:protocol: config:protocol:
#% for config in service_configs %# #% for config in service_configs %#
@ -26,21 +26,21 @@ resources:
- id: haproxy_service#{index}# - id: haproxy_service#{index}#
location: #{node}# location: #{node}#
from: resources/haproxy_service from: resources/haproxy_service
values: input:
ip: '#{node}#::ip' ip: '#{node}#::ip'
events: events:
- type: depends_on - type: depends_on
parent_action: 'haproxy_service#{index}#.run' parent_action: 'haproxy_service#{index}#.run'
state: 'success' state: 'success'
depend_action: 'haproxy_config#{index}#.run' child_action: 'haproxy_config#{index}#.run'
- type: react_on - type: react_on
parent_action: 'haproxy_config#{index}#.run' parent_action: 'haproxy_config#{index}#.run'
state: 'success' state: 'success'
depend_action: 'haproxy_service#{index}#.apply_config' child_action: 'haproxy_service#{index}#.apply_config'
- type: react_on - type: react_on
parent_action: 'haproxy_config#{index}#.update' parent_action: 'haproxy_config#{index}#.update'
state: 'success' state: 'success'
depend_action: 'haproxy_service#{index}#.apply_config' child_action: 'haproxy_service#{index}#.apply_config'

View File

@ -3,7 +3,7 @@ id: keystone_api_#{idx}#
resources: resources:
- id: keystone_service_#{idx}# - id: keystone_service_#{idx}#
from: resources/keystone_puppet from: resources/keystone_puppet
values: input:
admin_token: '#{admin_token}#' admin_token: '#{admin_token}#'
db_host: '#{db_host}#' db_host: '#{db_host}#'
db_name: '#{db_name}#' db_name: '#{db_name}#'

View File

@ -3,7 +3,7 @@ id: keystone_base
resources: resources:
- id: keystone_db - id: keystone_db
from: resources/mariadb_db from: resources/mariadb_db
values: input:
db_name: '#{db_name}#' db_name: '#{db_name}#'
db_host: '#{db_host}#' db_host: '#{db_host}#'
login_user: '#{login_user}#' login_user: '#{login_user}#'
@ -15,7 +15,7 @@ resources:
- id: keystone_db_user - id: keystone_db_user
from: resources/mariadb_user from: resources/mariadb_user
values: input:
user_password: '#{user_password}#' user_password: '#{user_password}#'
user_name: '#{user_name}#' user_name: '#{user_name}#'
db_name: 'keystone_db::db_name' db_name: 'keystone_db::db_name'

View File

@ -3,7 +3,7 @@ resources:
- id: mos_holdback_#{index}# - id: mos_holdback_#{index}#
from: resources/apt_repo from: resources/apt_repo
location: #{node}# location: #{node}#
values: input:
name: mos-holdback name: mos-holdback
package: '*' package: '*'
repo: deb http://mirror.fuel-infra.org/mos-repos/ubuntu/8.0/ mos8.0-holdback main restricted repo: deb http://mirror.fuel-infra.org/mos-repos/ubuntu/8.0/ mos8.0-holdback main restricted
@ -12,7 +12,7 @@ resources:
- id: mos_security_#{index}# - id: mos_security_#{index}#
from: resources/apt_repo from: resources/apt_repo
location: #{node}# location: #{node}#
values: input:
name: mos name: mos
package: '*' package: '*'
repo: deb http://mirror.fuel-infra.org/mos-repos/ubuntu/8.0/ mos8.0-security main restricted repo: deb http://mirror.fuel-infra.org/mos-repos/ubuntu/8.0/ mos8.0-security main restricted
@ -21,7 +21,7 @@ resources:
- id: mos_updates_#{index}# - id: mos_updates_#{index}#
from: resources/apt_repo from: resources/apt_repo
location: #{node}# location: #{node}#
values: input:
name: mos_update name: mos_update
package: '*' package: '*'
repo: deb http://mirror.fuel-infra.org/mos-repos/ubuntu/8.0/ mos8.0-updates main restricted repo: deb http://mirror.fuel-infra.org/mos-repos/ubuntu/8.0/ mos8.0-updates main restricted
@ -30,7 +30,7 @@ resources:
- id: managed_apt_#{index}# - id: managed_apt_#{index}#
from: resources/managed_apt from: resources/managed_apt
location: #{node}# location: #{node}#
values: input:
names: names:
- mos_holdback_#{index}#::name - mos_holdback_#{index}#::name
- mos_security_#{index}#::name - mos_security_#{index}#::name

View File

@ -4,17 +4,17 @@ resources:
#% set j = i +1 %# #% set j = i +1 %#
- id: ssh_transport#{j}# - id: ssh_transport#{j}#
from: resources/transport_ssh from: resources/transport_ssh
values: input:
ssh_user: 'vagrant' ssh_user: 'vagrant'
ssh_key: '/vagrant/.vagrant/machines/solar-dev#{j}#/virtualbox/private_key' ssh_key: '/vagrant/.vagrant/machines/solar-dev#{j}#/virtualbox/private_key'
- id: rsync#{j}# - id: rsync#{j}#
from: resources/transport_rsync from: resources/transport_rsync
values: input:
user: vagrant user: vagrant
key: /vagrant/.vagrant/machines/solar-dev#{j}#/virtualbox/private_key key: /vagrant/.vagrant/machines/solar-dev#{j}#/virtualbox/private_key
- id: transports#{j}# - id: transports#{j}#
from: resources/transports from: resources/transports
values: input:
transports: transports:
- key: ssh_transport#{j}#::ssh_key - key: ssh_transport#{j}#::ssh_key
user: ssh_transport#{j}#::ssh_user user: ssh_transport#{j}#::ssh_user
@ -26,7 +26,7 @@ resources:
port: rsync#{j}#::port port: rsync#{j}#::port
- id: node#{j}# - id: node#{j}#
from: resources/ro_node from: resources/ro_node
values: input:
name: node#{j}# name: node#{j}#
ip: '10.0.0.#{i + 3}#' ip: '10.0.0.#{i + 3}#'
transports_id: transports#{j}#::transports_id transports_id: transports#{j}#::transports_id

View File

@ -6,7 +6,7 @@ resources:
#% for i in range(count|int) %# #% for i in range(count|int) %#
- id: node#{i}#_sdn - id: node#{i}#_sdn
from: resources/node_network_puppet from: resources/node_network_puppet
values: input:
use_ovs: true use_ovs: true
network_scheme: network_scheme:
version: '1.1' version: '1.1'

View File

@ -3,17 +3,17 @@ resources:
#% for i in range(count|int) %# #% for i in range(count|int) %#
- id: ssh_transport#{i}# - id: ssh_transport#{i}#
from: resources/transport_ssh from: resources/transport_ssh
values: input:
ssh_user: 'vagrant' ssh_user: 'vagrant'
ssh_key: '/vagrant/.vagrant/machines/solar-dev#{i + 1}#/virtualbox/private_key' ssh_key: '/vagrant/.vagrant/machines/solar-dev#{i + 1}#/virtualbox/private_key'
- id: rsync#{i}# - id: rsync#{i}#
from: resources/transport_rsync from: resources/transport_rsync
values: input:
user: vagrant user: vagrant
key: /vagrant/.vagrant/machines/solar-dev#{i + 1}#/virtualbox/private_key key: /vagrant/.vagrant/machines/solar-dev#{i + 1}#/virtualbox/private_key
- id: transports#{i}# - id: transports#{i}#
from: resources/transports from: resources/transports
values: input:
transports: transports:
- key: ssh_transport#{i}#::ssh_key - key: ssh_transport#{i}#::ssh_key
user: ssh_transport#{i}#::ssh_user user: ssh_transport#{i}#::ssh_user
@ -25,7 +25,7 @@ resources:
port: rsync#{i}#::port port: rsync#{i}#::port
- id: node#{i}# - id: node#{i}#
from: resources/ro_node from: resources/ro_node
values: input:
ip: '10.0.0.#{i + 3}#' ip: '10.0.0.#{i + 3}#'
transports_id: transports#{i}#::transports_id transports_id: transports#{i}#::transports_id
name: node#{i}# name: node#{i}#

View File

@ -4,19 +4,19 @@ resources:
#% set id = node.id | replace(':', '_') %# #% set id = node.id | replace(':', '_') %#
- id: ssh_transport#{ id }# - id: ssh_transport#{ id }#
from: resources/transport_ssh from: resources/transport_ssh
values: input:
ssh_user: 'root' ssh_user: 'root'
ssh_key: '/vagrant/tmp/keys/ssh_private' ssh_key: '/vagrant/tmp/keys/ssh_private'
- id: transports#{id}# - id: transports#{id}#
from: resources/transports from: resources/transports
values: input:
transports:key: ssh_transport#{id}#::ssh_key transports:key: ssh_transport#{id}#::ssh_key
transports:user: ssh_transport#{id}#::ssh_user transports:user: ssh_transport#{id}#::ssh_user
transports:port: ssh_transport#{id}#::ssh_port transports:port: ssh_transport#{id}#::ssh_port
transports:name: ssh_transport#{id}#::name transports:name: ssh_transport#{id}#::name
- id: node_#{id}# - id: node_#{id}#
from: resources/not_provisioned_node from: resources/not_provisioned_node
values: input:
ip: #{node.ip}# ip: #{node.ip}#
transports_id: transports#{id}#::transports_id transports_id: transports#{id}#::transports_id
name: node_#{id}# name: node_#{id}#
@ -25,19 +25,19 @@ resources:
- id: ssh_transport_master - id: ssh_transport_master
from: resources/transport_ssh from: resources/transport_ssh
values: input:
ssh_user: 'vagrant' ssh_user: 'vagrant'
ssh_key: '/vagrant/.vagrant/machines/solar-dev/virtualbox/private_key' ssh_key: '/vagrant/.vagrant/machines/solar-dev/virtualbox/private_key'
- id: transports_master - id: transports_master
from: resources/transports from: resources/transports
values: input:
transports:key: ssh_transport_master::ssh_key transports:key: ssh_transport_master::ssh_key
transports:user: ssh_transport_master::ssh_user transports:user: ssh_transport_master::ssh_user
transports:port: ssh_transport_master::ssh_port transports:port: ssh_transport_master::ssh_port
transports:name: ssh_transport_master::name transports:name: ssh_transport_master::name
- id: node_master - id: node_master
from: resources/ro_node from: resources/ro_node
values: input:
name: node_master name: node_master
ip: '10.0.2.15' ip: '10.0.2.15'
transports_id: transports_master::transports_id transports_id: transports_master::transports_id

View File

@ -3,7 +3,7 @@ id: openstack_base
resources: resources:
- id: admin_tenant - id: admin_tenant
from: resources/keystone_tenant from: resources/keystone_tenant
values: input:
tenant_name: admin tenant_name: admin
keystone_port: '#{keystone_admin_port}#' keystone_port: '#{keystone_admin_port}#'
keystone_host: '#{keystone_ip}#' keystone_host: '#{keystone_ip}#'
@ -14,7 +14,7 @@ resources:
- id: admin_user - id: admin_user
from: resources/keystone_user from: resources/keystone_user
values: input:
user_name: 'admin' user_name: 'admin'
user_password: 'admin' user_password: 'admin'
tenant_name: 'admin_tenant::tenant_name' tenant_name: 'admin_tenant::tenant_name'
@ -27,7 +27,7 @@ resources:
- id: admin_role - id: admin_role
from: resources/keystone_role from: resources/keystone_role
values: input:
role_name: 'admin' role_name: 'admin'
user_name: 'admin_user::user_name' user_name: 'admin_user::user_name'
tenant_name: 'admin_user::tenant_name' tenant_name: 'admin_user::tenant_name'
@ -40,7 +40,7 @@ resources:
- id: keystone_service_endpoint - id: keystone_service_endpoint
from: resources/keystone_service_endpoint from: resources/keystone_service_endpoint
values: input:
#% raw %# #% raw %#
adminurl: 'http://#{admin_ip}#:#{admin_port}#/v2.0' adminurl: 'http://#{admin_ip}#:#{admin_port}#/v2.0'
internalurl: 'http://#{internal_ip}#:#{internal_port}#/v2.0' internalurl: 'http://#{internal_ip}#:#{internal_port}#/v2.0'
@ -64,7 +64,7 @@ resources:
- id: service_tenant - id: service_tenant
from: resources/keystone_tenant from: resources/keystone_tenant
values: input:
tenant_name: services tenant_name: services
keystone_port: '#{keystone_admin_port}#' keystone_port: '#{keystone_admin_port}#'
keystone_host: '#{keystone_ip}#' keystone_host: '#{keystone_ip}#'

View File

@ -2,7 +2,7 @@ id: seed_node
resources: resources:
- id: seed_node - id: seed_node
from: resources/ro_node from: resources/ro_node
values: input:
ip: '10.0.0.2' ip: '10.0.0.2'
ssh_key: '/vagrant/.vagrant/machines/solar-dev/virtualbox/private_key' ssh_key: '/vagrant/.vagrant/machines/solar-dev/virtualbox/private_key'
ssh_user: 'vagrant' ssh_user: 'vagrant'

View File

@ -3,6 +3,6 @@ resources:
- id: sources#{index}# - id: sources#{index}#
from: resources/sources from: resources/sources
location: #{node}# location: #{node}#
values: input:
sources: sources:
- {src: /tmp/sources_test, dst: /tmp/sources_test} - {src: /tmp/sources_test, dst: /tmp/sources_test}