Merge lp:~michael.nelson/ubuntu-webcatalog/rt-61147-nagios-sca-import into lp:ubuntu-webcatalog

Proposed by Michael Nelson
Status: Rejected
Rejected by: Michael Nelson
Proposed branch: lp:~michael.nelson/ubuntu-webcatalog/rt-61147-nagios-sca-import
Merge into: lp:ubuntu-webcatalog
Diff against target: 242 lines (+55/-48)
8 files modified
.bzrignore (+1/-0)
django_project/config/main.cfg (+2/-24)
django_project/dev_logging.conf (+32/-0)
django_project/settings.py (+8/-1)
src/webcatalog/management/commands/import_exhibits.py (+1/-1)
src/webcatalog/management/commands/import_sca_apps.py (+9/-12)
src/webcatalog/templatetags/webcatalog.py (+2/-2)
src/webcatalog/wsgi.py (+0/-8)
To merge this branch: bzr merge lp:~michael.nelson/ubuntu-webcatalog/rt-61147-nagios-sca-import
Reviewer Review Type Date Requested Status
Canonical Consumer Applications Hackers Pending
Review via email: mp+182091@code.launchpad.net

Commit message

Switch to logging.config.fileConfig (as used in deployments) and add logger for import_sca_apps.

Description of the change

Switch to logging.config.fileConfig (as used in deployments) and add logger for import_sca_apps.

This is to fix RT 61147. Similar update of the deployed configs:

https://code.launchpad.net/~michael.nelson/ca-configs/uwc-add-sca-import-logging-config/+merge/182371

(it would be good to review the bracnhes together)

So I wasn't blindly updating the deployment logging config, I've updated the codebase to use the same logging config method (ie. from file). I hit one stumbling block (see the XXX), but otherwise works as expected.

To post a comment you must log in.

Unmerged revisions

189. By Michael Nelson

Removed other left-over logging config details.

188. By Michael Nelson

Switch to file-based logging config to match deployments.

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
=== modified file '.bzrignore'
--- .bzrignore 2013-02-28 16:23:58 +0000
+++ .bzrignore 2013-08-27 10:50:07 +0000
@@ -16,3 +16,4 @@
16django_project/local.cfg16django_project/local.cfg
17django_project/sreclient.py17django_project/sreclient.py
18oopses/18oopses/
19tmp/*
1920
=== modified file 'django_project/config/main.cfg'
--- django_project/config/main.cfg 2013-04-26 14:24:42 +0000
+++ django_project/config/main.cfg 2013-08-27 10:50:07 +0000
@@ -6,7 +6,6 @@
6 django.contrib.auth.backends.ModelBackend6 django.contrib.auth.backends.ModelBackend
77
8databases = django_databases8databases = django_databases
9logging = django_logging
109
11debug = true10debug = true
12media_root = django_project/media_root_dev/11media_root = django_project/media_root_dev/
@@ -73,29 +72,8 @@
73engine = django.db.backends.sqlite372engine = django.db.backends.sqlite3
74name = webcatalog.db73name = webcatalog.db
7574
76[django_logging]75[logging]
77version = 176webapp_logging_config = ./django_project/dev_logging.conf
78disable_existing_loggers = True
79handlers = django_logging_handlers
80loggers = django_logging_loggers
81root = django_logging_root
82
83[django_logging_root]
84level = WARNING
85
86[django_logging_loggers]
87django = django_logger
88
89[django_logger]
90handlers = null
91level = WARNING
92
93[django_logging_handlers]
94null = django_null_logging_handler
95
96[django_null_logging_handler]
97level = WARNING
98class = django.utils.log.NullHandler
9977
100[openid]78[openid]
101openid_sso_server_url = https://login.staging.ubuntu.com79openid_sso_server_url = https://login.staging.ubuntu.com
10280
=== added file 'django_project/dev_logging.conf'
--- django_project/dev_logging.conf 1970-01-01 00:00:00 +0000
+++ django_project/dev_logging.conf 2013-08-27 10:50:07 +0000
@@ -0,0 +1,32 @@
1[loggers]
2keys=root,import_sca_apps
3
4[handlers]
5keys=webapp,commands
6
7[formatters]
8keys=simple_formatter
9
10[logger_root]
11level=INFO
12handlers=webapp
13
14[logger_import_sca_apps]
15level=INFO
16handlers=commands
17propagate=0
18qualname=webcatalog.management.commands.import_sca_apps
19
20[handler_webapp]
21class=FileHandler
22args=('./tmp/webapp.log',)
23formatter=simple_formatter
24
25[handler_commands]
26class=FileHandler
27args=('./tmp/import_sca_apps.log',)
28formatter=simple_formatter
29
30[formatter_simple_formatter]
31format=%(asctime)s - %(name)s - %(levelname)s - %(message)s
32datefmt=
033
=== modified file 'django_project/settings.py'
--- django_project/settings.py 2012-06-26 23:43:35 +0000
+++ django_project/settings.py 2013-08-27 10:50:07 +0000
@@ -13,7 +13,14 @@
13 'local.cfg'])13 'local.cfg'])
14 if os.path.exists(path)]14 if os.path.exists(path)]
1515
16configglue(WebCatalogSchema, config_files, __name__)16parser = configglue(WebCatalogSchema, config_files, __name__)
1717
18import djcelery18import djcelery
19djcelery.setup_loader()19djcelery.setup_loader()
20
21# XXX 2013-08-27 bug=1217290 django_configglue doesn't support file config.
22# Configure the logging once the settings have been parsed.
23import logging.config
24logging.config.fileConfig(
25 parser.get('logging', 'webapp_logging_config'),
26 disable_existing_loggers=True)
2027
=== modified file 'src/webcatalog/management/commands/import_exhibits.py'
--- src/webcatalog/management/commands/import_exhibits.py 2012-08-20 15:34:18 +0000
+++ src/webcatalog/management/commands/import_exhibits.py 2013-08-27 10:50:07 +0000
@@ -81,4 +81,4 @@
81 # Unpublish other exhibits81 # Unpublish other exhibits
82 Exhibit.objects.filter(published=True).exclude(82 Exhibit.objects.filter(published=True).exclude(
83 sca_id__in=[xibit['id'] for xibit in exhibits]).update(83 sca_id__in=[xibit['id'] for xibit in exhibits]).update(
84 published=False)84 published=False)
8585
=== modified file 'src/webcatalog/management/commands/import_sca_apps.py'
--- src/webcatalog/management/commands/import_sca_apps.py 2012-08-21 13:57:11 +0000
+++ src/webcatalog/management/commands/import_sca_apps.py 2013-08-27 10:50:07 +0000
@@ -22,6 +22,7 @@
22from __future__ import absolute_import22from __future__ import absolute_import
2323
24import json24import json
25import logging
25import os26import os
26import urllib27import urllib
27from collections import defaultdict28from collections import defaultdict
@@ -42,12 +43,15 @@
42__all__ = []43__all__ = []
4344
4445
46logger = logging.getLogger(__name__)
47
48
45class Command(BaseCommand):49class Command(BaseCommand):
46 help = "Import for-purchase applications from Software Center."50 help = "Import for-purchase applications from Software Center."
47 verbosity = 0
4851
49 def handle(self, *args, **options):52 def handle(self, *args, **options):
50 url = '%sapplications/any/ubuntu/any/any/' % settings.SCA_API_URL53 url = '%sapplications/any/ubuntu/any/any/' % settings.SCA_API_URL
54 logger.info("Starting import of sca apps at {0}".format(url))
51 # call api and get apps for purchase55 # call api and get apps for purchase
52 response = urllib.urlopen(url)56 response = urllib.urlopen(url)
53 if response.code != 200:57 if response.code != 200:
@@ -55,8 +59,8 @@
55 app_list = json.loads(response.read())59 app_list = json.loads(response.read())
56 imported_apps = Application.objects.filter(60 imported_apps = Application.objects.filter(
57 imported_from_sca=True).values_list(61 imported_from_sca=True).values_list(
58 'package_name',62 'package_name',
59 'distroseries__code_name')63 'distroseries__code_name')
60 existing_apps = defaultdict(list)64 existing_apps = defaultdict(list)
61 for package_name, code_name in imported_apps:65 for package_name, code_name in imported_apps:
62 existing_apps[package_name].append(code_name)66 existing_apps[package_name].append(code_name)
@@ -71,7 +75,7 @@
71 distroseries, created = DistroSeries.objects.get_or_create(75 distroseries, created = DistroSeries.objects.get_or_create(
72 code_name=series_name)76 code_name=series_name)
73 if created:77 if created:
74 self.output(78 logger.info(
75 "Created a DistroSeries record called '{0}'.\n".format(79 "Created a DistroSeries record called '{0}'.\n".format(
76 series_name), 1)80 series_name), 1)
77 package_name = self.import_app_from_data(81 package_name = self.import_app_from_data(
@@ -91,6 +95,7 @@
91 Application.objects.filter(95 Application.objects.filter(
92 package_name=package_name,96 package_name=package_name,
93 distroseries__code_name__in=series).delete()97 distroseries__code_name__in=series).delete()
98 logger.info("Finished import of {0} sca apps.".format(len(app_list)))
9499
95 def import_app_from_data(self, app_data, icon_data, distroseries):100 def import_app_from_data(self, app_data, icon_data, distroseries):
96 form = SCAApplicationForm.from_api_data(101 form = SCAApplicationForm.from_api_data(
@@ -100,7 +105,6 @@
100 department_names = app_data.get('department', [])105 department_names = app_data.get('department', [])
101 app.update_departments(department_names)106 app.update_departments(department_names)
102 self.add_icon_to_app(app, data=icon_data)107 self.add_icon_to_app(app, data=icon_data)
103 self.output(u"{0} created.\n".format(app.name).encode('utf-8'), 1)
104 return app.package_name108 return app.package_name
105109
106 def get_icon_data(self, app_data):110 def get_icon_data(self, app_data):
@@ -125,10 +129,3 @@
125 finally:129 finally:
126 if os.path.exists(filename):130 if os.path.exists(filename):
127 os.unlink(filename)131 os.unlink(filename)
128
129 def output(self, message, level=None, flush=False):
130 if hasattr(self, 'stdout'):
131 if level is None or self.verbosity >= level:
132 self.stdout.write(message)
133 if flush:
134 self.stdout.flush()
135132
=== modified file 'src/webcatalog/templatetags/webcatalog.py'
--- src/webcatalog/templatetags/webcatalog.py 2013-02-22 21:02:05 +0000
+++ src/webcatalog/templatetags/webcatalog.py 2013-08-27 10:50:07 +0000
@@ -79,8 +79,8 @@
79 '{application_name} is also available for '79 '{application_name} is also available for '
80 '<a href="{app_in_series_url}">your version of '80 '<a href="{app_in_series_url}">your version of '
81 'Ubuntu</a>.').format(81 'Ubuntu</a>.').format(
82 application_name=escape(application.name),82 application_name=escape(application.name),
83 app_in_series_url=app_in_series_url)83 app_in_series_url=app_in_series_url)
84 context['message_text'] = mark_safe(84 context['message_text'] = mark_safe(
85 context['message_text'])85 context['message_text'])
86 return context86 return context
8787
=== modified file 'src/webcatalog/wsgi.py'
--- src/webcatalog/wsgi.py 2013-02-28 16:23:58 +0000
+++ src/webcatalog/wsgi.py 2013-08-27 10:50:07 +0000
@@ -17,12 +17,10 @@
1717
18"""wsgi stack for the Apps Directory."""18"""wsgi stack for the Apps Directory."""
1919
20import logging.config
21import oops_dictconfig20import oops_dictconfig
22import oops_wsgi21import oops_wsgi
23import oops_wsgi.django22import oops_wsgi.django
24import os23import os
25import platform
26import uuid24import uuid
2725
28from django.conf import settings26from django.conf import settings
@@ -64,12 +62,6 @@
64 if settings.SHOULD_SERVE_HTTPS:62 if settings.SHOULD_SERVE_HTTPS:
65 os.environ['HTTPS'] = 'on'63 os.environ['HTTPS'] = 'on'
6664
67 default_id = ''.join(x for x in platform.node() if x.isalpha())
68 appserver_id = getattr(settings, 'APPSERVER_ID', default_id)
69 logging_config = settings.WEBAPP_LOGGING_CONFIG
70 if logging_config:
71 logging.config.fileConfig(logging_config)
72
73 non_oops_app = EagerOOPSWSGIHandler()65 non_oops_app = EagerOOPSWSGIHandler()
7466
75 config = oops_dictconfig.config_from_dict(settings.OOPSES)67 config = oops_dictconfig.config_from_dict(settings.OOPSES)
7668
=== added directory 'tmp'

Subscribers

People subscribed via source and target branches