Statistics
| Branch: | Tag: | Revision:

root / docs / dev-guide.rst @ a1d0bacb

History | View | Annotate | Download (2.5 kB)

1 bc055d09 Constantinos Venetsanopoulos
.. _dev-guide:
2 bc055d09 Constantinos Venetsanopoulos
3 bc055d09 Constantinos Venetsanopoulos
Synnefo Developer's Guide
4 bc055d09 Constantinos Venetsanopoulos
^^^^^^^^^^^^^^^^^^^^^^^^^
5 bc055d09 Constantinos Venetsanopoulos
6 1fbdb3d7 marioskogias
This is the complete Synnefo Developer's Guide.
7 1fbdb3d7 marioskogias
8 1fbdb3d7 marioskogias
Environment set up
9 1fbdb3d7 marioskogias
==================
10 1fbdb3d7 marioskogias
11 1fbdb3d7 marioskogias
First of all you have to set up a developing environment for Synnefo.
12 1fbdb3d7 marioskogias
13 dd45dcae Giorgos Korfiatis
**1. Create a new VM**
14 dd45dcae Giorgos Korfiatis
15 dd45dcae Giorgos Korfiatis
It has been tested on Debian Wheezy. It is expected to work with other
16 dd45dcae Giorgos Korfiatis
releases (e.g., Squeeze) too, as long as they are supported by
17 dd45dcae Giorgos Korfiatis
``snf-deploy``.
18 1fbdb3d7 marioskogias
19 1fbdb3d7 marioskogias
**2. Build your own Synnefo installation**
20 1fbdb3d7 marioskogias
21 1fbdb3d7 marioskogias
Follow the instructions `here <http://www.synnefo.org/docs/synnefo/latest/quick-install-guide.html>`_
22 1fbdb3d7 marioskogias
to build Synnefo on a single node using ``snf-deploy``.
23 1fbdb3d7 marioskogias
24 1fbdb3d7 marioskogias
**3. Install GitPython**
25 1fbdb3d7 marioskogias
26 1fbdb3d7 marioskogias
.. code-block:: console
27 1fbdb3d7 marioskogias
28 3df48a3f Constantinos Venetsanopoulos
   # pip install gitpython
29 1fbdb3d7 marioskogias
30 1fbdb3d7 marioskogias
**4. Install devflow**
31 1fbdb3d7 marioskogias
32 1fbdb3d7 marioskogias
Devflow is a tool to manage versions, helps implement the git flow development process,
33 1fbdb3d7 marioskogias
and builds Python and Debian packages. You will need it to create your code's version.
34 1fbdb3d7 marioskogias
35 1fbdb3d7 marioskogias
.. code-block:: console
36 1fbdb3d7 marioskogias
37 3df48a3f Constantinos Venetsanopoulos
   # pip install devflow
38 1fbdb3d7 marioskogias
39 1fbdb3d7 marioskogias
**5. Get Synnefo code**
40 1fbdb3d7 marioskogias
41 1fbdb3d7 marioskogias
First you need to install git
42 1fbdb3d7 marioskogias
43 1fbdb3d7 marioskogias
.. code-block:: console
44 1fbdb3d7 marioskogias
45 3df48a3f Constantinos Venetsanopoulos
   # apt-get install git
46 1fbdb3d7 marioskogias
47 1fbdb3d7 marioskogias
And now get the Synnefo code from the official Synnefo repository
48 1fbdb3d7 marioskogias
49 1fbdb3d7 marioskogias
.. code-block:: console
50 1fbdb3d7 marioskogias
51 3df48a3f Constantinos Venetsanopoulos
   # su some_regular_user
52 3df48a3f Constantinos Venetsanopoulos
   $ git clone https://code.grnet.gr/git/synnefo
53 1fbdb3d7 marioskogias
54 dd45dcae Giorgos Korfiatis
Make sure you clone the repository as a regular user. Otherwise you will
55 dd45dcae Giorgos Korfiatis
have problems with file permissions when deploying.
56 1fbdb3d7 marioskogias
57 1fbdb3d7 marioskogias
**6. Code and deploy**
58 1fbdb3d7 marioskogias
59 1fbdb3d7 marioskogias
1. Configure the version
60 1fbdb3d7 marioskogias
61 1fbdb3d7 marioskogias
.. code-block:: console
62 1fbdb3d7 marioskogias
63 3df48a3f Constantinos Venetsanopoulos
   $ devflow-update-version
64 1fbdb3d7 marioskogias
65 1fbdb3d7 marioskogias
2. Code
66 dd45dcae Giorgos Korfiatis
3. In every component you change, run as root
67 dd45dcae Giorgos Korfiatis
68 dd45dcae Giorgos Korfiatis
.. code-block:: console
69 dd45dcae Giorgos Korfiatis
70 3df48a3f Constantinos Venetsanopoulos
   # python setup.py develop -N
71 dd45dcae Giorgos Korfiatis
72 dd45dcae Giorgos Korfiatis
This does not automatically install dependencies, in order to avoid
73 dd45dcae Giorgos Korfiatis
confusion with synnefo packages installed by ``snf-deploy``. External
74 dd45dcae Giorgos Korfiatis
dependencies have already been installed by ``snf-deploy``; if you introduce
75 dd45dcae Giorgos Korfiatis
a new dependency, you will have to explicitly install it.
76 dd45dcae Giorgos Korfiatis
77 dd45dcae Giorgos Korfiatis
4. You will need to restart the server with
78 dd45dcae Giorgos Korfiatis
79 dd45dcae Giorgos Korfiatis
.. code-block:: console
80 dd45dcae Giorgos Korfiatis
81 3df48a3f Constantinos Venetsanopoulos
   # service gunicorn restart
82 dd45dcae Giorgos Korfiatis
83 dd45dcae Giorgos Korfiatis
5. If your changes affected ``snf-dispatcher`` (from package
84 dd45dcae Giorgos Korfiatis
   ``snf-cyclades-app``) or ``snf-ganeti-eventd`` (from
85 dd45dcae Giorgos Korfiatis
   ``snf-cyclades-gtools``) you will need to restart these daemons, too.
86 dd45dcae Giorgos Korfiatis
   Since step 3 installed the former under ``/usr/local/``, you need to
87 dd45dcae Giorgos Korfiatis
   make sure that the correct version is evoked. You can override the
88 dd45dcae Giorgos Korfiatis
   version installed by ``snf-deploy`` with
89 dd45dcae Giorgos Korfiatis
90 dd45dcae Giorgos Korfiatis
.. code-block:: console
91 dd45dcae Giorgos Korfiatis
92 3df48a3f Constantinos Venetsanopoulos
   # ln -sf /usr/local/bin/snf-dispatcher /usr/bin/snf-dispatcher
93 dd45dcae Giorgos Korfiatis
94 dd45dcae Giorgos Korfiatis
and then restart the daemons
95 1fbdb3d7 marioskogias
96 1fbdb3d7 marioskogias
.. code-block:: console
97 1fbdb3d7 marioskogias
98 3df48a3f Constantinos Venetsanopoulos
   # service snf-dispatcher restart
99 3df48a3f Constantinos Venetsanopoulos
   # service snf-ganeti-eventd restart
100 1fbdb3d7 marioskogias
101 dd45dcae Giorgos Korfiatis
6. Refresh the web page and see your changes