Mercurial > piecrust2
annotate piecrust/admin/siteinfo.py @ 1114:8af2ea1f5c34
tasks: Add new `tasks` command and infrastructure, with `mention` task.
* The new command lets `chef` run tasks from a queue.
* The webmention endpoint now adds a mention task.
* Moved mention handling code to a task runner.
author | Ludovic Chabant <ludovic@chabant.com> |
---|---|
date | Thu, 22 Feb 2018 22:12:45 -0800 |
parents | 68593928298d |
children | 0cca78761328 |
rev | line source |
---|---|
886
dcdec4b951a1
admin: Get the admin panel working again.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
1 import os |
dcdec4b951a1
admin: Get the admin panel working again.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
2 import os.path |
dcdec4b951a1
admin: Get the admin panel working again.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
3 import sys |
dcdec4b951a1
admin: Get the admin panel working again.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
4 import copy |
dcdec4b951a1
admin: Get the admin panel working again.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
5 import logging |
dcdec4b951a1
admin: Get the admin panel working again.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
6 import subprocess |
1105
68593928298d
internal: Remove unnecessary imports.
Ludovic Chabant <ludovic@chabant.com>
parents:
960
diff
changeset
|
7 from flask import flash |
960
8101692fdc11
admin: Add a "rebake preview assets" button to the dashboard.
Ludovic Chabant <ludovic@chabant.com>
parents:
955
diff
changeset
|
8 from piecrust import CACHE_DIR |
886
dcdec4b951a1
admin: Get the admin panel working again.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
9 from piecrust.app import PieCrustFactory |
dcdec4b951a1
admin: Get the admin panel working again.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
10 |
dcdec4b951a1
admin: Get the admin panel working again.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
11 |
dcdec4b951a1
admin: Get the admin panel working again.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
12 logger = logging.getLogger(__name__) |
dcdec4b951a1
admin: Get the admin panel working again.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
13 |
dcdec4b951a1
admin: Get the admin panel working again.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
14 |
dcdec4b951a1
admin: Get the admin panel working again.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
15 class UnauthorizedSiteAccessError(Exception): |
dcdec4b951a1
admin: Get the admin panel working again.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
16 pass |
dcdec4b951a1
admin: Get the admin panel working again.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
17 |
dcdec4b951a1
admin: Get the admin panel working again.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
18 |
dcdec4b951a1
admin: Get the admin panel working again.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
19 class InvalidSiteError(Exception): |
dcdec4b951a1
admin: Get the admin panel working again.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
20 pass |
dcdec4b951a1
admin: Get the admin panel working again.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
21 |
dcdec4b951a1
admin: Get the admin panel working again.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
22 |
dcdec4b951a1
admin: Get the admin panel working again.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
23 class SiteInfo: |
952
94fd4f07da83
admin: Fix more URL prefix issues, improve publishing.
Ludovic Chabant <ludovic@chabant.com>
parents:
935
diff
changeset
|
24 def __init__(self, root_dir, *, url_prefix='', debug=False): |
886
dcdec4b951a1
admin: Get the admin panel working again.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
25 self.root_dir = root_dir |
952
94fd4f07da83
admin: Fix more URL prefix issues, improve publishing.
Ludovic Chabant <ludovic@chabant.com>
parents:
935
diff
changeset
|
26 self.url_prefix = url_prefix |
886
dcdec4b951a1
admin: Get the admin panel working again.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
27 self.debug = debug |
dcdec4b951a1
admin: Get the admin panel working again.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
28 self._piecrust_factory = None |
dcdec4b951a1
admin: Get the admin panel working again.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
29 self._piecrust_app = None |
dcdec4b951a1
admin: Get the admin panel working again.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
30 self._scm = None |
dcdec4b951a1
admin: Get the admin panel working again.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
31 |
935
7ecb946bfafd
admin: Lots of fixes for running the admin panel in a WSGI server.
Ludovic Chabant <ludovic@chabant.com>
parents:
886
diff
changeset
|
32 def make_url(self, rel_url): |
952
94fd4f07da83
admin: Fix more URL prefix issues, improve publishing.
Ludovic Chabant <ludovic@chabant.com>
parents:
935
diff
changeset
|
33 prefix = self.url_prefix |
94fd4f07da83
admin: Fix more URL prefix issues, improve publishing.
Ludovic Chabant <ludovic@chabant.com>
parents:
935
diff
changeset
|
34 if not prefix: |
94fd4f07da83
admin: Fix more URL prefix issues, improve publishing.
Ludovic Chabant <ludovic@chabant.com>
parents:
935
diff
changeset
|
35 return rel_url |
94fd4f07da83
admin: Fix more URL prefix issues, improve publishing.
Ludovic Chabant <ludovic@chabant.com>
parents:
935
diff
changeset
|
36 return prefix + rel_url |
935
7ecb946bfafd
admin: Lots of fixes for running the admin panel in a WSGI server.
Ludovic Chabant <ludovic@chabant.com>
parents:
886
diff
changeset
|
37 |
7ecb946bfafd
admin: Lots of fixes for running the admin panel in a WSGI server.
Ludovic Chabant <ludovic@chabant.com>
parents:
886
diff
changeset
|
38 @property |
886
dcdec4b951a1
admin: Get the admin panel working again.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
39 def piecrust_factory(self): |
dcdec4b951a1
admin: Get the admin panel working again.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
40 if self._piecrust_factory is None: |
dcdec4b951a1
admin: Get the admin panel working again.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
41 self._piecrust_factory = PieCrustFactory( |
dcdec4b951a1
admin: Get the admin panel working again.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
42 self.root_dir, |
dcdec4b951a1
admin: Get the admin panel working again.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
43 cache_key='admin', |
dcdec4b951a1
admin: Get the admin panel working again.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
44 debug=self.debug, |
dcdec4b951a1
admin: Get the admin panel working again.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
45 config_values=[ |
935
7ecb946bfafd
admin: Lots of fixes for running the admin panel in a WSGI server.
Ludovic Chabant <ludovic@chabant.com>
parents:
886
diff
changeset
|
46 ('site/root', self.make_url('/preview/')), |
7ecb946bfafd
admin: Lots of fixes for running the admin panel in a WSGI server.
Ludovic Chabant <ludovic@chabant.com>
parents:
886
diff
changeset
|
47 ('site/asset_url_format', self.make_url( |
7ecb946bfafd
admin: Lots of fixes for running the admin panel in a WSGI server.
Ludovic Chabant <ludovic@chabant.com>
parents:
886
diff
changeset
|
48 '/preview/_asset/%path%'))] |
7ecb946bfafd
admin: Lots of fixes for running the admin panel in a WSGI server.
Ludovic Chabant <ludovic@chabant.com>
parents:
886
diff
changeset
|
49 ) |
886
dcdec4b951a1
admin: Get the admin panel working again.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
50 return self._piecrust_factory |
dcdec4b951a1
admin: Get the admin panel working again.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
51 |
dcdec4b951a1
admin: Get the admin panel working again.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
52 @property |
dcdec4b951a1
admin: Get the admin panel working again.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
53 def piecrust_app(self): |
dcdec4b951a1
admin: Get the admin panel working again.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
54 if self._piecrust_app is None: |
dcdec4b951a1
admin: Get the admin panel working again.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
55 logger.debug("Creating PieCrust admin app: %s" % self.root_dir) |
dcdec4b951a1
admin: Get the admin panel working again.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
56 self._piecrust_app = self.piecrust_factory.create() |
dcdec4b951a1
admin: Get the admin panel working again.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
57 return self._piecrust_app |
dcdec4b951a1
admin: Get the admin panel working again.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
58 |
dcdec4b951a1
admin: Get the admin panel working again.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
59 @property |
dcdec4b951a1
admin: Get the admin panel working again.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
60 def scm(self): |
dcdec4b951a1
admin: Get the admin panel working again.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
61 if self._scm is None: |
dcdec4b951a1
admin: Get the admin panel working again.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
62 cfg = copy.deepcopy(self.piecrust_app.config.get('scm', {})) |
dcdec4b951a1
admin: Get the admin panel working again.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
63 |
dcdec4b951a1
admin: Get the admin panel working again.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
64 if os.path.isdir(os.path.join(self.root_dir, '.hg')): |
dcdec4b951a1
admin: Get the admin panel working again.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
65 from .scm.mercurial import MercurialSourceControl |
dcdec4b951a1
admin: Get the admin panel working again.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
66 self._scm = MercurialSourceControl(self.root_dir, cfg) |
dcdec4b951a1
admin: Get the admin panel working again.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
67 elif os.path.isdir(os.path.join(self.root_dir, '.git')): |
dcdec4b951a1
admin: Get the admin panel working again.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
68 from .scm.git import GitSourceControl |
dcdec4b951a1
admin: Get the admin panel working again.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
69 self._scm = GitSourceControl(self.root_dir, cfg) |
dcdec4b951a1
admin: Get the admin panel working again.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
70 else: |
dcdec4b951a1
admin: Get the admin panel working again.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
71 self._scm = False |
dcdec4b951a1
admin: Get the admin panel working again.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
72 |
dcdec4b951a1
admin: Get the admin panel working again.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
73 return self._scm |
dcdec4b951a1
admin: Get the admin panel working again.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
74 |
dcdec4b951a1
admin: Get the admin panel working again.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
75 @property |
dcdec4b951a1
admin: Get the admin panel working again.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
76 def publish_pid_file(self): |
dcdec4b951a1
admin: Get the admin panel working again.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
77 return os.path.join(self.piecrust_app.cache_dir, 'publish.pid') |
dcdec4b951a1
admin: Get the admin panel working again.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
78 |
dcdec4b951a1
admin: Get the admin panel working again.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
79 @property |
dcdec4b951a1
admin: Get the admin panel working again.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
80 def publish_log_file(self): |
dcdec4b951a1
admin: Get the admin panel working again.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
81 return os.path.join(self.piecrust_app.cache_dir, 'publish.log') |
dcdec4b951a1
admin: Get the admin panel working again.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
82 |
960
8101692fdc11
admin: Add a "rebake preview assets" button to the dashboard.
Ludovic Chabant <ludovic@chabant.com>
parents:
955
diff
changeset
|
83 def rebakeAssets(self): |
8101692fdc11
admin: Add a "rebake preview assets" button to the dashboard.
Ludovic Chabant <ludovic@chabant.com>
parents:
955
diff
changeset
|
84 out_dir = os.path.join( |
8101692fdc11
admin: Add a "rebake preview assets" button to the dashboard.
Ludovic Chabant <ludovic@chabant.com>
parents:
955
diff
changeset
|
85 self.root_dir, |
8101692fdc11
admin: Add a "rebake preview assets" button to the dashboard.
Ludovic Chabant <ludovic@chabant.com>
parents:
955
diff
changeset
|
86 CACHE_DIR, |
8101692fdc11
admin: Add a "rebake preview assets" button to the dashboard.
Ludovic Chabant <ludovic@chabant.com>
parents:
955
diff
changeset
|
87 self.piecrust_factory.cache_key, |
8101692fdc11
admin: Add a "rebake preview assets" button to the dashboard.
Ludovic Chabant <ludovic@chabant.com>
parents:
955
diff
changeset
|
88 'server') |
8101692fdc11
admin: Add a "rebake preview assets" button to the dashboard.
Ludovic Chabant <ludovic@chabant.com>
parents:
955
diff
changeset
|
89 args = [ |
8101692fdc11
admin: Add a "rebake preview assets" button to the dashboard.
Ludovic Chabant <ludovic@chabant.com>
parents:
955
diff
changeset
|
90 '--no-color', |
8101692fdc11
admin: Add a "rebake preview assets" button to the dashboard.
Ludovic Chabant <ludovic@chabant.com>
parents:
955
diff
changeset
|
91 'bake', |
8101692fdc11
admin: Add a "rebake preview assets" button to the dashboard.
Ludovic Chabant <ludovic@chabant.com>
parents:
955
diff
changeset
|
92 '-o', out_dir, |
8101692fdc11
admin: Add a "rebake preview assets" button to the dashboard.
Ludovic Chabant <ludovic@chabant.com>
parents:
955
diff
changeset
|
93 '--assets-only'] |
8101692fdc11
admin: Add a "rebake preview assets" button to the dashboard.
Ludovic Chabant <ludovic@chabant.com>
parents:
955
diff
changeset
|
94 proc = self._runChef(args) |
8101692fdc11
admin: Add a "rebake preview assets" button to the dashboard.
Ludovic Chabant <ludovic@chabant.com>
parents:
955
diff
changeset
|
95 try: |
8101692fdc11
admin: Add a "rebake preview assets" button to the dashboard.
Ludovic Chabant <ludovic@chabant.com>
parents:
955
diff
changeset
|
96 proc.wait(timeout=2) |
8101692fdc11
admin: Add a "rebake preview assets" button to the dashboard.
Ludovic Chabant <ludovic@chabant.com>
parents:
955
diff
changeset
|
97 if proc.returncode == 0: |
8101692fdc11
admin: Add a "rebake preview assets" button to the dashboard.
Ludovic Chabant <ludovic@chabant.com>
parents:
955
diff
changeset
|
98 flash("Assets baked successfully!") |
8101692fdc11
admin: Add a "rebake preview assets" button to the dashboard.
Ludovic Chabant <ludovic@chabant.com>
parents:
955
diff
changeset
|
99 else: |
8101692fdc11
admin: Add a "rebake preview assets" button to the dashboard.
Ludovic Chabant <ludovic@chabant.com>
parents:
955
diff
changeset
|
100 flash("Asset baking process returned '%s'... check the log." % |
8101692fdc11
admin: Add a "rebake preview assets" button to the dashboard.
Ludovic Chabant <ludovic@chabant.com>
parents:
955
diff
changeset
|
101 proc.returncode) |
8101692fdc11
admin: Add a "rebake preview assets" button to the dashboard.
Ludovic Chabant <ludovic@chabant.com>
parents:
955
diff
changeset
|
102 except subprocess.TimeoutExpired: |
1105
68593928298d
internal: Remove unnecessary imports.
Ludovic Chabant <ludovic@chabant.com>
parents:
960
diff
changeset
|
103 flash("Asset baking process is still running... " |
68593928298d
internal: Remove unnecessary imports.
Ludovic Chabant <ludovic@chabant.com>
parents:
960
diff
changeset
|
104 "check the log later.") |
960
8101692fdc11
admin: Add a "rebake preview assets" button to the dashboard.
Ludovic Chabant <ludovic@chabant.com>
parents:
955
diff
changeset
|
105 |
955
a4f1eafd1964
admin: Show more info from the publishing process.
Ludovic Chabant <ludovic@chabant.com>
parents:
952
diff
changeset
|
106 def getPublishTargetLogFile(self, target): |
a4f1eafd1964
admin: Show more info from the publishing process.
Ludovic Chabant <ludovic@chabant.com>
parents:
952
diff
changeset
|
107 target = target.replace(' ', '_').lower() |
a4f1eafd1964
admin: Show more info from the publishing process.
Ludovic Chabant <ludovic@chabant.com>
parents:
952
diff
changeset
|
108 return os.path.join(self.piecrust_app.cache_dir, |
a4f1eafd1964
admin: Show more info from the publishing process.
Ludovic Chabant <ludovic@chabant.com>
parents:
952
diff
changeset
|
109 'publish.%s.log' % target) |
a4f1eafd1964
admin: Show more info from the publishing process.
Ludovic Chabant <ludovic@chabant.com>
parents:
952
diff
changeset
|
110 |
886
dcdec4b951a1
admin: Get the admin panel working again.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
111 def publish(self, target): |
dcdec4b951a1
admin: Get the admin panel working again.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
112 args = [ |
955
a4f1eafd1964
admin: Show more info from the publishing process.
Ludovic Chabant <ludovic@chabant.com>
parents:
952
diff
changeset
|
113 '--no-color', |
886
dcdec4b951a1
admin: Get the admin panel working again.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
114 '--pid-file', self.publish_pid_file, |
955
a4f1eafd1964
admin: Show more info from the publishing process.
Ludovic Chabant <ludovic@chabant.com>
parents:
952
diff
changeset
|
115 '--log', self.publish_log_file, |
886
dcdec4b951a1
admin: Get the admin panel working again.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
116 'publish', |
955
a4f1eafd1964
admin: Show more info from the publishing process.
Ludovic Chabant <ludovic@chabant.com>
parents:
952
diff
changeset
|
117 '--log-publisher', self.getPublishTargetLogFile(target), |
a4f1eafd1964
admin: Show more info from the publishing process.
Ludovic Chabant <ludovic@chabant.com>
parents:
952
diff
changeset
|
118 '--log-debug-info', |
886
dcdec4b951a1
admin: Get the admin panel working again.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
119 target] |
960
8101692fdc11
admin: Add a "rebake preview assets" button to the dashboard.
Ludovic Chabant <ludovic@chabant.com>
parents:
955
diff
changeset
|
120 proc = self._runChef(args) |
955
a4f1eafd1964
admin: Show more info from the publishing process.
Ludovic Chabant <ludovic@chabant.com>
parents:
952
diff
changeset
|
121 try: |
a4f1eafd1964
admin: Show more info from the publishing process.
Ludovic Chabant <ludovic@chabant.com>
parents:
952
diff
changeset
|
122 proc.wait(timeout=2) |
a4f1eafd1964
admin: Show more info from the publishing process.
Ludovic Chabant <ludovic@chabant.com>
parents:
952
diff
changeset
|
123 if proc.returncode == 0: |
a4f1eafd1964
admin: Show more info from the publishing process.
Ludovic Chabant <ludovic@chabant.com>
parents:
952
diff
changeset
|
124 flash("Publish process ran successfully!") |
a4f1eafd1964
admin: Show more info from the publishing process.
Ludovic Chabant <ludovic@chabant.com>
parents:
952
diff
changeset
|
125 else: |
a4f1eafd1964
admin: Show more info from the publishing process.
Ludovic Chabant <ludovic@chabant.com>
parents:
952
diff
changeset
|
126 flash("Publish process returned '%s'... check the log." % |
a4f1eafd1964
admin: Show more info from the publishing process.
Ludovic Chabant <ludovic@chabant.com>
parents:
952
diff
changeset
|
127 proc.returncode) |
a4f1eafd1964
admin: Show more info from the publishing process.
Ludovic Chabant <ludovic@chabant.com>
parents:
952
diff
changeset
|
128 except subprocess.TimeoutExpired: |
a4f1eafd1964
admin: Show more info from the publishing process.
Ludovic Chabant <ludovic@chabant.com>
parents:
952
diff
changeset
|
129 flash("Publish process is still running... check the log later.") |
886
dcdec4b951a1
admin: Get the admin panel working again.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
130 |
1114
8af2ea1f5c34
tasks: Add new `tasks` command and infrastructure, with `mention` task.
Ludovic Chabant <ludovic@chabant.com>
parents:
1105
diff
changeset
|
131 def runTask(self, task_id): |
8af2ea1f5c34
tasks: Add new `tasks` command and infrastructure, with `mention` task.
Ludovic Chabant <ludovic@chabant.com>
parents:
1105
diff
changeset
|
132 args = [ |
8af2ea1f5c34
tasks: Add new `tasks` command and infrastructure, with `mention` task.
Ludovic Chabant <ludovic@chabant.com>
parents:
1105
diff
changeset
|
133 '--no-color', |
8af2ea1f5c34
tasks: Add new `tasks` command and infrastructure, with `mention` task.
Ludovic Chabant <ludovic@chabant.com>
parents:
1105
diff
changeset
|
134 'tasks', 'run', |
8af2ea1f5c34
tasks: Add new `tasks` command and infrastructure, with `mention` task.
Ludovic Chabant <ludovic@chabant.com>
parents:
1105
diff
changeset
|
135 '-t', task_id] |
8af2ea1f5c34
tasks: Add new `tasks` command and infrastructure, with `mention` task.
Ludovic Chabant <ludovic@chabant.com>
parents:
1105
diff
changeset
|
136 self._runChef(args) |
8af2ea1f5c34
tasks: Add new `tasks` command and infrastructure, with `mention` task.
Ludovic Chabant <ludovic@chabant.com>
parents:
1105
diff
changeset
|
137 |
960
8101692fdc11
admin: Add a "rebake preview assets" button to the dashboard.
Ludovic Chabant <ludovic@chabant.com>
parents:
955
diff
changeset
|
138 def _runChef(self, args): |
8101692fdc11
admin: Add a "rebake preview assets" button to the dashboard.
Ludovic Chabant <ludovic@chabant.com>
parents:
955
diff
changeset
|
139 chef_path = os.path.realpath(os.path.join( |
8101692fdc11
admin: Add a "rebake preview assets" button to the dashboard.
Ludovic Chabant <ludovic@chabant.com>
parents:
955
diff
changeset
|
140 os.path.dirname(__file__), |
8101692fdc11
admin: Add a "rebake preview assets" button to the dashboard.
Ludovic Chabant <ludovic@chabant.com>
parents:
955
diff
changeset
|
141 '../../chef.py')) |
8101692fdc11
admin: Add a "rebake preview assets" button to the dashboard.
Ludovic Chabant <ludovic@chabant.com>
parents:
955
diff
changeset
|
142 args = [sys.executable, chef_path] + args |
8101692fdc11
admin: Add a "rebake preview assets" button to the dashboard.
Ludovic Chabant <ludovic@chabant.com>
parents:
955
diff
changeset
|
143 |
8101692fdc11
admin: Add a "rebake preview assets" button to the dashboard.
Ludovic Chabant <ludovic@chabant.com>
parents:
955
diff
changeset
|
144 env = {} |
8101692fdc11
admin: Add a "rebake preview assets" button to the dashboard.
Ludovic Chabant <ludovic@chabant.com>
parents:
955
diff
changeset
|
145 for k, v in os.environ.items(): |
8101692fdc11
admin: Add a "rebake preview assets" button to the dashboard.
Ludovic Chabant <ludovic@chabant.com>
parents:
955
diff
changeset
|
146 env[k] = v |
8101692fdc11
admin: Add a "rebake preview assets" button to the dashboard.
Ludovic Chabant <ludovic@chabant.com>
parents:
955
diff
changeset
|
147 env['PYTHONHOME'] = sys.prefix |
8101692fdc11
admin: Add a "rebake preview assets" button to the dashboard.
Ludovic Chabant <ludovic@chabant.com>
parents:
955
diff
changeset
|
148 |
8101692fdc11
admin: Add a "rebake preview assets" button to the dashboard.
Ludovic Chabant <ludovic@chabant.com>
parents:
955
diff
changeset
|
149 logger.info("Running chef command: %s" % args) |
8101692fdc11
admin: Add a "rebake preview assets" button to the dashboard.
Ludovic Chabant <ludovic@chabant.com>
parents:
955
diff
changeset
|
150 proc = subprocess.Popen(args, cwd=self.root_dir, env=env) |
8101692fdc11
admin: Add a "rebake preview assets" button to the dashboard.
Ludovic Chabant <ludovic@chabant.com>
parents:
955
diff
changeset
|
151 logger.info("Chef process ID: %s" % proc.pid) |
8101692fdc11
admin: Add a "rebake preview assets" button to the dashboard.
Ludovic Chabant <ludovic@chabant.com>
parents:
955
diff
changeset
|
152 return proc |