cloudstack-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From seb...@apache.org
Subject [3/3] git commit: updated refs/heads/master to a3d585e
Date Mon, 17 Jun 2013 06:20:54 GMT
Add Shiva Teja's proposal to GSoC docbook


Project: http://git-wip-us.apache.org/repos/asf/cloudstack/repo
Commit: http://git-wip-us.apache.org/repos/asf/cloudstack/commit/a3d585ea
Tree: http://git-wip-us.apache.org/repos/asf/cloudstack/tree/a3d585ea
Diff: http://git-wip-us.apache.org/repos/asf/cloudstack/diff/a3d585ea

Branch: refs/heads/master
Commit: a3d585ea4effc3a326858e777a7f785ddf44dfe2
Parents: ac48e5d
Author: Shiva Teja <shivatejau@gmail.com>
Authored: Fri Jun 14 00:54:03 2013 +0530
Committer: Sebastien Goasguen <runseb@gmail.com>
Committed: Mon Jun 17 02:20:37 2013 -0400

----------------------------------------------------------------------
 docs/en-US/gsoc-shiva.xml | 70 ++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 70 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/cloudstack/blob/a3d585ea/docs/en-US/gsoc-shiva.xml
----------------------------------------------------------------------
diff --git a/docs/en-US/gsoc-shiva.xml b/docs/en-US/gsoc-shiva.xml
new file mode 100644
index 0000000..400af3c
--- /dev/null
+++ b/docs/en-US/gsoc-shiva.xml
@@ -0,0 +1,70 @@
+<?xml version='1.0' encoding='utf-8' ?>
+<!DOCTYPE section PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN" "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd"
[
+<!ENTITY % BOOK_ENTITIES SYSTEM "CloudStack_GSoC_Guide.ent">
+%BOOK_ENTITIES;
+]>
+
+<!-- Licensed to the Apache Software Foundation (ASF) under one
+ or more contributor license agreements.  See the NOTICE file
+ distributed with this work for additional information
+ regarding copyright ownership.  The ASF licenses this file
+ to you under the Apache License, Version 2.0 (the
+ "License"); you may not use this file except in compliance
+ with the License.  You may obtain a copy of the License at
+ 
+   http://www.apache.org/licenses/LICENSE-2.0
+ 
+ Unless required by applicable law or agreed to in writing,
+ software distributed under the License is distributed on an
+ "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ KIND, either express or implied.  See the License for the
+ specific language governing permissions and limitations
+ under the License.
+-->
+
+<chapter id="gsoc-shiva">
+        <title>Shiva Teja's 2013 GSoC Proposal</title>
+        <para>This chapter describes Shiva Teja's 2013 Google Summer of Code project
within the &PRODUCT; ASF project. It is a copy paste of the submitted proposal.</para>
+	<section id="gsoc-abstract-shiva">
+		<title>Abstract</title>
+		<para>
+			The aim of this project is to create a new modular UI for Apache CloudStack using Bootstrap
by Twitter and Backbone.js. To achieve this easily, I'll be creating a RESTful wrapper API
on top of the current CloudStack API. I hope this project will make custom UIs for CloudStack
very easy.</para>
+
+		<para>Why does CloudStack need a new UI?</para>
+
+		<para>The current UI cannot be reused easliy to make a custom UI. The UI I will be
making using backbone.js can be reused very easily to make custom UIs. The models, views,
routers etc can remain the same in all the UIs. The user interface can be changed just by
changing the templates. Check the implementation details below for further details.</para>
+
+		<para>Why does it need a RESTful wrapper API ?</para>
+
+		<para>Backbone.js heavily depends on RESTful architecture. Making a new UI with backbone.js
using a query based API might not be easy.</para>
+	</section>
+	<section id="gsoc-deliverables-shiva">
+		<title>List of deliverables</title>
+		<orderedlist>
+			<listitem><para>A new UI for CloudStack(with almost all features in the current
UI and new ones, if any).</para></listitem>
+			<listitem><para>A RESTful wrapper API on top of the CloudStack API</para></listitem>
+			<listitem><para>Some documentation about using this UI to make a custom UI.</para></listitem>
+		</orderedlist>
+	</section>
+	<section id="gsoc-approach-shiva">
+		<title>Approach</title>
+		<para>Wrapper API: Backbone.js, by default, uses four HTTP methods(GET, PUT, POST,
DELETE) for communicating with the server. It uses GET to fetch a resource from the server,
POST to create a resource, PUT to update the resource and DELETE to delete the resource. A
query based API can probably be used to make the UI by overriding backbone's<ulink url="http://backbonejs.org/#Sync"><citetitle>
default sync function</citetitle></ulink>. But it makes more sense to have an
API which supports the above mentioned method and is resource based. This RESTful API works
on top of the CloudStack API. The main task is to map the combinations of these HTTP methods
and the resources to appropriate CloudStack API command. The other task is to decide on how
the URLs should look like. Say for starting a virtual machine, for it to be RESTful, we have
to use POST as we are creating a resource, or a PUT as we are changing the state of a virtual
machine. So the possible options on the URL could be to do
  a POST /runningvirtualmachines and respond with 201 Created code or a PUT on /virtualmachines/id
and respond with 200 OK. If these are decided, the wrapper can be generated or be written
manually, which can use defined patters to map to appropriate CloudStack API commands(Similar
to what cloudmonkey does. See this <ulink url="https://github.com/shivateja/cloudstack-restful-api"><citetitle>prototype</citetitle></ulink>.
I can use cloudmonkey's code to generate the required API entity verb relationships. Each
verb will have a set of rules saying what method should be used in the RESTful API and how
should it look like in the URL. Another possible way could be to group entities first manually
and write the wrapper manually(something like zone/pods/cluster). Some possibilities have
been discussed in <ulink url="http://mail-archives.apache.org/mod_mbox/cloudstack-dev/201304.mbox/%3CCAJrLSbaqa08uHw_xETt7Q59Nex%3DThQzvqEJyoXK8Q-OwN04Suw%40mail.gmail.com%3E"><citetitle>this
thread</citetit
 le></ulink>.</para>
+
+		<para>UI: It will be a single page app. It'll use <ulink url="http://underscorejs.org/#template">client
side templating</ulink> for rendering. This makes it very easy to make a custom UI because
it can be achieved just by changing the templates. Backbone views will make use of these templates
to render the appropriate models/collections. A completely new interface can be written just
by changing the templates. Javascript code can completely remain the same. The views will
take care of appropriate DOM events. Such event will correspond to appropriate model/collection
chages, thus causing appropriate API calls.</para>
+	</section>
+	<section id="gsoc-schedule-shiva">
+		<title>Approximate Schedle</title>
+		<para>Till June 17 - Decide on how the RESTful API should look like and design algorithms
to generate the wrapper.</para>
+		<para>July 5(soft deadline), July 10(hard deadline) : Wrapper API will be ready.</para>
+		<para>July 12(soft) - July 15(hard): Make basic wireframes and designs for the website
and get them approved.</para>
+		<para>July 29(mid term evaluation) : All the basic models, views, routes of the UI
should be ready along with a few templates.</para>
+		<para>August 15(hard deadline, shouldn't take much time actually) - A basic usable
UI where users can just list all the entities which are present in the current UI's main navigation(
Like Instances, Templates, Accounts etc)</para>
+		<para>September 1(hard) - From this UI, users should be able to launch instances,
edit settings of most of the entities.</para>
+		<para>September 16(Pencil down!) - Fix some design tweaks and finish a completely
usable interface with functions similar to current UI.</para>
+		<para>September 23 - Finish the documentation on how to use this UI to make custom
UIs.</para>
+	</section>
+	<section id="gsoc-aboutme-shiva">
+		<title>About Me</title>
+		<para> I am a 2nd year computer science undergrad studying at IIT Mandi, India. I've
been using Python for an year and a half now. I've used Django, Flask and Tornado for my small
projects. Along with Python, I use C++ for competitive programming. Recently, I fell in love
with Haskell. I've always been fascinated about web technologies.</para>
+	</section>
+</chapter>


Mime
View raw message