|
Project Information
Links
|
StatusGORD code is open sourced and available for mass consumption. Code tests are not yet released, though we plan to release them soon. We assure you GORD has extensive testing with > 95% test coverage in unit and integration tests. Please check back soon! For GORD discussion, please join gord-discuss@googlegroups.com. ObjectiveProvide a server, offering an open API to interact with Microsoft® System Center Configuration Manager® (SCCM), formerly known as Microsoft® System Management Server® (SMS). The GORD server needs to run on a single SCCM Data Provider server in an organization’s SCCM infrastructure. BackgroundSCCM provides a rich environment to remotely manage an installed base of Windows® machines. Connectivity to the SCCM interface is available via the Windows® Management Instrumentation (WMI) protocol, or by connecting directly to Microsoft® SQL Server® via its native MSSQL protocol. WMI is only accessible from an OS with a DCOM stack, which is currently only reliable on Windows®. Therefore direct SCCM connectivity from any other operating system is currently unsupported. Unix operating systems can access Microsoft® SQL Server® through libraries like Python's pymssql, which relies upon libfreetds. Unfortunately, the pymssql module quality has been inconsistent in the past. In addition, the learning curve for SCCM’s often undocumented SQL interface can be steep. Furthermore, certain critical management functionality is accessible via WMI, but not the SQL-only interface. OverviewGORD provides a central resource to access SCCM functionality via an API abstracted from SCCM. It is written in Python and is accessible over open platform-agnostic protocols: currently XML-RPC and REST+JSON over HTTP or HTTPS. The server process itself is designed to operate as a Windows® service, in the manner that Windows® system administrators are familiar with. In other words, it can be managed via the standard Microsoft® Service Controller or via the Services MMC snap-in, it writes logs into Event Viewer.
The client communicates with GORD over HTTP (or HTTPS). GORD handles authentication, and adapts calls onto the underlying API. In this example, GORD is speaking via the WMI protocol to the SCCM Data Provider, so HTTP and WMI are the well defined boundaries that separate the client from the underlying system. GORD is intentionally designed such that it is straightforward to replace either interface; a transport besides HTTP can be added, and/or an underlying system other than WMI/SCCM can be exposed. The below chart depicts how the modular pieces of GORD fit together. The Windows® Service manages execution of the HTTP(S) server. Requests through the HTTP server are matched with registered methods in service.ServiceMethods, and once authenticated execute code for direct interaction with the underlying API.
SCCM Functionality Made AvailableGORD provides access to the following types of SCCM functionality:
Specific Method ReferenceSee: WmiutilPydoc DesignThe service module includes classes to run HTTP RPC servers. These servers are generic Python-based servers (inheriting from SocketServer, etc.) and are not Windows®-specific. The service module uses the auth module for authentication. Various auth classes are supplied that can authenticate against LDAP or Windows® APIs. The auth class also describes the type of credentials it needs and how they should be obtained. For example, an auth method may require one token string, which is supplied as the first argument to a method being called. Alternately, it could require multiple arguments, or request HTTP basic auth for a username-password pair. The winservice module contains code to run Windows® Services, which start RPC servers from the service module. The winservice module is a Windows®-specific feature. Authentication ModulesThe code that dispatches methods requested via HTTP to the methods themselves also supports the concept of an authentication class. The base classes and a few examples are in the auth module. Each authentication class offers a basic interface:
Configuration and InstallationPlease see the SetupDocs. Microsoft, Windows, System Center Configuration Manager, System Management Server, SQL Server are either registered trademarks or trademarks of Microsoft Corporation in the United States and/or other countries. |