README
author Hans Feldt <hans.feldt@ericsson.com>
Fri Jan 11 13:44:32 2013 +0100 (34 hours ago)
changeset 3882 876e0ba31d93
parent 3129 f0ad57558432
permissions -rw-r--r--
avsv: handle component errors more graceful during system shutdown (#2783)

avnd previously would escalate to node failfast if any component error
happened during system shutdown/reboot. Potentially that could lead to
data loss for an application.

Now if a component fails when system shutdown/reboot has been initiated,
avnd will cleanup that component and continue shutdown from there.

avnd will wait for any pending SI level operations to finish before
it starts removing SIs from SUs in their ranked order.
     1 This directory contains the 4.2 release of `OpenSAF'.
     2 
     3 `OpenSAF' is an open source project designed to implement a complete highly
     4 available operating environment based on Service Availability Forum (SA Forum)
     5 standards. The objective of the `OpenSAF' project is to accelerate broad adoption
     6 of a SA Forum compliant operating environment. OpenSAF also offers
     7 complementary services which are required in a complete high-availability
     8 system solution.
     9 
    10 `OpenSAF' has been originally contributed by Motorola ECC, by open sourcing
    11 its HA middleware suite Netplane Core Services (NCS).
    12 
    13 `OpenSAF' has a web site at http://www.opensaf.org/
    14 
    15 See file `COPYING.LIB' for copying conditions.
    16 See file `INSTALL' for compilation and installation instructions.
    17 See file `NEWS' for a list of major changes in the current release.
    18 See file `ChangeLog' for a list of detailed changes.
    19 See file `AUTHORS' for the names of maintainers.
    20 See file `THANKS' for a list of contributors.
    21 
    22 Please check the `Linux' distribution-specific notes below for any caveats
    23 related to your operating system.
    24 
    25 
    26 `OpenSAF' Architecture Overview
    27 ===============================
    28 
    29 `OpenSAF' software is distributed in nature. There is a Controller node, which is
    30 the central entity in the cluster which will control all the other Payload nodes
    31 in the HA cluster. In the HA cluster there are two System Controllers running in
    32 Active/Standby mode.
    33 
    34 The `OpenSAF' software is divided in to following classes of Modules:
    35 
    36     * Directors:
    37       The Service directors run on the Controller node. They interact with
    38       Node Directors running on the Payload nodes and provide service specific
    39       functionality.
    40 
    41     * Node Directors:
    42       Node directors distribute the service responsibilities with directors.
    43       Node directors interact with Agents to provide service functionality to
    44       the user applications. Node directors run both on System Controller node
    45       and Payload nodes.
    46 
    47     * Servers:
    48       Servers run on the System Controller and they talk to Agents to provide
    49       service functionality to the users. If the service is having servers then
    50       it doesn't have directors, node director pieces. If the service doesn't
    51       have node local functionality then "Server - Agent" architectural approach
    52       is used.
    53 
    54     * Agents: Agents are the service libraries which are linked with user
    55       applications and provide service to the user applications by interacting
    56       with other service parts.
    57 
    58 User applications can run on either System Controller node or Payload node. But
    59 it is advisable to run the user applications on the Payload nodes, so your
    60 applications are not impacted when System Controller failover happens due to
    61 any failures in `OpenSAF' Modules.
    62 
    63 The OpenSAF infrastructure is made highly available by modeling the individual
    64 services as AMF components. All the Node Directors use no redundancy model and
    65 are restart capable with component capability 1_ACTIVE. All the Directors and
    66 Servers use 2N redundancy model with "1_ACTIVE_OR_1_STANDBY".
    67 
    68 By default (in 4.2) OpenSAF processes will run as the UNIX system user "opensaf"
    69 which is a member of the "opensaf" UNIX group. Only two processes are running
    70 as root, amfnd and smfnd. Reason is that amfnd need todo that for backwards 
    71 compatible reasons and the programs it starts might be designed to require root
    72 access. The reason for smfnd for running as root is that it typically installs
    73 rpms which requires root access. The rpms built by opensaf will create these users
    74 using rpm scriptlets.
    75 
    76 When using a "make install" system, either manually do the same as the rpm post
    77 install scriptlet (create group and user, configure sudo etc) or configure
    78 opensaf to run as root.
    79 
    80 See the build section how to revert to old all root behaviour.
    81 
    82 
    83 Downloading
    84 ===========
    85 
    86 `OpenSAF' release archives can be obtained from here:
    87 
    88     http://devel.opensaf.org/wiki/downloads/
    89 
    90 
    91 Documentation
    92 =============
    93 
    94 `OpenSAF' implements various `SAF AIS' services. The Service Availability
    95 Forum Specifications can be downloaded from here:
    96 
    97     http://www.saforum.org/specification/download/
    98 
    99 The `OpenSAF' Programmer's Reference Manuals can be obtained from here:
   100 
   101     http://devel.opensaf.org/wiki/downloads/
   102 
   103     * OpenSAF Overview
   104     * OpenSAF Availability Service
   105     * OpenSAF Cluster Membership Service
   106     * OpenSAF Checkpoint Service
   107     * OpenSAF Event Distribution Service
   108     * OpenSAF Global Lock Service
   109     * OpenSAF Information Model Management Service
   110     * OpenSAF LOG Service
   111     * OpenSAF Message Queue Service
   112     * OpenSAF Notification Service
   113     * OpenSAF Platform Management Service
   114     * OpenSAF Software Management Framework Service
   115 
   116 Development
   117 ===========
   118 
   119 `OpenSAF' development is managed using `Trac', the main project portal can
   120 be found here:
   121 
   122   http://devel.opensaf.org/
   123 
   124 You can find most information concerning the development of `OpenSAF' at
   125 this site.
   126 
   127 `OpenSAF' is using `Mercurial' (hg) as its Source Control Management system
   128 tool, the repositories index can be found here:
   129 
   130     http://devel.opensaf.org/hg/
   131 
   132 `Mercurial' is a fast, lightweight Source Control Management system designed
   133 for efficient handling of very large distributed projects and can be obtained
   134 from here:
   135 
   136     http://www.selenic.com/mercurial/wiki/
   137 
   138 
   139 Building from `Mercurial'
   140 =========================
   141 
   142 If you don't want to use one of the `OpenSAF' release archive, you can get a
   143 clone and bootstrap it by doing the following steps:
   144 
   145     % hg clone http://devel.opensaf.org/hg/<repo>/
   146     % cd <repo>
   147     % ./bootstrap.sh
   148 
   149 Where <repo> is one of the tree from the repositories index listed here:
   150 
   151     http://devel.opensaf.org/hg/
   152 
   153 After bootstraping follow the standard build instructions.
   154 
   155 
   156 Bug Reporting
   157 =============
   158 
   159 You can send `OpenSAF' bug reports to <[email protected]>. You can
   160 subscribe to the development mailing list from here:
   161 
   162     http://list.opensaf.org/maillist/listinfo/devel/
   163 
   164 If you need help using `OpenSAF', try <[email protected]> instead. You can
   165 subscribe to the user mailing list from here:
   166 
   167     http://list.opensaf.org/maillist/listinfo/users/
   168 
   169 You can also use the online bug tracking system in the `Trac' `OpenSAF'
   170 project to submit new problem reports or search for existing ones:
   171 
   172     * Create New Ticket: http://devel.opensaf.org/newticket/
   173     * Available Reports: http://devel.opensaf.org/report/
   174 
   175 When reporting bug, make sure you provide various useful informations about
   176 your Linux environment:
   177 
   178     * Distribution used (e.g. Fedora, Ubuntu, SUSE, PNE-LE etc.)
   179     * The revision of your Linux distribution
   180     * Package revisions of the prerequisites (e.g. net-snmp, tipc etc.)
   181     * If using the package prerequisites from the Linux distribution?
   182     * Build tool revisions (e.g. gcc, automake, autoconf, libtool)
   183     * If using cross-compiling + target information
   184 
   185 
   186 Source Tree Structure
   187 =====================
   188 
   189    |+-contrib/
   190    |  | +-plmc/		(The PLM coordinator implementation)
   191    +-java/		(Java AIS API mapping Implementation for AMF,CLM)
   192    |  |+-ais_api/
   193    |  |+-ais_api_impl/
   194    |  |+-ais_api_impl_native/
   195    |  |+-ais_api_test/ 
   196    +-m4/		(Extra M4 macros for the build)
   197    +-osaf/	(OpenSAF Sources)
   198    |  +-libs/   (Sources of OpenSAF Libraries) 
   199    |  |    |+-agents/ (sources for OpenSAF agents)
   200    |  |	   |	|+-infrastructure/ (Agents of Infrastructure services)
   201    |  |	   |	|	|+-rda/
   202    |  |	   |	|+-saf/ (Agents of SAF services)
   203    |  |	   | 		|+-ava/
   204    |  |	   |		|+-clma/
   205    |  |	   |		|+-cpa/
   206    |  |    |	 	|+-eda/
   207    |  |	   |		|+-gla/
   208    |  |	   |		|+-imma/
   209    |  |	   |		|+-lga/
   210    |  |	   |		|+-mqa/
   211    |  |	   |		|+-ntfa/
   212    |  |	   | 		|+-plma/
   213    |  |    |+-common/ (Common sources for OpenSAF services)
   214    |  |	   |+-core/ (OpenSAF core library)
   215    |  |    |		|+-common/
   216    |  |    |		|+-include/
   217    |  |	   |		|+-leap/
   218    |  |    |		|+-mbcsv/
   219    |  |	   |		|+-mds/
   220    |  |	   |+-saf/ (SAF Libraries)
   221    |  |			|+-include/
   222    |  |			|+-libSaAmf/
   223    |  |			|+-libSaCkpt/
   224    |  |			|+-libSaEvt/
   225    |  |			|+-libSaImm/
   226    |  |			|+-libSaLck/
   227    |  |			|+-libSaLog/
   228    |  |			|+-libSaMsg/
   229    |  |			|+-libSaNtf/
   230    |  |			|+-libSaPlm/
   231    |  |+-services/ (Sources, Config files for Directors/ND/Servers of OpenSAF services)
   232    |  |   	|+-infrastructure/ (Infrastructure services)
   233    |  |		|	|+-dtms/
   234    |  |		|	|+-fm/
   235    |  |		|	|+-nid/
   236    |  |		|	|+-rde/
   237    |  |    	|+-saf/ (SAF services)
   238    |  |			|+-avsv/
   239    |  |			|+-clmsv/
   240    |  |			|+-cpsv/
   241    |  |			|+-edsv/
   242    |  |			|+-glsv/
   243    |  |			|+-immsv/
   244    |  |			|+-logsv/
   245    |  |			|+-mqsv/
   246    |  |			|+-ntfsv/
   247    |  |			|+-plmsv/
   248    |  |			|+-smfsv/
   249    |  |+-tools/
   250    |	       |+-safimm (IMM commandline utilities and IMM XML merge tool)
   251    |	       |+-saflog (SAFLOG command line utility)
   252    | 	       |+-safntf (SAFNTF command line utility)
   253    |+-pkgconfig/ (OpenSAF Pkgconfig file)
   254    |+-samples/ (OpenSAF sample applications for SAF services)
   255    |+-scripts/ (OpenSAF scripts)
   256    |+-tests/ (OpenSAF Test suites)
   257    |+-tools (OpenSAF developer tools and UML devel environment)
   258 
   259 Prerequisites
   260 =============
   261 
   262 The following software is required to build OpenSAF:
   263 
   264     * The Linux Kernel with TIPC development support (This is not required when the opensaf is 
   265 	build with option --disable-tipc). OpenSAF works with TIPC version 1.5 onwards. But it 
   266 	is strongly adviced to use TIPC 1.6.2 and above, to get the TIPC service unsubscribe 
   267 	feature(Cancellation to a Subscription). 
   268     * libxml2-dev (Development files for the GNOME XML library)
   269     * automake
   270     * m4
   271     * autoconf (2.61 or later)
   272     * libtool
   273     * pkg-config
   274     * gcc/g++
   275     * GNU make
   276     * python-dev(el)
   277     * Optionally:
   278         * When PLM is enabled, an HPI implementation (e.g. OpenHPI)
   279         * When IMM PBE feature is enabled, sqlite3
   280 
   281     If enabling optional Java support:
   282         - A Java 1.5+ capable JDK (e.g. OpenJDK 1.6)
   283         - Apache Ant
   284 
   285 If a specific prerequisite package revision isn't working for you, please
   286 let us know about it following the instructions from the Bug Reporting section.
   287 
   288 
   289 Building `OpenSAF'
   290 ==================
   291 
   292 Some features needs to be configured at build time but don't have configure
   293 support, these are explained here.
   294 
   295 1) Configure a non flat MDS addressing scheme (optional)
   296 
   297 In the default (from 4.3) addressing scheme, TIPC node addresses looks like
   298 1.1.1, 1.1.2 etc.
   299 
   300 To re-enable the old (pre 4.3) non flat addressing, configure the constant
   301 MDS_USE_SUBSLOT_ID=1 at configure time as in:
   302 
   303     % ./configure CFLAGS="-DMDS_USE_SUBSLOT_ID=1 ..."
   304 
   305 In the non flat scheme, the slot ID is shifted up 4 bits and subslot ID is 
   306 added in the 4 LSB. The consequence of this is reduced number of
   307 addressable TIPC nodes in the cluster. This scheme is more likely to be used
   308 in xTCA type of systems and produces node addresses like 1.1.31, 1.1.47 etc.
   309 
   310 More configuration is needed, see nid.conf in 00-README.conf
   311 
   312 
   313 2) Run as root (optional)
   314 
   315 If the old (<4.2) behaviour of running all processes as root is desired, use
   316 the following configure command:
   317 
   318     % ./configure CFLAGS=-DRUNASROOT
   319 
   320 
   321 If you are using a released archive (dist tarball) follow the simple common
   322 steps:
   323 
   324     % ./configure && make
   325 
   326     OR
   327 
   328     % ./configure && make rpm
   329 
   330 Note: `OpenSAF' can safely be built with parallel jobs using -jX, where X
   331       should be the number of CPU you want to dedicate + 1
   332 
   333 If you are Building from `Mercurial', make sure you followed the required
   334 steps before trying to `configure' (i.e. bootsrapping).
   335 
   336     % ./bootstrap.sh
   337     % ./configure && make
   338     OR
   339     % ./configure && make rpm
   340 
   341 By default, all 'OpenSAF' services are enabled to be built and
   342 `OpenSAF' will assume the following `configure' options by default:
   343 
   344     --disable-java --disable-imm-pbe --disable-tests
   345 
   346 Some OpenSAF services/features can be disabled through configure options.
   347 To alter the default configure options, the following configure options 
   348 are available w.r.t enabling/disabling the build for a particular OpenSAF service:
   349 (The below options can also be known from  the command  % ./configure --help)
   350 
   351   --disable-rpath         Patches libtool to not use rpath in the libraries
   352                           produced.
   353   --disable-rpm-target    disable support for the "make rpm" target
   354                           [default=no]
   355   --enable-python         enable the Python AIS bindings [default=yes]
   356   --enable-java           enable the Java AIS interface mapping [default=no]
   357   --enable-am4j           enable the AM4J agent [default=no]
   358   --disable-tipc          disable building the TIPC [default=no]
   359   --enable-tests          enable building the OpenSAF testing programs
   360                           [default=no]
   361   --enable-imm-pbe        enable the IMM Persistent Backend Interface
   362                           [default=yes]
   363   --disable-tipc          disable building the TIPC as the transport for MDS 
   364                           [default=no]
   365   --disable-ais-ckpt      disable building the SAI-AIS-CKPT service
   366                           [default=no]
   367   --disable-ais-evt       disable building the SAI-AIS-EVT service
   368                           [default=no]
   369   --disable-ais-lck       disable building the SAI-AIS-LCK service
   370                           [default=no]
   371   --disable-ais-msg       disable building the SAI-AIS-MSG service
   372                           [default=no]
   373   --disable-ais-smf       disable building the SAI-AIS-SMF service
   374                           [default=no]
   375   --disable-ais-plm       disable building the SAI-AIS-PLM service
   376                           [default=no]
   377   --disable-dependency-tracking  speeds up one-time build
   378   --enable-dependency-tracking   do not reject slow dependency extractors
   379   --enable-shared[=PKGS]  build shared libraries [default=yes]
   380   --enable-static[=PKGS]  build static libraries [default=yes]
   381   --enable-fast-install[=PKGS]
   382                           optimize for fast installation [default=yes]
   383   --disable-libtool-lock  avoid locking (might break parallel builds)
   384 
   385   --with-PACKAGE[=ARG]    use PACKAGE [ARG=yes]
   386   --without-PACKAGE       do not use PACKAGE (same as --with-PACKAGE=no)
   387   --with-rpm-release=[ARG]
   388                           set the RPM release value to be current timestamp
   389                           (ARG=timestamp); set the RPM release value to be the
   390                           global revision (ARG=global-rev); set the RPM
   391                           release value to be the local revision
   392                           (ARG=local-rev); set the RPM release value to be
   393                           <val> (ARG=<val>, [default=1])
   394   --with-hpi-interface=[ARG]
   395                           autodetect the SAHPI_INTERFACE_VERSION (ARG=check
   396                           [default]); set the SAHPI_INTERFACE_VERSION to
   397                           A.01.01 (ARG=A01); set the SAHPI_INTERFACE_VERSION
   398                           to B.01.01 (ARG=B01); set the
   399                           SAHPI_INTERFACE_VERSION to B.02.01 (ARG=B02); set
   400                           the SAHPI_INTERFACE_VERSION to B.03.01 (ARG=B03)
   401   --with-initscriptdir=[DIR]
   402                           use DIR as the directory containing the init.d
   403                           scripts. [default=/etc/init.d]
   404   --with-pic              try to use only PIC/non-PIC objects [default=use
   405                           both]
   406   --with-gnu-ld           assume the C compiler uses GNU ld [default=no]
   407   --with-jdk=DIR          use JDK from DIR
   408   --with-ant=DIR          Use ant from DIR
   409 
   410 Use one of the following forms to enable an option:
   411 
   412     --with-<mumble>        OR --enable-<mumble>
   413     --with-<mumble>=yes		OR	--enable-<mumble>=yes
   414     --without-<mumble>=no	OR	--disable-<mumble>=no
   415 
   416 For eg:- To enable building the IMM PBE feature, use the following option:
   417 
   418     % ./configure --enable-imm-pbe
   419 
   420 Use one of the following forms to disable an option:
   421 
   422     --without-<mumble>		OR	--disable-<mumble>
   423     --without-<mumble>=yes	OR	--disable-<mumble>=yes
   424     --with-<mumble>=no		OR	--enable-<mumble>=no
   425 
   426 For eg:- To disable building the LOCK service, use the following option:
   427 
   428      % ./configure --disable-ais-lck
   429 
   430 The `--with-<mumble>' option forms are used for external package support and
   431 the `--enable-<mumble>' option forms are used for internal component state.
   432 
   433 Note: When PLM is enabled, `OpenSAF' relies on <SaHpi.h>, even if
   434 the user thinks he's not using a specific HPI implementation. This is a build
   435 dependency and the user still needs to tell the build system to  be
   436 using the proper CPPFLAGS/CFLAGS/CXXFLAGS where to find a dummy <SaHpi.h>
   437 
   438 By using `./configure --enable-java', you are enabling the Java AIS mapping
   439 support in the build system. Specials M4 macros will be used to autodetect
   440 what `JDK' and `Ant' program you are using. By default this options is
   441 disabled.
   442 
   443 By using `./configure --with-jdk=DIR', you can force the build system to use
   444 a specific JDK installed in a non-standard location on your system.
   445 
   446 By using `./configure --with-ant=DIR', you can force the build system to use
   447 a specific Ant version installed in a non-standard location on your system.
   448 
   449 By using `./configure --with-rpm-release', you can change the default release
   450 token in the generated rpm filename. Predefined values exist like the build
   451 timestamp, the Mercurial revision used to when building the code, and also you
   452 can add your own free text token.
   453 
   454 By using `./configure --with-hpi-interface', you can force the HPI interface
   455 version used. By default it's autodetected by scanning the SaHpi.h header, but
   456 when cross-compiling is used it's not possible to run the test code for that
   457 autodetection.
   458 
   459 By using `./configure --disable-rpm-target', you are masking out the `make rpm'
   460 target, some build systems provide their own `make rpm` rule, it would then be
   461 clashing with the OpenSAF rule.
   462 
   463 By using `./configure --disable-tipc', you are building the MDS with the TCP as 
   464 the only transport of the OpenSAF(MDS transports supported are TCP and TIPC).
   465 
   466 If user wants to use TCP as the transport of MDS, build the opensaf with `--disable-tipc` option,  
   467 and update the variable DTM_NODE_IP to self node IP address  in the `/etc/opensaf/dtmd.conf`
   468 before starting the opensaf.
   469 
   470 If opensaf is built with default option,  MDS is built to support both TIPC and TCP,
   471 with TIPC selected as default transport.
   472 If user wants to use TCP as the transport with default built image, user needs 
   473 to change the variables MDS_TRANSPORT to TCP and  MDS_INTRANODE_TRANSPORT to UNIX in
   474 the `/etc/opensaf/nid.conf` file and update the variable DTM_NODE_IP to self node 
   475 IP address  in the `/etc/opensaf/dtmd.conf`.
   476 For the applications of the opensaf, user needs to export the variables as said 
   477 below in there respective start up scripts as shown below,
   478 export MDS_TRANSPORT=TCP
   479 export MDS_INTRANODE_TRANSPORT=UNIX
   480 
   481 
   482 Building `OpenSAF' RPMs
   483 =======================
   484 
   485 As shown in the Building `OpenSAF' section, generating RPMs can be done using:
   486 
   487     % ./configure && make rpm
   488 
   489 The special `make rpm' target will generate a dist archive, create the
   490 `OpenSAF' SRPM using the opensaf.spec file, and finally launch the rpmbuild
   491 process. You can find the generated RPMs under `./rpms/RPMS/<build_arch>/':
   492 
   493 RPMs per OpenSAF Service are generated. For eg:-
   494 
   495 * opensaf-<svcname-director>-<Release>.<build_arch>.rpm:
   496   RPM containing the particular OpenSAF service director/server's binaries,
   497   libraries, CLC scripts, and the immxml classes and objects owned/implemented by the service.
   498 
   499 * opensaf-<svcname-nodedirector>-<Release>.<build_arch>.rpm:
   500   RPM containing the particular OpenSAF service NodeDirector's binaries, CLC
   501   scripts.
   502 
   503 * opensaf-<svcname-libs>-<version>.<Release>.<build_arch>.rpm:
   504   RPM containing the particular OpenSAF service libraries to be linked by User
   505   and any User Program (command line tool/utility) provided the service.
   506 
   507 With the default configure options, the following RPMs are generated:
   508 
   509 opensaf-<Release>.<arch>.rpm
   510 opensaf-controller-<Release>.<arch>.rpm
   511 opensaf-devel-<Release>.<arch>.rpm
   512 opensaf-samples-<Release>.<arch>.rpm
   513 opensaf-payload-<Release>.<arch>.rpm
   514 opensaf-amf-libs-<Release>.<arch>.rpm
   515 opensaf-clm-libs-<Release>.<arch>.rpm
   516 opensaf-imm-director-<Release>.<arch>.rpm
   517 opensaf-imm-libs-<Release>.<arch>.rpm
   518 opensaf-imm-nodedirector-<Release>.<arch>.rpm
   519 opensaf-libs-<Release>.<arch>.rpm
   520 opensaf-log-libs-<Release>.<arch>.rpm
   521 opensaf-log-server-<Release>.<arch>.rpm
   522 opensaf-ntf-libs-<Release>.<arch>.rpm
   523 opensaf-ntf-server-<Release>.<arch>.rpm
   524 opensaf-plm-coordinator-<Release>.<arch>.rpm
   525 opensaf-plm-hpi-<Release>.<arch>.rpm
   526 opensaf-plm-libs-<Release>.<arch>.rpm
   527 opensaf-plm-server-<Release>.<arch>
   528 opensaf-smf-director-<Release>.<arch>.rpm
   529 opensaf-smf-libs-<Release>.<arch>.rpm
   530 opensaf-smf-nodedirector-<Release>.<arch>.rpm
   531 opensaf-ckpt-director-<Release>.<arch>.rpm
   532 opensaf-ckpt-libs-<Release>.<arch>.rpm
   533 opensaf-ckpt-nodedirector-<Release>.<arch>.rpm
   534 opensaf-evt-libs-<Release>.<arch>.rpm
   535 opensaf-evt-server-<Release>.<arch>.rpm
   536 opensaf-lck-director-<Release>.<arch>.rpm
   537 opensaf-lck-libs-<Release>.<arch>.rpm
   538 opensaf-lck-nodedirector-<Release>.<arch>.rpm
   539 opensaf-msg-director-<Release>.<arch>.rpm
   540 opensaf-msg-libs-<Release>.<arch>.rpm
   541 opensaf-msg-nodedirector-<Release>.<arch>.rpm
   542 
   543 
   544 opensaf-controller: (Meta Package)
   545 Contains the controller specifc config, script files, the IMM classes 
   546 and objects for OpenSAF infrastructure services, And the 
   547 dependencies for installing the controller rpm.
   548 
   549 opensaf-payload: (Meta Package)
   550 Contains the payload specific config file And the dependencies for
   551 installing the payload rpm.
   552 
   553 opensaf-<Release>.<arch>.rpm
   554 Contains configuration and script file that are common to both 
   555 a controller/payload node configuration.
   556 
   557 opensaf-devel: (Optional)
   558 Contains the development headers and static & shared libs for user
   559 application development/linkage.
   560 
   561 opensaf-java: (Optional)
   562 Contains the Java AIS mapping jars and native libs.
   563 
   564 opensaf-samples: (Optional)
   565 Contains the sample applications source code.
   566 
   567 
   568 Installing `OpenSAF'
   569 ====================
   570 
   571 `OpenSAF' can be installed in several ways. When doing development, a
   572 user might prefer using the classic `make install' way to using RPMs.
   573 It can be achieved like this:
   574 
   575     % make install
   576 
   577     OR
   578 
   579     % make install DESTDIR=<staged_install_directory>
   580 
   581 After installing `OpenSAF' you will need to run `ldconfig' because `OpenSAF'
   582 places internal libs in the `$pkglibdir' (e.g. /usr/lib/opensaf/). This ldconfig
   583 operation is handled automatically by using rpm installation.
   584 
   585 In production systems, RPMs should be preferred to classic `make install`.
   586 
   587 To setup a development environment for a given OpenSAF service, install following RPMs:
   588     % rpm -ivh opensaf-<svc_name>-libs-<Release>.<build_arch>.rpm
   589     % rpm -ivh opensaf-devel-<Release>.<build_arch>.rpm
   590     % rpm -ivh opensaf-samples-<Release>.<build_arch>.rpm
   591 
   592 If Java AIS mapping was enabled, install the following RPM:
   593 
   594     % rpm -ivh opensaf-java-<version>.<build_arch>.rpm
   595 
   596 If you are installing `OpenSAF' from a supported `yum' server, it will resolve
   597 the proper dependencies for you:
   598 
   599     % yum install opensaf-controller
   600 
   601     OR
   602 
   603     % yum install opensaf-payload
   604 
   605 Here is where individual `OpenSAF' components get installed:
   606 
   607     * Documentation: `$docdir' (e.g /usr/share/doc/packages/opensaf/)
   608     * Samples, Templates: `$pkgdatadir'/samples (e.g. /usr/share/opensaf/samples)
   609     * IMM XML Merge tool: `pkgimmxmldir' (e.g. /usr/share/opensaf/samples/immxml
   610     * SAF libraries: `$libdir' (e.g. /usr/lib/)
   611     * SAF headers: `$includedir' (e.g. /usr/include/)
   612     * Configuration: `$pkgsysconfdir' (e.g. /etc/opensaf/)
   613     * OpenSAF headers: `$pkgincludedir' (e.g. /usr/include/opensaf/)
   614     * Runtime Misc.: `$pkglocalstate' (e.g. /var/lib/opensaf/)
   615     * OpenSAF internals(binaries,clc-scripts): `$pkglibdir' (e.g. /usr/lib/opensaf/)
   616     * User programs: `$bindir' (e.g. /usr/bin/)
   617     * SysV scripts: `$sysconfdir/init.d/' (e.g. /etc/init.d/)
   618     * Logs: `$localstatedir/log/opensaf' (e.g. /var/log/opensaf/)
   619     * PID: `$localstatedir/run/opensaf/' (e.g. /var/run/opensaf/)
   620 
   621 
   622 
   623 Linking with `OpenSAF' AIS Services
   624 ===================================
   625 
   626 `OpenSAF' provides `pkgconfig' files for each AIS services.
   627 These files are installed with the other system `*.pc' files
   628 in `$(libdir)/pkgconfig':
   629 
   630    * opensaf-amf.pc
   631    * opensaf-ckpt.pc
   632    * opensaf-clm.pc
   633    * opensaf-evt.pc
   634    * opensaf-imm.pc
   635    * opensaf-lck.pc
   636    * opensaf-log.pc
   637    * opensaf-msg.pc
   638    * opensaf-ntf.pc
   639    * opensaf-plm.pc
   640 
   641 
   642 There are two easy ways to use `pkgconfig'. The first one is to call it directly
   643 from a `Makefile' and assign its content to make variables e.g.:
   644 
   645    AMF_LIBS=`pkg-config opensaf-amf --libs`
   646    AMF_CFLAGS=`pkg-config opensaf-amf --cflags`
   647 
   648 Or if your application is using the `GNU Build System' with `autotools', you can
   649 use a special `autoconf' macro provided by `pkgconfig' e.g.:
   650 
   651    -- in configure.ac --
   652    PKG_CHECK_MODULES(AMF, opensaf-amf)
   653 
   654 It will then provides two special variables available to `automake':
   655 
   656    -- in Makefile.am --
   657    mumble_CFLAGS = @AMF_CFLAGS@
   658    mumble_LDADD = @AMF_LIBS@
   659 
   660 
   661 How to Configure `OpenSAF'
   662 ==========================
   663 
   664 See file `00-README.conf' for the configuration file syntax/format.
   665 
   666 How to Run `OpenSAF'
   667 ====================
   668 When PLM is enabled, The 'plmcd' SysV init script is installed in 
   669 `$sysconfdir/rc.d/init.d' (e.g. /etc/rc.d/init.d/) directory.
   670 
   671 The `OpenSAF' SysV init script is installed in `$sysconfdir/rc.d/init.d'
   672 (e.g. /etc/rc.d/init.d/)
   673 
   674 Commands to Start OpenSAF When PLM is disabled:
   675 ===============================================
   676 After a minimum configuration of
   677  - slot_id, nodeinit.conf, node_name, imm.xml(Generated) and nid_tipc(if needbe), for the controller 
   678   (OR)
   679  - slot_id, nodeinit.conf and node_name, for the payload.
   680 
   681 the following command shall start the OpenSAF services:
   682 
   683 % /etc/init.d/opensafd start [start|stop|status]
   684 
   685 Commands to Start OpenSAF When PLM is enabled:
   686 ==============================================
   687 After a minimum configuration of 
   688 
   689  - slot_id, nodeinit.conf, node_name, imm.xml(Generated) and nid_tipc(if needbe) and the plmcd.conf, 
   690    for the controller
   691   (OR)
   692  - slot_id, nodeinit.conf, node_name and the plmcd.conf, for the payload
   693 
   694 The following commands shall be executed:
   695 
   696 % /etc/init.d/plmcd start
   697 
   698 % /etc/init.d/opensafd start [start|stop|status]
   699 
   700 Note: Its not necessary to start OpenSAF if an entry to start OpenSAF is
   701 set/specified in the plmcd.conf file.
   702 
   703 More TODO on status command.
   704 
   705 Command To Trigger a Administrative Switchover of the Controller Nodes:
   706 =======================================================================
   707 amf-adm si-swap safSi=SC-2N,safApp=OpenSAF
   708 
   709 Building `OpenSAF' Samples
   710 ==========================
   711 
   712 The sources of the `OpenSAF' sample applications will get installed in
   713 `$pkgdatadir/samples' (e.g. /usr/share/opensaf/samples/).
   714 
   715 The following steps shall be done to build the sample applications:
   716     % ./bootstrap.sh
   717     % ./configure
   718     % make
   719       OR
   720     % make install
   721 
   722 The `Makefile' looks for installed `SAF AIS' headers and `OpenSAF' libs in
   723 standard system wide locations (e.g. /usr/include/ & /usr/lib/):
   724 
   725     INCLUDES = -I.
   726     LDFLAGS = -lSaAmf -lsaf_common -lavsv_common
   727 
   728 If you have `OpenSAF' development packages installed somewhere else, override
   729 the default values e.g.:
   730 
   731     % make INCLUDES="-I. -I/tmp/usr/local/include" \
   732         LDFLAGS="-L/tmp/usr/local/lib -lSaAmf -lsaf_common -lavsv_common"
   733 
   734 To run an application you will need a configured `OpenSAF' node running.
   735 
   736 See file `00-README.samples' for more information on each of the application.
   737 
   738 
   739 Using the Simulation Environment
   740 ================================
   741 
   742 See file `00-README.uml' for more information about User Mode Linux and `OpenSAF'
   743 
   744 Upgrading OpenSAF
   745 =================
   746 In OpenSAF 4.2, the non-standard DTSv (Distributed Tracing Service) has been retired/removed.
   747 Fresh installations (new users) of 4.2 shall generate a new 
   748 imm.xml(see file 00-README.conf).
   749 
   750 Users of OpenSAF 4.0.2 or OpenSAF 4.1.1 releases, who wish to perform an In-Service Upgrade
   751 to OpenSAF 4.2 using SMF based upgrade campaigns should do the following:
   752 
   753 1) Download OpenSAF 4.2 release source tar from http://devel.opensaf.org/downloads
   754 2) Apply the patch 4.2_upgrade_dummydtsv.patch from http://devel.opensaf.org/downloads
   755 <FIXME: Patch name, link>
   756 3) Build OpenSAF 4.2 rpms
   757 4) Execute your SMF upgrade campaigns.
   758 
   759 The capability to modify the OpenSAF services' information model at run time
   760 has been added now in OpenSAF 4.2 and also in maintenance changesets of
   761 the 4.0.2 and 4.1.1 releases.
   762 You should track this section for information on steps to be done to permenantly delete
   763 the DTSv from the information model, in future releases.
   764 
   765 Note: When an OpenSAF installation(< 4.2) running with 'root' privileges and that may have 
   766 configured IMM persistent storage and/or contains old/generated  trace files, 
   767 is now being upgraded to OpenSAF 4.2 as the 'opensaf' user (i.e. non-root user), 
   768 Then it is the responsibility of the user/integrator to manage (through rpm scriptlets 
   769 or upgrade scripts) the permissions of the file/directory of the 
   770 immsv persistent store (see IMMSV_PBE_FILE in the $pkgsysconfdir/immnd.conf. 
   771 e.g. /etc/opensaf/immnd.conf file) and/or the permissions of any previous trace files 
   772 present under the $pkglogdir (e.g. /var/log/opensaf) directory, accordingly, if applicable.
   773 
   774 
   775 Linux Distro-Specific Notes
   776 ===========================
   777 
   778 `OpenSAF' is known to run on the following Linux installations:
   779 
   780     * Red Hat Enterprise Linux 4 (RHEL4)
   781     * Red Hat Enterprise Linux 5.2 (RHEL5)
   782     * Wind River Platform for Network Equipment, Linux Edition (PNE-LE)
   783     * MontaVista Carrier Grade Edition 4.0
   784     * Fedora Core 9
   785     * SUSE Linux Enterprise 10 SP2
   786     * SLES11 
   787     *...
   788 
   789 More TODO
   790 
   791 <RHEL firewall rules, SELinux, SUSE crashes with -02, missing decent tipc.h etc.>
   792 
   793 -------------------------------------------------------------------------------
   794 
   795 Copyright (C) 2011 The OpenSAF Foundation
   796