[openstack-dev] [TripleO] Should we have a TripleO API, or simply use Mistral?
james.slagle at gmail.com
Tue Jan 26 16:11:16 UTC 2016
On Tue, Jan 26, 2016 at 10:46 AM, Dan Prince <dprince at redhat.com> wrote:
> On Mon, 2016-01-25 at 15:08 -0500, James Slagle wrote:
> > On Mon, Jan 25, 2016 at 1:09 PM, Dan Prince <dprince at redhat.com>
> > wrote:
> > >
> > > As for tripleo-heat-templates... sure it hasn't been an entirely
> > > smooth
> > > ride. I think a lot of the pain has to do with a lack of CI
> > > coverage on
> > > proper upgrade paths upstream. I think this has less to do with the
> > > architecture (certainly not the fact that it uses YAML) and more to
> > > do
> > > with the fact that we may have cut corners, jammed a bunch of
> > > features
> > > in really fast, and don't have CI to cover proper upgrades jobs.
> > I think it has a lot less to do with that then it may appear on the
> > surface. Even if we had 100% functional test coverage of upgrade
> > paths, that does nothing to solve for scenarios where the templates
> > have been so heavily customized that stack updates can not be
> > guaranteed to work, or worse, destroy the cloud.
> > The most we could do in those scenarios is better detection around
> > what stack changes are going to be done by an update before anything
> > is actually applied. And if something is going to be destructive or
> > is not expected, we refuse to proceed. That would definitely help us
> > as developers to know if our own changes are breaking upgrades.
> > But, that doesn't really help the user get their cloud upgraded if
> > they've customized templates themselves, other than they know that
> > they must undo whatever custom changes they made, and if they made
> > those for valid reasons and can't undo, then they are stuck.
> > They've taken what may appear as a "feature" of the system --
> > customizing templates to add support for new things -- and turned it
> > into an anti-feature, now they can't upgrade without writing upgrade
> > support for whatever they added themself. Perhaps having to undo new
> > features we as TripleO developers added for users in the first place.
> > I don't think that's a supportable path for users of TripleO, nor
> > sustainable as a community, so editing templates should be advertised
> > as unsupported.
> > >
> > > The fact that projects like Heat, Mistral, and Ansible use YAML is
> > > to
> > > our advantage as developers. I think it allows us to work faster by
> > > avoiding rather large amounts of code to represent the same sorts
> > > of
> > > things. Please, lets not argue that by writing things in Python we
> > > deter end users from editing things we don't want them too. Instead
> > > let
> > > the choice be ours... not as Python developers... but as TripleO
> > > deployment developers who choose the write tools for the right
> > > jobs.
> > >
> > Agreed, we can't deter anyone from editing python anymore than we
> > could yaml.
> > But it's not about dictating what people do. It's about what we
> > support as a project for users and operators. This is something we
> > can define very clearly so that users aren't surprised. At least they
> > would have some way of knowing if they are using the system as
> > intended.
> > I don't think we should support/encourage editing the yaml workflows
> > by end users if we choose a yaml based workflow tool, any more than
> > we should support editing python code by users if we wrote our own
> > REST API.
> > It's not clear to me in this discussion when the argument about yaml
> > files being easier to edit so Mistral/Ansible is a better choice...if
> > we're talking about developers editing yaml files, or users editing
> > yaml files.
> > If it's the former (developers), I agree it's a benefit for us.
> > If it's the latter (users), then personally I don't see that as a
> > valid argument at all since I view it as something we should never
> > do.
> /me missed this in his previous reply
> Its both.
> For the latter we want our architecture to be something that users can
> "contribute" to. All edits aren't bad. One example: There are some
> cases today where we designed our templates as examples (potentially
> needing edits). The network configuration templates are an example
> here. No harm in adding an extra NIC to a bond or this sort of thing if
> the operator/user knows that is how they need to manage their physical
> hardware. The smart operator would perhaps build an automatic tool to
> help generate these sorts of templates. And perhaps we need a tool to
> help generate/validate these templates... but today the lay of the land
> is it is okay to customize some of these templates because they were in
> fact designed to be customized (os-net-config, etc.)
What I'm arguing for then is that the distinction and the interface be
defined. The reason being that today in tripleo-heat-templates it is not
defined and we've left users in limbo. You say the nic config templates are
examples, that's fine. But we haven't defined under what circumstances we,
as developers, are allowed to make changes that cause people's nic config
templates to stop working.
Either it's an interface that offers stability, or it's not. If we're
saying it offers none, personally I disagree with that, but at least we've
set the expectation that anytime someone uses a newer
tripleo-heat-templates, all bets are off that anything they had working
before is expected to still work.
How this is relevant to the current conversation is that it appears that
some are saying that our yaml workflows would be examples for people to
modify, and this is a good reason to choose a yaml based tool over a python
one. I disagree with that even being an option.
Instead, we ought to offer hook or plugin interfaces in our workflows where
people can plug in custom workflows as needed. The interface shouldn't
require editing any files that TripleO releases. If we get this right, and
Mistral already makes it easy for us to get it right, then I think that's a
perfectly valid advantage of Mistral over having to write a REST API with
equivalent hook/plugin support from scratch.
> > > >
> > > > So whether the API is a new TripleO Rest API, or the Mistral Rest
> > > > API, I hope we can agree that the API is the stable part, and the
> > > > implementation is not meant to be edited by users.
> > >
> > > We do totally agree on the stable API part. :)
> > To be clear, are you saying we should have a stable API, and then
> > support users in editing the implementation of that API (yaml
> > workflows)?
> > For example, we have a stable API such as:
> > POST /workbooks/deploy-cloud/executions
> > that might do totally different things across deployed TripleO clouds
> > of the same released version, depending on how the user has
> > customized the deploy-cloud workbook?
> > --
> > -- James Slagle
> > --
> > _____________________________________________________________________
> > _____
> > OpenStack Development Mailing List (not for usage questions)
> > Unsubscribe: OpenStack-dev-request at lists.openstack.org?subject:unsubs
> > cribe
> > http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev
> OpenStack Development Mailing List (not for usage questions)
> Unsubscribe: OpenStack-dev-request at lists.openstack.org?subject:unsubscribe
-- James Slagle
-------------- next part --------------
An HTML attachment was scrubbed...
More information about the OpenStack-dev