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