<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=ISO-8859-1">
</head>
<body bgcolor="#FFFFFF" text="#000000">
<meta http-equiv="CONTENT-TYPE" content="text/html;
charset=ISO-8859-1">
<h1 class="western">RFC: Template Versions and Naming Consistencies</h1>
<p>I should have probably written this as two separate emails but
since both points are intertwined I thought it be better to
discuss
together.<br>
</p>
<p><br>
</p>
<p><b>Background</b></p>
<p>At the moment Tim templates are completely immutable. This means
making a simple change to a template requires creating a
completely
new template. The original thinking here was that templates could
be
cloned, edited then saved, so would not have had large user
overhead. However, since templates are the top level object in
Tim. i.e.
Template has many Base Images and so on. It meant that images
created from differening templates (even if they were cloned) were
not related in any way making it difficult to track changes in
both
templates and images.<br>
</p>
<p><br>
</p>
<p><i><b>A rather contrived example might be:</b></i></p>
<p>User Bob wants launch an instance of his image in EC2. If there
is already an image in ec2 with my Bobs application > version
1.0
then use that. Otherwise he wants to build a new image based on
the
most recent template. Since the templates are not related in
anyway
it makes it difficult to do this.<br>
</p>
<p><br>
</p>
<p><b>Template Versions</b></p>
<p>Adding in the concept of Template Versions allows a user to
create
a master template. This template can be edited as many times as
the
user wants. Each time a change is made the user can snapshot it
and
create a Template Version. This is then timestamped, versioned and
asscoated with the master template. The template version is then
used to create Image Versions. This allows users to track changes
in
templates and use specific images of particular template versions.
In the scenario above, we could easily check the Template Versions
for the presence of Application V1.0 in EC2. If it exists lauch it
otherwise create a new one.<br>
</p>
<p><br>
</p>
<b>New Model and Rename</b>
<p style="font-weight: normal">In addition to adding Template
Versions we should make the naming of components consistent across
projects. This means renaming some of the existing models in Tim.
See the diagrams below. The Base Image is now renamed to Image
(the
naming here is up for grabs as long as it dpoes not conflict with
Factory). Image Version is now named to Base Image (since it is
related to Factory::BaseImage)<br>
</p>
<p style="font-weight: normal"><br>
</p>
<br>
<img alt="Tim Resource Model"
src="cid:part1.03080100.04080208@redhat.com" height="1145"
width="800"><br>
<h2 class="western">Scenarios:</h2>
<ul>
<li>
<p style="margin-bottom: 0in">As an Application Designer I want
to create Templates</p>
</li>
<li>
<p style="margin-bottom: 0in">As an Application Designer I want
to create a new <i>version</i> of an existing Template.</p>
</li>
<li>
<p style="margin-bottom: 0in">As an Infrastructure Consumer I
want to build and deploy Images based on a particular
Template.</p>
</li>
<li>
<p style="margin-bottom: 0in">As an Infrastructure Consumer I
want to view which Template an Image was built from.</p>
</li>
<li>
<p style="margin-bottom: 0in">As a Infrastructure Consumer I
want to guarantee equivalence (packages/versions) across
Target and Provider Images.</p>
</li>
<li>
<p style="margin-bottom: 0in">As an Infrastructure Consumer I
want to create a deployable that references a specific target
image.</p>
</li>
<li>
<p style="margin-bottom: 0in">As an Infrastructure Consumer I
want to create a deployable that references the target image
build of a specific template version.</p>
</li>
<li>
<p style="margin-bottom: 0in">As an Infrastructure Consumer I
want to create a deployable that references the most recent
version of a template.</p>
</li>
</ul>
<p style="margin-bottom: 0in"><br>
</p>
<p style="margin-bottom: 0in"><br>
</p>
<pre class="western" style="margin-bottom: 0.2in">
</pre>
<p style="margin-bottom: 0in">
<br>
</p>
<title></title>
<meta name="GENERATOR" content="LibreOffice 3.5 (Linux)">
<style type="text/css">
        <!--
                @page { margin: 0.79in }
                H2 { margin-bottom: 0.08in }
                H2.western { font-family: "Liberation Sans", sans-serif; font-size: 14pt; font-style: italic }
                H2.cjk { font-family: "WenQuanYi Zen Hei Sharp"; font-size: 14pt; font-style: italic }
                H2.ctl { font-family: "Lohit Devanagari"; font-size: 14pt; font-style: italic }
                H1 { margin-bottom: 0.08in }
                H1.western { font-family: "Liberation Sans", sans-serif; font-size: 16pt }
                H1.cjk { font-family: "WenQuanYi Zen Hei Sharp"; font-size: 16pt }
                H1.ctl { font-family: "Lohit Devanagari"; font-size: 16pt }
                PRE.cjk { font-family: "WenQuanYi Zen Hei Sharp", monospace }
                PRE.ctl { font-family: "Lohit Devanagari", monospace }
                P { margin-bottom: 0.08in }
                A:link { so-language: zxx }
        -->
        </style>
</body>
</html>