Repository :
http://git.fedorahosted.org/cgit/
On branch : v1.4
---------------------------------------------------------------
commit 13e07dbab28c47e4888802d04d6e180580f58bb6
Author: Matt Domsch <Matt_Domsch(a)dell.com>
Date: Sun Feb 24 23:39:55 2013 -0600
add distros/ as placeholder for distro-specific code
---------------------------------------------------------------
server/mirrormanager/{ => distros}/__init__.py | 0
server/mirrormanager/distros/base.py | 36 ++++++++++++++++++++++++
server/mirrormanager/distros/centos.py | 5 +++
server/mirrormanager/distros/debian.py | 11 +++++++
4 files changed, 52 insertions(+), 0 deletions(-)
diff --git a/server/mirrormanager/__init__.py b/server/mirrormanager/distros/__init__.py
similarity index 100%
copy from server/mirrormanager/__init__.py
copy to server/mirrormanager/distros/__init__.py
diff --git a/server/mirrormanager/distros/base.py b/server/mirrormanager/distros/base.py
new file mode 100644
index 0000000..8dea452
--- /dev/null
+++ b/server/mirrormanager/distros/base.py
@@ -0,0 +1,36 @@
+from turbogears.util import load_class
+import re
+
+class Distro(object):
+ legacy_site_name = 'Fedora Mirror'
+
+ def __init__(self):
+ super(Distro, self).__init__()
+ glob_ns = globals()
+
+
+ classname = 'Base'
+ class_path = config.get('mirrormanager.distro', classname)
+ class_ = load_class(class_path)
+ if class_:
+ log.info('Successfully loaded "%s".', class_path)
+ glob_ns['%s_class' % classname] = class_
+ else:
+ log.error('Could not load class "%s".'
+ ' Check mirrormanager.distro setting')
+
+
+ def trim_os_from_dirname(dirname):
+ # trim the /os off the name
+ index = dirname.rfind('/os')
+ if index > 0:
+ dirname = dirname[:index]
+ return dirname
+
+ def get_version_from_path(path):
+ # Fedora versioning
+ s = r'/?(([\.\d]+)(\-\w+)?)/'
+ m = re.search(re.compile(s), path)
+ if m is not None:
+ return m.group(1)
+ return None
diff --git a/server/mirrormanager/distros/centos.py
b/server/mirrormanager/distros/centos.py
new file mode 100644
index 0000000..cec48f1
--- /dev/null
+++ b/server/mirrormanager/distros/centos.py
@@ -0,0 +1,5 @@
+from base import Distro
+
+class CentosDistro(Distro):
+ def trim_os_from_dirname(dirname):
+ return dirname
diff --git a/server/mirrormanager/distros/debian.py
b/server/mirrormanager/distros/debian.py
new file mode 100644
index 0000000..3c08415
--- /dev/null
+++ b/server/mirrormanager/distros/debian.py
@@ -0,0 +1,11 @@
+from base import Distro
+import re
+
+class DebianDistro(Distro):
+ 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)
+ return None