First some terminology. To be honest we haven't completely settled on what to call some parts of our service. We have vacillated between the terms "component portals", "provisioning portals" and "microsites" for the stack assembly pages.
"Provisioning Portals" - because in many ways that is the essence of what we provide; the ability to get a virtual stack built for either development or production. HOWEVER many products use the word "provisioning" to mean some layer built on top of TCP or FTP for copying some sort of image to a physical server. How the image got built in the first place is usually an exercise left to the reader's imagination.
"Component portals" - because that is more factual and descriptive. Use the editor to upload some graphics, check some boxes, do a little stylesheet magic, and choose some components from the component library.
"Microsites" - because as Elastic Server On-Demand grows, and different collections of components get aggregated, and as we get community editors to support their favorite stacks, then one can image ESOD having thousands of "micro web-sites" each supporting some small community of users who have interest in that site's particular stack recipe.
For now please accept that we use the terms somewhat interchangeably. The application for creating these portals is called the "Microsite Editor".
How do you get access to the Microsite Editor?
Two ways: 1) Become a Community Editor. Have a stack you want to share with others? Not just the list of components but the actual buildable stack - virtualized - ready for download or cloud deployment? Contact us with a suggestion for a community portal you think you want to build. 2) Upgrade to our Personal Edition, which is in a free trial period, and then you can build component portals for your own use. When the commercial version of Personal Edition launches you will be able to publish your portals for others to see.
How to build a portal with the Microsite Editor
When you upgrade to the Personal Edition you will see a new section in your "Start Here" page. It lists your personal portals and provide links for managing them. If you want to create a
new one click "See More" in the "Your Provisioning Portals" section.

new one click "See More" in the "Your Provisioning Portals" section.

When you click to create a portal you will be taken to the page below. Enter a name and click on "Create New Portal".

The application allows you to upload graphics for use in your content display. One of these graphics should be used for the Banner of your site ("Logo file name"), another smaller graphic is used for the summary displays ("Small logo file name"). Size the small one close to the actual size you want if image quality in IE7 is important to you. Firefox and Safari automatically scale well, IE7 does not.Next there are some checkboxes for virtualization types. If for some reason you do not want all of ESOD's provided types, only check the one(s) you want. We will be adding new image types and new cloud options soon.
There are a few more options available after that:
"Enable Discussion Area" will allow people to post comments on your portal directly.
"Hide Configure Button" - when this is selected, the portal page will not lead to the virtualization configuration page. Use this if your portal page is an index page to multiple component sites you have built. In this case you just use the HTML and CSS capabilities to build that index.

Now put in the HTML. There is only one entry required (maybe it should be in there by default) and that is {{packages}}.
Next customize with CSS.
Finally, summary HTML which is used for the description in the portal directory if this portal gets published.
Here is the HTML from the "Rails Parts" site as an example,
<h2 class='heading'>Rails Elastic Server <span style='color:green'></span></h2>
<div class="column span-9 first">
<p class='last'><b>Build Your Ruby on Rails Elastic Server and Experience Development Bliss.</b> The Rails Elastic Server gives you everything you need to deploy your application in a real environment! You get your favorite webserver (nginx of course), a choice of database (sqlite3 and mysql), and of course Mongrel to run your application! The server comes configured to run a cluster of two mongrels, with the nginx webserver proxying between them.</p><p>All of our Elastic Servers come with a management console that lets you control services and manage typical system operations. <a href="http://www.cohesiveft.com/Elastic_Server/Main/Elastic_Server_Info/">Learn more about Elastic Servers</a></p>
{{packages}}
</div>
<div class="column span-7 last">
<div style="background-image: url(/whitelabel/rails/images/boxtop.jpg)">
<h2 style="color: #ffffff; padding-left: 10px;">Getting Started</h2>
</div>
<div style="background-image: url(/whitelabel/rails/images/boxmiddle.jpg)">
<p class="box"><b>Choose your components</b><br>Use this page to select the components of your rails stack. </p><p class="box"><b>Build your server</b><br>The next page will ask you about some hardware choices and a virtualization platform.</p><p class="box"><b>Download and start your server</b><br>When the server starts, you will be able to access the admin console at http://serverip:2999. You'll get more instructions in your email.</p><p class="box"><b>Deploy your application!</b><br>Deployment wizards and capistrano scripts are coming soon. For now, please use the following command:<br/><code style='font-size:0.9em'>rsync -avzp <em>[yourrailsdir]</em>/*<br>root@<em>[serverip]</em>:/usr/local/cft/deploy/rails</code> </p><p class="end"><b>Restart the Rails Server using the console.</b><br>Your application is now running on port 9000 with two mongrels on ports 9001 and 9002. Mongrel configuration screen coming soon!</p>
</div>
<div style="background-image: url(/whitelabel/rails/images/boxbottom.jpg)">
<p> </p>
</div>
</div>
Here is the style sheet from "Rails Parts",
h2.heading {
color: #981a21;
}
p img {
margin: 2px;
}
p.box{
padding-left: 5px;
padding-right: 5px;
}
p.end{
padding-left: 5px;
padding-right: 5px;
margin: 0px;
}
a.server {
font-size: 18px;
}
#package-list {
width:350px;
}
li.component-group {
padding: 0pt 0em 0.5em;
}
p.package-description {
text-align: left;
}
Creating Bundle Groups and Package Options
Hmm...what's missing? Oh - packages!
Right now we have a data driven builder that lets you design your approach to stacks. We have already gotten suggestions about having an XML format that one can cons up quickly with a text editor rather than having to use a menu driven app. Variant suggestions on that theme certainly welcome.
Here are questions you might answer for yourself before you begin.
- How do I think about my stack? Are there options available? Or just "one click" for a complete stack?
- Do I want it to be structured along the layers of the architecture? In the "SOA Parts" site we create groupings with choices along the lines of the fairly canonical stack pictured in the site's graphics pictured here. As such there is a Web Services group, a Service Bus group, a Page Server group, etc. Then each of those groups is populated with component bundles that are available in the Community library.
- Do I want to allow choice, but propose a particular default? As you define the groups you can select one of the components to be the default choice.
- Do I want to have some of my own code guaranteed to be in the assembly? If so you can use the REQUIRED option.
- Do I want to have some of my own code guaranteed in the assembly and not obviously visible in the assembly process? If so, you can use the HIDDEN option. Warning: HIDDEN components will not show up in the most popular components listings on the DASHBOARD page. So if you have written a really great piece of code, that is built into your assembly, used by lots of people, but you have HIDDEN it, know one will know. Don't miss your chance to be a community rock star!
(Then what is HIDDEN for? The main reason is prevent a couple of CFT's packages from showing up forever as the most popular software. We have a bundle called "crutch" which puts a bunch of developer utilities into the builds to make them more development friendly, and another called "cft rubymin" which has the web services and UI machinery for our management console.)
- Do I want to have just a list of multi-selectable components, rather than mutually exclusive? In that case use the "multi-select" option for the bundle group as you define it.
Here are some other questions that may come to mind.
- How do I declare two components in my portal - that are in different bundle groups - mutually exclusive? (Sort of like when building a computer at Dell when it says "sorry that sound card doesn't work with that DVD player.) The answer is "Coming Soon".
- How do I declare that one component choice then requires one or more other components? Again, "Coming Soon".
- What if the components I want aren't in the Community library yet? One solution is to request it from us - but at a certain point that is not a scalable solution. Another is to grab the version of code you are interested in and make it a component in ESOD. The means to do that will be discussed in an upcoming post.
Hopefully this post will get you started with the creating your own component portal. More to follow on creating Bundle Groups and populating them with component choices in a post to follow as well.


0 comments:
Post a Comment