Merge "supporting short versions of requirements"

This commit is contained in:
Jenkins 2015-07-30 15:35:51 +00:00 committed by Gerrit Code Review
commit 88e1910354
9 changed files with 49 additions and 78 deletions

View File

@ -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):

View File

@ -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')

View File

@ -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]

View File

@ -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()

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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