You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cloudstack.apache.org by we...@apache.org on 2013/06/18 09:58:06 UTC

[06/50] [abbrv] git commit: updated refs/heads/disk_io_throttling to 691bc9d

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/disk_io_throttling
Commit: a3d585ea4effc3a326858e777a7f785ddf44dfe2
Parents: ac48e5d
Author: Shiva Teja <sh...@gmail.com>
Authored: Fri Jun 14 00:54:03 2013 +0530
Committer: Sebastien Goasguen <ru...@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>