OSPatching/patch/__init__.py (40 lines of code) (raw):
#!/usr/bin/python
#
# Copyright 2014 Microsoft Corporation
#
# Licensed 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.
#
# Requires Python 2.4+
import os
import re
import platform
from UbuntuPatching import UbuntuPatching
from redhatPatching import redhatPatching
from centosPatching import centosPatching
from OraclePatching import OraclePatching
from SuSEPatching import SuSEPatching
# Define the function in case waagent(<2.0.4) doesn't have DistInfo()
def DistInfo(fullname=0):
if 'FreeBSD' in platform.system():
release = re.sub('\-.*\Z', '', str(platform.release()))
distinfo = ['FreeBSD', release]
return distinfo
if os.path.isfile('/etc/oracle-release'):
release = re.sub('\-.*\Z', '', str(platform.release()))
distinfo = ['Oracle', release]
return distinfo
if 'linux_distribution' in dir(platform):
distinfo = list(platform.linux_distribution(\
full_distribution_name=fullname))
# remove trailing whitespace in distro name
distinfo[0] = distinfo[0].strip()
return distinfo
else:
return platform.dist()
def GetMyPatching(hutil, patching_class_name=''):
"""
Return MyPatching object.
NOTE: Logging is not initialized at this point.
"""
if patching_class_name == '':
if 'Linux' in platform.system():
Distro = DistInfo()[0]
else: # I know this is not Linux!
if 'FreeBSD' in platform.system():
Distro = platform.system()
Distro = Distro.strip('"')
Distro = Distro.strip(' ')
patching_class_name = Distro + 'Patching'
else:
Distro = patching_class_name
if not globals().has_key(patching_class_name):
hutil.log_and_syslog(Distro + ' is not a supported distribution.')
return None
return globals()[patching_class_name](hutil)