Repository: incubator-ariatosca
Updated Branches:
  refs/heads/ARIA-132-Models-cascading-deletion-raises-constraint-errors 
1ecf657bf -> 5e70a4a3d (forced update)


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/5e70a4a3
Tree: http://git-wip-us.apache.org/repos/asf/incubator-ariatosca/tree/5e70a4a3
Diff: http://git-wip-us.apache.org/repos/asf/incubator-ariatosca/diff/5e70a4a3

Branch: refs/heads/ARIA-132-Models-cascading-deletion-raises-constraint-errors
Commit: 5e70a4a3d7cd78bfdc607edba28be767c712b0af
Parents: 6737b62
Author: max-orlov <[email protected]>
Authored: Mon Mar 27 12:56:05 2017 +0300
Committer: max-orlov <[email protected]>
Committed: Mon Mar 27 14:02:51 2017 +0300

----------------------------------------------------------------------
 aria/.pylintrc                    |  2 +-
 aria/modeling/relationship.py     | 47 +++++++++++++++++-----------------
 aria/modeling/service_changes.py  |  5 +---
 aria/modeling/service_instance.py | 38 ++++++++++++++++-----------
 aria/modeling/service_template.py | 29 ++++++++++++++++-----
 setup.py                          |  1 -
 6 files changed, 70 insertions(+), 52 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-ariatosca/blob/5e70a4a3/aria/.pylintrc
----------------------------------------------------------------------
diff --git a/aria/.pylintrc b/aria/.pylintrc
index 589402f..7222605 100644
--- a/aria/.pylintrc
+++ b/aria/.pylintrc
@@ -375,7 +375,7 @@ max-attributes=20
 min-public-methods=0
 
 # Maximum number of public methods for a class (see R0904).
-max-public-methods=20
+max-public-methods=50
 
 # Maximum number of boolean expressions in a if statement
 max-bool-expr=5

http://git-wip-us.apache.org/repos/asf/incubator-ariatosca/blob/5e70a4a3/aria/modeling/relationship.py
----------------------------------------------------------------------
diff --git a/aria/modeling/relationship.py b/aria/modeling/relationship.py
index ffdffba..459c355 100644
--- a/aria/modeling/relationship.py
+++ b/aria/modeling/relationship.py
@@ -110,7 +110,7 @@ def one_to_many_self(model_class, fk, dict_key=None):
         relationship_kwargs={
             'remote_side': 
'{model_class}.{remote_column}'.format(model_class=model_class.__name__,
                                                                   
remote_column=fk
-                                                                  )
+                                                                 )
         },
         back_populates=False,
         dict_key=dict_key
@@ -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',
@@ -326,7 +325,7 @@ def _relationship(model_class,
         return relationship(lambda: _get_class_for_table(model_class, 
other_table_name),
                             backref=backref(**backref_kwargs),
                             **relationship_kwargs
-                            )
+                           )
     else:
         if back_populates:
             relationship_kwargs['back_populates'] = back_populates

http://git-wip-us.apache.org/repos/asf/incubator-ariatosca/blob/5e70a4a3/aria/modeling/service_changes.py
----------------------------------------------------------------------
diff --git a/aria/modeling/service_changes.py b/aria/modeling/service_changes.py
index 87c7f3d..d81ed98 100644
--- a/aria/modeling/service_changes.py
+++ b/aria/modeling/service_changes.py
@@ -42,9 +42,6 @@ class ServiceUpdateBase(ModelMixin):
     """
     Deployment update model representation.
     """
-
-    steps = None
-
     __tablename__ = 'service_update'
 
     __private_fields__ = ['service_fk',
@@ -62,7 +59,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/5e70a4a3/aria/modeling/service_instance.py
----------------------------------------------------------------------
diff --git a/aria/modeling/service_instance.py 
b/aria/modeling/service_instance.py
index 79d4fd4..d9a8d88 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,13 @@ 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 +914,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 +1030,13 @@ 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 +1319,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 +1568,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/5e70a4a3/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):

http://git-wip-us.apache.org/repos/asf/incubator-ariatosca/blob/5e70a4a3/setup.py
----------------------------------------------------------------------
diff --git a/setup.py b/setup.py
index a8b07a8..7be5275 100644
--- a/setup.py
+++ b/setup.py
@@ -61,7 +61,6 @@ except IOError:
 
 
 console_scripts = ['aria = aria.cli.cli:main']
-console_scripts.append('ctx = 
aria.orchestrator.execution_plugin.ctx_proxy.client:main')
 
 
 class InstallCommand(install):

Reply via email to