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/06/01 13:35:18 UTC
[6/7] incubator-ariatosca git commit: wip2
wip2
Project: http://git-wip-us.apache.org/repos/asf/incubator-ariatosca/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-ariatosca/commit/e67a58fd
Tree: http://git-wip-us.apache.org/repos/asf/incubator-ariatosca/tree/e67a58fd
Diff: http://git-wip-us.apache.org/repos/asf/incubator-ariatosca/diff/e67a58fd
Branch: refs/heads/ARIA-262-Inconsistent-node-attributes-behavior
Commit: e67a58fda607b1934ddc3088ffbe7b01038d10aa
Parents: dffcb98
Author: max-orlov <ma...@gigaspaces.com>
Authored: Thu Jun 1 11:25:49 2017 +0300
Committer: max-orlov <ma...@gigaspaces.com>
Committed: Thu Jun 1 11:45:39 2017 +0300
----------------------------------------------------------------------
.../context/collection_instrumentation.py | 27 ++++++++++++--------
aria/orchestrator/context/operation.py | 10 +++-----
2 files changed, 20 insertions(+), 17 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-ariatosca/blob/e67a58fd/aria/orchestrator/context/collection_instrumentation.py
----------------------------------------------------------------------
diff --git a/aria/orchestrator/context/collection_instrumentation.py b/aria/orchestrator/context/collection_instrumentation.py
index 00a9227..57547ea 100644
--- a/aria/orchestrator/context/collection_instrumentation.py
+++ b/aria/orchestrator/context/collection_instrumentation.py
@@ -13,26 +13,28 @@
# See the License for the specific language governing permissions and
# limitations under the License.
-from functools import partial
-
from aria.modeling import models
class _Wrapper(object):
- def __init__(self, instrumented_cls, instrumentation_cls, wrapped, **kwargs):
+ def __init__(self, instrumented_cls, instrumentation_cls, wrapped, original_model, **kwargs):
self._instrumented_cls = instrumented_cls
self._instrumentation_cls = instrumentation_cls
self._wrapped = wrapped
+ self._original_model = original_model
self._kwargs = kwargs
def _wrap(self, value):
from aria.modeling.models import aria_declarative_base
if isinstance(value, self._instrumented_cls):
- return Instrument(**self._kwargs)
+ return Instrument(original_model=value, **self._kwargs)
elif isinstance(value, aria_declarative_base):
- return _Wrapper(
- self._instrumented_cls, self._instrumentation_cls, value, **self._kwargs)
+ return _Wrapper(self._instrumented_cls,
+ self._instrumentation_cls,
+ value,
+ self._original_model,
+ **self._kwargs)
return value
def __getattr__(self, item):
@@ -228,21 +230,26 @@ class _InstrumentedList(_InstrumentedCollection, list):
class Instrument(object):
- def __init__(self, original_model, model_storage, field_names):
+ def __init__(self, original_model, model_storage, field_names, apply_to_downstream=True):
super(Instrument, self).__init__()
self._field_names = field_names
self._model_storage = model_storage
self._original_model = original_model
self._instrumentation_cls = self._apply_instrumentation()
+ self._apply_to_downstream = apply_to_downstream
def __getattr__(self, item):
return_value = getattr(self._original_model, item)
- if isinstance(return_value, (list, dict)):
+ if self._apply_to_downstream and isinstance(return_value, (list, dict)):
+ if isinstance(return_value, self._original_model.__class__):
+ tracking_instance = return_value
+ else:
+ tracking_instance = self._original_model
return _Wrapper(self._original_model.__class__,
self._instrumentation_cls,
return_value,
- field_name=self._field_names,
- original_model=self._original_model,
+ field_names=self._field_names,
+ original_model=tracking_instance,
model_storage=self._model_storage,
)
return return_value
http://git-wip-us.apache.org/repos/asf/incubator-ariatosca/blob/e67a58fd/aria/orchestrator/context/operation.py
----------------------------------------------------------------------
diff --git a/aria/orchestrator/context/operation.py b/aria/orchestrator/context/operation.py
index 07ff3cb..86ed538 100644
--- a/aria/orchestrator/context/operation.py
+++ b/aria/orchestrator/context/operation.py
@@ -21,11 +21,7 @@ import threading
import aria
from aria.utils import file
-from aria.modeling import models
-from . import (
- common,
- collection_instrumentation
-)
+from . import common
class BaseOperationContext(common.BaseContext):
@@ -122,7 +118,7 @@ class NodeOperationContext(BaseOperationContext):
the node of the current operation
:return:
"""
- return self.instrument(self.node.node_template, 'attributes', 'properties')
+ return self.instrument(self.node.node_template, 'attributes')
@property
def node(self):
@@ -130,7 +126,7 @@ class NodeOperationContext(BaseOperationContext):
The node instance of the current operation
:return:
"""
- return self.instrument(self.model.node.get(self._actor_id), 'attributes', 'properties')
+ return self.instrument(self.model.node.get(self._actor_id), 'attributes')
class RelationshipOperationContext(BaseOperationContext):