cloud-init/cloudinit/osys/windows/general.py

60 lines
1.9 KiB
Python

# Copyright 2015 Canonical Ltd.
# This file is part of cloud-init. See LICENCE file for license information.
#
# vi: ts=4 expandtab
"""General utilities for Windows platform."""
import ctypes
from cloudinit import exceptions
from cloudinit.osys import general
from cloudinit.osys.windows.util import kernel32
class General(general.General):
"""General utilities namespace for Windows."""
@staticmethod
def check_os_version(major, minor, build=0):
"""Check if this OS version is equal or higher than (major, minor)"""
version_info = kernel32.Win32_OSVERSIONINFOEX_W()
version_info.dwOSVersionInfoSize = ctypes.sizeof(
kernel32.Win32_OSVERSIONINFOEX_W)
version_info.dwMajorVersion = major
version_info.dwMinorVersion = minor
version_info.dwBuildNumber = build
mask = 0
for type_mask in [kernel32.VER_MAJORVERSION,
kernel32.VER_MINORVERSION,
kernel32.VER_BUILDNUMBER]:
mask = kernel32.VerSetConditionMask(mask, type_mask,
kernel32.VER_GREATER_EQUAL)
type_mask = (kernel32.VER_MAJORVERSION |
kernel32.VER_MINORVERSION |
kernel32.VER_BUILDNUMBER)
ret_val = kernel32.VerifyVersionInfoW(ctypes.byref(version_info),
type_mask, mask)
if ret_val:
return True
else:
err = kernel32.GetLastError()
if err == kernel32.ERROR_OLD_WIN_VERSION:
return False
else:
raise exceptions.CloudInitError(
"VerifyVersionInfo failed with error: %s" % err)
def reboot(self):
raise NotImplementedError
def set_locale(self, locale):
raise NotImplementedError
def set_timezone(self, timezone):
raise NotImplementedError