blob: 379c95f312ab7fac97e6f33b095b7a8883a94d94 [file] [log] [blame]
import inspect
# Licensed to the Apache Software Foundation (ASF) under one
# or more contributor license agreements. See the NOTICE file
# distributed with this work for additional information
# regarding copyright ownership. The ASF licenses this file
# to you under the Apache License, Version 2.0 (the
# "License"); you may not use this file except in compliance
# with the License. You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
#* Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
class ConvertToXml:
"Template class, allow to output fields in xml format"
def getField(self):
return [name for name, obj in inspect.getmembers(self)
if not name.startswith("__") and not inspect.isroutine(obj)]
def attributesToXml(self):
result = ""
listOfAttr = self.getField()
for attrName in listOfAttr:
result += "<" + attrName + ">"
result += str(getattr(self, attrName))
result += "</" + attrName + ">"
return result
class Configurations(ConvertToXml):
"Root element for resulting file, incluge all exported data"
stack = "" #Stack entuty
configuration = "" #Configuration entity
hosts = "" #Hosts entity
def __init__(self):
self.stack = Stack()
self.hosts = Hosts()
self.configuration = ConfigurationEntity()
def __str__(self):
result = "<configurations>"
result += str(self.stack)
result += str(self.hosts)
result += str(self.configuration)
result += "</configurations>"
return result
###Stack structure {
class Stack(ConvertToXml):
comment = ""
services = "" #Services object
repository = "" #Repository object
def __init__(self):
self.services = Services()
self.repository = Repository()
def __str__(self):
result = "<stack>"
result += "<comment>" + self.comment + "</comment>"
result += str(self.services)
result += str(self.repository)
result += "</stack>"
return result
class Services(ConvertToXml):
service = [] #Service objects
def __str__(self):
result = "<services>"
for serv in self.service:
result += str(serv)
result += "</services>"
return result
def addService(self, service):
self.service.append(service)
class Service(ConvertToXml):
name = ""
version = ""
comment = ""
user = ""
enabled = ""
# def __init__(self, name, ver, comment, user, enabled):
# super(self)
#
# def __init__(self, name, ver, comment, user, enabled):
# self.name = name
# self.version = ver
# self.comment = comment
# self.user = user
# self.enabled = enabled
def __str__(self):
result = "<service>"
result += self.attributesToXml()
result += "</service>"
return result
class Repository(ConvertToXml):
comment = ""
info = "" #Info object
def __init__(self):
self.info = Info()
def __str__(self):
result = "<repository>"
result += "<comment>" + self.comment + "</comment>"
result += str(self.info)
result += "</repository>"
return result
class Info(ConvertToXml):
keys = {}
def __str__(self):
result = "<info>"
for key in self.keys.keys():
result += "<" + key + ">"
result += self.keys.get(key)
result += "</" + key + ">"
result += "</info>"
return result
def addKey(self, key, value):
self.keys[key] = value
###Stack structure }
###Configuration structure {
class ConfigurationEntity(ConvertToXml):
hadoopEnv = "" #HadoopEnv object
coreSite = "" #CoreSite
def __init__(self):
self.hadoopEnv = HadoopEnv()
self.coreSite = CoreSite()
def __str__(self):
result = "<configuration>"
result += str(self.hadoopEnv)
result += str(self.coreSite)
result += "</configuration>"
return result
class Hosts:
hosts = [] #Host collection
comment = ""
def addHost(self, host):
self.hosts.append(host)
def __str__(self):
result = "<hosts>"
for host in self.hosts:
result += str(host)
result += "</hosts>"
return result
class Host(ConvertToXml):
name = ""
def __str__(self):
result = "<host>"
result += self.name
result += "</host>"
return result
class HadoopEnv(ConvertToXml):
confDir = ""
namenodeJvmOpts = ""
clientOpts = ""
def __str__(self):
result = "<hadoop-env>"
result += self.attributesToXml()
result += "</hadoop-env>"
return result
class CoreSite(ConvertToXml):
fsDefaultName = ""
#hadoopTmpDir = ""
hadoopSecurityAuthentication = ""
def __str__(self):
result = "<core-site>"
result += self.attributesToXml()
result += "</core-site>"
return result
###Configuration structure }