123f13937bd9c61b35606887aabc511e87015d01
[plstackapi.git] / planetstack / core / api / sites.py
1 from types import StringTypes
2 from django.contrib.auth import authenticate
3 from openstack.manager import OpenStackManager    
4 from core.models import Site
5
6 def _get_sites(filter):
7     if isinstance(filter, StringTypes) and filter.isdigit():
8         filter = int(filter)
9     if isinstance(filter, int):
10         sites = Site.objects.filter(id=filter)
11     elif isinstance(filter, StringTypes):
12         sites = Site.objects.filter(login_base=filter)
13     elif isinstance(filter, dict):
14         sites = Site.objects.filter(**filter)
15     else:
16         sites = []
17     return sites 
18
19 def add_site(auth, fields):
20     user = authenticate(username=auth.get('username'),
21                         password=auth.get('password'))
22     auth['tenant'] = user.site.login_base
23
24     site = Site(**fields)
25     site.os_manager = OpenStackManager(auth=auth, caller = user)
26     site.save()
27     return site
28
29 def update_site(auth, id, **fields):
30     user = authenticate(username=auth.get('username'),
31                         password=auth.get('password'))
32     auth['tenant'] = user.site.login_base
33
34     sites = _get_sites(id)
35     if not sites:
36         return
37
38     site = Site[0]
39     site.os_manager = OpenStackManager(auth=auth, caller = user)
40     site.update(**fields)
41     return site 
42
43 def delete_site(auth, filter={}):
44     user = authenticate(username=auth.get('username'),
45                         password=auth.get('password'))
46     auth['tenant'] = user.site.login_base
47     sites = _get_sites(id)
48     for site in sites:
49         site.os_manager = OpenStackManager(auth=auth, caller = user)
50         site.delete()
51     return 1
52
53 def get_sites(auth, filter={}):
54     user = authenticate(username=auth.get('username'),
55                         password=auth.get('password'))
56     sites = _get_sites(filter)
57     return sites             
58         
59
60