From ed163d7e298e629f18131bde592fac6ae68ebc09 Mon Sep 17 00:00:00 2001 From: Tony Mack Date: Thu, 2 May 2013 20:05:42 -0400 Subject: [PATCH] remove references to OpenStackDriver and OpenStackClient outside of OpenStackManager --- plstackapi/core/admin.py | 8 +++----- plstackapi/openstack/manager.py | 5 ++++- plstackapi/openstack/siteagent.py | 21 +++++++++++---------- 3 files changed, 18 insertions(+), 16 deletions(-) diff --git a/plstackapi/core/admin.py b/plstackapi/core/admin.py index 039ac17..86b48a2 100644 --- a/plstackapi/core/admin.py +++ b/plstackapi/core/admin.py @@ -1,8 +1,6 @@ from plstackapi.core.models import Site from plstackapi.core.models import * from plstackapi.openstack.manager import OpenStackManager -from plstackapi.openstack.driver import OpenStackDriver -from plstackapi.openstack.client import OpenStackClient from django.contrib import admin from django.contrib.auth.models import Group @@ -122,9 +120,9 @@ class DeploymentNetworkAdmin(PlanetStackBaseAdmin): if obj is None: continue # give inline object access to driver and caller - client = OpenStackClient(tenant=request.user.site.login_base, **request.session.get('auth', {})) - inline.model.driver = OpenStackDriver(client=client) - inline.model.caller = request.user + auth = request.session.get('auth', {}) + auth['tenant'] = request.user.site.login_base + inline.model.os_manager = OpenStackManager(auth=auth, caller=request.user) yield inline.get_formset(request, obj) class SiteAdmin(OSModelAdmin): diff --git a/plstackapi/openstack/manager.py b/plstackapi/openstack/manager.py index e48acc0..c55e752 100644 --- a/plstackapi/openstack/manager.py +++ b/plstackapi/openstack/manager.py @@ -32,6 +32,9 @@ class OpenStackManager: self.enabled = manager_enabled self.driver = OpenStackDriver(client=self.client) self.caller=caller + if not self.caller: + self.caller = self.driver.admin_user + self.caller.user_id = self.caller.id @require_enabled def save_role(self, role): @@ -76,7 +79,7 @@ class OpenStackManager: @require_enabled - def save_site(self, site): + def save_site(self, site, add_role=True): if not site.tenant_id: tenant = self.driver.create_tenant(tenant_name=site.login_base, description=site.name, diff --git a/plstackapi/openstack/siteagent.py b/plstackapi/openstack/siteagent.py index 98fedae..dab9e8a 100644 --- a/plstackapi/openstack/siteagent.py +++ b/plstackapi/openstack/siteagent.py @@ -1,20 +1,21 @@ import os +import sys os.environ.setdefault("DJANGO_SETTINGS_MODULE", "plstackapi.planetstack.settings") import time from plstackapi.core.models.site import Site -from plstackapi.openstack.driver import OpenStackDriver +from plstackapi.openstack.manager import OpenStackManager class SiteAgent: def run(self): - driver = OpenStackDriver() - # fill in null tenant ids - sites = Site.objects.filter(tenant_id__in=[None, '']) - for site in sites: - # calling save() on the model should force the tenant_id to be set - site.driver = driver - site.caller = driver.admin_user - site.caller.user_id = site.caller.id - site.save() + manager = OpenStackManager() + # exit if openstack is disable or unavailable + if manager.enabled and manager.has_openstack: + # fill in null tenant ids + sites = Site.objects.filter(tenant_id__in=[None, '']) + for site in sites: + # calling save() on the model should force the tenant_id to be set + site.os_manager = manager + site.save() if __name__ == '__main__': SiteAgent().run() -- 2.43.0