Github user ran-z commented on a diff in the pull request: https://github.com/apache/incubator-ariatosca/pull/138#discussion_r118293230 --- Diff: aria/modeling/service_instance.py --- @@ -1728,34 +1732,41 @@ def operation_template(cls): def inputs(cls): return relationship.many_to_many(cls, 'parameter', prefix='inputs', dict_key='name') + @declared_attr + def configuration(cls): + return relationship.many_to_many(cls, 'parameter', prefix='configuration', dict_key='name') + + @declared_attr + def arguments(cls): + return relationship.many_to_many(cls, 'parameter', prefix='arguments', dict_key='name') + # endregion description = Column(Text) relationship_edge = Column(Boolean) implementation = Column(Text) - configuration = Column(modeling_types.StrictDict(key_cls=basestring)) dependencies = Column(modeling_types.StrictList(item_cls=basestring)) + function = Column(Text) executor = Column(Text) max_attempts = Column(Integer) retry_interval = Column(Integer) def configure(self): - from . import models - # Note: for workflows (operations attached directly to the service) "interface" will be None - if (self.implementation is None) or (self.interface is None): + if (self.implementation is None) and (self.function is None): return - if self.plugin is None: - arguments = execution_plugin.instantiation.configure_operation(self) + if (self.plugin is None) and (self.interface is not None): + # Default to execution plugin ("interface" is None for workflow operations) + execution_plugin.instantiation.configure_operation(self) else: # In the future plugins may be able to add their own "configure_operation" hook that - # can validate the configuration and otherwise return specially derived arguments - arguments = self.configuration + # can validate the configuration and otherwise create specially derived arguments. For + # now, we just send all configuration parameters as arguments + utils.instantiate_dict(self, self.arguments, self.configuration) - # Note: the arguments will *override* operation inputs of the same name - if arguments: - for k, v in arguments.iteritems(): - self.inputs[k] = models.Parameter.wrap(k, v) --- End diff -- :+1:
--- If your project is set up for it, you can reply to this email and have your reply appear on GitHub as well. If your project does not have this feature enabled and wishes so, or if the feature is enabled but not working, please contact infrastructure at infrastruct...@apache.org or file a JIRA ticket with INFRA. ---