summaryrefslogtreecommitdiffstats
path: root/src/lib/Server/Plugins/Metadata.py
diff options
context:
space:
mode:
Diffstat (limited to 'src/lib/Server/Plugins/Metadata.py')
-rw-r--r--src/lib/Server/Plugins/Metadata.py21
1 files changed, 18 insertions, 3 deletions
diff --git a/src/lib/Server/Plugins/Metadata.py b/src/lib/Server/Plugins/Metadata.py
index a911e6fd3..906a16fac 100644
--- a/src/lib/Server/Plugins/Metadata.py
+++ b/src/lib/Server/Plugins/Metadata.py
@@ -18,11 +18,12 @@ class MetadataRuntimeError(Exception):
class ClientMetadata(object):
'''This object contains client metadata'''
- def __init__(self, client, profile, groups, bundles, categories, uuid,
- password, query):
+ def __init__(self, client, profile, groups, bundles,
+ addresses, categories, uuid, password, query):
self.hostname = client
self.profile = profile
self.bundles = bundles
+ self.addresses = addresses
self.groups = groups
self.categories = categories
self.uuid = uuid
@@ -375,6 +376,20 @@ class Metadata(Bcfg2.Server.Plugin.Plugin,
self.set_profile(client, self.default, (None, None))
profile = self.default
[bundles, groups, categories] = self.groups[self.default]
+ '''
+ Handle aliases listed in clients.xml
+ addresses - contains address information for all aliases
+ mapping is as follows:
+ {alias: (ip, realname)}
+ '''
+ addresses = {}
+ for alias, host in self.aliases.iteritems():
+ for ip in self.addresses:
+ for name in self.addresses[ip]:
+ if name == host:
+ addresses[alias] = (ip, host)
+ if alias not in addresses:
+ addresses[alias] = (None, host)
newgroups = set(groups)
newbundles = set(bundles)
newcategories = {}
@@ -396,7 +411,7 @@ class Metadata(Bcfg2.Server.Plugin.Plugin,
[newbundles.add(b) for b in nbundles if b not in newbundles]
[newgroups.add(g) for g in ngroups if g not in newgroups]
newcategories.update(ncategories)
- return ClientMetadata(client, profile, newgroups, newbundles,
+ return ClientMetadata(client, profile, newgroups, newbundles, addresses,
newcategories, uuid, password, self.query)
def get_client_names_by_profiles(self, profiles):