1 from types import StringTypes
2 from plstackapi.openstack.client import OpenStackClient
3 from plstackapi.openstack.driver import OpenStackDriver
4 from plstackapi.core.api.auth import auth_check
5 from plstackapi.core.models import Site
8 def _get_sites(filter):
9 if isinstance(filter, StringTypes) and filter.isdigit():
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)
21 def add_site(auth, fields):
22 driver = OpenStackDriver(client = auth_check(auth))
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
32 def update_site(auth, id, **fields):
33 driver = OpenStackDriver(client = auth_check(auth))
34 sites = _get_sites(id)
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)
48 def delete_site(auth, filter={}):
49 driver = OpenStackDriver(client = auth_check(auth))
50 sites = _get_sites(id)
52 driver.delete_tenant(id=site.tenant_id)
56 def get_sites(auth, filter={}):
57 client = auth_check(auth)
58 sites = _get_sites(filter)