<?xml version="1.0" encoding="UTF-8"?>
<!--
 *      -*- OpenSAF  -*-
 *
 * (C) Copyright 2011 The OpenSAF Foundation
 *
 * This program is distributed in the hope that it will be useful, but
 * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
 * or FITNESS FOR A PARTICULAR PURPOSE. This file and program are licensed
 * under the GNU Lesser General Public License Version 2.1, February 1999.
 * The complete license can be accessed from the following location:
 * http://opensource.org/licenses/lgpl-license.php
 * See the Copying file included with the OpenSAF distribution for full
 * licensing terms.
 *
 * Author(s): Ericsson
 *

This file contains an example of an AMF integration of a local, non-SA-aware,
non-proxied component. In this case the resource agent ip from the Linux
HA project: http://www.linux-ha.org

ip is modelled as an application with a 2N Service Group with two
Service Units, on for each controller. Each Service Unit has one
component, ip.

Some things to note:
- saAmfCtCompCategory=SA_AMF_COMP_LOCAL(8)
- saAmfCtDefTerminateCmdArgv is required for non-sa-aware components

This file can be loaded into a running OpenSAF system with 'immcfg -f test-2452.xml'

The SUs are in admin state "locked instantiation" and needs to be unlocked:
amf-adm unlock-in safSu=1,safSg=2N,safApp=osaftest
amf-adm unlock safSu=1,safSg=2N,safApp=osaftest
amf-adm unlock-in safSu=2,safSg=2N,safApp=osaftest
amf-adm unlock safSu=2,safSg=2N,safApp=osaftest

Component Monitoring
====================

-->

<imm:IMM-contents xmlns:imm="http://www.saforum.org/IMMSchema" xsi:noNamespaceSchemaLocation="SAI-AIS-IMM-XSD-A.01.01.xsd" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">

<!-- BASE TYPES -->

	<object class="SaAmfAppBaseType">
		<dn>safAppType=osaftest</dn>
	</object>
	<object class="SaAmfSGBaseType">
		<dn>safSgType=2N-osaftest</dn>
	</object>
	<object class="SaAmfSUBaseType">
		<dn>safSuType=osaftest</dn>
	</object>
	<object class="SaAmfCompBaseType">
		<dn>safCompType=ip</dn>
	</object>
	<object class="SaAmfSvcBaseType">
	    <dn>safSvcType=osaftest</dn>
	</object>
	<object class="SaAmfCSBaseType">
	    <dn>safCSType=ip</dn>
	</object>
	<object class="SaAmfSvcType">
	    <dn>safVersion=1,safSvcType=osaftest</dn>
	</object>

<!-- VERSIONED TYPES -->

	<object class="SaAmfAppType">
		<dn>safVersion=1,safAppType=osaftest</dn>
		<attr>
			<name>saAmfApptSGTypes</name>
			<value>safVersion=1,safSgType=2N-osaftest</value>
		</attr>
	</object>
	<object class="SaAmfSGType">
		<dn>safVersion=1,safSgType=2N-osaftest</dn>
		<attr>
			<name>saAmfSgtRedundancyModel</name>
			<value>1</value>
		</attr>
		<attr>
			<name>saAmfSgtValidSuTypes</name>
			<value>safVersion=1,safSuType=osaftest</value>
		</attr>
		<attr>
			<name>saAmfSgtDefAutoAdjustProb</name>
			<value>10000000000</value>
		</attr>
		<attr>
			<name>saAmfSgtDefCompRestartProb</name>
			<value>4000000000</value>
		</attr>
		<attr>
			<name>saAmfSgtDefCompRestartMax</name>
			<value>10</value>
		</attr>
		<attr>
			<name>saAmfSgtDefSuRestartProb</name>
			<value>4000000000</value>
		</attr>
		<attr>
			<name>saAmfSgtDefSuRestartMax</name>
			<value>10</value>
		</attr>
	</object>
	<object class="SaAmfSUType">
		<dn>safVersion=1,safSuType=osaftest</dn>
		<attr>
			<name>saAmfSutIsExternal</name>
			<value>0</value>
		</attr>
		<attr>
			<name>saAmfSutDefSUFailover</name>
			<value>1</value>
		</attr>
		<attr>
			<name>saAmfSutProvidesSvcTypes</name>
			<value>safVersion=1,safSvcType=osaftest</value>
		</attr>
	</object>
	<object class="SaAmfCompType">
		<dn>safVersion=1,safCompType=ip</dn>
		<attr>
			<name>saAmfCtCompCategory</name>
			<value>8</value>
		</attr>
		<attr>
			<name>saAmfCtSwBundle</name>
			<value>safSmfBundle=resource-agents-1</value>
		</attr>
		<attr>
			<name>saAmfCtDefClcCliTimeout</name>
			<value>10000000000</value>
		</attr>
		<attr>
			<name>saAmfCtDefCallbackTimeout</name>
			<value>10000000000</value>
		</attr>
		<attr>
			<name>saAmfCtRelPathInstantiateCmd</name>
			<value>ip.sh start</value>
		</attr>
		<attr>
			<name>saAmfCtRelPathCleanupCmd</name>
			<value>ip.sh stop</value>
		</attr>
		<attr>
			<name>saAmfCtRelPathTerminateCmd</name>
			<value>ip.sh stop</value>
		</attr>
<!--
		<attr>
			<name>saAmfCtRelPathAmStartCmd</name>
			<value>/usr/local/sbin/amfpm -s</value>
		</attr>
		<attr>
			<name>saAmfCtRelPathAmStopCmd</name>
			<value>/usr/local/sbin/amfpm -p</value>
		</attr>
-->
		<attr>
			<name>osafAmfCtRelPathHcCmd</name>
			<value>ip.sh</value>
		</attr>
		<attr>
			<name>osafAmfCtDefHcCmdArgv</name>
			<value>status</value>
		</attr>
		<attr>
			<name>saAmfCtDefRecoveryOnError</name>
			<value>2</value>
		</attr>
		<attr>
			<name>saAmfCtDefDisableRestart</name>
			<value>0</value>
		</attr>
	</object>

	<object class="SaAmfHealthcheckType">
		<dn>safHealthcheckKey=osafHealthCheck,safVersion=1,safCompType=ip</dn>
		<attr>
			<name>saAmfHctDefPeriod</name>
			<value>10000000000</value>
		</attr>
		<attr>
			<name>saAmfHctDefMaxDuration</name>
			<value>6000000000</value>
		</attr>
	</object>

	<object class="SaAmfCSType">
		<dn>safVersion=1,safCSType=ip</dn>
	</object>
	<object class="SaAmfSutCompType">
		<dn>safMemberCompType=safVersion=1\,safCompType=ip,safVersion=1,safSuType=osaftest</dn>
	</object>
	<object class="SaAmfSvcTypeCSTypes">
	  <dn>safMemberCSType=safVersion=1\,safCSType=ip,safVersion=1,safSvcType=osaftest</dn>
	</object>
	<object class="SaAmfCtCsType">
		<dn>safSupportedCsType=safVersion=1\,safCSType=ip,safVersion=1,safCompType=ip</dn>
		<attr>
			<name>saAmfCtCompCapability</name>
			<value>1</value>
		</attr>
	</object>

<!-- COMMON INSTANCES -->

	<object class="SaAmfApplication">
		<dn>safApp=osaftest</dn>
		<attr>
			<name>saAmfAppType</name>
			<value>safVersion=1,safAppType=osaftest</value>
		</attr>
	</object>

	<object class="SaAmfSG">
		<dn>safSg=2N,safApp=osaftest</dn>
		<attr>
			<name>saAmfSGType</name>
			<value>safVersion=1,safSgType=2N-osaftest</value>
		</attr>
		<attr>
			<name>saAmfSGAutoRepair</name>
			<value>0</value>
		</attr>
		<attr>
			<name>saAmfSGAutoAdjust</name>
			<value>0</value>
		</attr>
		<attr>
			<name>saAmfSGNumPrefInserviceSUs</name>
			<value>10</value>
		</attr>
		<attr>
			<name>saAmfSGNumPrefAssignedSUs</name>
			<value>10</value>
		</attr>
	</object>

	<object class="SaSmfSwBundle">
			<dn>safSmfBundle=resource-agents-1</dn>
	</object>

	<object class="SaAmfSI">
		<dn>safSi=1,safApp=osaftest</dn>
		<attr>
			<name>saAmfSvcType</name>
			<value>safVersion=1,safSvcType=osaftest</value>
		</attr>
		<attr>
			<name>saAmfSIProtectedbySG</name>
			<value>safSg=2N,safApp=osaftest</value>
		</attr>
		<attr>
			<name>saAmfSIRank</name>
			<value>1</value>
		</attr>
	</object>

	<object class="SaAmfCSI">
	    <dn>safCsi=ip,safSi=1,safApp=osaftest</dn>
	    <attr>
			<name>saAmfCSType</name>
			<value>safVersion=1,safCSType=ip</value>
	    </attr>
	</object>

	<object class="SaAmfCSIAttribute">
	    <dn>safCsiAttr=OCF_RESKEY_address,safCsi=ip,safSi=1,safApp=osaftest</dn>
	    <attr>
			<name>saAmfCSIAttriValue</name>
			<value>192.168.1.101</value>
	    </attr>
	</object>

<!-- SC1 INSTANCES -->

	<object class="SaAmfSU">
		<dn>safSu=1,safSg=2N,safApp=osaftest</dn>
		<attr>
			<name>saAmfSUType</name>
			<value>safVersion=1,safSuType=osaftest</value>
		</attr>
		<attr>
			<name>saAmfSUHostNodeOrNodeGroup</name>
			<value>safAmfNode=SC-1,safAmfCluster=myAmfCluster</value>
		</attr>
		<attr>
			<name>saAmfSURank</name>
			<value>1</value>
		</attr>
		<attr>
			<name>saAmfSUAdminState</name>
			<value>3</value>
		</attr>
	</object>

	<object class="SaAmfComp">
	    <dn>safComp=ip,safSu=1,safSg=2N,safApp=osaftest</dn>
	    <attr>
			<name>saAmfCompType</name>
			<value>safVersion=1,safCompType=ip</value>
	    </attr>
	</object>

	<object class="SaAmfCompCsType">
	    <dn>safSupportedCsType=safVersion=1\,safCSType=ip,safComp=ip,safSu=1,safSg=2N,safApp=osaftest</dn>
	</object>

	<object class="SaAmfNodeSwBundle">
		<dn>safInstalledSwBundle=safSmfBundle=resource-agents-1,safAmfNode=SC-1,safAmfCluster=myAmfCluster</dn>
		<attr>
			<name>saAmfNodeSwBundlePathPrefix</name>
			<value>/usr/share/cluster</value>
		</attr>
	</object>

</imm:IMM-contents>