Pegasus Enhancement Proposal (PEP)
PEP#: 350
PEP Type: Functional
Title: Multi CIMOM support on same OS
Status: Approved
Version History:
Version | Date | Author | Change Description |
---|---|---|---|
0.1 | 30/Oct/2009 | Surendra Kodali/ Venkat Puvvada |
Initial Submission |
1.0 | 13/Nov/2009 | Venkat Puvvada | Review comments incorporated/ Ballot version |
Abstract: Add Support for OpenPegasus to run as multiple
instances on the same Operating System.
In some
environments multiple CIMServers may be required to run on same
OS. A valid usecase is where vendor may want to ship
providers
with scaled down version of CIMServer without disturbing the
other CIMOMs running on same OS. Currently multiple instances of
Pegasus cannot be run on same OS because of dependency on the startup
config files location and localdomain socket path at build time.
The
below config files/local domain socket are created in /var/tmp
directory on Linux, /tmp directory on other UNIX type platforms in
non-release builds (PEGASUS_USE_RELEASE_DIRS=false) and
should be known at compile time at present. For release builds each
platform has its own configuration directory structure.
cimserver_start.lock - startup lock file
cimserver_start.conf - PID file
cimxml.socket - Local domain socket
In addition
to the above config files the following problems are identified
1. Log
identity of different CIMServers running
2. SLP Advertisements of each CIMServer
3. PAM Configuration file.
With the
problems mentioned above, single Pegasus image cannot be
configured to run as multiple instances. Pegasus RPM package
cannot be installed using runtime relocations (using
--prefix option) because of above limitations.
Default
value of PEGASUS_FLAVOR is "tog". By default RPM name is tog-pegasus,
release directory structure and config file names remains same.
For Multi CIMOM
support using RPM build, RPM spec file can be generated using the
create_OpenPegasusRPMSpec target in Makefile.Release after setting the
PEGASUS_FLAVOR env variable. Note that RPM Build on Linux uses PEGASUS_OVERRIDE_DEFAULT_RELEASE_DIRS
option. The following code changes
will be placed
in env_var_{OS}.status file.
ifeq ($(PEGASUS_FLAVOR), tog)
PEGASUS_PROD_DIR = /usr
PEGASUS_DOC_DIR =
/usr/share/doc/tog-pegasus-{version}
PEGASUS_MAN_DIR = /usr/share/man
PEGASUS_PRODSHARE_DIR = /usr/share/Pegasus
PEGASUS_VARDATA_DIR = /var/lib/Pegasus
PEGASUS_CONFIG_DIR = /etc/Pegasus
PEGASUS_VARRUN_DIR = /var/run/tog-pegasus
PAM_CONFIG_DIR=/etc/pam.d
PAM_CONFIG_FILE=wbem
PEGASUS_INCLUDE_DIR = /usr/include
else
PEGASUS_PROD_DIR =
/usr/local/$(PEGASUS_FLAVOR)-pegasus
PEGASUS_DOC_DIR =
$(PEGASUS_PROD_DIR)/share/doc/$(PEGASUS_FLAVOR)-pegasus-{version}
PEGASUS_MAN_DIR = $(PEGASUS_PROD_DIR)/share/man
PEGASUS_PRODSHARE_DIR =
$(PEGASUS_PROD_DIR)/share/Pegasus
PEGASUS_VARDATA_DIR = $(PEGASUS_PROD_DIR)/var/Pegasus
PEGASUS_CONFIG_DIR = $(PEGASUS_PROD_DIR)/etc/Pegasus
PAM_CONFIG_DIR=/etc/pam.d
PAM_CONFIG_FILE=wbem$(PEGASUS_FLAVOR)
PEGASUS_VARRUN_DIR =
$(PEGASUS_PROD_DIR)/var/run/$(PEGASUS_FLAVOR)-pegasus
PEGASUS_INCLUDE_DIR = $(PEGASUS_PROD_DIR)/include
endif
/etc/pam.d/wbem
====> Pam authentication file
/etc/init.d /tog-pegasus ====> Pegasus service file
/etc/Pegasus
====> config files
/usr/bin
====>
cimmof cimmofl cimprovider cimsub
osinfo wbemexec
/usr/sbin
====>
cimauth cimconfig cimserver cimprovagt cimservera
cimreparchive cimtrust repupgrade
/usr/lib
====>
All libraries (includes providers and provider managers)
/var/lib/Pegasus
====>
repository, log and trace
/var/run/tog-pegasus ====> cimserver run info
/usr/share
====> mof, doc and man pages
/usr/include
====>
Include files
After setting flavor(other than "tog").
The product will moved to the /usr/local except the tog-pegasus service
and pam config file.
/etc/pam.d/wbem$(Flavor)
====>
Pam
authentication
file
/etc/init.d
/$(Flavor}-pegasus
====>
Pegasus
service
file
/usr/local/$(Flavor)-Pegasus/etc/Pegasus
====>
config
files
/usr/local/$(Flavor)-Pegasus/bin
====>
cimmof
cimmofl
cimprovider
cimsub osinfo wbemexec
/usr/local/$(Flavor)-Pegasus/sbin
====>
cimauth
cimconfig
cimserver cimprovagt
cimservera cimreparchive cimtrust repupgrade
/usr/local/$(Flavor)-Pegasus/lib
====> libraries
/usr/local/$(Flavor)-Pegasus/var/lib/Pegasus
====>
repository,
log
and trace
/usr/local/$(Flavor)-Pegasus/var/run/$(Flavor)-Pegasus ====>
cimserver run info
/usr/local/$(Flavor)-Pegasus/share
====> mof, doc and man pages
/usr/local/$(Flavor)-Pegasus/include
====>
Include
files
3. Release builds (If PEGASUS_USE_RELEASE_DIRS=true,
PEGASUS_OVERRIDE_DEFAULT_RELEASE_DIRS=false)
When PEGASUS_FLAVOR is
set, It is expected that default release dirs are overwritten since
these release dirs are platform dependent and there is no general and
good way of determining the release dirs for each platform.
Alternatively PEGASUS_FLAVOR can be prefixed/suffixed to the existing
release dirs.
Examples
On Linux, if PEGASUS_FLAVOR is set to "abc", all built RPMs will be named using abc-pegasus which includes normal, test, devel and debuginfo RPMs.
Ex:
abc-pegasus-2.10.0-1.el5.i386.rpm
abc-pegasus-test-2.10.0-1.el5.i386.rpm
abc-pegasus-devel-2.10.0-1.el5.i386.rpm
abc-pegasus-debuginfo-2.10.0-1.el5.i386.rpm
Usecase 1: Development build,
only PEGASUS_FLAVOR=abc set.
Config files changed: /var/tmp/cimserverabc_start.lock, /var/tmp/cimserverabc_start.conf and /var/tmp/cimxmlabc.socket
PAM config file : Expected file is
/etc/pam.d/wbemabc
LogIdentity: cimserverabc, cimprovagtabc, cimlistenerabc, cimservermainabc, cimserveraabc (Note that z/OS has different names)
Copyright (c) 2009 IBM Corp.
Template last modified: February 17th
2009 by Martin Kirk
Template version: 1.15