You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@ariatosca.apache.org by mx...@apache.org on 2017/03/27 09:56:12 UTC
incubator-ariatosca git commit: relationship fixes
Repository: incubator-ariatosca
Updated Branches:
refs/heads/ARIA-132-Models-cascading-deletion-raises-constraint-errors 6737b62b7 -> ec65383d7
relationship fixes
Project: http://git-wip-us.apache.org/repos/asf/incubator-ariatosca/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-ariatosca/commit/ec65383d
Tree: http://git-wip-us.apache.org/repos/asf/incubator-ariatosca/tree/ec65383d
Diff: http://git-wip-us.apache.org/repos/asf/incubator-ariatosca/diff/ec65383d
Branch: refs/heads/ARIA-132-Models-cascading-deletion-raises-constraint-errors
Commit: ec65383d71b2f5922883ba99e5673dfc3ce8c7d2
Parents: 6737b62
Author: max-orlov <ma...@gigaspaces.com>
Authored: Mon Mar 27 12:56:05 2017 +0300
Committer: max-orlov <ma...@gigaspaces.com>
Committed: Mon Mar 27 12:56:05 2017 +0300
----------------------------------------------------------------------
aria/modeling/relationship.py | 43 +++++++++++++++++-----------------
aria/modeling/service_changes.py | 2 +-
aria/modeling/service_instance.py | 34 +++++++++++++++------------
aria/modeling/service_template.py | 29 +++++++++++++++++------
4 files changed, 63 insertions(+), 45 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-ariatosca/blob/ec65383d/aria/modeling/relationship.py
----------------------------------------------------------------------
diff --git a/aria/modeling/relationship.py b/aria/modeling/relationship.py
index ffdffba..f22b0a9 100644
--- a/aria/modeling/relationship.py
+++ b/aria/modeling/relationship.py
@@ -181,12 +181,12 @@ def one_to_many(model_class,
false to disable
:type child_property: basestring|bool
"""
- return _relationship(model_class, child_table,
- relationship_kwargs={
- 'back_populates': child_property or model_class.__tablename__
- },
- other_fk=child_fk,
- dict_key=dict_key)
+ return _relationship(
+ model_class,
+ child_table,
+ relationship_kwargs={'back_populates': child_property or model_class.__tablename__},
+ other_fk=child_fk,
+ dict_key=dict_key)
def many_to_one(model_class,
@@ -285,10 +285,13 @@ def many_to_many(model_class,
other_foreign_key
)
- return _relationship(model_class, other_table,
- relationship_kwargs={'secondary': secondary_table},
- backref_kwargs={'name': other_property, 'uselist': True},
- dict_key=dict_key)
+ return _relationship(
+ model_class,
+ other_table,
+ relationship_kwargs={'secondary': secondary_table},
+ backref_kwargs={'name': other_property, 'uselist': True} if other_property else None,
+ dict_key=dict_key
+ )
def _relationship(model_class,
@@ -302,20 +305,16 @@ def _relationship(model_class,
relationship_kwargs = relationship_kwargs or {}
if fk:
- relationship_kwargs.setdefault('foreign_keys',
- lambda: getattr(
- _get_class_for_table(
- model_class,
- model_class.__tablename__),
- fk))
+ relationship_kwargs.setdefault(
+ 'foreign_keys',
+ lambda: getattr(_get_class_for_table(model_class, model_class.__tablename__), fk)
+ )
elif other_fk:
- relationship_kwargs.setdefault('foreign_keys',
- lambda: getattr(
- _get_class_for_table(
- model_class,
- other_table_name),
- other_fk))
+ relationship_kwargs.setdefault(
+ 'foreign_keys',
+ lambda: getattr(_get_class_for_table(model_class, other_table_name), other_fk)
+ )
if dict_key:
relationship_kwargs.setdefault('collection_class',
http://git-wip-us.apache.org/repos/asf/incubator-ariatosca/blob/ec65383d/aria/modeling/service_changes.py
----------------------------------------------------------------------
diff --git a/aria/modeling/service_changes.py b/aria/modeling/service_changes.py
index 87c7f3d..91d4703 100644
--- a/aria/modeling/service_changes.py
+++ b/aria/modeling/service_changes.py
@@ -62,7 +62,7 @@ class ServiceUpdateBase(ModelMixin):
@declared_attr
def execution(cls):
- return relationship.many_to_one(cls, 'execution')
+ return relationship.one_to_one(cls, 'execution', back_populates=False)
@declared_attr
def service(cls):
http://git-wip-us.apache.org/repos/asf/incubator-ariatosca/blob/ec65383d/aria/modeling/service_instance.py
----------------------------------------------------------------------
diff --git a/aria/modeling/service_instance.py b/aria/modeling/service_instance.py
index 79d4fd4..011b0ed 100644
--- a/aria/modeling/service_instance.py
+++ b/aria/modeling/service_instance.py
@@ -91,10 +91,22 @@ class ServiceBase(InstanceModelMixin): # pylint: disable=too-many-public-methods
'service_template_name']
@declared_attr
- def execution(cls):
+ def updates(cls):
+ return relationship.one_to_many(cls, 'service_update')
+
+ @declared_attr
+ def modifications(cls):
+ return relationship.one_to_many(cls, 'service_modification')
+
+ @declared_attr
+ def executions(cls):
return relationship.one_to_many(cls, 'execution')
@declared_attr
+ def operations(cls):
+ return relationship.one_to_many(cls, 'operation')
+
+ @declared_attr
def service_template(cls):
return relationship.many_to_one(cls, 'service_template')
@@ -352,10 +364,6 @@ class NodeBase(InstanceModelMixin): # pylint: disable=too-many-public-methods
'service_name']
@declared_attr
- def relationships(cls):
- return relationship.one_to_many(cls, 'relationship')
-
- @declared_attr
def tasks(cls):
return relationship.one_to_many(cls, 'task')
@@ -391,11 +399,11 @@ class NodeBase(InstanceModelMixin): # pylint: disable=too-many-public-methods
@declared_attr
def outbound_relationships(cls):
- return relationship.one_to_many(cls, 'relationship', child_fk='source_node_fk')
+ return relationship.one_to_many(cls, 'relationship', child_fk='source_node_fk', child_property='source_node')
@declared_attr
def inbound_relationships(cls):
- return relationship.one_to_many(cls, 'relationship', child_fk='target_node_fk')
+ return relationship.one_to_many(cls, 'relationship', child_fk='target_node_fk', child_property='target_node')
@declared_attr
def host(cls):
@@ -904,7 +912,7 @@ class SubstitutionMappingBase(InstanceModelMixin):
@declared_attr
def substitution(cls):
- return relationship.one_to_many(cls, 'substitution')
+ return relationship.many_to_one(cls, 'substitution', back_populates='mappings')
@declared_attr
def node(cls):
@@ -1020,11 +1028,11 @@ class RelationshipBase(InstanceModelMixin):
@declared_attr
def source_node(cls):
- return relationship.many_to_one(cls, 'node', fk='source_node_fk')
+ return relationship.many_to_one(cls, 'node', fk='source_node_fk', back_populates='outbound_relationships')
@declared_attr
def target_node(cls):
- return relationship.many_to_one(cls, 'node', fk='target_node_fk')
+ return relationship.many_to_one(cls, 'node', fk='target_node_fk', back_populates='inbound_relationships')
@declared_attr
def relationship_template(cls):
@@ -1307,10 +1315,6 @@ class InterfaceBase(InstanceModelMixin):
return relationship.many_to_one(cls, 'group')
@declared_attr
- def group(cls):
- return relationship.many_to_one(cls, 'relationship')
-
- @declared_attr
def interface_template(cls):
return relationship.many_to_one(cls, 'interface_template')
@@ -1560,7 +1564,7 @@ class ArtifactBase(InstanceModelMixin):
return relationship.many_to_one(cls, 'node')
@declared_attr
- def artifact_templates(cls):
+ def artifact_template(cls):
return relationship.many_to_one(cls, 'artifact_template')
@declared_attr
http://git-wip-us.apache.org/repos/asf/incubator-ariatosca/blob/ec65383d/aria/modeling/service_template.py
----------------------------------------------------------------------
diff --git a/aria/modeling/service_template.py b/aria/modeling/service_template.py
index 9efc793..f3af0d2 100644
--- a/aria/modeling/service_template.py
+++ b/aria/modeling/service_template.py
@@ -110,11 +110,19 @@ class ServiceTemplateBase(TemplateModelMixin): # pylint: disable=too-many-public
main_file_name = Column(Text)
@declared_attr
+ def services(cls):
+ return relationship.one_to_many(cls, 'service')
+
+ @declared_attr
def meta_data(cls):
# Warning! We cannot use the attr name "metadata" because it's used by SQLAlchemy!
return relationship.many_to_many(cls, 'metadata', dict_key='name')
@declared_attr
+ def operation_templates(cls):
+ return relationship.one_to_many(cls, 'operation_template')
+
+ @declared_attr
def node_templates(cls):
return relationship.one_to_many(cls, 'node_template', dict_key='name')
@@ -687,8 +695,7 @@ class PolicyTemplateBase(TemplateModelMixin):
__tablename__ = 'policy_template'
- __private_fields__ = ['type_fk',
- 'service_template_fk']
+ __private_fields__ = ['type_fk', 'service_template_fk']
@declared_attr
def policies(cls):
@@ -998,6 +1005,10 @@ class RequirementTemplateBase(TemplateModelMixin):
'relationship_template_fk']
@declared_attr
+ def relationships(cls):
+ return relationship.one_to_many(cls, 'relationship')
+
+ @declared_attr
def node_template(cls):
return relationship.many_to_one(cls, 'node_template', fk='node_template_fk')
@@ -1183,6 +1194,10 @@ class RelationshipTemplateBase(TemplateModelMixin):
__private_fields__ = ['type_fk']
@declared_attr
+ def relationships(cls):
+ return relationship.one_to_many(cls, 'relationship')
+
+ @declared_attr
def type(cls):
return relationship.many_to_one(cls, 'type', back_populates=False)
@@ -1421,12 +1436,12 @@ class InterfaceTemplateBase(TemplateModelMixin):
'relationship_template_fk']
@declared_attr
- def relationship_template(cls):
- return relationship.many_to_one(cls, 'relationship_template')
+ def interfaces(cls):
+ return relationship.one_to_many(cls, 'interface')
@declared_attr
- def interface_templates(cls):
- return relationship.one_to_many(cls, 'interface_template')
+ def relationship_template(cls):
+ return relationship.many_to_one(cls, 'relationship_template')
@declared_attr
def group_template(cls):
@@ -1688,7 +1703,7 @@ class ArtifactTemplateBase(TemplateModelMixin):
@declared_attr
def artifacts(cls):
- return relationship.many_to_one(cls, 'artifact')
+ return relationship.one_to_many(cls, 'artifact')
@declared_attr
def node_template(cls):