Revision ed8c7696
b/astakosclient/MANIFEST.in | ||
---|---|---|
1 | 1 |
include distribute_setup.py |
2 |
include README |
/dev/null | ||
---|---|---|
1 |
astakos-client |
|
2 |
============== |
|
3 |
|
|
4 |
Python client for the Astakos, the Identity Management Service of |
|
5 |
synnefo(http://www.synnefo.org) |
|
6 |
|
|
7 |
Feedback |
|
8 |
======== |
|
9 |
|
|
10 |
For any comments or suggestions for improvement, please contact |
|
11 |
the synnefo development team <synnefo-devel@googlegroups.com> |
b/astakosclient/setup.py | ||
---|---|---|
49 | 49 |
|
50 | 50 |
# Package info |
51 | 51 |
VERSION = __version__ |
52 |
README = open(os.path.join(HERE, 'README')).read() |
|
53 | 52 |
SHORT_DESCRIPTION = 'A set of tools to ease versioning and use of git flow.' |
54 | 53 |
|
55 | 54 |
PACKAGES_ROOT = '.' |
... | ... | |
163 | 162 |
license='BSD', |
164 | 163 |
url='http://www.synnefo.org/', |
165 | 164 |
description=SHORT_DESCRIPTION, |
166 |
long_description=README, |
|
167 | 165 |
classifiers=CLASSIFIERS, |
168 | 166 |
|
169 | 167 |
author='Synnefo development team', |
b/docs/older/README.astakos-app | ||
---|---|---|
1 |
README |
|
2 |
====== |
|
3 |
|
|
4 |
Astakos is an identity management service, built by GRNET using Django (https://www.djangoproject.com/). |
|
5 |
Learn more about Astakos at: http://code.grnet.gr/projects/astakos |
|
6 |
|
|
7 |
Consult COPYRIGHT for licensing information. |
|
8 |
|
|
9 |
About Astakos application |
|
10 |
------------------------- |
|
11 |
|
|
12 |
This package contains the Django application that implements all identity management functions. |
|
13 |
|
|
14 |
How to run |
|
15 |
---------- |
|
16 |
|
|
17 |
Use snf-webproject to run Astakos automatically. |
|
18 |
|
|
19 |
To use Astakos in a custom Django project, add ``astakos.im`` to ``INSTALLED_APPS``. Astakos requires South (http://south.aeracode.org/). |
|
20 |
|
|
21 |
Also, add the following to your ``settings.py``:: |
|
22 |
|
|
23 |
TEMPLATE_CONTEXT_PROCESSORS = ( |
|
24 |
... |
|
25 |
'astakos.im.context_processors.cloudbar', |
|
26 |
'astakos.im.context_processors.im_modules', |
|
27 |
'astakos.im.context_processors.next', |
|
28 |
'astakos.im.context_processors.code', |
|
29 |
'astakos.im.context_processors.invitations') |
|
30 |
|
|
31 |
AUTHENTICATION_BACKENDS = ('astakos.im.auth_backends.EmailBackend', |
|
32 |
'astakos.im.auth_backends.TokenBackend') |
|
33 |
|
|
34 |
CUSTOM_USER_MODEL = 'astakos.im.AstakosUser' |
|
35 |
|
|
36 |
LOGIN_URL = '/im' |
|
37 |
|
|
38 |
Settings |
|
39 |
-------- |
|
40 |
|
|
41 |
Configure in ``settings.py`` or a ``.conf`` file in ``/etc/synnefo`` if using snf-webproject. |
|
42 |
|
|
43 |
=========================================== ============================================================================= =========================================================================================== |
|
44 |
Name Default value Description |
|
45 |
=========================================== ============================================================================= =========================================================================================== |
|
46 |
ASTAKOS_AUTH_TOKEN_DURATION one month Expiration time of newly created auth tokens |
|
47 |
ASTAKOS_DEFAULT_USER_LEVEL 4 Default (not-invited) user level |
|
48 |
ASTAKOS_INVITATIONS_PER_LEVEL {0:100, 1:2, 2:0, 3:0, 4:0} Number of user invitations per user level |
|
49 |
ASTAKOS_DEFAULT_FROM_EMAIL GRNET Cloud <no-reply\@grnet.gr> ``from`` parameter passed in ``django.core.mail.send_mail`` |
|
50 |
ASTAKOS_DEFAULT_CONTACT_EMAIL support\@cloud.grnet.gr Contact email |
|
51 |
SERVER_EMAIL None |
|
52 |
ADMINS None |
|
53 |
ASTAKOS_IM_MODULES ['local'] Signup modules |
|
54 |
ASTAKOS_FORCE_PROFILE_UPDATE True Force user profile verification |
|
55 |
ASTAKOS_INVITATIONS_ENABLED True Enable invitations |
|
56 |
ASTAKOS_COOKIE_NAME _pithos2_a ``Key`` parameter passed in ``django.http.HttpResponse.set_cookie`` |
|
57 |
ASTAKOS_COOKIE_DOMAIN None ``Domain`` parameter passed in ``django.http.HttpResponse.set_cookie`` |
|
58 |
ASTAKOS_COOKIE_SECURE True ``Secure`` parameter passed in ``django.http.HttpResponse.set_cookie`` |
|
59 |
ASTAKOS_IM_STATIC_URL /static/im/ URL to use when referring to static files |
|
60 |
ASTAKOS_MODERATION_ENABLED True If False and invitations are not enabled newly created user will be automatically accepted |
|
61 |
ASTAKOS_BASEURL \http://pithos.dev.grnet.gr Astakos baseurl |
|
62 |
ASTAKOS_SITENAME GRNET Cloud Service name that appears in emails |
|
63 |
ASTAKOS_RECAPTCHA_PUBLIC_KEY Recaptcha public key obtained after registration here: http://recaptcha.net |
|
64 |
ASTAKOS_RECAPTCHA_PRIVATE_KEY Recaptcha private key obtained after registration here: http://recaptcha.net |
|
65 |
ASTAKOS_RECAPTCHA_OPTIONS {'theme': 'custom', 'custom_theme_widget': 'okeanos_recaptcha'} Options for customizing reCAPTCHA look and feel |
|
66 |
ASTAKOS_RECAPTCHA_USE_SSL True |
|
67 |
ASTAKOS_RECAPTCHA_ENABLED False Enable recaptcha |
|
68 |
(see: http://code.google.com/intl/el-GR/apis/recaptcha/docs/customization.html) |
|
69 |
ASTAKOS_BILLING_FIELDS ['is_active'] AstakosUser fields to propagate in the billing system |
|
70 |
ASTAKOS_QUEUE_CONNECTION The queue connection ex. 'rabbitmq://guest:guest@localhost:5672/astakos' |
|
71 |
ASTAKOS_LOGOUT_NEXT Where the user should be redirected after logout |
|
72 |
(if not set and no next parameter is defined it renders login page with message) |
|
73 |
(if it is not set, it does not send messages) |
|
74 |
ASTAKOS_RE_USER_EMAIL_PATTERNS [] Email patterns that are automatically activated ex. ['^[a-zA-Z0-9\._-]+@grnet\.gr$'] |
|
75 |
|
|
76 |
ASTAKOS_LOGIN_MESSAGES [] Notification messages to display on login page header |
|
77 |
e.g. {'warning': 'Warning message (can contain html)'} |
|
78 |
ASTAKOS_SIGNUP_MESSAGES [] Notification messages to display on signup page header |
|
79 |
e.g. {'warning': 'Warning message (can contain html)'} |
|
80 |
ASTAKOS_PROFILE_MESSAGES [] Notification messages to display on profile page header |
|
81 |
e.g. {'warning': 'Warning message (can contain html)'} |
|
82 |
ASTAKOS_GLOBAL_MESSAGES [] Notification messages to display on every page header |
|
83 |
e.g. {'warning': 'Warning message (can contain html)'} |
|
84 |
ASTAKOS_PROFILE_EXTRA_LINKS {} Messages to display as extra actions in account forms |
|
85 |
e.g. {'https://cms.okeanos.grnet.gr/': 'Back to ~okeanos'} |
|
86 |
ASTAKOS_RATELIMIT_RETRIES_ALLOWED 3 Number of unsuccessful login requests per minute allowed for a specific account. |
|
87 |
When this number exceeds and ASTAKOS_RECAPTCHA_ENABLED is set the user has to solve a |
|
88 |
captcha challenge. |
|
89 |
ASTAKOS_EMAILCHANGE_ENABLED False Enable email change mechanism |
|
90 |
ASTAKOS_EMAILCHANGE_ACTIVATION_DAYS 10 Number of days that email change requests remain active |
|
91 |
ASTAKOS_LOGGING_LEVEL INFO Message logging severity |
|
92 |
ASTAKOS_INVITATION_EMAIL_SUBJECT 'Invitation to %s alpha2 testing' % SITENAME Invitation email subject |
|
93 |
ASTAKOS_GREETING_EMAIL_SUBJECT 'Welcome to %s alpha2 testing' % SITENAME Welcome email subject |
|
94 |
ASTAKOS_FEEDBACK_EMAIL_SUBJECT 'Feedback from %s alpha2 testing' % SITENAME Feedback email subject |
|
95 |
ASTAKOS_VERIFICATION_EMAIL_SUBJECT '%s alpha2 testing account activation is needed' % SITENAME Account activation email subject |
|
96 |
ASTAKOS_ACCOUNT_CREATION_SUBJECT '%s alpha2 testing account created (%%(user)s)' % SITENAME Account creation email subject |
|
97 |
ASTAKOS_GROUP_CREATION_SUBJECT '%s alpha2 testing group created (%%(group)s)' % SITENAME Group creation email subject |
|
98 |
ASTAKOS_HELPDESK_NOTIFICATION_EMAIL_SUBJECT '%s alpha2 testing account activated (%%(user)s)' % SITENAME Account activation helpdesk notification email subject |
|
99 |
ASTAKOS_EMAIL_CHANGE_EMAIL_SUBJECT 'Email change on %s alpha2 testing' % SITENAME Email change subject |
|
100 |
ASTAKOS_PASSWORD_RESET_EMAIL_SUBJECT 'Password reset on %s alpha2 testing' % SITENAME Password change email subject |
|
101 |
ASTAKOS_PROJECT_CREATION_SUBJECT '%s alpha2 testing project application created (%%(name)s)' % SITENAME Project application creation subject |
|
102 |
ASTAKOS_PROJECT_APPROVED_SUBJECT '%s alpha2 testing project application approved (%%(name)s)' % SITENAME Project application approval subject |
|
103 |
ASTAKOS_PROJECT_TERMINATION_SUBJECT '%s alpha2 testing project terminated (%%(name)s)' % SITENAME Project termination subject |
|
104 |
ASTAKOS_PROJECT_SUSPENSION_SUBJECT '%s alpha2 testing project suspended (%%(name)s)' % SITENAME Project suspension subject |
|
105 |
ASTAKOS_PROJECT_MEMBERSHIP_CHANGE_SUBJECT '%s alpha2 testing project membership changed (%%(name)s)' % SITENAME Project membership change subject |
|
106 |
|
|
107 |
ASTAKOS_QUOTAHOLDER_URL '' The quotaholder URI |
|
108 |
e.g. ``http://localhost:8080/api/quotaholder/v`` |
|
109 |
ASTAKOS_QUOTAHOLDER_TOKEN '' The secret token for accessing the quotaholder URI |
|
110 |
|
|
111 |
ASTAKOS_SERVICES {'cyclades': {'resources': [{'desc': 'Number of virtual machines', Default cloud service information |
|
112 |
'group': 'compute', |
|
113 |
'name': 'vm', |
|
114 |
'uplimit': 2}, |
|
115 |
{'desc': 'Virtual machine disk size', |
|
116 |
'group': 'compute', |
|
117 |
'name': 'diskspace', |
|
118 |
'unit': 'GB', |
|
119 |
'uplimit': 5}, |
|
120 |
{'desc': 'Number of virtual machine processors', |
|
121 |
'group': 'compute', |
|
122 |
'name': 'cpu', |
|
123 |
'uplimit': 1}, |
|
124 |
{'desc': 'Virtual machines', |
|
125 |
'group': 'compute', |
|
126 |
'name': 'ram', |
|
127 |
'unit': 'MB', |
|
128 |
'uplimit': 1024}], |
|
129 |
'url': 'https://node1.example.com/ui/'}, |
|
130 |
'pithos+': {'resources': [{'desc': 'Pithos account diskspace', |
|
131 |
'group': 'storage', |
|
132 |
'name': 'diskspace', |
|
133 |
'unit': 'bytes', |
|
134 |
'uplimit': 5368709120}], |
|
135 |
'url': 'https://node2.example.com/ui/'}} |
|
136 |
ASTAKOS_PAGINATE_BY 8 Number of object to be displayed per page |
|
137 |
ASTAKOS_PAGINATE_BY_ALL 15 Number of object to be displayed per pagein show all projects page |
|
138 |
|
|
139 |
ASTAKOS_NEWPASSWD_INVALIDATE_TOKEN True Enforce token renewal on password change/reset. If set to False, user can optionally decide |
|
140 |
whether to renew the token or not. |
|
141 |
ASTAKOS_ENABLE_LOCAL_ACCOUNT_MIGRATION True Permit local account migration to third party account |
|
142 |
ASTAKOS_RESOURCES_PRESENTATION_DATA {} Customizes resource presentation |
|
143 |
ASTAKOS_ENABLE_LOCAL_ACCOUNT_MIGRATION True Permits local account migration |
|
144 |
ASTAKOS_SHIBBOLETH_REQUIRE_NAME_INFO False Strict shibboleth usage |
|
145 |
ASTAKOS_ACTIVATION_REDIRECT_URL "/im/landing" |
|
146 |
ASTAKOS_TRANSLATE_UUIDS False If true, this enables a ui compatibility layer for the introduction of UUIDs in identity management. |
|
147 |
WARNING: Setting to True will break your installation. |
|
148 |
ASTAKOS_PROJECT_ADMINS set() Users to approve/deny project applications |
|
149 |
ASTAKOS_TWITTER_TOKEN '' Oauth2 twitter token |
|
150 |
ASTAKOS_TWITTER_SECRET '' Oauth2 twitter secret |
|
151 |
ASTAKOS_TWITTER_AUTH_FORCE_LOGIN Fals |
|
152 |
ASTAKOS_GOOGLE_CLIENT_ID '' Oauth2 google client id |
|
153 |
ASTAKOS_GOOGLE_SECRET '' Oauth2 google secret |
|
154 |
ASTAKOS_LINKEDIN_TOKEN '' Oauth2 LinkedIn token |
|
155 |
ASTAKOS_LINKEDIN_SECRET '' Oauth2 LinkedIn secret |
|
156 |
=========================================== ============================================================================= =========================================================================================== |
|
157 |
|
|
158 |
Administrator functions |
|
159 |
----------------------- |
|
160 |
|
|
161 |
Available as extensions to Django's command-line management utility: |
|
162 |
|
|
163 |
============================ =========================== |
|
164 |
Name Description |
|
165 |
============================ =========================== |
|
166 |
fix-superusers Transform superusers created by syncdb into AstakosUser instances |
|
167 |
full-cleanup Cleanup sessions and session catalog |
|
168 |
invitation-list List invitation |
|
169 |
invitation-show Show invitation details |
|
170 |
project-control Manage projects and applications |
|
171 |
project-list List projects |
|
172 |
project-show Show project details |
|
173 |
quota List and check the integrity of user quota |
|
174 |
reconcile-resources-astakos Reconcile resource usage of Quotaholder with Astakos DB |
|
175 |
resource-add Add resource |
|
176 |
resource-export-astakos Export astakos resources in json format |
|
177 |
resource-import Import resources |
|
178 |
resource-list List resources |
|
179 |
resource-modify Modify resources |
|
180 |
resource-remove Remove resource |
|
181 |
service-add Add service |
|
182 |
service-list List services |
|
183 |
service-modify Modify service |
|
184 |
service-remove Remove service |
|
185 |
term-add Add approval terms |
|
186 |
user-activation-send Send user activation |
|
187 |
user-add Add user |
|
188 |
user-auth-policy-add Create a new authentication provider policy profile |
|
189 |
user-auth-policy-list List existing authentication provider policy profiles |
|
190 |
user-auth-policy-remove Remove an authentication provider policy |
|
191 |
user-auth-policy-set Assign an existing authentication provider policy profile to a user or group |
|
192 |
user-auth-policy-show Show authentication provider profile details |
|
193 |
user-group-add Create a group with the given name |
|
194 |
user-group-list List available groups |
|
195 |
user-invite Invite somebody |
|
196 |
user-list List users |
|
197 |
user-modify Modify user |
|
198 |
user-show Show user details |
|
199 |
============================ =========================== |
b/docs/older/README.pithos-app | ||
---|---|---|
1 |
README |
|
2 |
====== |
|
3 |
|
|
4 |
Pithos is a file storage service, built by GRNET using Django (https://www.djangoproject.com/). |
|
5 |
Learn more about Pithos at: http://code.grnet.gr/projects/pithos |
|
6 |
|
|
7 |
Consult COPYRIGHT for licensing information. |
|
8 |
|
|
9 |
About Pithos application |
|
10 |
------------------------ |
|
11 |
|
|
12 |
This package contains the Django application that implements the Pithos v2 API. It depends on the Pithos backend, which does the actual data and metadata operations. |
|
13 |
|
|
14 |
How to run |
|
15 |
---------- |
|
16 |
|
|
17 |
Use snf-webproject to run Pithos automatically. |
|
18 |
|
|
19 |
To use Pithos in a custom Django project, just add ``pithos.api`` to ``INSTALLED_APPS``. |
|
20 |
|
|
21 |
Pithos has been tested with SQLite and PostgreSQL backend databases. When using PostgreSQL, ensure that the has been created with the appropriate encoding and collation:: |
|
22 |
|
|
23 |
CREATE DATABASE pithos WITH ENCODING 'UTF8' LC_COLLATE='C' LC_CTYPE='C' TEMPLATE=template0; |
|
24 |
|
|
25 |
Settings |
|
26 |
-------- |
|
27 |
|
|
28 |
Configure in ``settings.py`` or a ``.conf`` file in ``/etc/synnefo`` if using snf-webproject. |
|
29 |
|
|
30 |
=============================== ================================================================ ============================================================ |
|
31 |
Name Default value Description |
|
32 |
=============================== ================================================================ ============================================================ |
|
33 |
ASTAKOS_URL \https://<astakos.host>/ Astakos Authentication URL |
|
34 |
PITHOS_ASTAKOSCLIENT_POOLSIZE 200 The size of the http pool for the astakos client |
|
35 |
PITHOS_ASTAKOS_COOKIE_NAME _pithos2_a Cookie name to retrieve fallback token |
|
36 |
PITHOS_BACKEND_DB_MODULE pithos.backends.lib.sqlalchemy |
|
37 |
PITHOS_BACKEND_DB_CONNECTION sqlite:////tmp/pithos-backend.db SQLAlchemy database connection string |
|
38 |
PITHOS_BACKEND_BLOCK_MODULE pithos.backends.lib.hashfile |
|
39 |
PITHOS_BACKEND_BLOCK_PATH /tmp/pithos-data/ Map and block storage path |
|
40 |
PITHOS_BACKEND_BLOCK_UMASK 0o022 Map and block storage umask |
|
41 |
PITHOS_BACKEND_QUEUE_MODULE None Use ``pithos.backends.lib.rabbitmq`` to enable |
|
42 |
PITHOS_BACKEND_QUEUE_HOSTS None Format like [``amqp://guest:guest@localhost:5672`` |
|
43 |
PITHOS_BACKEND_QUEUE_EXCHANGE pithos |
|
44 |
PITHOS_BACKEND_ACCOUNT_QUOTA 50 GB (50 * 1024 ** 3) Default account quota (set to 0 to disable control) |
|
45 |
PITHOS_BACKEND_CONTAINER_QUOTA 0 Default container quota (set to 0 to disable control - default disabled) |
|
46 |
PITHOS_BACKEND_VERSIONING auto Default versioning policy for containers |
|
47 |
PITHOS_BACKEND_FREE_VERSIONING True Default versioning debit policy (default free) |
|
48 |
PITHOS_BACKEND_POOL_SIZE 5 Default backend pool size |
|
49 |
PITHOS_UPDATE_MD5 False Update object checksums |
|
50 |
PITHOS_SERVICE_TOKEN '' Service token acquired by the identity provider (astakos) |
|
51 |
PITHOS_RADOS_STORAGE False Enables or disables secondary Pithos storage on RADOS |
|
52 |
PITHOS_RADOS_POOL_BLOCKS None RADOS pool to be used for block storage |
|
53 |
PITHOS_RADOS_POOL_MAPS None RADOS pool to be used for maps storage |
|
54 |
PITHOS_TRANSLATE_UUIDS False Enables a ui compatibility layer for the introduction of UUIDs in identity management. |
|
55 |
PITHOS_PROXY_USER_SERVICES True Whether to proxy user feedback and catalog services |
|
56 |
PITHOS_PUBLIC_URL_SECURITY 16 How many random bytes to use for constructing the URL of Pithos public files |
|
57 |
PITHOS_PUBLIC_URL_ALPHABET '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ' The alphabet to use for constructing the URL of Pithos public files |
|
58 |
=============================== ================================================================ ============================================================ |
|
59 |
|
|
60 |
To update checksums asynchronously, enable the queue, install snf-pithos-tools and use ``pithos-dispatcher``:: |
|
61 |
|
|
62 |
pithos-dispatcher --exchange=pithos --key=pithos.object --callback=pithos.api.dispatch.update_md5 |
|
63 |
|
|
64 |
To send sharing notifications:: |
|
65 |
|
|
66 |
pithos-dispatcher --exchange=pithos --key=pithos.sharing --callback=pithos.api.dispatch.send_sharing_notification |
|
67 |
|
|
68 |
Administrator functions |
|
69 |
----------------------- |
|
70 |
|
|
71 |
Available as extensions to Django's command-line management utility: |
|
72 |
|
|
73 |
============ ====================== |
|
74 |
Name Description |
|
75 |
============ ====================== |
|
76 |
storagequota Get/set a user's quota |
|
77 |
============ ====================== |
|
78 |
|
|
79 |
|
b/docs/older/README.tools | ||
---|---|---|
1 |
README |
|
2 |
======= |
|
3 |
|
|
4 |
snf-burnin is an integration testing tool for a running Synnefo deployment. |
|
5 |
It runs test scenarios from the following categories: |
|
6 |
|
|
7 |
- Authentication |
|
8 |
- Images |
|
9 |
- Flavors |
|
10 |
- Servers |
|
11 |
- Networking |
|
12 |
|
|
13 |
====== |
|
14 |
Usage |
|
15 |
====== |
|
16 |
|
|
17 |
Example: |
|
18 |
-------- |
|
19 |
snf-burnin --api=API_URL --token=TOKEN \ |
|
20 |
--image-id=IMAGE-ID --log-folder=LOG_FOLDER |
|
21 |
|
|
22 |
|
|
23 |
For more options: |
|
24 |
------------------ |
|
25 |
snf-burnin --help |
|
26 |
|
|
27 |
========== |
|
28 |
Log files |
|
29 |
========== |
|
30 |
|
|
31 |
In each run, snf-burnin stores log files in the folder defined in the |
|
32 |
--log-folder parameter (default is /var/log/burnin) under the folder |
|
33 |
with the timestamp of the snf-burnin-run and the image used for it. |
|
34 |
The name prefixes of the log files are: |
|
35 |
|
|
36 |
- details: Showing the complete log of snf-burnin run. |
|
37 |
- error: Showing the testcases that encountered a runtime error. |
|
38 |
- failed: Showing the testcases that encountered a failure. |
|
39 |
|
|
40 |
|
|
41 |
Example scripts |
|
42 |
----------------- |
|
43 |
Under /snf-tools/conf/ you can find example scripts for automating |
|
44 |
snf-burnin testing using cron. |
|
45 |
|
|
46 |
- **snf-burnin-run.sh** runs snf-burnin with the given parameters, deletes |
|
47 |
stale instances (servers, networks) from old runs and delete logs older than |
|
48 |
a week. It aborts if snf-burnin runs for longer than expected. |
|
49 |
|
|
50 |
- **Usage**: ./snf-burnin-run.sh TOKEN IMAGE-ID LOG_FOLDER |
|
51 |
|
|
52 |
- **snf-burnin-output.sh** checks for failed snf-burnin tests the last 30 |
|
53 |
minutes in a given log folder. Exit status is 0 if no failures where |
|
54 |
encountered, else exit status is 1. |
|
55 |
|
|
56 |
- **Usage**: ./snf-burnin-output.sh LOG_FOLDER |
b/docs/older/README.webproject | ||
---|---|---|
1 |
Synnefo web project |
|
2 |
=================== |
|
3 |
|
|
4 |
A synnefo helper package to ease up the deployment of synnefo components. |
|
5 |
|
|
6 |
The package wraps a django project which extends itself (urls, default_settings, |
|
7 |
installed_apps, middleware_classes) based on the synnefo components/packages |
|
8 |
installed on the system. |
|
9 |
|
|
10 |
The extending mechanism is based on the python setuptools `entry_points`. So |
|
11 |
if an application (synnefo component) wants to plug additional configuration |
|
12 |
to the django project it should define within its setup.py file the 'synnefo' |
|
13 |
appropriate entry_points. |
|
14 |
|
|
15 |
For usage example please take a look how snf-cyclades-app package defines its entry |
|
16 |
points in: |
|
17 |
|
|
18 |
- snf-cyclades-app/setup.py |
|
19 |
- snf-cyclades-app/app_settings/__init__.py |
|
20 |
|
b/snf-astakos-app/MANIFEST.in | ||
---|---|---|
1 |
include README |
|
2 | 1 |
include distribute_setup.py |
3 | 2 |
global-include */templates/* */static/* |
4 | 3 |
global-exclude */.DS_Store |
/dev/null | ||
---|---|---|
1 |
README |
|
2 |
====== |
|
3 |
|
|
4 |
Astakos is an identity management service, built by GRNET using Django (https://www.djangoproject.com/). |
|
5 |
Learn more about Astakos at: http://code.grnet.gr/projects/astakos |
|
6 |
|
|
7 |
Consult COPYRIGHT for licensing information. |
|
8 |
|
|
9 |
About Astakos application |
|
10 |
------------------------- |
|
11 |
|
|
12 |
This package contains the Django application that implements all identity management functions. |
|
13 |
|
|
14 |
How to run |
|
15 |
---------- |
|
16 |
|
|
17 |
Use snf-webproject to run Astakos automatically. |
|
18 |
|
|
19 |
To use Astakos in a custom Django project, add ``astakos.im`` to ``INSTALLED_APPS``. Astakos requires South (http://south.aeracode.org/). |
|
20 |
|
|
21 |
Also, add the following to your ``settings.py``:: |
|
22 |
|
|
23 |
TEMPLATE_CONTEXT_PROCESSORS = ( |
|
24 |
... |
|
25 |
'astakos.im.context_processors.cloudbar', |
|
26 |
'astakos.im.context_processors.im_modules', |
|
27 |
'astakos.im.context_processors.next', |
|
28 |
'astakos.im.context_processors.code', |
|
29 |
'astakos.im.context_processors.invitations') |
|
30 |
|
|
31 |
AUTHENTICATION_BACKENDS = ('astakos.im.auth_backends.EmailBackend', |
|
32 |
'astakos.im.auth_backends.TokenBackend') |
|
33 |
|
|
34 |
CUSTOM_USER_MODEL = 'astakos.im.AstakosUser' |
|
35 |
|
|
36 |
LOGIN_URL = '/im' |
|
37 |
|
|
38 |
Settings |
|
39 |
-------- |
|
40 |
|
|
41 |
Configure in ``settings.py`` or a ``.conf`` file in ``/etc/synnefo`` if using snf-webproject. |
|
42 |
|
|
43 |
=========================================== ============================================================================= =========================================================================================== |
|
44 |
Name Default value Description |
|
45 |
=========================================== ============================================================================= =========================================================================================== |
|
46 |
ASTAKOS_AUTH_TOKEN_DURATION one month Expiration time of newly created auth tokens |
|
47 |
ASTAKOS_DEFAULT_USER_LEVEL 4 Default (not-invited) user level |
|
48 |
ASTAKOS_INVITATIONS_PER_LEVEL {0:100, 1:2, 2:0, 3:0, 4:0} Number of user invitations per user level |
|
49 |
ASTAKOS_DEFAULT_FROM_EMAIL GRNET Cloud <no-reply\@grnet.gr> ``from`` parameter passed in ``django.core.mail.send_mail`` |
|
50 |
ASTAKOS_DEFAULT_CONTACT_EMAIL support\@cloud.grnet.gr Contact email |
|
51 |
SERVER_EMAIL None |
|
52 |
ADMINS None |
|
53 |
ASTAKOS_IM_MODULES ['local'] Signup modules |
|
54 |
ASTAKOS_FORCE_PROFILE_UPDATE True Force user profile verification |
|
55 |
ASTAKOS_INVITATIONS_ENABLED True Enable invitations |
|
56 |
ASTAKOS_COOKIE_NAME _pithos2_a ``Key`` parameter passed in ``django.http.HttpResponse.set_cookie`` |
|
57 |
ASTAKOS_COOKIE_DOMAIN None ``Domain`` parameter passed in ``django.http.HttpResponse.set_cookie`` |
|
58 |
ASTAKOS_COOKIE_SECURE True ``Secure`` parameter passed in ``django.http.HttpResponse.set_cookie`` |
|
59 |
ASTAKOS_IM_STATIC_URL /static/im/ URL to use when referring to static files |
|
60 |
ASTAKOS_MODERATION_ENABLED True If False and invitations are not enabled newly created user will be automatically accepted |
|
61 |
ASTAKOS_BASEURL \http://pithos.dev.grnet.gr Astakos baseurl |
|
62 |
ASTAKOS_SITENAME GRNET Cloud Service name that appears in emails |
|
63 |
ASTAKOS_RECAPTCHA_PUBLIC_KEY Recaptcha public key obtained after registration here: http://recaptcha.net |
|
64 |
ASTAKOS_RECAPTCHA_PRIVATE_KEY Recaptcha private key obtained after registration here: http://recaptcha.net |
|
65 |
ASTAKOS_RECAPTCHA_OPTIONS {'theme': 'custom', 'custom_theme_widget': 'okeanos_recaptcha'} Options for customizing reCAPTCHA look and feel |
|
66 |
ASTAKOS_RECAPTCHA_USE_SSL True |
|
67 |
ASTAKOS_RECAPTCHA_ENABLED False Enable recaptcha |
|
68 |
(see: http://code.google.com/intl/el-GR/apis/recaptcha/docs/customization.html) |
|
69 |
ASTAKOS_BILLING_FIELDS ['is_active'] AstakosUser fields to propagate in the billing system |
|
70 |
ASTAKOS_QUEUE_CONNECTION The queue connection ex. 'rabbitmq://guest:guest@localhost:5672/astakos' |
|
71 |
ASTAKOS_LOGOUT_NEXT Where the user should be redirected after logout |
|
72 |
(if not set and no next parameter is defined it renders login page with message) |
|
73 |
(if it is not set, it does not send messages) |
|
74 |
ASTAKOS_RE_USER_EMAIL_PATTERNS [] Email patterns that are automatically activated ex. ['^[a-zA-Z0-9\._-]+@grnet\.gr$'] |
|
75 |
|
|
76 |
ASTAKOS_LOGIN_MESSAGES [] Notification messages to display on login page header |
|
77 |
e.g. {'warning': 'Warning message (can contain html)'} |
|
78 |
ASTAKOS_SIGNUP_MESSAGES [] Notification messages to display on signup page header |
|
79 |
e.g. {'warning': 'Warning message (can contain html)'} |
|
80 |
ASTAKOS_PROFILE_MESSAGES [] Notification messages to display on profile page header |
|
81 |
e.g. {'warning': 'Warning message (can contain html)'} |
|
82 |
ASTAKOS_GLOBAL_MESSAGES [] Notification messages to display on every page header |
|
83 |
e.g. {'warning': 'Warning message (can contain html)'} |
|
84 |
ASTAKOS_PROFILE_EXTRA_LINKS {} Messages to display as extra actions in account forms |
|
85 |
e.g. {'https://cms.okeanos.grnet.gr/': 'Back to ~okeanos'} |
|
86 |
ASTAKOS_RATELIMIT_RETRIES_ALLOWED 3 Number of unsuccessful login requests per minute allowed for a specific account. |
|
87 |
When this number exceeds and ASTAKOS_RECAPTCHA_ENABLED is set the user has to solve a |
|
88 |
captcha challenge. |
|
89 |
ASTAKOS_EMAILCHANGE_ENABLED False Enable email change mechanism |
|
90 |
ASTAKOS_EMAILCHANGE_ACTIVATION_DAYS 10 Number of days that email change requests remain active |
|
91 |
ASTAKOS_LOGGING_LEVEL INFO Message logging severity |
|
92 |
ASTAKOS_INVITATION_EMAIL_SUBJECT 'Invitation to %s alpha2 testing' % SITENAME Invitation email subject |
|
93 |
ASTAKOS_GREETING_EMAIL_SUBJECT 'Welcome to %s alpha2 testing' % SITENAME Welcome email subject |
|
94 |
ASTAKOS_FEEDBACK_EMAIL_SUBJECT 'Feedback from %s alpha2 testing' % SITENAME Feedback email subject |
|
95 |
ASTAKOS_VERIFICATION_EMAIL_SUBJECT '%s alpha2 testing account activation is needed' % SITENAME Account activation email subject |
|
96 |
ASTAKOS_ACCOUNT_CREATION_SUBJECT '%s alpha2 testing account created (%%(user)s)' % SITENAME Account creation email subject |
|
97 |
ASTAKOS_GROUP_CREATION_SUBJECT '%s alpha2 testing group created (%%(group)s)' % SITENAME Group creation email subject |
|
98 |
ASTAKOS_HELPDESK_NOTIFICATION_EMAIL_SUBJECT '%s alpha2 testing account activated (%%(user)s)' % SITENAME Account activation helpdesk notification email subject |
|
99 |
ASTAKOS_EMAIL_CHANGE_EMAIL_SUBJECT 'Email change on %s alpha2 testing' % SITENAME Email change subject |
|
100 |
ASTAKOS_PASSWORD_RESET_EMAIL_SUBJECT 'Password reset on %s alpha2 testing' % SITENAME Password change email subject |
|
101 |
ASTAKOS_PROJECT_CREATION_SUBJECT '%s alpha2 testing project application created (%%(name)s)' % SITENAME Project application creation subject |
|
102 |
ASTAKOS_PROJECT_APPROVED_SUBJECT '%s alpha2 testing project application approved (%%(name)s)' % SITENAME Project application approval subject |
|
103 |
ASTAKOS_PROJECT_TERMINATION_SUBJECT '%s alpha2 testing project terminated (%%(name)s)' % SITENAME Project termination subject |
|
104 |
ASTAKOS_PROJECT_SUSPENSION_SUBJECT '%s alpha2 testing project suspended (%%(name)s)' % SITENAME Project suspension subject |
|
105 |
ASTAKOS_PROJECT_MEMBERSHIP_CHANGE_SUBJECT '%s alpha2 testing project membership changed (%%(name)s)' % SITENAME Project membership change subject |
|
106 |
|
|
107 |
ASTAKOS_QUOTAHOLDER_URL '' The quotaholder URI |
|
108 |
e.g. ``http://localhost:8080/api/quotaholder/v`` |
|
109 |
ASTAKOS_QUOTAHOLDER_TOKEN '' The secret token for accessing the quotaholder URI |
|
110 |
|
|
111 |
ASTAKOS_SERVICES {'cyclades': {'resources': [{'desc': 'Number of virtual machines', Default cloud service information |
|
112 |
'group': 'compute', |
|
113 |
'name': 'vm', |
|
114 |
'uplimit': 2}, |
|
115 |
{'desc': 'Virtual machine disk size', |
|
116 |
'group': 'compute', |
|
117 |
'name': 'diskspace', |
|
118 |
'unit': 'GB', |
|
119 |
'uplimit': 5}, |
|
120 |
{'desc': 'Number of virtual machine processors', |
|
121 |
'group': 'compute', |
|
122 |
'name': 'cpu', |
|
123 |
'uplimit': 1}, |
|
124 |
{'desc': 'Virtual machines', |
|
125 |
'group': 'compute', |
|
126 |
'name': 'ram', |
|
127 |
'unit': 'MB', |
|
128 |
'uplimit': 1024}], |
|
129 |
'url': 'https://node1.example.com/ui/'}, |
|
130 |
'pithos+': {'resources': [{'desc': 'Pithos account diskspace', |
|
131 |
'group': 'storage', |
|
132 |
'name': 'diskspace', |
|
133 |
'unit': 'bytes', |
|
134 |
'uplimit': 5368709120}], |
|
135 |
'url': 'https://node2.example.com/ui/'}} |
|
136 |
ASTAKOS_PAGINATE_BY 8 Number of object to be displayed per page |
|
137 |
ASTAKOS_PAGINATE_BY_ALL 15 Number of object to be displayed per pagein show all projects page |
|
138 |
|
|
139 |
ASTAKOS_NEWPASSWD_INVALIDATE_TOKEN True Enforce token renewal on password change/reset. If set to False, user can optionally decide |
|
140 |
whether to renew the token or not. |
|
141 |
ASTAKOS_ENABLE_LOCAL_ACCOUNT_MIGRATION True Permit local account migration to third party account |
|
142 |
ASTAKOS_RESOURCES_PRESENTATION_DATA {} Customizes resource presentation |
|
143 |
ASTAKOS_ENABLE_LOCAL_ACCOUNT_MIGRATION True Permits local account migration |
|
144 |
ASTAKOS_SHIBBOLETH_REQUIRE_NAME_INFO False Strict shibboleth usage |
|
145 |
ASTAKOS_ACTIVATION_REDIRECT_URL "/im/landing" |
|
146 |
ASTAKOS_TRANSLATE_UUIDS False If true, this enables a ui compatibility layer for the introduction of UUIDs in identity management. |
|
147 |
WARNING: Setting to True will break your installation. |
|
148 |
ASTAKOS_PROJECT_ADMINS set() Users to approve/deny project applications |
|
149 |
ASTAKOS_TWITTER_TOKEN '' Oauth2 twitter token |
|
150 |
ASTAKOS_TWITTER_SECRET '' Oauth2 twitter secret |
|
151 |
ASTAKOS_TWITTER_AUTH_FORCE_LOGIN Fals |
|
152 |
ASTAKOS_GOOGLE_CLIENT_ID '' Oauth2 google client id |
|
153 |
ASTAKOS_GOOGLE_SECRET '' Oauth2 google secret |
|
154 |
ASTAKOS_LINKEDIN_TOKEN '' Oauth2 LinkedIn token |
|
155 |
ASTAKOS_LINKEDIN_SECRET '' Oauth2 LinkedIn secret |
|
156 |
=========================================== ============================================================================= =========================================================================================== |
|
157 |
|
|
158 |
Administrator functions |
|
159 |
----------------------- |
|
160 |
|
|
161 |
Available as extensions to Django's command-line management utility: |
|
162 |
|
|
163 |
============================ =========================== |
|
164 |
Name Description |
|
165 |
============================ =========================== |
|
166 |
fix-superusers Transform superusers created by syncdb into AstakosUser instances |
|
167 |
full-cleanup Cleanup sessions and session catalog |
|
168 |
invitation-list List invitation |
|
169 |
invitation-show Show invitation details |
|
170 |
project-control Manage projects and applications |
|
171 |
project-list List projects |
|
172 |
project-show Show project details |
|
173 |
quota List and check the integrity of user quota |
|
174 |
reconcile-resources-astakos Reconcile resource usage of Quotaholder with Astakos DB |
|
175 |
resource-add Add resource |
|
176 |
resource-export-astakos Export astakos resources in json format |
|
177 |
resource-import Import resources |
|
178 |
resource-list List resources |
|
179 |
resource-modify Modify resources |
|
180 |
resource-remove Remove resource |
|
181 |
service-add Add service |
|
182 |
service-list List services |
|
183 |
service-modify Modify service |
|
184 |
service-remove Remove service |
|
185 |
term-add Add approval terms |
|
186 |
user-activation-send Send user activation |
|
187 |
user-add Add user |
|
188 |
user-auth-policy-add Create a new authentication provider policy profile |
|
189 |
user-auth-policy-list List existing authentication provider policy profiles |
|
190 |
user-auth-policy-remove Remove an authentication provider policy |
|
191 |
user-auth-policy-set Assign an existing authentication provider policy profile to a user or group |
|
192 |
user-auth-policy-show Show authentication provider profile details |
|
193 |
user-group-add Create a group with the given name |
|
194 |
user-group-list List available groups |
|
195 |
user-invite Invite somebody |
|
196 |
user-list List users |
|
197 |
user-modify Modify user |
|
198 |
user-show Show user details |
|
199 |
============================ =========================== |
b/snf-astakos-app/setup.py | ||
---|---|---|
49 | 49 |
|
50 | 50 |
# Package info |
51 | 51 |
VERSION = __version__ |
52 |
README = open(os.path.join(HERE, 'README')).read() |
|
53 | 52 |
SHORT_DESCRIPTION = 'Synnefo Identity Management component' |
54 | 53 |
|
55 | 54 |
PACKAGES_ROOT = '.' |
... | ... | |
184 | 183 |
license='BSD', |
185 | 184 |
url='http://www.synnefo.org/', |
186 | 185 |
description=SHORT_DESCRIPTION, |
187 |
long_description=README, |
|
188 | 186 |
classifiers=CLASSIFIERS, |
189 | 187 |
|
190 | 188 |
author='Synnefo development team', |
b/snf-branding/MANIFEST.in | ||
---|---|---|
1 |
include README |
|
2 | 1 |
include distribute_setup.py |
3 | 2 |
recursive-include synnefo_branding/static * |
/dev/null | ||
---|---|---|
1 |
README |
|
2 |
======= |
|
3 |
|
|
4 |
synnefo_branding app |
b/snf-branding/setup.py | ||
---|---|---|
47 | 47 |
|
48 | 48 |
# Package info |
49 | 49 |
VERSION = __version__ |
50 |
README = open(os.path.join(HERE, 'README')).read() |
|
51 | 50 |
SHORT_DESCRIPTION = 'Synnefo stats grapher' |
52 | 51 |
|
53 | 52 |
PACKAGES_ROOT = '.' |
... | ... | |
155 | 154 |
license='BSD', |
156 | 155 |
url='http://www.synnefo.org/', |
157 | 156 |
description=SHORT_DESCRIPTION, |
158 |
long_description=README, |
|
159 | 157 |
classifiers=CLASSIFIERS, |
160 | 158 |
|
161 | 159 |
author='Synnefo development team', |
b/snf-common/MANIFEST.in | ||
---|---|---|
1 |
include README |
|
2 | 1 |
include distribute_setup.py |
/dev/null | ||
---|---|---|
1 |
README |
|
2 |
======= |
|
3 |
snf-common provides a base layer of all synnefo related software. |
|
4 |
|
b/snf-common/setup.py | ||
---|---|---|
45 | 45 |
|
46 | 46 |
# Package info |
47 | 47 |
VERSION = __version__ |
48 |
README = open(os.path.join(HERE, 'README')).read() |
|
49 | 48 |
SHORT_DESCRIPTION = 'Common infrastructure for all Synnefo components' |
50 | 49 |
|
51 | 50 |
PACKAGES_ROOT = '.' |
... | ... | |
71 | 70 |
license='BSD', |
72 | 71 |
url='http://www.synnefo.org/', |
73 | 72 |
description=SHORT_DESCRIPTION, |
74 |
long_description=README, |
|
75 | 73 |
classifiers=CLASSIFIERS, |
76 | 74 |
|
77 | 75 |
author='Synnefo development team', |
b/snf-cyclades-app/MANIFEST.in | ||
---|---|---|
3 | 3 |
recursive-include synnefo/ui/static * |
4 | 4 |
recursive-include docs/ *.rst |
5 | 5 |
|
6 |
include README |
|
7 | 6 |
include distribute_setup.py |
/dev/null | ||
---|---|---|
1 |
README |
|
2 |
======= |
|
3 |
|
|
4 |
This is the top-level documentation file for the |
|
5 |
Synnefo cloud management software. |
|
6 |
|
|
7 |
Consult: |
|
8 |
* docs/src/develop.rst: for information on how to setup a development environment |
|
9 |
* docs/src/install.rst: for information on how to install the application |
|
10 |
* docs/src/deploy.rst: for information on how to deploy the application |
|
11 |
* docs/src/ci.rst: for information on how to setup a Jenkins-based |
|
12 |
continuous integration system |
|
13 |
* docs/src/i18n.rst: for information on application internationalization |
|
14 |
|
|
15 |
|
|
16 |
Synnefo may be distributed under the terms of the following license: |
|
17 |
|
|
18 |
Copyright 2011 GRNET S.A. All rights reserved. |
|
19 |
|
|
20 |
Redistribution and use in source and binary forms, with or |
|
21 |
without modification, are permitted provided that the following |
|
22 |
conditions are met: |
|
23 |
|
|
24 |
1. Redistributions of source code must retain the above |
|
25 |
copyright notice, this list of conditions and the following |
|
26 |
disclaimer. |
|
27 |
|
|
28 |
2. Redistributions in binary form must reproduce the above |
|
29 |
copyright notice, this list of conditions and the following |
|
30 |
disclaimer in the documentation and/or other materials |
|
31 |
provided with the distribution. |
|
32 |
|
|
33 |
THIS SOFTWARE IS PROVIDED BY GRNET S.A. ``AS IS'' AND ANY EXPRESS |
|
34 |
OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED |
|
35 |
WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR |
|
36 |
PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL GRNET S.A OR |
|
37 |
CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, |
|
38 |
SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT |
|
39 |
LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF |
|
40 |
USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED |
|
41 |
AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT |
|
42 |
LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN |
|
43 |
ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE |
|
44 |
POSSIBILITY OF SUCH DAMAGE. |
|
45 |
|
|
46 |
The views and conclusions contained in the software and |
|
47 |
documentation are those of the authors and should not be |
|
48 |
interpreted as representing official policies, either expressed |
|
49 |
or implied, of GRNET S.A. |
b/snf-cyclades-app/setup.py | ||
---|---|---|
47 | 47 |
|
48 | 48 |
# Package info |
49 | 49 |
VERSION = __version__ |
50 |
README = open(os.path.join(HERE, 'README')).read() |
|
51 | 50 |
SHORT_DESCRIPTION = 'Synnefo Compute, Network and Image component' |
52 | 51 |
|
53 | 52 |
PACKAGES_ROOT = '.' |
... | ... | |
188 | 187 |
license = 'BSD', |
189 | 188 |
url = 'http://www.synnefo.org/', |
190 | 189 |
description = SHORT_DESCRIPTION, |
191 |
long_description=README, |
|
192 | 190 |
classifiers = CLASSIFIERS, |
193 | 191 |
|
194 | 192 |
author='Synnefo development team', |
b/snf-django-lib/MANIFEST.in | ||
---|---|---|
1 |
include README |
|
2 | 1 |
include distribute_setup.py |
b/snf-django-lib/setup.py | ||
---|---|---|
48 | 48 |
|
49 | 49 |
# Package info |
50 | 50 |
VERSION = __version__ |
51 |
README = open(os.path.join(HERE, 'README')).read() |
|
52 | 51 |
SHORT_DESCRIPTION = 'Common Synnefo library for Django' |
53 | 52 |
|
54 | 53 |
PACKAGES_ROOT = '.' |
... | ... | |
162 | 161 |
license='BSD', |
163 | 162 |
url='http://www.synnefo.org/', |
164 | 163 |
description=SHORT_DESCRIPTION, |
165 |
long_description=README, |
|
166 | 164 |
classifiers=CLASSIFIERS, |
167 | 165 |
|
168 | 166 |
author='Synnefo development team', |
b/snf-pithos-app/MANIFEST.in | ||
---|---|---|
1 | 1 |
recursive-include pithos *.json *.html *.json *.xml *.txt |
2 | 2 |
recursive-include pithos/ui/static * |
3 | 3 |
|
4 |
include README |
|
5 | 4 |
include distribute_setup.py |
/dev/null | ||
---|---|---|
1 |
README |
|
2 |
====== |
|
3 |
|
|
4 |
Pithos is a file storage service, built by GRNET using Django (https://www.djangoproject.com/). |
|
5 |
Learn more about Pithos at: http://code.grnet.gr/projects/pithos |
|
6 |
|
|
7 |
Consult COPYRIGHT for licensing information. |
|
8 |
|
|
9 |
About Pithos application |
|
10 |
------------------------ |
|
11 |
|
|
12 |
This package contains the Django application that implements the Pithos v2 API. It depends on the Pithos backend, which does the actual data and metadata operations. |
|
13 |
|
|
14 |
How to run |
|
15 |
---------- |
|
16 |
|
|
17 |
Use snf-webproject to run Pithos automatically. |
|
18 |
|
|
19 |
To use Pithos in a custom Django project, just add ``pithos.api`` to ``INSTALLED_APPS``. |
|
20 |
|
|
21 |
Pithos has been tested with SQLite and PostgreSQL backend databases. When using PostgreSQL, ensure that the has been created with the appropriate encoding and collation:: |
|
22 |
|
|
23 |
CREATE DATABASE pithos WITH ENCODING 'UTF8' LC_COLLATE='C' LC_CTYPE='C' TEMPLATE=template0; |
|
24 |
|
|
25 |
Settings |
|
26 |
-------- |
|
27 |
|
|
28 |
Configure in ``settings.py`` or a ``.conf`` file in ``/etc/synnefo`` if using snf-webproject. |
|
29 |
|
|
30 |
=============================== ================================================================ ============================================================ |
|
31 |
Name Default value Description |
|
32 |
=============================== ================================================================ ============================================================ |
|
33 |
ASTAKOS_URL \https://<astakos.host>/ Astakos Authentication URL |
|
34 |
PITHOS_ASTAKOSCLIENT_POOLSIZE 200 The size of the http pool for the astakos client |
|
35 |
PITHOS_ASTAKOS_COOKIE_NAME _pithos2_a Cookie name to retrieve fallback token |
|
36 |
PITHOS_BACKEND_DB_MODULE pithos.backends.lib.sqlalchemy |
|
37 |
PITHOS_BACKEND_DB_CONNECTION sqlite:////tmp/pithos-backend.db SQLAlchemy database connection string |
|
38 |
PITHOS_BACKEND_BLOCK_MODULE pithos.backends.lib.hashfile |
|
39 |
PITHOS_BACKEND_BLOCK_PATH /tmp/pithos-data/ Map and block storage path |
|
40 |
PITHOS_BACKEND_BLOCK_UMASK 0o022 Map and block storage umask |
|
41 |
PITHOS_BACKEND_QUEUE_MODULE None Use ``pithos.backends.lib.rabbitmq`` to enable |
|
42 |
PITHOS_BACKEND_QUEUE_HOSTS None Format like [``amqp://guest:guest@localhost:5672`` |
|
43 |
PITHOS_BACKEND_QUEUE_EXCHANGE pithos |
|
44 |
PITHOS_BACKEND_ACCOUNT_QUOTA 50 GB (50 * 1024 ** 3) Default account quota (set to 0 to disable control) |
|
45 |
PITHOS_BACKEND_CONTAINER_QUOTA 0 Default container quota (set to 0 to disable control - default disabled) |
|
46 |
PITHOS_BACKEND_VERSIONING auto Default versioning policy for containers |
|
47 |
PITHOS_BACKEND_FREE_VERSIONING True Default versioning debit policy (default free) |
|
48 |
PITHOS_BACKEND_POOL_SIZE 5 Default backend pool size |
|
49 |
PITHOS_UPDATE_MD5 False Update object checksums |
|
50 |
PITHOS_SERVICE_TOKEN '' Service token acquired by the identity provider (astakos) |
|
51 |
PITHOS_RADOS_STORAGE False Enables or disables secondary Pithos storage on RADOS |
|
52 |
PITHOS_RADOS_POOL_BLOCKS None RADOS pool to be used for block storage |
|
53 |
PITHOS_RADOS_POOL_MAPS None RADOS pool to be used for maps storage |
|
54 |
PITHOS_TRANSLATE_UUIDS False Enables a ui compatibility layer for the introduction of UUIDs in identity management. |
|
55 |
PITHOS_PROXY_USER_SERVICES True Whether to proxy user feedback and catalog services |
|
56 |
PITHOS_PUBLIC_URL_SECURITY 16 How many random bytes to use for constructing the URL of Pithos public files |
|
57 |
PITHOS_PUBLIC_URL_ALPHABET '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ' The alphabet to use for constructing the URL of Pithos public files |
|
58 |
=============================== ================================================================ ============================================================ |
|
59 |
|
|
60 |
To update checksums asynchronously, enable the queue, install snf-pithos-tools and use ``pithos-dispatcher``:: |
|
61 |
|
|
62 |
pithos-dispatcher --exchange=pithos --key=pithos.object --callback=pithos.api.dispatch.update_md5 |
|
63 |
|
|
64 |
To send sharing notifications:: |
|
65 |
|
|
66 |
pithos-dispatcher --exchange=pithos --key=pithos.sharing --callback=pithos.api.dispatch.send_sharing_notification |
|
67 |
|
|
68 |
Administrator functions |
|
69 |
----------------------- |
|
70 |
|
|
71 |
Available as extensions to Django's command-line management utility: |
|
72 |
|
|
73 |
============ ====================== |
|
74 |
Name Description |
|
75 |
============ ====================== |
|
76 |
storagequota Get/set a user's quota |
|
77 |
============ ====================== |
|
78 |
|
|
79 |
|
b/snf-pithos-app/setup.py | ||
---|---|---|
47 | 47 |
|
48 | 48 |
# Package info |
49 | 49 |
VERSION = __version__ |
50 |
README = open(os.path.join(HERE, 'README')).read() |
|
51 | 50 |
SHORT_DESCRIPTION = 'Synnefo File/Object Storage component' |
52 | 51 |
|
53 | 52 |
PACKAGES_ROOT = '.' |
... | ... | |
172 | 171 |
license='BSD', |
173 | 172 |
url='http://www.synnefo.org/', |
174 | 173 |
description=SHORT_DESCRIPTION, |
175 |
long_description=README, |
|
176 | 174 |
classifiers=CLASSIFIERS, |
177 | 175 |
|
178 | 176 |
author='Synnefo development team', |
b/snf-pithos-backend/MANIFEST.in | ||
---|---|---|
1 | 1 |
recursive-include pithos *.json *.html *.json *.xml *.txt |
2 | 2 |
recursive-include pithos/backends/lib/sqlalchemy/alembic * |
3 | 3 |
|
4 |
include README |
|
5 | 4 |
include distribute_setup.py |
/dev/null | ||
---|---|---|
1 |
README |
|
2 |
====== |
|
3 |
|
|
4 |
Pithos is a file storage service, built by GRNET using Django (https://www.djangoproject.com/). |
|
5 |
Learn more about Pithos at: http://code.grnet.gr/projects/pithos |
|
6 |
|
|
7 |
Consult COPYRIGHT for licensing information. |
|
8 |
|
|
9 |
About Pithos backend |
|
10 |
-------------------- |
|
11 |
|
|
12 |
The backend is the library that handles the actual data storage and metadata management for Pithos. It is required by the Pithos application and can be used by any python script in need of direct access to Pithos storage services. |
b/snf-pithos-backend/setup.py | ||
---|---|---|
47 | 47 |
|
48 | 48 |
# Package info |
49 | 49 |
VERSION = __version__ |
50 |
README = open(os.path.join(HERE, 'README')).read() |
|
51 | 50 |
SHORT_DESCRIPTION = 'Backend library for the File/Object Storage component' |
52 | 51 |
|
53 | 52 |
PACKAGES_ROOT = '.' |
... | ... | |
170 | 169 |
license='BSD', |
171 | 170 |
url='http://www.synnefo.org/', |
172 | 171 |
description=SHORT_DESCRIPTION, |
173 |
long_description=README, |
|
174 | 172 |
classifiers=CLASSIFIERS, |
175 | 173 |
|
176 | 174 |
author='Synnefo development team', |
b/snf-stats-app/MANIFEST.in | ||
---|---|---|
1 |
include README |
|
2 | 1 |
include distribute_setup.py |
/dev/null | ||
---|---|---|
1 |
README |
|
2 |
======= |
|
3 |
|
|
4 |
snf-stats-app |
b/snf-stats-app/setup.py | ||
---|---|---|
45 | 45 |
|
46 | 46 |
# Package info |
47 | 47 |
VERSION = __version__ |
48 |
README = open(os.path.join(HERE, 'README')).read() |
|
49 | 48 |
SHORT_DESCRIPTION = 'Synnefo graphic statistics component' |
50 | 49 |
|
51 | 50 |
PACKAGES_ROOT = '.' |
... | ... | |
67 | 66 |
license='BSD', |
68 | 67 |
url='http://www.synnefo.org/', |
69 | 68 |
description=SHORT_DESCRIPTION, |
70 |
long_description=README, |
|
71 | 69 |
classifiers=CLASSIFIERS, |
72 | 70 |
|
73 | 71 |
author='Synnefo development team', |
b/snf-tools/MANIFEST.in | ||
---|---|---|
1 |
include README |
|
2 | 1 |
include distribute_setup.py |
/dev/null | ||
---|---|---|
1 |
README |
|
2 |
======= |
|
3 |
|
|
4 |
snf-burnin is an integration testing tool for a running Synnefo deployment. |
|
5 |
It runs test scenarios from the following categories: |
|
6 |
|
|
7 |
- Authentication |
|
8 |
- Images |
|
9 |
- Flavors |
|
10 |
- Servers |
|
11 |
- Networking |
|
12 |
|
|
13 |
====== |
|
14 |
Usage |
|
15 |
====== |
|
16 |
|
|
17 |
Example: |
|
18 |
-------- |
|
19 |
snf-burnin --api=API_URL --token=TOKEN \ |
|
20 |
--image-id=IMAGE-ID --log-folder=LOG_FOLDER |
|
21 |
|
|
22 |
|
|
23 |
For more options: |
|
24 |
------------------ |
|
25 |
snf-burnin --help |
|
26 |
|
|
27 |
========== |
|
28 |
Log files |
|
29 |
========== |
|
30 |
|
|
31 |
In each run, snf-burnin stores log files in the folder defined in the |
|
32 |
--log-folder parameter (default is /var/log/burnin) under the folder |
|
33 |
with the timestamp of the snf-burnin-run and the image used for it. |
|
34 |
The name prefixes of the log files are: |
|
35 |
|
|
36 |
- details: Showing the complete log of snf-burnin run. |
|
37 |
- error: Showing the testcases that encountered a runtime error. |
|
38 |
- failed: Showing the testcases that encountered a failure. |
|
39 |
|
|
40 |
|
|
41 |
Example scripts |
|
42 |
----------------- |
|
43 |
Under /snf-tools/conf/ you can find example scripts for automating |
|
44 |
snf-burnin testing using cron. |
|
45 |
|
|
46 |
- **snf-burnin-run.sh** runs snf-burnin with the given parameters, deletes |
|
47 |
stale instances (servers, networks) from old runs and delete logs older than |
|
48 |
a week. It aborts if snf-burnin runs for longer than expected. |
|
49 |
|
|
50 |
- **Usage**: ./snf-burnin-run.sh TOKEN IMAGE-ID LOG_FOLDER |
|
51 |
|
|
52 |
- **snf-burnin-output.sh** checks for failed snf-burnin tests the last 30 |
|
53 |
minutes in a given log folder. Exit status is 0 if no failures where |
|
54 |
encountered, else exit status is 1. |
|
55 |
|
|
56 |
- **Usage**: ./snf-burnin-output.sh LOG_FOLDER |
b/snf-tools/setup.py | ||
---|---|---|
47 | 47 |
|
48 | 48 |
# Package info |
49 | 49 |
VERSION = __version__ |
50 |
README = open(os.path.join(HERE, 'README')).read() |
|
51 | 50 |
SHORT_DESCRIPTION = 'Integration testing tool for a running Synnefo deployment' |
52 | 51 |
|
53 | 52 |
PACKAGES_ROOT = '.' |
... | ... | |
71 | 70 |
license='BSD', |
72 | 71 |
url='http://www.synnefo.org/', |
73 | 72 |
description=SHORT_DESCRIPTION, |
74 |
long_description=README, |
|
75 | 73 |
classifiers=CLASSIFIERS, |
76 | 74 |
|
77 | 75 |
author='Synnefo development team', |
b/snf-webproject/MANIFEST.in | ||
---|---|---|
4 | 4 |
recursive-include docs/ *.rst |
5 | 5 |
recursive-include extras/ * |
6 | 6 |
|
7 |
include README |
|
8 | 7 |
include distribute_setup.py |
/dev/null | ||
---|---|---|
1 |
Synnefo web project |
|
2 |
=================== |
|
3 |
|
|
4 |
A synnefo helper package to ease up the deployment of synnefo components. |
|
5 |
|
|
6 |
The package wraps a django project which extends itself (urls, default_settings, |
|
7 |
installed_apps, middleware_classes) based on the synnefo components/packages |
|
8 |
installed on the system. |
|
9 |
|
|
10 |
The extending mechanism is based on the python setuptools `entry_points`. So |
|
11 |
if an application (synnefo component) wants to plug additional configuration |
|
12 |
to the django project it should define within its setup.py file the 'synnefo' |
|
13 |
appropriate entry_points. |
|
14 |
|
|
15 |
For usage example please take a look how snf-cyclades-app package defines its entry |
|
16 |
points in: |
|
17 |
|
|
18 |
- snf-cyclades-app/setup.py |
|
19 |
- snf-cyclades-app/app_settings/__init__.py |
|
20 |
|
b/snf-webproject/setup.py | ||
---|---|---|
48 | 48 |
|
49 | 49 |
# Package info |
50 | 50 |
VERSION = __version__ |
51 |
README = open(os.path.join(HERE, 'README')).read() |
|
52 | 51 |
SHORT_DESCRIPTION = "Synnefo common infrastructure for Django" |
53 | 52 |
|
54 | 53 |
PACKAGES_ROOT = "." |
... | ... | |
167 | 166 |
license='BSD', |
168 | 167 |
url='http://www.synnefo.org/', |
169 | 168 |
description=SHORT_DESCRIPTION, |
170 |
long_description=README, |
|
171 | 169 |
classifiers=CLASSIFIERS, |
172 | 170 |
|
173 | 171 |
author='Synnefo development team', |
Also available in: Unified diff