Merge lp:~gandelman-a/nova/iso8601 into lp:~openstack-ubuntu-packagers/nova/ubuntu

Proposed by Adam Gandelman
Status: Needs review
Proposed branch: lp:~gandelman-a/nova/iso8601
Merge into: lp:~openstack-ubuntu-packagers/nova/ubuntu
Diff against target: 370 lines (+85/-52)
6 files modified
debian/changelog (+28/-2)
debian/control (+3/-10)
debian/nova.conf (+1/-1)
debian/patches/libvirt-use-console-pipe.patch (+37/-35)
debian/patches/series (+1/-1)
debian/rules (+15/-3)
To merge this branch: bzr merge lp:~gandelman-a/nova/iso8601
Reviewer Review Type Date Requested Status
OpenStack Ubuntu packagers Pending
Review via email: mp+93791@code.launchpad.net

Description of the change

New dependency: python-iso8601

To post a comment you must log in.

Unmerged revisions

313. By Adam Gandelman

debian/control: Add new dependency python-iso8601 to Build-Depends +
python-nova Depends

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
=== modified file 'debian/changelog'
--- debian/changelog 2012-02-13 17:01:11 +0000
+++ debian/changelog 2012-02-20 10:08:22 +0000
@@ -1,4 +1,21 @@
1nova (2012.1~e4~20120211.12605-0ubuntu1) UNRELEASED; urgency=low1nova (2012.1~e4~20120217.12709-0ubuntu2) UNRELEASED; urgency=low
2
3 [ Adam Gandelman ]
4 debian/control: Add new dependency python-iso8601 to Build-Depends +
5 python-nova Depends
6
7 [ Monty Taylor ]
8 * Move files from nova/locale to /usr/share/locale
9
10 [Chuck Short]
11 * debian/rules: Fix FTBFS.
12
13 [ Chuck Short ]
14 * Add depends on python-babel.
15
16 -- Chuck Short <zulcss@ubuntu.com> Sun, 19 Feb 2012 13:48:42 -0500
17
18nova (2012.1~e4~20120217.12709-0ubuntu1) precise; urgency=low
219
3 [ Dave Walker (Daviey) ]20 [ Dave Walker (Daviey) ]
4 * New upstream snapshot21 * New upstream snapshot
@@ -7,7 +24,16 @@
7 * debian/patches/libvirt-use-console-pipe.patch:24 * debian/patches/libvirt-use-console-pipe.patch:
8 - Rebased against latest trunk25 - Rebased against latest trunk
926
10 -- Dave Walker (Daviey) <DaveWalker@ubuntu.com> Sat, 11 Feb 2012 02:03:25 +000027 [ Chuck Short ]
28 * debian/nova.conf: Re-enable default iscsi_helper.
29 * debian/nova.conf: More fixups.
30 * debian/control: Dont depend and conflicts on nova-compute-
31 hypervisor. (LP: #923681)
32 * debian/patches/libvirt-us-console-pipe.patch: Refreshed.
33 * Temporarily disable console patch. (LP: #932787)
34 * New usptream version.
35
36 -- Chuck Short <zulcss@ubuntu.com> Fri, 17 Feb 2012 11:02:12 -0500
1137
12nova (2012.1~e4~20120210.12574-0ubuntu1) precise; urgency=low38nova (2012.1~e4~20120210.12574-0ubuntu1) precise; urgency=low
1339
1440
=== modified file 'debian/control'
--- debian/control 2012-02-13 17:01:11 +0000
+++ debian/control 2012-02-20 10:08:22 +0000
@@ -42,6 +42,8 @@
42 python-xattr,42 python-xattr,
43 python-feedparser,43 python-feedparser,
44 python-crypto,44 python-crypto,
45 python-babel,
46 python-iso8601,
45 pep847 pep8
46Build-Conflicts: python-cjson48Build-Conflicts: python-cjson
47Standards-Version: 3.9.249Standards-Version: 3.9.2
@@ -84,6 +86,7 @@
84 python-xattr,86 python-xattr,
85 python-daemon,87 python-daemon,
86 python-suds,88 python-suds,
89 python-iso8601,
87 sudo,90 sudo,
88 ${misc:Depends}91 ${misc:Depends}
89Suggests: python-suds (>= 0.4.0),92Suggests: python-suds (>= 0.4.0),
@@ -156,8 +159,6 @@
156Architecture: all159Architecture: all
157Depends: nova-compute (= ${binary:Version}), python-libvirt, libvirt-bin, ${misc:Depends}160Depends: nova-compute (= ${binary:Version}), python-libvirt, libvirt-bin, ${misc:Depends}
158Provides: nova-compute-hypervisor161Provides: nova-compute-hypervisor
159Replaces: nova-compute-hypervisor
160Conflicts: nova-compute-hypervisor
161Description: OpenStack Compute - compute node (LXC)162Description: OpenStack Compute - compute node (LXC)
162 OpenStack is a reliable cloud infrastructure. Its mission is to produce163 OpenStack is a reliable cloud infrastructure. Its mission is to produce
163 the ubiquitous cloud computing platform that will meet the needs of public164 the ubiquitous cloud computing platform that will meet the needs of public
@@ -179,8 +180,6 @@
179Architecture: all180Architecture: all
180Depends: nova-compute (= ${binary:Version}), python-libvirt, libvirt-bin, user-mode-linux, ${misc:Depends}181Depends: nova-compute (= ${binary:Version}), python-libvirt, libvirt-bin, user-mode-linux, ${misc:Depends}
181Provides: nova-compute-hypervisor182Provides: nova-compute-hypervisor
182Replaces: nova-compute-hypervisor
183Conflicts: nova-compute-hypervisor
184Description: OpenStack Compute - compute node (UserModeLinux)183Description: OpenStack Compute - compute node (UserModeLinux)
185 OpenStack is a reliable cloud infrastructure. Its mission is to produce184 OpenStack is a reliable cloud infrastructure. Its mission is to produce
186 the ubiquitous cloud computing platform that will meet the needs of public185 the ubiquitous cloud computing platform that will meet the needs of public
@@ -203,8 +202,6 @@
203Depends: nova-compute (= ${binary:Version}), python-libvirt, libvirt-bin, xen-hypervisor-4.1-amd64 | xen-hypervisor-4.1-i386,202Depends: nova-compute (= ${binary:Version}), python-libvirt, libvirt-bin, xen-hypervisor-4.1-amd64 | xen-hypervisor-4.1-i386,
204 ${misc:Depends}203 ${misc:Depends}
205Provides: nova-compute-hypervisor204Provides: nova-compute-hypervisor
206Replaces: nova-compute-hypervisor
207Conflicts: nova-compute-hypervisor
208Description: OpenStack Compute - compute node (Xen)205Description: OpenStack Compute - compute node (Xen)
209 OpenStack is a reliable cloud infrastructure. Its mission is to produce206 OpenStack is a reliable cloud infrastructure. Its mission is to produce
210 the ubiquitous cloud computing platform that will meet the needs of public207 the ubiquitous cloud computing platform that will meet the needs of public
@@ -226,8 +223,6 @@
226Architecture: all223Architecture: all
227Depends: nova-compute (= ${binary:Version}), python-libvirt, libvirt-bin, qemu, ${misc:Depends}224Depends: nova-compute (= ${binary:Version}), python-libvirt, libvirt-bin, qemu, ${misc:Depends}
228Provides: nova-compute-hypervisor225Provides: nova-compute-hypervisor
229Replaces: nova-compute-hypervisor
230Conflicts: nova-compute-hypervisor
231Description: OpenStack Compute - compute node (QEmu)226Description: OpenStack Compute - compute node (QEmu)
232 OpenStack is a reliable cloud infrastructure. Its mission is to produce227 OpenStack is a reliable cloud infrastructure. Its mission is to produce
233 the ubiquitous cloud computing platform that will meet the needs of public228 the ubiquitous cloud computing platform that will meet the needs of public
@@ -249,8 +244,6 @@
249Architecture: all244Architecture: all
250Depends: nova-compute (= ${binary:Version}), python-libvirt, libvirt-bin, kvm, ${misc:Depends}245Depends: nova-compute (= ${binary:Version}), python-libvirt, libvirt-bin, kvm, ${misc:Depends}
251Provides: nova-compute-hypervisor246Provides: nova-compute-hypervisor
252Replaces: nova-compute-hypervisor
253Conflicts: nova-compute-hypervisor
254Description: OpenStack Compute - compute node (KVM)247Description: OpenStack Compute - compute node (KVM)
255 OpenStack is a reliable cloud infrastructure. Its mission is to produce248 OpenStack is a reliable cloud infrastructure. Its mission is to produce
256 the ubiquitous cloud computing platform that will meet the needs of public249 the ubiquitous cloud computing platform that will meet the needs of public
257250
=== modified file 'debian/nova.conf'
--- debian/nova.conf 2012-01-25 14:33:10 +0000
+++ debian/nova.conf 2012-02-20 10:08:22 +0000
@@ -3,8 +3,8 @@
3--logdir=/var/log/nova3--logdir=/var/log/nova
4--state_path=/var/lib/nova4--state_path=/var/lib/nova
5--lock_path=/var/lock/nova5--lock_path=/var/lock/nova
6--use_deprecated_auth
7--force_dhcp_release6--force_dhcp_release
7--iscsi_helper=tgtadm
8--libvirt_use_virtio_for_bridges8--libvirt_use_virtio_for_bridges
9--connection_type=libvirt9--connection_type=libvirt
10--root_helper=sudo nova-rootwrap10--root_helper=sudo nova-rootwrap
1111
=== modified file 'debian/patches/libvirt-use-console-pipe.patch'
--- debian/patches/libvirt-use-console-pipe.patch 2012-02-11 02:04:05 +0000
+++ debian/patches/libvirt-use-console-pipe.patch 2012-02-20 10:08:22 +0000
@@ -1,6 +1,7 @@
1--- a/Authors1diff -Naurp nova.orig/Authors nova/Authors
2+++ b/Authors2--- nova.orig/Authors 2012-02-14 12:09:51.913338628 -0500
3@@ -136,6 +136,7 @@3+++ nova/Authors 2012-02-14 12:10:09.901337405 -0500
4@@ -138,6 +138,7 @@ Renuka Apte <renuka.apte@citrix.com>
4 Ricardo Carrillo Cruz <emaildericky@gmail.com>5 Ricardo Carrillo Cruz <emaildericky@gmail.com>
5 Rick Clark <rick@openstack.org>6 Rick Clark <rick@openstack.org>
6 Rick Harris <rconradharris@gmail.com>7 Rick Harris <rconradharris@gmail.com>
@@ -8,9 +9,10 @@
8 Rob Kost <kost@isi.edu>9 Rob Kost <kost@isi.edu>
9 Russell Bryant <rbryant@redhat.com>10 Russell Bryant <rbryant@redhat.com>
10 Ryan Lane <rlane@wikimedia.org>11 Ryan Lane <rlane@wikimedia.org>
11--- a/nova/tests/test_libvirt.py12diff -Naurp nova.orig/nova/tests/test_libvirt.py nova/nova/tests/test_libvirt.py
12+++ b/nova/tests/test_libvirt.py13--- nova.orig/nova/tests/test_libvirt.py 2012-02-14 12:09:51.997338631 -0500
13@@ -761,7 +761,7 @@14+++ nova/nova/tests/test_libvirt.py 2012-02-14 12:10:09.905337571 -0500
15@@ -761,7 +761,7 @@ class LibvirtConnTestCase(test.TestCase)
14 (lambda t: _ipv4_like(t.findall(parameter)[1].get('value'),16 (lambda t: _ipv4_like(t.findall(parameter)[1].get('value'),
15 '192.168.*.1'), True),17 '192.168.*.1'), True),
16 (lambda t: t.find('./devices/serial/source').get(18 (lambda t: t.find('./devices/serial/source').get(
@@ -19,7 +21,7 @@
19 (lambda t: t.find('./memory').text, '2097152')]21 (lambda t: t.find('./memory').text, '2097152')]
20 if rescue:22 if rescue:
21 common_checks += [23 common_checks += [
22@@ -1774,6 +1774,56 @@24@@ -1774,6 +1774,56 @@ class NWFilterTestCase(test.TestCase):
23 db.instance_destroy(admin_ctxt, instance_ref['id'])25 db.instance_destroy(admin_ctxt, instance_ref['id'])
24 26
25 27
@@ -76,8 +78,9 @@
76 class LibvirtUtilsTestCase(test.TestCase):78 class LibvirtUtilsTestCase(test.TestCase):
77 def test_get_iscsi_initiator(self):79 def test_get_iscsi_initiator(self):
78 self.mox.StubOutWithMock(utils, 'execute')80 self.mox.StubOutWithMock(utils, 'execute')
79--- a/nova/tests/test_utils.py81diff -Naurp nova.orig/nova/tests/test_utils.py nova/nova/tests/test_utils.py
80+++ b/nova/tests/test_utils.py82--- nova.orig/nova/tests/test_utils.py 2012-02-14 12:09:51.997338631 -0500
83+++ nova/nova/tests/test_utils.py 2012-02-14 12:10:09.905337571 -0500
81@@ -17,11 +17,14 @@84@@ -17,11 +17,14 @@
82 import __builtin__85 import __builtin__
83 import mox86 import mox
@@ -93,7 +96,7 @@
93 import nova96 import nova
94 from nova import exception97 from nova import exception
95 from nova import flags98 from nova import flags
96@@ -700,3 +703,56 @@99@@ -700,3 +703,56 @@ class DeprecationTest(test.TestCase):
97 h1 = utils.hash_file(flo)100 h1 = utils.hash_file(flo)
98 h2 = hashlib.sha1(data).hexdigest()101 h2 = hashlib.sha1(data).hexdigest()
99 self.assertEquals(h1, h2)102 self.assertEquals(h1, h2)
@@ -150,9 +153,10 @@
150+ f.close()153+ f.close()
151+154+
152+155+
153--- a/nova/utils.py156diff -Naurp nova.orig/nova/utils.py nova/nova/utils.py
154+++ b/nova/utils.py157--- nova.orig/nova/utils.py 2012-02-14 12:09:52.001338633 -0500
155@@ -27,11 +27,13 @@158+++ nova/nova/utils.py 2012-02-14 12:10:09.905337571 -0500
159@@ -27,11 +27,13 @@ import inspect
156 import json160 import json
157 import lockfile161 import lockfile
158 import os162 import os
@@ -166,7 +170,7 @@
166 import struct170 import struct
167 import sys171 import sys
168 import time172 import time
169@@ -52,6 +54,7 @@173@@ -52,6 +54,7 @@ from nova import log as logging
170 from nova.openstack.common import cfg174 from nova.openstack.common import cfg
171 175
172 176
@@ -174,7 +178,7 @@
174 LOG = logging.getLogger("nova.utils")178 LOG = logging.getLogger("nova.utils")
175 ISO_TIME_FORMAT = "%Y-%m-%dT%H:%M:%SZ"179 ISO_TIME_FORMAT = "%Y-%m-%dT%H:%M:%SZ"
176 PERFECT_TIME_FORMAT = "%Y-%m-%dT%H:%M:%S.%f"180 PERFECT_TIME_FORMAT = "%Y-%m-%dT%H:%M:%S.%f"
177@@ -1420,3 +1423,133 @@181@@ -1420,3 +1423,133 @@ def read_file_as_root(file_path):
178 return out182 return out
179 except exception.ProcessExecutionError:183 except exception.ProcessExecutionError:
180 raise exception.FileNotFound(file_path=file_path)184 raise exception.FileNotFound(file_path=file_path)
@@ -308,9 +312,10 @@
308+ def close(self):312+ def close(self):
309+ self.f.close()313+ self.f.close()
310+314+
311--- a/nova/virt/libvirt/connection.py315diff -Naurp nova.orig/nova/virt/libvirt/connection.py nova/nova/virt/libvirt/connection.py
312+++ b/nova/virt/libvirt/connection.py316--- nova.orig/nova/virt/libvirt/connection.py 2012-02-14 12:09:52.001338633 -0500
313@@ -39,15 +39,19 @@317+++ nova/nova/virt/libvirt/connection.py 2012-02-14 12:11:04.853340374 -0500
318@@ -39,15 +39,19 @@ Supports KVM, LXC, QEMU, UML, and XEN.
314 319
315 """320 """
316 321
@@ -330,7 +335,7 @@
330 from eventlet import greenthread335 from eventlet import greenthread
331 from xml.dom import minidom336 from xml.dom import minidom
332 from xml.etree import ElementTree337 from xml.etree import ElementTree
333@@ -141,6 +145,9 @@338@@ -138,6 +142,9 @@ libvirt_opts = [
334 cfg.BoolOpt('libvirt_use_virtio_for_bridges',339 cfg.BoolOpt('libvirt_use_virtio_for_bridges',
335 default=False,340 default=False,
336 help='Use virtio for bridge interfaces'),341 help='Use virtio for bridge interfaces'),
@@ -340,7 +345,7 @@
340 cfg.StrOpt('libvirt_disk_prefix',345 cfg.StrOpt('libvirt_disk_prefix',
341 default=None,346 default=None,
342 help='Override the default disk prefix for the devices attached'347 help='Override the default disk prefix for the devices attached'
343@@ -179,6 +186,57 @@348@@ -176,6 +183,57 @@ def _get_eph_disk(ephemeral):
344 return 'disk.eph' + str(ephemeral['num'])349 return 'disk.eph' + str(ephemeral['num'])
345 350
346 351
@@ -398,7 +403,7 @@
398 class LibvirtConnection(driver.ComputeDriver):403 class LibvirtConnection(driver.ComputeDriver):
399 404
400 def __init__(self, read_only):405 def __init__(self, read_only):
401@@ -212,6 +270,8 @@406@@ -209,6 +267,8 @@ class LibvirtConnection(driver.ComputeDr
402 407
403 self.image_cache_manager = imagecache.ImageCacheManager()408 self.image_cache_manager = imagecache.ImageCacheManager()
404 409
@@ -407,7 +412,7 @@
407 @property412 @property
408 def host_state(self):413 def host_state(self):
409 if not self._host_state:414 if not self._host_state:
410@@ -220,7 +280,11 @@415@@ -217,7 +277,11 @@ class LibvirtConnection(driver.ComputeDr
411 416
412 def init_host(self, host):417 def init_host(self, host):
413 # NOTE(nsokolov): moved instance restarting to ComputeManager418 # NOTE(nsokolov): moved instance restarting to ComputeManager
@@ -420,7 +425,7 @@
420 425
421 @property426 @property
422 def libvirt_xml(self):427 def libvirt_xml(self):
423@@ -281,6 +345,15 @@428@@ -278,6 +342,15 @@ class LibvirtConnection(driver.ComputeDr
424 else:429 else:
425 return libvirt.openAuth(uri, auth, 0)430 return libvirt.openAuth(uri, auth, 0)
426 431
@@ -436,15 +441,15 @@
436 def instance_exists(self, instance_id):441 def instance_exists(self, instance_id):
437 """Efficient override of base instance_exists method."""442 """Efficient override of base instance_exists method."""
438 try:443 try:
439@@ -424,6 +497,7 @@444@@ -419,6 +492,7 @@ class LibvirtConnection(driver.ComputeDr
440 def _cleanup(self, instance):445 def _cleanup(self, instance):
441 target = os.path.join(FLAGS.instances_path, instance['name'])446 target = os.path.join(FLAGS.instances_path, instance['name'])
442 instance_name = instance['name']447 instance_name = instance['name']
443+ self._stop_console_logger(instance_name)448+ self._stop_console_loger(instance_name)
444 LOG.info(_('instance %(instance_name)s: deleting instance files'449 LOG.info(_('Deleting instance files %(target)s') % locals(),
445 ' %(target)s') % locals())450 instance=instance)
446 if FLAGS.libvirt_type == 'lxc':451 if FLAGS.libvirt_type == 'lxc':
447@@ -780,10 +854,10 @@452@@ -776,10 +850,10 @@ class LibvirtConnection(driver.ComputeDr
448 453
449 @exception.wrap_exception()454 @exception.wrap_exception()
450 def get_console_output(self, instance):455 def get_console_output(self, instance):
@@ -458,7 +463,7 @@
458 463
459 if FLAGS.libvirt_type == 'xen':464 if FLAGS.libvirt_type == 'xen':
460 # Xen is special465 # Xen is special
461@@ -791,14 +865,14 @@466@@ -787,12 +861,12 @@ class LibvirtConnection(driver.ComputeDr
462 'ttyconsole',467 'ttyconsole',
463 instance['name'])468 instance['name'])
464 data = self._flush_xen_console(virsh_output)469 data = self._flush_xen_console(virsh_output)
@@ -466,17 +471,14 @@
466+ fpath = self._append_to_file(data, console_fifo)471+ fpath = self._append_to_file(data, console_fifo)
467 elif FLAGS.libvirt_type == 'lxc':472 elif FLAGS.libvirt_type == 'lxc':
468 # LXC is also special473 # LXC is also special
469 LOG.info(_("Unable to read LXC console"))474 LOG.info(_("Unable to read LXC console"), instance=instance)
470 else:475 else:
471- fpath = console_log476- fpath = console_log
472+ fpath = console_fifo477+ fpath = console_fifo
473 478
474- return libvirt_utils.load_file(fpath)479 return libvirt_utils.load_file(fpath)
475+ return self.console_loggers[instance['name']].peek()
476 480
477 @staticmethod481@@ -930,7 +1004,24 @@ class LibvirtConnection(driver.ComputeDr
478 def get_host_ip_addr():
479@@ -934,7 +1008,24 @@
480 libvirt_utils.ensure_tree(container_dir)482 libvirt_utils.ensure_tree(container_dir)
481 483
482 # NOTE(vish): No need add the suffix to console.log484 # NOTE(vish): No need add the suffix to console.log
483485
=== modified file 'debian/patches/series'
--- debian/patches/series 2012-02-13 17:01:11 +0000
+++ debian/patches/series 2012-02-20 10:08:22 +0000
@@ -1,3 +1,3 @@
1nova-manage_flagfile_location.patch1nova-manage_flagfile_location.patch
2kombu_tests_timeout.patch2kombu_tests_timeout.patch
3libvirt-use-console-pipe.patch3#libvirt-use-console-pipe.patch
44
=== modified file 'debian/rules'
--- debian/rules 2012-02-13 17:01:11 +0000
+++ debian/rules 2012-02-20 10:08:22 +0000
@@ -3,6 +3,12 @@
3# Verbose mode3# Verbose mode
4#export DH_VERBOSE=14#export DH_VERBOSE=1
55
6include /usr/share/python/python.mk
7
8PACKAGE_NAME=python-nova
9debroot = debian/tmp
10site_packages_dir=$(debroot)$(call py_libdir,$(shell pyversions -d))
11
6# Lucid does not have dh_python2, but we would like to be able to use this12# Lucid does not have dh_python2, but we would like to be able to use this
7# rules file to build on lucid as well. Thus the branching logic.13# rules file to build on lucid as well. Thus the branching logic.
8WITH_PYTHON2 = $(shell test -f /usr/bin/dh_python2 && echo "--with python2")14WITH_PYTHON2 = $(shell test -f /usr/bin/dh_python2 && echo "--with python2")
@@ -52,9 +58,15 @@
52 --prefix=$(DEBIAN_NAME)-$(DEBIAN_VERSION)/58 --prefix=$(DEBIAN_NAME)-$(DEBIAN_VERSION)/
5359
5460
55override_dh_install:61override_dh_auto_install:
56 dh_install62 # python-nova
57 chmod 440 $(CURDIR)/debian/nova-common/etc/sudoers.d/nova_sudoers63 python setup.py install -f --install-layout=deb --root=$(debroot)
64 mkdir -p $(debroot)/usr/share
65 mv $(site_packages_dir)/nova/locale $(debroot)/usr/share
66 mkdir -p $(debroot)/usr/share/apport/package-hooks
67
68 # nova-common
69 install -D -m 440 $(CURDIR)/debian/nova_sudoers $(CURDIR)/debian/nova-common/etc/sudoers.d/nova_sudoers
58 install -D -m 0664 $(CURDIR)/debian/nova-volume.default $(CURDIR)/debian/nova-volume/etc/default/nova-volume70 install -D -m 0664 $(CURDIR)/debian/nova-volume.default $(CURDIR)/debian/nova-volume/etc/default/nova-volume
59 for hypervisor in qemu kvm xen uml lxc; do \71 for hypervisor in qemu kvm xen uml lxc; do \
60 install -D -m 0600 $(CURDIR)/debian/nova-compute-$${hypervisor}.conf $(CURDIR)/debian/nova-compute-$${hypervisor}/etc/nova/nova-compute.conf; \72 install -D -m 0600 $(CURDIR)/debian/nova-compute-$${hypervisor}.conf $(CURDIR)/debian/nova-compute-$${hypervisor}/etc/nova/nova-compute.conf; \

Subscribers

People subscribed via source and target branches