[openstack-dev] [Heat] Comments on Steve Baker's Proposal on HOT Software Config
Steven Hardy
shardy at redhat.com
Tue Oct 29 07:23:14 UTC 2013
On Mon, Oct 28, 2013 at 02:34:44PM -0700, Georgy Okrokvertskhov wrote:
> I believe we had a discussion about difference between declarative approach
> and workflows. A component approach is consistent with declarative format
> as all actions\operations are hidden inside the service. If you want to use
> actions and operations explicitly you will have to add a workflows specific
> language to HOT format. You will need to have some conditions and other
> control structures.
Please don't confuse the component/resource discussion further by adding
all these unrelated terms into the mix:
- Resources are declarative, components aren't in any way more declarative
- The resource/component discussion is unrelated to workflows, we're
discussing the template level interfaces.
- Adding imperative control-flow interfaces to the template is the opposite
of a declarative approach
> I also want to highlight that in most of examples on wiki pages there are
> actions instead of components. Just check names: install_mysql,
> configure_app.
Having descriptions of the actions required to do configure an application
is not declarative. Having a resource define the properties of the
application is.
> I think you revealed the major difference between resource and component.
> While the first has a fixed API and Heat already knows how to work with it,
A resource doesn't have a fixed API as such - it has flexible, user-definable
interfaces (inputs/properties and outputs/attributes)
> components are not determined and Heat does not know what this component
> actually does.
Heat doesn't need to know what a resource or component actually does, it
needs to know what do do with the inputs/properties, and how to obtain the
outputs/attributes.
> I remember the first draft for Software components and it
> had a specific examples for yum invocation for package installation. This
> is a good example of declarative component. When scripts and recipes
> appeared a component definition was blurred.
This makes no sense, scripts defining platform specific installation
methods are the exact opposite of a declarative component.
The blurred component definition you refer to is a very good reason not to
add a new abstraction IMO - we should focus on adding the functionality via
the existing, well understood interfaces.
Steve
More information about the OpenStack-dev
mailing list