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