[cura-tools] master: rename (710bfb3)
by aledvink@fedoraproject.org
Repository : http://git.fedorahosted.org/cgit/cura-tools.git
On branch : master
>---------------------------------------------------------------
commit 710bfb3a2f9ae444f90aece76e80ab8fcafb4f9c
Author: Ales Ledvinka <aledvink(a)redhat.com>
Date: Tue Oct 23 09:33:26 2012 +0200
rename
>---------------------------------------------------------------
.gitignore | 1 +
README | 12 ++++++------
cli-tools/makefile.am | 2 +-
configure.ac | 2 +-
4 files changed, 9 insertions(+), 8 deletions(-)
diff --git a/.gitignore b/.gitignore
index c6cf280..67b72a9 100644
--- a/.gitignore
+++ b/.gitignore
@@ -9,3 +9,4 @@ configure
install-sh
missing
py-compile
+.spyderproject
diff --git a/README b/README
index 611e6c4..33d325d 100644
--- a/README
+++ b/README
@@ -1,19 +1,19 @@
*******************************************************************************
-* Cura *
+* OpenLMI *
*******************************************************************************
-The Cura project provides a common infrastructure for the management of Linux
+The OpenLMI project provides a common infrastructure for the management of Linux
systems. Capabilities include configuration, management and monitoring of
-hardware, operating systems, and system services. Cura includes a set of
+hardware, operating systems, and system services. OpenLMI includes a set of
services that can be accessed both locally and remotely, multiple language
bindings, standard APIs, and standard scripting interfaces.
*******************************************************************************
-* Cura-tools *
+* OpenLMI-tools *
*******************************************************************************
-Cura-tools is a set of command line tools for Cura-providers.
+OpenLMI-tools is a set of command line tools for OpenLMI-providers.
Following cli tools are part of this sub-project:
@@ -49,7 +49,7 @@ require pywbem module.
*******************************************************************************
Following steps will install cli-tools and python modules, that contain
-python clients for each Cura provider.
+python clients for each OpenLMI provider.
$ mkdir build && cd build
$ ../configure --prefix=/usr
diff --git a/cli-tools/makefile.am b/cli-tools/makefile.am
index 3d4088b..aca074b 100644
--- a/cli-tools/makefile.am
+++ b/cli-tools/makefile.am
@@ -1,4 +1,4 @@
-SUBDIRS = fmci
+SUBDIRS = fmci wsbios
bin_SCRIPTS = \
fmci-ip.py \
diff --git a/configure.ac b/configure.ac
index a9afd07..abec889 100644
--- a/configure.ac
+++ b/configure.ac
@@ -1,5 +1,5 @@
AC_PREREQ([2.60])
-AC_INIT([cura-tools], [0.1], [phatina(a)redhat.com])
+AC_INIT([OpenLMI-tools], [0.1], [phatina(a)redhat.com])
AC_CONFIG_MACRO_DIR([m4])
m4_include([m4/python_module.m4])
11 years, 6 months
[cura-tools] master: add base, ip client to makefile.am (aea9b94)
by phatina@fedorahosted.org
Repository : http://git.fedorahosted.org/cgit/cura-tools.git
On branch : master
>---------------------------------------------------------------
commit aea9b947be2a934494a862f628f851c239d70c21
Author: Peter Hatina <phatina(a)redhat.com>
Date: Mon Oct 8 19:59:00 2012 +0200
add base, ip client to makefile.am
>---------------------------------------------------------------
cli-tools/fmci/makefile.am | 2 ++
1 files changed, 2 insertions(+), 0 deletions(-)
diff --git a/cli-tools/fmci/makefile.am b/cli-tools/fmci/makefile.am
index eded1b9..3c41ae2 100644
--- a/cli-tools/fmci/makefile.am
+++ b/cli-tools/fmci/makefile.am
@@ -1,5 +1,7 @@
fmci_PYTHON = \
fmci_address.py \
+ fmci_client_base.py \
+ fmci_client_ip.py \
fmci_client_power.py \
fmci_client_service.py \
fmci_client_user.py \
11 years, 7 months
[cura-tools] master: rebove shebangs from fmci modules (a9aed54)
by phatina@fedoraproject.org
Repository : http://git.fedorahosted.org/cgit/cura-tools.git
On branch : master
>---------------------------------------------------------------
commit a9aed5403ece4639f8be39b39db0d571872ae573
Author: Peter Hatina <phatina(a)redhat.com>
Date: Sun Oct 7 12:11:32 2012 +0200
rebove shebangs from fmci modules
>---------------------------------------------------------------
cli-tools/fmci/fmci_address.py | 1 -
cli-tools/fmci/fmci_client_base.py | 1 -
cli-tools/fmci/fmci_client_ip.py | 1 -
cli-tools/fmci/fmci_client_power.py | 1 -
cli-tools/fmci/fmci_client_service.py | 1 -
cli-tools/fmci/fmci_client_user.py | 1 -
cli-tools/fmci/fmci_options.py | 1 -
7 files changed, 0 insertions(+), 7 deletions(-)
diff --git a/cli-tools/fmci/fmci_address.py b/cli-tools/fmci/fmci_address.py
index 6017ed2..da4b832 100644
--- a/cli-tools/fmci/fmci_address.py
+++ b/cli-tools/fmci/fmci_address.py
@@ -1,4 +1,3 @@
-#!/usr/bin/env python
# Copyright (C) 2012 Peter Hatina <phatina(a)redhat.com>
#
# This program is free software; you can redistribute it and/or
diff --git a/cli-tools/fmci/fmci_client_base.py b/cli-tools/fmci/fmci_client_base.py
index 8c54b29..e2618f8 100644
--- a/cli-tools/fmci/fmci_client_base.py
+++ b/cli-tools/fmci/fmci_client_base.py
@@ -1,4 +1,3 @@
-#!/usr/bin/env python
# Copyright (C) 2012 Peter Hatina <phatina(a)redhat.com>
#
# This program is free software; you can redistribute it and/or
diff --git a/cli-tools/fmci/fmci_client_ip.py b/cli-tools/fmci/fmci_client_ip.py
index 8c11ffc..d86b8dd 100644
--- a/cli-tools/fmci/fmci_client_ip.py
+++ b/cli-tools/fmci/fmci_client_ip.py
@@ -1,4 +1,3 @@
-#!/usr/bin/env python
# Copyright (C) 2012 Peter Hatina <phatina(a)redhat.com>
#
# This program is free software; you can redistribute it and/or
diff --git a/cli-tools/fmci/fmci_client_power.py b/cli-tools/fmci/fmci_client_power.py
index 15ffda3..a99934d 100644
--- a/cli-tools/fmci/fmci_client_power.py
+++ b/cli-tools/fmci/fmci_client_power.py
@@ -1,4 +1,3 @@
-#!/usr/bin/env python
# Copyright (C) 2012 Peter Hatina <phatina(a)redhat.com>
#
# This program is free software; you can redistribute it and/or
diff --git a/cli-tools/fmci/fmci_client_service.py b/cli-tools/fmci/fmci_client_service.py
index 5571106..a2df60b 100644
--- a/cli-tools/fmci/fmci_client_service.py
+++ b/cli-tools/fmci/fmci_client_service.py
@@ -1,4 +1,3 @@
-#!/usr/bin/env python
# Copyright (C) 2012 Peter Hatina <phatina(a)redhat.com>
#
# This program is free software; you can redistribute it and/or
diff --git a/cli-tools/fmci/fmci_client_user.py b/cli-tools/fmci/fmci_client_user.py
index 5c96e9c..95f9616 100644
--- a/cli-tools/fmci/fmci_client_user.py
+++ b/cli-tools/fmci/fmci_client_user.py
@@ -1,4 +1,3 @@
-#!/usr/bin/env python
# Copyright (C) 2012 Peter Hatina <phatina(a)redhat.com>
#
# This program is free software; you can redistribute it and/or
diff --git a/cli-tools/fmci/fmci_options.py b/cli-tools/fmci/fmci_options.py
index 264b164..14d758a 100644
--- a/cli-tools/fmci/fmci_options.py
+++ b/cli-tools/fmci/fmci_options.py
@@ -1,4 +1,3 @@
-#!/usr/bin/env python
# Copyright (C) 2012 Peter Hatina <phatina(a)redhat.com>
#
# This program is free software; you can redistribute it and/or
11 years, 7 months
[cura-tools] master: add autoconf check for pywbem module (ba4eb95)
by phatina@fedoraproject.org
Repository : http://git.fedorahosted.org/cgit/cura-tools.git
On branch : master
>---------------------------------------------------------------
commit ba4eb9568d8a11fb08b80dcaa578c2918cedfa84
Author: Peter Hatina <phatina(a)redhat.com>
Date: Sun Oct 7 11:30:53 2012 +0200
add autoconf check for pywbem module
>---------------------------------------------------------------
configure.ac | 5 +++++
m4/python_module.m4 | 11 +++++++++++
2 files changed, 16 insertions(+), 0 deletions(-)
diff --git a/configure.ac b/configure.ac
index 99cbca7..a9afd07 100644
--- a/configure.ac
+++ b/configure.ac
@@ -1,9 +1,14 @@
AC_PREREQ([2.60])
AC_INIT([cura-tools], [0.1], [phatina(a)redhat.com])
+AC_CONFIG_MACRO_DIR([m4])
+m4_include([m4/python_module.m4])
+
AM_INIT_AUTOMAKE([dist-bzip2])
AM_PATH_PYTHON([2.7])
+AC_PYTHON_MODULE([pywbem])
+
AC_CONFIG_FILES([
makefile
cli-tools/makefile
diff --git a/m4/python_module.m4 b/m4/python_module.m4
new file mode 100644
index 0000000..bdb0cdf
--- /dev/null
+++ b/m4/python_module.m4
@@ -0,0 +1,11 @@
+AC_DEFUN([AC_PYTHON_MODULE], [
+ AC_MSG_CHECKING(python module: $1)
+ python -c "import $1" 2> /dev/null
+ if test $? -eq 0; then
+ AC_MSG_RESULT(yes)
+ else
+ AC_MSG_RESULT(no)
+ AC_MSG_ERROR(failed to find required module $1)
+ exit 1
+ fi
+])
11 years, 7 months
[cura-tools] master: fix unauthorized message in FmciUserClient (6882a98)
by phatina@fedoraproject.org
Repository : http://git.fedorahosted.org/cgit/cura-tools.git
On branch : master
>---------------------------------------------------------------
commit 6882a98f13abb5696474e8a98a99d79581cfcf7f
Author: Peter Hatina <phatina(a)redhat.com>
Date: Sun Oct 7 10:43:45 2012 +0200
fix unauthorized message in FmciUserClient
>---------------------------------------------------------------
cli-tools/fmci/fmci_client_user.py | 2 +-
1 files changed, 1 insertions(+), 1 deletions(-)
diff --git a/cli-tools/fmci/fmci_client_user.py b/cli-tools/fmci/fmci_client_user.py
index e24d1e2..5c96e9c 100644
--- a/cli-tools/fmci/fmci_client_user.py
+++ b/cli-tools/fmci/fmci_client_user.py
@@ -81,7 +81,7 @@ class FmciUserClient(FmciBaseClient):
def listGroups(self):
(inst_list, errorstr) = self.__getGroupInstances()
if not inst_list:
- return (False, "No groups found")
+ return (False, errorstr)
for i in inst_list:
sys.stdout.write("%s:%s\n" %
(i["Name"], i["InstanceID"].split(":")[-1]))
11 years, 7 months
[cura-tools] master: fix no route to host error message (085122e)
by phatina@fedoraproject.org
Repository : http://git.fedorahosted.org/cgit/cura-tools.git
On branch : master
>---------------------------------------------------------------
commit 085122e9d13d58ef4adaa866015220756fa6e43b
Author: Peter Hatina <phatina(a)redhat.com>
Date: Sun Oct 7 10:28:24 2012 +0200
fix no route to host error message
>---------------------------------------------------------------
cli-tools/fmci-service.py | 1 +
cli-tools/fmci/fmci_client_ip.py | 2 +-
cli-tools/fmci/fmci_client_user.py | 2 +-
3 files changed, 3 insertions(+), 2 deletions(-)
diff --git a/cli-tools/fmci-service.py b/cli-tools/fmci-service.py
index 6e1d8e5..b446cf8 100755
--- a/cli-tools/fmci-service.py
+++ b/cli-tools/fmci-service.py
@@ -60,6 +60,7 @@ if __name__ == "__main__":
(service, errorstr) = client.serviceFind(options.service)
if not service:
sys.stderr.write("%s: %s\n" % (client_hostname.name, errorstr))
+ client_failed = True
continue
actions = {
"start": (service.start, "Start: "),
diff --git a/cli-tools/fmci/fmci_client_ip.py b/cli-tools/fmci/fmci_client_ip.py
index 983f817..8c11ffc 100644
--- a/cli-tools/fmci/fmci_client_ip.py
+++ b/cli-tools/fmci/fmci_client_ip.py
@@ -33,7 +33,7 @@ class FmciIpClient(FmciBaseClient):
def __ipGetIpProtocolEndpointInstances(self, device = ""):
(inst_list, errorstr) = self._getInstances(FmciIpClient.IP_PROTOCOL_ENDPOINT_CLASS_NAME)
if not inst_list:
- return (None, "No devices found")
+ return (None, errorstr)
rval_inst_list = filter(lambda n: device == n["Name"].split("_")[0], inst_list) if device else inst_list
if not rval_inst_list:
return (None, "No such device '%s' found" % device)
diff --git a/cli-tools/fmci/fmci_client_user.py b/cli-tools/fmci/fmci_client_user.py
index c07b937..e24d1e2 100644
--- a/cli-tools/fmci/fmci_client_user.py
+++ b/cli-tools/fmci/fmci_client_user.py
@@ -66,7 +66,7 @@ class FmciUserClient(FmciBaseClient):
def listUsers(self):
(inst_list, errorstr) = self.__getUserInstances()
if not inst_list:
- return (False, "No users found")
+ return (False, errorstr)
try:
for i in inst_list:
groups = self.__getMemberGroups(i)
11 years, 7 months
[cura-tools] master: remove fqdn regexp (23507d6)
by phatina@fedoraproject.org
Repository : http://git.fedorahosted.org/cgit/cura-tools.git
On branch : master
>---------------------------------------------------------------
commit 23507d66cc7af9dedc3e9b36fb8ea540cfef8983
Author: Peter Hatina <phatina(a)redhat.com>
Date: Sun Oct 7 10:19:54 2012 +0200
remove fqdn regexp
>---------------------------------------------------------------
cli-tools/fmci/fmci_address.py | 8 ++------
1 files changed, 2 insertions(+), 6 deletions(-)
diff --git a/cli-tools/fmci/fmci_address.py b/cli-tools/fmci/fmci_address.py
index d69a7a4..6017ed2 100644
--- a/cli-tools/fmci/fmci_address.py
+++ b/cli-tools/fmci/fmci_address.py
@@ -170,17 +170,13 @@ class FmciIpv6Addr(object):
return rval
class FmciHostGenerator(object):
- PATTERN_TYPE_UNKNOWN, \
PATTERN_TYPE_FQDN, \
PATTERN_TYPE_IPV4, \
- PATTERN_TYPE_IPV6 = range(4)
+ PATTERN_TYPE_IPV6 = range(3)
@staticmethod
def recognizePatternType(pattern):
pattern_regexps = (
- ("(?=^.{1,254}$)(^(?:(?!\d+\.)[a-zA-Z0-9_\-]{1,63}\."
- "?)+(?:[a-zA-Z]{2,})$)",
- FmciHostGenerator.PATTERN_TYPE_FQDN),
("^(([\d]{1,3})|(\{([\d]{1,3}|[\d]{1,3}-[\d]{1,3})(;("
"[\d]{1,3}|[\d]{1,3}-[\d]{1,3}))*\}))\.(([\d]{1,3})"
"|(\{([\d]{1,3}|[\d]{1,3}-[\d]{1,3})(;([\d]{1,3}|[\d"
@@ -202,7 +198,7 @@ class FmciHostGenerator(object):
for (p, rval) in pattern_regexps:
if re.match(p, pattern):
return rval
- return FmciHostGenerator.PATTERN_TYPE_UNKNOWN
+ return FmciHostGenerator.PATTERN_TYPE_FQDN
@staticmethod
def enumerate(lst):
11 years, 7 months
[cura-tools] master: some minor changes in fmci_address.py (cf38b77)
by phatina@fedoraproject.org
Repository : http://git.fedorahosted.org/cgit/cura-tools.git
On branch : master
>---------------------------------------------------------------
commit cf38b77ba119233180c99fc30a9461c9740e6f25
Author: Peter Hatina <phatina(a)redhat.com>
Date: Sun Oct 7 10:03:53 2012 +0200
some minor changes in fmci_address.py
>---------------------------------------------------------------
cli-tools/fmci/fmci_address.py | 17 +++++++----------
1 files changed, 7 insertions(+), 10 deletions(-)
diff --git a/cli-tools/fmci/fmci_address.py b/cli-tools/fmci/fmci_address.py
index cb52493..d69a7a4 100644
--- a/cli-tools/fmci/fmci_address.py
+++ b/cli-tools/fmci/fmci_address.py
@@ -37,8 +37,7 @@ class FmciIpv4Addr(object):
self.m_member = member
def enumerate(self):
- pattern = re.compile("^{(.*)}$")
- match = pattern.search(self.m_member)
+ match = re.search("^{(.*)}$", self.m_member)
member = match.group(1) if match else []
if not member:
return [self.m_member]
@@ -46,12 +45,12 @@ class FmciIpv4Addr(object):
try:
members = []
for r in ranges:
- if not 0 <= int(r[0]) <= 255 or not 0 <= int(r[-1]) <= 255:
- return []
low = int(r[0])
high = int(r[-1])
if low > high:
low, high = high, low
+ if not 0 <= low <= 255 or not 0 <= high <= 255:
+ return []
members += [str(i) for i in range(low, high + 1)]
except ValueError:
return []
@@ -97,12 +96,11 @@ class FmciIpv4Addr(object):
return []
members = []
for m in str_members:
- ipm = FmciIpv4Addr.FmciIpv4Member(m)
- members.append(ipm)
- addresses = members[3].enumerate()
+ members.append(FmciIpv4Addr.FmciIpv4Member(m))
+ addresses = members[-1].enumerate()
if not addresses:
return []
- for i in reversed(range(0, 3)):
+ for i in reversed(range(0, len(members) - 1)):
combined = []
members_to_combine = members[i].enumerate()
if not members_to_combine:
@@ -128,8 +126,7 @@ class FmciIpv6Addr(object):
self.m_member = member
def enumerate(self):
- pattern = re.compile("^{(.*)}$")
- match = pattern.search(self.m_member)
+ match = re.search("^{(.*)}$", self.m_member)
member = match.group(1) if match else []
if not member:
return [self.m_member]
11 years, 7 months
[cura-tools] master: introduce ipv6 host address generator (99fe8f2)
by phatina@fedoraproject.org
Repository : http://git.fedorahosted.org/cgit/cura-tools.git
On branch : master
>---------------------------------------------------------------
commit 99fe8f2bab20c618e61d1edee01682e781c7a99f
Author: Peter Hatina <phatina(a)redhat.com>
Date: Sat Oct 6 22:35:34 2012 +0200
introduce ipv6 host address generator
>---------------------------------------------------------------
cli-tools/fmci/fmci_address.py | 61 +++++++++++++++++++++++++++++++++++++++-
1 files changed, 60 insertions(+), 1 deletions(-)
diff --git a/cli-tools/fmci/fmci_address.py b/cli-tools/fmci/fmci_address.py
index 16da184..cb52493 100644
--- a/cli-tools/fmci/fmci_address.py
+++ b/cli-tools/fmci/fmci_address.py
@@ -26,6 +26,8 @@ class FmciHost(object):
def name(self):
if isinstance(self.m_host, FmciIpv4Addr):
return self.m_host.address
+ elif isinstance(self.m_host, FmciIpv6Addr):
+ return self.m_host.address
else:
return self.m_host
@@ -113,6 +115,63 @@ class FmciIpv4Addr(object):
rval.append(FmciHost(FmciIpv4Addr(addr)))
return rval
+class FmciIpv6Addr(object):
+ def __init__(self, addr):
+ self.m_addr = addr
+
+ @property
+ def address(self):
+ return self.m_addr
+
+ class FmciIpv6Member(object):
+ def __init__(self, member):
+ self.m_member = member
+
+ def enumerate(self):
+ pattern = re.compile("^{(.*)}$")
+ match = pattern.search(self.m_member)
+ member = match.group(1) if match else []
+ if not member:
+ return [self.m_member]
+ ranges = (x.split("-") for x in member.split(";"))
+ try:
+ members = []
+ for r in ranges:
+ low = int(r[0], 16)
+ high = int(r[-1], 16)
+ if low > high:
+ low, high = high, low
+ if not 0 <= low <= 65535 or not 0 <= high <= 65535:
+ return []
+ members += [str(hex(i)[2:]) for i in range(low, high + 1)]
+ except ValueError:
+ return []
+ return members
+
+ @staticmethod
+ def enumerate(pattern):
+ if pattern.count("::") > 1 or pattern.count(":::") > 0:
+ return []
+ str_members = pattern.split(":")
+ members = []
+ for m in str_members:
+ members.append(FmciIpv6Addr.FmciIpv6Member(m))
+ addresses = members[-1].enumerate()
+ if not addresses:
+ return []
+ for i in reversed(range(0, len(members) - 1)):
+ combined = []
+ members_to_combine = members[i].enumerate()
+ if not members_to_combine:
+ return []
+ for r in itertools.product(members_to_combine, addresses):
+ combined.append(":".join([r[0], r[1]]))
+ addresses = combined
+ rval = []
+ for addr in sorted(set(addresses)):
+ rval.append(FmciHost(FmciIpv6Addr(addr)))
+ return rval
+
class FmciHostGenerator(object):
PATTERN_TYPE_UNKNOWN, \
PATTERN_TYPE_FQDN, \
@@ -158,7 +217,7 @@ class FmciHostGenerator(object):
elif pattern_type == FmciHostGenerator.PATTERN_TYPE_IPV4:
rval.extend(FmciIpv4Addr.enumerate(pattern))
elif pattern_type == FmciHostGenerator.PATTERN_TYPE_IPV6:
- pass
+ rval.extend(FmciIpv6Addr.enumerate(pattern))
else:
sys.stderr.write("Unrecognized host pattern supplied!\n")
return []
11 years, 7 months
[cura-tools] master: use regexps for address pattern iteration in FmciHostGenerator (c184214)
by phatina@fedoraproject.org
Repository : http://git.fedorahosted.org/cgit/cura-tools.git
On branch : master
>---------------------------------------------------------------
commit c18421428acb8ace3662ccedb9f239c240596cd6
Author: Peter Hatina <phatina(a)redhat.com>
Date: Sat Oct 6 20:45:48 2012 +0200
use regexps for address pattern iteration in FmciHostGenerator
>---------------------------------------------------------------
cli-tools/fmci/fmci_address.py | 47 ++++++++++++++++++++++++++++++++++++---
1 files changed, 43 insertions(+), 4 deletions(-)
diff --git a/cli-tools/fmci/fmci_address.py b/cli-tools/fmci/fmci_address.py
index 350a114..16da184 100644
--- a/cli-tools/fmci/fmci_address.py
+++ b/cli-tools/fmci/fmci_address.py
@@ -114,13 +114,52 @@ class FmciIpv4Addr(object):
return rval
class FmciHostGenerator(object):
+ PATTERN_TYPE_UNKNOWN, \
+ PATTERN_TYPE_FQDN, \
+ PATTERN_TYPE_IPV4, \
+ PATTERN_TYPE_IPV6 = range(4)
+
+ @staticmethod
+ def recognizePatternType(pattern):
+ pattern_regexps = (
+ ("(?=^.{1,254}$)(^(?:(?!\d+\.)[a-zA-Z0-9_\-]{1,63}\."
+ "?)+(?:[a-zA-Z]{2,})$)",
+ FmciHostGenerator.PATTERN_TYPE_FQDN),
+ ("^(([\d]{1,3})|(\{([\d]{1,3}|[\d]{1,3}-[\d]{1,3})(;("
+ "[\d]{1,3}|[\d]{1,3}-[\d]{1,3}))*\}))\.(([\d]{1,3})"
+ "|(\{([\d]{1,3}|[\d]{1,3}-[\d]{1,3})(;([\d]{1,3}|[\d"
+ "]{1,3}-[\d]{1,3}))*\}))\.(([\d]{1,3})|(\{([\d]{1,3"
+ "}|[\d]{1,3}-[\d]{1,3})(;([\d]{1,3}|[\d]{1,3}-[\d]{1"
+ ",3}))*\}))\.(([\d]{1,3})|(\{([\d]{1,3}|[\d]{1,3}-["
+ "\d]{1,3})(;([\d]{1,3}|[\d]{1,3}-[\d]{1,3}))*\}))$",
+ FmciHostGenerator.PATTERN_TYPE_IPV4),
+ ("^(([\da-fA-F]{1,4})|(\{([\da-fA-F]{1,4}|[\da-fA-F]{"
+ "1,4}-[\da-fA-F]{1,4})(;([\da-fA-F]{1,4}|[\da-fA-F]"
+ "{1,4}-[\da-fA-F]{1,4}))*\})){0,1}(:(([\da-fA-F]{1,"
+ "4})|(\{([\da-fA-F]{1,4}|[\da-fA-F]{1,4}-[\da-fA-F]"
+ "{1,4})(;([\da-fA-F]{1,4}|[\da-fA-F]{1,4}-[\da-fA-F"
+ "]{1,4}))*\})*)){0,6}:(([\da-fA-F]{1,4})|(\{([\da-f"
+ "A-F]{1,4}|[\da-fA-F]{1,4}-[\da-fA-F]{1,4})(;([\da-f"
+ "A-F]{1,4}|[\da-fA-F]{1,4}-[\da-fA-F]{1,4}))*\}))$",
+ FmciHostGenerator.PATTERN_TYPE_IPV6)
+ )
+ for (p, rval) in pattern_regexps:
+ if re.match(p, pattern):
+ return rval
+ return FmciHostGenerator.PATTERN_TYPE_UNKNOWN
+
@staticmethod
def enumerate(lst):
rval = []
for pattern in lst.split(","):
- addresses = FmciIpv4Addr.enumerate(pattern)
- if addresses:
- rval.extend(addresses)
- else:
+ pattern_type = FmciHostGenerator.recognizePatternType(pattern)
+ if pattern_type == FmciHostGenerator.PATTERN_TYPE_FQDN:
rval.append(FmciHost(pattern))
+ elif pattern_type == FmciHostGenerator.PATTERN_TYPE_IPV4:
+ rval.extend(FmciIpv4Addr.enumerate(pattern))
+ elif pattern_type == FmciHostGenerator.PATTERN_TYPE_IPV6:
+ pass
+ else:
+ sys.stderr.write("Unrecognized host pattern supplied!\n")
+ return []
return rval
11 years, 7 months