Merge "supporting short versions of requirements"
This commit is contained in:
commit
88e1910354
@ -271,7 +271,10 @@ class HotResource(object):
|
||||
for requirement_name, assignment in six.iteritems(requirement):
|
||||
for check_node in this_node_template.related_nodes:
|
||||
# check if the capability is Container
|
||||
node_name = assignment.get('node')
|
||||
if isinstance(assignment, dict):
|
||||
node_name = assignment.get('node')
|
||||
else:
|
||||
node_name = assignment
|
||||
if node_name and node_name == check_node.name:
|
||||
if self._is_container_type(requirement_name,
|
||||
check_node):
|
||||
|
@ -161,8 +161,12 @@ class TranslateNodeTemplates(object):
|
||||
for node in self.nodetemplates:
|
||||
for requirement in node.requirements:
|
||||
for endpoint, details in six.iteritems(requirement):
|
||||
target = details.get('node')
|
||||
relation = details.get('relationship')
|
||||
relation = None
|
||||
if isinstance(details, dict):
|
||||
target = details.get('node')
|
||||
relation = details.get('relationship')
|
||||
else:
|
||||
target = details
|
||||
if (target and relation and
|
||||
not isinstance(relation, six.string_types)):
|
||||
interfaces = relation.get('interfaces')
|
||||
|
@ -238,7 +238,10 @@ class EntityTemplate(object):
|
||||
if isinstance(self.entity_tpl, dict):
|
||||
for rel_def, value in self.entity_tpl.items():
|
||||
if rel_def != 'type':
|
||||
rel = self.entity_tpl.get(rel_def).get('relationship')
|
||||
rel_def = self.entity_tpl.get(rel_def)
|
||||
rel = None
|
||||
if isinstance(rel_def, dict):
|
||||
rel = rel_def.get('relationship')
|
||||
if rel:
|
||||
if self.INTERFACES in rel:
|
||||
type_interfaces = rel[self.INTERFACES]
|
||||
|
@ -50,24 +50,10 @@ class NodeTemplate(EntityTemplate):
|
||||
if requires:
|
||||
for r in requires:
|
||||
for r1, value in r.items():
|
||||
if isinstance(value, dict):
|
||||
explicit = self._get_explicit_relationship(
|
||||
r, value)
|
||||
if explicit:
|
||||
for key, value in explicit.items():
|
||||
self._relationships[key] = value
|
||||
else:
|
||||
# need to check for short notation of requirements
|
||||
keys = self.type_definition.relationship.keys()
|
||||
for rtype in keys:
|
||||
if r1 == rtype.capability_name:
|
||||
related_tpl = NodeTemplate(
|
||||
value, self.templates,
|
||||
self.custom_def)
|
||||
self._relationships[rtype] = related_tpl
|
||||
related_tpl._add_relationship_template(
|
||||
r, rtype.type)
|
||||
|
||||
explicit = self._get_explicit_relationship(r, value)
|
||||
if explicit:
|
||||
for key, value in explicit.items():
|
||||
self._relationships[key] = value
|
||||
return self._relationships
|
||||
|
||||
def _get_explicit_relationship(self, req, value):
|
||||
@ -79,7 +65,8 @@ class NodeTemplate(EntityTemplate):
|
||||
relationship: tosca.relationships.HostedOn
|
||||
"""
|
||||
explicit_relation = {}
|
||||
node = value.get('node')
|
||||
node = value.get('node') if isinstance(value, dict) else value
|
||||
|
||||
if node:
|
||||
# TODO(spzala) implement look up once Glance meta data is available
|
||||
# to find a matching TOSCA node using the TOSCA types
|
||||
@ -89,7 +76,8 @@ class NodeTemplate(EntityTemplate):
|
||||
or node in self.custom_def):
|
||||
raise NotImplementedError(msg)
|
||||
related_tpl = NodeTemplate(node, self.templates, self.custom_def)
|
||||
relationship = value.get('relationship')
|
||||
relationship = value.get('relationship') \
|
||||
if isinstance(value, dict) else None
|
||||
# check if it's type has relationship defined
|
||||
if not relationship:
|
||||
parent_reqs = self.type_definition.get_all_requirements()
|
||||
|
@ -39,7 +39,5 @@ topology_template:
|
||||
my_port:
|
||||
type: tosca.nodes.network.Port
|
||||
requirements:
|
||||
- binding:
|
||||
node: my_server
|
||||
- link:
|
||||
node: my_network
|
||||
- binding: my_server
|
||||
- link: my_network
|
||||
|
@ -44,27 +44,21 @@ topology_template:
|
||||
properties:
|
||||
order: 0
|
||||
requirements:
|
||||
- binding:
|
||||
node: my_server
|
||||
- link:
|
||||
node: my_network1
|
||||
- binding: my_server
|
||||
- link: my_network1
|
||||
|
||||
my_port2:
|
||||
type: tosca.nodes.network.Port
|
||||
properties:
|
||||
order: 1
|
||||
requirements:
|
||||
- binding:
|
||||
node: my_server
|
||||
- link:
|
||||
node: my_network2
|
||||
- binding: my_server
|
||||
- link: my_network2
|
||||
|
||||
my_port3:
|
||||
type: tosca.nodes.network.Port
|
||||
properties:
|
||||
order: 2
|
||||
requirements:
|
||||
- binding:
|
||||
node: my_server
|
||||
- link:
|
||||
node: my_network3
|
||||
- binding: my_server
|
||||
- link: my_network3
|
||||
|
@ -44,10 +44,8 @@ topology_template:
|
||||
properties:
|
||||
github_url: { get_input: github_url }
|
||||
requirements:
|
||||
- host:
|
||||
node: nodejs
|
||||
- database_connection:
|
||||
node: mongo_db
|
||||
- host: nodejs
|
||||
- database_connection: mongo_db
|
||||
interfaces:
|
||||
Standard:
|
||||
configure:
|
||||
@ -59,24 +57,21 @@ topology_template:
|
||||
nodejs:
|
||||
type: tosca.nodes.WebServer
|
||||
requirements:
|
||||
- host:
|
||||
node: app_server
|
||||
- host: app_server
|
||||
interfaces:
|
||||
Standard:
|
||||
create: nodejs/create.sh
|
||||
mongo_db:
|
||||
type: tosca.nodes.Database
|
||||
requirements:
|
||||
- host:
|
||||
node: mongo_dbms
|
||||
- host: mongo_dbms
|
||||
interfaces:
|
||||
Standard:
|
||||
create: mongodb/create_database.sh
|
||||
mongo_dbms:
|
||||
type: tosca.nodes.DBMS
|
||||
requirements:
|
||||
- host:
|
||||
node: mongo_server
|
||||
- host: mongo_server
|
||||
interfaces:
|
||||
Standard:
|
||||
create: mongodb/create.sh
|
||||
@ -88,8 +83,7 @@ topology_template:
|
||||
elasticsearch:
|
||||
type: tosca.nodes.SoftwareComponent.Elasticsearch
|
||||
requirements:
|
||||
- host:
|
||||
node: elasticsearch_server
|
||||
- host: elasticsearch_server
|
||||
interfaces:
|
||||
Standard:
|
||||
create: elasticsearch/create.sh
|
||||
@ -97,8 +91,7 @@ topology_template:
|
||||
logstash:
|
||||
type: tosca.nodes.SoftwareComponent.Logstash
|
||||
requirements:
|
||||
- host:
|
||||
node: logstash_server
|
||||
- host: logstash_server
|
||||
- search_endpoint:
|
||||
node: elasticsearch
|
||||
capability: search_endpoint
|
||||
@ -117,8 +110,7 @@ topology_template:
|
||||
kibana:
|
||||
type: tosca.nodes.SoftwareComponent.Kibana
|
||||
requirements:
|
||||
- host:
|
||||
node: kibana_server
|
||||
- host: kibana_server
|
||||
- search_endpoint:
|
||||
node: elasticsearch
|
||||
capability: search_endpoint
|
||||
@ -134,8 +126,7 @@ topology_template:
|
||||
app_collectd:
|
||||
type: tosca.nodes.SoftwareComponent.Collectd
|
||||
requirements:
|
||||
- host:
|
||||
node: app_server
|
||||
- host: app_server
|
||||
- log_endpoint:
|
||||
node: logstash
|
||||
capability: log_endpoint
|
||||
@ -156,8 +147,7 @@ topology_template:
|
||||
app_rsyslog:
|
||||
type: tosca.nodes.SoftwareComponent.Rsyslog
|
||||
requirements:
|
||||
- host:
|
||||
node: app_server
|
||||
- host: app_server
|
||||
- log_endpoint:
|
||||
node: logstash
|
||||
capability: log_endpoint
|
||||
|
@ -36,10 +36,8 @@ topology_template:
|
||||
properties:
|
||||
github_url: { get_input: github_url }
|
||||
requirements:
|
||||
- host:
|
||||
node: nodejs
|
||||
- database_connection:
|
||||
node: mongo_db
|
||||
- host: nodejs
|
||||
- database_connection: mongo_db
|
||||
interfaces:
|
||||
Standard:
|
||||
configure:
|
||||
@ -51,24 +49,21 @@ topology_template:
|
||||
nodejs:
|
||||
type: tosca.nodes.WebServer
|
||||
requirements:
|
||||
- host:
|
||||
node: app_server
|
||||
- host: app_server
|
||||
interfaces:
|
||||
Standard:
|
||||
create: nodejs/create.sh
|
||||
mongo_db:
|
||||
type: tosca.nodes.Database
|
||||
requirements:
|
||||
- host:
|
||||
node: mongo_dbms
|
||||
- host: mongo_dbms
|
||||
interfaces:
|
||||
Standard:
|
||||
create: mongodb/create_database.sh
|
||||
mongo_dbms:
|
||||
type: tosca.nodes.DBMS
|
||||
requirements:
|
||||
- host:
|
||||
node: mongo_server
|
||||
- host: mongo_server
|
||||
interfaces:
|
||||
Standard:
|
||||
create: mongodb/create.sh
|
||||
|
@ -38,10 +38,8 @@ topology_template:
|
||||
wordpress:
|
||||
type: tosca.nodes.WebApplication.WordPress
|
||||
requirements:
|
||||
- host:
|
||||
node: webserver
|
||||
- database_endpoint:
|
||||
node: mysql_database
|
||||
- host: webserver
|
||||
- database_endpoint: mysql_database
|
||||
interfaces:
|
||||
Standard:
|
||||
create: wordpress/wordpress_install.sh
|
||||
@ -80,8 +78,7 @@ topology_template:
|
||||
root_password: { get_input: db_root_pwd }
|
||||
port: { get_input: db_port }
|
||||
requirements:
|
||||
- host:
|
||||
node: server
|
||||
- host: server
|
||||
interfaces:
|
||||
Standard:
|
||||
create:
|
||||
@ -97,8 +94,7 @@ topology_template:
|
||||
webserver:
|
||||
type: tosca.nodes.WebServer
|
||||
requirements:
|
||||
- host:
|
||||
node: server
|
||||
- host: server
|
||||
interfaces:
|
||||
Standard:
|
||||
create: webserver/webserver_install.sh
|
||||
|
Loading…
x
Reference in New Issue
Block a user