merge latest code
[plstackapi.git] / plstackapi / core / api / sites.py
1 from plstackapi.openstack.client import OpenStackClient
2 from plstackapi.openstack.driver import OpenStackDriver
3 from plstackapi.core.api.auth import auth_check
4 from plstackapi.core.models import Site
5
6
7 def _get_sites(filter):
8     if isinstance(filter, int):
9         sites = Site.objects.filter(id=filter)
10     elif isinstance(filter, StringTypes):
11         sites = Site.objects.filter(name=filter)
12     elif isinstance(filer, dict):
13         sites = Site.objects.filter(**filter)
14     else:
15         sites = []
16     return sites 
17
18 def add_site(auth, fields):
19     driver = OpenStackDriver(client = auth_check(auth))
20     site = Site(**fields)
21     nova_fields = {'tenant_name': site.login_base,
22                    'description': site.name,
23                    'enabled': site.enabled}    
24     tenant = driver.create_tenant(**nova_fields)
25     site.tenant_id=tenant.id
26     site.save()
27     return site
28
29 def update_site(auth, id, **fields):
30     driver = OpenStackDriver(client = auth_check(auth))
31     sites = _get_sites(id)
32     if not sites:
33         return
34
35     site = Site[0]
36     nova_fields = {}
37     if 'description' in fields:
38         nova_fields['description'] = fields['name']
39     if 'enabled' in fields:
40         nova_fields['enabled'] = fields['enabled']
41     driver.update_tenant(site.tenant_id, **nova_fields)
42     site.update(**fields)
43     return site 
44
45 def delete_site(auth, filter={}):
46     driver = OpenStackDriver(client = auth_check(auth))   
47     sites = _get_sites(id)
48     for site in sites:
49         driver.delete_tenant(id=site.tenant_id) 
50         site.delete()
51     return 1
52
53 def get_sites(auth, filter={}):
54     client = auth_check(auth)
55     sites = _get_sites(id)
56     return sites             
57         
58
59