
This patch adds the routes implementation, general.check_os_version and network.default_gateway, which are used by the first data source layout. Change-Id: If8ede3c41e834d62cfb2d341d88bc1fbaef947b6
60 lines
1.9 KiB
Python
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):
|
|
raise NotImplementedError
|
|
|
|
def set_timezone(self):
|
|
raise NotImplementedError
|