Managing Application Configuration Data with CIM

Similar documents
KVM Forum 2007 Tucson, Arizona

WBEM Web-based Enterprise Management

Modelica Change Proposal MCP-0019 Flattening (In Development) Proposed Changes to the Modelica Language Specification Version 3.

IEEE LANGUAGE REFERENCE MANUAL Std P1076a /D3

The Extensible Markup Language (XML) and Java technology are natural partners in helping developers exchange data and programs across the Internet.

Unified Modeling Language

Speech 2 Part 2 Transcript: The role of DB2 in Web 2.0 and in the IOD World

I'm reposting here an I wrote since it was well-received on the CouchDB marketing list, but its formatting did not display well there.

Generic Operations. Document number: DSP0223. Date: Version: Document type: Specification. Document status: DMTF Standard

Parser Design. Neil Mitchell. June 25, 2004

Who am I? I m a python developer who has been working on OpenStack since I currently work for Aptira, who do OpenStack, SDN, and orchestration

AADL Graphical Editor Design

/633 Introduction to Algorithms Lecturer: Michael Dinitz Topic: Sorting lower bound and Linear-time sorting Date: 9/19/17

Query Processing and Optimization using Compiler Tools

What is a multi-model database and why use it?

CIM Interop Model White Paper CIM V2.7. CIM Interop Model White Paper CIM Version 2.7 Version 0.9 June 19, 2003

In this simple example, it is quite clear that there are exactly two strings that match the above grammar, namely: abc and abcc

CIM Common Information Model

Exheritance Class Generalisation Revived

Lesson 10 BPEL Introduction

CS2112 Fall Assignment 4 Parsing and Fault Injection. Due: March 18, 2014 Overview draft due: March 14, 2014

Using SMI-S with the Cloud Data Management Interface Scott Baker September 21th, 2010

This book is licensed under a Creative Commons Attribution 3.0 License

Model driven Engineering & Model driven Architecture

Some Notes on Metadata Interchange

Lesson 3 Transcript: Part 1 of 2 - Tools & Scripting

Recalling the definition of design as set of models let's consider the modeling of some real software.

Compositional Model Based Software Development

Prescriptive Design Patterns Proactive Guidance for Real-World Systems. Kevin Mullet REACTOR Experience Design

RESTful Services for CIM (CIM-RS)

Object-oriented Compiler Construction

Middleware. Adapted from Alonso, Casati, Kuno, Machiraju Web Services Springer 2004

Object-Oriented Analysis and Design Prof. Partha Pratim Das Department of Computer Science and Engineering Indian Institute of Technology-Kharagpur

White Paper on RFP II: Abstract Syntax Tree Meta-Model

mismatch between what is maybe possible today and what is going on in many of today's IDEs.

Design Pattern: Composite

Welcome to this IBM podcast, Realizing More. Value from Your IMS Compiler Upgrade. I'm Kimberly Gist

CptS 464/564 Lecture 18

This guide records some of the rationale of the architecture and design of Axis.

Compiling and Interpreting Programming. Overview of Compilers and Interpreters

Thoughts about a new UI for the Eclipse BPEL Designer

Extension Web Publishing 3 Lecture # 1. Chapter 6 Site Types and Architectures

Security Enterprise Identity Mapping

CaptainCasa Enterprise Client. CaptainCasa Enterprise Client. CaptainCasa & Java Server Faces

Object Relationships

Integrated Enterprise Management Using WBEM/SNMP Gateway

Semantic Analysis. Outline. The role of semantic analysis in a compiler. Scope. Types. Where we are. The Compiler so far

Languages and Compilers

CDM Implementation Requirements

Incorporating applications to a Service Oriented Architecture

Chapter 2: The Object-Oriented Design Process

Welcome to another episode of Getting the Most. Out of IBM U2. I'm Kenny Brunel, and I'm your host for

CMPSC 497 Attack Surface

Trees. Carlos Moreno uwaterloo.ca EIT

Proposed User Experience for Handling Multiple Identity Providers in Network Identity Manager 2.0

XPath Expression Syntax

Web Application Expectations

Project 1 Computer Science 2334 Spring 2016 This project is individual work. Each student must complete this assignment independently.

LECTURE 3. Compiler Phases

Inheritance (Chapter 7)

Response to the. ESMA Consultation Paper:

Simple Object Access Protocol (SOAP) Reference: 1. Web Services, Gustavo Alonso et. al., Springer

Instructor: Craig Duckett. Lecture 04: Thursday, April 5, Relationships

Make sure you have the latest Hive trunk by running svn up in your Hive directory. More detailed instructions on downloading and setting up

Why are there so many programming languages? Why do we have programming languages? What is a language for? What makes a language successful?

The XML World View a personal vision with challenges

Comp 411 Principles of Programming Languages Lecture 3 Parsing. Corky Cartwright January 11, 2019

6/20/2018 CS5386 SOFTWARE DESIGN & ARCHITECTURE LECTURE 5: ARCHITECTURAL VIEWS C&C STYLES. Outline for Today. Architecture views C&C Views

Compilers. Prerequisites

Principle of Complier Design Prof. Y. N. Srikant Department of Computer Science and Automation Indian Institute of Science, Bangalore

Programming Assignment IV

Draft SDMX Technical Standards (Version 2.0) - Disposition Log Project Team

Joining the BRICKS Network - A Piece of Cake

Diagnosing Java code: Designing extensible applications, Part 3

Application Runtime and CIM

Generalized Document Data Model for Integrating Autonomous Applications

Compilers and Interpreters

QuickSpecs. ISG Navigator for Universal Data Access M ODELS OVERVIEW. Retired. ISG Navigator for Universal Data Access

CPSC 320 Sample Solution, Playing with Graphs!

CSE 413 Languages & Implementation. Hal Perkins Winter 2019 Structs, Implementing Languages (credits: Dan Grossman, CSE 341)

Credential Management Profile

Late Binding; OOP as a Racket Pattern

The role of semantic analysis in a compiler

Browsing the Semantic Web

Evaluation of Visual Fabrique (VF)

programming languages need to be precise a regular expression is one of the following: tokens are the building blocks of programs

UNIT V *********************************************************************************************

Components of a Puppet architecture

Agent-Enabling Transformation of E-Commerce Portals with Web Services

WWW Applications for an Internet Integrated Service Architecture

CS02b Project 2 String compression with Huffman trees

Language Extension and Composition with Language Workbenches

Formal Methods of Software Design, Eric Hehner, segment 24 page 1 out of 5

The Essence of OOP using Java, Nested Top-Level Classes. Preface

COP 3330 Final Exam Review

Hi everyone. Starting this week I'm going to make a couple tweaks to how section is run. The first thing is that I'm going to go over all the slides

Web Ontology for Software Package Management

Java EE 7: Back-end Server Application Development 4-2

Categorizing Migrations

Heap sort. Carlos Moreno uwaterloo.ca EIT

Transcription:

Managing Application Configuration Data with CIM Viktor Mihajlovski <mihajlov@de.ibm.com> IBM Linux Technology Center, Systems Management Introduction The configuration of software, regardless whether it falls into the category of system software, middleware or application software, is a major contributor to the complexity in large enterprise environments. The root of the problem is - as nearly always - missing interoperability caused by diversity. The diversity encompasses various aspects like configuration data location and format and also semantical information. In order to change the configuration of a system or some software it is necessary to know where to look for the configuration data and what to change in order to achieve the desired result. Sometimes one software component needs another software component to be configured in a particular way which could require a different skill profile. Finally, different versions of a particular software (with differing capabilities and configuration options) might coexist in a networked environment. Systems like Windows feature a common configuration repository (Registry, Active Directory) that solves the location and format issue. That helps a lot for certain situations but is not sufficient as there's still no semantical information available (other than perhaps some written documentation). Another (maybe more severe) problem is that this requires "legacy" applications to rewrite their configuration component to make use of the central configuration repository. Especially multi-platform components (like Apache HTTPD, Mozilla) don't do that. They feature their own (usually complex) configuration file instead (at least as long as there's no multi-platform configuration repository). There are good reasons to propose CIM as an approach to tackle this problem. First of all it offers the conceptual underpinning to model the configuration data and second it leads the way to implementations (based on WBEM and CIMOMs) enabling for a unique way to access this data. The clear advantage of WBEM based configuration management is that it's not proprietary, that it's platform-independent and does not require legacy or multi-platform applications to forsake their configuration data. While the CIM classes dealing with configuration do not yet really solve the semantical issues (through common data models for special categories of software) they sure do prepare the ground for it, as we will outline later in this document. Settings and Configurations We strongly recommend that you read the DMTF White paper on the CIM Core Model, especially the chapter about Settings and Configurations (Chapter 16) to have a certain understanding of the concepts presented therein. As the prefix CIM_ is a little bit bulky, it is regularly omitted for the classes CIM_Setting, CIM_Configuration and CIM_Service. Settings in the CIM Core Model designate configurable items for a CIM_ManagedElement (the root class for nearly all CIM classes - including Setting). A setting usually contains (and groups) properties with close relationship. IP address and network mask would be a April 9, 2002 Page 1 of 6

meaningful setting of a network adapter, as they are closely tied together. Configurations are used to aggregate multiple Settings for a CIM_ManagedElement. Settings and Configurations can be associated to all derivations of CIM_ManagedElement. We've mentioned the network adapter as an example for Logical Device. While not being principally different, we are more interested in software configuration (well, device configuration is in fact device driver configuration which could be considered as a form of software). Therefore, we need to identify the CIM class to which (Software) Configuration and Settings apply. The class we have chosen is Service, which might be a little surprising, so we will explain the rationale behind it. Service as the Configuration Owner The Service class is denoted as the class representing the information needed to manage function in CIM models. This notion makes it more suitable for anchoring configuration data than CIM_SoftwareElement from the Application Model, which might be another class that could be considered. However, the Software Element is designed to support deployment rather than configuration, so it deals with more concrete items like files making up a package and requirements against other Software Elements (existence, version). Examples of Software Elements would be RPMs or Installshield Packages. Another difficulty with Software Elements would be that you can have multiple logical functional instances based on one installation (e.g., run multiple HTTP servers on one system). Usually there's a connection between a Software Element and a Service, i.e. the executables needed by (or implementing) the function. It is represented by the association class CIM_SoftwareElementServiceImplementation. Note also that Services do not only describe things like daemons or servers (although these will be the most common to deal with in large installations): it's really about function and each e-mail client or word processing program provides - function. The Model and How to Get There Before we can make configuration data accessible via a CIMOM and appropriate instrumentation (more about that later), we have to conceive a data model for the configuration data based on the CIM Model. Not necessarily a surprise, this will possibly be the hardest part. Mostly, because there are no predefined schemas, which means that we will have to figure out exactly what is to be configured and how it's done. Further, we should keep in mind that a very important aspect of CIM is interoperability, which makes modeling even harder, as it may require some additional abstraction. We will put this issue aside for now, and pick it up later. As you have probably read in the DMTF White paper on the Core Model, Settings do not represent the current operational data of a Service (in this case). Those things (as far as being a matter of interest and being observable) are best represented by properties in the Service itself. Settings are representing items from the configuration repository (e.g., config file) of the application and usually it is necessary to (re)start (or notify) the Service in order to apply the Settings, i.e. make them effective. So one possible approach - although not particularly helpful - would be to map all the configuration items in (let's say) a config file to Setting instances, or to properties of one single Setting instance. This would work for the most simple cases only, since many configuration files tend to have structure or hierarchy (some even recursive and of arbitrary depth) and a variable number of distinct, similar or equal items. However, all the basics and composition mechanism are there to design a hierarchical data model for Application Configuration. Settings can be aggregated via Configurations and April 9, 2002 Page 2 of 6

Configurations can be nested from other Configurations. Therefore, the modeling task will be mainly to find out a suitable mapping. As always an example will help best to illustrate this. Note: the section below is still incomplete and adding a few pictures will help. This is a document still in progress! Apache Configuration Configuring the Apache web server can be quite a challenge. There's a high number (>200) of so-called directives to define the behavior of the HTTP daemon, some of them interdependent. This example is also interesting in that, even if configuration tools are used by the administrator, it doesn't relieve her or him from understanding the way Apache is working and how the configuration file is being interpreted. This is also true for the modeler: in order to come up with a semantically correct data model it is necessary to understand the operational concepts. This document is not an Apache configuration tutorial (nor is it intended to be one) therefore it will be incomplete and oversimplified in many things. We hope nevertheless it will serve the purpose to shed some light on the "black art of modeling". One property of configuration directives is the context in which they appear and for which they apply. The available contexts are Server, Virtual host, Directory and Location, where the context can be nested in this order (e.g., Directory can be specified in Virtual Host and Server, but not in Location). Further, directives are being implemented by modules, that can either be statically bound to the server executable or be loaded dynamically if needed. There's a one-to-one relationship between a directive and the implementing module. The core module is mandatory and required to be present. Finally, directives can be grouped logically by functional area, thus identifying possibly meaningful Setting classes. Taking this all together, Settings have to contain only properties for directives that are implemented by the same module are valid in the same context are functionally related (a matter of taste sometimes) Context Scoping Usually the directives allowed for an inner context can be also specified for the enclosing one (with few exceptions). These directives are inherited by (or propagated to) the inner directives, if not specified or overridden there. Server Configuration The outermost context is the Server context. It is represented by the Apache_HTTPServerConfiguration class and aggregates all the Settings for a Server (basically the global settings for the daemon). Currently there are only two Setting classes available. Apache_HTTPModule defining whether a module is present and active and Apache_HTTPServerSetting containing properties for all the directives valid for the Server context and implemented by the Core module. Virtual Host The Virtual Host context is used to introduce a sub-server listening to a separate address. Modeling is not yet complete for virtual hosts. Directory/Location These contexts are used to configure the (virtual) server behavior on a per directory/file name base. Not yet completed. Modules April 9, 2002 Page 3 of 6

Each Apache module is represented by an instance of Apache_HTTPModule. Other Settings can depend on the existence of certain Modules. Nearly all of the base settings depend on the Core module. BTW: This could be probably be modeled by a special CIM_Dependency association. We don't do that currently as we would rather model the fact that certain Setting types are dependent on a Module type. The pure instance dependency seems to be rather pointless for real world scenarios. Implementing the Model Once the configuration model has been completed, it will be necessary to write instrumentation code (in form of CIMOM providers) implementing the data model by mapping the configuration repository data to and from the CIM objects. Unless the repository is accessible via a nice API, this means parsing (or scanning) configuration files and rewriting them upon configuration changes. Depending on the format and complexity of the configuration files, this will be more or less effort and the use of tools like generated parsers or scanners might be beneficial, although they usually do not help when it comes to file updates. Further, it will be necessary to transform and map the parsed/scanned data to instances of Settings and Configurations. Using conventional technology, this will have to be handcrafted too. In the next section we discuss a more advanced approach for (complex) configuration file access. Using the Parser/Modifier to Access Configuration Files Many of the configuration files have simple syntactical structures that can be expressed via regular expressions or context free grammars, making them suitable to be processed by a generated scanner or parser. The syntax description for a configuration file can easily be extended to add support for syntactical correct modification of the respective text file 1 to the parser. A parser/modifier generated from a syntactical description like an annotated context free grammar transforms the textual representation of the configuration file into an internal abstract syntax tree (AST). This AST can be accessed by a program (e.g., a generic CIMOM provider for text file access) and offers functions to navigate and modify the tree structure. The modified AST can then be transformed into text and written back to the configuration file. In order to exploit a parser/modifier it is necessary to have mapping rules between nodes in the AST and instances and properties in a CIM Schema. Once these mapping rules are established, a generic CIMOM provider can be written to perform the actual mapping by invoking the parser/modifier and by operating upon the AST. The figure below shows how a generic 1 This approach is successfully being used within zos Managed Systems Infrastructure for Setup, where the Java based Parser Generator JavaCC is used for this purpose. April 9, 2002 Page 4 of 6

provider for text file access would work. Generic Provider CIM Instances Parser/Modifier AST config file Mapping Rules The question on how and where to specify the mapping is still open. It could be a part of the syntax description, a separate description format (e.g., XML) or an extension to the Schema (e.g., additional special-purpose qualifiers). Beyond Applications Although being very specifically geared towards, some of the concepts will also apply to the persistent configuration of other system components, namely devices. The real challenge here is that - at least in the Linux area - no standards exist where and how the configuration data for an Ethernet adapter is stored. This is typically defined by the distributor and we can find at least two schemes today (it's probably more). This should however not discourage us, since devices (in contrast to applications) have usually well defined data models, which was the hard part to get (you remember). So it's becoming "only" a question of the providers. With appropriate instrumentation for the respective distributions, it will be possible to manage persistent device configurations regardless of the distribution. That's were the strengths of CIM start to show (if we only had that instrumentation already). Thoughts on Interoperability As we have already mentioned, the CIM models for devices are far more developed and interoperable than those for applications. For instance it is possible to manage a network adapter regardless whether it's Ethernet or Tokenring (e.g., can set the IP address and net mask). This is possible since CIM offers an object-oriented model and thus allows to define generic base classes as well as specialized classes by subclassing. It is obvious that software also falls into categories. If we take the Apache web server as an example we could create a model for it by subclassing from a hypothetical Web Server class (or more precise classes necessary to describe the server and the configuration). April 9, 2002 Page 5 of 6

It is also clear that certain settings are pertinent to all Web Servers, like address, document root directory, etc. Even more advanced features like virtual servers/hosts can be found with other Web Servers. Now, in the absence of more abstract base models for applications what can be done to avoid ending up with a data model that's not interoperable? First of all, we don't have the final answer. Taking into consideration other implementations of software in the given category might help to create the necessary abstractions. Discussions within DMTF work groups seem also to be a reasonable way to get some feedback. April 9, 2002 Page 6 of 6