Branch 'v1.4' - Makefile mirrormanager.spec.in mirrormanager.tmpfiles
by Matt Domsch
Makefile | 1 +
mirrormanager.spec.in | 9 +++++----
mirrormanager.tmpfiles | 2 ++
3 files changed, 8 insertions(+), 4 deletions(-)
New commits:
commit 35bc75799bb692c6b6a2c360cdd697da637a69a7
Author: Matt Domsch <Matt_Domsch(a)dell.com>
Date: Thu Nov 25 18:28:08 2010 -0600
add tmpfiles.d conf file, remove previous %ghost dirs. Fixes BZ656623
diff --git a/Makefile b/Makefile
index 2a6e53f..383808b 100644
--- a/Makefile
+++ b/Makefile
@@ -107,6 +107,7 @@ install-server:
# mkdir -p -m 0755 $(DESTDIR)/$(SBINDIR)
# sed -e 's:##CONFFILE##:$(CONFFILE):' -e 's:##PROGRAMDIR##:$(PROGRAMDIR):' $(STARTSCRIPT).in > $(DESTDIR)/$(SBINDIR)/start-mirrormanager
# chmod 0755 $(DESTDIR)/$(SBINDIR)/start-mirrormanager
+ install -m 0644 mirrormanager.tmpfiles $(DESTDIR)/etc/tmpfiles.d/mirrormanager.conf
install-client:
mkdir -p -m 0755 $(DESTDIR)/etc/mirrormanager-client $(DESTDIR)/usr/bin
diff --git a/mirrormanager.spec.in b/mirrormanager.spec.in
index 42bf4c9..779d854 100644
--- a/mirrormanager.spec.in
+++ b/mirrormanager.spec.in
@@ -61,11 +61,12 @@ exit 0
%defattr(-,root,root,-)
%{_datadir}/%{name}
%attr(-,mirrormanager,mirrormanager) %dir %{_localstatedir}/lib/%{name}/
-%ghost %attr(-,mirrormanager,mirrormanager) %dir %{_localstatedir}/run/%{name}/
+%attr(-,mirrormanager,mirrormanager) %dir %{_localstatedir}/run/%{name}/
%attr(-,mirrormanager,mirrormanager) %dir %{_localstatedir}/log/%{name}/
%attr(-,mirrormanager,mirrormanager) %dir %{_localstatedir}/log/%{name}/crawler/
-%ghost %attr(-,mirrormanager,mirrormanager) %dir %{_localstatedir}/lock/%{name}/
+%attr(-,mirrormanager,mirrormanager) %dir %{_localstatedir}/lock/%{name}/
%attr(-,mirrormanager,mirrormanager) %dir %{_sysconfdir}/%{name}/
+%attr(-,mirrormanager,mirrormanager) %{_sysconfdir}/tmpfiles.d/%{name}.conf
%attr(-,mirrormanager,mirrormanager) %config(noreplace) /etc/mirrormanager/prod.cfg
%attr(-,mirrormanager,mirrormanager) %config(noreplace) %{_sysconfdir}/logrotate.d/%{name}
%attr(-,mirrormanager,mirrormanager) %config(noreplace) %{_sysconfdir}/httpd/conf.d/mirrormanager.conf
@@ -85,8 +86,8 @@ exit 0
%changelog
-* Wed Nov 24 2010 Matt Domsch <mdomsch(a)fedoraproject.org>
-- add %%ghost to /var/{run,lock} (BZ656623)
+* Thu Nov 25 2010 Matt Domsch <mdomsch(a)fedoraproject.org>
+- add tmpfiles.d file (BZ636623)
* Sat Sep 11 2010 Matt Domsch <mdomsch(a)fedoraproject.org> - 1.3.7-1
Matt Domsch:
diff --git a/mirrormanager.tmpfiles b/mirrormanager.tmpfiles
new file mode 100644
index 0000000..f40da5b
--- /dev/null
+++ b/mirrormanager.tmpfiles
@@ -0,0 +1,2 @@
+d /var/run/mirrormanager 0755 mirrormanager mirrormanager -
+d /var/lock/mirrormanager 0755 mirrormanager mirrormanager -
13 years, 4 months
Branch 'v1.4' - mirrormanager.spec.in server/mirrormanager server/update-database server/update-mirrorlist-server
by Matt Domsch
mirrormanager.spec.in | 7 +++++--
server/mirrormanager/lib.py | 16 +++++++++++++---
server/update-database | 1 +
server/update-mirrorlist-server | 1 +
4 files changed, 20 insertions(+), 5 deletions(-)
New commits:
commit e94f6fbc857bc41d564e7cf6bfd4a9d97999a28a
Author: Matt Domsch <Matt_Domsch(a)dell.com>
Date: Wed Nov 24 12:47:18 2010 -0600
create /var/lock and /var/run if necessary, per
https://bugzilla.redhat.com/show_bug.cgi?id=656623
diff --git a/mirrormanager.spec.in b/mirrormanager.spec.in
index a04ee26..42bf4c9 100644
--- a/mirrormanager.spec.in
+++ b/mirrormanager.spec.in
@@ -61,10 +61,10 @@ exit 0
%defattr(-,root,root,-)
%{_datadir}/%{name}
%attr(-,mirrormanager,mirrormanager) %dir %{_localstatedir}/lib/%{name}/
-%attr(-,mirrormanager,mirrormanager) %dir %{_localstatedir}/run/%{name}/
+%ghost %attr(-,mirrormanager,mirrormanager) %dir %{_localstatedir}/run/%{name}/
%attr(-,mirrormanager,mirrormanager) %dir %{_localstatedir}/log/%{name}/
%attr(-,mirrormanager,mirrormanager) %dir %{_localstatedir}/log/%{name}/crawler/
-%attr(-,mirrormanager,mirrormanager) %dir %{_localstatedir}/lock/%{name}/
+%ghost %attr(-,mirrormanager,mirrormanager) %dir %{_localstatedir}/lock/%{name}/
%attr(-,mirrormanager,mirrormanager) %dir %{_sysconfdir}/%{name}/
%attr(-,mirrormanager,mirrormanager) %config(noreplace) /etc/mirrormanager/prod.cfg
%attr(-,mirrormanager,mirrormanager) %config(noreplace) %{_sysconfdir}/logrotate.d/%{name}
@@ -85,6 +85,9 @@ exit 0
%changelog
+* Wed Nov 24 2010 Matt Domsch <mdomsch(a)fedoraproject.org>
+- add %%ghost to /var/{run,lock} (BZ656623)
+
* Sat Sep 11 2010 Matt Domsch <mdomsch(a)fedoraproject.org> - 1.3.7-1
Matt Domsch:
mirrorlist_server: always output a metalink header
diff --git a/server/mirrormanager/lib.py b/server/mirrormanager/lib.py
index 1b0f325..52892d7 100644
--- a/server/mirrormanager/lib.py
+++ b/server/mirrormanager/lib.py
@@ -37,11 +37,21 @@ def uniqueify(seq, idfun=None):
def remove_pidfile(pidfile):
os.unlink(pidfile)
-def write_pidfile(pidfile, pid):
+def create_pidfile_dir(pidfile):
+ piddir = pidfile.split('/')[:-1]
try:
- f = open(pidfile, 'w')
+ os.makedirs(piddir, mode=0755)
+ except OSError, err:
+ if err.errno == 17: # File exists
+ pass
+ else:
+ raise
except:
- return 1
+ raise
+
+def write_pidfile(pidfile, pid):
+ create_pidfile_dir(pidfile)
+ f = open(pidfile, 'w')
f.write(str(pid))
f.close()
return 0
diff --git a/server/update-database b/server/update-database
index add1ea3..871bb0c 100755
--- a/server/update-database
+++ b/server/update-database
@@ -5,6 +5,7 @@ MIRRORLIST_DIR=/var/lib/mirrormanager/mirrorlists
LOCKFILE=/var/lock/mirrormanager/update-database.lock
[ -e ${LOCKFILE} ] && kill -0 $(cat ${LOCKFILE}) && exit 2
+mkdir -p $(dirname ${LOCKFILE})
echo $$ > ${LOCKFILE}
trap "rm -f ${LOCKFILE}" QUIT TERM INT HUP EXIT
diff --git a/server/update-mirrorlist-server b/server/update-mirrorlist-server
index 1b16270..b49781a 100755
--- a/server/update-mirrorlist-server
+++ b/server/update-mirrorlist-server
@@ -6,6 +6,7 @@ LOCKFILE=/var/lock/mirrormanager/update-mirrorlist-server.lock
CACHEDIR=/var/lib/mirrormanager
[ -e ${LOCKFILE} ] && kill -0 $(cat ${LOCKFILE}) && exit 2
+mkdir -p $(dirname ${LOCKFILE})
echo $$ > ${LOCKFILE}
trap "rm -f ${LOCKFILE}" QUIT TERM INT HUP EXIT
13 years, 4 months
Branch 'v1.4' - client/report_mirror.conf
by Matt Domsch
client/report_mirror.conf | 12 ------------
1 file changed, 12 deletions(-)
New commits:
commit 241ee8ada4fbb031041417f989ec7a96ebc1204a
Author: Matt Domsch <Matt_Domsch(a)dell.com>
Date: Wed Nov 24 12:07:17 2010 -0600
remove obsolete categories from example report_mirror.conf
diff --git a/client/report_mirror.conf b/client/report_mirror.conf
index 29e4d7a..9659412 100644
--- a/client/report_mirror.conf
+++ b/client/report_mirror.conf
@@ -61,10 +61,6 @@ path=/var/www/html/pub/epel
# lesser used categories below
-[Fedora Web]
-enabled=0
-path=/var/www/html/pub/fedora/web
-
[Fedora Secondary Arches]
enabled=0
path=/var/www/html/pub/fedora-secondary
@@ -75,14 +71,6 @@ path=/var/www/html/pub/alt
# historical content
-[Fedora Core]
-enabled=0
-path=/var/www/html/pub/fedora/linux/core
-
-[Fedora Extras]
-enabled=0
-path=/var/www/html/pub/fedora/linux/extras
-
[Fedora Archive]
enabled=0
path=/var/www/html/pub/fedora-archive
13 years, 4 months
Branch 'v1.4' - server/update-master-directory-list
by Matt Domsch
server/update-master-directory-list | 6 ++++--
1 file changed, 4 insertions(+), 2 deletions(-)
New commits:
commit 131d6ee4e5870de467ccef5bf60108e7641caace
Author: Adrian Reber <adrian(a)lisas.de>
Date: Tue Nov 16 07:00:41 2010 -0600
umdl: handle CentOS
diff --git a/server/update-master-directory-list b/server/update-master-directory-list
index 330e57e..a7e7f9e 100755
--- a/server/update-master-directory-list
+++ b/server/update-master-directory-list
@@ -25,6 +25,8 @@ hub = PackageHub("mirrormanager")
__connection__ = hub
def trim_os_from_dirname(dirname):
+ if config.get('mirrormanager.projectname') == 'CentOS':
+ return dirname
# trim the /os off the name
index = dirname.rfind('/os')
if index > 0:
@@ -50,7 +52,7 @@ def _get_version_from_path(path):
if m is not None:
return m.group(1)
# Fedora versioning
- s = r'/(([\.\d]+)(\-\w+)?)/'
+ s = r'/?(([\.\d]+)(\-\w+)?)/'
m = re.search(re.compile(s), path)
if m is not None:
return m.group(1)
@@ -91,7 +93,7 @@ def guess_ver_arch_from_path(category, path):
# create Versions if we can figure it out...
if ver is None:
ver = create_version_from_path(category, path)
-
+
return (ver, arch)
13 years, 4 months
Branch 'v1.4' - 2 commits - server/mirrormanager
by Matt Domsch
server/mirrormanager/model.py | 2 +
server/mirrormanager/schema_updates/update_1_4_0.py | 22 +++++++++++++++++++-
2 files changed, 23 insertions(+), 1 deletion(-)
New commits:
commit 6156fb6d84737f7883bc2724f9398cf16cb4b3bc
Author: Matt Domsch <Matt_Domsch(a)dell.com>
Date: Fri Nov 12 13:19:14 2010 -0600
SCHEMA CHANGE: add Category.GeoDNSDomain field
diff --git a/server/mirrormanager/model.py b/server/mirrormanager/model.py
index 10ce711..bd56890 100644
--- a/server/mirrormanager/model.py
+++ b/server/mirrormanager/model.py
@@ -718,6 +718,7 @@ class Category(SQLObject):
canonicalhost = UnicodeCol(default='http://download.fedora.redhat.com')
topdir = ForeignKey('Directory', default=None)
publiclist = BoolCol(default=True)
+ GeoDNSDomain = UnicodeCol(default=None)
directories = RelatedJoin('Directory', orderBy='name') # all the directories that are part of this category
hostCategories = MultipleJoin('HostCategory')
diff --git a/server/mirrormanager/schema_updates/update_1_4_0.py b/server/mirrormanager/schema_updates/update_1_4_0.py
index 820d551..a5629b5 100644
--- a/server/mirrormanager/schema_updates/update_1_4_0.py
+++ b/server/mirrormanager/schema_updates/update_1_4_0.py
@@ -24,6 +24,11 @@ class OldProduct(SQLObject):
fromDatabase = True
table = 'product'
+class OldCategory(SQLObject):
+ class sqlmeta:
+ fromDatabase = True
+ table = 'category'
+
def update():
Location.createTable(ifNotExists=True)
FileGroup.createTable(ifNotExists=True)
@@ -54,3 +59,7 @@ def update():
for p in OldProduct.select():
p.publiclist = True
+ if 'geo_dns_domain' not in OldCategory.sqlmeta.columns:
+ OldCategory.addColumn(UnicodeCol("GeoDNSDomain", default=None), changeSchema=True)
+ for c in OldCategory.select():
+ c.GeoDNSDomain = None
commit 7f3dc9c77e59c06ff9e5278c45e675071fc83bbc
Author: Matt Domsch <Matt_Domsch(a)dell.com>
Date: Fri Nov 12 13:00:17 2010 -0600
SCHEMA CHANGE: add field to hide Products from publiclist chooser
diff --git a/server/mirrormanager/model.py b/server/mirrormanager/model.py
index 69a85a3..10ce711 100644
--- a/server/mirrormanager/model.py
+++ b/server/mirrormanager/model.py
@@ -618,6 +618,7 @@ class Product(SQLObject):
class sqlmeta:
cacheValues = False
name = UnicodeCol(alternateID=True, length=UnicodeColKeyLength)
+ publiclist = BoolCol(default=True)
versions = MultipleJoin('Version', orderBy=['-sortorder', '-id'])
categories = MultipleJoin('Category')
diff --git a/server/mirrormanager/schema_updates/update_1_4_0.py b/server/mirrormanager/schema_updates/update_1_4_0.py
index ff61fd1..820d551 100644
--- a/server/mirrormanager/schema_updates/update_1_4_0.py
+++ b/server/mirrormanager/schema_updates/update_1_4_0.py
@@ -19,6 +19,11 @@ class OldVersion(SQLObject):
fromDatabase = True
table = 'version'
+class OldProduct(SQLObject):
+ class sqlmeta:
+ fromDatabase = True
+ table = 'product'
+
def update():
Location.createTable(ifNotExists=True)
FileGroup.createTable(ifNotExists=True)
@@ -38,8 +43,14 @@ def update():
if 'sortorder' not in OldVersion.sqlmeta.columns and \
'codename' not in OldVersion.sqlmeta.columns:
- OldVersion.addColumn(IntCol("sortorder", default=0, changeSchema=True)
+ OldVersion.addColumn(IntCol("sortorder", default=0, changeSchema=True))
OldVersion.addColumn(UnicodeCol("codename", default=None), changeSchema=True)
for v in OldVersion.select():
v.sortorder = 0
v.codename = None
+
+ if 'publiclist' not in OldProduct.sqlmeta.columns:
+ OldProduct.addColumn(BoolCol("publiclist", default=True), changeSchema=True)
+ for p in OldProduct.select():
+ p.publiclist = True
+
13 years, 4 months
Branch 'v1.4' - server/mirrormanager
by Matt Domsch
server/mirrormanager/model.py | 10 ++--------
server/mirrormanager/schema_updates/update_1_4_0.py | 2 +-
2 files changed, 3 insertions(+), 9 deletions(-)
New commits:
commit 17120405852dbc68610091fb2a44f65d45dc7f1d
Author: Matt Domsch <Matt_Domsch(a)dell.com>
Date: Fri Nov 12 10:12:58 2010 -0600
Revert "always initialize Version.sortorder = id, change later if you wish"
The sortorder field is used in preference to the ID field, but if
sortorder is its default value of zero, it Product.versions() will get
the list back in decending id order, which is what we want. So we
don't need this change, revert it.
This reverts commit 31453bc3a0ba416b057130fa7799aec34599003d.
diff --git a/server/mirrormanager/model.py b/server/mirrormanager/model.py
index e0e0443..69a85a3 100644
--- a/server/mirrormanager/model.py
+++ b/server/mirrormanager/model.py
@@ -15,7 +15,7 @@ from turbogears.database import PackageHub
hub = PackageHub("mirrormanager")
__connection__ = hub
-UnicodeColKeyLength = None
+UnicodeColKeyLength=None
_dburi = config.get('sqlobject.dburi', '')
if 'mysql://' in _dburi:
UnicodeColKeyLength=255
@@ -635,19 +635,13 @@ class Product(SQLObject):
class Version(SQLObject):
class sqlmeta:
cacheValues = False
-
- def _SO_finishCreate(self, id=None):
- """ by default set sortorder = id, which is only known at this point. """
- SQLObject._SO_finishCreate(self, id)
- self.sortorder = self.id
-
name = UnicodeCol()
product = ForeignKey('Product')
isTest = BoolCol(default=False)
display = BoolCol(default=True)
display_name = UnicodeCol(default=None)
ordered_mirrorlist = BoolCol(default=True)
- sortorder = IntCol()
+ sortorder = IntCol(default=0)
codename = UnicodeCol(default=None)
class Directory(SQLObject):
diff --git a/server/mirrormanager/schema_updates/update_1_4_0.py b/server/mirrormanager/schema_updates/update_1_4_0.py
index a1111f1..ff61fd1 100644
--- a/server/mirrormanager/schema_updates/update_1_4_0.py
+++ b/server/mirrormanager/schema_updates/update_1_4_0.py
@@ -41,5 +41,5 @@ def update():
OldVersion.addColumn(IntCol("sortorder", default=0, changeSchema=True)
OldVersion.addColumn(UnicodeCol("codename", default=None), changeSchema=True)
for v in OldVersion.select():
- v.sortorder = v.id
+ v.sortorder = 0
v.codename = None
13 years, 4 months
Branch 'v1.4' - server/mirrormanager
by Matt Domsch
server/mirrormanager/model.py | 10 ++++++++--
server/mirrormanager/schema_updates/update_1_4_0.py | 2 +-
2 files changed, 9 insertions(+), 3 deletions(-)
New commits:
commit 31453bc3a0ba416b057130fa7799aec34599003d
Author: Matt Domsch <Matt_Domsch(a)dell.com>
Date: Fri Nov 12 10:03:22 2010 -0600
always initialize Version.sortorder = id, change later if you wish
diff --git a/server/mirrormanager/model.py b/server/mirrormanager/model.py
index 69a85a3..e0e0443 100644
--- a/server/mirrormanager/model.py
+++ b/server/mirrormanager/model.py
@@ -15,7 +15,7 @@ from turbogears.database import PackageHub
hub = PackageHub("mirrormanager")
__connection__ = hub
-UnicodeColKeyLength=None
+UnicodeColKeyLength = None
_dburi = config.get('sqlobject.dburi', '')
if 'mysql://' in _dburi:
UnicodeColKeyLength=255
@@ -635,13 +635,19 @@ class Product(SQLObject):
class Version(SQLObject):
class sqlmeta:
cacheValues = False
+
+ def _SO_finishCreate(self, id=None):
+ """ by default set sortorder = id, which is only known at this point. """
+ SQLObject._SO_finishCreate(self, id)
+ self.sortorder = self.id
+
name = UnicodeCol()
product = ForeignKey('Product')
isTest = BoolCol(default=False)
display = BoolCol(default=True)
display_name = UnicodeCol(default=None)
ordered_mirrorlist = BoolCol(default=True)
- sortorder = IntCol(default=0)
+ sortorder = IntCol()
codename = UnicodeCol(default=None)
class Directory(SQLObject):
diff --git a/server/mirrormanager/schema_updates/update_1_4_0.py b/server/mirrormanager/schema_updates/update_1_4_0.py
index ff61fd1..a1111f1 100644
--- a/server/mirrormanager/schema_updates/update_1_4_0.py
+++ b/server/mirrormanager/schema_updates/update_1_4_0.py
@@ -41,5 +41,5 @@ def update():
OldVersion.addColumn(IntCol("sortorder", default=0, changeSchema=True)
OldVersion.addColumn(UnicodeCol("codename", default=None), changeSchema=True)
for v in OldVersion.select():
- v.sortorder = 0
+ v.sortorder = v.id
v.codename = None
13 years, 4 months
Branch 'v1.4' - 7 commits - server/mirrormanager server/update-master-directory-list TODO
by Matt Domsch
TODO | 4 --
server/mirrormanager/controllers.py | 40 ++++++++++++++++++--
server/mirrormanager/model.py | 11 +++--
server/mirrormanager/schema_updates/update_1_4_0.py | 9 +++-
server/mirrormanager/templates/adminview.kid | 2 -
server/update-master-directory-list | 6 +++
6 files changed, 56 insertions(+), 16 deletions(-)
New commits:
commit fee3e61f3995d9a849f1f9150f4c6b511b822ca2
Merge: 77363a2... 0d1a872...
Author: Matt Domsch <Matt_Domsch(a)dell.com>
Date: Wed Nov 3 12:43:02 2010 -0500
Merge branch 'v1.4' of ssh+git://fedorahosted.org/git/mirrormanager into v1.4
commit 77363a2318e4f220fe28b314c485052225f9473d
Author: Matt Domsch <Matt_Domsch(a)dell.com>
Date: Tue Nov 2 11:17:21 2010 -0500
umdl: add Debian/Ubuntu version detection
diff --git a/server/update-master-directory-list b/server/update-master-directory-list
index 95ba977..330e57e 100755
--- a/server/update-master-directory-list
+++ b/server/update-master-directory-list
@@ -44,6 +44,12 @@ def rename_SRPMS_source(l):
def _get_version_from_path(path):
+ # Debian/Ubuntu versioning
+ s = r'dists/(\w+)/' # this ignores 10.10 and maverick-{anything}, but picks up 'maverick'
+ m = re.search(re.compile(s), path)
+ if m is not None:
+ return m.group(1)
+ # Fedora versioning
s = r'/(([\.\d]+)(\-\w+)?)/'
m = re.search(re.compile(s), path)
if m is not None:
commit 26dbcdcfa5472c9bfd56c4ea2fed6ea2efd6833e
Author: Matt Domsch <Matt_Domsch(a)dell.com>
Date: Tue Nov 2 11:01:49 2010 -0500
allow longer User user_name fields, to prepare for OpenID
diff --git a/server/mirrormanager/model.py b/server/mirrormanager/model.py
index 3259a12..69a85a3 100644
--- a/server/mirrormanager/model.py
+++ b/server/mirrormanager/model.py
@@ -952,7 +952,7 @@ class User(SQLObject):
class sqlmeta:
table = "tg_user"
- user_name = UnicodeCol(length=16, alternateID=True,
+ user_name = UnicodeCol(length=UnicodeColKeyLength, alternateID=True,
alternateMethodName="by_user_name")
email_address = UnicodeCol(length=255, alternateID=True,
alternateMethodName="by_email_address")
commit 9e7b9c5c1e304f6048f762726557ad6d2bb09388
Author: Matt Domsch <Matt_Domsch(a)dell.com>
Date: Tue Nov 2 10:59:40 2010 -0500
expose CategoryController, strip user-provided Directory name
diff --git a/server/mirrormanager/controllers.py b/server/mirrormanager/controllers.py
index ef1145f..fc8fc2e 100644
--- a/server/mirrormanager/controllers.py
+++ b/server/mirrormanager/controllers.py
@@ -887,6 +887,7 @@ class CategoryController(SimpleDbObjectController):
@validate(form=category_form)
@error_handler(SimpleDbObjectController.new)
def create(self, **kwargs):
+ topdirPath.strip('/')
try:
d = Directory.byName(kwargs['topdirPath'])
except SQLObjectNotFound:
@@ -1195,6 +1196,7 @@ class Root(controllers.RootController):
product = ProductController()
version = VersionController()
arch = ArchController()
+ category = CategoryController()
embargoed_country = EmbargoedCountryController()
repository = RepositoryController()
repository_redirect = RepositoryRedirectController()
commit 9166f5cf322ae7310ca71b4223d66cdc9a7362b5
Author: Matt Domsch <Matt_Domsch(a)dell.com>
Date: Tue Nov 2 10:55:34 2010 -0500
add Category creation to adminview
diff --git a/TODO b/TODO
index bfe60fb..e1d6120 100644
--- a/TODO
+++ b/TODO
@@ -27,5 +27,3 @@ will be in the tree. Include them in the proper metalinks.
* replace kid templates with genshi
http://genshi.edgewall.org/wiki/GenshiVsKid
http://genshi.edgewall.org/wiki/GenshiTutorial
-
-* add a 'create Category' button/page in the admin view
diff --git a/server/mirrormanager/controllers.py b/server/mirrormanager/controllers.py
index 12ea1e9..ef1145f 100644
--- a/server/mirrormanager/controllers.py
+++ b/server/mirrormanager/controllers.py
@@ -865,6 +865,39 @@ class SimpleDbObjectController(controllers.Controller, identity.SecureResource,
#########################################################3
+# Category
+#########################################################3
+class CategoryFields(widgets.WidgetsList):
+ name = widgets.TextField(validator=validators.UnicodeString, attrs=dict(size='30'))
+ product = widgets.SingleSelectField(options=Product.selectFieldOptions,
+ validator=validators.NotEmpty)
+ canonicalhost = widgets.TextField(validator=validators.UnicodeString, attrs=dict(size='30'))
+ topdirPath = widgets.TextField(validator=validators.UnicodeString, attrs=dict(size='30'))
+ publiclist = widgets.CheckBox()
+
+category_form = Widgets.TableForm(fields=CategoryFields(), submit_text="Create Category")
+
+class CategoryController(SimpleDbObjectController):
+ page_title="Category"
+ myClass = Category
+ url_prefix="category"
+ form = category_form
+
+ @expose(template="mirrormanager.templates.boringform")
+ @validate(form=category_form)
+ @error_handler(SimpleDbObjectController.new)
+ def create(self, **kwargs):
+ try:
+ d = Directory.byName(kwargs['topdirPath'])
+ except SQLObjectNotFound:
+ d = Directory(kwargs['topdirPath'])
+ del kwargs['topdirPath']
+ kwargs['topdir'] = d
+
+ SimpleDbObjectController.create(self, **kwargs)
+
+
+#########################################################3
# Arch
#########################################################3
@@ -967,10 +1000,7 @@ class RepositoryController(SimpleDbObjectController):
# Version
#########################################################3
class VersionFields(widgets.WidgetsList):
- def get_products_options():
- return [(p.id, p.name) for p in Product.select(orderBy='name')]
-
- product = widgets.SingleSelectField(options=get_products_options,
+ product = widgets.SingleSelectField(options=Product.selectFieldOptions,
validator=validators.NotEmpty)
name = widgets.TextField(validator=validators.UnicodeString, attrs=dict(size='30'))
isTest = widgets.CheckBox(label="is a Test release")
diff --git a/server/mirrormanager/model.py b/server/mirrormanager/model.py
index af84d9e..3259a12 100644
--- a/server/mirrormanager/model.py
+++ b/server/mirrormanager/model.py
@@ -627,6 +627,9 @@ class Product(SQLObject):
for c in self.categories:
c.destroySelf()
SQLObject.destroySelf(self)
+
+ def selectFieldOptions():
+ return [(p.id, p.name) for p in Product.select(orderBy='name')]
class Version(SQLObject):
diff --git a/server/mirrormanager/templates/adminview.kid b/server/mirrormanager/templates/adminview.kid
index c559d9d..12bc558 100644
--- a/server/mirrormanager/templates/adminview.kid
+++ b/server/mirrormanager/templates/adminview.kid
@@ -17,7 +17,7 @@ Nothing to see here, move along.
<div id="adminview" py:if="admin_group in tg.identity.groups">
<div id="categories">
-<h3>Categories</h3>
+<h3>Categories <a href="${tg.url('/category/new')">[Add]</a></h3>
<ul>
<li py:for="c in categories">
<span py:replace="c.name">Category Name</span>
commit 35c9c6efea212a11f09c73aa5bf52136b13aab2c
Author: Matt Domsch <Matt_Domsch(a)dell.com>
Date: Tue Nov 2 10:32:54 2010 -0500
scratch item off TODO
diff --git a/TODO b/TODO
index fe29195..bfe60fb 100644
--- a/TODO
+++ b/TODO
@@ -12,8 +12,6 @@
* Track multiple master mirrors (e.g. secondary arches)
- done via separate directory trees (e.g. pub/fedora and pub/secondary) right now
-* sort publiclist chooser versions
-
* cronjob to mark private mirrors as not-up2date, some amount of time
after the content has changed but they haven't run report_mirror.
commit c818164de4719d9f426e5e0af201bae44c3b424a
Author: Matt Domsch <Matt_Domsch(a)dell.com>
Date: Tue Nov 2 10:31:11 2010 -0500
SCHEMA CHANGE: add Version.codename, fix Version.sortorder
diff --git a/server/mirrormanager/model.py b/server/mirrormanager/model.py
index ec02c2f..af84d9e 100644
--- a/server/mirrormanager/model.py
+++ b/server/mirrormanager/model.py
@@ -618,7 +618,7 @@ class Product(SQLObject):
class sqlmeta:
cacheValues = False
name = UnicodeCol(alternateID=True, length=UnicodeColKeyLength)
- versions = MultipleJoin('Version', orderBy='name')
+ versions = MultipleJoin('Version', orderBy=['-sortorder', '-id'])
categories = MultipleJoin('Category')
def destroySelf(self):
@@ -638,8 +638,8 @@ class Version(SQLObject):
display = BoolCol(default=True)
display_name = UnicodeCol(default=None)
ordered_mirrorlist = BoolCol(default=True)
- sortorder = IntCol()
-
+ sortorder = IntCol(default=0)
+ codename = UnicodeCol(default=None)
class Directory(SQLObject):
class sqlmeta:
diff --git a/server/mirrormanager/schema_updates/update_1_4_0.py b/server/mirrormanager/schema_updates/update_1_4_0.py
index 32b96f0..ff61fd1 100644
--- a/server/mirrormanager/schema_updates/update_1_4_0.py
+++ b/server/mirrormanager/schema_updates/update_1_4_0.py
@@ -36,7 +36,10 @@ def update():
for h in OldHost.select():
h.dnsCountryHost = False
- if 'sortorder' not in OldVersion.sqlmeta.columns:
- OldVersion.addColumn(IntCol("sortorder"), changeSchema=True)
+ if 'sortorder' not in OldVersion.sqlmeta.columns and \
+ 'codename' not in OldVersion.sqlmeta.columns:
+ OldVersion.addColumn(IntCol("sortorder", default=0, changeSchema=True)
+ OldVersion.addColumn(UnicodeCol("codename", default=None), changeSchema=True)
for v in OldVersion.select():
- v.sortorder = v.id
+ v.sortorder = 0
+ v.codename = None
13 years, 4 months
Branch 'v1.4' - 4 commits - LICENSES server/move-devel-to-release server/move-to-archive
by Matt Domsch
LICENSES | 2 -
server/move-devel-to-release | 71 +++++++++++++++++++++++++++++++++++++++++++
server/move-to-archive | 10 +++---
3 files changed, 78 insertions(+), 5 deletions(-)
New commits:
commit 0d1a87248eeb674d70a06bcd3ca35af97d3fb3aa
Author: Matt Domsch <Matt_Domsch(a)dell.com>
Date: Wed Nov 3 12:42:49 2010 -0500
fix move-devel-to-release
diff --git a/server/move-devel-to-release b/server/move-devel-to-release
index 8712fee..4eb00e0 100755
--- a/server/move-devel-to-release
+++ b/server/move-devel-to-release
@@ -35,11 +35,11 @@ def doit():
try:
new_d = Directory.byName(t)
r.directory = new_d
- r.category = a
+ r.category = c
r.sync()
print "%s => %s" % (d.name, t)
except:
- print "Unable to find a directory in [%s] for %s" % (options.archiveCategory, d.name)
+ #print "Unable to find a directory in [%s] for %s" % (options.archiveCategory, d.name)
raise
def main():
commit 76d93b32833657c708571bfc333e4152376bfc82
Author: Matt Domsch <Matt_Domsch(a)dell.com>
Date: Mon Nov 1 23:50:50 2010 -0500
add move-devel-to-release
diff --git a/server/move-devel-to-release b/server/move-devel-to-release
new file mode 100755
index 0000000..8712fee
--- /dev/null
+++ b/server/move-devel-to-release
@@ -0,0 +1,71 @@
+#!/usr/bin/python
+__requires__ = 'TurboGears[future]'
+import pkg_resources
+pkg_resources.require("TurboGears")
+
+from sqlobject import *
+import turbogears
+from mirrormanager.model import *
+from optparse import OptionParser
+import sys, re, os
+
+from turbogears.database import PackageHub
+hub = __connection__ = None
+
+options = None
+
+category = 'Fedora Linux'
+
+# moving from pub/fedora/linux/development/14/x86_64/os to pub/fedora/linux/releases/14/Everything/x86_64/os
+
+
+def doit():
+ global options
+ c = Category.byName(category)
+ topdir = c.topdir.name
+ oldpattern = os.path.join('development', options.version)
+ newpattern = os.path.join('releases', options.version, 'Everything')
+ oldRe = re.compile(oldpattern)
+ for d in c.directories:
+ if oldRe.search(d.name):
+ r = d.repository
+ if r is not None:
+ t = d.name.replace(oldpattern, newpattern)
+ #print "trying to find %s" % t
+ try:
+ new_d = Directory.byName(t)
+ r.directory = new_d
+ r.category = a
+ r.sync()
+ print "%s => %s" % (d.name, t)
+ except:
+ print "Unable to find a directory in [%s] for %s" % (options.archiveCategory, d.name)
+ raise
+
+def main():
+ global options
+ parser = OptionParser(usage=sys.argv[0] + " [options]")
+ parser.add_option("-c", "--config",
+ dest="config", default='/etc/mirrormanager/prod.cfg',
+ help="TurboGears config file to use (default=/etc/mirrormanager/prod.cfg)")
+ parser.add_option("--version",
+ dest="version", action="store", type="string", help="OS version to move (e.g. '14') [required]", default=None)
+
+ (options, args) = parser.parse_args()
+ if options.version is None:
+ parser.print_help()
+ sys.exit(1)
+
+ turbogears.update_config(configfile=options.config,
+ modulename="mirrormanager.config")
+ global hub
+ global __connection__
+ hub = PackageHub("mirrormanager")
+ __connection__ = hub
+
+ doit()
+ return 0
+
+if __name__ == "__main__":
+ sys.exit(main())
+
commit fcdc6a52bca9ae8cc32870a5c20e3caee8df4b0e
Author: Matt Domsch <Matt_Domsch(a)dell.com>
Date: Mon Nov 1 23:16:25 2010 -0500
fix move-to-archive
diff --git a/server/move-to-archive b/server/move-to-archive
index 5152378..fc5d634 100755
--- a/server/move-to-archive
+++ b/server/move-to-archive
@@ -7,7 +7,7 @@ from sqlobject import *
import turbogears
from mirrormanager.model import *
from optparse import OptionParser
-import re
+import sys, re
from turbogears.database import PackageHub
hub = __connection__ = None
@@ -20,16 +20,17 @@ originalCategory = 'Fedora Linux'
def doit():
global options
- c = Category.selectBy(name=options.originalCategory)[0]
- a = Category.selectBy(name=options.archiveCategory)[0]
+ c = Category.byName(originalCategory)
+ a = Category.byName(archiveCategory)
originalTopdir = c.topdir.name
- archiveTopdir = a.topdir.name
+ archiveTopdir = a.topdir.name + '/fedora/linux'
dirRe = re.compile(options.directoryRe)
for d in c.directories:
if dirRe.search(d.name):
r = d.repository
if r is not None:
t = archiveTopdir + d.name[len(originalTopdir):]
+ print "trying to find %s" % t
try:
new_d = Directory.byName(t)
r.directory = new_d
@@ -38,6 +39,7 @@ def doit():
print "%s => %s" % (d.name, t)
except:
print "Unable to find a directory in [%s] for %s" % (options.archiveCategory, d.name)
+ raise
def main():
global options
commit d18eb5232f62dd0a5bd12417b3878953352e768b
Author: Matt Domsch <Matt_Domsch(a)dell.com>
Date: Mon Nov 1 00:24:19 2010 -0500
LICENSES: fix zebra directory note
diff --git a/LICENSES b/LICENSES
index cf96fa4..cee64ff 100644
--- a/LICENSES
+++ b/LICENSES
@@ -5,5 +5,5 @@ server/generate_worldmap is licensed under the GNU General Public License
version 2, because it loads data files which are distributed under
this license.
-Files in the server/internet2/zebra_dump_parser/ directory are
+Files in the server/zebra_dump_parser/ directory are
licensed under the GNU General Public License version 2.
13 years, 4 months
Branch 'v1.4' - 7 commits - Makefile mirrormanager.spec.in server/mirrormanager server/start-mirrormanager.py
by Matt Domsch
Makefile | 12 +-
mirrormanager.spec.in | 6 -
server/mirrormanager/controllers.py | 118 ++++++++++++++++++--
server/mirrormanager/model.py | 2
server/mirrormanager/schema_updates/update_1_4_0.py | 29 ++++
server/mirrormanager/templates/adminview.kid | 27 +++-
server/start-mirrormanager.py | 35 -----
7 files changed, 163 insertions(+), 66 deletions(-)
New commits:
commit 37afb6dec36d647c3a402d302337743df4b6a4e3
Author: Matt Domsch <Matt_Domsch(a)dell.com>
Date: Sun Oct 31 22:43:28 2010 -0500
fix update_1_4_0 to compile
diff --git a/server/mirrormanager/schema_updates/update_1_4_0.py b/server/mirrormanager/schema_updates/update_1_4_0.py
index 362872b..32b96f0 100644
--- a/server/mirrormanager/schema_updates/update_1_4_0.py
+++ b/server/mirrormanager/schema_updates/update_1_4_0.py
@@ -1,5 +1,5 @@
-from mirrormanager.model import Location, FileGroup, Site
-from sqlobject import BoolCol
+from mirrormanager.model import Location, FileGroup
+from sqlobject import SQLObject, BoolCol, IntCol
# upgrade methodology borrowed from
# http://www.mail-archive.com/sqlobject-discuss@lists.sourceforge.net/msg04...
@@ -25,18 +25,18 @@ def update():
if 'email_on_drop' not in OldSite.sqlmeta.columns and \
'email_on_add' not in OldSite.sqlmeta.columns:
- OldSite.addColumn(changeSchema=True, BoolCol("emailOnDrop", default=False))
- OldSite.addColumn(changeSchema=True, BoolCol("emailOnAdd", default=False))
+ OldSite.addColumn(BoolCol("emailOnDrop", default=False), changeSchema=True)
+ OldSite.addColumn(BoolCol("emailOnAdd", default=False), changeSchema=True)
for s in OldSite.select():
s.emailOnDrop=False
s.emailOnAdd=False
if 'dns_country_host' not in OldHost.sqlmeta.columns:
- OldHost.addColumn(changeSchema=True, BoolCol("dnsCountryHost", default=False))
+ OldHost.addColumn(BoolCol("dnsCountryHost", default=False), changeSchema=True)
for h in OldHost.select():
h.dnsCountryHost = False
if 'sortorder' not in OldVersion.sqlmeta.columns:
- OldVersion.addColumn(changeSchema=True, IntCol("sortorder"))
+ OldVersion.addColumn(IntCol("sortorder"), changeSchema=True)
for v in OldVersion.select():
v.sortorder = v.id
commit 120b4bade321f53b5149462b7b2c9faf6d90c7a3
Author: Matt Domsch <Matt_Domsch(a)dell.com>
Date: Sun Oct 31 22:42:56 2010 -0500
spec: fix changelog order
diff --git a/mirrormanager.spec.in b/mirrormanager.spec.in
index ccdc58d..a04ee26 100644
--- a/mirrormanager.spec.in
+++ b/mirrormanager.spec.in
@@ -152,6 +152,9 @@ Matt Domsch (8):
mirrorlist-server: use WSGIDaemonProcess for mirrorlist_client.wsgi
mirrormanager.wsgi run 4 instances per app server (up from 2)
+* Mon Oct 26 2009 Matt Domsch <mdomsch(a)fedoraproject.org> - 1.3.3-2
+- add patch to fix confirm delete from webui
+
* Thu Sep 28 2009 Matt Domsch <mdomsch(a)fedoraproject.org> - 1.3.3-1
- initial setup patches from BJ Dierkes
- simpler mirrormanager.initial, README.rpm_setup, prod.cfg
@@ -160,9 +163,6 @@ Matt Domsch (8):
* Thu Sep 28 2009 Matt Domsch <mdomsch(a)fedoraproject.org> - 1.3.2-1
- add BGP ASN lookups
-* Mon Oct 26 2009 Matt Domsch <mdomsch(a)fedoraproject.org> - 1.3.3-2
-- add patch to fix confirm delete from webui
-
* Fri Sep 18 2009 Matt Domsch <mdomsch(a)fedoraproject.org> - 1.3.1-1
- fix publiclist html
- fix Host netblock creation via web UI
commit b16b28a93b383031943818c397db5c8a29070986
Author: Matt Domsch <Matt_Domsch(a)dell.com>
Date: Sun Oct 31 22:42:17 2010 -0500
fix Makefile chdir/cd fix again
diff --git a/Makefile b/Makefile
index 78aa713..2a6e53f 100644
--- a/Makefile
+++ b/Makefile
@@ -1,7 +1,7 @@
-RELEASE_DATE := "11-Sep-2010"
+RELEASE_DATE := "31-Oct-2010"
RELEASE_MAJOR := 1
-RELEASE_MINOR := 3
-RELEASE_EXTRALEVEL := .7
+RELEASE_MINOR := 4
+RELEASE_EXTRALEVEL := .0
RELEASE_NAME := mirrormanager
RELEASE_VERSION := $(RELEASE_MAJOR).$(RELEASE_MINOR)$(RELEASE_EXTRALEVEL)
RELEASE_STRING := $(RELEASE_NAME)-$(RELEASE_VERSION)
@@ -28,7 +28,7 @@ $(RELEASE_PY):
sed -e 's/##VERSION##/$(RELEASE_VERSION)/' $(RELEASE_PY).in > $(RELEASE_PY)
prep: $(SPEC) $(RELEASE_PY)
- chdir server ; python setup.py egg_info
+ cd server ; python setup.py egg_info
echo 'db_module=mirrormanager.model' > server/mirrormanager.egg-info/sqlobject.txt
echo 'history_dir=$$base/mirrormanager/sqlobject-history' >> server/mirrormanager.egg-info/sqlobject.txt
sync ; sync ; sync
@@ -60,13 +60,13 @@ rpm: tarball $(SPEC)
mkdir -p $${tmp_dir}/{BUILD,RPMS,SRPMS,SPECS,SOURCES} ; \
cp $(TARBALL) $${tmp_dir}/SOURCES ; \
cp $(SPEC) $${tmp_dir}/SPECS ; \
- pushd $${tmp_dir} > /dev/null 2>&1; \
+ cd $${tmp_dir} > /dev/null 2>&1; \
rpmbuild -ba --define "_topdir $${tmp_dir}" \
--define "_source_filedigest_algorithm 0" \
--define "_binary_filedigest_algorithm 0" \
--define "dist %{nil}" \
SPECS/mirrormanager.spec ; \
- popd > /dev/null 2>&1; \
+ cd - > /dev/null 2>&1; \
cp $${tmp_dir}/RPMS/noarch/* $${tmp_dir}/SRPMS/* . ; \
rm -rf $${tmp_dir} ; \
rpmlint *.rpm *.spec
commit d3abedcd63b3acdcc9b46e48bb84a83a8fa3c87c
Author: Matt Domsch <Matt_Domsch(a)dell.com>
Date: Sun Oct 31 21:58:36 2010 -0500
controllers: update Site, Host, SimpleDbObject, add Location and LocationHost controllers
Site: add a 'search' function.
Host: add dnsCountryHost field
SimpleDbObject:
handle tg_errors
drop unneeded /0/ from create and new URLs
Location and LocationHost: create new controllers
diff --git a/server/mirrormanager/controllers.py b/server/mirrormanager/controllers.py
index e0f7fd9..12ea1e9 100644
--- a/server/mirrormanager/controllers.py
+++ b/server/mirrormanager/controllers.py
@@ -170,6 +170,13 @@ class SiteController(controllers.Controller, identity.SecureResource, content):
site.del_downstream_site(dsite)
raise turbogears.redirect("/site/%s" % site.id)
+ @expose(format='json')
+ def search(self, name):
+ """Called by the LocationHost controller AutoCompleteWidget."""
+ if not name: return dict()
+ results = Site.select(LIKE(Site.q.name, "%"+name+"%"))
+ sites = [ s.name for s in results ]
+ return dict(sites=sites)
##############################################
class SiteAdminFields(widgets.WidgetsList):
@@ -314,6 +321,7 @@ class HostFields(widgets.WidgetsList):
asn = widgets.TextField("asn", label="ASN", default='', validator=validators.Int, help_text="Autonomous System Number, used in BGP routing tables.")
asn_clients = widgets.CheckBox('asn_clients', label="ASN Clients?", default=True, help_text="Serve all clients from the same ASN. Used for ISPs, companies, or schools, not personal networks.")
robot_email = widgets.TextField(validator=validators.All(validators.UnicodeString,validators.Email), help_text="email address, will receive notice of upstream content updates")
+ dnsCountryHost = widgets.CheckBox(help_text="use host in <country-code>.<domain> DNS entries")
comment = widgets.TextField(validator=validators.Any(validators.UnicodeString, validators.Empty), help_text="text, anything else you'd like a public end user to know about your mirror")
host_form = widgets.TableForm(fields=HostFields(),
@@ -326,6 +334,7 @@ class HostController(controllers.Controller, identity.SecureResource, content):
disabled_fields = []
if not identity.in_group(admin_group):
disabled_fields.append('admin_active')
+ disabled_fields.append('dnsCountryHost')
if host is not None:
site = host.my_site()
@@ -805,22 +814,24 @@ class SimpleDbObjectController(controllers.Controller, identity.SecureResource,
myClass = None
url_prefix=None
- def get(self, id):
+ def get(self, id, tg_errors=None):
v = self.myClass.get(id)
return dict(values=v)
@expose(template="mirrormanager.templates.boringform")
- def new(self, **kwargs):
+ def new(self, tg_errors=None, **kwargs):
- submit_action = "/%s/0/create" % self.url_prefix
+ submit_action = "/%s/create" % self.url_prefix
return dict(form=self.form, values=None, action=submit_action, page_title=self.page_title)
- def create(self, **kwargs):
+
+ def create(self, tg_errors=None, **kwargs):
try:
obj = self.myClass(**kwargs)
- except: # probably sqlite IntegrityError but we can't catch that for some reason...
- turbogears.flash("Error: Object already exists")
- raise redirect("/%s/0/new" % self.url_prefix)
+ except:
+ if tg_errors is not None:
+ turbogears.flash("Error: %s" % createErrorString(tg_errors))
+ raise redirect("/%s/new" % self.url_prefix)
turbogears.flash("Success: Object created.")
turbogears.redirect("/adminview")
@@ -829,14 +840,17 @@ class SimpleDbObjectController(controllers.Controller, identity.SecureResource,
submit_action = "/%s/%s/update" % (self.url_prefix, obj.id)
return dict(form=self.form, values=obj, action=submit_action, page_title=self.page_title)
- def update(self, obj, **kwargs):
+ def update(self, obj, tg_errors=None, **kwargs):
+ if tg_errors is not None:
+ turbogears.flash("Error: %s" % createErrorString(tg_errors))
+ raise redirect("/adminview")
obj.set(**kwargs)
obj.sync()
submit_action = "/%s/%s/update" % (self.url_prefix, obj.id)
return dict(form=self.form, values=obj, action=submit_action, page_title=self.page_title)
@expose(template="mirrormanager.templates.boringdeleteform")
- def delete(self, obj, **kwargs):
+ def delete(self, obj, tg_errors=None, **kwargs):
confirmed = kwargs.get('confirmed', None)
confirm_delete_form = widgets.TableForm(fields=ConfirmDeleteFields(), submit_text="Yes, really delete it!")
if confirmed:
@@ -1047,6 +1061,90 @@ class CountryContinentRedirectController(SimpleDbObjectController):
def update(self, obj, **kwargs):
return SimpleDbObjectController.update(self, obj, **kwargs)
+#########################################################
+# Location
+#########################################################
+class LocationFields(widgets.WidgetsList):
+ name = widgets.TextField(validator=validators.All(validators.NotEmpty, validators.UnicodeString), label="Location Name")
+
+location_form = widgets.TableForm(fields=LocationFields(), submit_text="Create Location")
+
+class LocationController(SimpleDbObjectController):
+ page_title = "Location"
+ myClass = Location
+ url_prefix="location"
+ form = location_form
+
+ @expose(template="mirrormanager.templates.boringform")
+ @validate(form=form)
+ @error_handler(SimpleDbObjectController.new)
+ def create(self, tg_errors=None, **kwargs):
+ SimpleDbObjectController.create(self, tg_errors, **kwargs)
+
+ @expose(template="mirrormanager.templates.boringform")
+ @validate(form=form)
+ @error_handler()
+ def update(self, obj, tg_errors=None, **kwargs):
+ return SimpleDbObjectController.update(self, obj, tg_errors, **kwargs)
+
+ @expose(template="mirrormanager.templates.boringdeleteform")
+ def delete(self, obj, tg_errors=None, **kwargs):
+ confirmed = kwargs.get('confirmed', None)
+ confirm_delete_form = widgets.TableForm(fields=ConfirmDeleteFields(), submit_text="Yes, really delete it!")
+ if confirmed:
+ turbogears.flash("%s has been deleted." % obj.name)
+ obj.destroySelf()
+ turbogears.redirect("/adminview")
+ else:
+ form = confirm_delete_form
+ page_title = "Item Deletion"
+ submit_action = "/%s/%s/delete?confirmed=1" % (self.url_prefix, obj.id)
+ return dict(form=form, values=obj, action=submit_action, page_title=page_title)
+
+
+#########################################################
+# LocationHosts
+#########################################################
+class LocationHostFields(widgets.WidgetsList):
+ locationName = widgets.Label(label="Location Name")
+ siteName = widgets.AutoCompleteField(label="Site Name",
+ search_controller=tg.url('/site/search'),
+ search_param='name', result_name='sites',
+ validator=validators.AutoCompleteValidator())
+
+location_host_form = widgets.TableForm(fields=LocationHostFields(), submit_text="Create Location / Host Mapping")
+
+class LocationHostController(SimpleDbObjectController):
+ page_title = "Location / Host"
+ myClass = Location
+ url_prefix="locationhosts"
+ form = location_host_form
+
+ @expose(template="mirrormanager.templates.boringform")
+ @validate(form=form)
+ @error_handler(SimpleDbObjectController.new)
+ def create(self, tg_errors=None, **kwargs):
+ SimpleDbObjectController.create(self, tg_errors, **kwargs)
+
+ @expose(template="mirrormanager.templates.boringform")
+ @validate(form=form)
+ @error_handler()
+ def update(self, obj, tg_errors=None, **kwargs):
+ return SimpleDbObjectController.update(self, obj, tg_errors, **kwargs)
+
+ @expose(template="mirrormanager.templates.boringdeleteform")
+ def delete(self, obj, tg_errors=None, **kwargs):
+ confirmed = kwargs.get('confirmed', None)
+ confirm_delete_form = widgets.TableForm(fields=ConfirmDeleteFields(), submit_text="Yes, really delete it!")
+ if confirmed:
+ turbogears.flash("%s has been deleted." % obj.name)
+ obj.destroySelf()
+ turbogears.redirect("/adminview")
+ else:
+ form = confirm_delete_form
+ page_title = "Item Deletion"
+ submit_action = "/%s/%s/delete?confirmed=1" % (self.url_prefix, obj.id)
+ return dict(form=form, values=obj, action=submit_action, page_title=page_title)
@@ -1071,6 +1169,7 @@ class Root(controllers.RootController):
repository = RepositoryController()
repository_redirect = RepositoryRedirectController()
country_continent_redirect = CountryContinentRedirectController()
+ location = LocationController()
from mirrormanager.xmlrpc import XmlrpcController
xmlrpc = XmlrpcController()
@@ -1106,6 +1205,7 @@ class Root(controllers.RootController):
"netblocks":HostNetblock.select(orderBy='host_id'),
"repository_redirects":RepositoryRedirect.select(orderBy='fromRepo'),
"country_continent_redirects":CountryContinentRedirect.select(orderBy='country'),
+ "locations":Location.select(orderBy='name'),
}
@expose(template="mirrormanager.templates.rsync_acl", format="plain", content_type="text/plain")
commit 6266d222dd1a5492e036fc97a843a57a6790e3e0
Author: Matt Domsch <Matt_Domsch(a)dell.com>
Date: Sun Oct 31 21:57:30 2010 -0500
adminview: add [Add] buttons to object types
diff --git a/server/mirrormanager/templates/adminview.kid b/server/mirrormanager/templates/adminview.kid
index e7be89c..c559d9d 100644
--- a/server/mirrormanager/templates/adminview.kid
+++ b/server/mirrormanager/templates/adminview.kid
@@ -26,8 +26,7 @@ Nothing to see here, move along.
</ul>
</div>
<div id="Arches">
-<h3>Arches</h3>
-<a href="${tg.url('/arch/0/new')}">[Add]</a>
+<h3>Arches <a href="${tg.url('/arch/0/new')}">[Add]</a></h3>
<ul>
<li py:for="arch in arches">
@@ -36,8 +35,7 @@ Nothing to see here, move along.
</ul>
</div>
<div id="Products">
-<h3>Products</h3>
-<a href="${tg.url('/product/0/new')}">[Add]</a>
+<h3>Products <a href="${tg.url('/product/0/new')}">[Add]</a></h3>
<ul>
<li py:for="p in products">
<span py:replace="p.name">Product</span> <a href="${tg.url('/product/'+str(p.id)+'/delete')}">[Delete]</a>
@@ -45,8 +43,7 @@ Nothing to see here, move along.
</ul>
</div>
<div id="Versions">
-<h3>Versions</h3>
-<a href="${tg.url('/version/0/new')}">[Add]</a>
+<h3>Versions <a href="${tg.url('/version/0/new')}">[Add]</a></h3>
<ul>
<li py:for="v in versions">
<a href="${tg.url('/version/'+str(v.id)+'/')}">
@@ -77,8 +74,7 @@ Nothing to see here, move along.
</ul>
</div>
<div id="Embargoed Countries">
-<h3>Embargoed Counries</h3>
-<a href="${tg.url('/embargoed_country/0/new')}">[Add]</a>
+<h3>Embargoed Counries <a href="${tg.url('/embargoed_country/0/new')}">[Add]</a></h3>
<ul>
<li py:for="cc in embargoed_countries">
<span py:replace="cc.country_code">Country Code</span> <a href="${tg.url('/embargoed_country/'+str(cc.id)+'/delete')}">[Delete]</a>
@@ -112,6 +108,21 @@ Nothing to see here, move along.
</li>
</ul>
</div>
+<div id="Locations">
+<h3>Locations <a href="${tg.url('/location/new')}">[Add]</a></h3>
+<ul>
+ <li py:for="l in locations"> <a href="${tg.url('/location/'+str(l.id)+'/')}"><span py:replace="l.name">Location</span></a>
+ <a href="${tg.url('/location/%s/delete' % (l.id))}">[Delete]</a>
+
+ <UL>
+ <li py:for="h in l.hosts">
+ <a href="${tg.url('/host/' + str(h.id))}"><span py:replace="h.name">Host name</span></a>
+ <a href="${tg.url('/location/%s/%s/delete' % (l.id,h.id))}">[Delete]</a>
+ </li>
+ </UL>
+ </li>
+</ul>
+</div>
</div>
</body>
</html>
commit 4ff484ce766bee63258ae2ff4f3b454ff961787d
Author: Matt Domsch <Matt_Domsch(a)dell.com>
Date: Sun Oct 31 21:47:27 2010 -0500
SCHEMA CHANGE: add Version.sortorder and Host.dnsCountryHost
diff --git a/server/mirrormanager/model.py b/server/mirrormanager/model.py
index b1fb792..ec02c2f 100644
--- a/server/mirrormanager/model.py
+++ b/server/mirrormanager/model.py
@@ -191,6 +191,7 @@ class Host(SQLObject):
internet2_clients = BoolCol(default=False)
asn = IntCol(default=None)
asn_clients = BoolCol(default=True)
+ dnsCountryHost = BoolCol(default=False)
countries_allowed = MultipleJoin('HostCountryAllowed')
netblocks = MultipleJoin('HostNetblock', orderBy='netblock')
acl_ips = MultipleJoin('HostAclIp', orderBy='ip')
@@ -637,6 +638,7 @@ class Version(SQLObject):
display = BoolCol(default=True)
display_name = UnicodeCol(default=None)
ordered_mirrorlist = BoolCol(default=True)
+ sortorder = IntCol()
class Directory(SQLObject):
diff --git a/server/mirrormanager/schema_updates/update_1_4_0.py b/server/mirrormanager/schema_updates/update_1_4_0.py
index cc9f074..362872b 100644
--- a/server/mirrormanager/schema_updates/update_1_4_0.py
+++ b/server/mirrormanager/schema_updates/update_1_4_0.py
@@ -9,6 +9,15 @@ class OldSite(SQLObject):
fromDatabase = True
table = 'site'
+class OldHost(SQLObject):
+ class sqlmeta:
+ fromDatabase = True
+ table = 'host'
+
+class OldVersion(SQLObject):
+ class sqlmeta:
+ fromDatabase = True
+ table = 'version'
def update():
Location.createTable(ifNotExists=True)
@@ -18,6 +27,16 @@ def update():
'email_on_add' not in OldSite.sqlmeta.columns:
OldSite.addColumn(changeSchema=True, BoolCol("emailOnDrop", default=False))
OldSite.addColumn(changeSchema=True, BoolCol("emailOnAdd", default=False))
- for s in Site.select():
+ for s in OldSite.select():
s.emailOnDrop=False
s.emailOnAdd=False
+
+ if 'dns_country_host' not in OldHost.sqlmeta.columns:
+ OldHost.addColumn(changeSchema=True, BoolCol("dnsCountryHost", default=False))
+ for h in OldHost.select():
+ h.dnsCountryHost = False
+
+ if 'sortorder' not in OldVersion.sqlmeta.columns:
+ OldVersion.addColumn(changeSchema=True, IntCol("sortorder"))
+ for v in OldVersion.select():
+ v.sortorder = v.id
commit 31c955cf8e4485b505f51c5a38b6f7292ac5c33d
Author: Matt Domsch <Matt_Domsch(a)dell.com>
Date: Sun Oct 31 21:46:35 2010 -0500
remove start-mirrormanager.py, use mirrormanager.wsgi instead
diff --git a/server/start-mirrormanager.py b/server/start-mirrormanager.py
deleted file mode 100755
index 5b32f84..0000000
--- a/server/start-mirrormanager.py
+++ /dev/null
@@ -1,35 +0,0 @@
-#!/usr/bin/python
-__requires__ = 'TurboGears[future]'
-import pkg_resources
-pkg_resources.require("TurboGears")
-
-import turbogears
-from turbogears import startup
-
-import cherrypy
-cherrypy.lowercase_api = True
-
-from os.path import *
-import sys
-from fedora.tg.util import enable_csrf
-
-# first look on the command line for a desired config file,
-# if it's not on the command line, then
-# look for setup.py in this directory. If it's not there, this script is
-# probably installed
-if len(sys.argv) > 1:
- turbogears.update_config(configfile=sys.argv[1],
- modulename="mirrormanager.config")
-elif exists(join(dirname(__file__), "setup.py")):
- turbogears.update_config(configfile="dev.cfg",
- modulename="mirrormanager.config")
-else:
- turbogears.update_config(configfile="prod.cfg",
- modulename="mirrormanager.config")
-
-startup.call_on_startup.append(enable_csrf)
-
-from mirrormanager.controllers import Root
-import mirrormanager.mirrorlist
-
-turbogears.start_server(Root())
13 years, 5 months