I'm not sure I've followed why a policy would be necessary.

I too agree with the notion that picking a substituting service template
explicitly is against the spirit of this feature, for the reasons Avia has
explained.
If a specific template is needed, why not import it directly, or require a
more specific capability offered by the substituting service template?


On Thu, Aug 31, 2017 at 7:09 PM, Tal Liron <t...@cloudify.co> wrote:

> Regarding #1, I agree with Avia here. Substitution mapping is intended as
> an extension of requirements-matching-capabilities. As you know, a
> requirement can be as minimal as just specifying a capability type, but
> could optionally additionally specify a node and even include a node filter
> with more constraints. Unfortunately the substitution mapping grammar is
> still not very sophisticated in TOSCA 1.0, and while you can require a
> node, you can't specifically require it to be a substituted service
> template. That's why I'm thinking we may need to introduce a policy to fill
> in this gap for now. But indeed, if there is no such policy, available
> service templates could be tried arbitrarily one at a time until one
> satisfies the requirement (as Avia points out, this would require the
> composite service to be *entirely* successfully satisfied).
>
> On Thu, Aug 31, 2017 at 10:23 AM, Avia Efrat <a...@cloudify.co> wrote:
>
> > 1) Substitutable nodes (abstract nodes) are defined by their type. And a
> > node type should represent specific node/subsystem characteristics.
> Having
> > two node types ( with the same name) that represent different logical
> > entities seems odd, and indicates a possible bug in the design. That is
> > another reason why using so-called namespaces while creating type
> > hierarchies is a good practice.
> >
> > You could argue that if you have multiple sources for templates (e.g.
> your
> > own storage and a external catalog), there could be unexpected name
> > collisions of node types names. Having said that, we need to remember the
> > entire process of the substitution mapping.
> >
> > First, as you said, we are trying to locate a service template that has a
> > substitution mapping definition of the same type of the abstract node in
> > the top level template. But choosing the service template is only the
> first
> > step. The second step is instantiating the top level template along with
> > the substitution template. During the instantiation, requirements and
> > capabilities are matched. If not all requirements are satisfied
> > (considering both top level and substituting template), the substitution
> > mapping is not considered successful, and the instantiation fails.
> >
> > If that is the case, it makes sense to go ahead and try the next
> > substitution template that fits the type, and continue like so until we
> > find a substitution where all the requirements are satisfied during
> > instantiation.
> >
> > At this point you may be wondering, "what if the instantiation was
> > successful, but the source of the substitution template wasn't the one
> that
> > *I* wanted?". Well, You have to think about this issue in substitution
> > mapping terms. that is, when you use an abstract node, actually what you
> > are saying is "I want something of type t, the has the capabilities c,
> and
> > requires r. regarding the internals, I don't care, I just want it to
> work".
> > So actually, selecting a specific substituting template (as long as the
> > type, the requirements and the capabilities are as expected, of course),
> is
> > somewhat against the spirit of the substitution mapping feature.
> >
> > 2) I'm sorry, but I didn't get to the bottom of your question. Could you
> > elaborate a bit more, and include a small example?
> >
> >
> >
> >
> > On Thu, Aug 31, 2017 at 11:35 AM, D Jayachandran <
> > d.jayachand...@ericsson.com> wrote:
> >
> > > Hi,
> > >
> > > With respect to substituting stored service templates, I have few
> things
> > > to be clarified
> > >
> > > 1) Handling substitution when multiple service templates matches for
> the
> > > abstract node type .
> > >         Would the 1st match would be used for substitution  or Are we
> > > looking at policy to enable user to select particular service templates
> > for
> > > substitution with multiple service templates ?
> > > 2) Custom node types as abstract node type.
> > >         With custom node types as abstract node type, there seems to
> be a
> > > need to implicitly import that custom node type in our top level
> service
> > > template so that the parser recognizes this custom type.
> > >         Assuming the abstract node type would be substituted from a
> > stored
> > > substituting service template, we need to at least import the custom
> node
> > > types and have it part of the same CSAR package.
> > >         Would this be a challenge for the top-level service template
> > > author in including and importing the custom node types as abstraction
> ?
> > or
> > > Is this how we are looking at custom node types ?
> > >         Is it possible to identify an abstract node during parsing ,
> such
> > > as if it does not contain any implementation ( The SPEC does not say
> > > anything on this )?
> > >
> > > Regards,
> > > DJ
> > > -----Original Message-----
> > > From: Ran Ziv [mailto:r...@cloudify.co]
> > > Sent: Wednesday, August 16, 2017 6:19 PM
> > > To: dev@ariatosca.incubator.apache.org
> > > Subject: Re: Service Composition / Substitution Mapping
> > >
> > > I agree, especially when the benefit of being able to use an existing
> > > service - yet only one which hasn't been deployed via a workflow -
> > doesn't
> > > seem all that interesting IMO.
> > >
> > > Another concern I could add to the ones you've mentioned is the
> service's
> > > inputs - the substituting template's inputs should be received via the
> > > properties of the abstract node in the top level service template. If
> the
> > > service already exists, these inputs would not be passed as expected.
> > >
> > > Ran
> > >
> > > On Wed, Aug 16, 2017 at 3:25 PM, D Jayachandran <
> > > d.jayachand...@ericsson.com
> > > > wrote:
> > >
> > > > Hi Ran,
> > > >
> > > > When Tal mentioned about "substituting service", I thought it was
> > > > about the services which dint have any associated
> executions/workflows
> > > triggered.
> > > > Am also in favor of  "substituting service templates" rather than
> > > > "substituting service".
> > > > With "substituting service" approach (when the service is not
> > > > instantiated), I see some open points
> > > >         - In a multi-user scenario, what will happen when a service
> is
> > > > composed using the substituting service and at the sametime a
> > > > workflow is triggered for the substituting service. ?
> > > >         - Is it okay to delete(dissolve) the substituting service
> > > > after it is used to create the composed service. ?
> > > >
> > > > Starting with it might be a good idea to only have "substituting
> > > > service templates" approach.
> > > >
> > > > Regards,
> > > > DJ
> > > > -----Original Message-----
> > > > From: Ran Ziv [mailto:r...@cloudify.co]
> > > > Sent: Wednesday, August 16, 2017 4:29 PM
> > > > To: dev@ariatosca.incubator.apache.org
> > > > Subject: Re: Service Composition / Substitution Mapping
> > > >
> > > > I'd say right now we're looking at "static service composition" which
> > > > is only about "substituting service templates", not "substituting
> > > > service". If a service is already running, it will not be used.
> > > >
> > > > I think what Tal meant was that each service template - whether the
> > > > top level one or one of the substituting templates - needs to resolve
> > > > its inner reqs&caps internally first, and then resolve substitution
> > > > reqs&caps across service templates.
> > > >
> > > >
> > > > On Wed, Aug 16, 2017 at 12:00 PM, D Jayachandran <
> > > > d.jayachand...@ericsson.com> wrote:
> > > >
> > > > > Hi Tal,
> > > > >
> > > > > Thanks for organizing the points.
> > > > > So if I understand correctly we are looking only at "Static service
> > > > > composition" which includes "substituting service template" and
> > > > > "substituting service".
> > > > >
> > > > > As you said with "substituting service template" approach ,we will
> > > > > have all the nodes aggregated from other service templates and a
> > > > > single workflow would be triggered to perform life-cycle operation
> > > > > on
> > > > all the nodes.
> > > > > Am not sure why the workflows needs to be "boundary aware" for
> nodes
> > > > > being substituted ? I see nodes are already part of the composed
> > > > > service, Could you please help me understand this ?
> > > > >
> > > > >
> > > > > Regards,
> > > > > DJ
> > > > > -----Original Message-----
> > > > > From: Tal Liron [mailto:t...@cloudify.co]
> > > > > Sent: Saturday, August 12, 2017 4:52 AM
> > > > > To: dev@ariatosca.incubator.apache.org
> > > > > Subject: Re: Service Composition / Substitution Mapping
> > > > >
> > > > > You are correct -- to participate in this "multi-VIM" scenario, the
> > > > > Openstack plugin would have to know how to translate the TOSCA
> > > > > properties to a flavor ID. This could all be done in 100% TOSCA via
> > > > > policies (say, an aria.Openstack).
> > > > >
> > > > > Doing this automatically might not be a good idea, or even
> necessary.
> > > > > Worst case is you get a validation error if the ARIA plugin can't
> > > > > find a flavor in the table to match your requirements, in which you
> > > > > case you can go and manually find the right ID and add it to the
> > table.
> > > > >
> > > > > And I agree about being fine with imperfection: the rule of thumb
> > > > > for our work is always to allow for sensible defaults even if no
> > > > > explicit policy is given.
> > > > >
> > > > > Anyway, we've gone way off the topic of this thread. We can talk
> > > > > about it more once it comes closer to an implementation.
> > > > >
> > > > > On Fri, Aug 11, 2017 at 3:52 PM, DeWayne Filppi
> > > > > <dewa...@cloudify.co>
> > > > > wrote:
> > > > >
> > > > > > Interesting.  Take Openstack (please <rim shot>).  If you model a
> > > > > > compute OS as explicitly as you like, there still has to be a
> > "match"
> > > > > > to an Openstack image ID.  Or are you saying you must supply the
> > > > > > image
> > > > > ID for
> > > > > > OSs.   Likewise, you can't supply RAM and CPUs without a flavor
> ID.
> > > > > > Openstack does allow for custom flavors, but I doubt the plugin
> is
> > > > > > doing that.  Much better to have a "caps-init" interface in some
> > > > > > low down base type that can be triggered at service creation to
> > > > > > support reqs/caps (IMHO).  Then the plugin can verify whether the
> > > > > > service can be construct based on fuzzy constraints.  Maybe this
> > > > > > is a case that the "general solution" is a nightmare of
> > > > > > complexity, but having a plugin scan the available flavors to
> make
> > > > > > sure a requirement can be met doesn't seem that tough.  If TOSCA
> > > > > > provided a formal lifecycle interface for it, then orchestrators
> > > > > > or just plugins could determine how tricky they wanted to be.
> > > > > > IOW, let not the perfect be the enemy of
> > > > > the good.
> > > > > >
> > > > > > DeWayne
> > > > > >
> > > > > >
> > > > > > On Fri, Aug 11, 2017 at 1:26 PM, Tal Liron <t...@cloudify.co>
> > wrote:
> > > > > >
> > > > > > > OK, that's a whole different can of worms. :)
> > > > > > >
> > > > > > > TOSCA's Compute capabilities (Container and OperatingSystem)
> are
> > > > > > explicit.
> > > > > > > You specify which OS you want, how much RAM you want, how many
> > > > > > > CPUs,
> > > > > etc.
> > > > > > > ARIA's explicit node types (for example, the AWS Compute node)
> > > > > > > are
> > > > > > likewise
> > > > > > > explicit. So there is not querying here: the plugin will
> attempt
> > > > > > > to spin
> > > > > > up
> > > > > > > exactly the virtual machine you asked for. If it fails, the
> > > > > > > workflow will fail.
> > > > > > >
> > > > > > > This is not good enough, I think, for real world scenarios.
> > > > > > > There are two possible solutions:
> > > > > > >
> > > > > > > 1) Support ranges or fallbacks. So instead of saying "I need 4
> > > > > > > GB of
> > > > > RAM"
> > > > > > > you can say "I would like 4 GB of RAM, but 2 GB would also be
> > OK."
> > > > > > There's
> > > > > > > no easy way to do this now without totally changing how the
> > > > > > > capability types are designed. But, it may be possible to
> > > > > > > override this via
> > > > > > policies.
> > > > > > > So, the capabilities would perhaps specify the minimal
> > > > > > > requirements,
> > > > > > while
> > > > > > > policies specify preferences. Some aspects of this were
> > > > > > > discussed in the OPEN-O project. DeWayne, has any of this
> > > > > > > survived in ONAP, or have we not reached that point in the
> > > discussion yet?
> > > > > > >
> > > > > > > 2) Incorporate this into the bigger topic of resource
> > > orchestration.
> > > > > > This a
> > > > > > > huge challenge for the industry. The problem field contains not
> > > > > > > just "I need X amount of RAM" but also "I want all my virtual
> > > > > > > machines and containers running on the same high-performance
> > > > > > > network backend and have these two nodes on the same bare-metal
> > > > > > > machine or at least in the same
> > > > > > data
> > > > > > > center rack with a NUMA interconnect, and I also don't want all
> > > > > > > this to cost more that $100 per hour." That's not crazy: these
> > > > > > > are real world requirements for high-performance VNFs and
> > > > > > > service
> > > > chaining.
> > > > > > > Resource orchestration requires a full map of what is available
> > > > > > > in the data
> > > > > > centers,
> > > > > > > a negotiation-based algorithm for properly allocating and
> > > > > > > placing resources, connection to billing services, etc. Of
> > > > > > > course resource orchestration is not within the scope of ARIA,
> > > > > > > but it would be great for ARIA to have plugins for them (and
> > > > > > > TOSCA be able to model resource requirement policies) when
> these
> > > become available.
> > > > > > >
> > > > > > >
> > > > > > >
> > > > > > > On Fri, Aug 11, 2017 at 3:02 PM, DeWayne Filppi
> > > > > > > <dewa...@cloudify.co>
> > > > > > > wrote:
> > > > > > >
> > > > > > > > For the "resource realization" part, I was not even
> considering
> > > > > > > > multicloud/vim.   I was considering single cloud even outside
> > of
> > > > > > > > composition.  Just reqs and caps.  If my node "requires" a
> > > > > > > > compute node with Suse Linux version X with a minimum of 4GB
> > > > > > > > RAM, how does
> > > > > the
> > > > > > > > orchestrator match that without querying the cloud via the
> > > plugin?
> > > > >  If
> > > > > > > it
> > > > > > > > does query it, which it seems it must in addition to the
> > > > > > > > implicit quota query, how is this done?  TOSCA seems to not
> > > > > > > > really care, which is fine
> > > > > > > and
> > > > > > > > perhaps a good idea.  But ARIA has to care.
> > > > > > > >
> > > > > > > > DeWayne
> > > > > > > >
> > > > > > > > On Fri, Aug 11, 2017 at 12:34 PM, Tal Liron <t...@cloudify.co
> >
> > > > wrote:
> > > > > > > >
> > > > > > > > > In my opinion, the new composite service should indeed be a
> > > > > > > > > single
> > > > > > > > service,
> > > > > > > > > so the ARIA CLI will show it as one (if a substituting
> > > > > > > > > service
> > > > > > already
> > > > > > > > > existed, it would be "dissolved" into the new top-level
> > > > > > > > > service). The composition will show its traces if you look
> > > > > > > > > more deeply, because
> > > > > > > you'll
> > > > > > > > > see that some node templates come from a different service
> > > > > template.
> > > > > > > > > Perhaps our CLI can detect this and tell the user which
> > > > > > > > > service
> > > > > > > templates
> > > > > > > > > were used to create the nodes in current service.
> > > > > > > > >
> > > > > > > > > The rest of what you described I think is not related
> > > > > > > > > directly to
> > > > > > > service
> > > > > > > > > composition, but resource realization. The way we currently
> > > > > > > > > handle
> > > > > > this
> > > > > > > > is
> > > > > > > > > by being very explicit: you have to use the derived Compute
> > > > > > > > > types
> > > > > > > > included
> > > > > > > > > in our AWS or Openstack plugins, for example.
> > > > > > > > >
> > > > > > > > > I think we should still keep this, because sometimes you
> > > > > > > > > want to be
> > > > > > > very
> > > > > > > > > explicit (and use specific features of the platform), but I
> > > > > > > > > actually
> > > > > > > have
> > > > > > > > > some ideas for multi-VIM support that would work
> differently:
> > > > > > > > > the
> > > > > > idea
> > > > > > > is
> > > > > > > > > to use the basic Compute type, with detailed properties in
> > > > > > > > > its
> > > > > > > Container
> > > > > > > > > and OperatingSystem capabilities. There would then be a
> > > > > > > > > policy,
> > > > > > perhaps
> > > > > > > > > aria.Realization, that would hint at what kind of Compute
> > > > > > > > > nodes you
> > > > > > are
> > > > > > > > > looking for (you can apply the policy to specific nodes or
> > > > > > > > > groups, or generally). It might be possible to still have
> > > > > > > > > strong
> > > > > > platform-specific
> > > > > > > > > feature support here, perhaps by implementing a general
> > > > > > > > > string
> > > > > > > key-value
> > > > > > > > > dict that could include hints for the specific plugin to
> use.
> > > > > > > > >
> > > > > > > > > Anyway, just ideas at this point...
> > > > > > > > >
> > > > > > > > >
> > > > > > > > > On Fri, Aug 11, 2017 at 2:25 PM, DeWayne Filppi
> > > > > > > > > <dewa...@cloudify.co
> > > > > > >
> > > > > > > > > wrote:
> > > > > > > > >
> > > > > > > > > > Good stuff.  Obviously a "fancy include" was the wrong
> > > > metaphor.
> > > > > > The
> > > > > > > > > > lifecycles are linked though.  When a create the
> > > > > > > > > > referencing
> > > > > > service
> > > > > > > > > (aria
> > > > > > > > > > service create), ARIA will match the other service
> > > > > > > > > > template, and
> > > > > > run
> > > > > > > > > create
> > > > > > > > > > service on it, and then continue on.  Uninstall of the
> > > > > > > > > > referencer
> > > > > > > will
> > > > > > > > > > destroy the referenced service.  After such an
> > > > > > > > > > instantiation, would
> > > > > > > > > listing
> > > > > > > > > > all services produce two (perhaps with some parent
> > > > > > > > > > indicator) or
> > > > > > one?
> > > > > > > > > From
> > > > > > > > > > what I've seen, reqs and caps don't have the equivalent
> of
> > > > > > > > > > a
> > > > > > > lifecycle
> > > > > > > > > > interface associated.  Maybe I missed it.  It is implicit
> > > > > > > > > > in the orchestrator to match stuff up at service creation
> > > > > > > > > > time, I'm
> > > > > > > assuming,
> > > > > > > > > and
> > > > > > > > > > using plugins somehow?  The sort of flagship scenario is
> > > > > > > > > > matching
> > > > > > > cloud
> > > > > > > > > > compute resources without specifying an image.  Since
> > > > > > > > > > discovering
> > > > > > > > > whether a
> > > > > > > > > > particular cloud has a given capability, I guessing a
> > > > > > > > > > plugin for
> > > > > > that
> > > > > > > > > cloud
> > > > > > > > > > has to search cloud inventory and perhaps quota to
> provide
> > > > > > > > > > info for
> > > > > > > the
> > > > > > > > > > match.  Since plugins (at least the Cloudify variety)
> tend
> > > > > > > > > > to be
> > > > > > > > > triggered
> > > > > > > > > > due to operations that they connect to lifecycle methods,
> > > > > > > > > > and there
> > > > > > > is
> > > > > > > > no
> > > > > > > > > > "materialize_capabilities" interface that I noticed, some
> > > > > > > > > > other
> > > > > > kind
> > > > > > > of
> > > > > > > > > > magic must be performed.  Maybe this is an
> > > > > > > > > > orchestrator-specific
> > > > > > > detail
> > > > > > > > > > outside of TOSCA.
> > > > > > > > > >
> > > > > > > > > > DeWayne
> > > > > > > > > >
> > > > > > > > > > On Fri, Aug 11, 2017 at 10:57 AM, Tal Liron
> > > > > > > > > > <t...@cloudify.co>
> > > > > > wrote:
> > > > > > > > > >
> > > > > > > > > > > OK, let me try to organize this differently. Three
> > > > > > > > > > > potential
> > > > > > > > > conceptions
> > > > > > > > > > > here:
> > > > > > > > > > >
> > > > > > > > > > > 1) A "fancy include," as you say. All that would happen
> > > > > > > > > > > here is
> > > > > > > that
> > > > > > > > > the
> > > > > > > > > > > TOSCA parser would automatically find the service
> > > > > > > > > > > template to
> > > > > > > include
> > > > > > > > > > from
> > > > > > > > > > > some kind of repository of recognized service
> templates,
> > > > > > > > > > > and just
> > > > > > > > > include
> > > > > > > > > > > that. The language in the TOSCA spec suggests that this
> > > > > > > > > > > is not
> > > > > > the
> > > > > > > > > > > intention: it is something that happens at the
> > > > "orchestrator,"
> > > > > > not
> > > > > > > > the
> > > > > > > > > > > "parser."
> > > > > > > > > > >
> > > > > > > > > > > 2) Static service composition. This happens not at the
> > > > > > > > > > > parsing
> > > > > > > stage,
> > > > > > > > > but
> > > > > > > > > > > rather the instantiation stage, where reqs-and-caps
> > > happens.
> > > > > > > > > > > I
> > > > > > > think
> > > > > > > > > this
> > > > > > > > > > > is what is intended: substitution mapping is
> > > > > > > > > > > specifically about
> > > > > > > > mapping
> > > > > > > > > > > reqs-and-caps. And this is also where things like
> > > > > > > > > > > scalability and
> > > > > > > > > > placement
> > > > > > > > > > > happen: think of a requirement matching a capability,
> > > > > > > > > > > but that
> > > > > > > > > capability
> > > > > > > > > > > not having enough capacity. So, the node might be able
> > > > > > > > > > > to scale
> > > > > > > out:
> > > > > > > > in
> > > > > > > > > > the
> > > > > > > > > > > case of substitution, this would mean duplicating an
> > > > > > > > > > > entire
> > > > > > service
> > > > > > > > > > > instance. My understanding is that this is what is
> > > > > > > > > > > intended by
> > > > > > > TOSCA,
> > > > > > > > > and
> > > > > > > > > > > it's entirely within the scope of what we can do. We've
> > > > > > > > > > > recently
> > > > > > > just
> > > > > > > > > > > refactored the instantiation phase into a new
> "topology"
> > > > > > > > > > > module
> > > > > > > where
> > > > > > > > > > > exactly all this logic is concentrated. So think of it
> > > > > > > > > > > this way
> > > > > > --
> > > > > > > > ARIA
> > > > > > > > > > has
> > > > > > > > > > > three parts: "parser," "topology manager," and
> "workflow
> > > > > engine"
> > > > > > > > > > > ("orchestrator").
> > > > > > > > > > >
> > > > > > > > > > > (I think I might have confused some thing here a bit
> > > > > > > > > > > when
> > > > > > > mentioning
> > > > > > > > a
> > > > > > > > > > > "logical proxy node." I do not mean an actual piece of
> > > > > > > > > > > proxy
> > > > > > > software
> > > > > > > > > > > running on a machine somewhere. I mean just a data
> point
> > > > > > > > > > > in the ARIA-generated topology that can be used as a
> > > > > > > > > > > barrier of sorts
> > > > > > when
> > > > > > > > > > > constructing the task graph -- because the task graph
> > > > > > > > > > > follows relationships, the edges of the topology. It
> > > > > > > > > > > could be that we
> > > > > > > > discover
> > > > > > > > > in
> > > > > > > > > > > our POC that this is not needed, because actually the
> > > > > > substitution
> > > > > > > > node
> > > > > > > > > > is
> > > > > > > > > > > already part of our topology data model and we might be
> > > > > > > > > > > able to
> > > > > > > > easily
> > > > > > > > > > take
> > > > > > > > > > > that into account when generating the task graph.)
> > > > > > > > > > >
> > > > > > > > > > > 3) Live service composition. I think this is a fantasy
> > > > > > > > > > > of some
> > > > > > > > people:
> > > > > > > > > > that
> > > > > > > > > > > ARIA would be able to take existing, "running" service
> > > > > > > > > > > chains and
> > > > > > > run
> > > > > > > > > > > workflows with them. I do think this is a solvable
> > > > > > > > > > > problem, but
> > > > > > not
> > > > > > > > via
> > > > > > > > > > > substitution mapping per se. A solution could involve
> > > > > > > > > > > deployment
> > > > > > > of a
> > > > > > > > > > proxy
> > > > > > > > > > > service (which could actually be encapsulated in a
> > > > > > > > > > > substitution
> > > > > > > > > mapping,
> > > > > > > > > > > but doesn't have to be), or configuring specialized
> > > > > > > > > > > virtual ports
> > > > > > > via
> > > > > > > > > an
> > > > > > > > > > > SDN controller, or via logical proxy nodes created via
> > > > > > > > > > > an
> > > > > > > inspection
> > > > > > > > > > tool,
> > > > > > > > > > > etc. I cannot believe that there is a one-size-fits-all
> > > > > > > > > > > solution
> > > > > > to
> > > > > > > > > this
> > > > > > > > > > > problem. The dream of NFV might be to have everything
> > > > > > > > > > > connect to
> > > > > > > each
> > > > > > > > > > other
> > > > > > > > > > > like LEGO blocks, but there are far too many protocols,
> > > > > > > > configuration,
> > > > > > > > > > and
> > > > > > > > > > > security standards. I think point #2, what I called
> > > > > > > > > > > "static
> > > > > > service
> > > > > > > > > > > composition," is a realistic compromise and within the
> > > > > > > > > > > scope of
> > > > > > > what
> > > > > > > > > > TOSCA
> > > > > > > > > > > promises.
> > > > > > > > > > >
> > > > > > > > > > >
> > > > > > > > > > > On Fri, Aug 11, 2017 at 12:08 PM, DeWayne Filppi <
> > > > > > > > dewa...@cloudify.co>
> > > > > > > > > > > wrote:
> > > > > > > > > > >
> > > > > > > > > > > > To my eyes, the spec doesn't speak of runtime service
> > > > > > > substituion,
> > > > > > > > > but
> > > > > > > > > > > > parsetime template composition.  IOW, substitution
> > > > > > > > > > > > mapping is a
> > > > > > > > fancy
> > > > > > > > > > > > "include", or the equivalent of an interface
> > definition.
> > > > > > > > > > > > Is it
> > > > > > > > > > > understood
> > > > > > > > > > > > by the ARIA team that this includes proxying of
> > > > > > > > > > > > running
> > > > > > services?
> > > > > > > > > IOW,
> > > > > > > > > > > if
> > > > > > > > > > > > my template requires a database service that my
> > > > > > > > > > > > template does
> > > > > > > *not*
> > > > > > > > > > want
> > > > > > > > > > > to
> > > > > > > > > > > > control the lifecycle of, I can "substitution map" an
> > > > > > > > > > > > instance
> > > > > > > of a
> > > > > > > > > > > > template (i.e. a running service)?  This would be a
> > > > > > > > > > > > lovely
> > > > > > > feature,
> > > > > > > > > but
> > > > > > > > > > > > it's not really a "substitution map", rather more of
> a
> > > > > > > > > > > > "service
> > > > > > > > > proxy"
> > > > > > > > > > > (as
> > > > > > > > > > > > implemented as a plugin in Cloudify).   Just trying
> to
> > > > > clarify.
> > > > > > > > > Maybe
> > > > > > > > > > > the
> > > > > > > > > > > > community thinks that "substitution map" as something
> > > > > > > > > > > > that
> > > > > > occurs
> > > > > > > > > > beyond
> > > > > > > > > > > > parsetime, or should.
> > > > > > > > > > > >
> > > > > > > > > > > > On Fri, Aug 11, 2017 at 9:52 AM, Tal Liron
> > > > > > > > > > > > <t...@cloudify.co>
> > > > > > > > wrote:
> > > > > > > > > > > >
> > > > > > > > > > > > > Well, DJ, it's all just opinion at this stage and
> > > > > > > > > > > > > feedback is
> > > > > > > > > > welcome!
> > > > > > > > > > > > >
> > > > > > > > > > > > > Option 1:
> > > > > > > > > > > > > >         To look at satisfying nodes present in a
> > > > > > substituting
> > > > > > > > > > > service,
> > > > > > > > > > > > > > Have these nodes part of the newly created
> service
> > > > > > > > > > > > > > and
> > > > > > remove
> > > > > > > > the
> > > > > > > > > > > > > > substituting service(nodes with different ID's.
> > > > > > > > > > > > > > Also we are
> > > > > > > > very
> > > > > > > > > > much
> > > > > > > > > > > > in
> > > > > > > > > > > > > > favor of      UUID )
> > > > > > > > > > > > > >         With this approach I guess the
> > > > > > > > > > > > > > substituting service
> > > > > > > > > should
> > > > > > > > > > > not
> > > > > > > > > > > > > > have any associated workflows running. If at all
> > > > > > > > > > > > > > an
> > > > > > workflow
> > > > > > > > > > > execution
> > > > > > > > > > > > is
> > > > > > > > > > > > > > already triggered I hope this service will not be
> > > > > > considered
> > > > > > > > for
> > > > > > > > > > > > > > substitution.
> > > > > > > > > > > > > >         I hope this is the correct approach when
> > > > > > > > > > > > > > we are
> > > > > > > looking
> > > > > > > > > at
> > > > > > > > > > a
> > > > > > > > > > > > > > service for the substitution
> > > > > > > > > > > > > >
> > > > > > > > > > > > >
> > > > > > > > > > > > > Yes, this is a good idea. It would be easy to
> > > > > > > > > > > > > discover this
> > > > > > > > > according
> > > > > > > > > > > to
> > > > > > > > > > > > > the stored node state -- just make sure that all
> > > > > > > > > > > > > nodes are
> > > > > > in a
> > > > > > > > > > stable
> > > > > > > > > > > > > state before composition.
> > > > > > > > > > > > >
> > > > > > > > > > > > > This leads to a general issue: before composition,
> > > > > > > > > > > > > the
> > > > > > > > substituting
> > > > > > > > > > > > > services must be validated in some way before
> > > > > > > > > > > > > composition
> > > > > > > begins.
> > > > > > > > > > > > >
> > > > > > > > > > > > > Also, let's all start using TOSCA terminology here:
> > > > > > > > > > > > > the
> > > > > > > > containing
> > > > > > > > > > > > service
> > > > > > > > > > > > > is called the "top-level service," and the
> contained
> > > > > > > > > > > > > services
> > > > > > > are
> > > > > > > > > > > called
> > > > > > > > > > > > > "substituting services."
> > > > > > > > > > > > >
> > > > > > > > > > > > > Also, we keep using trivial examples, but it's
> > > > > > > > > > > > > definitely
> > > > > > > > possible
> > > > > > > > > > for
> > > > > > > > > > > a
> > > > > > > > > > > > > top-level service to require several substituting
> > > > > > > > > > > > > services at
> > > > > > > the
> > > > > > > > > > same
> > > > > > > > > > > > > time. I can definitely see such things happening in
> > > > > > > > > > > > > NFV with
> > > > > > > even
> > > > > > > > > > > simple
> > > > > > > > > > > > > service chains. Basically every VNF could be a
> > > > > > > > > > > > > substituting
> > > > > > > > > service.
> > > > > > > > > > > > >
> > > > > > > > > > > > > So, actually one of the validations would be to
> make
> > > > > > > > > > > > > sure you
> > > > > > > do
> > > > > > > > > not
> > > > > > > > > > > > create
> > > > > > > > > > > > > circular composition: if the top-level also has
> > > > > > > > > > > > > substitution
> > > > > > > > > > mappings,
> > > > > > > > > > > > you
> > > > > > > > > > > > > need to make sure that one of the substituting ones
> > > > > > > > > > > > > doesn't
> > > > > > > > require
> > > > > > > > > > it.
> > > > > > > > > > > > :)
> > > > > > > > > > > > > Not a very likely situation, but it would lead to
> > > > failure.
> > > > > > > > > > > > >
> > > > > > > > > > > > >
> > > > > > > > > > > > >
> > > > > > > > > > > > > > Option 2:
> > > > > > > > > > > > > >         While creating a service look at the
> > > > > > > > > > > > > > req-caps at
> > > > > > the
> > > > > > > > > > > > > > service-template level and create a service
> > > > > > > > > > > > > > including the
> > > > > > > nodes
> > > > > > > > > > > > provided
> > > > > > > > > > > > > by
> > > > > > > > > > > > > > the substituting service-template. With this
> > > > > > > > > > > > > > approach there
> > > > > > > > would
> > > > > > > > > > not
> > > > > > > > > > > > be
> > > > > > > > > > > > > > any   service created from the service-template
> > which
> > > > is
> > > > > > > > > providing
> > > > > > > > > > > the
> > > > > > > > > > > > > > substitution functionality. The service-template
> > > > > > > > > > > > > > would
> > > > > > remain
> > > > > > > > the
> > > > > > > > > > > same
> > > > > > > > > > > > > but
> > > > > > > > > > > > > > only the service would be added with extra nodes.
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > Are you considering both option 1 & 2 for the
> > > > > > implementation
> > > > > > > ?
> > > > > > > > If
> > > > > > > > > > not
> > > > > > > > > > > > > > which one do you feel which take priority. I see
> > > > > > > > > > > > > > option 2
> > > > > > at
> > > > > > > > this
> > > > > > > > > > > stage
> > > > > > > > > > > > > > could be the best possible approach Also could
> you
> > > > > > > > > > > > > > please let me know a tentative time for this
> > > > > > > > > feature
> > > > > > > > > > > to
> > > > > > > > > > > > be
> > > > > > > > > > > > > > available?
> > > > > > > > > > > > > >
> > > > > > > > > > > > >
> > > > > > > > > > > > > I think both options 1 and 2 make sense and are
> > > > > > > > > > > > > useful, and
> > > > > > > > > actually
> > > > > > > > > > > one
> > > > > > > > > > > > is
> > > > > > > > > > > > > a subset of the other.
> > > > > > > > > > > > >
> > > > > > > > > > > > > With option #2 (substituting a service template),
> it
> > > > > > > > > > > > > means
> > > > > > new
> > > > > > > > > nodes
> > > > > > > > > > > are
> > > > > > > > > > > > > instantiated and the composed service would include
> > > > > > > > > > > > > all
> > > > > > nodes.
> > > > > > > > So,
> > > > > > > > > an
> > > > > > > > > > > > > "install" workflow would install everything at
> once.
> > > > > > > > > > > > > In this
> > > > > > > case
> > > > > > > > > we
> > > > > > > > > > do
> > > > > > > > > > > > > need to fix the lifecycle workflows to be "boundary
> > > > aware,"
> > > > > > so
> > > > > > > > that
> > > > > > > > > > > > > workflows of substituting service nodes are part of
> > > > > > > > > > > > > their own
> > > > > > > > task
> > > > > > > > > > > > graph. I
> > > > > > > > > > > > > think that possibly using a logical proxy node in
> > > > > > > > > > > > > between
> > > > > > might
> > > > > > > > > solve
> > > > > > > > > > > > this
> > > > > > > > > > > > > situation automatically.
> > > > > > > > > > > > >
> > > > > > > > > > > > > With option #1 (substituting a service) the
> > > > > > > > > > > > > substituting
> > > > > > nodes
> > > > > > > > > might
> > > > > > > > > > > > > already be installed. Or not (they might have been
> > > > > > instantiated
> > > > > > > > but
> > > > > > > > > > > still
> > > > > > > > > > > > > not installed). So, the lifecycle workflows should
> > > > > > > > > > > > > only work
> > > > > > on
> > > > > > > > the
> > > > > > > > > > > nodes
> > > > > > > > > > > > > that have not yet been installed.
> > > > > > > > > > > > >
> > > > > > > > > > > > > The point is that we just need to beef up the
> > > > > > > > > > > > > lifecycle
> > > > > > > workflows
> > > > > > > > > to
> > > > > > > > > > > > > properly work with boundaries and with a mix of
> > > > > > > > > > > > > nodes in
> > > > > > > > different
> > > > > > > > > > > > states.
> > > > > > > > > > > > > If they can do that, then they can handle any kind
> > > > > > > > > > > > > of service
> > > > > > > > > > > > composition,
> > > > > > > > > > > > > whether it's option #1 or option #2.
> > > > > > > > > > > > >
> > > > > > > > > > > > > I don't think we can provide a timeline yet, but I
> > > > > > > > > > > > > will say
> > > > > > > that
> > > > > > > > we
> > > > > > > > > > are
> > > > > > > > > > > > in
> > > > > > > > > > > > > the research phase and may have a POC soon. Avia is
> > > > > > > > > > > > > in charge
> > > > > > > of
> > > > > > > > > this
> > > > > > > > > > > > JIRA,
> > > > > > > > > > > > > so I will let him chime in with the current state
> of
> > > > > things.
> > > > > > > > > > > > >
> > > > > > > > > > > >
> > > > > > > > > > >
> > > > > > > > > >
> > > > > > > > >
> > > > > > > >
> > > > > > >
> > > > > >
> > > > >
> > > >
> > >
> >
>

Reply via email to