<?xml version="1.0"?>
<?xml-stylesheet type="text/css" href="https://help.openclovis.com/skins/common/feed.css?303"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
		<id>https://help.openclovis.com/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=MediaWiki+spam+cleanup</id>
		<title>OpenClovis Product Documentation - User contributions [en]</title>
		<link rel="self" type="application/atom+xml" href="https://help.openclovis.com/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=MediaWiki+spam+cleanup"/>
		<link rel="alternate" type="text/html" href="https://help.openclovis.com/index.php/Special:Contributions/MediaWiki_spam_cleanup"/>
		<updated>2026-07-14T05:16:18Z</updated>
		<subtitle>User contributions</subtitle>
		<generator>MediaWiki 1.20.2</generator>

	<entry>
		<id>https://help.openclovis.com/index.php/ClLog.xml</id>
		<title>ClLog.xml</title>
		<link rel="alternate" type="text/html" href="https://help.openclovis.com/index.php/ClLog.xml"/>
				<updated>2012-02-21T03:50:05Z</updated>
		
		<summary type="html">&lt;p&gt;MediaWiki spam cleanup: Reverting to last revision not containing links to www.buyxanaxitem.com&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;http://www.buyxanaxonlinepill.com/ buy xanax no prescription - xanax to buy&lt;/div&gt;</summary>
		<author><name>MediaWiki spam cleanup</name></author>	</entry>

	<entry>
		<id>https://help.openclovis.com/index.php/Doc:Sdkguide/infrastructure</id>
		<title>Doc:Sdkguide/infrastructure</title>
		<link rel="alternate" type="text/html" href="https://help.openclovis.com/index.php/Doc:Sdkguide/infrastructure"/>
				<updated>2012-02-21T03:50:05Z</updated>
		
		<summary type="html">&lt;p&gt;MediaWiki spam cleanup: Reverting to last revision not containing links to www.buyxanaxitem.com&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;http://www.buyxanaxonlinepill.com/ buy 2mg xanax - buy xanax online wthout prescription&lt;/div&gt;</summary>
		<author><name>MediaWiki spam cleanup</name></author>	</entry>

	<entry>
		<id>https://help.openclovis.com/index.php/Talk:High_Availability_(AMF)_Questions</id>
		<title>Talk:High Availability (AMF) Questions</title>
		<link rel="alternate" type="text/html" href="https://help.openclovis.com/index.php/Talk:High_Availability_(AMF)_Questions"/>
				<updated>2012-02-21T03:50:05Z</updated>
		
		<summary type="html">&lt;p&gt;MediaWiki spam cleanup: Reverting to last revision not containing links to www.buyxanaxitem.com&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;http://www.buyxanaxonlinepill.com/ order cheap xanax online - buy xanax 2mg&lt;/div&gt;</summary>
		<author><name>MediaWiki spam cleanup</name></author>	</entry>

	<entry>
		<id>https://help.openclovis.com/index.php/Doc:latest/sdkguide/highavailability</id>
		<title>Doc:latest/sdkguide/highavailability</title>
		<link rel="alternate" type="text/html" href="https://help.openclovis.com/index.php/Doc:latest/sdkguide/highavailability"/>
				<updated>2012-02-21T03:50:05Z</updated>
		
		<summary type="html">&lt;p&gt;MediaWiki spam cleanup: Reverting to last revision not containing links to www.buyxanaxitem.com&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;http://www.buyxanaxonlinepill.com/ purchase online generic xanax - order cheap xanax online&lt;/div&gt;</summary>
		<author><name>MediaWiki spam cleanup</name></author>	</entry>

	<entry>
		<id>https://help.openclovis.com/index.php/Doc:latest/sdkguide/commandref</id>
		<title>Doc:latest/sdkguide/commandref</title>
		<link rel="alternate" type="text/html" href="https://help.openclovis.com/index.php/Doc:latest/sdkguide/commandref"/>
				<updated>2012-02-21T03:50:04Z</updated>
		
		<summary type="html">&lt;p&gt;MediaWiki spam cleanup: Reverting to last revision not containing links to www.buyxanaxitem.com&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;http://www.buyxanaxonlinepill.com/ cheap xanax without a prescription - xanax online no prescription&lt;/div&gt;</summary>
		<author><name>MediaWiki spam cleanup</name></author>	</entry>

	<entry>
		<id>https://help.openclovis.com/index.php/Logging_Questions</id>
		<title>Logging Questions</title>
		<link rel="alternate" type="text/html" href="https://help.openclovis.com/index.php/Logging_Questions"/>
				<updated>2012-02-21T03:50:04Z</updated>
		
		<summary type="html">&lt;p&gt;MediaWiki spam cleanup: Reverting to last revision not containing links to www.buyxanaxitem.com&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;http://www.buyxanaxonlinepill.com/ buy xanax - order xanax cheap&lt;/div&gt;</summary>
		<author><name>MediaWiki spam cleanup</name></author>	</entry>

	<entry>
		<id>https://help.openclovis.com/index.php/Doc:latest/sdkguide/knowledgebase</id>
		<title>Doc:latest/sdkguide/knowledgebase</title>
		<link rel="alternate" type="text/html" href="https://help.openclovis.com/index.php/Doc:latest/sdkguide/knowledgebase"/>
				<updated>2012-02-21T03:50:03Z</updated>
		
		<summary type="html">&lt;p&gt;MediaWiki spam cleanup: Reverting to last revision not containing links to www.buyxanaxitem.com&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;http://www.buyxanaxonlinepill.com/ order xanax online no rx - generic xanax&lt;/div&gt;</summary>
		<author><name>MediaWiki spam cleanup</name></author>	</entry>

	<entry>
		<id>https://help.openclovis.com/index.php/Doc:latest/sdkguide/compdev</id>
		<title>Doc:latest/sdkguide/compdev</title>
		<link rel="alternate" type="text/html" href="https://help.openclovis.com/index.php/Doc:latest/sdkguide/compdev"/>
				<updated>2012-02-21T03:50:03Z</updated>
		
		<summary type="html">&lt;p&gt;MediaWiki spam cleanup: Reverting to last revision not containing links to www.buyxanaxitem.com&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;http://www.buyxanaxonlinepill.com/ xanax no prescriptions - xanax&lt;/div&gt;</summary>
		<author><name>MediaWiki spam cleanup</name></author>	</entry>

	<entry>
		<id>https://help.openclovis.com/index.php/Doc:latest/sdkguide/troubleshooting</id>
		<title>Doc:latest/sdkguide/troubleshooting</title>
		<link rel="alternate" type="text/html" href="https://help.openclovis.com/index.php/Doc:latest/sdkguide/troubleshooting"/>
				<updated>2012-02-21T03:50:03Z</updated>
		
		<summary type="html">&lt;p&gt;MediaWiki spam cleanup: Reverting to last revision not containing links to www.buyxanaxitem.com&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;http://www.buyxanaxonlinepill.com/ buy xanax online - buy generic xanax online&lt;/div&gt;</summary>
		<author><name>MediaWiki spam cleanup</name></author>	</entry>

	<entry>
		<id>https://help.openclovis.com/index.php/Doc:latest/sdkguide/basicinfrastructure</id>
		<title>Doc:latest/sdkguide/basicinfrastructure</title>
		<link rel="alternate" type="text/html" href="https://help.openclovis.com/index.php/Doc:latest/sdkguide/basicinfrastructure"/>
				<updated>2012-02-21T03:50:03Z</updated>
		
		<summary type="html">&lt;p&gt;MediaWiki spam cleanup: Reverting to last revision not containing links to www.buyxanaxitem.com&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;http://www.buyxanaxonlinepill.com/ order xanax no rx - buy xanax no prescription&lt;/div&gt;</summary>
		<author><name>MediaWiki spam cleanup</name></author>	</entry>

	<entry>
		<id>https://help.openclovis.com/index.php/Doc:latest/sdkguide/deploy</id>
		<title>Doc:latest/sdkguide/deploy</title>
		<link rel="alternate" type="text/html" href="https://help.openclovis.com/index.php/Doc:latest/sdkguide/deploy"/>
				<updated>2012-02-21T03:50:03Z</updated>
		
		<summary type="html">&lt;p&gt;MediaWiki spam cleanup: Reverting to last revision not containing links to www.buyxanaxitem.com&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;http://www.buyxanaxonlinepill.com/ xanax no prescriptions - buy generic xanax online&lt;/div&gt;</summary>
		<author><name>MediaWiki spam cleanup</name></author>	</entry>

	<entry>
		<id>https://help.openclovis.com/index.php/Logging_Questions</id>
		<title>Logging Questions</title>
		<link rel="alternate" type="text/html" href="https://help.openclovis.com/index.php/Logging_Questions"/>
				<updated>2012-02-21T03:48:25Z</updated>
		
		<summary type="html">&lt;p&gt;MediaWiki spam cleanup: Reverting to last revision not containing links to www.buyxanaxonlinepill.com&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;http://www.buyxanaxitem.com/ buy xanax no prescription - buy xanax cheap no prescription&lt;/div&gt;</summary>
		<author><name>MediaWiki spam cleanup</name></author>	</entry>

	<entry>
		<id>https://help.openclovis.com/index.php/ClLog.xml</id>
		<title>ClLog.xml</title>
		<link rel="alternate" type="text/html" href="https://help.openclovis.com/index.php/ClLog.xml"/>
				<updated>2012-02-21T03:48:25Z</updated>
		
		<summary type="html">&lt;p&gt;MediaWiki spam cleanup: Reverting to last revision not containing links to www.buyxanaxonlinepill.com&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;http://www.buyxanaxitem.com/ order xanax online no rx - cheap xanax without a prescription&lt;/div&gt;</summary>
		<author><name>MediaWiki spam cleanup</name></author>	</entry>

	<entry>
		<id>https://help.openclovis.com/index.php/Doc:Sdkguide/infrastructure</id>
		<title>Doc:Sdkguide/infrastructure</title>
		<link rel="alternate" type="text/html" href="https://help.openclovis.com/index.php/Doc:Sdkguide/infrastructure"/>
				<updated>2012-02-21T03:48:25Z</updated>
		
		<summary type="html">&lt;p&gt;MediaWiki spam cleanup: Reverting to last revision not containing links to www.buyxanaxonlinepill.com&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;http://www.buyxanaxitem.com/ buy xanax online - cheap xanax without a prescription&lt;/div&gt;</summary>
		<author><name>MediaWiki spam cleanup</name></author>	</entry>

	<entry>
		<id>https://help.openclovis.com/index.php/Talk:High_Availability_(AMF)_Questions</id>
		<title>Talk:High Availability (AMF) Questions</title>
		<link rel="alternate" type="text/html" href="https://help.openclovis.com/index.php/Talk:High_Availability_(AMF)_Questions"/>
				<updated>2012-02-21T03:48:25Z</updated>
		
		<summary type="html">&lt;p&gt;MediaWiki spam cleanup: Reverting to last revision not containing links to www.buyxanaxonlinepill.com&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;http://www.buyxanaxitem.com/ xanax to buy - buy xanax online wthout prescription&lt;/div&gt;</summary>
		<author><name>MediaWiki spam cleanup</name></author>	</entry>

	<entry>
		<id>https://help.openclovis.com/index.php/Doc:latest/sdkguide/highavailability</id>
		<title>Doc:latest/sdkguide/highavailability</title>
		<link rel="alternate" type="text/html" href="https://help.openclovis.com/index.php/Doc:latest/sdkguide/highavailability"/>
				<updated>2012-02-21T03:48:25Z</updated>
		
		<summary type="html">&lt;p&gt;MediaWiki spam cleanup: Reverting to last revision not containing links to www.buyxanaxonlinepill.com&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;http://www.buyxanaxitem.com/ xanax buy - buy xanax cheap&lt;/div&gt;</summary>
		<author><name>MediaWiki spam cleanup</name></author>	</entry>

	<entry>
		<id>https://help.openclovis.com/index.php/Doc:latest/sdkguide/deploy</id>
		<title>Doc:latest/sdkguide/deploy</title>
		<link rel="alternate" type="text/html" href="https://help.openclovis.com/index.php/Doc:latest/sdkguide/deploy"/>
				<updated>2012-02-21T03:48:24Z</updated>
		
		<summary type="html">&lt;p&gt;MediaWiki spam cleanup: Reverting to last revision not containing links to www.buyxanaxonlinepill.com&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;http://www.buyxanaxitem.com/ buy xanax online - xanax to buy&lt;/div&gt;</summary>
		<author><name>MediaWiki spam cleanup</name></author>	</entry>

	<entry>
		<id>https://help.openclovis.com/index.php/Doc:latest/sdkguide/knowledgebase</id>
		<title>Doc:latest/sdkguide/knowledgebase</title>
		<link rel="alternate" type="text/html" href="https://help.openclovis.com/index.php/Doc:latest/sdkguide/knowledgebase"/>
				<updated>2012-02-21T03:48:24Z</updated>
		
		<summary type="html">&lt;p&gt;MediaWiki spam cleanup: Reverting to last revision not containing links to www.buyxanaxonlinepill.com&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;http://www.buyxanaxitem.com/ xanax - xanax to buy&lt;/div&gt;</summary>
		<author><name>MediaWiki spam cleanup</name></author>	</entry>

	<entry>
		<id>https://help.openclovis.com/index.php/Doc:latest/sdkguide/compdev</id>
		<title>Doc:latest/sdkguide/compdev</title>
		<link rel="alternate" type="text/html" href="https://help.openclovis.com/index.php/Doc:latest/sdkguide/compdev"/>
				<updated>2012-02-21T03:48:24Z</updated>
		
		<summary type="html">&lt;p&gt;MediaWiki spam cleanup: Reverting to last revision not containing links to www.buyxanaxonlinepill.com&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;http://www.buyxanaxitem.com/ buy xanax online - order generic xanax online&lt;/div&gt;</summary>
		<author><name>MediaWiki spam cleanup</name></author>	</entry>

	<entry>
		<id>https://help.openclovis.com/index.php/Doc:latest/sdkguide/troubleshooting</id>
		<title>Doc:latest/sdkguide/troubleshooting</title>
		<link rel="alternate" type="text/html" href="https://help.openclovis.com/index.php/Doc:latest/sdkguide/troubleshooting"/>
				<updated>2012-02-21T03:48:24Z</updated>
		
		<summary type="html">&lt;p&gt;MediaWiki spam cleanup: Reverting to last revision not containing links to www.buyxanaxonlinepill.com&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;http://www.buyxanaxitem.com/ xanax buy online - cheap xanax&lt;/div&gt;</summary>
		<author><name>MediaWiki spam cleanup</name></author>	</entry>

	<entry>
		<id>https://help.openclovis.com/index.php/Doc:latest/sdkguide/commandref</id>
		<title>Doc:latest/sdkguide/commandref</title>
		<link rel="alternate" type="text/html" href="https://help.openclovis.com/index.php/Doc:latest/sdkguide/commandref"/>
				<updated>2012-02-21T03:48:24Z</updated>
		
		<summary type="html">&lt;p&gt;MediaWiki spam cleanup: Reverting to last revision not containing links to www.buyxanaxonlinepill.com&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;http://www.buyxanaxitem.com/ xanax to buy - xanax&lt;/div&gt;</summary>
		<author><name>MediaWiki spam cleanup</name></author>	</entry>

	<entry>
		<id>https://help.openclovis.com/index.php/Talk:Doc:latest/sdkguide/knowledgebase</id>
		<title>Talk:Doc:latest/sdkguide/knowledgebase</title>
		<link rel="alternate" type="text/html" href="https://help.openclovis.com/index.php/Talk:Doc:latest/sdkguide/knowledgebase"/>
				<updated>2012-02-21T03:48:23Z</updated>
		
		<summary type="html">&lt;p&gt;MediaWiki spam cleanup: All revisions contained links to www.buyxanaxonlinepill.com, blanking&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>MediaWiki spam cleanup</name></author>	</entry>

	<entry>
		<id>https://help.openclovis.com/index.php/Talk:Doc:latest/sdkguide/compdev</id>
		<title>Talk:Doc:latest/sdkguide/compdev</title>
		<link rel="alternate" type="text/html" href="https://help.openclovis.com/index.php/Talk:Doc:latest/sdkguide/compdev"/>
				<updated>2012-02-21T03:48:23Z</updated>
		
		<summary type="html">&lt;p&gt;MediaWiki spam cleanup: All revisions contained links to www.buyxanaxonlinepill.com, blanking&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>MediaWiki spam cleanup</name></author>	</entry>

	<entry>
		<id>https://help.openclovis.com/index.php/Talk:Doc:latest/sdkguide/troubleshooting</id>
		<title>Talk:Doc:latest/sdkguide/troubleshooting</title>
		<link rel="alternate" type="text/html" href="https://help.openclovis.com/index.php/Talk:Doc:latest/sdkguide/troubleshooting"/>
				<updated>2012-02-21T03:48:23Z</updated>
		
		<summary type="html">&lt;p&gt;MediaWiki spam cleanup: All revisions contained links to www.buyxanaxonlinepill.com, blanking&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>MediaWiki spam cleanup</name></author>	</entry>

	<entry>
		<id>https://help.openclovis.com/index.php/Talk:Doc:latest/sdkguide/commandref</id>
		<title>Talk:Doc:latest/sdkguide/commandref</title>
		<link rel="alternate" type="text/html" href="https://help.openclovis.com/index.php/Talk:Doc:latest/sdkguide/commandref"/>
				<updated>2012-02-21T03:48:23Z</updated>
		
		<summary type="html">&lt;p&gt;MediaWiki spam cleanup: All revisions contained links to www.buyxanaxonlinepill.com, blanking&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>MediaWiki spam cleanup</name></author>	</entry>

	<entry>
		<id>https://help.openclovis.com/index.php/Talk:Logging_Questions</id>
		<title>Talk:Logging Questions</title>
		<link rel="alternate" type="text/html" href="https://help.openclovis.com/index.php/Talk:Logging_Questions"/>
				<updated>2012-02-21T03:48:23Z</updated>
		
		<summary type="html">&lt;p&gt;MediaWiki spam cleanup: All revisions contained links to www.buyxanaxonlinepill.com, blanking&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>MediaWiki spam cleanup</name></author>	</entry>

	<entry>
		<id>https://help.openclovis.com/index.php/Talk:Doc:Sdkguide/infrastructure</id>
		<title>Talk:Doc:Sdkguide/infrastructure</title>
		<link rel="alternate" type="text/html" href="https://help.openclovis.com/index.php/Talk:Doc:Sdkguide/infrastructure"/>
				<updated>2012-02-21T03:48:23Z</updated>
		
		<summary type="html">&lt;p&gt;MediaWiki spam cleanup: All revisions contained links to www.buyxanaxonlinepill.com, blanking&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>MediaWiki spam cleanup</name></author>	</entry>

	<entry>
		<id>https://help.openclovis.com/index.php/Talk:Doc:latest/sdkguide/highavailability</id>
		<title>Talk:Doc:latest/sdkguide/highavailability</title>
		<link rel="alternate" type="text/html" href="https://help.openclovis.com/index.php/Talk:Doc:latest/sdkguide/highavailability"/>
				<updated>2012-02-21T03:48:23Z</updated>
		
		<summary type="html">&lt;p&gt;MediaWiki spam cleanup: All revisions contained links to www.buyxanaxonlinepill.com, blanking&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>MediaWiki spam cleanup</name></author>	</entry>

	<entry>
		<id>https://help.openclovis.com/index.php/Doc:latest/sdkguide/basicinfrastructure</id>
		<title>Doc:latest/sdkguide/basicinfrastructure</title>
		<link rel="alternate" type="text/html" href="https://help.openclovis.com/index.php/Doc:latest/sdkguide/basicinfrastructure"/>
				<updated>2012-02-21T03:48:23Z</updated>
		
		<summary type="html">&lt;p&gt;MediaWiki spam cleanup: Reverting to last revision not containing links to www.buyxanaxonlinepill.com&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;http://www.buyxanaxitem.com/ xanax buy - cheap xanax online&lt;/div&gt;</summary>
		<author><name>MediaWiki spam cleanup</name></author>	</entry>

	<entry>
		<id>https://help.openclovis.com/index.php/Talk:Online_Dating_For_Single_Parents</id>
		<title>Talk:Online Dating For Single Parents</title>
		<link rel="alternate" type="text/html" href="https://help.openclovis.com/index.php/Talk:Online_Dating_For_Single_Parents"/>
				<updated>2012-02-21T03:48:22Z</updated>
		
		<summary type="html">&lt;p&gt;MediaWiki spam cleanup: All revisions contained links to www.buyxanaxonlinepill.com, blanking&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>MediaWiki spam cleanup</name></author>	</entry>

	<entry>
		<id>https://help.openclovis.com/index.php/Talk:Doc:latest/sdkguide/basicinfrastructure</id>
		<title>Talk:Doc:latest/sdkguide/basicinfrastructure</title>
		<link rel="alternate" type="text/html" href="https://help.openclovis.com/index.php/Talk:Doc:latest/sdkguide/basicinfrastructure"/>
				<updated>2012-02-21T03:48:22Z</updated>
		
		<summary type="html">&lt;p&gt;MediaWiki spam cleanup: All revisions contained links to www.buyxanaxonlinepill.com, blanking&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>MediaWiki spam cleanup</name></author>	</entry>

	<entry>
		<id>https://help.openclovis.com/index.php/Talk:Doc:latest/sdkguide/deploy</id>
		<title>Talk:Doc:latest/sdkguide/deploy</title>
		<link rel="alternate" type="text/html" href="https://help.openclovis.com/index.php/Talk:Doc:latest/sdkguide/deploy"/>
				<updated>2012-02-21T03:48:22Z</updated>
		
		<summary type="html">&lt;p&gt;MediaWiki spam cleanup: All revisions contained links to www.buyxanaxonlinepill.com, blanking&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>MediaWiki spam cleanup</name></author>	</entry>

	<entry>
		<id>https://help.openclovis.com/index.php/Talk:Yahoo_Chat_For_Pda</id>
		<title>Talk:Yahoo Chat For Pda</title>
		<link rel="alternate" type="text/html" href="https://help.openclovis.com/index.php/Talk:Yahoo_Chat_For_Pda"/>
				<updated>2012-02-21T03:48:22Z</updated>
		
		<summary type="html">&lt;p&gt;MediaWiki spam cleanup: All revisions contained links to www.buyxanaxonlinepill.com, blanking&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>MediaWiki spam cleanup</name></author>	</entry>

	<entry>
		<id>https://help.openclovis.com/index.php/Talk:Love_And_Dating_Websites</id>
		<title>Talk:Love And Dating Websites</title>
		<link rel="alternate" type="text/html" href="https://help.openclovis.com/index.php/Talk:Love_And_Dating_Websites"/>
				<updated>2012-02-21T03:48:22Z</updated>
		
		<summary type="html">&lt;p&gt;MediaWiki spam cleanup: All revisions contained links to www.buyxanaxonlinepill.com, blanking&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>MediaWiki spam cleanup</name></author>	</entry>

	<entry>
		<id>https://help.openclovis.com/index.php/Doc:latest/sdkguide/preface</id>
		<title>Doc:latest/sdkguide/preface</title>
		<link rel="alternate" type="text/html" href="https://help.openclovis.com/index.php/Doc:latest/sdkguide/preface"/>
				<updated>2012-02-21T03:48:21Z</updated>
		
		<summary type="html">&lt;p&gt;MediaWiki spam cleanup: Reverting to last revision not containing links to www.buyxanaxonlinepill.com&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=='''Preface'''==&lt;br /&gt;
&lt;br /&gt;
''OpenClovis Applications Service Platform (SAFplus Platform)'' is a modular, high-performance, scalable software platform (sometimes also referred to as ''middleware'') to facilitate the speedy development and run-time operation of highly-available and manageable communications systems.&lt;br /&gt;
SAFplus Platform has been primarily designed for complex, multi-processor, distributed systems, consisting of multiple processor cards or chassis, using heterogeneous CPU types and operating system versions.&lt;br /&gt;
SAFplus Platform has been fine-tuned for software applications that not only demand reliability and manageability, but also scalability and high performance.&lt;br /&gt;
&lt;br /&gt;
In a typical SAFplus-enabled communication device, SAFplus Platform resides on every (or most) processor entities that need to be involved in the manageability and configuration of the device, or which need to perform redundant services in order to provide high availability.&lt;br /&gt;
On each of such processors SAFplus Platform is present in the form of a few run-time processes (daemons), while application-specific components that need to use any of the SAFplus Platform services communicate with these daemons using SAFplus Platform client libraries.&lt;br /&gt;
For most SAFplus Platform services, the SAFplus Platform middleware takes care of all needed inter-processor communication and data replication among the various processor entities, effectively tying these into one seamless cluster, hiding the inter-processor aspects from the SAFplus-based custom applications.&lt;br /&gt;
&lt;br /&gt;
During development of an SAFplus-enabled communication system, system architects and software designers work with the ''OpenClovis Software Development Kit (SDK)''.&lt;br /&gt;
The SDK includes the ''OpenClovis Integrated Development Environment (IDE)'', a graphical user interface to define, model, and configure the system, as well as all the relevant source files, header files, run-time libraries, build tools that are needed to create, test, and debug the target system.&lt;br /&gt;
&lt;br /&gt;
With this product, OpenClovis provides Original Equipment Manufactures (OEMs), Telecommuncations Equipment Manufacturers (TEMs) with an efficient and cost-effective solution for creating highly available, manageable products with short time-to-market.&lt;br /&gt;
&lt;br /&gt;
This ''OpenClovis SDK User Guide'' provides system architects and software developers with further information about the OpenClovis SAFplus Platform and its companion SDK. It provides an overview of the SAFplus Platform architecture, the various SAFplus Platform components, and their interactions. This guide also helps you to understand how to work with the OpenClovis Software Development Kit (SDK) when modeling, configuring, building, and deploying SAFplus Platform and SAFplus Platform based applications on target systems.&lt;br /&gt;
&lt;br /&gt;
===Audience===&lt;br /&gt;
&lt;br /&gt;
''OpenClovis SDK User Guide'' is written for system architects, software designers, developers, and system integrators. To use this OpenClovis product, you must be aware of the fundamentals of operation, management, and configuration of telecommunication and networking systems. You must also be familiar with basic high availability concepts, C programming, UML notations, and have the basic knowledge of Linux.&lt;br /&gt;
&lt;br /&gt;
===Documentation Conventions===&lt;br /&gt;
&lt;br /&gt;
This user guide uses different fonts and symbols to differentiate between document elements and types of information. These conventions are summarized in the following table:&lt;br /&gt;
{| border=&amp;quot;0&amp;quot; cellpadding=&amp;quot;3&amp;quot;&lt;br /&gt;
|- style=&amp;quot;color:#ffffff; background:#549cc6&amp;quot;&lt;br /&gt;
!style=&amp;quot;color:#66b154; background:#09477c&amp;quot;| Notation &lt;br /&gt;
!style=&amp;quot;color:#66b154; background:#09477c&amp;quot;| Description&lt;br /&gt;
|- style=&amp;quot;color:#ffffff; background:#549cc6&amp;quot;&lt;br /&gt;
| style=&amp;quot;color:black&amp;quot; |&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;Code&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
| This font denotes the C code provided in various examples.&lt;br /&gt;
|- style=&amp;quot;color:#ffffff; background:#549cc6&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
Cross reference&lt;br /&gt;
|&lt;br /&gt;
This font denotes a hyperlink. You can click on the hyperlink text to access the reference location, which can be either a section within the User Guide or a URL link.&lt;br /&gt;
A cross reference refers to a section name accesses the first page of that section.&lt;br /&gt;
|- style=&amp;quot;color:#ffffff; background:#549cc6&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
'''Bold Text''' &lt;br /&gt;
|&lt;br /&gt;
Menu items and button names.&lt;br /&gt;
|- style=&amp;quot;color:#ffffff; background:#549cc6&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
''Italic Text'' &lt;br /&gt;
|&lt;br /&gt;
Variables for which you enter values.&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br&amp;gt;[[File:OpenClovis_Note.png]]This indicates the presence of notes or annotations, related to the context of the document.&lt;br /&gt;
&amp;lt;br&amp;gt;[[File:OpenClovis_Caution.png]]This indicates that certain precautionary measures must be taken before performing a particular task.&lt;br /&gt;
&amp;lt;br&amp;gt;[[File:OpenClovis_Info.png]]This indicates that additional information is provided to you.&lt;br /&gt;
&lt;br /&gt;
===Document Organization===&lt;br /&gt;
&lt;br /&gt;
OpenClovis SDK User Guide is organized into various chapters to provide information on specific areas. The following table introduces the chapter names and a brief overview of the content.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;0&amp;quot; cellpadding=&amp;quot;3&amp;quot;&lt;br /&gt;
|- style=&amp;quot;color:#ffffff; background:#549cc6&amp;quot;&lt;br /&gt;
!style=&amp;quot;color:#66b154; background:#09477c&amp;quot;| Chapter &lt;br /&gt;
!style=&amp;quot;color:#66b154; background:#09477c&amp;quot;| Overview&lt;br /&gt;
|- style=&amp;quot;color:#ffffff; background:#549cc6&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
Chapter 1, Overview&lt;br /&gt;
|&lt;br /&gt;
This chapter helps you understand the conceptual information, advantages and key features of OpenClovis SAFplus Platform and IDE.&lt;br /&gt;
|- style=&amp;quot;color:#ffffff; background:#549cc6&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
Chapter 2, High Availability (HA)&lt;br /&gt;
|&lt;br /&gt;
This chapter provides an introduction to the basic concepts of HA and the relevant SAFplus Platform features and SAFplus Platform components, namely: Availability Management Framework (AMF), Checkpointing Service, and Group membership Service (GMS).&lt;br /&gt;
|- style=&amp;quot;color:#ffffff; background:#549cc6&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
Chapter 3, System Management&lt;br /&gt;
|&lt;br /&gt;
This chapter provides information about the various SAFplus Platform features and components for system management, such as: Clovis Object Registry (COR), Mediation Library, Transaction Service, Provisioning Library, Alarm Service, Chassis Management, and SNMP Sub-Agents&lt;br /&gt;
|- style=&amp;quot;color:#ffffff; background:#549cc6&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
Chapter 4, Communications Infrastructure&lt;br /&gt;
|&lt;br /&gt;
This chapter provides an overview of the features, services and relevant components of SAFplus Platform in the domain of inter-process and inter-processor data communication.&lt;br /&gt;
|- style=&amp;quot;color:#ffffff; background:#549cc6&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
Chapter 5, Basic Infrastructure&lt;br /&gt;
|&lt;br /&gt;
OpenClovis SAFplus Platform is built on a number of basic infrastructure elements, which are described in this chapter.&lt;br /&gt;
|- style=&amp;quot;color:#ffffff; background:#549cc6&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
Chapter 6, Hardware Platform Support&lt;br /&gt;
|&lt;br /&gt;
The specific benefits of the Platform Support Package, and its realization are described in this chapter.&lt;br /&gt;
|- style=&amp;quot;color:#ffffff; background:#549cc6&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
Chapter 7, Development Lifecycle and OpenClovis SDK&lt;br /&gt;
|&lt;br /&gt;
This chapter describes how the various SDK features fit in the workflow of a typical development life-cycle, and provides detailed information about the key phases, such as configuring, building, and deploying SAFplus-enabled systems.&lt;br /&gt;
|- style=&amp;quot;color:#ffffff; background:#549cc6&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
Chapter 8, &amp;quot;Starter&amp;quot; Models&lt;br /&gt;
|&lt;br /&gt;
This chapter summarizes the so-called starter models provided by OpenClovis to jump-start the development of your own application, as an alternative to starting from scratch.&lt;br /&gt;
|- style=&amp;quot;color:#ffffff; background:#549cc6&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
Appendix A, Glossary of Terms&lt;br /&gt;
|&lt;br /&gt;
This provides complete information about all the terms and definitions specific to OpenClovis SAFplus Platform and its components.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Related Documentation===&lt;br /&gt;
&lt;br /&gt;
For additional information about the OpenClovis SAFplus Platform, SDK, and IDE, please refer to the following companion documents:&lt;br /&gt;
* '''OpenClovis Release Notes''' provides information about the software and the hardware required to install OpenClovis Application Service Platform (SAFplus Platform) and Integrated Development Environment (IDE). It contains the additional features and enhancements of the product since the previous release. It also summarizes the issues and limitations of the product and provides workarounds wherever applicable.&lt;br /&gt;
* '''OpenClovis SA Forum Compliance''' describes the level of compliance of OpenClovis SAFplus Platform and its Application Programming Interface (API) with the relevant Service Availability Forum specifications.&lt;br /&gt;
* '''OpenClovis Installation Guide''' provides the system requirements, installation procedure for OpenClovis SAFplus Platform, IDE, and the Evaluation System.&lt;br /&gt;
* '''OpenClovis Sample Application Tutorial''' provides the steps to create and build a sample model using OpenClovis IDE and OpenClovis SAFplus Platform. It also provides troubleshooting information for this process. This provides the logical first step in understanding the OpenClovis offering.&lt;br /&gt;
* '''OpenClovis Evaluation System User Guide''' provides all the required information to configure and run the sample models packaged within the Evaluation System. This document also provides good understanding of OpenClovis SAFplus Platform's functionality. This is the natural follow on to the ''OpenClovis Sample Application Tutorial'' as it builds on the example created in that document. &lt;br /&gt;
* '''OpenClovis IDE User Guide''' describes the usage of Integrated Development Environment (IDE), a graphical development environment that complements the SAFplus Platform platform. This guide helps you to understand how to use the various features of the IDE to build the application.&lt;br /&gt;
* '''OpenClovis Log Tool User Guide''' provides information about the usage of OpenClovis Log Tool. OpenClovis Log Tool is an interactive utility that allows you to view binary log files in a readable format and hence monitor system errors, warnings, and other log information. Log Tool allows you to format the &amp;lt;code&amp;gt;.log&amp;lt;/code&amp;gt; files and filter them to view the required entries.&lt;br /&gt;
* '''OpenClovis API Reference Guide''' is provided for each component. It describes the Application Programming Interface (API), Service Model, and Management Information Model of the various OpenClovis Application Service Platform (SAFplus Platform) services. It helps the developer to understand the capabilities of the SAFplus Platform services and the APIs provided by these services.&lt;br /&gt;
* '''OpenClovis SAFplus Platform Console Reference Guide''' provides details about managing applications built on OpenClovis SAFplus Platform using the SAFplus Platform runtime debug console commands. SAFplus Platform Console commands can be used to manage, monitor, and test your application.&lt;br /&gt;
&lt;br /&gt;
All the above document are available in both Portable Document Format (PDF) as well as a set of cross-referenced, browsable HTML pages. They can be found under the &amp;lt;code&amp;gt;/doc&amp;lt;/code&amp;gt; subdirectory of the installed SDK (under the &amp;lt;code&amp;gt;/pdf&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;/html&amp;lt;/code&amp;gt; subdirectories, respectively). Please refer to the installation guide for further information.&lt;br /&gt;
&lt;br /&gt;
===OpenClovis Online Technical Support===&lt;br /&gt;
&lt;br /&gt;
OpenClovis customers and partners can register on our website and receive personalized services and information. If you need any support or assistance while working on OpenClovis products, you can access the following: URL: http://www.openclovis.com Send your queries to: support@openclovis.com. Open source community support is available at: &lt;br /&gt;
http://www.openclovis.org/forum&lt;br /&gt;
&lt;br /&gt;
===Documentation Feedback===&lt;br /&gt;
&lt;br /&gt;
We are interested in hearing from our customers on the documentation provided with the product. Let us know your comments and suggestions on improving the documentation at OpenClovis Inc. Send your comments to: &lt;br /&gt;
support@openclovis.com  Post your feedback on documentation at: http://www.openclovis.org/forum&lt;/div&gt;</summary>
		<author><name>MediaWiki spam cleanup</name></author>	</entry>

	<entry>
		<id>https://help.openclovis.com/index.php/Doc:latest/sdkguide/cominfrastructure</id>
		<title>Doc:latest/sdkguide/cominfrastructure</title>
		<link rel="alternate" type="text/html" href="https://help.openclovis.com/index.php/Doc:latest/sdkguide/cominfrastructure"/>
				<updated>2012-02-21T03:48:20Z</updated>
		
		<summary type="html">&lt;p&gt;MediaWiki spam cleanup: Reverting to last revision not containing links to www.buyxanaxonlinepill.com&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=='''Communication Infrastructure'''==&lt;br /&gt;
&lt;br /&gt;
Intracluster Communications is a critical element in any tightly coupled distributed system, and is very different from standard TCP client/server communications paradigms.  OpenClovis provides several communications facilities that are used by the SAFplus Platform framework and that should be used by customer software.  OpenClovis provides an abstraction for simple low-latency LAN based direct message passing called IOC, and provides an implementation of the same over TIPC - the standard Linux inter-cluster low-latency communications mechanism.  All OpenClovis services use IOC to communicate with peers except for GMS (Group management) which uses IP multicast.  Therefore, a customer can port the entire SAFplus Platform to another messaging system simply by implementing the IOC interfaces.&lt;br /&gt;
&lt;br /&gt;
These communications services are available on every SAFplus Platform node and are automatically integrated into EO-inized applications.  They allow any component to directly communicate with any other component running on any node and allow components to be identified (addressed) either by location or by an arbitrary name (location transparent addressing).  These &amp;quot;arbitrary names&amp;quot; can be move from component to component as need or failures dictate.  The communications system also automatically provides component and node failure notifications via a heartbeat mechanism.&lt;br /&gt;
&lt;br /&gt;
Higher level communications abstractions and tools such as events, remote procedure calls, and endian translation are also supported.&lt;br /&gt;
&lt;br /&gt;
Components of Communication Infrastructure:&lt;br /&gt;
* [[#Event Service | Event Service]]&lt;br /&gt;
: Publish/Subscribe multipoint communications model.&lt;br /&gt;
* [[#Intelligent Object Communication (IOC)| IOC]]&lt;br /&gt;
: Low level messaging abstraction layer&lt;br /&gt;
* [[#Name Service | Name Service]]&lt;br /&gt;
: Identify nodes via names instead of physical addresses. Names can be transferred between nodes to implement failover.&lt;br /&gt;
* [[#Remote Method Dispatch (RMD)| Remote Method Dispatch (RMD)]]&lt;br /&gt;
: Call functions on other nodes&lt;br /&gt;
* [[#Interface Definition Language (IDL) | Interface Definition Language (IDL)]]&lt;br /&gt;
: Abstract definition language that can be used in mixed-endian environments to allow data do be automatically swapped.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id='FigCommunicationInfrastructure'&amp;gt;&amp;lt;/span&amp;gt;[[File:SDK_ComInfrastructure2.png|center|frame|'''Communication Infrastructure''']]&lt;br /&gt;
&lt;br /&gt;
===Event Service===&lt;br /&gt;
&lt;br /&gt;
====Overview====&lt;br /&gt;
&lt;br /&gt;
The Event Service is a publish/subscribe multipoint-to-multipoint communication mechanism that is based on the concept of event channels, where a publisher communicates asynchronously via with one or more subscribers over a channel. The publishers and subscribers are unaware of each others existence.&lt;br /&gt;
&lt;br /&gt;
====Terms, Definitions====&lt;br /&gt;
&lt;br /&gt;
* '''Event''': Any data that needs to be communicated to interested parties in a system is called an event.  This data typically describes an action that was taken or a problem that was detected.&lt;br /&gt;
* '''Subscribers''': Entities interested in listening to an event&lt;br /&gt;
* '''Publishers''': Entities that generate the event. An entity can be both a publisher and a subscriber&lt;br /&gt;
* '''Event Channel''': A global or local communication channel that allows communication between publishers and subscribers.  By sending events in channels, all events do not need to go to all Subscribers.&lt;br /&gt;
* '''Event Data''': Zero or more bytes of payload associated with an event&lt;br /&gt;
* '''Event Attributes''': The publisher can associate a set of attributes with the each event such as the event pattern, publisher name, publish time, retention time, priority, etc.&lt;br /&gt;
* '''Event Pattern''': The attribute which describes type of an event and categorizes it. This is used for filtering events.&lt;br /&gt;
* '''Event Filter''': The subscribers use filters based on the patterns exposed by the publisher to choose the events of interest, ignoring the rest.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====Features====&lt;br /&gt;
&lt;br /&gt;
* SAF compliant implementation&lt;br /&gt;
* The publisher and the subscriber can be:&lt;br /&gt;
** In the same process address space&lt;br /&gt;
** Distributed across multiple processes on the same CPU/board&lt;br /&gt;
** Distributed across multiple processes on various CPU/boards&lt;br /&gt;
* Event Channels can be local or global&lt;br /&gt;
** Local channels for SAFplus Platform node internal events&lt;br /&gt;
** Global channels for SAFplus Platform cluster wide events&lt;br /&gt;
* Multiple subscribers and publishers can open the same channel&lt;br /&gt;
* Events are delivered in strict order of generation&lt;br /&gt;
* Guaranteed delivery&lt;br /&gt;
* At most once delivery&lt;br /&gt;
* Events can have &lt;br /&gt;
** Any payload associated with them&lt;br /&gt;
** Pattern defining the type of the event&lt;br /&gt;
** A specified priority&lt;br /&gt;
** A retention time for which the event is to be held before discarding&lt;br /&gt;
* Events published on a channel can be subscribed to, based on a filter that matches the event pattern&lt;br /&gt;
* Debug support by monitoring and logging&lt;br /&gt;
** Controlled at run time&lt;br /&gt;
&lt;br /&gt;
====Architecture====&lt;br /&gt;
&amp;lt;span id='Event Service Architecture'&amp;gt;&amp;lt;/span&amp;gt;[[File:SDK_EMArchitecture.png|center|frame|'''Event Service Architecture''']]&lt;br /&gt;
&lt;br /&gt;
The Event Service is based on RMD and IOC.  It involves the communication between publishers and subscribers without requiring either side to explicitly &amp;quot;identify&amp;quot; the other side.    That is, the publisher does not need to know who the subscribers are and vice versa.  This is accomplished via an abstraction called an event channel.  All events published to a channel go to all subscribers of the channel.  To handle node specific events efficiently, a channel is categorized as local and global. The local channel is limited to a single node while a global channel spans across the nodes in the cluster.  This feature is an extension to the SA Forum (SAF) event system where there is no such distinction and all channels are inherently global. An event published on a global channel requires a network broadcast while a local event does not use the network and is therefore very efficient.&lt;br /&gt;
&lt;br /&gt;
====Flow====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id='Event Service Flow'&amp;gt;&amp;lt;/span&amp;gt;[[File:SDK_EMFlow.png|center|frame|'''Event Service Flow''']]&lt;br /&gt;
&lt;br /&gt;
To use the Event Service an understanding has to be established between the publisher and the subscriber. The type of the payload that shall be exchanged should be known to both and also if any pattern is used by the publisher it has to be made known to the subscriber.&lt;br /&gt;
&lt;br /&gt;
Both the subscriber and publisher are required to do a Event Client Library initialize to use the Event Service. Both then open the channel, subscriber with the subscriber flag and publisher with publish flag. To both publish and subscribe to a channel, set both flags. This means that the subscriber and publisher can be the same entity.  However, for the purposes of clarity in this description the logical separation of &amp;quot;subscriber&amp;quot; and &amp;quot;publisher&amp;quot; will be maintained.  &lt;br /&gt;
&lt;br /&gt;
The subscriber than subscribes to a particular event using a filter that will match specific event patterns that interests that subscriber. The publisher on the other hand will allocate an event and set it's attributes. It optionally sets the pattern to categorize the event. This pattern is matched against the filter supplied by the subscriber. The publisher then publishes the event on the channel. If channel is global the event is sent to all the event servers on the cluster who in turn deliver the event to any subscribers on that node. If the channel is local the event is delivered to the subscribers who have subscribed to this event locally. The event is delivered only to those subscribers which have an appropriate filter.&lt;br /&gt;
&lt;br /&gt;
For further details on the usage of Event Service kindly refer to the OpenClovis API Reference Guide.&lt;br /&gt;
&lt;br /&gt;
===Transparent Inter Process Communication (TIPC)===&lt;br /&gt;
TIPC provides a good communication infrastructure for a distributed, location transparent, highly available applications. TIPC is a Linux kernel module; it is a part of the standard Linux kernel and is shipped with most of standard distributions of Linux. It supports both reliable and unreliable modes of communications, reliable being desired by most applications (even if the hardware is reliable, buffering issues can make the program-to-program communications unreliable). Since TIPC is a Linux kernel module and works directly over the Ethernet, any communication that uses TIPC will be very fast compared to other protocols. The TIPC kernel module provides a few important features like topology service, signaling link protocol, location transparent addressing. This section describes only the features of TIPC as used by SAFplus Platform, although SAFplus Platform programs are welcome to access the TIPC APIs directly to use other features.  For more details please refer to the tipc project located at http://tipc.sourceforge.net.&lt;br /&gt;
&lt;br /&gt;
From TIPC view point the network is organized into a 5-layer structure.&lt;br /&gt;
&lt;br /&gt;
* TIPC Network : This is the ensemble of all the computers interconnected via TIPC. This is a domain within which any computer can reach any other computer using the TIPC address.&lt;br /&gt;
* TIPC Zone : This is group of clusters is a zone.&lt;br /&gt;
* TIPC Cluster : A group of computers is called a cluster.&lt;br /&gt;
* TIPC Node : A node is a computer.&lt;br /&gt;
* TIPC Slave Node : It is same as a node, but will communicate with only one node in a cluster. This is unlike normal nodes which are connected to all the nodes in the cluster.&lt;br /&gt;
&lt;br /&gt;
TIPC does not use &amp;quot;normal&amp;quot; ethernet MAC addresses or IP addresses.  Instead it uses a &amp;quot;TIPC address&amp;quot; that is formed from these fields.  In general, this complexity is hidden from the SAFplus Platform programmer since addresses are automatically assigned.&lt;br /&gt;
&lt;br /&gt;
====TIPC features====&lt;br /&gt;
The list below describes some features of TIPC:&lt;br /&gt;
* Broadcast.&lt;br /&gt;
* Location Transparent Addressing.&lt;br /&gt;
* Topology Service.&lt;br /&gt;
* Link Level Protocol.&lt;br /&gt;
* Automatic Neighbor Detection.&lt;br /&gt;
&lt;br /&gt;
====Broadcast====&lt;br /&gt;
TIPC supports unicast, multicast and broadcast modes of sending a packet. Depending on the intended mode the TIPC address has to be specified. The format of the address looks like (type, lower instance and upper instance).&lt;br /&gt;
* type : This is the port number of a component to which the packet is to be sent to.&lt;br /&gt;
* lower instance : This is the lowest address of the nodes to which the packet should go to.&lt;br /&gt;
* upper instance : It is the highest address of the nodes to which the packet should go to.&lt;br /&gt;
The lower instance and upper instance together form the range of address. If these 2 are same then the packet will be unicasted to that destination node. And if the the range covers all the nodes of a system then it is a broadcast packet and will be sent to all the nodes node in the system.&lt;br /&gt;
&lt;br /&gt;
====Location Transparent Addressing====&lt;br /&gt;
An application can be contacted without having the knowledge of its exact location. This is possible through Location Transparent Addressing. A highly available application in a system while providing service to many of its clients might suddenly go down due to this some kind of failure in the system. And the same application can come up on another node/machine with the same Location transparent address. This way the clients can still reach the server with the same address, which they used to contact previously.&lt;br /&gt;
&lt;br /&gt;
====Topology Service====&lt;br /&gt;
TIPC provides a mechanism of inquiring or subscribing for the availability of a address or range of addresses.&lt;br /&gt;
&lt;br /&gt;
===Intelligent Object Communication (IOC)===&lt;br /&gt;
&lt;br /&gt;
The Intelligent-Object-Communication(IOC) module of SAFplus Platform provides the basic communication infrastructure for an SAFplus Platform enabled system. The IOC is a compatibility layer on top of TIPC that will allow customers to port SAFplus Platform to other architectures.  Therefore, all SAFplus Platform components use the IOC APIs rather than TIPC APIs.  IOC exposes only the most essential TIPC features to make porting simpler.  IOC also abstracts and simplifies some of the legwork required to connect a node into the TIPC network. Customers are encouraged to use the IOC layer (or higher lever abstractions like event and RMD) to ensure portability in their applications, or may use TIPC directly.&lt;br /&gt;
&lt;br /&gt;
====IOC Architecture====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id='IOC Architecture'&amp;gt;&amp;lt;/span&amp;gt;[[File:SDK_IOCArchitecture.png|center|frame|'''IOC Architecture''']]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====IOC Features====&lt;br /&gt;
&lt;br /&gt;
* Reliable and Unreliable mode of communication.&lt;br /&gt;
* Broadcasting of messages.&lt;br /&gt;
* Multicasting of messages.&lt;br /&gt;
* Transparent/Logical Address to a component.&lt;br /&gt;
* An SAFplus Platform node arrival/departure notification.&lt;br /&gt;
* The arrival/departure notification of a component.&lt;br /&gt;
&lt;br /&gt;
=====Reliable and Unreliable mode of communication=====&lt;br /&gt;
The IOC with the help of TIPC allows the applications to create a reliable or an unreliable communication port. All the communication ports are connectionless ports. This helps to achieve a high speed data transfer.  Reliable communications are highly recommended and is the default used by OpenClovis SAFplus Platform.  It should be used even within an environment with extremely low message loss at the hardware level (such as an ATCA chassis) because message loss may also occur in the linux kernel or network switch due to transient spikes in bandwidth utilization.&lt;br /&gt;
&lt;br /&gt;
=====Broadcasting of messages=====&lt;br /&gt;
IOC supports the broadcasting of messages, qualified by destination port number. This means that a broadcast message sent from a component will reach all components on all nodes in the cluster that are listening to the communications port specified in the destination-address field of the message.&lt;br /&gt;
&lt;br /&gt;
=====Multicasting of messages=====&lt;br /&gt;
Multicasting is sending of a message to only a group of components. Any component may join the group by registering itself with IOC for a specific multicast address. Thereafter any message sent to that multicast address will reach all the registered components in the cluster.&lt;br /&gt;
&lt;br /&gt;
=====Location Transparent/Logical Address to a component=====&lt;br /&gt;
Transparent addressing support of IOC makes communication possible for an SAFplus Platform component with another another SAFplus Platform component without knowing the second one's physical address. Location Transparent addressing is commonly used in the case of redundant components that provide a single service.  If the service uses a Location Transparent address, clients do not need to discover what component is currently providing the service; a client simply addresses a message to the Location Transparent Address, and that message is automatically sent to the component that is currently &amp;quot;active&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
On the server side, it is the responsibility of the &amp;quot;active&amp;quot; component of the redundant pair to &amp;quot;register&amp;quot; with IOC for all messages sent to the Location Transparent Address.&lt;br /&gt;
&lt;br /&gt;
=====SAFplus Platform node arrival/departure Notification=====&lt;br /&gt;
In a cluster having many SAFplus Platform nodes in a system, some SAFplus Platform components might be interested in knowing when a node in the cluster arrives and when one leaves. This feature of IOC informs such an event to all the interested SAFplus Platform components in the whole SAFplus Platform system.  Components may use either a query or a callback based interface.&lt;br /&gt;
&lt;br /&gt;
=====The arrival/departure notification of a component=====&lt;br /&gt;
This feature of IOC helps the components which are interested in other components' health status. The IOC with the help of TIPC will come to know about every SAFplus Platform components health in a system and it conveys this to all the interested SAFplus Platform components though a query or callback interface.  Component arrival and departure is actually measured by when the component creates or removes its connection to TIPC, as opposed to when the process is created or deleted.  The OpenClovis EO infrastructure always creates a default connection upon successful initialization, so this measurement is actually more accurate than process monitoring.  A thread is automatically created in each process as part of the EO infrastructure to monitor all other components health status and to handle SAFplus Platform communications.&lt;br /&gt;
&lt;br /&gt;
===Interface Bonding===&lt;br /&gt;
&lt;br /&gt;
Any fully redundant solution requires physical redundancy of network links as well as node redundancy.  This link-level redundancy is particularly important between application peers (i.e. between nodes in the cluster) because if peer communications fail at the ethernet level than it is not possible to distinguish certain link failure modes from node failure modes.  In these cases each peer will assume that the other has failed, leading to a situation where all nodes assume the &amp;quot;active&amp;quot; role.  In the worst case, each &amp;quot;active&amp;quot; node will service requests and so the state on each node will diverge (in practice the nodes tend to interfere with eachother, by both claiming the same IP address for example, resulting in loss of service).  When the link failure is resolved, one of the 2 nodes will revert back to &amp;quot;standby&amp;quot; status, losing all state changes on that node.  The solution to this &amp;quot;catastrophic&amp;quot; failure mode is simply to have link redundancy so that no single failure will cause the system to enter this state.&lt;br /&gt;
&lt;br /&gt;
The simplest link redundancy solution can be implemented at the operating system layer and is called &amp;quot;interface bonding&amp;quot;.  In essence 2 &amp;quot;real&amp;quot; interfaces, say &amp;quot;eth0&amp;quot; and &amp;quot;eth1&amp;quot; are combined to form a single &amp;quot;virtual&amp;quot; interface called &amp;quot;bondN&amp;quot; (or &amp;quot;bond0&amp;quot; in this case) that behaves from the applications' perspective like a single physical interface.  Policies can be chosen as to how to distribute or route network traffic between these 2 interfaces.&lt;br /&gt;
&lt;br /&gt;
The OpenClovis SAFplus Platform can be configured to use a &amp;quot;bonded&amp;quot; interface for its communications in the exact same way as it is configured to use a different &amp;quot;real&amp;quot; interface (see the IDE user guide or XML configuration file formats for more information).  Customers may want to configure their &amp;quot;bonded&amp;quot; interface in different ways based on their particular solution.  Details describing how to enable bonding in operating system and OS distribution specific and is therefore beyond the scope of this document and the OpenClovis SAFplus Platform software.  However a bonding configuration that is considered the &amp;quot;best practice&amp;quot; for use with OpenClovis SAFplus Platform is described in the following sections.&lt;br /&gt;
&lt;br /&gt;
====Configuring the bonding====&lt;br /&gt;
The Interface Bonding is a Linux kernel module. To work with this the kernel should have been compiled with the &amp;quot;Bonding driver support&amp;quot; (for major distributions, this flag is often on by default). For more details on how to install bonding driver module into the kernel please refer to the &amp;quot;bonding.txt&amp;quot; in Linux Documentation's &amp;quot;networking&amp;quot; section.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ol&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; Loading the kernel module&lt;br /&gt;
The following two lines are needed to be added to /etc/modprobe.conf or /etc/modules.conf&lt;br /&gt;
&lt;br /&gt;
    alias bond0 bonding&lt;br /&gt;
    options bond0 mode=active-backup arp_interval=100 \&lt;br /&gt;
                  arp_ip_target=192.168.0.1 max_bonds=1&lt;br /&gt;
&lt;br /&gt;
* mode : Specifies one of the bonding policies.&lt;br /&gt;
**active-backup : Only one slave in the bond is active. A different slave becomes active if, and only if, the active slave fails. The bond's MAC address is externally visible on only one port (network adapter) to avoid confusing the switch.  This mode provides fault tolerance.&lt;br /&gt;
* arp_interval : Specifies the ARP monitoring frequency in milli-seconds.&lt;br /&gt;
* arp_ip_target : Specifies the ip addresses to use when arp_interval is &amp;gt; 0. These are the targets of the ARP request sent to determine the health of the link to the targets. Specify these values in ddd.ddd.ddd.ddd format. Multiple ip addresses must be separated by a comma. At least one ip address needs to be given for ARP monitoring to work. The maximum number of targets that can be specified is set at 16.&lt;br /&gt;
* max_bonds : Specifies the number of bonding devices to create for this instance of the bonding driver.  E.g., if max_bonds is 3, and the bonding driver is not already loaded, then bond0, bond1 and bond2 will be created.  The default value is 1.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt; Use the standard distribution techniques to define the network interfaces. For example, on Red Hat distribution create an ifcfg-bond0 file in /etc/sysconfig/network-scripts directory that resembles the following :&lt;br /&gt;
&lt;br /&gt;
    DEVICE=bond0&lt;br /&gt;
    ONBOOT=yes&lt;br /&gt;
    BOOTPROTO=dhcp&lt;br /&gt;
    TYPE=Bonding&lt;br /&gt;
    USERCTL=no&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt; All interfaces that are part of a bond should have SLAVE and MASTER definitions. For example, in the case of Red Hat, if you wish to make eth0 and eth1 a part of the bonding interface bond0, their config files (ifcfg-eth0 and ifcfg-eth1) should resemble the following:&lt;br /&gt;
&lt;br /&gt;
    DEVICE=eth0&lt;br /&gt;
    USERCTL=no&lt;br /&gt;
    ONBOOT=yes&lt;br /&gt;
    MASTER=bond0&lt;br /&gt;
    SLAVE=yes&lt;br /&gt;
    BOOTPROTO=none&lt;br /&gt;
&lt;br /&gt;
Use DEVICE=eth1 in the ifcfg-eth1 config file. If you configure a second bonding interface (bond1), use MASTER=bond1 in the config file to make the&lt;br /&gt;
network interface be a slave of bond1.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt; Restart the networking subsystem or just bring up the bonding device if your administration tools allow it. Otherwise, reboot. On Red Hat distros you can issue 'ifup bond0' or '/etc/rc.d/init.d/network restart'.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt; The last step is to configure your model to use bonding.  This can be done in the IDE through the &amp;quot;SAFplus Platform Component Configuration.Boot Configuration.Group Membership Service.Link Name&amp;quot; field.  This default can also be overridden on a per-node basis through the &amp;quot;target.conf&amp;quot; file, LINK_&amp;lt;nodename&amp;gt; variable.&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Name Service===&lt;br /&gt;
====Overview====&lt;br /&gt;
Naming Service is mechanism that allows an object to be referred by its &amp;quot;friendly&amp;quot; name rather than its &amp;quot;object(service) reference&amp;quot;. The &amp;quot;object reference&amp;quot; can be logical address, resource id, etc. and as far as Name Service is concerned, &amp;quot;object reference&amp;quot; is opaque. In other words, Naming service (NS) returns the logical address given the &amp;quot;friendly&amp;quot; name. Hence, Name Service  helps in providing location transparency.This &amp;quot;friendly&amp;quot; name is topology and location agnostic.&lt;br /&gt;
&lt;br /&gt;
====Basic concept====&lt;br /&gt;
&lt;br /&gt;
The name service maintains a mapping between objects and the object reference (logical address) associated with the object. Each object consists of an object name, an object type, and other object attributes.  The object names are typically strings and are only meaningful when considered along with the object type. Examples of object names are &amp;quot;print service&amp;quot;, &amp;quot;file service&amp;quot;, &amp;quot;user@hostname&amp;quot;, &amp;quot;function abc&amp;quot;, etc.  Examples of object types include services, nodes or any other user defined type. The object may have a number of attributes (limited by a configurable maximum number) attached to it.  An object attribute is itself a &amp;lt;attribute type, attribute value&amp;gt; pair, each of which is a string. Examples of object attributes are, &amp;lt;&amp;quot;version&amp;quot;, &amp;quot;2.5&amp;quot;&amp;gt;, &amp;lt;&amp;quot;status&amp;quot;, &amp;quot;active&amp;quot;&amp;gt; etc.&lt;br /&gt;
&lt;br /&gt;
The name service API provides methods to register/deregister object names, types, attributes and associated addresses.  A process may register multiple services with the same address or multiple processes may register the same service name and attributes. Some object names, attributes and addresses may also be 'statically' defined at start time.  It is the responsibility of the process that registers an object to remove it when the object is no longer valid. However in the case where a process undergoes an abnormal termination, the name service will automatically remove associated entries.  &lt;br /&gt;
&lt;br /&gt;
The name service provides the ability to query the name database in various ways.  Clients may query the name service to obtain the address and attributes of a object by giving the object name and type.  &amp;quot;Content-addressable&amp;quot; access is also provided.  In other words, clients may give attributes and ask for object names that satisfy those attributes.&lt;br /&gt;
&lt;br /&gt;
====Features====&lt;br /&gt;
* The name service maps &amp;quot;service names&amp;quot; to attributes, including addresses&lt;br /&gt;
* Service Providers register their &amp;quot;service name&amp;quot;, &amp;quot;address&amp;quot; and attributes with the Name Service&lt;br /&gt;
* Service Users query the Name Service to get information about a service&lt;br /&gt;
* Service users can communicate with service providers without knowing their logical address or physical location&lt;br /&gt;
* Multiple service providers can register the same name. The name service maintains a reference count for each &amp;quot;name&amp;quot; registered&lt;br /&gt;
* The name service subscribes to component failure notification from AMF. If a component dies, the reference count for the services it has registered is decremented.&lt;br /&gt;
* Supports context based naming to allow partitioning of the name space&lt;br /&gt;
** Local name spaces are local to the Name Server on a SAFplus Platform node&lt;br /&gt;
** Global Name Spaces are global to the SAFplus Platform cluster&lt;br /&gt;
** Name spaces are dynamically created at run time&lt;br /&gt;
* Supports three type of queries&lt;br /&gt;
** Query based on &amp;quot;Service Name&amp;quot;: Given a service name returns the address and service attributes&lt;br /&gt;
** Query based on &amp;quot;Service attributes&amp;quot;: Given service attributes, returns the Service Name and address&lt;br /&gt;
** Query based on &amp;quot;name space context&amp;quot;: Given a name space context, returns all names in that space&lt;br /&gt;
&lt;br /&gt;
====Subcomponents====&lt;br /&gt;
&lt;br /&gt;
Based on the responsibilities, the Name Service component can be further subdivided into following modules&lt;br /&gt;
&lt;br /&gt;
* '''Core Module'''&lt;br /&gt;
:Responsible for supporting the creation and deletion of user defined contexts and processing the requests for registration, deregistration. Also responsible for supporting the various NS related queries&lt;br /&gt;
&lt;br /&gt;
* '''Life cycle Management Module'''&lt;br /&gt;
:Responsible for initialization, finalization, restart and other management functionalities&lt;br /&gt;
&lt;br /&gt;
* '''Syncup Manager Module'''&lt;br /&gt;
:Responsible for NS DB synchronization and backing up of DB in persistent memory&lt;br /&gt;
&lt;br /&gt;
====Contexts and Scopes====&lt;br /&gt;
The name service supports different sets of name-to-object reference mappings(also referred to as &amp;quot;context&amp;quot;).  A particular &amp;quot;name&amp;quot; is unique in the context.  A process will specify the context and the scope of its service during registration with the name service.&lt;br /&gt;
&lt;br /&gt;
'''Context'''&lt;br /&gt;
&lt;br /&gt;
* '''User-defined set'''&lt;br /&gt;
Applications may choose to be a part of a specific set (or context). For that, first a context has to be created. For example, all the SAFplus Platform related services can be a part of a separate context.&lt;br /&gt;
&lt;br /&gt;
* '''Default set'''&lt;br /&gt;
Name Service supports a default context for services that don't form a part of any specific context.&lt;br /&gt;
&lt;br /&gt;
'''Scope'''&lt;br /&gt;
&lt;br /&gt;
* '''Node-local scope'''&lt;br /&gt;
The scope is local to the node.  That is, the service provider and the user should co-exist on the same blade.&lt;br /&gt;
&lt;br /&gt;
* '''Global or cluster-wide scope'''&lt;br /&gt;
The service is available to any user on any of the blades.&lt;br /&gt;
&lt;br /&gt;
====Registration and Deregistration====&lt;br /&gt;
As the name suggests, during registration, an entry (i.e mapping between &amp;quot;name&amp;quot; and logical address) for the component is added into the name service database and during deregistration the entry is deleted.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
In a typical SAFplus Platform HA scenario, whenever a component comes up and ACTIVE HA state is assigned to it, it registers with the local name service giving a string name for the service, the logical address, context and scope (the application obtains the logical address by using CL_IOC_LOGICAL_ADDRESS_FORM). Next the entry is added to the local name service database. If the scope is cluster-wide, the local name service indirectly passes this information to the name service master. Based on the context, the name service master decides whether to store the entry in the default context or the given user defined context. The name service also stores the component identifier along with that entry so that the entry can be purged if the component dies.  &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Note that the Name Service does not care about the HA state assigned to the component.  On the one hand, this means that the component author must handle registration and deregistration when the service becomes active or standby.  On the other hand, this allows great flexibility since standby components can still register names.  The name service maintains reference count of instances providing a given service. Whenever a component registers with the name service, this reference count is incremented and whenever a component dies or deregisters, this reference count is decremented by the name service. If nobody is refering to a particular entry, then that entry will be deleted. Whenever a component goes down gracefully, it is the responsiblity of the component to delete the service which it registered.&lt;br /&gt;
&lt;br /&gt;
====Name Service entries====&lt;br /&gt;
The name service database contains the following entries Name to Logical Address mapping, CompId of the component hosting the service, Count of no. of instances for the given service, a set of user defined attributes - The attributes will be &amp;lt;attribute type, attribute value&amp;gt; pair, each of which is a string. Examples of object attributes are, &amp;lt;&amp;quot;version&amp;quot;, &amp;quot;2.5&amp;quot;&amp;gt;, &amp;lt;&amp;quot;status&amp;quot;, &amp;quot;active&amp;quot;&amp;gt; etc. The upper limit on no. of attributes is user configurable.&lt;br /&gt;
&lt;br /&gt;
====Querying Name Service====&lt;br /&gt;
Whenever a component wants to get the logical address of a service, it queries its local Name Server specifying the context. Context is needed because &amp;quot;name&amp;quot; is not unique across contexts i.e. Same &amp;quot;name&amp;quot; can map to different objects in different contexts. Local Name Server checks both the node-local and the cluster-wide entries.&lt;br /&gt;
The Name Service query is based on &amp;quot;Name&amp;quot;. If an application queries the local NS EO, and an entry is not found in local NS database (there is a chance that NS updation message did not reach the NS/L), the NS/L EO contacts the NS/M EO, which looks up its cluster-wide entries and gets the information. If the information is found, NS/L updates its local database as well.&lt;br /&gt;
&lt;br /&gt;
===Remote Method Dispatch (RMD)===&lt;br /&gt;
&lt;br /&gt;
====Overview====&lt;br /&gt;
&lt;br /&gt;
This service is generically known as RPC (Remote Procedure Calls).  In a system with a single address space, function calls made are local to the address space. However, in a distributed system, the services sought by a caller may not always be available locally, but at some remote node. Remote Method Dispatch or RMD facilitates calls to the remote callee and returns the results to the caller. From the point of view of the caller, and RMD call looks exactly like a local function call.  However, the function is actually executed on another node.  Details like what node provides the service, how to communicate with this node, and platform specifics like endianess is hidden from the caller.&lt;br /&gt;
&lt;br /&gt;
====Features====&lt;br /&gt;
&lt;br /&gt;
* Similar to RPC - Remote Procedure Call&lt;br /&gt;
* Enables you to make a function call in another process, irrespective of the location of the process&lt;br /&gt;
* Communication takes place over low latency IOC/TIPC layer&lt;br /&gt;
* Reliable communication (&amp;quot;at most once&amp;quot; semantics)&lt;br /&gt;
* Support both synchronous and asynchronous flavors&lt;br /&gt;
* IDL can be used to generate client/server stubs for user components (and is of course used internally for SAFplus Platform components)&lt;br /&gt;
* Platform agnostic - works across mixed endian and mixed mode (32 bit and 64 bit)&lt;br /&gt;
&lt;br /&gt;
====Types of RMD Calls====&lt;br /&gt;
&lt;br /&gt;
* Sync (with or without Response)&lt;br /&gt;
** This call will block until a response is received&lt;br /&gt;
** Reliable - function caller knows whether or not it succeeded when the call returns&lt;br /&gt;
* Async with Response&lt;br /&gt;
** This will initiate the function call and include a callback function to handle the response&lt;br /&gt;
** Reliable - function caller knows whether or not it succeeded via the callback&lt;br /&gt;
* Async without Response&lt;br /&gt;
** This sends NULL for callback function&lt;br /&gt;
** Not reliable&lt;br /&gt;
&lt;br /&gt;
====RMD Usage====&lt;br /&gt;
&lt;br /&gt;
From the caller's perspective, RMD usage is essentially a function call if IDL was used to generate the client/server stubs.  RMD functions can be defined, and code generated through the OpenClovis IDE; please refer to the ''OpenClovis IDE User's Guide'' chapter 'Defining IDL'&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Underneath the IDL are calls to the RMD API which are rarely used directly but described here for completeness.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Irrespective of the type of the call the RMD API will require at least the following parameters:&lt;br /&gt;
* IOC address (destination address and port)&lt;br /&gt;
* Input message  (Input arguments to the call)&lt;br /&gt;
* Output message (The returned arguments)&lt;br /&gt;
* flags&lt;br /&gt;
* RMD options &lt;br /&gt;
&lt;br /&gt;
Additionally, in case of async call, a callback function and a cookie (piece of context data that is not used by RMD, but passed back to the callback) need to be passed. &lt;br /&gt;
&lt;br /&gt;
As illustrated in the diagram below the address comprises of the node address and port on which the application/service provider is listening. The user is also required to specify the service he wants executed via a RMD number which comprises of the Client ID and Service ID. The former helps identify which client service is sought - this could be the native table which consists of the services exposed by the application or any other client table installed by the libraries to which the application is linked. The service number is the index of the service that is desired.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id='RMD Addressing'&amp;gt;&amp;lt;/span&amp;gt;[[File:SDK_RMDAddressing.png|center|frame|'''RMD Addressing''']]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
For further details on the RMD usage kindly refer ''OpenClovis API Reference Guide''.&lt;br /&gt;
&lt;br /&gt;
====RMD IDL====&lt;br /&gt;
&lt;br /&gt;
RMD is typically used via IDL so that the user is saved from the idiosyncrasies of the underlying architectures and such.&lt;br /&gt;
&lt;br /&gt;
* RMD IDL simplifies building of RMDs&lt;br /&gt;
** Generates server and client stubs&lt;br /&gt;
** Stubs do marshalling and un-marshalling of arguments making them platform agnostic&lt;br /&gt;
** Select appropriate semantics&lt;br /&gt;
** Takes care of endianness and mixed mode issues&lt;br /&gt;
** Uses XDR (see internet RFC1014) notation&lt;br /&gt;
* OpenClovis/IDE enables the generation of RMDs and linking them to a client EO&lt;br /&gt;
* Any function installed in an EO client can be called remotely&lt;br /&gt;
&lt;br /&gt;
====RMD/EO Interface====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id='EO Execution Interface'&amp;gt;&amp;lt;/span&amp;gt;[[File:SDK_RMD_EO_70.png|center|frame|'''EO Execution Interface''']]&lt;br /&gt;
&lt;br /&gt;
RMD and EO are tightly knit as can be observed in the illustration above. The service provider or server exposes a certain set of services by installing it in the EO. The client application interested in the service makes a RMD call to the server with the desired arguments. The node address specifies the node on which the server resides and the port identifies the server process. The RMD number specifies the service that needs to be executed of a particular client residing on the server. This request is sent across over TIPC/IOC layer to the server. The receiver thread of the server picks up this request and queues the same into the EO job queue and wakes up one of the worker threads to process the request. The worker thread checks the service requested and processes the request in the context of the server. The client is totally unaware where the service is processed. It could be in the same process address space, on a process on the same node or a process on a remote node.&lt;br /&gt;
&lt;br /&gt;
Please refer the Componentization section of this document for a better understanding.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Interface Definition Language (IDL)===&lt;br /&gt;
&lt;br /&gt;
The OpenClovis Interface Definition Language (IDL) is a library used by all EOs to communicate efficiently across nodes. Using IDL, OpenClovis SAFplus Platform services can communicates across mixed endian machines and mixed mode (32-bit and 64-bit architecture) setup. This it accomplishes by providing marshalling and unmarshalling functions for the various types of  arguments. Thus IDL in combination with RMD is used to provide a simple and efficient means of communication across EOs.&lt;br /&gt;
&lt;br /&gt;
====IDL Usage====&lt;br /&gt;
&lt;br /&gt;
The IDL generation is done through a script that takes 2 arguments: &lt;br /&gt;
* the xml file which provides a definition of the user's EO and relevant data structures&lt;br /&gt;
* a directory in which to generate the code&lt;br /&gt;
&lt;br /&gt;
It then generates client and server side code for the xml definition into the specified directory. The user then issues a top level build whereafter the server &amp;amp; client side libraries are generated. The user should link with the client side libraries and include the client and xdr headers in his code to make client calls. On the server side, the user is expected to provide actual function definitions corresponding to the service definitions present in the xml file. He is also expected to install the server stubs before using &amp;amp; uninstall them during termination using the install/uninstall functions provided on a per EO basis.&lt;br /&gt;
&lt;br /&gt;
Code is generated as follows:&lt;br /&gt;
* Top level makefile that recursively descends into client &amp;amp; server&lt;br /&gt;
* The directory xdr in which, a .c &amp;amp; .h is generated for every custom defined data structure in the xml.&lt;br /&gt;
For every struture,corresponding marshal.c and unmarshall.c files will be generated.&lt;br /&gt;
* client - a .c &amp;amp; .h is generated in this directory. They contain the definition and declaration respectively of the sync client, async client and the async callback for each EO service defined in the xml. It also contains a makefile that generates a library out of the files in this directory and the xdr directory.&lt;br /&gt;
* server - a .c &amp;amp; .h is generated in this directory. They contain the definition and declaration respectively of the server stub and the server function for each EO service defined in the xml. It also contains a makefile that generates a library out of the files in this directory and the xdr directory.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The generated code inside the target directory looks like the following:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id='Directory Structure of generated files'&amp;gt;&amp;lt;/span&amp;gt;[[File:SDK_IDL_DirectoryStructure_80.png|center|frame|'''Directory Structure of Generated Code''']]&lt;br /&gt;
&lt;br /&gt;
IDL translates the user's data structures passed through a function call to a message and vice versa. Therefore it requires the user to specify the function signatures. This is currently being done through xml. The user defines the EO through the xml along with the relevant data structures. The following section describes the xml definition in detail.&lt;br /&gt;
&lt;br /&gt;
====IDL Specification====&lt;br /&gt;
&lt;br /&gt;
The IDL script expects the EO interface definition from the user in XML format. &lt;br /&gt;
&lt;br /&gt;
=====User-Defined Types=====&lt;br /&gt;
The IDL uses XDR representation to store application data internally while transferring it to another EO. Therefore, IDL requires the application to specify the data structures that will be transferred through RMD so that it can generate XDR functions required to marshal/un-marshal these data structures. Marshalling is the process of converting the native data to XDR format and un-marshalling is retrieving the data back to native format. There can be three user-defined types: structures, unions and enumerations. These are explained below.&lt;br /&gt;
&lt;br /&gt;
======Enumerations======&lt;br /&gt;
Enumerations are like enums in C and are defined likewise.&lt;br /&gt;
&lt;br /&gt;
======Structures======&lt;br /&gt;
These are like structures in C. Therefore, every structure defined is composed of data members. There is a restriction that structures within the structures are not allowed to be defined. However, this restriction can be overcome by defining the two structures separately and embedding one inside another as a data member. Data members have the following attributes:&lt;br /&gt;
&lt;br /&gt;
'''name'''&lt;br /&gt;
This is the name of the data member and it is referred to within the structure by this name.&lt;br /&gt;
&lt;br /&gt;
'''type'''&lt;br /&gt;
This can be one of the pre-defined Clovis data types or a user-defined type. It is the user's&lt;br /&gt;
responsibility to make sure that there are no circular inclusions. Circular inclusions happen when two or more UDTs include each other in their respective definitions in such a way that it creates a cyclic dependency amongst all the involved UDTs. The supported pre-defined Clovis data types are ClInt8T, ClUint8T, ClInt16T, ClUint16T, ClInt64T, ClUint64T, ClInt32T , ClUint32T.&lt;br /&gt;
ClNameT and ClVersionT.&lt;br /&gt;
&lt;br /&gt;
======pointer======&lt;br /&gt;
This is an optional attribute. When this is enabled, it means that the data member is a pointer to the type specified. We cannot specify more than one level of indirection since it is necessary to specify the number of elements being pointed to for every level of indirection.&lt;br /&gt;
&lt;br /&gt;
======lengthVar======&lt;br /&gt;
This attribute should be specified only if the data member is a pointer type, which means that the pointer attribute is set to true. This attribute specifies which data member in the structure will contain the number of elements being pointed to. It is an optional attribute. When no such attribute is specified for a pointer type data member, it is assumed that a single element is being pointed to.&lt;br /&gt;
&lt;br /&gt;
======multiplicity======&lt;br /&gt;
This attribute is used to specify an array type of data member. The number of elements is specified through this attribute. This attribute must not be specified along with the pointer attribute. This is an optional attribute.&lt;br /&gt;
&lt;br /&gt;
======Unions======&lt;br /&gt;
These are defined similar to structures. The difference is in terms of the interpretation and generation.&lt;br /&gt;
&lt;br /&gt;
=====EO Interface=====&lt;br /&gt;
&lt;br /&gt;
The EO has multiple tables called Clients into which the exported interface functions are installed. The user has to specify which functions are installed in which tables and then give a declaration of the functions themselves. Thus, an EO interface definition consists of one or more clients:&lt;br /&gt;
&lt;br /&gt;
======Client======&lt;br /&gt;
A client has a Client-Id, which must either be a number or a constant. A client has multiple functions called Services. A Service has a name and zero or more Arguments. The Arguments to a Service are defined as follows:&lt;br /&gt;
&lt;br /&gt;
'''Handle'''&lt;br /&gt;
The handle is the first parameter to be passed to a call on the client side or the server side. It is initialized with the address of the destination EO, and parameters like timeout, retries and priority on the call. For more details on handles, please refer to the SISP API Reference Manual.&lt;br /&gt;
&lt;br /&gt;
'''Argument'''&lt;br /&gt;
An argument is similar to a data member, except for the following differences:&lt;br /&gt;
* It does not have a multiplicity&lt;br /&gt;
* It has an additional attribute where the user specifies if the argument is of type:&lt;br /&gt;
** [CL_IN]: argument is an input to the function.&lt;br /&gt;
** [C_inout]: argument is an input to the function and the function is expected to fill        it up and pass it back to the caller.&lt;br /&gt;
** [out]: the function is expected to fill the argument and pass it back to the            caller.&lt;br /&gt;
Since an inout or an out type of argument is supposed to be passed back to the user, it must always have the pointer attribute set to true.&lt;br /&gt;
&lt;br /&gt;
====XDR marshalling and unmarshalling====&lt;br /&gt;
&lt;br /&gt;
The IDL uses XDR to store data into a message. This is called marshalling of data. The reverse process i.e. Of retrieving data from the message into the native format is called unmarshalling of data. XDR stands for eXternal Data Representation Standard (described in RFC 1832). It is a means of storing data in a machine independent format. We will look at relevant sections of XDR in this section.&lt;br /&gt;
&lt;br /&gt;
Data structures:&lt;br /&gt;
IDL recognizes the following data structures:&lt;br /&gt;
* ClInt8T&lt;br /&gt;
* ClUint8T&lt;br /&gt;
* ClInt16T&lt;br /&gt;
* ClUint16T&lt;br /&gt;
* ClInt32T&lt;br /&gt;
* ClUint32T&lt;br /&gt;
* ClInt64T&lt;br /&gt;
* ClUint64T&lt;br /&gt;
* ClNameT&lt;br /&gt;
* ClVersionT&lt;br /&gt;
* struct formed from other data structures&lt;br /&gt;
* union formed from other data structures&lt;br /&gt;
* enum&lt;br /&gt;
&lt;br /&gt;
All data structures map to respective C structures except for 'union'.&lt;br /&gt;
In XDR, we need to know which member in a union is valid since it needs to be marshalled/unmarshalled. Therefore a union is implemented as a structure which aggregates the respective C-style union and a member called discriminant which takes appropriate values for every member of the C-style union.&lt;br /&gt;
&lt;br /&gt;
=====Marshalling=====&lt;br /&gt;
&lt;br /&gt;
In all of the marshalling algorithms, the message is written to only if non-zero. The message should be 0 if the veriable under consideration needs to be deleted. All data is converted to network byte order before writing to message.&lt;br /&gt;
&lt;br /&gt;
=====Unmarshalling=====&lt;br /&gt;
&lt;br /&gt;
In all of the unmarshalling algorithms, the message should always be non-zero. All data is converted to host order before reading from a message.&lt;br /&gt;
&lt;br /&gt;
====IDL Stubs====&lt;br /&gt;
&lt;br /&gt;
The IDL generates the following for every function installed in the EO interface:&lt;br /&gt;
* sync client stub&lt;br /&gt;
* async client stub&lt;br /&gt;
* server stub&lt;br /&gt;
* async callback&lt;br /&gt;
&lt;br /&gt;
In addition, it generates 2 functions to install and uninstall the server functions into the EO.&lt;br /&gt;
&lt;br /&gt;
A client function is defined by it's arguments.&lt;br /&gt;
&lt;br /&gt;
'''Arguments'''&lt;br /&gt;
Arguments or parameters are marshalled into a message which are passed to the server functions and vice versa. Therefore it is necessary to understand what type of arguments can be available and how the marshalling/unmashalling can be done. There are 2 orthogonal classifications of arguments.&lt;br /&gt;
&lt;br /&gt;
Classification based on direction of transfer:&lt;br /&gt;
* CL_IN - these are provided as an input to a function. In our case, they are sent to the server through input message&lt;br /&gt;
* CL_OUT - these are used to return results to the caller. In our case, these parameters are sent from the server to the client in the output message&lt;br /&gt;
* CL_INOUT - these act as both input as well as output arguments. Consequently in our case, they are sent in both directions.As of now we are not handling inout variables.&lt;br /&gt;
&lt;br /&gt;
Classification based on passing:&lt;br /&gt;
* By value - these are passed as a copy. The original variables are not modifiable.&lt;br /&gt;
* By reference - these are passed as address. Therefore the original variables are modifiable. Since IDL marshalls/unmarshalls the  These are further categorized as:&lt;br /&gt;
** without count - when pointers are passed without count, they are assumed to point to a single element&lt;br /&gt;
** with count - when a reference is passed with a count variable (an input basic type parameter), the count variable is assumed to contain the number of elements being pointed to.&lt;br /&gt;
&lt;br /&gt;
Thus an argument can be classified into one of the following categories:&lt;br /&gt;
* CL_IN, by value (CL_OUT type parameters return results to the callee, they always need to be passed by reference)&lt;br /&gt;
* CL_IN, by reference without count&lt;br /&gt;
* CL_IN, by reference with count&lt;br /&gt;
* CL_OUT, by reference without count&lt;br /&gt;
* CL_OUT, by reference with count&lt;br /&gt;
&lt;br /&gt;
=====IDL Sync Client Stub=====&lt;br /&gt;
&lt;br /&gt;
The IDL sync client stub is generated from the EO definition provided in the xml file. A stub is generated for every function installed in the EO clients. The first argument of the stub is always the handle which contains the RMD parameters and it needs to be pre-initialized. For more information on the handle, please refer to the API guide.&lt;br /&gt;
It has the same signature as is specified in the xml file.&lt;br /&gt;
&lt;br /&gt;
=====IDL Async Client Stub=====&lt;br /&gt;
&lt;br /&gt;
Same as the sync stub except that the RMD call is asynchronous. Additional arguments are supplied for this - the callback to be invoked on successful invocation and also the cookie to be passed as an argument to the callback.&lt;br /&gt;
&lt;br /&gt;
=====IDL Async Callback=====&lt;br /&gt;
&lt;br /&gt;
This is the function that is called when an async call is made and the context from the server returns. It is similar to the part of sync client stub which is present after the sync RMD call returns.&lt;br /&gt;
This function is invoked from the RMD's context.&lt;br /&gt;
&lt;br /&gt;
=====IDL Server Stub=====&lt;br /&gt;
&lt;br /&gt;
The IDL server stub is invoked by RMD server library in response to a request from the client. This stub gets installed in the EO's client tables.&lt;br /&gt;
This stub does the reverse of the sync client stub. It extracts the in  from the input message and calls the actual server function with these parameters. When the function returns, it packs the out parameters in a the output message and returns destroys the variables it created.&lt;/div&gt;</summary>
		<author><name>MediaWiki spam cleanup</name></author>	</entry>

	<entry>
		<id>https://help.openclovis.com/index.php/Doc:latest/installguide</id>
		<title>Doc:latest/installguide</title>
		<link rel="alternate" type="text/html" href="https://help.openclovis.com/index.php/Doc:latest/installguide"/>
				<updated>2012-02-21T03:48:18Z</updated>
		
		<summary type="html">&lt;p&gt;MediaWiki spam cleanup: Reverting to last revision not containing links to www.buyxanaxonlinepill.com&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=='''Preface'''==&lt;br /&gt;
&lt;br /&gt;
''SAFplus Platform Installation Guide''  guide provides the system requirements, installation procedure for SAFplus Platform software development kit (SDK) and the Evaluation System.&lt;br /&gt;
&lt;br /&gt;
===Audience===&lt;br /&gt;
&lt;br /&gt;
''SAFplus Platform Installation Guide''  is designed for system integrators, designers, and system architects. To use the product, you must be aware of the fundamentals of design, development, operation, management and configuration of telecommunication and networking systems. You must also be familiar with C programming, UML notations, and have the basic knowledge of Linux.&lt;br /&gt;
&lt;br /&gt;
===Documentation Conventions===&lt;br /&gt;
&lt;br /&gt;
This guide uses different fonts and symbols to differentiate between document elements and types of information. These conventions are summarized in the following table.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;0&amp;quot; cellpadding=&amp;quot;3&amp;quot;&lt;br /&gt;
|- style=&amp;quot;color:#ffffff; background:#549cc6&amp;quot;&lt;br /&gt;
!style=&amp;quot;color:#66b154; background:#09477c&amp;quot;| Notation &lt;br /&gt;
!style=&amp;quot;color:#66b154; background:#09477c&amp;quot;| Description&lt;br /&gt;
|- style=&amp;quot;color:#ffffff; background:#549cc6&amp;quot;&lt;br /&gt;
|style=&amp;quot;color:black&amp;quot; |&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;Code&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
This font denotes the C code provided in various examples.&lt;br /&gt;
|- style=&amp;quot;color:#ffffff; background:#549cc6&amp;quot;&lt;br /&gt;
|Cross reference&lt;br /&gt;
|&lt;br /&gt;
This font denotes a hyperlink. You can click on the hyperlink text to access the reference location, which can be either a section within the User Guide or a URL link.A cross reference refers to a section name and accesses the first page of that section.&lt;br /&gt;
|- style=&amp;quot;color:#ffffff; background:#549cc6&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
'''Bold Text''' &lt;br /&gt;
|&lt;br /&gt;
Menu items and button names.&lt;br /&gt;
|- style=&amp;quot;color:#ffffff; background:#549cc6&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
'''''Italic Text''''' &lt;br /&gt;
|&lt;br /&gt;
Variables for which you enter values.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;[[File:OpenClovis_Note.png]]This indicates the presence of notes or annotations, related to the context of the document.&lt;br /&gt;
&amp;lt;br&amp;gt;[[File:OpenClovis_Caution.png]]This indicates that certain precautionary measures must be taken before performing a particular task.&lt;br /&gt;
&amp;lt;br&amp;gt;[[File:OpenClovis_Info.png]]This indicates that additional information is provided to you.&lt;br /&gt;
&lt;br /&gt;
===Related Documents===&lt;br /&gt;
&lt;br /&gt;
For additional information about OpenClovis products, refer to the following guides:&lt;br /&gt;
* '''[[Doc:latest/relnotes | SAFplus Platform Release Notes]]''' provides information about the software and the hardware required to install OpenClovis Application Service Platform (SAFplus Platform) and Integrated Development Environment (IDE). It summarizes the additional features and enhancements of the product since the previous release. It also summarizes the issues and limitations of the product and provides workarounds wherever applicable.&lt;br /&gt;
* '''[[Doc:latest/safcompliance | SAFplus Platform SA-Forum Compliance]]''' describes the level of compliance of OpenClovis SAFplus Platform and its Application Programming Interface (API) with the relevant Service Availability Forum Specifications.&lt;br /&gt;
* '''[[Doc:latest/installguide | SAFplus Platform Installation Guide]]''' provides the system requirements, installation procedure for OpenClovis SAFplus Platform, IDE, and the Evaluation System.&lt;br /&gt;
* '''[[Doc:latest/tutorial | SAFplus Platform Sample Application Tutorial]]''' explains the steps to create and build a sample model using OpenClovis IDE and OpenClovis SAFplus Platform. It also provides troubleshooting information for this process. This provides the logical first step in understanding the SAFplus Platform offering.&lt;br /&gt;
* '''[[Doc:latest/evalguide | SAFplus Platform Evaluation System User Guide]]''' provides all the required information to configure and run the sample models packaged within the Evaluation System. This document also provides good understanding of OpenClovis SAFplus Platform's functionality. This is the natural follow on to the ''OpenClovis Sample Application Tutorial'' as it builds on the example created in that document. &lt;br /&gt;
* '''[[Doc:latest/sdkguide | SAFplus Platform SDK User Guide]]''' provides information about SAFplus Availability/Scalability Platform architecture, various SAFplus Platform components, and their interactions. This guide helps you to configure the OpenClovis SAFplus Platform components, compile, and execute the SAFplus Platform code to build your custom application.&lt;br /&gt;
* '''[[Doc:latest/ideguide | SAFplus Platform IDE User Guide]]''' describes the usage of Integrated Development Environment (IDE), a graphical development environment that complements the SAFplus Platform. This guide helps you to understand how to use the various features of the IDE to build the application.&lt;br /&gt;
* '''[[Doc:latest/logtoolguide | SAFplus Platform Log Tool User Guide]]''' provides information about the usage of OpenClovis Log Tool. OpenClovis Log Tool is an interactive utility that allows you to view binary log files in a readable format and hence monitor system errors, warnings, and other log information. Log Tool allows you to format the &amp;lt;code&amp;gt;.log&amp;lt;/code&amp;gt; files and filter them to view the required entries.&lt;br /&gt;
* '''SAFplus Platform API Reference Guide [http://www.openclovis.org/doc/latest/apirefs/index.html]''' is provided for each component. It describes the Application Programming Interface (API), Service Model, and Management Information Model of the various OpenClovis Application Service Platform (SAFplus Platform) services. It helps the developer to understand the capabilities of the SAFplus Platform services and the APIs provided by these services.&lt;br /&gt;
* '''[[SAFplus Platform Console Reference Guide]]''' provides details about managing applications built on SAFplus Platform using the SAFplus Platform runtime debug console commands. SAFplus Platform Console commands can be used to manage, monitor, and test your application.&lt;br /&gt;
&lt;br /&gt;
===OpenClovis Online Technical Support===&lt;br /&gt;
&lt;br /&gt;
OpenClovis customers and partners can register on our Web site and receive personalized services and information. If you need any support or assistance while working on OpenClovis products, you can access the following: URL: http://www.openclovis.com. Send your queries to: support@openclovis.com. Open source community support is available at: http://www.openclovis.org/forum.&lt;br /&gt;
&lt;br /&gt;
===Documentation Feedback===&lt;br /&gt;
&lt;br /&gt;
We are interested in hearing from our customers on the documentation provided with the product. Let us know your comments and suggestions on improving the documentation at OpenClovis Inc. Send your comments to: support@openclovis.com. Or even better, edit (or comment in) the page on our documentation wiki located at [http://help.openclovis.com http://help.openclovis.com].&lt;br /&gt;
&lt;br /&gt;
=='''Prerequisites to Install'''==&lt;br /&gt;
&lt;br /&gt;
This chapter provides an overview of the OpenClovis SDK solution comprising OpenClovis SAFplus Platform and IDE. It also provides the hardware and software requirements for running OpenClovis SDK and the Evaluation System.&lt;br /&gt;
&lt;br /&gt;
===Overview===&lt;br /&gt;
&lt;br /&gt;
OpenClovis provides a modular and cost-effective software platform for creating next-generation communication systems. OpenClovis SDK is designed for solution integrators, network equipment manufacturers (NEPs), and telecommunication equipment manufacturers (TEMs) to facilitate the creation of a broad range of telecommunication devices, including routers, switches, media gateways and wireless infrastructure nodes.&lt;br /&gt;
&lt;br /&gt;
OpenClovis fits seamlessly with various distributions of Linux and hardware platforms such as AdvancedTCA, BladeCenter T, and other off-the-shelf proprietary hardware.&lt;br /&gt;
&lt;br /&gt;
The OpenClovis solution comprises OpenClovis SAFplus Platform and OpenClovis IDE.&lt;br /&gt;
&lt;br /&gt;
'''OpenClovis Application Service Platform (SAFplus Platform)'''  is middleware that offers a comprehensive set of modular, portable, reusable software components designed to provide system management and high availability functionality. OpenClovis SAFplus Platform is the run-time part of the OpenClovis offering. It provides run-time services for your value add applications, offering a layered, hardware-platform independent application environment.&lt;br /&gt;
&lt;br /&gt;
'''OpenClovis Integrated Development Environment (IDE)'''  is designed to simplify and accelerate the development of application service platforms for the telecommunication marketplace. Coupled with the OpenClovis SAFplus Platform, this intuitive software solution streamlines the process of specifying the information model, high availability (HA) aspects, and the communication infrastructure of a system. OpenClovis IDE stores all information describing a project in well defined XML files that can be modified by the user. Modeling of system resources and relationships are specified using a graphical UML editor.&lt;br /&gt;
&lt;br /&gt;
'''OpenClovis Evaluation System'''  is a evaluation sample system based on SAFplus Platform that provides the user with a better understanding of the scope of the product, usage patterns, its quality and usability.&lt;br /&gt;
&lt;br /&gt;
===Development Host Requirements===&lt;br /&gt;
&lt;br /&gt;
This section provides the hardware and software requirements for installing OpenClovis SAFplus Platform and IDE. It is not necessary to install OpenClovis IDE on the target host, as all the modeling activities are performed on the development host. The system requirements for the development host is summarized in Table [[#Table_SysReq_DevHost|System Requirements for a Development Host]].&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;Table_SysReq_DevHost&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;0&amp;quot; cellpadding=&amp;quot;3&amp;quot; align=&amp;quot;center&amp;quot; width=&amp;quot;600&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;bottom&amp;quot; | '''System Requirements for a Development Host'''&lt;br /&gt;
|- style=&amp;quot;color:#ffffff; background:#549cc6&amp;quot;&lt;br /&gt;
!style=&amp;quot;color:#66b154; background:#09477c&amp;quot; width=&amp;quot;150&amp;quot;| Requirement Type&lt;br /&gt;
!style=&amp;quot;color:#66b154; background:#09477c&amp;quot;| Requirements&lt;br /&gt;
|- style=&amp;quot;color:#ffffff; background:#549cc6&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
Hardware&lt;br /&gt;
|&lt;br /&gt;
* Intel Pentium II (or higher)&lt;br /&gt;
* Hard Disk - 10 GB (minimum suggested)&lt;br /&gt;
* RAM - 512 MB (minimum suggested)&lt;br /&gt;
|- style=&amp;quot;color:#ffffff; background:#549cc6&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
Linux Distributions&lt;br /&gt;
|&lt;br /&gt;
* Red Hat Enterprise Linux 4&lt;br /&gt;
* Ubuntu Linux&lt;br /&gt;
* CentOS 4.0 &lt;br /&gt;
* Gentoo Linux&lt;br /&gt;
* Fedora Linux&lt;br /&gt;
* Yellow Dog Linux 4&lt;br /&gt;
|- style=&amp;quot;color:#ffffff; background:#549cc6&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;br&amp;gt;Third Party Packages &lt;br /&gt;
|&lt;br /&gt;
* glib-2.0 - 2.6.0&lt;br /&gt;
* glibc 2.3.2&lt;br /&gt;
* gcc 3.2.3&lt;br /&gt;
* beecrypt&lt;br /&gt;
* gdbm 1.8.0&lt;br /&gt;
* net-snmp 5.4&lt;br /&gt;
* openhpi 2.8.1&lt;br /&gt;
* openhpi-subagent 2.3.4&lt;br /&gt;
* Gtk&lt;br /&gt;
* Eclipse SDK 3.2.2&lt;br /&gt;
* EMF SDK 2.2.2&lt;br /&gt;
* GEF SDK 3.2.2&lt;br /&gt;
* JRE 1.5.0_03&lt;br /&gt;
* Python 2.4.1&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
[[File:OpenClovis_Note.png]]The OpenClovis SDK installation process verifies the Third Party Packages, and installs any missing packages automatically, as a part of the SDK Installation.&lt;br /&gt;
&lt;br /&gt;
===Target Host Requirements===&lt;br /&gt;
&lt;br /&gt;
This section provides the hardware and software requirements for installing OpenClovis SAFplus Platform on the target host. These requirements are summarized in Table [[#Table_SysReq_TargetPlatform|System Requirements for the Target Platform]].&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;Table_SysReq_TargetPlatform&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;0&amp;quot; cellpadding=&amp;quot;3&amp;quot; align=&amp;quot;center&amp;quot; width=&amp;quot;600&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;bottom&amp;quot; | '''System Requirements for the Target Platform''' &lt;br /&gt;
|- style=&amp;quot;color:#ffffff; background:#549cc6&amp;quot;&lt;br /&gt;
!style=&amp;quot;color:#66b154; background:#09477c&amp;quot; width=&amp;quot;150&amp;quot;| Requirement Type&lt;br /&gt;
!style=&amp;quot;color:#66b154; background:#09477c&amp;quot;| Requirements&lt;br /&gt;
|- style=&amp;quot;color:#ffffff; background:#549cc6&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
Hardware&lt;br /&gt;
|&lt;br /&gt;
'''ATCA Chassis''' &lt;br /&gt;
* CPU Types: Intel Xeon, AMD64, Itanium2&lt;br /&gt;
* Blades: Intel MPCBL0001, Intel MPCBL0030, Intel MPCBL0040, Huawei Tel8000&lt;br /&gt;
* Shelf Management: Pigeon Point ShMM500, RadiSys&lt;br /&gt;
|- style=&amp;quot;color:#ffffff; background:#549cc6&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;br&amp;gt;Linux Distributions&lt;br /&gt;
|&lt;br /&gt;
'''ATCA Chassis''' &lt;br /&gt;
* Wind-River PNE LE 1.2 (2.6.10 kernel)&lt;br /&gt;
* Wind-River PNE LE 1.3 (2.6.14 kernel)&lt;br /&gt;
* Wind-River PNE LE 1.4 (2.6.14 kernel)&lt;br /&gt;
* Red Hat Enterprise Linux 4.0, 5.0, etc. or Centos equivalent&lt;br /&gt;
* Ubuntu 9+ or similar Debian based Linux&lt;br /&gt;
* MontaVista Carrier Grade Linux 5.0&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
[[File:OpenClovis_Note.png]]These are the Linux distributions on which SAFplus Platform is tested and certified.&lt;br /&gt;
&lt;br /&gt;
===SAFplus Platform SDK Packages===&lt;br /&gt;
&lt;br /&gt;
The SAFplus Platform SDK Installation packages listed in Table [[#Table_Required_Installation_Packages | Required Installation Packages]]. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;Table_Required_Installation_Packages&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;0&amp;quot; cellpadding=&amp;quot;3&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;bottom&amp;quot;| '''Required Installation Packages'''&lt;br /&gt;
|- style=&amp;quot;color:#ffffff; background:#549cc6&amp;quot;&lt;br /&gt;
!style=&amp;quot;color:#66b154; background:#09477c&amp;quot;| File Names&lt;br /&gt;
!style=&amp;quot;color:#66b154; background:#09477c&amp;quot;| Description&lt;br /&gt;
|- style=&amp;quot;color:#ffffff; background:#549cc6&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
openclovis-sdk-3.0.tar.gz&lt;br /&gt;
|&lt;br /&gt;
This file is the core installation tarball, to install SAFplus Platform, IDE, and the evaluation system.&lt;br /&gt;
|- style=&amp;quot;color:#ffffff; background:#549cc6&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
openclovis-sdk-3.0.md5&lt;br /&gt;
|&lt;br /&gt;
This file is used to perform the data integrity check of the downloaded SDK tar file.&lt;br /&gt;
|- style=&amp;quot;color:#ffffff; background:#549cc6&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
3rdparty-base-1.8.tar&lt;br /&gt;
|&lt;br /&gt;
This file contains the third party packages for SAFplus Platform SDK. &lt;br /&gt;
|- style=&amp;quot;color:#ffffff; background:#549cc6&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
3rdparty-base-1.8.md5&lt;br /&gt;
|&lt;br /&gt;
This file is used to perform the data integrity check of the downloaded third party tar file.&lt;br /&gt;
|- style=&amp;quot;color:#ffffff; background:#549cc6&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
crossbuild-i586-wrl-pnele1.3-2.6.14-1.6.tar.gz&lt;br /&gt;
|&lt;br /&gt;
This file is used to crossbuild SAFplus Platform for an i586 target with the PNELE 1.3 kernel.&lt;br /&gt;
|- style=&amp;quot;color:#ffffff; background:#549cc6&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
crossbuild-i586-wrl-pnele1.3-2.6.14-1.6.md5&lt;br /&gt;
|&lt;br /&gt;
This file is used to perform the data integrity check of the downloaded crossbuild tar file.&lt;br /&gt;
|- style=&amp;quot;color:#ffffff; background:#549cc6&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
crossbuild-i586-wrl-pnele1.4-2.6.14_mpcbl0001-1.0.tar.gz&lt;br /&gt;
|&lt;br /&gt;
This file is used to crossbuild SAFplus Platform for an i586 target with the PNELE 1.4 kernel.&lt;br /&gt;
|- style=&amp;quot;color:#ffffff; background:#549cc6&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
crossbuild-i586-wrl-pnele1.4-2.6.14_mpcbl0001-1.0.md5&lt;br /&gt;
|&lt;br /&gt;
This file is used to perform the data integrity check of the downloaded crossbuild tar file.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
[[File:OpenClovis_Note.png]]OpenClovis SDK is supplemented with a set of crossbuild packages for different CPU and Operating System combinations. The md5 and crossbuild packages are optional and maybe downloaded depending on your requirements.&lt;br /&gt;
&lt;br /&gt;
=='''OpenClovis SDK Installation'''==&lt;br /&gt;
&lt;br /&gt;
This chapter provides a step-by-step approach for installing OpenClovis SDK. Before proceeding with installation, ensure that all the required hardware and software are available on your system. You need not install the third-party packages, as the installation package installs the third-party packages along with OpenClovis SDK. &lt;br /&gt;
&lt;br /&gt;
===Installation Procedure - Get Started===&lt;br /&gt;
&lt;br /&gt;
To install Openclovis SDK on your local machine, go to the directory where you have downloaded the required installation files.&lt;br /&gt;
&lt;br /&gt;
Before you install, &lt;br /&gt;
* Ensure you have write permissions for the current directory (directory where the installation files are downloaded) and the target directory (directory where you will install the application.) &lt;br /&gt;
* At least 500MB of free disk space. &lt;br /&gt;
* You can install the SDK either as a root user or a non root user. Installing as root user is not required for a single user host. When using the SDK for larger projects it is advisable to install as root, since multiple users can share the same SDK.  Irrespective of the mode of installation, the SDK can be used to model and build code using non-root privileges. &lt;br /&gt;
&lt;br /&gt;
To extract the SDK package, execute the following command:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
# tar -xzmf openclovis-sdk-3.0.tar.gz&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt; &lt;br /&gt;
&lt;br /&gt;
[[File:OpenClovis_Note.png]] The &amp;lt;code&amp;gt;m&amp;lt;/code&amp;gt; option to &amp;lt;code&amp;gt;tar&amp;lt;/code&amp;gt; ensures that the timestamps on the files within the SDK package are consistent with the host system.  This is important, since discrepancies can adversely affect the build procedure.&lt;br /&gt;
&lt;br /&gt;
To ensure that your system has all the prerequisite software packages required by the installation process, the SDK package contains preinstallation scripts for a variety of Linux distributions.  Prerequisite packages are packages that are supplied by your distribution but may not have been installed on your system.  Essentially this is the GNU compiler toolchain and programming utilities such as pkg-config, flex, and bison.  These scripts enable the user to acquire and install the prerequisite software packages automatically.  Some distributions provide these packages on your installation CDROMs, so you may be asked to insert them.  Other distributions provide these packages via internet-based software repositories (notably Ubuntu).  If your system does not have internet access, please see ''Appendix A: Installing the Prerequisites without Internet Access''.  The following table covers the distributions supported by the preinstall scripts:&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;0&amp;quot; cellpadding=&amp;quot;3&amp;quot; align=&amp;quot;center&amp;quot; width=&amp;quot;600&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;bottom&amp;quot; | '''Distributions supported by preinstall scripts'''&lt;br /&gt;
|- style=&amp;quot;color:#ffffff; background:#549cc6&amp;quot;&lt;br /&gt;
!style=&amp;quot;color:#66b154; background:#09477c&amp;quot; width=&amp;quot;150&amp;quot;| Preinstall script&lt;br /&gt;
!style=&amp;quot;color:#66b154; background:#09477c&amp;quot;| Distributions supported&lt;br /&gt;
|- style=&amp;quot;color:#ffffff; background:#549cc6&amp;quot;&lt;br /&gt;
|preinstall-centOS4.sh &lt;br /&gt;
|CentOS 4&lt;br /&gt;
|- style=&amp;quot;color:#ffffff; background:#549cc6&amp;quot;&lt;br /&gt;
|preinstall-debian.sh&lt;br /&gt;
|Debian Linux&lt;br /&gt;
|- style=&amp;quot;color:#ffffff; background:#549cc6&amp;quot;&lt;br /&gt;
|preinstall-fedora-core-6.sh&lt;br /&gt;
|Fedora Core 6&lt;br /&gt;
|- style=&amp;quot;color:#ffffff; background:#549cc6&amp;quot;&lt;br /&gt;
|preinstall-suse.sh&lt;br /&gt;
|SuSE Linux&lt;br /&gt;
|- style=&amp;quot;color:#ffffff; background:#549cc6&amp;quot;&lt;br /&gt;
|preinstall-ubuntu.sh&lt;br /&gt;
|Ubuntu Linux&lt;br /&gt;
|- style=&amp;quot;color:#ffffff; background:#549cc6&amp;quot;&lt;br /&gt;
|preinstall-rhel4.sh&lt;br /&gt;
|Red Hat Enterprise Linux 4&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
[[File:OpenClovis_Note.png]] '''The preinstall scripts need to be run as root.'''&lt;br /&gt;
&lt;br /&gt;
[[File:OpenClovis_Note.png]] The preinstall script installs SQLite as database engine by default. If you would like to select GNU Database Manager or Berkeley Database, please visit section ''Database Abstraction Layer (DBAL)'' in ''OpenClovis SDK User Guide'' for more information. &lt;br /&gt;
&lt;br /&gt;
Please run the preinstall script corresponding with your Linux distribution by executing the following commands:&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
# cd openclovis-sdk-3.0&lt;br /&gt;
# ./preinstall-&amp;lt;os&amp;gt;.sh&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:OpenClovis_Note.png]] '''An installation of Red Hat EL4 with the default package set contains all the packages required for installing OpenClovis SDK.  In particular, the 'Development Tools' package subset must be installed to cover these requirements.'''&lt;br /&gt;
&lt;br /&gt;
Once the preinstall script completes, start the SDK installation by executing the following command:&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
# ./install.sh&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
After you execute the install command, the Welcome screen is displayed as illustrated in Figure [[#OpenClovis Installer Welcome Screen | OpenClovis Installer Welcome Screen]]. When prompted by the installer, the user can enter the name of the directory where the SDK should be installed or accept the default provided:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id='OpenClovis Installer Welcome Screen'&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
[[File:OpenClovisSDKInstallation_WelcomeScreen_wPreInstall.png|frame|center| '''OpenClovis Installer Welcome Screen''' ]]&lt;br /&gt;
&lt;br /&gt;
The default directory for installation is &amp;lt;code&amp;gt;/opt/clovis&amp;lt;/code&amp;gt; for root installation and  &amp;lt;code&amp;gt;$HOME/clovis&amp;lt;/code&amp;gt; for non root users as illustrated in Figure [[#OpenClovis Installer Welcome Screen | OpenClovis Installer Welcome Screen]]. The installation progress is illustrated in Figure [[#Installation Directory and Progress | Installation Directory and Progress]].&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id='Installation Directory and Progress'&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
[[File:OpenClovisSDKInstallation_InstallationDirectories.png|frame|center| '''Installation Directory and Progress''' ]]&lt;br /&gt;
&lt;br /&gt;
===Third Party Packages===&lt;br /&gt;
&lt;br /&gt;
The required third party packages are installed in the following steps:&lt;br /&gt;
* Scans the system for existing third party packages. &lt;br /&gt;
* Displays the list of packages that are available, along with their version numbers. &lt;br /&gt;
* Displays the list of packages that are not available or that have a version mismatch. &lt;br /&gt;
&lt;br /&gt;
[[File:OpenClovis_Note.png]] This display may vary at the time of your installation, depending on the packages that are available on your system. Figure [[#Third Party Packages - Availability Status | Third Party Packages - Availability Status]]  demonstrates a typical display.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id='Third Party Packages - Availability Status'&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
[[File:OpenClovisSDKInstallation_ThirdPartyPackages.png|frame|center| '''Third Party Packages - Availability Status''']]&lt;br /&gt;
&lt;br /&gt;
To proceed with the installation, enter &amp;lt;code&amp;gt;y&amp;lt;/code&amp;gt; for the message, &amp;lt;code&amp;gt;Proceed with the installation &amp;lt;y/n&amp;gt; [y]: &amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Figure [[#Third Party Packages Installation Progress | Third Party Packages Installation Progress]]  illustrates the approximate installation time and the installation status for each package.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id='Third Party Packages Installation Progress'&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
[[File:OpenClovisSDKInstallation_3rdPartyPackageInstallationProgress.png|frame|center| '''Third Party Packages Installation Progress''']]&lt;br /&gt;
&lt;br /&gt;
After installation of third party packages, the installer displays the message,  &amp;lt;code&amp;gt;All SDK dependencies are now in place.&amp;lt;/code&amp;gt; as illustrated in Figure [[#OpenClovis Packages Installation - Status | OpenClovis Packages Installation - Status]].&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id='OpenClovis Packages Installation - Status'&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
[[File:OpenClovisSDKInstallation_InstallationStatus.png|frame|center| '''OpenClovis Packages Installation - Status''']]&lt;br /&gt;
&lt;br /&gt;
After completion of the third party packages, the installer prompts the user for the installation of the crossbuild toolchains.&lt;br /&gt;
&lt;br /&gt;
===Crossbuild Toolchains===&lt;br /&gt;
&lt;br /&gt;
Crossbuild toolchains are required to install SAFplus Platform on a platform that is different from the development host platform. For instance if the development host is x86 Intel based and the target platform is PowerPC based the user will need a crossbuild toolchain for that particular PowerPC based architecture.&lt;br /&gt;
&lt;br /&gt;
For crossbuild toolchains, you will require the following:&lt;br /&gt;
* A cross compiler and related binary tools for the target CPU architecture.&lt;br /&gt;
* All the SAFplus Platform prerequisites that are pre-compiled for the target platform, so that all library files are available.&lt;br /&gt;
&lt;br /&gt;
OpenClovis SDK comes with a standard set of pre-built crossbuild toolchain packages. The names of these packages help you to identify the CPU and OS combinations for which they have been built. &lt;br /&gt;
&lt;br /&gt;
The SDK installer (&amp;lt;code&amp;gt;install.sh&amp;lt;/code&amp;gt;) assists you in installing one or more of these toolchains as illustrated in Figure [[#Crossbuild Toolchains | Crossbuild Toolchains]]. Enter the crossbuild toolchain that you require to be installed from the available list. After the toolchains are installed, you can select any of these cross-tools for your project build.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id='Crossbuild Toolchains'&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
[[File:OpenClovisSDKInstallation_Crossbuildtoolchains.png|frame|center| '''Crossbuild Toolchains''' ]]&lt;br /&gt;
&lt;br /&gt;
If you would like to install more crossbuild toolchains at a later time, please download them and re-run &amp;lt;code&amp;gt;install.sh&amp;lt;/code&amp;gt;.  You may skip the remaining portions of the install process past the installation of crossbuild toolchains when you are prompted to do so.&lt;br /&gt;
&lt;br /&gt;
===SAFplus Platform, IDE and Utilities===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;After installation of the toolchain, the system proceeds with the installation of SAFplus Platform, IDE and Utilities as illustrated in Figure [[#Installing SAFplus Platform, IDE and Utilities | Installing SAFplus Platform, IDE and Utilities]].&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id='Installing SAFplus Platform, IDE, and Utilities'&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
[[File:OpenClovisSDKInstallation_InstallingASP_IDE_Utilities.png|frame|center| '''Installing SAFplus Platform, IDE and Utilities''' ]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;The installer creates the required binaries and prompts you to create optional symbolic links, so that the SDK commands can be accessed on your system in a well known location, as illustrated in Figure [[#Creating Symbolic Links | Creating Symbolic Links]]. The main SDK commands of interest to the user are:&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;code&amp;gt;cl-create-project-area&amp;lt;/code&amp;gt;: Command to create a new OpenClovis SDK project area. A project area is the workspace for the OpenClovis SDK. It contains the IDE models and the generated source code. The user makes modifications to the generated source within this workspace and builds runtime images here as well.  A typical project area has the following directory structure:&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;project_area&amp;gt;&lt;br /&gt;
   |ide_workspace&lt;br /&gt;
   |+&amp;lt;model&amp;gt;&lt;br /&gt;
   |   |+build&lt;br /&gt;
   |   |   |+local&lt;br /&gt;
   |   |   |   |-Makefile&lt;br /&gt;
   |   |   |+&amp;lt;crossbuild&amp;gt;&lt;br /&gt;
   |   |   |   |-Makefile&lt;br /&gt;
   |   |+src&lt;br /&gt;
   |   |   |+app&lt;br /&gt;
   |   |   |+config&lt;br /&gt;
   |   |   |+doc&lt;br /&gt;
   |   |   |-target.conf&lt;br /&gt;
   |   |+target &lt;br /&gt;
   |   |-Makefile&lt;br /&gt;
   |-Makefile&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;code&amp;gt;cl-ide&amp;lt;/code&amp;gt;: Command to start the OpenClovis IDE. Please note that you should have already created a project area using &amp;lt;code&amp;gt;cl-create-project-area&amp;lt;/code&amp;gt; before using &amp;lt;code&amp;gt;cl-ide&amp;lt;/code&amp;gt; to work within this project area.&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id='Creating Symbolic Links'&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
[[File:OpenClovisSDKInstallation_CreateSymbolicLinks.png|frame|center| '''Creating Symbolic Links''' ]]&lt;br /&gt;
&lt;br /&gt;
Enter &amp;lt;code&amp;gt;Y&amp;lt;/code&amp;gt; to create the symbolic links. The installer then prompts the user for a location to place the links with a default option &amp;lt;code&amp;gt;/usr/local/bin&amp;lt;/code&amp;gt; if you are installing as root, or &amp;lt;code&amp;gt;$HOME/bin&amp;lt;/code&amp;gt; for non root user installation. &lt;br /&gt;
&lt;br /&gt;
If you choose not to create symbolic links and enter &amp;lt;code&amp;gt;N&amp;lt;/code&amp;gt;, then you can either:&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Add the installation directory to the shell path.  For example with a bash shell:&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
export PATH=$PATH:&amp;lt;install_dir&amp;gt;/sdk-3.0/bin&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;or access the SDK commands from the &amp;lt;code&amp;gt;&amp;lt;install_dir&amp;gt;/sdk-3.0/bin/&amp;lt;/code&amp;gt; directory. For example to create a new project area at &amp;lt;code&amp;gt;&amp;lt;project-area_dir&amp;gt;&amp;lt;/code&amp;gt;:&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;install_dir&amp;gt;/sdk-3.0/bin/cl-create-project-area &amp;lt;project-area_dir&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
After creating symbolic links, the installation of OpenClovis SDK is complete. All the required packages and crossbuild toolchains are installed and the directory where you have downloaded the installation packages can be discarded.&lt;br /&gt;
&lt;br /&gt;
[[File:OpenClovis_Note.png]]If your installation is not successful, or if you encounter any problems during the installation, refer to the Chapter [[#Troubleshooting | Troubleshooting]].&lt;br /&gt;
&lt;br /&gt;
===Next Steps===&lt;br /&gt;
&lt;br /&gt;
After completing the Installation, the OpenClovis SDK Documentation set listed in the [[#Related Documents| Related Documents]] section is available in the  &amp;lt;code&amp;gt;doc&amp;lt;/code&amp;gt;  folder located at  &amp;lt;code&amp;gt;&amp;lt;install_dir&amp;gt;/sdk-3.0&amp;lt;/code&amp;gt; directory. &lt;br /&gt;
&lt;br /&gt;
We recommend the following steps to get familiar with our product:&lt;br /&gt;
&lt;br /&gt;
*'''Read and follow the OpenClovis Sample Application Tutorial''' - The ''Sample Application Tutorial'' will step you through the process of creating a high available system. It takes you from model conception all the way through deployment and running of the sytem. After going through this guide you will understand the basics of the OpenClovis offering.&lt;br /&gt;
&lt;br /&gt;
*'''Read and follow the OpenClovis Evaluation System User Guide''' - ''Evaluation System User Guide'' will introduce you to more advanced modelling topics. These topics are introduced incrementally through a series of targeted tutorials. After completing this guide you will be ready to start building your own system.&lt;br /&gt;
&lt;br /&gt;
=='''Troubleshooting'''==&lt;br /&gt;
&lt;br /&gt;
This chapter describes some of the probable errors that you may encounter during the installation. This chapter also provides the solution to these errors.The errors that you may encounter are:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;&lt;br /&gt;
'''Error''': Installation Failure, during third party installation.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
'''Solution''': You can manually fix this error by getting more information from the corresponding log file under the log directory. You can also send the  &amp;lt;code&amp;gt;log.tar.gz&amp;lt;/code&amp;gt; to support@openclovis.com for more help.&lt;br /&gt;
The installation can be resumed after the errors are fixed. The installer will detect any new updates and proceed with the missing prerequisites.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;&lt;br /&gt;
'''Error''':  &amp;lt;code&amp;gt;gcc (pkg-config, perl, md5sum) not found in your PATH&amp;lt;/code&amp;gt;.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
'''Solution''': Ensure that the directory where the  &amp;lt;code&amp;gt;gcc&amp;lt;/code&amp;gt; resides is in the &amp;lt;code&amp;gt;PATH&amp;lt;/code&amp;gt; variable.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;&lt;br /&gt;
'''Error''':  Not enough space on the target installation directory.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
'''Solution''' : Change the target installation directory to the directory with at least 500MB free disk space.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;&lt;br /&gt;
'''Error''':  &amp;lt;code&amp;gt;&amp;lt;WORKING_DIRECTORY&amp;gt;&amp;lt;/code&amp;gt; is read-only.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
'''Solution''': You need to have write permission for the current working directory to extract the contents of the archive, configure, and build. Ensure that you turn ON write permission using  &amp;lt;code&amp;gt;chmod +w ...&amp;lt;/code&amp;gt;  command.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;&lt;br /&gt;
'''Error''': md5 checksums are used to check if the packages are correctly downloaded. If they are not downloaded correctly, the system displays the message:  &amp;lt;code&amp;gt;It is not safe to install these packages, please download them again.&amp;lt;/code&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
'''Solution''':The installer checks the integrity of the downloaded packages. If the download is either incomplete or corrupt, download the packages again.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;&lt;br /&gt;
'''Error''':  SAFplus Platform fails to start, reporting the underlying SQLite database version used is not-supported.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
'''Solution''': Use SQLite version 3.3.13 or newer. The source code can be downloaded from http://www.sqlite.org/download.html. The user can install the latest version of SQLite if the specified version is &lt;br /&gt;
not present in this repository.&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=='''Appendix A: Installing the Prerequisites without Internet Access'''==&lt;br /&gt;
&lt;br /&gt;
Some customers do not want their evaluation system to have internet access for security purposes.  If this is your situation, please consider temporarily enabling internet access while running the &amp;quot;preinstall-&amp;lt;os&amp;gt;&amp;quot; script.  At this point the evaluation system should only have the base OS installed, so there is no proprietary data on the system.  Also note that the &amp;quot;preinstall&amp;quot; scripts are only about a page long so you can easily review them for security purposes.&lt;br /&gt;
&lt;br /&gt;
However, if you still do not want to enable internet access one strategy that can be used is to go to a system with internet access (it must use the same Linux distribution and the same version), download them there, use a USB flash drive to move them to the unconnected system, and then install them on that system.  If this approach is unacceptable (it does still use the internet), then perhaps the Linux distribution you chose is not appropriate -- instead use one that contains all packages on the installation CDROMs.&lt;br /&gt;
&lt;br /&gt;
===Example Using Ubuntu 7.04===&lt;br /&gt;
&lt;br /&gt;
Packages can be downloaded but not installed on Ubuntu by using the &amp;quot;-d&amp;quot; flag to the &amp;quot;apt-get&amp;quot; package manager.  The files are downloaded to &amp;quot;/var/cache/apt/archives&amp;quot;.  It is recommended to remove (or move) all files in this directory first (it is just a cache, and so it will contain any packages that you have previously installed), so that the directory contains just the packages needed for the OpenClovis SDK:&lt;br /&gt;
&lt;br /&gt;
 rm /var/cache/apt/archives/*&lt;br /&gt;
&lt;br /&gt;
Next edit the preinstall-ubuntu.sh script, search for all instances of &amp;quot;apt-get&amp;quot; and add the flags &amp;quot;-d --reinstall&amp;quot; just after the &amp;quot;apt-get&amp;quot; program.  For example:&lt;br /&gt;
&lt;br /&gt;
 apt-get -d --reinstall -y --force-yes install build-essential&lt;br /&gt;
&lt;br /&gt;
Next run this modified script on your internet-connected machine.  This script will download 6MB of files (this list will vary by Linux distribution or version):&lt;br /&gt;
&lt;br /&gt;
 bison_1%3a2.3.dfsg-4build1_i386.deb                           &lt;br /&gt;
 libgdbm-dev_1.8.3-3_i386.deb&lt;br /&gt;
 build-essential_11.3_i386.deb                                 &lt;br /&gt;
 libltdl3-dev_1.5.22-4_i386.deb&lt;br /&gt;
 e2fslibs-dev_1.39+1.40- WIP-2006.11.14+dfsg-2ubuntu1_i386.deb  &lt;br /&gt;
 libperl-dev_5.8.8-7build1_i386.deb&lt;br /&gt;
 e2fsprogs_1.39+1.40-WIP-2006.11.14+dfsg-2ubuntu1_i386.deb     &lt;br /&gt;
 linux-headers-2.6.20-16-generic_2.6.20-16.32_i386.deb&lt;br /&gt;
 flex_2.5.33-10build1_i386.deb                                 &lt;br /&gt;
 gawk_1%3a3.1.5.dfsg-4build1_i386.deb                          &lt;br /&gt;
 gettext_0.16.1-1ubuntu2_i386.deb                              &lt;br /&gt;
 pkg-config_0.21-1build1_i386.deb&lt;br /&gt;
 libdb4.5-dev_4.5.20-1ubuntu1_i386.deb                         &lt;br /&gt;
 uuid-dev_1.2- 1.39+1.40-WIP-2006.11.14+dfsg-2ubuntu1_i386.deb&lt;br /&gt;
&lt;br /&gt;
Now copy these files to a new directory in your unconnected machine:&lt;br /&gt;
&lt;br /&gt;
On the connected machine:&lt;br /&gt;
 root@desktop:/# cp /var/cache/apt/archives/*.deb &amp;lt;your flash media&amp;gt;&lt;br /&gt;
&lt;br /&gt;
On the unconnected machine:&lt;br /&gt;
 root@desktop:/# mkdir /root/pkgs&lt;br /&gt;
 root@desktop:/# cp &amp;lt;your flash media&amp;gt; /root/pkgs/&lt;br /&gt;
&lt;br /&gt;
Finally, install them using the standard &amp;quot;dpkg&amp;quot; package installer:&lt;br /&gt;
&lt;br /&gt;
 root@desktop :/# cd /root/pkgs&lt;br /&gt;
 root@desktop:~/pkgs# dpkg -i *.deb&lt;br /&gt;
 (Reading database ... 113653 files and directories currently installed.)&lt;br /&gt;
 ...&lt;br /&gt;
 root@desktop:~/pkgs#&lt;br /&gt;
&lt;br /&gt;
At this point, you should be done installing the prerequisites!  You should now continue the installation procedure at the step after installing prequisites.&lt;/div&gt;</summary>
		<author><name>MediaWiki spam cleanup</name></author>	</entry>

	<entry>
		<id>https://help.openclovis.com/index.php/Doc:latest/safcompliance</id>
		<title>Doc:latest/safcompliance</title>
		<link rel="alternate" type="text/html" href="https://help.openclovis.com/index.php/Doc:latest/safcompliance"/>
				<updated>2012-02-21T03:48:17Z</updated>
		
		<summary type="html">&lt;p&gt;MediaWiki spam cleanup: Reverting to last revision not containing links to www.buyxanaxonlinepill.com&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=='''Introduction'''==&lt;br /&gt;
&lt;br /&gt;
Adherence to standards is a critical requirement for Next Generation Network&lt;br /&gt;
deployments. The Service Availability Forum (SA Forum) is the primary standards body in&lt;br /&gt;
the context of High Availability Middleware and enjoys the participation of over 95% of&lt;br /&gt;
Tier 1 TEMs. OpenClovis has been actively participating in the forum and helping to drive&lt;br /&gt;
the emerging Hardware Platform Interface (HPI) and Application Interface Specification&lt;br /&gt;
(AIS) standards based on its experience.&lt;br /&gt;
&lt;br /&gt;
As a result of the close involvement of OpenClovis with the SA Forum, the OpenClovis&lt;br /&gt;
SAFplus Platform product has been aligned with SA Forum AIS architecture and functional partitioning&lt;br /&gt;
from its inception and has kept pace with the evolution in the specifications and in many&lt;br /&gt;
cases, anticipated new features and functionality.&lt;br /&gt;
&lt;br /&gt;
Even as the specifications are evolving, the SA Forum is in the process of defining a test&lt;br /&gt;
suite that will establish compliance of a product to the specifications. While this activity is&lt;br /&gt;
in an advanced state for the HPI specifications, it has not yet taken off for AIS&lt;br /&gt;
specifications. Partial compliance test suites are expected to be available for HPI by end&lt;br /&gt;
of the 2006 calendar year.&lt;br /&gt;
&lt;br /&gt;
It should be noted that where a specification is 'A' level (example: SAI-AIS-NTF-A.01.01&lt;br /&gt;
for the Notification Service), SAF is not obligated to preserve backward compatibility&lt;br /&gt;
while going to a 'B' level version of the specification. On the other hand, backward&lt;br /&gt;
compatibility with respect to API's will be preserved between different versions of the 'B'&lt;br /&gt;
level specifications (Example: between SAI-AMF-B01.01 and SAI-AMF-B02.01)&lt;br /&gt;
&lt;br /&gt;
OpenClovis expects to formally establish the compliance of SAFplus Platform to the SA Forum AIS&lt;br /&gt;
standards as and when these compliance test suites become available. This document&lt;br /&gt;
details the level of alignment of OpenClovis SAFplus Platform with the SA Forum specifications.&lt;br /&gt;
&lt;br /&gt;
=='''Standards Referenced'''==&lt;br /&gt;
&lt;br /&gt;
The SA Forum specifications referred to in this document are available at http://www.saforum.org/home. The versions of the specifications referred to are&lt;br /&gt;
&lt;br /&gt;
*SAI-Overview-B.02.01&lt;br /&gt;
*SAI-AIS-AMF-B.02.01&lt;br /&gt;
*SAI-AIS-MSG-B.02.01&lt;br /&gt;
&lt;br /&gt;
*AIS-CKPT-B.01.01&lt;br /&gt;
*AIS-EVT-B.01.01&lt;br /&gt;
*AIS-CLM-B.01.01&lt;br /&gt;
&lt;br /&gt;
*SAI-AIS_LOG-A.01.01&lt;br /&gt;
*SAI-AIS-IMM-A.01.01&lt;br /&gt;
*SAI-AIS-NTF-A.01.01&lt;br /&gt;
*SAI-AIS-NAM-A.01.01&lt;br /&gt;
*Hardware Platform Interface Specification B.01.01&lt;br /&gt;
&lt;br /&gt;
=='''Compliance with Service Availability Forum AIS Architecture'''==&lt;br /&gt;
&lt;br /&gt;
OpenClovis SAFplus Platform complies with the Service Availability Forum (SAF) Hardware Platform Interface (HPI) and Application Interface Specification (AIS) specifications. OpenClovis Inc. is actively participating in the SA Forum and helping to drive the emerging HPI and AIS standards based on its experience.&lt;br /&gt;
&lt;br /&gt;
===Programming Model and Usage===&lt;br /&gt;
&lt;br /&gt;
Section 3.1 of SAI-AIS-Overview-B.02.01 describes the SAF Application Interface programming model and the generally intended usage of the interfaces.&lt;br /&gt;
&lt;br /&gt;
It introduces the area server as an abstraction that represents the server providing services for a specification area, for instance, Availability Management Framework, Group Membership Service and so on. The interface is defined as occurring between a user application that needs the services of the area server and an area implementation library.&lt;br /&gt;
&lt;br /&gt;
OpenClovis SAFplus Platform adheres to the SAF area server-area implementation library abstraction and the SAF programming and usage model in providing various services.&lt;br /&gt;
&lt;br /&gt;
===Availability Management Framework (AMF)===&lt;br /&gt;
&lt;br /&gt;
The Availability Management Framework (AMF) is the most important software entity of the SAF AIS Specification. It provides service availability by coordinating redundant resources within a cluster to deliver a system without a single point of failure. AMF prescribes a way to model applications that needs to be highly available. In addition, AMF provides a set of APIs that must be used by these applications to be managed for high availability.&lt;br /&gt;
&lt;br /&gt;
OpenClovis SAFplus Platform is implemented in complete accordance with the SAF AMF model and interfaces. This may be considered as the core of the SAF solution for high availability. The only limitation in the current release with respect to the AMF component model is that SAF defines a flexible mapping between components, processes and threads whereas OpenClovis SAFplus Platform supports only a single process per component. OpenClovis Inc. offers to support one-to-one relationship between a component and a process. However, a component can have multiple threads of execution within it.&lt;br /&gt;
&lt;br /&gt;
===Application Interface Specification (AIS) Services===&lt;br /&gt;
              &lt;br /&gt;
The following OpenClovis SAFplus Platform components provide services that are functionally equivalent to SAF AIS specifications:&lt;br /&gt;
*Availability Management Framework (AMF)&lt;br /&gt;
*Checkpoint Service (CPS)&lt;br /&gt;
*Event Manager (EM)&lt;br /&gt;
*Group Membership Service (GMS)&lt;br /&gt;
*Messaging Service (MSG)&lt;br /&gt;
&lt;br /&gt;
===SAFplus Platform AMF Features===&lt;br /&gt;
*'''HA model supported'''&lt;br /&gt;
** 2N&lt;br /&gt;
** M+N&lt;br /&gt;
&lt;br /&gt;
*'''Auto Adjust'''&lt;br /&gt;
SAF SG auto adjust feature to adjust the SG based on the SU ranking giving preference to higher ranked ones for active assignments&lt;br /&gt;
&lt;br /&gt;
*'''SI Dependency'''&lt;br /&gt;
SAF SI dependency across service groups&lt;br /&gt;
&lt;br /&gt;
*'''CSI Dependency'''&lt;br /&gt;
SAF CSI dependency within the same SI for work assignments&lt;br /&gt;
&lt;br /&gt;
*'''Component instantiation dependency'''&lt;br /&gt;
SAF component instantiation dependency for components within the same Service Unit configurable through instantiationLevel attribute. &lt;br /&gt;
&lt;br /&gt;
*'''Reduction Procedure'''&lt;br /&gt;
SAF SG reduction procedure applied when the SG is running under reduced potential for computing and removing less optimal standby assignments to assign Service Instances.&lt;br /&gt;
&lt;br /&gt;
*'''AMF NOTIFICATIONS'''&lt;br /&gt;
SAF HAStateChangeNotify and SIAssignmentStateChangeNotify notifications for applications to subscribe for AMF state transitions&lt;br /&gt;
&lt;br /&gt;
*'''Preferred SI assignment'''&lt;br /&gt;
Preferred SI assignment that could be configured for SUs to control SI assignments. Coupled with the delayed SG startup configuration through restartDuration to control instantiation of all the preferred SUs, SI preference could be enforced during initial cluster startup for the Service units in the cluster.&lt;br /&gt;
&lt;br /&gt;
*'''Proxy-Proxied support'''&lt;br /&gt;
Allow HA control of legacy application (non-SAF awared) via proxy&lt;br /&gt;
&lt;br /&gt;
===SAFplus Platform Cluster/Group Membership Service (GMS) Features===&lt;br /&gt;
The SA-Forum CLM API is fully supported.&lt;br /&gt;
&lt;br /&gt;
*'''Cluster Membership'''&lt;br /&gt;
CLM service manages the membership of the nodes. It manages the cluster formation during node joins and leaves.&lt;br /&gt;
&lt;br /&gt;
*'''Tracking Cluster Membership'''&lt;br /&gt;
Any application can register for Cluster Track callback through which it can get the notification for any node joins and leaves in the cluster&lt;br /&gt;
&lt;br /&gt;
*'''Getting Cluster Member information'''&lt;br /&gt;
API interface are available to get the information such as Address, node name etc, for any given cluster member node.&lt;br /&gt;
&lt;br /&gt;
*'''Cluster node eviction/ejection'''&lt;br /&gt;
A cluster node can be administratively ejected from the cluster.&lt;br /&gt;
&lt;br /&gt;
===SAFplus Platform Checkpointing Service (CPS) Features===&lt;br /&gt;
*'''Checkpoint/Section creation/deletion'''&lt;br /&gt;
CPS provides APIs for users to create/delete checkpoints and sections within the checkpoints.&lt;br /&gt;
&lt;br /&gt;
*'''Granularity at Section level'''&lt;br /&gt;
CPS allows user to create a checkpoint and inside a checkpoint user can create any number of sections and read/write each sections independently.&lt;br /&gt;
&lt;br /&gt;
*'''Checkpoint Status'''&lt;br /&gt;
CPS provides API to retrieve checkpoint status.&lt;br /&gt;
&lt;br /&gt;
*'''Locking at Section level'''&lt;br /&gt;
CPS provides read/write locks at section level due to which multiple sections can be accessed simultaneously. &lt;br /&gt;
&lt;br /&gt;
*'''Update options'''&lt;br /&gt;
CPS allows both Synchronous and Asynchronous update of the checkpoint replicas across the cluster&lt;br /&gt;
&lt;br /&gt;
*'''Replica Management'''&lt;br /&gt;
CPS allows both collocated and non-collocated mode of checkpoint replicas&lt;br /&gt;
&lt;br /&gt;
*'''Choosing replica at run time'''&lt;br /&gt;
User can use ActiveReplicaSet() APIs to set the active replica at run time.&lt;br /&gt;
&lt;br /&gt;
*'''Retention time'''&lt;br /&gt;
CPS provides users to specify a retention time for which the checkpoint is retained even when no one is accessing the checkpoint&lt;br /&gt;
&lt;br /&gt;
*'''Section Expiration Time'''&lt;br /&gt;
User can set an absolute expiration time for a section after which the section is deleted irrespective of its usage at that time. &lt;br /&gt;
&lt;br /&gt;
*'''Section Iteration'''&lt;br /&gt;
Users can iterate through the sections of a checkpoint.&lt;br /&gt;
&lt;br /&gt;
===SAFplus Platform Event Service features===&lt;br /&gt;
*'''Publish/Subscribe multipoint-to-multipoint communication mechanism'''&lt;br /&gt;
** Based on concept of event channels&lt;br /&gt;
** Publisher communicates asynchronously with one or more subscribers over an event channel&lt;br /&gt;
** Multiple publishers and subscribers can communicate over the same event channel; publishers can be subscribers on the same event channel&lt;br /&gt;
** Individual publishers and individual subscribers can communicate over multiple channels&lt;br /&gt;
*'''Events consist of standard header and one or more bytes of payload data'''&lt;br /&gt;
** i.e. Event Service does not impose any specific transfer syntax for the data&lt;br /&gt;
*'''Event channel management'''&lt;br /&gt;
** Event service provides APIs for opening, closing and deleting event channels&lt;br /&gt;
*'''Event operations'''&lt;br /&gt;
** Event service provides APIs for managing the event payload data, publishing the event, subscribing for the event etc&lt;br /&gt;
&lt;br /&gt;
===Additional SAFplus Platform Services===&lt;br /&gt;
&lt;br /&gt;
OpenClovis SAFplus Platform also provides various components that were implemented earlier than its implementation with SAF specifications. These components provide services that are functional equivalent to SAF AIS services as listed below:&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;0&amp;quot; cellpadding=&amp;quot;3&amp;quot; align=&amp;quot;center&amp;quot; width=&amp;quot;680&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;bottom&amp;quot; | '''SAFplus Platform Services Equivalent to SA Forum AIS Services''' &lt;br /&gt;
|- style=&amp;quot;color:#ffffff; background:#549cc6&amp;quot;&lt;br /&gt;
!style=&amp;quot;color:#66b154; background:#09477c&amp;quot;| OpenClovis SAFplus Platform Components&lt;br /&gt;
!style=&amp;quot;color:#66b154; background:#09477c&amp;quot;| Functionally Equivalent AIS Service&lt;br /&gt;
!style=&amp;quot;color:#66b154; background:#09477c&amp;quot;| AIS Specification&lt;br /&gt;
|- style=&amp;quot;color:#ffffff; background:#549cc6&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
Clovis Object Repository (COR)&lt;br /&gt;
|&lt;br /&gt;
Information Model Management Service&lt;br /&gt;
|&lt;br /&gt;
SAI-AIS-IMM-A.01.01&lt;br /&gt;
|- style=&amp;quot;color:#ffffff; background:#549cc6&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
Alarm Manager (AM) &lt;br /&gt;
|&lt;br /&gt;
Notification Service&lt;br /&gt;
|&lt;br /&gt;
SAI-AIS-NTF-A.01.01&lt;br /&gt;
|- style=&amp;quot;color:#ffffff; background:#549cc6&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
Log Service &lt;br /&gt;
|&lt;br /&gt;
Logging Service&lt;br /&gt;
|&lt;br /&gt;
SAI-AIS-LOG-A.01.01&lt;br /&gt;
|- style=&amp;quot;color:#ffffff; background:#549cc6&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
Naming Service &lt;br /&gt;
|&lt;br /&gt;
Naming Service&lt;br /&gt;
|&lt;br /&gt;
SAI-AIS-NAM-A.01.01&lt;br /&gt;
|- style=&amp;quot;color:#ffffff; background:#549cc6&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
Platform Management Service &lt;br /&gt;
|&lt;br /&gt;
Platform Management Service&lt;br /&gt;
|&lt;br /&gt;
SAI-AIS-PLM-A.01.01&lt;br /&gt;
|- style=&amp;quot;color:#ffffff; background:#549cc6&amp;quot;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===IMM (OpenClovis Object Repository - COR) Features===&lt;br /&gt;
The OpenClovis Object Repository(COR) implements the IMM features. We are progressing on having API level compliance which will be available in R5.0.&lt;br /&gt;
&lt;br /&gt;
The following are the IMM compliant features of COR:&lt;br /&gt;
&lt;br /&gt;
*'''Object Mananger and Object Implementer'''&lt;br /&gt;
**COR provides a rich set of APIs to make configuration changes on a Managed Object (MO). It provides service to implement a MO by multiple Object Implementers (OI), so that the configuration changes on the MO can be validated by all the OIs. It provides APIs to make or remove an application as a OI for a MO.&lt;br /&gt;
&lt;br /&gt;
*'''Runtime Attributes Management'''&lt;br /&gt;
**COR provides service to implement the runtime attributes of an object or all the object instances of a class. The Runtime attributes values can be cached or non-cached in COR. The cached runtime attributes values has to be updated by Primary Object Implementer (POI) periodically in COR. The value of non-cached runtime attributes will be updated by POI on request by COR. The values of cached runtime attributes can be persisted into storage devices.&lt;br /&gt;
&lt;br /&gt;
*'''Configuration Attributes Management'''&lt;br /&gt;
**The Configuration attributes are always cached and persisted by COR. Any configuration change on these attributes by a OM will be implemented by all the OIs.&lt;br /&gt;
&lt;br /&gt;
*'''Attribute Characteristics'''&lt;br /&gt;
**COR supports the following attribute characteristics.&lt;br /&gt;
***CONFIG      - Indicates that the attribute is a configuration type attribute.&lt;br /&gt;
***RUNTIME     - Indicates that the attribute is a runtime attribute.&lt;br /&gt;
***WRITABLE    - Indicates that the configuration attribute can be modified.&lt;br /&gt;
***INITIALIZED - Indicates that value for the configuration attribute must be specified when the object is created.&lt;br /&gt;
***CACHED      - Indicates that the value of the attribute is cached in COR.&lt;br /&gt;
***PERSISTENT  - Indicates that the value of the attribute must be stored in a permanent manner by COR&lt;br /&gt;
&lt;br /&gt;
*'''Object Class Management'''&lt;br /&gt;
**COR provides APIs to create, delete and modify the classes, and to make hierarchical relationship between the classes. It also provides service to inherit the existing class to create a new class.&lt;br /&gt;
&lt;br /&gt;
*'''Tree organization of Objects'''&lt;br /&gt;
**COR organizes the MOs in a hierarchical manner supporting parent-child relationship, inheritance, association and containment relationships.&lt;br /&gt;
&lt;br /&gt;
*'''Search Operations'''&lt;br /&gt;
**The search operations can be performed on a single MO, or a MO and its children, or a sub tree rooted from the given MO.&lt;br /&gt;
**We can either retrieve all the attributes in the MO matching the given criteria or only the matching attributes.&lt;br /&gt;
&lt;br /&gt;
*'''Object Access'''&lt;br /&gt;
**COR bundle GET APIs can be used to retrieve the attributes values in a efficient manner by grouping the GET requests belonging different MOs into one single request to COR. The values of runtime non-cached attributes will be updated by POI on request by COR.&lt;br /&gt;
&lt;br /&gt;
*'''Class Implementer'''&lt;br /&gt;
**COR provides APIs for the application to implement all the Object instances of a class, for both Configuration and Runtime attributes.&lt;br /&gt;
&lt;br /&gt;
===SAF Notification Features===&lt;br /&gt;
OpenClovis SAFplus Platform is compliant with the following Notification features :&lt;br /&gt;
&lt;br /&gt;
*'''Notification Types'''&lt;br /&gt;
**Alarm&lt;br /&gt;
**State Change&lt;br /&gt;
**Object Create/Delete&lt;br /&gt;
**Attribute Change&lt;br /&gt;
&lt;br /&gt;
*'''Alarm Notification'''&lt;br /&gt;
**An alarm report is a notification of a specific event that may or may not represent an error. OpenClovis Alarm notification is fully compliant with ITU-T X.733 standard (which is recommended by SAF-NTF).&lt;br /&gt;
&lt;br /&gt;
*'''State Change Notification'''&lt;br /&gt;
**OpenClovis AMF provides services for the following state change notifications to the Management Applications&lt;br /&gt;
***HA state of the SU changed&lt;br /&gt;
***SI partially/fully assigned&lt;br /&gt;
***Component arrived/departed&lt;br /&gt;
***Node arrived/departed&lt;br /&gt;
&lt;br /&gt;
*'''Object Create/Delete and Attribute Change Notifications'''&lt;br /&gt;
**OpenClovis SAFplus Platform provides services for the notification of Managed Object Creation, Deletion and Attribute changes. It also supports the Management Applications to filter the attribute change notifications based on attribute identifiers.&lt;br /&gt;
&lt;br /&gt;
*'''Notification Delivery Characteristics'''&lt;br /&gt;
**Guaranteed delivery&lt;br /&gt;
**At most once delivery&lt;br /&gt;
**Ordered delivery&lt;br /&gt;
**Persisted (Alarm notifications).&lt;br /&gt;
&lt;br /&gt;
*'''Notification Filtering'''&lt;br /&gt;
**OpenClovis SAFplus Platform provides service for filtering the notifications based on one or more filter criteria which is particular to the notification type. It also provides the ability to correlate with the other notifications.&lt;br /&gt;
&lt;br /&gt;
=='''Support for SAF AIS Interfaces'''==&lt;br /&gt;
&lt;br /&gt;
OpenClovis SAFplus Platform complies with the SAF AIS interfaces for the following components:&lt;br /&gt;
&lt;br /&gt;
===Availability Management Framework (AMF)===&lt;br /&gt;
&lt;br /&gt;
OpenClovis Availability Management Framework (AMF) supports the following SAF AIS interfaces as mentioned in SAI-AIS-AMF-B.02.01.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;0&amp;quot; cellpadding=&amp;quot;3&amp;quot; align=&amp;quot;center&amp;quot; width=&amp;quot;680&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;bottom&amp;quot; | '''Supported API's of AMF''' &lt;br /&gt;
|- style=&amp;quot;color:#ffffff; background:#549cc6&amp;quot;&lt;br /&gt;
!style=&amp;quot;color:#66b154; background:#09477c&amp;quot; width=&amp;quot;350&amp;quot;| Services &lt;br /&gt;
!style=&amp;quot;color:#66b154; background:#09477c&amp;quot;| Supported APIs&lt;br /&gt;
|- style=&amp;quot;color:#ffffff; background:#549cc6&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
Library Lifecycle Management&lt;br /&gt;
|&lt;br /&gt;
* saAmfInitialize()&lt;br /&gt;
* saAmfSelectionObjectGet()&lt;br /&gt;
* saAmfDispatch()&lt;br /&gt;
* saAmfFinalize()&lt;br /&gt;
|- style=&amp;quot;color:#ffffff; background:#549cc6&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
Component Health Monitoring&lt;br /&gt;
|&lt;br /&gt;
* saAmfHealthCheckStart()&lt;br /&gt;
* saAmfHealthCheckStop()&lt;br /&gt;
* SaAmfHealthCheckCallbackT&lt;br /&gt;
* saAmfHealthCheckConfirm()&lt;br /&gt;
|- style=&amp;quot;color:#ffffff; background:#549cc6&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
Component Registration and Un-registration&lt;br /&gt;
|&lt;br /&gt;
* saAmfComponentRegister()&lt;br /&gt;
* saAmfComponentUnregister()&lt;br /&gt;
* saAmfComponentNameGet()&lt;br /&gt;
|- style=&amp;quot;color:#ffffff; background:#549cc6&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
Component Service Instance Management&lt;br /&gt;
|&lt;br /&gt;
* saAmfHAStateGet()&lt;br /&gt;
* SaAmfCSISetCallbackT&lt;br /&gt;
* SaAmfCSIRemoveCallbackT&lt;br /&gt;
* saAmfCSIQuiescingComplete()&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;0&amp;quot; cellpadding=&amp;quot;3&amp;quot; align=&amp;quot;center&amp;quot; width=&amp;quot;680&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;bottom&amp;quot; | '''Supported API's of AMF''' &lt;br /&gt;
|- style=&amp;quot;color:#ffffff; background:#549cc6&amp;quot;&lt;br /&gt;
!style=&amp;quot;color:#66b154; background:#09477c&amp;quot; width=&amp;quot;350&amp;quot;| Services &lt;br /&gt;
!style=&amp;quot;color:#66b154; background:#09477c&amp;quot;| Supported APIs&lt;br /&gt;
|- style=&amp;quot;color:#ffffff; background:#549cc6&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
Component Lifecycle Management&lt;br /&gt;
|&lt;br /&gt;
* SaAmfComponentTerminateCallbackT&lt;br /&gt;
* SaAmfProxiedComponentInstantiateCallbackT&lt;br /&gt;
* SaAmfProxiedComponentCleanupCallbackT&lt;br /&gt;
|- style=&amp;quot;color:#ffffff; background:#549cc6&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
Protection Group Management&lt;br /&gt;
|&lt;br /&gt;
* saAmfProtectionGroupTrack()&lt;br /&gt;
* SaAmfProtectionGroupTrackCallbackT&lt;br /&gt;
* saAmfProtectionGroupTrackStop()&lt;br /&gt;
|- style=&amp;quot;color:#ffffff; background:#549cc6&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
Component Error Reporting &lt;br /&gt;
|&lt;br /&gt;
* saAmfComponentErrorReport()&lt;br /&gt;
|- style=&amp;quot;color:#ffffff; background:#549cc6&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
Component Response   &lt;br /&gt;
|&lt;br /&gt;
* saAmfResponse()&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;0&amp;quot; cellpadding=&amp;quot;3&amp;quot; align=&amp;quot;center&amp;quot; width=&amp;quot;680&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;bottom&amp;quot; | '''Unsupported API's of AMF''' &lt;br /&gt;
|- style=&amp;quot;color:#ffffff; background:#549cc6&amp;quot;&lt;br /&gt;
!style=&amp;quot;color:#66b154; background:#09477c&amp;quot; width=&amp;quot;350&amp;quot;| Brief &lt;br /&gt;
!style=&amp;quot;color:#66b154; background:#09477c&amp;quot;| Unsupported APIs&lt;br /&gt;
|- style=&amp;quot;color:#ffffff; background:#549cc6&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
Passive Monitoring of processes is not supported&lt;br /&gt;
|&lt;br /&gt;
* saAmfPmStart()&lt;br /&gt;
* saAmfPmStop()&lt;br /&gt;
|- style=&amp;quot;color:#ffffff; background:#549cc6&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
Freeing the memory allocated by the saAmfProtectionGroupTrack()&lt;br /&gt;
|&lt;br /&gt;
* saAmfProtectionGroupNotificationFree()&lt;br /&gt;
|- style=&amp;quot;color:#ffffff; background:#549cc6&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
Component Error Clear API is not supported.&lt;br /&gt;
|&lt;br /&gt;
* saAmfComponentErrorClear()&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Checkpointing Service (CPS)===&lt;br /&gt;
&lt;br /&gt;
OpenClovis Checkpointing Service (CPS) supports the following SAF AIS interfaces as mentioned in SAI-AIS-CKPT-B.01.01.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;0&amp;quot; cellpadding=&amp;quot;3&amp;quot; align=&amp;quot;center&amp;quot; width=&amp;quot;680&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;bottom&amp;quot; | '''Supported API's of CPS''' &lt;br /&gt;
|- style=&amp;quot;color:#ffffff; background:#549cc6&amp;quot;&lt;br /&gt;
!style=&amp;quot;color:#66b154; background:#09477c&amp;quot; width=&amp;quot;350&amp;quot;| Services &lt;br /&gt;
!style=&amp;quot;color:#66b154; background:#09477c&amp;quot;| Supported APIs&lt;br /&gt;
|- style=&amp;quot;color:#ffffff; background:#549cc6&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
Library Lifecycle Management&lt;br /&gt;
|&lt;br /&gt;
* saCkptInitialize()&lt;br /&gt;
* saCkptSelectionObjectGet()&lt;br /&gt;
* saCkptDispatch()&lt;br /&gt;
* saCkptFinalize()&lt;br /&gt;
|- style=&amp;quot;color:#ffffff; background:#549cc6&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
Checkpoint Management&lt;br /&gt;
|&lt;br /&gt;
* saCkptCheckpointOpen()&lt;br /&gt;
* saCkptCheckpointOpenCallabackT&lt;br /&gt;
* saCkptCheckpointOpenAsync()&lt;br /&gt;
* saCkptCheckpointClose()&lt;br /&gt;
* saCkptCheckpointUnlink()&lt;br /&gt;
* saCkptActiveReplicaSet()&lt;br /&gt;
* saCkptCheckpointRetentionDurationSet()&lt;br /&gt;
* saCkptCheckpointStatusGet()&lt;br /&gt;
|- style=&amp;quot;color:#ffffff; background:#549cc6&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
Section Management&lt;br /&gt;
|&lt;br /&gt;
* saCkptSectionIterationInitialize()&lt;br /&gt;
* saCkptSectionIterationNext()&lt;br /&gt;
* saCkptSectionIterationFinalize()&lt;br /&gt;
* saCkptSectionCreate()&lt;br /&gt;
* saCkptSectionExpirationTimeSet()&lt;br /&gt;
* saCkptSectionDelete()&lt;br /&gt;
* saCkptCheckpointWrite()&lt;br /&gt;
|- style=&amp;quot;color:#ffffff; background:#549cc6&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
Data Management&lt;br /&gt;
|&lt;br /&gt;
* saCkptSectionOverwrite()&lt;br /&gt;
* saCkptCheckpointRead()&lt;br /&gt;
* saCkptCheckpointSynchronize()&lt;br /&gt;
* saCkptCheckpointSynchronizeAsync()&lt;br /&gt;
* SaCkptCheckpointSynchronizeCallbackT&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Event Manager (EM)===&lt;br /&gt;
&lt;br /&gt;
OpenClovis Event Manager supports the following SAF AIS interfaces as mentioned in SAI-AIS-EVT-B.01.01.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;0&amp;quot; cellpadding=&amp;quot;3&amp;quot; align=&amp;quot;center&amp;quot; width=&amp;quot;680&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;bottom&amp;quot; | '''Supported API's of EM''' &lt;br /&gt;
|- style=&amp;quot;color:#ffffff; background:#549cc6&amp;quot;&lt;br /&gt;
!style=&amp;quot;color:#66b154; background:#09477c&amp;quot; width=&amp;quot;350&amp;quot;| Services &lt;br /&gt;
!style=&amp;quot;color:#66b154; background:#09477c&amp;quot;| Supported APIs&lt;br /&gt;
|- style=&amp;quot;color:#ffffff; background:#549cc6&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
Library Lifecycle Management&lt;br /&gt;
|&lt;br /&gt;
* saEvtInitialize()&lt;br /&gt;
* saEvtFinalize()&lt;br /&gt;
* saEvtSelectionObjectGet()&lt;br /&gt;
* saEvtDispatch()&lt;br /&gt;
|- style=&amp;quot;color:#ffffff; background:#549cc6&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
Event Operations&lt;br /&gt;
|&lt;br /&gt;
* saEvtEventAllocate()&lt;br /&gt;
* saEvtEventFree()&lt;br /&gt;
* saEvtEventAttributesSet()&lt;br /&gt;
* saEvtEventAttributesGet()&lt;br /&gt;
* saEvtEventDataGet()&lt;br /&gt;
* saEvtEventPublish()&lt;br /&gt;
* saEvtEventSubscribe()&lt;br /&gt;
* SaEvtEventDeliverCallbackT&lt;br /&gt;
* saEvtEventUnsubscribe()&lt;br /&gt;
|- style=&amp;quot;color:#ffffff; background:#549cc6&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
Event Channel Operations&lt;br /&gt;
|&lt;br /&gt;
* saEvtChannelOpen()              &lt;br /&gt;
* saEvtChannelOpenAsync()&lt;br /&gt;
* SaEvtChannelOpenCallbackT&lt;br /&gt;
* saEvtChannelUnlink()&lt;br /&gt;
* saEvtChannelClose()&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;0&amp;quot; cellpadding=&amp;quot;3&amp;quot; align=&amp;quot;center&amp;quot; width=&amp;quot;680&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;bottom&amp;quot; | '''Unsupported API's of EM''' &lt;br /&gt;
|- style=&amp;quot;color:#ffffff; background:#549cc6&amp;quot;&lt;br /&gt;
!style=&amp;quot;color:#66b154; background:#09477c&amp;quot; width=&amp;quot;350&amp;quot;| Brief&lt;br /&gt;
!style=&amp;quot;color:#66b154; background:#09477c&amp;quot;| Unsupported APIs&lt;br /&gt;
|- style=&amp;quot;color:#ffffff; background:#549cc6&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
Event Retention Time is not supported&lt;br /&gt;
|&lt;br /&gt;
* saEvtEventRetentionTimeClear()&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Group Membership Service (GMS)===&lt;br /&gt;
&lt;br /&gt;
OpenClovis Group Membership Service (GMS) supports the following SAF AIS interfaces as mentioned in AIS-CLM-B.01.01.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;0&amp;quot; cellpadding=&amp;quot;3&amp;quot; align=&amp;quot;center&amp;quot; width=&amp;quot;680&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;bottom&amp;quot; | '''Supported API's of GMS''' &lt;br /&gt;
|- style=&amp;quot;color:#ffffff; background:#549cc6&amp;quot;&lt;br /&gt;
!style=&amp;quot;color:#66b154; background:#09477c&amp;quot; width=&amp;quot;350&amp;quot;| Services &lt;br /&gt;
!style=&amp;quot;color:#66b154; background:#09477c&amp;quot;| Supported APIs&lt;br /&gt;
|- style=&amp;quot;color:#ffffff; background:#549cc6&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
Library Lifecycle Management&lt;br /&gt;
|&lt;br /&gt;
* saClmInitialize()&lt;br /&gt;
* saClmSelectionObjectGet()&lt;br /&gt;
* saClmDispatch()&lt;br /&gt;
* saClmFinalize()&lt;br /&gt;
|- style=&amp;quot;color:#ffffff; background:#549cc6&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
Group Membership Operations&lt;br /&gt;
|&lt;br /&gt;
* saClmClusterTrack()&lt;br /&gt;
* SaClmClusterTrackCallbackT&lt;br /&gt;
* saClmClusterTrackStop()&lt;br /&gt;
* saClmClusterNodeGet()&lt;br /&gt;
* saClmClusterNodeGetAsync()&lt;br /&gt;
* SaClmClusterNodeGetCallbackT&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Messaging Service (MSG)===&lt;br /&gt;
&lt;br /&gt;
OpenClovis Messaging Service (MSG) supports the following SAF AIS interfaces as mentioned in SAF-AIS-MSG-B.02.01.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;0&amp;quot; cellpadding=&amp;quot;3&amp;quot; align=&amp;quot;center&amp;quot; width=&amp;quot;680&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;bottom&amp;quot; | '''Supported API's of MSG''' &lt;br /&gt;
|- style=&amp;quot;color:#ffffff; background:#549cc6&amp;quot;&lt;br /&gt;
!style=&amp;quot;color:#66b154; background:#09477c&amp;quot; width=&amp;quot;350&amp;quot;| Services &lt;br /&gt;
!style=&amp;quot;color:#66b154; background:#09477c&amp;quot;| Supported APIs&lt;br /&gt;
|- style=&amp;quot;color:#ffffff; background:#549cc6&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
Library Lifecycle Management&lt;br /&gt;
|&lt;br /&gt;
* saMsgInitialize()&lt;br /&gt;
* saMsgSelectionObjectGet()&lt;br /&gt;
* saMsgDispatch()&lt;br /&gt;
* saMsgFinalize()&lt;br /&gt;
|- style=&amp;quot;color:#ffffff; background:#549cc6&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
Message Queue Operations&lt;br /&gt;
|&lt;br /&gt;
* saMsgQueueOpen()&lt;br /&gt;
* saMsgQueueOpenAsync()&lt;br /&gt;
* SaMsgQueueOpenCallbackT&lt;br /&gt;
* saMsgQueueClose()&lt;br /&gt;
* saMsgQueueStatusGet()&lt;br /&gt;
* saMsgQueueRetentionTimeSet()&lt;br /&gt;
* saMsgQueueUnlink()&lt;br /&gt;
|- style=&amp;quot;color:#ffffff; background:#549cc6&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
Management of Message Queue Groups&lt;br /&gt;
|&lt;br /&gt;
* saMsgQueueGroupCreate()&lt;br /&gt;
* saMsgQueueGroupInsert()&lt;br /&gt;
* saMsgQueueGroupRemove()&lt;br /&gt;
* saMsgQueueGroupDelete()&lt;br /&gt;
* saMsgQueueGroupTrack()&lt;br /&gt;
* SaMsgQueueGroupTrackCallbackT&lt;br /&gt;
* saMsgQueueGroupTrackStop()&lt;br /&gt;
* saMsgQueueGroupNotificationFree()&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;0&amp;quot; cellpadding=&amp;quot;3&amp;quot; align=&amp;quot;center&amp;quot; width=&amp;quot;680&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;bottom&amp;quot; | '''Supported API's of MSG''' &lt;br /&gt;
|- style=&amp;quot;color:#ffffff; background:#549cc6&amp;quot;&lt;br /&gt;
!style=&amp;quot;color:#66b154; background:#09477c&amp;quot; width=&amp;quot;350&amp;quot;| Services &lt;br /&gt;
!style=&amp;quot;color:#66b154; background:#09477c&amp;quot;| Supported APIs&lt;br /&gt;
|- style=&amp;quot;color:#ffffff; background:#549cc6&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
Message Send and Receive Operations&lt;br /&gt;
| &lt;br /&gt;
* saMsgMessageSend()&lt;br /&gt;
* saMsgMessageSendAsync()&lt;br /&gt;
* SaMsgMessageDeliveredCallbackT&lt;br /&gt;
* saMsgMessageGet()&lt;br /&gt;
* saMsgMessageDataFree()&lt;br /&gt;
* SaMsgMessagedReceivedCallbackT&lt;br /&gt;
* saMsgMessageCancel()&lt;br /&gt;
|- style=&amp;quot;color:#ffffff; background:#549cc6&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
Request and Reply Operations&lt;br /&gt;
|&lt;br /&gt;
* saMsgMessageSendReceive()&lt;br /&gt;
* saMsgMessageReply()&lt;br /&gt;
* saMsgMessageReplyAsync()&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=='''Software Management Framework (SMF)'''==&lt;br /&gt;
&lt;br /&gt;
SMF Aligned In Service Software Upgrade (ISSU.&lt;br /&gt;
Supports application and OpenClovis SAFplus Platform middleware upgrade in a rolling (in-service) or single-step mode.&lt;br /&gt;
&lt;br /&gt;
'''Single-Step'''&lt;br /&gt;
For deployment of non-backwards compatible software, or rapid deployment of software.  This method stops the relevant services on all nodes (causing an outage) and then upgrades that software and restarts.  Note that services are stopped at various granularity levels depending on what is being upgraded.  In other words, application A can be taken out-of-service and upgraded across the cluster without affecting application B running on the same nodes.&lt;br /&gt;
&lt;br /&gt;
'''Inservice Rolling'''&lt;br /&gt;
This is the most commonly known telecom quality upgrade method.  For deployment of backwards-compatible software across the cluster, this method stops service in one &amp;quot;upgrade unit&amp;quot; at a time, upgrades the software and restarts before stopping the next &amp;quot;upgrade unit&amp;quot;.  This process continues iteratively until the entire cluster is upgraded.  Since the available redundant capacity takes over for the unit being upgraded service will be unaffected.&lt;br /&gt;
&lt;br /&gt;
=='''Hardware Platform Interface (HPI)'''==&lt;br /&gt;
&lt;br /&gt;
SAFplus Platform has been integrated and tested with the following implementations of HPI B.01.01 specification.&lt;br /&gt;
* OpenHPI 2.8.1, 2.10.2, 2.16.0&lt;br /&gt;
* Radisys HPI 1.4&lt;br /&gt;
&lt;br /&gt;
The following sections lists out the SAF HPI APIs that are used by SAFplus Platform. Platform provider shall provide at these HPI services in order to integration with OpenClovis SAFplus Platform&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;0&amp;quot; cellpadding=&amp;quot;3&amp;quot; align=&amp;quot;center&amp;quot; width=&amp;quot;680&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;bottom&amp;quot; | '''SAF HPI APIs used by SAFplus''' &lt;br /&gt;
|- style=&amp;quot;color:#ffffff; background:#549cc6&amp;quot;&lt;br /&gt;
!style=&amp;quot;color:#66b154; background:#09477c&amp;quot; width=&amp;quot;350&amp;quot;| Services &lt;br /&gt;
!style=&amp;quot;color:#66b154; background:#09477c&amp;quot;| Supported APIs&lt;br /&gt;
|- style=&amp;quot;color:#ffffff; background:#549cc6&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
General APIs&lt;br /&gt;
|&lt;br /&gt;
* saHpiVersionGet()&lt;br /&gt;
|- style=&amp;quot;color:#ffffff; background:#549cc6&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
Domain APIs&lt;br /&gt;
|&lt;br /&gt;
* saHpiSessionClose()&lt;br /&gt;
* saHpiSessionOpen()&lt;br /&gt;
* saHpiDiscover()&lt;br /&gt;
* saHpiRptEntryGet()&lt;br /&gt;
* saHpiRptEntryGetByResourceId()&lt;br /&gt;
* saHpiSubscribe()&lt;br /&gt;
* saHpiUnsubscribe()&lt;br /&gt;
* saHpiEventGet()&lt;br /&gt;
|- style=&amp;quot;color:#ffffff; background:#549cc6&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
Resource APIs&lt;br /&gt;
|&lt;br /&gt;
* saHpiRdrGet()&lt;br /&gt;
* saHpiAutoExtractTimeoutSet()&lt;br /&gt;
* saHpiAutoInsertTimeoutSet()&lt;br /&gt;
* saHpiHotSwapPolicyCancel()&lt;br /&gt;
* saHpiResourceActiveSet()&lt;br /&gt;
* saHpiResourceInactiveSet()&lt;br /&gt;
* saHpiHotSwapStateGet()&lt;br /&gt;
* saHpiHotSwapActionRequest()&lt;br /&gt;
* saHpiHotSwapIndicatorStateGet()&lt;br /&gt;
* saHpiResourceResetStateSet()&lt;br /&gt;
* saHpiResourcePowerStateSet()&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
In addition to the above APIs SAFplus Platform also depends on the following events generated by HPI&lt;br /&gt;
# Hot Swap events (SAHPI_ET_HOTSWAP) &lt;br /&gt;
# Sensor events (SAHPI_ET_SENSOR)&lt;br /&gt;
# Resource Events (SAHPI_ET_RESOURCE)&lt;br /&gt;
&lt;br /&gt;
=='''Modifications to SAF AIS Header files'''==&lt;br /&gt;
&lt;br /&gt;
In a few instances, OpenClovis engineers found that the standard SAF-supplied header files caused errors and warnings on certain compilers.  In these cases OpenClovis modified the standard SAF header file to work with these compilers.  All of these changes broaden the set of compatible compilers.  None of these changes modify the SAF APIs.&lt;br /&gt;
&lt;br /&gt;
For example, in saAis.h, the following constant is defined:&lt;br /&gt;
&lt;br /&gt;
 #define SA_TIME_ONE_MINUTE      60000000000&lt;br /&gt;
&lt;br /&gt;
However, the number defined is greater than a 32-bit integer, so it is actually required to append a size suffix:&lt;br /&gt;
&lt;br /&gt;
 #define SA_TIME_ONE_MINUTE      60000000000LL&lt;/div&gt;</summary>
		<author><name>MediaWiki spam cleanup</name></author>	</entry>

	<entry>
		<id>https://help.openclovis.com/index.php/Doc:latest/logtoolguide</id>
		<title>Doc:latest/logtoolguide</title>
		<link rel="alternate" type="text/html" href="https://help.openclovis.com/index.php/Doc:latest/logtoolguide"/>
				<updated>2012-02-21T03:48:16Z</updated>
		
		<summary type="html">&lt;p&gt;MediaWiki spam cleanup: Reverting to last revision not containing links to www.buyxanaxonlinepill.com&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=='''Preface'''==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt; ''OpenClovis Log Tool User Guide''  provides information about the usage of OpenClovis Log Tool.&lt;br /&gt;
OpenClovis Log Tool is an interactive utility that allows you to view binary log files in a readable format and hence monitor system errors, warnings, and other log information. By analyzing this information, you can troubleshoot the errors. These log files are in raw format and hard to read. Log Tool allows you to format the files and filter them for the required entries. &lt;br /&gt;
&lt;br /&gt;
===Documentation Conventions===&lt;br /&gt;
&lt;br /&gt;
This guide uses different fonts and symbols to differentiate between document elements and types of information. These conventions are summarized in the following table:&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;0&amp;quot; cellpadding=&amp;quot;3&amp;quot;&lt;br /&gt;
|- style=&amp;quot;color:#ffffff; background:#549cc6&amp;quot;&lt;br /&gt;
!style=&amp;quot;color:#66b154; background:#09477c&amp;quot;| Notation &lt;br /&gt;
!style=&amp;quot;color:#66b154; background:#09477c&amp;quot;| Description&lt;br /&gt;
|- style=&amp;quot;color:#ffffff; background:#549cc6&amp;quot;&lt;br /&gt;
|style=&amp;quot;color:black&amp;quot; | &amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;Code&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
This font denotes various commands and their usage.&lt;br /&gt;
|- style=&amp;quot;color:#ffffff; background:#549cc6&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
Cross reference&lt;br /&gt;
|&lt;br /&gt;
This font denotes a hyperlink. You can click on the hyperlink text to access the reference location, which can be either a section within the User Guide or a URL link.&lt;br /&gt;
A cross reference refers to a section name accesses the first page of that section.&lt;br /&gt;
|- style=&amp;quot;color:#ffffff; background:#549cc6&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
'''Bold Text''' &lt;br /&gt;
|&lt;br /&gt;
Menu items and button names.&lt;br /&gt;
|- style=&amp;quot;color:#ffffff; background:#549cc6&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
''Italic Text'' &lt;br /&gt;
|&lt;br /&gt;
Variables for which you enter values.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;[[File:OpenClovis_Note.png]]This indicates the presence of notes or annotations, related to the context of the document.&lt;br /&gt;
&amp;lt;br&amp;gt;[[File:OpenClovis_Caution.png]]This indicates that certain precautionary measures must be taken before performing a particular task.&lt;br /&gt;
&amp;lt;br&amp;gt;[[File:OpenClovis_Info.png]]This indicates that additional information is provided to you.&lt;br /&gt;
&lt;br /&gt;
===Document Organization===&lt;br /&gt;
&lt;br /&gt;
This guide is organized into various chapters to provide information on specific areas. The following table introduces the chapter names and a brief overview of the content. &lt;br /&gt;
{| border=&amp;quot;0&amp;quot; cellpadding=&amp;quot;3&amp;quot;&lt;br /&gt;
|- style=&amp;quot;color:#ffffff; background:#549cc6&amp;quot;&lt;br /&gt;
!style=&amp;quot;color:#66b154; background:#09477c&amp;quot;| Chapter &lt;br /&gt;
!style=&amp;quot;color:#66b154; background:#09477c&amp;quot;| Overview&lt;br /&gt;
|- style=&amp;quot;color:#ffffff; background:#549cc6&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
Preface&lt;br /&gt;
|&lt;br /&gt;
This chapter gives an introduction to OpenClovis Log Tool.&lt;br /&gt;
|- style=&amp;quot;color:#ffffff; background:#549cc6&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
Available Tools&lt;br /&gt;
|&lt;br /&gt;
This chapter helps you understand the conceptual information, advantages and key features of OpenClovis Log Tools. It provides information to access the available Log Tools, Command Line Log Tool and Offline GUI Log Tool.&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Related Documents===&lt;br /&gt;
&lt;br /&gt;
For additional information about OpenClovis products, refer to the following guides:&lt;br /&gt;
* '''OpenClovis Release Notes''' provides information about the software and the hardware required to install OpenClovis Application Service Platform (SAFplus Platform) and Integrated Development Environment (IDE). It contains the additional features and enhancements of the product since the previous release. It also summarizes the issues and limitations of the product and provides workarounds wherever applicable.&lt;br /&gt;
* '''OpenClovis SA Forum Compliance''' describes the level of compliance of OpenClovis SAFplus Platform and its Application Programming Interface (API) with the relevant Service Availability Forum Specifications.&lt;br /&gt;
* '''OpenClovis Installation Guide''' provides the system requirements, installation procedure for OpenClovis SAFplus Platform, IDE, and the Evaluation System.&lt;br /&gt;
* '''OpenClovis Sample Application Tutorial''' provides the steps to create and build a sample model using OpenClovis IDE and OpenClovis SAFplus Platform. It also provides troubleshooting information for this process. This provides the logical first step in understanding the OpenClovis offering.&lt;br /&gt;
* '''OpenClovis Evaluation System User Guide''' provides all the required information to configure and run the sample models packaged within the Evaluation System. This document also provides good understanding of OpenClovis SAFplus Platform's functionality. This is the natural follow on to the ''OpenClovis Sample Application Tutorial'' as it builds on the example created in that document. &lt;br /&gt;
* '''OpenClovis SDK User Guide''' provides information about OpenClovis Application Service Platform (SAFplus Platform) architecture, various OpenClovis SAFplus Platform components, and their interactions. This guide helps you to configure the OpenClovis SAFplus Platform components, compile, and execute the OpenClovis SAFplus Platform code to build your custom application.&lt;br /&gt;
* '''OpenClovis IDE User Guide''' describes the usage of Integrated Development Environment (IDE), a graphical development environment that complements the SAFplus Platform platform. This guide helps you to understand how to use the various features of the IDE to build the application.&lt;br /&gt;
* '''OpenClovis API Reference Guide''' is provided for each component. It describes the Application Programming Interface (API), Service Model, and Management Information Model of the various OpenClovis Application Service Platform (SAFplus Platform) services. It helps the developer to understand the capabilities of the SAFplus Platform services and the APIs provided by these services.&lt;br /&gt;
* '''OpenClovis SAFplus Platform Console Reference Guide''' provides details about managing applications built on OpenClovis SAFplus Platform using the SAFplus Platform runtime debug console commands. SAFplus Platform Console commands can be used to manage, monitor, and test your application.&lt;br /&gt;
&lt;br /&gt;
===OpenClovis Online Technical Support===&lt;br /&gt;
&lt;br /&gt;
OpenClovis customers and partners can register on our Web site and receive personalized services and information. If you need any support or assistance while working on OpenClovis products, you can access the following: URL:  http://www.openclovis.com. Send your queries to: support@openclovis.com. Open source community support is available at: http://www.openclovis.org/forum&lt;br /&gt;
&lt;br /&gt;
===Documentation Feedback===&lt;br /&gt;
&lt;br /&gt;
We are interested in hearing from our customers on the documentation provided with the product. Let us know your comments and suggestions on improving the documentation at OpenClovis Inc. Send your comments to:  support@openclovis.com. Post your feedback on documentation at: http://www.openclovis.org/forum&lt;br /&gt;
&lt;br /&gt;
=='''Available Log Tools'''==&lt;br /&gt;
&lt;br /&gt;
Log files come in 2 flavors, binary and ASCII. ASCII files are easily viewable using standard Linux editors and tools (vi, emacs, tail, etc).  By default OpenClovis writes all of its logs in ASCII format.  However you may want to change this to binary format or create your own binary format logs.  For the binary format logs OpenClovis provides access using following tools :&lt;br /&gt;
* [[#Using Command Line Log Tool | Command Line Log Tool ]]&lt;br /&gt;
* [[#Using Offline GUI Log Tool | Offline GUI Log Tool ]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Using Command Line Log Tool===&lt;br /&gt;
&lt;br /&gt;
The online log viewer is a command line utility which may be used to view the Log Records present in the binary log files. The online log viewer only works on binary log files. To view an ASCII log file simply open them with your favorite editor. &lt;br /&gt;
&lt;br /&gt;
The online log viewer displays the log records after some required conversion. It converts the Severity, StreamId, ComponentId to their corresponding names. This conversion is done using information present in metadata file (cfg file) corresponding to each log file. By default, the online log viewer displays the following fields of a log record:&lt;br /&gt;
# SeverityName &lt;br /&gt;
# StreamName &lt;br /&gt;
# ComponentName &lt;br /&gt;
# ServiceId &lt;br /&gt;
# MessageId &lt;br /&gt;
# TimeStamp &lt;br /&gt;
# Message&lt;br /&gt;
&lt;br /&gt;
[[File:OpenClovis_Note.png]]Its very rare that log viewer does not find the stream id to stream name mapping in cfg file. If it does not then it would display the stream id in place of stream name. Same holds true for component id to component name mapping. In this situation it would not be possible to apply filter on that field.&lt;br /&gt;
&lt;br /&gt;
Online log viewer executable &amp;lt;code&amp;gt;'''asp_binlogviewer'''&amp;lt;/code&amp;gt; is deployed in &amp;lt;code&amp;gt;'''bin'''&amp;lt;/code&amp;gt; directory of the SAFplus Platform. This online log viewer may be used in following ways :&lt;br /&gt;
&amp;lt;ol&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt; To view log records present in a log file (or a set of log files when multiple log files are present for a logical log file) in real time i.e. when logging is going on. In this case it seeks to the latest record and starts displaying the record from that point (which can even be the last record of the log file). As the Log Server writes, this Log Tool tails the files and prints it to the Console. It automatically detects file rollover and tails the new file.&lt;br /&gt;
&amp;lt;br&amp;gt;'''Usage''':&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
asp_binlogviewer -l &amp;lt;log_file_prefix&amp;gt; &lt;br /&gt;
                [-f &amp;lt;filter&amp;gt;] &lt;br /&gt;
                [-t &amp;lt;msg_id_map_file&amp;gt;] &lt;br /&gt;
                [-p &amp;lt;num_prev_recs&amp;gt;] &lt;br /&gt;
                [-c &amp;lt;column(s)&amp;gt;] &lt;br /&gt;
                [-a] [-h|--help]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;To convert a binary log file to its corresponding text file (this text file contains the log records in exactly the same format as it is displayed on the console) :&lt;br /&gt;
&amp;lt;br&amp;gt;'''Usage''': &lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
asp_binlogviewer -L &amp;lt;log_file_path&amp;gt; &lt;br /&gt;
                [-C &amp;lt;cfg_file_path&amp;gt;] &lt;br /&gt;
                [-t &amp;lt;msg_id_map_file&amp;gt;] &lt;br /&gt;
                [-h|--help]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
[[File:OpenClovis_Note.png]]User may convert a binary log file to its corresponding text file when logging is going on as well as when it has stopped.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====Viewing log records in real time====&lt;br /&gt;
&lt;br /&gt;
=====Specify the location of log files=====&lt;br /&gt;
&lt;br /&gt;
*&amp;lt;code&amp;gt;-l&amp;lt;/code&amp;gt;: This is the mandatory option for viewing records in real time. &lt;br /&gt;
&lt;br /&gt;
It is used to specify the common prefix to log files (symbolic links to log files) on file system. &amp;lt;code&amp;gt;&amp;lt;log_file_prefix&amp;gt;&amp;lt;/code&amp;gt; is common prefix of log file names.&lt;br /&gt;
&lt;br /&gt;
'''Example''': &lt;br /&gt;
&amp;lt;br&amp;gt;The log files are &amp;lt;code&amp;gt;/tmp/logFile.0&amp;lt;/code&amp;gt; &amp;lt;code&amp;gt;/tmp/logFile.1&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;/tmp/logFile.2&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
'''Usage''':&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
$ASP_BINDIR/asp_binlogviewer -l /tmp/logFile&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====Setting Filter on a header field=====&lt;br /&gt;
&lt;br /&gt;
*-f : User may specify filter on one of the header fields&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;filter&amp;gt;&amp;lt;/code&amp;gt; should be specified as:&lt;br /&gt;
&lt;br /&gt;
 &amp;quot;&amp;lt;header field&amp;gt;&amp;lt;comparision operator&amp;gt;&amp;lt;value&amp;gt;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
'''\&amp;lt;header field\&amp;gt; options:'''&lt;br /&gt;
&lt;br /&gt;
* s - SeverityName&lt;br /&gt;
* r - StreamName&lt;br /&gt;
* c - ComponentName&lt;br /&gt;
* v - ServiceId&lt;br /&gt;
* t - TimeStamp&lt;br /&gt;
* m - MessageId&lt;br /&gt;
&lt;br /&gt;
'''\&amp;lt;comparision operator\&amp;gt; options:'''&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;=&amp;lt;/code&amp;gt; Equal To&lt;br /&gt;
* &amp;lt;code&amp;gt;!=&amp;lt;/code&amp;gt; Not Equal To&lt;br /&gt;
* &amp;lt;code&amp;gt;&amp;lt;&amp;lt;/code&amp;gt; Less Than&lt;br /&gt;
* &amp;lt;code&amp;gt;&amp;lt;=&amp;lt;/code&amp;gt; Less Than and Equal To&lt;br /&gt;
* &amp;lt;code&amp;gt;&amp;gt;&amp;lt;/code&amp;gt; Greater Than&lt;br /&gt;
* &amp;lt;code&amp;gt;&amp;gt;=&amp;lt;/code&amp;gt; Greater Than and Equal To&lt;br /&gt;
&lt;br /&gt;
'''Possible \&amp;lt;value\&amp;gt; in a filter:'''&lt;br /&gt;
&lt;br /&gt;
'value' should be: &lt;br /&gt;
&lt;br /&gt;
*String for following fields : SeverityName, StreamName, ComponentName &lt;br /&gt;
*HH:MM:SS for TimeStamp &lt;br /&gt;
*Integer for following fields : ServiceId, MessageId &lt;br /&gt;
 &lt;br /&gt;
'''Example''':&lt;br /&gt;
&amp;lt;br&amp;gt;Set filter on stream name (StreamName) 'CL_LOG_APPLICATION'	&lt;br /&gt;
&lt;br /&gt;
'''Usage''':&lt;br /&gt;
 $ASP_BINDIR/asp_binlogviewer -l &amp;lt;log_file_prefix&amp;gt;  -f &amp;quot;r=CL_LOG_APPLICATION&amp;quot;&lt;br /&gt;
&lt;br /&gt;
For time stamp having value greater than 4.30pm...	&lt;br /&gt;
&lt;br /&gt;
'''Usage''': &lt;br /&gt;
 $ASP_BINDIR/asp_binlogviewer -l &amp;lt;log_file_prefix&amp;gt;  -f &amp;quot;t&amp;gt;16:30:00&amp;quot;&lt;br /&gt;
&lt;br /&gt;
=====Specify TLV mapping file=====&lt;br /&gt;
&lt;br /&gt;
*-t : This option is used when log files contain records of TLV (tag length value) format.&lt;br /&gt;
&lt;br /&gt;
Specify complete path to TLV mapping file. &lt;br /&gt;
&lt;br /&gt;
'''Example''': &lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;code&amp;gt;tlvmap.txt&amp;lt;/code&amp;gt; contains the TLV mapping for log records of log file /tmp/sys.0&lt;br /&gt;
&lt;br /&gt;
'''Usage''': &lt;br /&gt;
 $ASP_BINDIR/asp_binlogviewer -l /tmp/sys -t tlvmap.txt&lt;br /&gt;
&lt;br /&gt;
Following is a sample TLV map file which contains message id to TLV message mapping. TLV File content should be in following format :&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
 Message_ID&amp;lt;space&amp;gt;Message containing %TLV&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
where &amp;lt;code&amp;gt;&amp;lt;space&amp;gt;&amp;lt;/code&amp;gt; is a single space.&lt;br /&gt;
&lt;br /&gt;
[[File:OpenClovis_Note.png]]All the %TLV are replaced by their corresponding values from log record's tag, length, value information for that message id.&lt;br /&gt;
&lt;br /&gt;
Following are the sample content of a TLV map file tlvmap.txt :&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
 5 Component %TLV was unble to start on node %TLV&lt;br /&gt;
 6 State Change: Entity [%TLV] Operational State (%TLV -&amp;gt; %TLV) AMF (%TLV)&lt;br /&gt;
 7 Registering Component %TLV via eoPort %TLV&lt;br /&gt;
 8 Extending %TLV byte pool of %TLV chunkSize&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This file contains the message id to string mapping for TLV (tag lengh value) messages. '%TLV' of tlv strings are replaced by the corresponding value found in the log record.&lt;br /&gt;
&lt;br /&gt;
=====Display previous log records=====&lt;br /&gt;
&lt;br /&gt;
* -p: Display &amp;lt;code&amp;gt;&amp;lt;num_prev_recs&amp;gt;&amp;lt;/code&amp;gt; previous log records and exit&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;num_prev_recs&amp;gt;&amp;lt;/code&amp;gt; is the number of previous log records to be displayed. If user specifies a number greater than the maximum log records or number of log records actually present in all the log files then entire log is displayed.&lt;br /&gt;
&lt;br /&gt;
'''Example''': &lt;br /&gt;
&amp;lt;br&amp;gt;View 10 previous records&lt;br /&gt;
&lt;br /&gt;
'''Usage''': &lt;br /&gt;
 $ASP_BINDIR/asp_binlogviewer -l &amp;lt;log_file_prefix&amp;gt; -p 10&lt;br /&gt;
&lt;br /&gt;
=====Display only selected fields of Log Record=====&lt;br /&gt;
&lt;br /&gt;
*-c : Display selected field(s) of Log Record&lt;br /&gt;
&lt;br /&gt;
User may choose to display only selected fields of log record. This can be achieved by using -c option where the numbers are separated by ',' .&lt;br /&gt;
&lt;br /&gt;
The default columns are :&lt;br /&gt;
# SeverityName &lt;br /&gt;
# StreamName &lt;br /&gt;
# ComponentName &lt;br /&gt;
# ServiceId &lt;br /&gt;
# MessageId &lt;br /&gt;
# TimeStamp &lt;br /&gt;
# Message&lt;br /&gt;
&lt;br /&gt;
'''Example''':&lt;br /&gt;
&amp;lt;br&amp;gt;Display only the following fields: StreamName, ServiceId, TimeStamp  &lt;br /&gt;
&lt;br /&gt;
'''Usage''': &lt;br /&gt;
 $ASP_BINDIR/asp_binlogviewer -l &amp;lt;log_file_prefix&amp;gt; -c 2,4,6&lt;br /&gt;
&lt;br /&gt;
=====Display records present in entire log file(s)=====&lt;br /&gt;
*-a : Display entire log and exit&lt;br /&gt;
&lt;br /&gt;
This option displays all the log records present in a log file or all log files when multiple log files are present for single logical file.&lt;br /&gt;
&lt;br /&gt;
'''Example''': &lt;br /&gt;
&amp;lt;br&amp;gt;Display all the log records which file &amp;lt;code&amp;gt;/tmp/sys.0&amp;lt;/code&amp;gt; contains&lt;br /&gt;
&lt;br /&gt;
'''Usage''': &lt;br /&gt;
 $ASP_BINDIR/asp_binlogviewer -l /tmp/sys -a&lt;br /&gt;
&lt;br /&gt;
====Convert a binary log file to text file====&lt;br /&gt;
&lt;br /&gt;
=====Specify complete path to log file=====&lt;br /&gt;
&lt;br /&gt;
* -L : &amp;lt;log_file_path&amp;gt; is complete path to a log file.&lt;br /&gt;
&lt;br /&gt;
* -C : &amp;lt;cfg_file_prefix&amp;gt; is prefix to cfg (metadata) file. This is an optional argument which is required when log file name and prefix of cfg file are different.&lt;br /&gt;
&lt;br /&gt;
* -t : If log file contains TLV messages then please specify TLV file path using this option.&lt;br /&gt;
&lt;br /&gt;
If log file is &amp;lt;code&amp;gt;/tmp/logFile&amp;lt;/code&amp;gt; the corresponding text file will be &amp;lt;code&amp;gt;/tmp/logFile.txt&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Example''':&lt;br /&gt;
&amp;lt;br&amp;gt;When log file name and prefix of cfg files are the same (log file is &amp;lt;code&amp;gt;/tmp/sys_2007-04-18T18:58:36&amp;lt;/code&amp;gt; and cfg file is &amp;lt;code&amp;gt;/tmp/sys_2007-04-18T18:58:36.cfg&amp;lt;/code&amp;gt;) :&lt;br /&gt;
&lt;br /&gt;
'''Usage''': &lt;br /&gt;
 $ASP_BINDIR/asp_binlogviewer -L /tmp/sys_2007-04-18T18:58:36 &lt;br /&gt;
&lt;br /&gt;
'''Example''':&lt;br /&gt;
&amp;lt;br&amp;gt;When log file name and prefix of cfg files are different (log file is &amp;lt;code&amp;gt;/tmp/sys_2007-04-18T18:58:37&amp;lt;/code&amp;gt; and cfg file is &amp;lt;code&amp;gt;/tmp/sys_2007-04-18T18:58:36.cfg&amp;lt;/code&amp;gt;) :&lt;br /&gt;
&lt;br /&gt;
'''Usage''': &lt;br /&gt;
 $ASP_BINDIR/asp_binlogviewer -L /tmp/sys_2007-04-18T18:58:37 \&lt;br /&gt;
                              -C /tmp/sys_2007-04-18T18:58:36&lt;br /&gt;
&lt;br /&gt;
====For detailed help use --h or --help====&lt;br /&gt;
&lt;br /&gt;
*--help | -h : Display help and exit&lt;br /&gt;
&lt;br /&gt;
'''Usage''': &lt;br /&gt;
 $ASP_BINDIR/asp_binlogviewer -h&lt;br /&gt;
&lt;br /&gt;
 $ASP_BINDIR/asp_binlogviewer --help&lt;br /&gt;
&lt;br /&gt;
====Command line log tool Output Format====&lt;br /&gt;
&lt;br /&gt;
As the Log Server writes, this Log Tool tails the files and prints it to the Console. It automatically detects file rollover and tails the new file. &lt;br /&gt;
&lt;br /&gt;
The output is of the form: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
SEVERITY STREAMNAME COMPONENTNAME SERVICEID MESSAGEID TIMESTAMP MESSAGE&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
For example,  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
DEBUG applogs cpmServer_SysController_1 10 0 {Mon Jan 22 17:41:08 2007} \&lt;br /&gt;
( 0x6d 0x53 0x27 0x2a 0x97 0x22 0x1e 0x34 )&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt; &lt;br /&gt;
&lt;br /&gt;
where, &lt;br /&gt;
&lt;br /&gt;
*&amp;lt;code&amp;gt;Debug&amp;lt;/code&amp;gt; is the Severity&lt;br /&gt;
*&amp;lt;code&amp;gt;applogs&amp;lt;/code&amp;gt; is the Stream Name&lt;br /&gt;
*&amp;lt;code&amp;gt;cpmServer_SysController_1&amp;lt;/code&amp;gt; is the Component Name&lt;br /&gt;
*&amp;lt;code&amp;gt;10&amp;lt;/code&amp;gt; is the Service ID&lt;br /&gt;
*&amp;lt;code&amp;gt;{Mon Jan 22 17:41:08 2007}&amp;lt;/code&amp;gt; is the Time Stamp&lt;br /&gt;
*&amp;lt;code&amp;gt;0&amp;lt;/code&amp;gt; is the Message ID which indicates that it is BUFFER type Binary Message. Message ID 1 is for ASCII message and it is not supported by log viewer, Message IDs other than 0 and 1 are of TLV type Binary Message.&lt;br /&gt;
*&amp;lt;code&amp;gt;( 0x6d 0x53 0x27 0x2a 0x97 0x22 0x1e 0x34 )&amp;lt;/code&amp;gt; This is the hex value of each message byte separated by a space.&lt;br /&gt;
*online log viewer doesn't interpret the message part in case of BUFFER type records, it simply prints each byte of the message.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Using Offline GUI Log Tool===&lt;br /&gt;
&lt;br /&gt;
OpenClovis Offline Log Tool is an interactive GUI utility that allows you to view log files in a readable format and provides support for navigation, filtering and sorting of the log records. The Offline Log Tool only works on binary log files. To view ASCII log file simply open them with your favorite editor.&lt;br /&gt;
&lt;br /&gt;
====Getting Started====&lt;br /&gt;
&lt;br /&gt;
This provides information to launch the GUI Log Tool and helps you familiarize with its features. &lt;br /&gt;
&lt;br /&gt;
=====How To Launch? =====&lt;br /&gt;
&lt;br /&gt;
The Log Tool is installed in the &amp;lt;code&amp;gt;'''&amp;lt;installation_directory&amp;gt;/sdk-3.0/bin'''&amp;lt;/code&amp;gt; directory during OpenClovis SDK installation.&lt;br /&gt;
&lt;br /&gt;
If you have created the symbolic links during OpenClovis SDK installation, execute the following command:&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;# cl-log-viewer&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt; &lt;br /&gt;
&lt;br /&gt;
If you have not created the symbolic links during OpenClovis SDK installation, go to the  &amp;lt;code&amp;gt;'''&amp;lt;installation_directory&amp;gt;/sdk-3.0/bin'''&amp;lt;/code&amp;gt;  directory and execute the following command:&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;# cl-log-viewer&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt; &lt;br /&gt;
&lt;br /&gt;
Alternatively, you can go to the  &amp;lt;code&amp;gt;'''&amp;lt;installation_directory&amp;gt;/sdk-3.0/logviewer'''&amp;lt;/code&amp;gt;  directory and execute the following command:&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;# ./logViewer.sh&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt; &lt;br /&gt;
&lt;br /&gt;
Using 'cl-log-viewer' approach to launch the Log Tool is encouraged.&lt;br /&gt;
&lt;br /&gt;
The '''Log Tool''' window is displayed.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id='LogToolMainWindow'&amp;gt;&amp;lt;/span&amp;gt;[[File:LogTool_MainWindow.jpg|frame|center|'''Log Tool Main Window''']]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* [[#Using Menus | Using Menus]] &lt;br /&gt;
* [[#Using Toolbar | Using Toolbar]]&lt;br /&gt;
&lt;br /&gt;
=====Using Menus=====&lt;br /&gt;
&lt;br /&gt;
Log Tool has the following three menus:&lt;br /&gt;
* '''File''' - The File menu has options that allow you to open a file, close the current open file, close all open files, and exit the tool.&lt;br /&gt;
* '''Tools''' - The Tools menu has options that allow you to create and save filters, access the saved filters, and configure settings for the filter location and the mapping file.&lt;br /&gt;
* '''Help''' - The Help menu provides information about the Log Tool.&lt;br /&gt;
&lt;br /&gt;
=====Using Toolbar=====&lt;br /&gt;
&lt;br /&gt;
The add-on icons for the Log Tool are as shown. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id='LogToolToolbar'&amp;gt;&amp;lt;/span&amp;gt;[[File:LogTool_ToolBar.jpg|frame|center| '''Log Tool Toolbar''']]&lt;br /&gt;
* '''Open Stream''' icon - Use this icon to open a Log file.&lt;br /&gt;
* '''Close Stream''' icon - Use this icon to close a Log file.&lt;br /&gt;
* '''Create Advanced Filter''' icon - Use this icon to create, apply, and save filters.&lt;br /&gt;
* '''Saved Filters''' - Use this icon to apply the saved filter to a set of records.&lt;br /&gt;
* '''Exit Log Tool''' - Use this icon to close the '''Log Tool''' window.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====Viewing Log Files====&lt;br /&gt;
&lt;br /&gt;
This section provides information to open log files, use filters to customize views, configure the user directory, and mapping file locations. &lt;br /&gt;
&lt;br /&gt;
'''Key Topics''' :&lt;br /&gt;
* [[#Opening Log File | Opening Log File]] &lt;br /&gt;
* [[#Sorting Log Records | Sorting Log Records]] &lt;br /&gt;
* [[#Navigating Log Records | Navigating Log Records]] &lt;br /&gt;
&lt;br /&gt;
=====Opening Log File=====&lt;br /&gt;
&lt;br /&gt;
To open a Log file:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ol&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;From the '''File''' menu, click '''Open''' or press '''Ctrl+O'''. The '''File Selection Dialog''' dialog box is displayed.&lt;br /&gt;
&amp;lt;span id='File Selection Dialog'&amp;gt;&amp;lt;/span&amp;gt;[[File:LogTool_FileSelectionDialog.jpg|frame|center|'''File Selection Dialog''']]&lt;br /&gt;
&amp;lt;li&amp;gt;Enter the following:&lt;br /&gt;
* '''Log File''' - Click '''Browse'''. The '''Select Log File''' dialog box is displayed. Specify the binary Log file that you need to view. The log file has the log records in the binary format. Click '''OK'''. The '''Select Log File'''  dialog box closes.&lt;br /&gt;
&amp;lt;span id='Select Log File'&amp;gt;&amp;lt;/span&amp;gt;[[File:LogTool_SelectLogFile.jpg|frame|center| '''Select Log File''' ]]&lt;br /&gt;
*  '''Config File'''  - Click  '''Browse'''. The  '''Select Config File'''  dialog box is displayed. Specify the configuration file that configuration data (such as record length, component ID mapping, and stream ID mapping) for the log file. Click  '''OK''' . The  '''Select Config File'''  dialog box closes.&lt;br /&gt;
&amp;lt;span id='Select Config File'&amp;gt;&amp;lt;/span&amp;gt;[[File:LogTool_SelectConfigFile.jpg|frame|center|'''Select Config File''']]&lt;br /&gt;
&amp;lt;li&amp;gt;In the '''File Selection Dialog''' dialog box, click '''OK'''. The selected Log file opens in the '''Log Tool'''  window. &lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Validations are performed to check if you have specified the correct files. If the files are not correct, the corresponding error message is displayed.&lt;br /&gt;
&amp;lt;span id='Opened Log File'&amp;gt;&amp;lt;/span&amp;gt;[[File:LogTool_OpenedLogFile.jpg|frame|center|'''Opened Log File''']]&lt;br /&gt;
&lt;br /&gt;
=====Sorting Log Records=====&lt;br /&gt;
&lt;br /&gt;
You can click each column header to sort the entries. Every time you click the column header, the direction of sorting changes. Sorting is applicable for the current batch of records only. &lt;br /&gt;
&lt;br /&gt;
=====Listing Log Records=====&lt;br /&gt;
&lt;br /&gt;
The following options are provided for listing Log Records:&lt;br /&gt;
* Click '''First''' to view the first batch of records.&lt;br /&gt;
* Click '''Next''' to view the next batch of records.&lt;br /&gt;
* Click '''Previous''' to view the previous batch of records.&lt;br /&gt;
* Click '''Last''' to view the last batch of records.&lt;br /&gt;
&lt;br /&gt;
====Using Filters====&lt;br /&gt;
&lt;br /&gt;
This chapter provides information on using basic filter, creating and saving filter and using saved filters.&lt;br /&gt;
&lt;br /&gt;
A typical log file generally contains large number of entries. When you need to troubleshoot a problem, only certain entries may be relevant. For example, you may need to view logs with severity level 3. You can use filters to view the log file based on certain criteria to create customized views. You can also save the filter criteria and use it at a later time.&lt;br /&gt;
&lt;br /&gt;
'''Key Topics''' :&lt;br /&gt;
* [[#Using Basic Filter | Using Basic Filter]] &lt;br /&gt;
* [[#Creating and Saving Filter | Creating and Saving Filter]] &lt;br /&gt;
* [[#Using Saved Filter | Using Saved Filter]] &lt;br /&gt;
&lt;br /&gt;
=====Using Basic Filter=====&lt;br /&gt;
&lt;br /&gt;
Basic filter comprises the drop-down lists available in the  '''Log Tool'''  window.&lt;br /&gt;
&lt;br /&gt;
To filter records using the basic filter:&lt;br /&gt;
&amp;lt;ol&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;From the first drop-down list, select the filtering option. The options available are:&lt;br /&gt;
* Record Number&lt;br /&gt;
* Severity&lt;br /&gt;
* StreamId&lt;br /&gt;
* ComponentId&lt;br /&gt;
* ServiceId&lt;br /&gt;
* TimeStamp&lt;br /&gt;
* MessageId&lt;br /&gt;
* Message&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;From the second drop-down list, select the type of filtering. The options in this list is displayed based on your selection in the first drop-down list.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;Based on these two selections, you can perform one of the following:&lt;br /&gt;
* In the text box, enter the filter criteria.&lt;br /&gt;
* In the value selector, specify a value. &lt;br /&gt;
&lt;br /&gt;
If you select '''TimeStamp''' as the filter type in the first drop-down list, you need to specify the date and the time as the values.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;Click '''Filter'''. The records are filtered and displayed based on the specified criteria. &lt;br /&gt;
Figure [[#Filtered List | Filtered List]] shows the records filtered based on Severity 2.&lt;br /&gt;
&amp;lt;span id='Filtered List'&amp;gt;&amp;lt;/span&amp;gt;[[File:LogTool_FilteredList.jpg|frame|center|'''Filtered List''']]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;Click '''Clear''' to clear the applied filter and display the records from the start of the file.&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The following table provides information about the various filter options and the types:&lt;br /&gt;
&lt;br /&gt;
{| align=&amp;quot;center&amp;quot; border=&amp;quot;0&amp;quot; cellpadding=&amp;quot;3&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;bottom&amp;quot; | '''Filter Options and Types'''&lt;br /&gt;
|- style=&amp;quot;color:#ffffff; background:#549cc6&amp;quot;&lt;br /&gt;
!style=&amp;quot;color:#66b154; background:#09477c&amp;quot;| Filter Option&lt;br /&gt;
!style=&amp;quot;color:#66b154; background:#09477c&amp;quot;| Filter Type&lt;br /&gt;
|- style=&amp;quot;color:#ffffff; background:#549cc6&amp;quot;&lt;br /&gt;
|Message&lt;br /&gt;
|&lt;br /&gt;
* Is&lt;br /&gt;
* Is Not&lt;br /&gt;
* Contains&lt;br /&gt;
* Does Not Contain&lt;br /&gt;
* Starts With&lt;br /&gt;
* Does not start with&lt;br /&gt;
* Ends With&lt;br /&gt;
* Does not End With&lt;br /&gt;
|- style=&amp;quot;color:#ffffff; background:#549cc6&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
Severity&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
StreamId&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
ComponentId&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
ServiceId&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
TimeStamp&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Record Number&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
MessageId&lt;br /&gt;
|&lt;br /&gt;
* =&lt;br /&gt;
* &amp;lt;&lt;br /&gt;
* &amp;gt;&lt;br /&gt;
* &amp;lt;=&lt;br /&gt;
* &amp;gt;=&lt;br /&gt;
* Between&lt;br /&gt;
* Range&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=====Creating and Saving Filter=====&lt;br /&gt;
&lt;br /&gt;
You can create and save filters so that you can apply the saved filters to a set of records at a later time. &lt;br /&gt;
&lt;br /&gt;
To create a filter:&lt;br /&gt;
&amp;lt;ol&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;From the '''Tools''' menu, click '''Advanced Filter''' or press '''Ctrl+F'''. The '''No previous Filter''' dialog box is displayed if you are creating a filter for the first time. Otherwise, the '''Advanced Filter''' window is displayed.&lt;br /&gt;
&amp;lt;span id='No previous Filter'&amp;gt;&amp;lt;/span&amp;gt;[[File:LogTool_NoPreviousFilter.jpg|frame|center|'''No Previous Filter''']]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;Click '''OK'''. The '''Advanced Filter''' window is displayed.&lt;br /&gt;
&amp;lt;span id='Advanced Filter'&amp;gt;&amp;lt;/span&amp;gt;[[File:LogTool_AdvancedFilter.jpg|frame|center|'''Advanced Filter''']]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;Enter the following information:&lt;br /&gt;
* '''Filter Name''': This is the name for the new filter.&lt;br /&gt;
* '''Filter Type''': Select the type of the filter. The available options are:&lt;br /&gt;
** AND - Select this option if you need all the criterion to be satisfied.&lt;br /&gt;
** OR - Select this option if at least one of the criteria has to be satisfied.&lt;br /&gt;
* Click '''Create Filter Criterion''' to specify the criterion in the drop-down lists. &lt;br /&gt;
* From the first drop-down list, select the filtering option.&lt;br /&gt;
* From the second drop-down list, select the type of filtering. The options in this list is displayed based on your selection in the first drop-down list.&lt;br /&gt;
* Based on these two selections, in the text box, enter the filter criteria or specify a value. If you select  '''TimeStamp''' as the filter type in the first drop-down list, you need to specify the date and the time as the values.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;Click '''Apply''' to apply the filter to the existing records.&lt;br /&gt;
&amp;lt;li&amp;gt;Click '''Save''' to save the filter.&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Click '''Remove''' to remove a filter criteria.&lt;br /&gt;
&lt;br /&gt;
Click '''Cancel''' to cancel creating the filter.&lt;br /&gt;
&lt;br /&gt;
=====Using Saved Filter=====&lt;br /&gt;
&lt;br /&gt;
To use a saved filter:&lt;br /&gt;
&amp;lt;ol&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;From the '''Tools''' menu, click '''Saved Filters''' or press '''Ctrl+S'''. The '''Saved Filter''' dialog box displays the list of saved filters. &amp;lt;span id='Saved Filters'&amp;gt;&amp;lt;/span&amp;gt;[[File:LogTool_SavedFilters.jpg|frame|center|Saved Filters]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;Select the filter that you need to apply and click '''Apply'''. The selected filter is applied to the existing records.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;To add more filters, click '''Add'''. The '''Advanced Filter''' window is displayed. For information to create and save a filter, refer to the section [[#Creating and Saving Filter | Creating and Saving Filter]].&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;To remove a saved filter, select the filter and click '''Remove'''. The selected filter is removed from the list.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;Click '''OK''' to close the '''Saved Filters''' dialog box.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;Click '''Cancel''' to cancel the process of applying a saved filter.&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Configuring User Directory and Mapping File Location====&lt;br /&gt;
&lt;br /&gt;
To configure the location for user-defined filters and mapping files:&lt;br /&gt;
&amp;lt;ol&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;From the '''Tools''' menu, click '''Settings''' or press '''Ctrl+T'''. The '''Settings''' window is displayed.&lt;br /&gt;
&amp;lt;span id='Settings'&amp;gt;&amp;lt;/span&amp;gt;[[File:LogTool_ConfigureLocation.jpg|frame|center|'''Settings''']]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;Enter the following information:&lt;br /&gt;
* '''User Directory''': This is the directory where the created filters are saved. This must be an existing directory.&lt;br /&gt;
* '''TLV Mapping File''': This is the directory where the mapping file for the MessageId is stored. A log file represents the MessageIds in a sequence of bytes. The mapping file contains the string representation for these MessageIds. If you specify a mapping file, then the corresponding string representation for the MessageId is displayed when you open the Log file using the Log Tool. If you do not specify the mapping file, then the MessageId is displayed as a sequence of bytes.&lt;br /&gt;
&amp;lt;li&amp;gt;Click '''Apply''' to apply the configured locations to the current open Log file.&lt;br /&gt;
&amp;lt;li&amp;gt;Click '''OK''' to save the settings.&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Click '''Restore Defaults''' to restore the default locations.&lt;br /&gt;
&lt;br /&gt;
Click '''Cancel''' to cancel the settings.&lt;br /&gt;
&lt;br /&gt;
====Closing Log File(s)====&lt;br /&gt;
&lt;br /&gt;
To close a Log file, from the '''File''' menu, click '''Close''' or press '''Ctrl+C'''. The Log file that is currently open is closed.&lt;br /&gt;
&lt;br /&gt;
To close all open Log files, from the '''File''' menu, click '''Close All''' or press '''Ctrl+Shift+C'''. All Log files that are open are closed.&lt;br /&gt;
&lt;br /&gt;
====Exiting Log Tool====&lt;br /&gt;
&lt;br /&gt;
To exit from Log Tool, from the  '''File'''  menu, click  '''Exit''' tor press  '''Ctrl+X''' . The  '''Log Tool'''  window closes.&lt;/div&gt;</summary>
		<author><name>MediaWiki spam cleanup</name></author>	</entry>

	<entry>
		<id>https://help.openclovis.com/index.php/Doc:latest/tutorial</id>
		<title>Doc:latest/tutorial</title>
		<link rel="alternate" type="text/html" href="https://help.openclovis.com/index.php/Doc:latest/tutorial"/>
				<updated>2012-02-21T03:48:15Z</updated>
		
		<summary type="html">&lt;p&gt;MediaWiki spam cleanup: Reverting to last revision not containing links to www.buyxanaxonlinepill.com&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Preface==&lt;br /&gt;
The ''SAFplus Platform Sample Application Tutorial'' is a comprehensive tutorial designed to highlight the steps involved in using SAFplus software to design and build a high availability system. In this tutorial you will learn to:&lt;br /&gt;
* Design a model using the SAFplus IDE&lt;br /&gt;
* Generate code from this model to provide middleware support&lt;br /&gt;
* Customize this code for a particular application&lt;br /&gt;
* Build and deploy the customized code&lt;br /&gt;
* Run the system to see the SAFplus Platform software in action&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Audience===&lt;br /&gt;
&amp;lt;br&amp;gt; ''SAFplus Platform Sample Application Tutorial''  is designed for system integrators, designers, and system architects. To use SAFplus Platform, you should be aware of the fundamentals of operation, management, and configuration of telecommunication and networking domains. You should also be familiar with C programming, UML notations, and have the basic knowledge of Linux.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt; This document assumes that you have installed the SAFplus Platform SDK, following the installation steps found in the ''SAFplus Platform Installation Guide''.&lt;br /&gt;
&lt;br /&gt;
===Documentation Conventions===&lt;br /&gt;
This guide uses different fonts and symbols to differentiate between document elements and types of information. These conventions are summarized in the following table.&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background:#cdd6e6&amp;quot;&lt;br /&gt;
!style=&amp;quot;background:#d3e3ff&amp;quot;| Notation&lt;br /&gt;
!style=&amp;quot;background:#d3e3ff&amp;quot;| Description&lt;br /&gt;
&lt;br /&gt;
|- &lt;br /&gt;
|style=&amp;quot;background:#ffccaa&amp;quot; | &amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;Code&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
|This font denotes the C code provided in various examples.&amp;lt;br&amp;gt;This font denotes function and variable names.&lt;br /&gt;
&lt;br /&gt;
|- &lt;br /&gt;
|style=&amp;quot;background:#ffffaa&amp;quot; | &amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;Output&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
|Terminal output.&lt;br /&gt;
&lt;br /&gt;
|- &lt;br /&gt;
|style=&amp;quot;color:blue&amp;quot; | Cross reference&lt;br /&gt;
|This font denotes a hyperlink. You can click on the hyperlink text to access the reference location, which can be either a section within the guide or a URL link.&amp;lt;br&amp;gt;A cross reference refers to a section name and accesses the first page of that section.&lt;br /&gt;
&lt;br /&gt;
|- &lt;br /&gt;
| &amp;lt;code&amp;gt;Filenames&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;&amp;lt;DIR&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
| Files names, Directory paths.&lt;br /&gt;
&lt;br /&gt;
|- &lt;br /&gt;
|&amp;lt;code&amp;gt;$ Commands ''group_identifier''&amp;lt;/code&amp;gt; &lt;br /&gt;
| Commands to be run from a shell.&amp;lt;br&amp;gt; Italic text indicate an argument. This can be replaced with your desired value.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;[[File:OpenClovis_Note.png]]This indicates the presence of notes or annotations, related to the context of the document. &lt;br /&gt;
&amp;lt;br&amp;gt;[[File:OpenClovis_Caution.png]]This indicates that certain precautionary measures must be taken before performing a particular task.&lt;br /&gt;
&amp;lt;br&amp;gt;[[File:OpenClovis_Info.png]]This indicates that additional information is provided to you.&lt;br /&gt;
&lt;br /&gt;
As mentioned in the ''SAFplus Platform Installation Guide'' the default directory for installation is &amp;lt;code&amp;gt;/opt/clovis&amp;lt;/code&amp;gt; for root installation and &amp;lt;code&amp;gt;$HOME/clovis&amp;lt;/code&amp;gt; for non root users. Throughout this document we will use &amp;lt;code&amp;gt;&amp;lt;install_dir&amp;gt;&amp;lt;/code&amp;gt; to refer to the installation directory.&lt;br /&gt;
&lt;br /&gt;
===Related Documents===&lt;br /&gt;
For additional information about OpenClovis products, please refer to the following guides:&lt;br /&gt;
* '''[[Doc:latest/relnotes | SAFplus Platform Release Notes]]''' provides information about the software and the hardware required to install OpenClovis SAFplus Availability/Scalability Platform and Integrated Development Environment (IDE). It summarizes the additional features and enhancements of the product since the previous release. It also summarizes the issues and limitations of the product and provides workarounds wherever applicable.&lt;br /&gt;
* '''[[Doc:latest/safcompliance | SAFplus Platform SA-Forum Compliance]]''' describes the level of compliance of OpenClovis SAFplus Platform and its Application Programming Interface (API) with the relevant Service Availability Forum Specifications.&lt;br /&gt;
* '''[[Doc:latest/installguide | SAFplus Platform Installation Guide]]''' provides the system requirements, installation procedure for OpenClovis SAFplus Platform, IDE, and the Evaluation System.&lt;br /&gt;
* '''[[Doc:latest/tutorial | SAFplus Platform Sample Application Tutorial]]''' explains the steps to create and build a sample model using OpenClovis IDE and OpenClovis SAFplus Platform. It also provides troubleshooting information for this process. This provides the logical first step in understanding the SAFplus Platform offering.&lt;br /&gt;
* '''[[Doc:latest/evalguide | SAFplus Platform Evaluation System User Guide]]''' provides all the required information to configure and run the sample models packaged within the Evaluation System. This document also provides good understanding of OpenClovis SAFplus Platform's functionality. This is the natural follow on to the ''OpenClovis Sample Application Tutorial'' as it builds on the example created in that document. &lt;br /&gt;
* '''[[Doc:latest/sdkguide | SAFplus Platform SDK User Guide]]''' provides information about SAFplus Availability/Scalability Platform architecture, various SAFplus Platform components, and their interactions. This guide helps you to configure the OpenClovis SAFplus Platform components, compile, and execute the SAFplus Platform code to build your custom application.&lt;br /&gt;
* '''[[Doc:latest/ideguide | SAFplus Platform IDE User Guide]]''' describes the usage of Integrated Development Environment (IDE), a graphical development environment that complements the SAFplus Platform. This guide helps you to understand how to use the various features of the IDE to build the application.&lt;br /&gt;
* '''[[Doc:latest/logtoolguide | SAFplus Platform Log Tool User Guide]]''' provides information about the usage of OpenClovis Log Tool. OpenClovis Log Tool is an interactive utility that allows you to view binary log files in a readable format and hence monitor system errors, warnings, and other log information. Log Tool allows you to format the &amp;lt;code&amp;gt;.log&amp;lt;/code&amp;gt; files and filter them to view the required entries.&lt;br /&gt;
* '''SAFplus Platform API Reference Guide [http://www.openclovis.org/doc/latest/apirefs/index.html]''' is provided for each component. It describes the Application Programming Interface (API), Service Model, and Management Information Model of the various OpenClovis Application Service Platform (SAFplus Platform) services. It helps the developer to understand the capabilities of the SAFplus Platform services and the APIs provided by these services.&lt;br /&gt;
* '''[[SAFplus Platform Console Reference Guide]]''' provides details about managing applications built on SAFplus Platform using the SAFplus Platform runtime debug console commands. SAFplus Platform Console commands can be used to manage, monitor, and test your application.&lt;br /&gt;
&lt;br /&gt;
===OpenClovis Online Technical Support===&lt;br /&gt;
OpenClovis customers and partners can register on our Web site and receive personalized services and information. If you need any support or assistance while working on OpenClovis products, you can access the following: URL: http://www.openclovis.com. Send your queries to: support@openclovis.com. Open source community support is available at: http://www.openclovis.org/forum.&lt;br /&gt;
&lt;br /&gt;
===Documentation Feedback===&lt;br /&gt;
We are interested in hearing from our customers on the documentation provided with the product. Let us know your comments and suggestions on improving the documentation at OpenClovis Inc. Send your comments to: support@openclovis.com. Or even better, edit (or comment in) the page on our documentation wiki located at [http://help.openclovis.com http://help.openclovis.com].&lt;br /&gt;
&lt;br /&gt;
==Our Example: The csa101 System==&lt;br /&gt;
The ''SAFplus Platform Sample Application Tutorial'' will take you through a series of examples each introducing a key concept of the product. Each example builds on the example before it so it is important to go through them in order. The examples are named so that it is easy to determine their sequence. The examples all begin with the letters '''csa''' (standing for Clovis Sample Application) and end with a number. Our first example will be '''csa101'''.&lt;br /&gt;
&lt;br /&gt;
The purpose of our first example is to highlight basic component management. It introduces the basic skeleton of a SAFplus Platform based application component and illustrates how it interacts with the System. It demonstrates basic component registration and life-cycle management.&lt;br /&gt;
&lt;br /&gt;
We will keep this first example very simple. It will consist of the SAFplus Platform running a small component named '''csa101'''. All that this component will do is continuously print 'Hello World!' to a log file. While this component is not very exciting, it will allow us to easily see when the application is in a running state and when it is not. This will allow us to focus on the infrastructure of SAFplus Platform and how the application interfaces with it.&lt;br /&gt;
&lt;br /&gt;
For this example we will assume that we have a chassis with five slots. We will have one type of blade in our example, a '''System Controller'''.&lt;br /&gt;
&amp;lt;br&amp;gt;[[File:OpenClovis_Note.png]]With the type of model we are developing we would typically define two blade types to install in these slots. The first blade type would be a '''System Controller''' blade (which is responsible for running the SAFplus Platform software which manages application startup, shutdown, failover, etc.) and the second blade type would be a '''Payload''' blade (which is responsible for running our custom '''csa101''' application). However, for the purpose of simplifying the deployment of our system, we will define only the '''System Controller''' blade type and have both the SAFplus Platform and component application run on this one blade. This will allow the example to be run on a single PC.&lt;br /&gt;
&lt;br /&gt;
==Creating the csa101 Model==&lt;br /&gt;
The first step in setting up our example is to create a model which represents the system that we will eventually deploy. This is done through the '''SAFplus Platform IDE'''. In this chapter we will step through the following tasks:&lt;br /&gt;
* Create a project area&lt;br /&gt;
* Launch the '''SAFplus Platform IDE'''&lt;br /&gt;
* Create the IDE project&lt;br /&gt;
* Specify the Resource model (the types of physical hardware in our system)&lt;br /&gt;
* Specify the Component model (the types of components or applications in our system)&lt;br /&gt;
* Specify which Components run on which Resources&lt;br /&gt;
* Specify important build and boot parameters&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Creating a New Project Area===&lt;br /&gt;
A project area is a directory on your system where you can develop SAFplus Platform models and generate the code corresponding to those models. The project area can hold multiple models allowing you to manage all of your models in one location. All the models in the same project area share the same SAFplus Platform source tree. This way any modifications made to the SAFplus Platform source tree are re-used across all the models that were created in that project area.&lt;br /&gt;
&lt;br /&gt;
You create a project area using a script from the command line. To create a project area named '''projectarea1''' in the '''/home/clovis''' directory you should execute the following command:&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
# cl-create-project-area /home/clovis/projectarea1&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Launching the SAFplus Platform IDE===&lt;br /&gt;
You can launch the '''SAFplus Platform IDE''' from the command line. If you chose to create symbolic links during installation you can simply enter &amp;lt;code&amp;gt;'''cl-ide'''&amp;lt;/code&amp;gt; from any directory. If you did not create symbolic links during installation you can either:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Add the installation directory to the shells search path and then launch the IDE. For example with a bash shell, &lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
# export PATH=$PATH:$install_dir/sdk-5.0/bin&lt;br /&gt;
# cl-ide&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
or&lt;br /&gt;
&amp;lt;li&amp;gt;Execute the command&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
# &amp;lt;install_dir&amp;gt;/sdk-5.0/bin/cl-ide&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The splash screen for SAFplus Platform IDE is displayed as illustrated in Figure [[#SAFplus Platform IDE Opening Screen | SAFplus Platform IDE Opening Screen]].&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id='SAFplus Platform IDE Opening Screen'&amp;gt;&amp;lt;/span&amp;gt;[[File:Tutorial_GettingStartedIDE_OpeningScreen.png|frame|center| '''SAFplus Platform IDE Opening Screen''' ]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
You will then be prompted to select a workspace in which to do your work as illustrated in Figure [[#SAFplus Platform IDE Workspace Launcher | SAFplus Platform IDE Workspace Launcher]].&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id='SAFplus Platform IDE Workspace Launcher'&amp;gt;&amp;lt;/span&amp;gt;[[File:Tutorial_GettingStartedIDE_WorkspaceLauncher.png|frame|center| '''SAFplus Platform IDE Workspace Launcher''' ]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The workspace you select should correspond to the project area that you created in the previous section (in this case &amp;quot;/home/clovis/projectarea1&amp;quot;). Note that the workspace includes a subdirectory of &amp;quot;/ide_workspace&amp;quot;. This is done strictly for organizational purposes. It keeps the IDE models separate from the generated SAFplus Platform models and code.&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Select the workspace and click  '''OK'''  to launch SAFplus Platform IDE as illustrated in the Figure [[#SAFplus Platform IDE Welcome Screen | SAFplus Platform IDE Welcome Screen]].&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id='SAFplus Platform IDE Welcome Screen'&amp;gt;&amp;lt;/span&amp;gt;[[File:Tutorial_WelcomeScreen.png|frame|center| '''SAFplus Platform IDE Welcome Screen''' ]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The '''SAFplus Platform''' IDE is launched and you are now looking at the main work area. For more information about the components of this main work area including the SAFplus Platform IDE menu and toolbar, see ''SAFplus Platform IDE User Guide''.&lt;br /&gt;
&lt;br /&gt;
===Creating the Sample Project===&lt;br /&gt;
We will now create a project within the '''SAFplus Platform IDE'''. This project will hold both the resource model and the component model for our example system. The resource model is a physical view of the resources (the chassis, the blade types, etc.) in our system. The component model is a logical view of the components (applications, etc.) in our system.&lt;br /&gt;
&lt;br /&gt;
We will be using the '''New Project Wizard''' to create our project. The wizard captures some high-level information about the system that we are building and performs a lot of the basic setup for us.&lt;br /&gt;
&lt;br /&gt;
[[File:OpenClovis_Note.png]]The same model that we are building through the wizard could also be created manually through the Resource and Component Editors. For more information on the Resource and Component Editors see ''SAFplus Platform IDE User Guide''.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
To launch the '''New Project Wizard''' select  '''File'''  &amp;gt;  '''New''' &amp;gt;  '''Project''' from the IDE menu bar.&lt;br /&gt;
&lt;br /&gt;
The  '''New Project Wizard''' is displayed and  '''Clovis System Project'''  is selected by default as illustrated in Figure [[#New Project Wizard | New Project Wizard]].&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id='New Project Wizard'&amp;gt;&amp;lt;/span&amp;gt;[[File:Tutorial_GettingStartedIDE_NewProjectWizard.png|frame|center| '''New Project Wizard''' ]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Click  '''Next'''. The  '''Clovis System Project''' window is displayed as illustrated in Figure [[#Clovis System Project | Clovis System Project]].&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;span id='Clovis System Project'&amp;gt;&amp;lt;/span&amp;gt;[[File:Tutorial_NewProject.png|frame|center| '''Clovis System Project''' ]]&lt;br /&gt;
&lt;br /&gt;
Enter the following information:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;'''Project Name''' : Enter the name of your new project as  '''SampleModel'''.&lt;br /&gt;
&amp;lt;br&amp;gt;[[File:OpenClovis_Note.png]]Do not use spaces or special characters for the project name. The project name can be alphanumeric, but cannot start with a number or have only numbers.&lt;br /&gt;
&amp;lt;br&amp;gt;Select  '''Use default'''  to use the same directory mentioned in the  '''Directory'''  field. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;'''SDK Location''': Enter the location where the SAFplus Platform SDK was installed. For e.g. if the SDK was installed at location /opt/clovis, then the SDK location is /opt/clovis/sdk-&amp;lt;version&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;'''Project Area Location''': Enter the location where the generated source code for the model should be stored.&lt;br /&gt;
&amp;lt;br&amp;gt;[[File:OpenClovis_Note.png]]This can be any existing directory but is usually the project area that was created in the previous section.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;'''Python Location''': Enter the location where Python 2.5.0 is installed on your system. If Python 2.5.0 was installed by SAFplus Platform SDK, the directory is  &amp;lt;code&amp;gt;'''&amp;lt;installation_directory&amp;gt;/buildtools/local/bin'''&amp;lt;/code&amp;gt;.&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Click '''Next'''. The '''Add New Blade Type''' window is displayed. This dialog is used to define the blade types that are in our system.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id='Add New Blade Type'&amp;gt;&amp;lt;/span&amp;gt;[[File:Tutorial_AddBlade.png|frame|center| '''Add New Blade Type''' ]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Remember that the system we are modelling has only one blade type...a System Controller.&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Use the '''Add''' button to add a new blade type to the list. Name this blade type 'SysBlade' (for System Controller blade).&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Click '''Next'''. The '''Add New SAF Node Type''' window is displayed. This dialog is used to define the type of logical node that will be run on the corresponding blade type defined in the previous dialog.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id='Add New SAF Node Type'&amp;gt;&amp;lt;/span&amp;gt;[[File:Tutorial_AddNode.png|frame|center| '''Add New SAF Node Type''' ]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Node types represent groups of software. They are classified as either a System Controller class or a Payload class. This distinction gives the node type certain characteristics which cause it to behave in a well-defined manner. Since we have only a System Controller in our system we will add a node type of class System Controller.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Use the '''Add''' button to add a new node type to the list. Name the node type 'SCNode' and ensure that its node class is 'System Controller (SAF Class B)'.&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Click '''Next'''. The '''Specify Program Names''' window is displayed. This dialog is used to create programs or SAF Service Types and associate them with the SAF Node Types specified in the previous dialog.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id='Specify Program Names'&amp;gt;&amp;lt;/span&amp;gt;[[File:Tutorial_DefineProgramNames.png|frame|center| '''Specify Program Names''' ]]&lt;br /&gt;
&lt;br /&gt;
In our system we need one SAF Service Type which represents our high availability software (csa101 that continously prints &amp;quot;Hello World!&amp;quot;).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Use the '''Add''' button to add a program name to the list. Change the program name to 'csa101' and associate the program with the 'SCNode' node type.&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Click '''Finish'''. This will create the sample model using the blade type, node type, and program name information collected through the 'New Project Wizard' dialogs.&lt;br /&gt;
&lt;br /&gt;
===Viewing the Model===&lt;br /&gt;
&lt;br /&gt;
====The SAFplus Platform IDE Perspective====&lt;br /&gt;
Once the wizard pages are closed you will be returned to the main IDE view also known as the '''SAFplus Platform IDE Perspective'''. On the left hand side of this view you will see the '''Clovis Workspace''' pane which contains the new project you just created with all project related files and folders. The folders are displayed based on your filter settings. With the default filter settings, the folders shown in Figure [[#Clovis Workspace|Clovis Workspace]] is displayed in the '''Clovis Workspace''' pane. For information about filter settings, refer  ''SAFplus Platform IDE User Guide''.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id='Clovis Workspace'&amp;gt;&amp;lt;/span&amp;gt;[[File:Tutorial_GettingStartedIDE_ClovisWorkspace.png|frame|center|Clovis Workspace]]&lt;br /&gt;
&lt;br /&gt;
By default, the '''Resource''' and '''Component''' Editor views are available for the created project. To view them, click '''Clovis''' on the menu bar at the top of the screen and select '''Resource Editor''' or  '''Component Editor'''  from the menu. You can also click '''Resource Editor''' or '''Component Editor''' icons from the tool bar as shown in Figure [[#SAFplus Platform IDE Tool Bar | SAFplus Platform IDE Tool Bar]].&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id='SAFplus Platform IDE Tool Bar'&amp;gt;&amp;lt;/span&amp;gt;[[File:Tutorial_Toolbar.png|frame|center| '''SAFplus Platform IDE Tool Bar''' ]]&lt;br /&gt;
&lt;br /&gt;
====Resource Editor View====&lt;br /&gt;
The '''Resource Editor''' shows the types of physical objects in our system. It gives us a place to create new objects and interact with the objects that already exist. The '''Resource Editor''' view for our model should look similar to the following figure.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id='SAFplus Platform Resource Editor'&amp;gt;&amp;lt;/span&amp;gt;[[File:Tutorial_ResourceEditor.png|frame|center| '''SAFplus Platform Resource Editor''' ]]&lt;br /&gt;
&lt;br /&gt;
This editor always has a '''Chassis''' object which is the root of all other objects in the editor. In our case it also has the '''SysBlade''' blade type that we created through the '''Project Creation Wizard'''. You will also notice that the '''SysBlade''' is attached to the '''Chassis''' using a '''Composition''' relationship indicating that '''SysBlade'''s reside within the '''Chassis'''.&lt;br /&gt;
&lt;br /&gt;
On the right hand side of the editor view you will see the '''Palette''' which can be expanded and collapsed. Expanding the '''Palette''' you will see the list of objects that can be dragged onto the editor view to add to our model. Once an object is on the editor view you can view and change its properties by right clicking on the object and selecting '''Properties...''' from the context menu.&lt;br /&gt;
&lt;br /&gt;
For more information about the '''Resource Editor''' view see ''SAFplus Platform IDE User Guide''.&lt;br /&gt;
&lt;br /&gt;
====Component Editor View====&lt;br /&gt;
The '''Component Editor''' shows the types of logical objects in our system. It gives us a place to create new objects and interact with the objects that already exist. The '''Component Editor''' view for our model should look similar to the following figure.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id='SAFplus Platform Component Editor'&amp;gt;&amp;lt;/span&amp;gt;[[File:Tutorial_ComponentEditor.png|frame|center| '''SAFplus Platform Component Editor''' ]]&lt;br /&gt;
&lt;br /&gt;
This editor always has a '''Cluster''' object which is the root of all other objects in the editor. In our case it also has the '''SCNode''' node type and the '''csa101''' SAF Service Type (a combination of Service Group, Service Unit, Service Instance, Component Service Instance, and SAF Component) that we created through the '''Project Creation Wizard'''. These have all been automatically attached in a way that makes a working model.&lt;br /&gt;
&lt;br /&gt;
On the right hand side of the editor view you will see the '''Palette''' which can be expanded and collapsed. Expanding the '''Palette''' you will see the list of objects that can be dragged onto the editor view to add to our model. Once an object is on the editor view you can view and change its properties by right clicking on the object and selecting '''Properties...''' from the context menu.&lt;br /&gt;
&lt;br /&gt;
For more information about the '''Component Editor''' view see ''SAFplus Platform IDE User Guide''.&lt;br /&gt;
&lt;br /&gt;
===Configuring the Components===&lt;br /&gt;
The '''New Project Wizard''' that we used to create our project configured the system using the most common options. We will have to make a few changes to this model in order for our example to work. We will make these changes in the '''Component Editor''' view.&lt;br /&gt;
&lt;br /&gt;
In the Component Editor you will notice seven different objects that were created by the wizard. The first two of these are:&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Cluster: The root object of all other objects in the Component Editor view.&lt;br /&gt;
&amp;lt;li&amp;gt;SCNode: This is the SAF Node Type that we specified during project creation.&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The next five objects all make up the Program or SAF Service Type that we specified on the last dialog of the New Project Wizard. These objects are:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;csa101SG: This is the Service Group representing our high availability software component.&lt;br /&gt;
&amp;lt;li&amp;gt;csa101SU: This is the Service Unit that is logically associated with the SCNode SAF Node Type.&lt;br /&gt;
&amp;lt;li&amp;gt;csa101SI: This is the Service Instance&lt;br /&gt;
&amp;lt;li&amp;gt;csa101CSI: This is the Component Service Instance&lt;br /&gt;
&amp;lt;li&amp;gt;csa101: This is the SAF Component which represents our program or executable.&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
We will be making changes to the Service Group (csa101SG), the Service Instance (csa101SI), and the SAF Component (csa101).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====Configuring the Service Group====&lt;br /&gt;
To make changes to the Service Group double-click on the box titled '''csa101SG'''. The '''Service Group Details''' dialog is displayed.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id='Service Group Details'&amp;gt;&amp;lt;/span&amp;gt;[[File:Tutorial_ServiceGroupDetails.png|frame|center| '''Service Group Details''' ]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;The first change we want to make is to the '''Redundancy Model'''. The '''Redundancy Model''' is the strategy that is used by the SAFplus Platform system to recover from a node failure. For our simple model (which only has one node) we are not going to rely on any failover recovery so change the '''Redundancy Model''' to 'No Redundancy' as shown.&lt;br /&gt;
&amp;lt;br&amp;gt;[[File:OpenClovis_Note.png]]You will notice that when you change the redundancy model some of the other fields are modified automatically and become read-only. This is to ensure integrity of the redundancy models.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;The second change that we want to make is to the '''Admin State'''. The '''Admin State''' defines the state of the component when the system is first brought up. In our case we want to change the '''Admin State''' to be 'Locked Initialized'. This means that when the system first starts up this '''Service Group''' (and its subcomponents) will be initialized but not yet put into a running state. So our csa101 application will not yet start printing &amp;quot;Hello World!&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;When you are finished making the changes click the '''OK''' button to commit the changes.&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Configuring the Service Instance====&lt;br /&gt;
To make changes to the Service Instance double-click on the box titled '''csa101SI'''. The '''Service Instance Details''' dialog is displayed.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id='Service Instance Details'&amp;gt;&amp;lt;/span&amp;gt;[[File:Tutorial_ServiceInstanceDetails.png|frame|center| '''Service Instance Details''' ]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;The only change we want to make here is to the '''Number of standby assignments'''. This value represents the number of components that will be waiting to take over during a node failure and goes hand-in-hand with the '''Redundancy Model''' that we selected for the Service Group. Since we selected 'No Redundancy' for our '''Redundancy Model''' we need to set this value to 0...since we are not supporting any failover in this model.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;When you are finished making the changes click the '''OK''' button to commit the changes.&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====Configuring the SAF Component====&lt;br /&gt;
To make changes to the SAF Component double-click on the box titled '''csa101'''. The '''SAF Component Details''' dialog is displayed.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id='SAF Component Details'&amp;gt;&amp;lt;/span&amp;gt;[[File:Tutorial_SAFComponentDetails.png|frame|center| '''SAF Component Details''' ]]&lt;br /&gt;
&lt;br /&gt;
The SAF Component represents our high availabilty program or executable. We need to pass a command line argument to this executable. The reason for this argument is to force the program to print the 'Hello World!' output to a special log file for our viewing. We will look at this more closely when we customize our code.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;To add command line parameters click the '''Edit...''' button corresponding to the '''Command line Arguments''' label.&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The '''Command line Argument Details''' dialog is displayed.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id='Command line Argument Details'&amp;gt;&amp;lt;/span&amp;gt;[[File:Tutorial_CommandLineArgs.png|frame|center| '''Command line Argument Details''' ]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Click the '''New''' button to add a new value to the list.&lt;br /&gt;
&amp;lt;li&amp;gt;Click on the new value in the list and it will become editable. Change the value to '''-p'''.&lt;br /&gt;
&amp;lt;li&amp;gt;Click the '''OK''' button to save and close the dialog.&lt;br /&gt;
&amp;lt;li&amp;gt;Click the '''OK''' button on the '''SAF Component Details''' dialog to commit the changes to the SAF Component and close the dialog.&lt;br /&gt;
&amp;lt;li&amp;gt;Save the component model using the '''File &amp;gt; Save''' menu item.&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Configuring Physical Instances===&lt;br /&gt;
The configuration of our logical models is complete. During this process we have defined all of the 'types' of objects in our system. Now it is time to configure actual instances of those objects so that they can be built and deployed.&lt;br /&gt;
&lt;br /&gt;
Object instance configuration is done through the Availability Management Framework (AMF) via the '''AMF Configuration''' dialog.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;To launch this dialog go to the the '''Clovis''' menu and select '''AMF Configuration...'''&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The '''AMF Configuration''' dialog is displayed.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id='AMF Configuration Dialog'&amp;gt;&amp;lt;/span&amp;gt;[[File:Tutorial_AMFConfig.png|frame|center| '''AMF Configuration Dialog''' ]]&lt;br /&gt;
&lt;br /&gt;
You will note from the instructions on this page that the physical instances representing the objects in our model can be created manually or by using wizards. Using the wizards will save us both typing and time so we will use these instead of creating each instance manually.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====Creating Node Instances====&lt;br /&gt;
First we will create actual instances of the Node Types (in our case only one Node Type...SCNode) we created in our model.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Double-click AMF Configuration in the left hand pane. The Node Instance List appears.&lt;br /&gt;
&amp;lt;li&amp;gt;Click on Node Instance List. The right hand pane displays the fields we must fill out to create our node instance.&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In the right hand pane:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Select SCNode for the '''Node Type'''.&lt;br /&gt;
&amp;lt;li&amp;gt;Select SysBlade for the '''Blade type'''.&lt;br /&gt;
&amp;lt;li&amp;gt;Enter 1 for the '''Node Count'''.&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The complete form should look like the following.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id='Node Wizard Details'&amp;gt;&amp;lt;/span&amp;gt;[[File:Tutorial_AMFNodeWizardDetails.png|frame|center| '''Node Wizard Details''' ]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Click the '''Create Instance Tree''' button to create our node instance.&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Expanding the '''Node Instance List''' branch of the '''AMF Configuration''' tree in the left-hand pane reveals a new node instance named SCNodeI0 (indicating SCNode Instance 0).&lt;br /&gt;
&lt;br /&gt;
====Creating Service Group Instances====&lt;br /&gt;
Now we will create actual instances of the Service Groups that we defined in our model.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Click on Service Group List. The right hand pane displays the fields we must fill out to create our service group instance.&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In the right hand pane:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Select csa101SG (the only service group type we defined) for the '''Service Group Type'''.&lt;br /&gt;
*The '''Associated Node Instances''' list will be populated with all of the node instances that can be associated with the selected service group type.&lt;br /&gt;
&amp;lt;li&amp;gt;Select SCNodeI0 from the '''Associated Node Instances''' list.&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The completed form should look like the following.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id='Service Group Wizard Details'&amp;gt;&amp;lt;/span&amp;gt;[[File:Tutorial_AMFSGWizardDetails.png|frame|center| '''Service Group Wizard Details''' ]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Click the '''Create Instance Tree''' button to create our service group instance.&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
If you now completely expand the '''AMF Configuration''' branch of the tree in the left-hand pane you will see the following.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id='AMS Configuration Instance Details'&amp;gt;&amp;lt;/span&amp;gt;[[File:Tutorial_AMSConfigDetails.png|frame|center| '''AMF Configuration Instance Details''' ]]&lt;br /&gt;
&lt;br /&gt;
Notice that not only have the wizards created the node and service group instances for you, they have also filled out the entire instance tree. This was accomplished based on two key sets of information. The first of these is the association that was made between the service group type and the node instance in the '''Service Group Wizard'''. The second set of information is the component model that we created through the New Project Wizard and the Component Editor.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;[[File:OpenClovis_Note.png]]For more information regarding the specific properties of the generated instances see [[#Appendix B: AMF Configuration Instance Details|Appendix B: AMF Configuration Instance Details]].&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Thats it. We are done modelling the csa101 example!&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Click the OK button to commit our changes and close the dialog. &lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
Now its time to generate the framework code.&lt;br /&gt;
&lt;br /&gt;
==Generating the csa101 Code==&lt;br /&gt;
In this step we generate the source code for our example. The code that will be created is the framework code that handles all of the low level functionality provided by SAFplus Platform.&lt;br /&gt;
&lt;br /&gt;
To generate the source code go to the '''Project''' menu and select '''Generate Source'''. Several progress dialogs will appear and after a few seconds code generation will be complete.&lt;br /&gt;
&lt;br /&gt;
The source code and configuration XML files are generated and placed in subdirectories of the '''Project Area Location''' that we specified in the '''New Project Wizard'''. You can review this location by using the '''Project &amp;gt; Properties''' menu to get to the '''Project Properties''' dialog and then selecting '''Clovis System Project''' in the left hand pane.&lt;br /&gt;
&lt;br /&gt;
You can review the generated code from within the SAFplus Platform IDE. To do this go to the '''Clovis Workspace''' pane and expand the '''SampleModel''' node. The node tree should look like the following.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id='Clovis Workspace Code Tree'&amp;gt;&amp;lt;/span&amp;gt;[[File:Tutorial_CWCodeTree.png|frame|center| '''Clovis Workspace Code Tree''' ]]&lt;br /&gt;
&lt;br /&gt;
The code of particular interest to our example is in the SampleModel/src/app/csa101 branch of the tree. This is the code for our csa101 example. The csa101 example consists of two C modules (&amp;lt;code&amp;gt;clCompAppMain.c&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;clCompCfg.c&amp;lt;/code&amp;gt;) and two header files. There is also a make file that will be used for building the application. The &amp;lt;code&amp;gt;clCompAppMain.c&amp;lt;/code&amp;gt; file implements our 'Hello World!' application.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;[[File:OpenClovis_Note.png]]If you run code generation a second time you will be presented with a dialog box asking if you would like to make a backup copy of the existing source code before proceeding. You can answer No to this dialog.&lt;br /&gt;
&lt;br /&gt;
==Customizing the csa101 Code==&lt;br /&gt;
While the code that was generated in the previous section can be built and run we want to make some changes to it so that we can easily see what our example is doing. For our example we will be changing one source file (&amp;lt;code&amp;gt;clCompAppMain.c&amp;lt;/code&amp;gt;) and two make files.&lt;br /&gt;
&amp;lt;br&amp;gt;[[File:OpenClovis_Note.png]]In a real production situation this is the point where you would customize the code to perform the specific tasks of your product.&lt;br /&gt;
&lt;br /&gt;
You will notice in the C file that there are several places where you see the following comment block.&lt;br /&gt;
&lt;br /&gt;
{| cellspacing=&amp;quot;0&amp;quot; cellpadding = &amp;quot;0&amp;quot; border=&amp;quot;0&amp;quot; align = &amp;quot;center&amp;quot; width=&amp;quot;680&amp;quot;&lt;br /&gt;
 ! style=&amp;quot;color:black;background-color:#ffccaa;&amp;quot; align=&amp;quot;center&amp;quot;|clCompAppMain.c&lt;br /&gt;
 |-&lt;br /&gt;
 |&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 /*&lt;br /&gt;
   ---BEGIN_APPLICATION_CODE---&lt;br /&gt;
 */&lt;br /&gt;
&lt;br /&gt;
 // ...&lt;br /&gt;
&lt;br /&gt;
 /*&lt;br /&gt;
   ---END_APPLICATION_CODE---&lt;br /&gt;
 */&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Makefiles have a similar convention but with a slightly different syntax.&lt;br /&gt;
&lt;br /&gt;
{| cellspacing=&amp;quot;0&amp;quot; cellpadding = &amp;quot;0&amp;quot; border=&amp;quot;0&amp;quot; align = &amp;quot;center&amp;quot; width=&amp;quot;680&amp;quot;&lt;br /&gt;
 ! style=&amp;quot;color:black;background-color:#ffccaa;&amp;quot; align=&amp;quot;center&amp;quot;|Makefile&lt;br /&gt;
 |-&lt;br /&gt;
 |&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 # ---BEGIN_APPLICATION_CODE---&lt;br /&gt;
&lt;br /&gt;
 # ---END_APPLICATION_CODE---&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
These are sections of the file where it is safe to enter custom application code without having to worry about that code being overwritten if you were to again perform '''Generate Source''' for your model. This is important since the typical development cycle is an iterative process where you will return to the IDE to make modifications to your model.&lt;br /&gt;
&lt;br /&gt;
To simplify the process of building and running the csa101 example, OpenClovis, Inc. has already made the necessary code customizations and shipped this code with the SAFplus Platform SDK. At this point you can simply replace the generated source files with these customized versions to avoid typing in the changes. We will go over each customization below and explain what was done.&lt;br /&gt;
&lt;br /&gt;
To replace the generated files with the customized versions shipped with the SAFplus Platform SDK follow these instructions.&lt;br /&gt;
&amp;lt;br&amp;gt;[[File:OpenClovis_Note.png]]  The sample applications containing the csa101 example can be found under the installation directory at &amp;lt;code&amp;gt;&amp;lt;install_dir&amp;gt;/sdk-5.0/src/examples/eval&amp;lt;/code&amp;gt;. We will refer to this directory in the remaining of this section as &amp;lt;code&amp;gt;&amp;lt;eval_dir&amp;gt;&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ol&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Exit the SAFplus Platform IDE using the '''File &amp;gt; Exit''' menu item. If you are prompted to save changes before exiting answer yes.&lt;br /&gt;
&amp;lt;li&amp;gt;Navigate to the source code work area.&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;# cd /home/clovis/projectarea1/ide_workspace/SampleModel/src/app&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Using your favorite editor open the file &amp;lt;code&amp;gt;Makefile&amp;lt;/code&amp;gt; that resides in this directory. This is the application make file.&lt;br /&gt;
&amp;lt;li&amp;gt;Add the following line to this file within the first &amp;lt;code&amp;gt;BEGIN_APPLICATION_CODE&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;END_APPLICATION_CODE&amp;lt;/code&amp;gt; comment block.&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;SUBDIRS += ev&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
This will instruct the build process to build our custom output library.&lt;br /&gt;
&amp;lt;li&amp;gt;Save this file and exit the editor.&lt;br /&gt;
&amp;lt;li&amp;gt;Execute the following command to copy the output package to our working area.&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;# cp -r &amp;lt;eval_dir&amp;gt;/src/app/ev .&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Navigate to the component code work area.&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;# cd csa101&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Execute the following command to copy the csa101 source code.&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;# cp &amp;lt;eval_dir&amp;gt;/src/app/csa101/clCompAppMain.c .&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Execute the following command to copy the component make file.&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;# cp &amp;lt;eval_dir&amp;gt;/src/app/csa101/Makefile .&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Restart the SAFplus Platform IDE.&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;# cl-ide&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Customizing clCompAppMain.c===&lt;br /&gt;
The &amp;lt;code&amp;gt;clCompAppMain.c&amp;lt;/code&amp;gt; file is the C module which will implement our 'Hello World!' behavior. We have to make changes in several parts of this file.&lt;br /&gt;
&amp;lt;br&amp;gt;[[File:OpenClovis_Note.png]]If you copied the files as instructed in the section above then these changes have already been made to the files. Use this section to review and understand the changes.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ol&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;In the include section of this file we have added a new include for &amp;lt;code&amp;gt;ev.h&amp;lt;/code&amp;gt;. This refers to a special output library that we copied to our work area in the previous section. This output library is used to redirect output from the application to a component specific log. This is purely cosmetic but it will allow us to easily monitor what is happening when we run our example. (The following code begins at line 44 of the source file.)&lt;br /&gt;
&lt;br /&gt;
{| cellspacing=&amp;quot;0&amp;quot; cellpadding = &amp;quot;0&amp;quot; border=&amp;quot;0&amp;quot; align = &amp;quot;center&amp;quot; width=&amp;quot;680&amp;quot;&lt;br /&gt;
 ! style=&amp;quot;color:black;background-color:#ffccaa;&amp;quot; align=&amp;quot;center&amp;quot;|clCompAppMain.c&lt;br /&gt;
 |-&lt;br /&gt;
 |&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
 /*&lt;br /&gt;
   ---BEGIN_APPLICATION_CODE---&lt;br /&gt;
 */&lt;br /&gt;
&lt;br /&gt;
 #include &amp;quot;clCompAppMain.h&amp;quot;&lt;br /&gt;
 #include &amp;quot;../ev/ev.h&amp;quot;&lt;br /&gt;
&lt;br /&gt;
 /*&lt;br /&gt;
   ---END_APPLICATION_CODE---&lt;br /&gt;
 */&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;Next we define a couple of static variables that will keep track of the state of our application and a function to aid in showing when the application is running. (The following code begins at line 79 of the source file.)&lt;br /&gt;
&lt;br /&gt;
{| cellspacing=&amp;quot;0&amp;quot; cellpadding = &amp;quot;0&amp;quot; border=&amp;quot;0&amp;quot; align = &amp;quot;center&amp;quot; width=&amp;quot;680&amp;quot;&lt;br /&gt;
 ! style=&amp;quot;color:black;background-color:#ffccaa;&amp;quot; align=&amp;quot;center&amp;quot;|clCompAppMain.c&lt;br /&gt;
 |-&lt;br /&gt;
 |&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
 /*&lt;br /&gt;
   ---BEGIN_APPLICATION_CODE---&lt;br /&gt;
 */&lt;br /&gt;
&lt;br /&gt;
 static int running = 0;&lt;br /&gt;
 static int exiting = 0;&lt;br /&gt;
&lt;br /&gt;
 static char*&lt;br /&gt;
 show_progress(void)&lt;br /&gt;
 {&lt;br /&gt;
     static char bar[] = &amp;quot;          .&amp;quot;;&lt;br /&gt;
     static int progress = 0;&lt;br /&gt;
&lt;br /&gt;
     /* Show a little progress bar */&lt;br /&gt;
     return &amp;amp;bar[sizeof(bar)-2-(progress++)%(sizeof(bar)-2)];&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
 /*&lt;br /&gt;
   ---END_APPLICATION_CODE---&lt;br /&gt;
 */&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
The &amp;lt;code&amp;gt;running&amp;lt;/code&amp;gt; flag will be used to indicate whether the current application is active or suspended while &amp;lt;code&amp;gt;exiting&amp;lt;/code&amp;gt; is a flag that indicates that the main() function returns, causing the exit of the application.&lt;br /&gt;
&lt;br /&gt;
The function &amp;lt;code&amp;gt;show_progress&amp;lt;/code&amp;gt; returns a pointer to a c string with a number of spaces followed by a '.' character. The number of spaces in the string cycles from zero to an upper bound. This is used later on to provide visual indication of the progress of the application's output.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;Next we have added a function &amp;lt;code&amp;gt;hello_func&amp;lt;/code&amp;gt; to print the output. (The following code begins at line 118 of the source file.)&lt;br /&gt;
&lt;br /&gt;
{| cellspacing=&amp;quot;0&amp;quot; cellpadding = &amp;quot;0&amp;quot; border=&amp;quot;0&amp;quot; align = &amp;quot;center&amp;quot; width=&amp;quot;680&amp;quot;&lt;br /&gt;
 ! style=&amp;quot;color:black;background-color:#ffccaa;&amp;quot; align=&amp;quot;center&amp;quot;|clCompAppMain.c&lt;br /&gt;
 |-&lt;br /&gt;
 |&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
void *hello_func(void *unused)&lt;br /&gt;
{&lt;br /&gt;
    while (!exiting)&lt;br /&gt;
    {&lt;br /&gt;
        if (running)&lt;br /&gt;
        {&lt;br /&gt;
            clprintf(CL_LOG_SEV_INFO, &amp;quot;csa101: Hello World! %s\n&amp;quot;, show_progress());&lt;br /&gt;
        }&lt;br /&gt;
        sleep(1);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    return NULL;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Notice the while loop condition. This function uses the &amp;lt;code&amp;gt;exiting&amp;lt;/code&amp;gt; variable that was initialized to 0.  The loop will keep running until &amp;lt;code&amp;gt;exiting&amp;lt;/code&amp;gt; is set to non-zero.  The if condition within the while loop checks the value of the &amp;lt;code&amp;gt;running&amp;lt;/code&amp;gt; variable.  The work of the application: printing &amp;quot;Hello World!&amp;quot; along with the progress indicator will only be done when the &amp;lt;code&amp;gt;running&amp;lt;/code&amp;gt; variable is set non-zero.  Next the command &amp;lt;code&amp;gt;sleep(1)&amp;lt;/code&amp;gt; simply sleeps for a second so as not to fill log files too quickly or completely swamp the CPU.&lt;br /&gt;
&lt;br /&gt;
When &amp;lt;code&amp;gt;exiting&amp;lt;/code&amp;gt; becomes non-zero, we return from the function. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;Next we have added a function to initialize the special output library mentioned earlier (which is at line 245 in the source file).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;Next we create a thread and call the function &amp;lt;code&amp;gt;hello_func&amp;lt;/code&amp;gt; in the new thread context. (The following code begins at line 252 of the source file.)&lt;br /&gt;
&lt;br /&gt;
{| cellspacing=&amp;quot;0&amp;quot; cellpadding = &amp;quot;0&amp;quot; border=&amp;quot;0&amp;quot; align = &amp;quot;center&amp;quot; width=&amp;quot;680&amp;quot;&lt;br /&gt;
 ! style=&amp;quot;color:black;background-color:#ffccaa;&amp;quot; align=&amp;quot;center&amp;quot;|clCompAppMain.c&lt;br /&gt;
 |-&lt;br /&gt;
 |&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
/*  &lt;br /&gt;
 * ---BEGIN_APPLICATION_CODE---&lt;br /&gt;
 */&lt;br /&gt;
clprintf(CL_LOG_SEV_INFO, &amp;quot;csa101: Instantiated as component instance %s.\n&amp;quot;, appName.value);&lt;br /&gt;
&lt;br /&gt;
clprintf(CL_LOG_SEV_INFO, &amp;quot;%s: Waiting for CSI assignment...\n&amp;quot;, appName.value);&lt;br /&gt;
&lt;br /&gt;
rc = clOsalTaskCreateDetached(&amp;quot;hello_thread&amp;quot;, CL_OSAL_SCHED_OTHER, CL_OSAL_THREAD_PRI_NOT_APPLICABLE, 0, hello_func, NULL);&lt;br /&gt;
CL_ASSERT(rc == CL_OK);&lt;br /&gt;
&lt;br /&gt;
/*  &lt;br /&gt;
 * ---END_APPLICATION_CODE---&lt;br /&gt;
 */&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;Next we indicate to our app when we are exiting. (The following code begins at line 284 of the source file.)&lt;br /&gt;
&lt;br /&gt;
{| cellspacing=&amp;quot;0&amp;quot; cellpadding = &amp;quot;0&amp;quot; border=&amp;quot;0&amp;quot; align = &amp;quot;center&amp;quot; width=&amp;quot;680&amp;quot;&lt;br /&gt;
 ! style=&amp;quot;color:black;background-color:#ffccaa;&amp;quot; align=&amp;quot;center&amp;quot;|clCompAppMain.c&lt;br /&gt;
 |-&lt;br /&gt;
 |&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
/*  &lt;br /&gt;
 * ---BEGIN_APPLICATION_CODE---&lt;br /&gt;
 */&lt;br /&gt;
&lt;br /&gt;
 exiting = 1;&lt;br /&gt;
 clEvalAppLogStreamClose(gEvalLogStream);&lt;br /&gt;
&lt;br /&gt;
/*  &lt;br /&gt;
 * ---END_APPLICATION_CODE---&lt;br /&gt;
 */&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
We set the &amp;lt;code&amp;gt;exiting&amp;lt;/code&amp;gt; variable to 1. This will cause the loop in our &amp;lt;code&amp;gt;hello_func&amp;lt;/code&amp;gt; function to exit.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;Next we will put in code to manage the state of our application. (The following code begins at line 453 of the source file.)&lt;br /&gt;
&lt;br /&gt;
{| cellspacing=&amp;quot;0&amp;quot; cellpadding = &amp;quot;0&amp;quot; border=&amp;quot;0&amp;quot; align = &amp;quot;center&amp;quot; width=&amp;quot;680&amp;quot;&lt;br /&gt;
 ! style=&amp;quot;color:black;background-color:#ffccaa;&amp;quot; align=&amp;quot;center&amp;quot;|clCompAppMain.c&lt;br /&gt;
 |-&lt;br /&gt;
 |&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
void clCompAppAMFCSISet(SaInvocationT       invocation,&lt;br /&gt;
                        const SaNameT       *compName,&lt;br /&gt;
                        SaAmfHAStateT       haState,&lt;br /&gt;
                        SaAmfCSIDescriptorT csiDescriptor)&lt;br /&gt;
{&lt;br /&gt;
    /*&lt;br /&gt;
     * ---BEGIN_APPLICATION_CODE--- &lt;br /&gt;
     */&lt;br /&gt;
&lt;br /&gt;
    // ...&lt;br /&gt;
&lt;br /&gt;
    /*&lt;br /&gt;
     * ---END_APPLICATION_CODE---&lt;br /&gt;
     */&lt;br /&gt;
&lt;br /&gt;
    /*&lt;br /&gt;
     * Print information about the CSI Set&lt;br /&gt;
     */&lt;br /&gt;
&lt;br /&gt;
    clprintf (CL_LOG_SEV_INFO, &amp;quot;Component [%.*s] : PID [%d]. CSI Set Received\n&amp;quot;,&lt;br /&gt;
              compName-&amp;gt;length, compName-&amp;gt;value, mypid);&lt;br /&gt;
&lt;br /&gt;
    clCompAppAMFPrintCSI(csiDescriptor, haState);&lt;br /&gt;
&lt;br /&gt;
    /*&lt;br /&gt;
     * Take appropriate action based on state&lt;br /&gt;
     */&lt;br /&gt;
&lt;br /&gt;
    switch ( haState )&lt;br /&gt;
    {&lt;br /&gt;
        case SA_AMF_HA_ACTIVE:&lt;br /&gt;
        {&lt;br /&gt;
            /*&lt;br /&gt;
             * AMF has requested application to take the active HA state &lt;br /&gt;
             * for the CSI.&lt;br /&gt;
             */&lt;br /&gt;
&lt;br /&gt;
            /*&lt;br /&gt;
             * ---BEGIN_APPLICATION_CODE---&lt;br /&gt;
             */&lt;br /&gt;
&lt;br /&gt;
            clprintf(CL_LOG_SEV_INFO, &amp;quot;csa101: ACTIVE state requested; activating service\n&amp;quot;);&lt;br /&gt;
            running = 1;&lt;br /&gt;
&lt;br /&gt;
            /*&lt;br /&gt;
             * ---END_APPLICATION_CODE---&lt;br /&gt;
             */&lt;br /&gt;
&lt;br /&gt;
            saAmfResponse(amfHandle, invocation, SA_AIS_OK);&lt;br /&gt;
            break;&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| cellspacing=&amp;quot;0&amp;quot; cellpadding = &amp;quot;0&amp;quot; border=&amp;quot;0&amp;quot; align = &amp;quot;center&amp;quot; width=&amp;quot;680&amp;quot;&lt;br /&gt;
 ! style=&amp;quot;color:black;background-color:#ffccaa;&amp;quot; align=&amp;quot;center&amp;quot;|clCompAppMain.c&lt;br /&gt;
 |-&lt;br /&gt;
 |&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
        case SA_AMF_HA_STANDBY:&lt;br /&gt;
        {&lt;br /&gt;
            /*&lt;br /&gt;
             * AMF has requested application to take the standby HA state &lt;br /&gt;
             * for this CSI.&lt;br /&gt;
             */&lt;br /&gt;
&lt;br /&gt;
            /*&lt;br /&gt;
             * ---BEGIN_APPLICATION_CODE---&lt;br /&gt;
             */&lt;br /&gt;
&lt;br /&gt;
            clprintf(CL_LOG_SEV_INFO, &amp;quot;csa101: New state is not the ACTIVE; deactivating service\n&amp;quot;);&lt;br /&gt;
            running = 0;&lt;br /&gt;
&lt;br /&gt;
            /*&lt;br /&gt;
             * ---END_APPLICATION_CODE---&lt;br /&gt;
             */&lt;br /&gt;
&lt;br /&gt;
            saAmfResponse(amfHandle, invocation, SA_AIS_OK);&lt;br /&gt;
            break;&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        case SA_AMF_HA_QUIESCED:&lt;br /&gt;
        {&lt;br /&gt;
            /*&lt;br /&gt;
             * AMF has requested application to quiesce the CSI currently&lt;br /&gt;
             * assigned the active or quiescing HA state. The application &lt;br /&gt;
             * must stop work associated with the CSI immediately.&lt;br /&gt;
             */&lt;br /&gt;
&lt;br /&gt;
            /*&lt;br /&gt;
             * ---BEGIN_APPLICATION_CODE---&lt;br /&gt;
             */&lt;br /&gt;
            clprintf(CL_LOG_SEV_INFO, &amp;quot;csa101: Acknowledging new state\n&amp;quot;);&lt;br /&gt;
            running = 0;&lt;br /&gt;
&lt;br /&gt;
            /*&lt;br /&gt;
             * ---END_APPLICATION_CODE---&lt;br /&gt;
             */&lt;br /&gt;
&lt;br /&gt;
            saAmfResponse(amfHandle, invocation, SA_AIS_OK);&lt;br /&gt;
            break;&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
{| cellspacing=&amp;quot;0&amp;quot; cellpadding = &amp;quot;0&amp;quot; border=&amp;quot;0&amp;quot; align = &amp;quot;center&amp;quot; width=&amp;quot;680&amp;quot;&lt;br /&gt;
 ! style=&amp;quot;color:black;background-color:#ffccaa;&amp;quot; align=&amp;quot;center&amp;quot;|clCompAppMain.c&lt;br /&gt;
 |-&lt;br /&gt;
 |&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
        case SA_AMF_HA_QUIESCING:&lt;br /&gt;
        {&lt;br /&gt;
            /*&lt;br /&gt;
             * AMF has requested application to quiesce the CSI currently&lt;br /&gt;
             * assigned the active HA state. The application must stop work&lt;br /&gt;
             * associated with the CSI gracefully and not accept any new&lt;br /&gt;
             * workloads while the work is being terminated.&lt;br /&gt;
             */&lt;br /&gt;
&lt;br /&gt;
            /*&lt;br /&gt;
             * ---BEGIN_APPLICATION_CODE---&lt;br /&gt;
             */&lt;br /&gt;
            clprintf(CL_LOG_SEV_INFO, &amp;quot;csa101: Signaling completion of QUIESCING\n&amp;quot;);&lt;br /&gt;
            running = 0;&lt;br /&gt;
&lt;br /&gt;
            /*&lt;br /&gt;
             * ---END_APPLICATION_CODE---&lt;br /&gt;
             */&lt;br /&gt;
&lt;br /&gt;
            saAmfCSIQuiescingComplete(amfHandle, invocation, SA_AIS_OK);&lt;br /&gt;
            break;&lt;br /&gt;
        }&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
We have modified the &amp;lt;code&amp;gt;clCompAppAMFCSISet&amp;lt;/code&amp;gt; callback function to let our application know what to do when the state changes. In the case where the state changes to &amp;lt;code&amp;gt;SA_AMF_HA_ACTIVE&amp;lt;/code&amp;gt; we set the &amp;lt;code&amp;gt;running&amp;lt;/code&amp;gt; variable to 1. This will cause our application to begin printing the 'Hello World!' message. For any other state change we set the &amp;lt;code&amp;gt;running&amp;lt;/code&amp;gt; variable to 0 which will cause the message to stop printing. For any state change we print out a message indicating the new state of the application.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;The last change that we make is to indicate to our application when the component is being disassociated with the workflow. (The following code begins at line 588 of the source file.)&lt;br /&gt;
&lt;br /&gt;
{| cellspacing=&amp;quot;0&amp;quot; cellpadding = &amp;quot;0&amp;quot; border=&amp;quot;0&amp;quot; align = &amp;quot;center&amp;quot; width=&amp;quot;680&amp;quot;&lt;br /&gt;
 ! style=&amp;quot;color:black;background-color:#ffccaa;&amp;quot; align=&amp;quot;center&amp;quot;|clCompAppMain.c&lt;br /&gt;
 |-&lt;br /&gt;
 |&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
void clCompAppAMFCSIRemove(SaInvocationT  invocation,&lt;br /&gt;
                           const SaNameT  *compName,&lt;br /&gt;
                           const SaNameT  *csiName,&lt;br /&gt;
                           SaAmfCSIFlagsT csiFlags)&lt;br /&gt;
{&lt;br /&gt;
    ....&lt;br /&gt;
&lt;br /&gt;
    /*  &lt;br /&gt;
     * Add application specific logic for removing the work for this CSI.&lt;br /&gt;
     */&lt;br /&gt;
&lt;br /&gt;
    /*  &lt;br /&gt;
     * ---BEGIN_APPLICATION_CODE---&lt;br /&gt;
     */&lt;br /&gt;
    running = 0;&lt;br /&gt;
&lt;br /&gt;
    /*&lt;br /&gt;
     * ---END_APPLICATION_CODE---&lt;br /&gt;
     */&lt;br /&gt;
&lt;br /&gt;
    saAmfResponse(amfHandle, invocation, SA_AIS_OK);&lt;br /&gt;
&lt;br /&gt;
    return;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
In the &amp;lt;code&amp;gt;clCompAppAMFCSIRemove&amp;lt;/code&amp;gt; callback function we indicate to our application that we are no longer running so that the while loop in the &amp;lt;code&amp;gt;hello_func&amp;lt;/code&amp;gt; function stops printing our 'Hello World!' message.&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Customizing the Component MakeFile===&lt;br /&gt;
We have to make a small change to the component &amp;lt;code&amp;gt;MakeFile&amp;lt;/code&amp;gt; so that it knows about our special output library during the build. To do this we add the following lines. This file is located in &amp;lt;code&amp;gt;/home/clovis/projectarea1/ide_workspace/SampleModel/src/app&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| cellspacing=&amp;quot;0&amp;quot; cellpadding = &amp;quot;0&amp;quot; border=&amp;quot;0&amp;quot; align = &amp;quot;center&amp;quot; width=&amp;quot;680&amp;quot;&lt;br /&gt;
 ! style=&amp;quot;color:black;background-color:#ffccaa;&amp;quot; align=&amp;quot;center&amp;quot;|Component MakeFile&lt;br /&gt;
 |-&lt;br /&gt;
 |&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
    # ---BEGIN_APPLICATION_CODE---&lt;br /&gt;
&lt;br /&gt;
    SUBDIRS += ev&lt;br /&gt;
&lt;br /&gt;
    # ---END_APPLICATION_CODE---&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Customizing the Application MakeFile===&lt;br /&gt;
We have to make sure that our special output library is built along with our application. To do this we change the line listing the sudirectories to make as follows. This file is located in the directory &amp;lt;code&amp;gt;/home/clovis/projectarea1/ide_workspace/SampleModel/src/app/csa101&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
{| cellspacing=&amp;quot;0&amp;quot; cellpadding = &amp;quot;0&amp;quot; border=&amp;quot;0&amp;quot; align = &amp;quot;center&amp;quot; width=&amp;quot;680&amp;quot;&lt;br /&gt;
 ! style=&amp;quot;color:black;background-color:#ffccaa;&amp;quot; align=&amp;quot;center&amp;quot;|Application MakeFile&lt;br /&gt;
 |-&lt;br /&gt;
 |&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
    # ---BEGIN_APPLICATION_CODE---&lt;br /&gt;
    &lt;br /&gt;
    ...&lt;br /&gt;
&lt;br /&gt;
    # Library added for demo console handling for the evaluation kit&lt;br /&gt;
    ASP_LIBS   +=  libeval.a&lt;br /&gt;
&lt;br /&gt;
    # ---END_APPLICATION_CODE---&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
We are finished customizing our application code!&lt;br /&gt;
&lt;br /&gt;
==Building the csa101 Code==&lt;br /&gt;
&lt;br /&gt;
Now that we have finished customizing the code it is time to build it. The build process is launched using the '''Project &amp;gt; Build Project''' menu item. Once selected the '''Build Configuration''' dialog appears.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id='Build Configuration Details'&amp;gt;&amp;lt;/span&amp;gt;[[File:Tutorial_BuildConfigDetails.png|frame|center| '''Build Configuration Details''' ]]&lt;br /&gt;
&lt;br /&gt;
The '''Build Configuration''' dialog is used to gather specific information about the build we are about to perform. Using this dialog you can rebuild the same model using different cross builds, or including different chassis managers. We don't have to make any changes to this dialog since the default settings make sense for our sample application.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;[[File:OpenClovis_Note.png]]If you have prebuilt the SAFplus Platform libraries then you can check the '''Use pre built SAFplus''' checkbox and include the location of the prebuilt libraries. For more information about pre-building SAFplus Platform libraries, see ''SAFplus Platform SDK User Guide''.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;[[File:OpenClovis_Note.png]]The '''Include SNMP for North Bound Access''' control is checked by default. This just means that Net SNMP will be started along with our system. If you want end-to-end connectivity you will need to supply an SNMP Sub Agent and a MIB. See the ''SAFplus Platform SDK User Guide'' for more details.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;[[File:OpenClovis_Note.png]]In the '''Project''' menu if the '''Build Project''' entry is not highlighted, then click in the right pane i.e. '''Clovis Workspace''' pane and click the '''Project''' menu again. This not highlighting of the '''Build Project''' is because the '''Clovis Workspace''' is not selected properly because of moving focus to some other pane.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;Click the '''OK''' button to begin the build. If this is the first time that the project is being built, or if you have made changes to any setting on this screen, you will initially see a progress dialog indicating that the project is being configured. The configuration step is setting up the project for building. After the configuration has completed you will see a progress dialog indicating that the code is being built.&lt;br /&gt;
&lt;br /&gt;
==Creating the csa101 Images==&lt;br /&gt;
&lt;br /&gt;
Making the csa101 images will create software packages that can be deployed on target machines to run the example. The process of creating images is launched using the '''Project &amp;gt; Make Images''' menu item. Once selected the '''Make Images Configuration''' dialog appears.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id='Make Images Configuration Details'&amp;gt;&amp;lt;/span&amp;gt;[[File:Tutorial_MakeImagesConfigDetails.png|frame|center| '''Make Images Configuration Details''' ]]&lt;br /&gt;
&lt;br /&gt;
The '''Make Images Configuration''' dialog is used to indicate information about the environment on which the images will be deployed. This information is used to tailor the images to run on that environment. Here we will make the following modificaiton.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Enter a value for the '''Trap IP'''. This value specifies where the SNMP sub-agent will send traps at runtime. This field is optional but if specified must be a valid IP address. Enter a value of '127.0.0.1' in this field.&lt;br /&gt;
&amp;lt;li&amp;gt;Enter a value for the '''TIPC Net ID'''. This value represents a unique identifier used by TIPC to set up interprocess communication across the deployed OpenClovis SAFplus Platform cluster. This field is required and should default to '1340'.&lt;br /&gt;
&amp;lt;li&amp;gt;Check the '''Create Node Specific Images''' and '''Package Images into Tarballs''' check boxes. This will create tarballs of the images making them easy to deploy to various machines.&lt;br /&gt;
&amp;lt;li&amp;gt;The table on this dialog will hold a row for each node instance defined in the model. In our case this is only one...SCNodeI0. For each of these instances we can define the slot number in the chassis on which the node will run and the network interface that the node will use for communication. In our case enter '1' for the Slot Number and 'eth0' for the Network Interface.&lt;br /&gt;
&amp;lt;li&amp;gt;Click '''OK''' to begin the make image process. A dialog box will appear and after a few seconds the the make images process will be complete.&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The images will be populated at &amp;lt;project_area&amp;gt;/target/SampleModel/images. Each node-specific image is provided as a directory containing the run-time files (binaries, libraries, prerequisites, and configuration files) as well as a tarball with the same content.  &amp;lt;i&amp;gt;e.g.&amp;lt;/i&amp;gt; For our model containing one node (&amp;lt;code&amp;gt;SCNodeI0&amp;lt;/code&amp;gt;) the following files and directories are generated for deployment on the run-time system.&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;project_area&amp;gt;&lt;br /&gt;
   |+target&lt;br /&gt;
       |+&amp;lt;model&amp;gt;&lt;br /&gt;
           |+images&lt;br /&gt;
               |+SCNodeI0&lt;br /&gt;
               |   |+bin&lt;br /&gt;
               |   |+etc&lt;br /&gt;
               |   |+lib&lt;br /&gt;
               |   |+modules&lt;br /&gt;
               |   |+share&lt;br /&gt;
               |-SCNodeI0.tgz&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The rest of the steps in this example are all done from the command line so we can exit the IDE. To do this use the '''File &amp;gt; Exit''' menu item.&lt;br /&gt;
&lt;br /&gt;
==Deploying the csa101 Images==&lt;br /&gt;
Now that the image has been built we must deploy it so that we can run and observe our example. Since we are assuming that the example will be run on the same machine as the images were built this is a fairly trivial exercise. Use the following steps to deploy the runtime image.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ol&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;First we create a directory where we will install the image. In our case we will use &amp;lt;code&amp;gt;/root/asp&amp;lt;/code&amp;gt;.&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
# cd /root&lt;br /&gt;
# mkdir asp&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Next we navigate to that directory and untar the deployment package.&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
# cd /root/asp&lt;br /&gt;
# tar xzvf /home/clovis/projectarea1/target/SampleModel/images/SCNodeI0.tgz&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The System Controller is now installed and ready to run.&lt;br /&gt;
&lt;br /&gt;
[[File:OpenClovis_Note.png]] If you were going to run the example on a machine other than the one where the images were built you would first copy the installation tarball to that machine before performing the above steps.&lt;br /&gt;
&lt;br /&gt;
==Running the csa101 Example==&lt;br /&gt;
There are two parts to running the csa101 example. First we must start SAFplus Platform, and then we interact with the system components.&lt;br /&gt;
&lt;br /&gt;
===Starting SAFplus Platform===&lt;br /&gt;
&lt;br /&gt;
To start SAFplus Platform on System Controller node.&lt;br /&gt;
&amp;lt;ol&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Open a shell.&lt;br /&gt;
&amp;lt;li&amp;gt;Run the following commands&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
# cd /root/asp&lt;br /&gt;
# etc/init.d/asp start&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:OpenClovis_Note.png]] This assumes that you are running the SAFplus Platform example on the same PC that you are executing these commands. If you are running SAFplus Platform on a different machine then you should first ssh to that machine before executing the commands.&lt;br /&gt;
&lt;br /&gt;
[[File:OpenClovis_Note.png]] If SAFplus Platform fails to start properly it could be due to the machine's firewall being enabled. SAFplus Platform will not run on a machine which has firewall enabled. See the ''Environment Related Observation'' section of the ''SAFplus Platform Release Notes'' for more information.&lt;br /&gt;
&lt;br /&gt;
[[File:OpenClovis_Note.png]] By default the network interface used by the Group Membership Service is set to eth0. During the make images phase of the tutorial we also set the ethernet interface for node SCNodeI0 to be eth0. During image generation these configuration parameters are written to two files in the deployment package.&lt;br /&gt;
*&amp;lt;code&amp;gt;/root/asp/etc/clGmsConfig.xml&amp;lt;/code&amp;gt;&lt;br /&gt;
*&amp;lt;code&amp;gt;/root/asp/etc/asp.conf&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
There may be an occasion where you want to switch this interface for a machine on which you are deploying. If you would like to switch this interface on a machine without having to go through the process of rebuilding and redeploying, you can edit these two files and change the 'eth0' references to the interface you would like to use.&lt;br /&gt;
&lt;br /&gt;
===Interacting with the System Components===&lt;br /&gt;
Once SAFplus Platform is up and running the next step is to start csa101 by informing SAFplus Platform that it should start the application. The Evaluation System's model tells SAFplus Platform that csa101 is locked for instantiation. This means that the process will not be started when SAFplus Platform comes up. This method of starting csa's is used for the Evaluation System, allowing users to interact with csa's and clearly see their output/functionality. Usually this would not be the case with applications, where they would run when SAFplus Platform begins.&lt;br /&gt;
&lt;br /&gt;
At this point it would help to be familiar with the Service Availability Forum's notions of  Service Unit, Service Group, and administrative state.  The Service Availability Forum's Application Interface Specification (available from http://www.saforum.org/) is a good place to start.&lt;br /&gt;
&lt;br /&gt;
In brief, the sample applications in the Evaluation System are part of service units which in turn are part of service groups.  Service groups (and the service units that make up the service groups) can be in &amp;quot;administrative&amp;quot; states which include &amp;quot;LockInstantiation&amp;quot;, &amp;quot;LockAssignment&amp;quot;, and &amp;quot;Unlocked&amp;quot;.  There are other states, but these are the ones we care about for the purposes of this Evaluation System.  If the administrative state of a service unit is &amp;quot;LockInstantiation&amp;quot; then the application that is part of that service unit will not even be started.  If the administrative state is &amp;quot;LockAssignment&amp;quot; then the application will be started, but it will not be assigned any work.  If the administrative state is &amp;quot;Unlocked&amp;quot; then it will not only be started, but will have a workload assigned to it, which is to say that it will start doing work (or start providing service), rather than idly sit waiting for work.&lt;br /&gt;
&lt;br /&gt;
The administrative state of a service unit or service group can change from LockInstantiation to LockAssignment, from LockAssignment to Unlocked, or back to LockInstantiation, from Unlocked to LockAssignment.  A picture might help here:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;PartialServiceGroupAdministrativeStateDiagram&amp;quot;&amp;gt;&amp;lt;/span&amp;gt; [[File:eval_AdministrativeStateDiagram.png|frame|center| '''Partial Service Group Administrative State Diagram''' ]]&lt;br /&gt;
&lt;br /&gt;
As the figure shows, the administrative state of a service unit (or service group) can change from &amp;quot;LockInstantiation&amp;quot; to &amp;quot;LockAssignment&amp;quot; and from there to &amp;quot;Unlocked&amp;quot;, or back to &amp;quot;LockInstantiation&amp;quot;.  One way to change the administrative state of a service group is with the SAFplus Platform Console command line interface. &lt;br /&gt;
&lt;br /&gt;
To use the SAFplus Platform Console:&lt;br /&gt;
&amp;lt;ol&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; Open a terminal on the Development Machine. (Or ssh into System Controller node as root, if you are running SAFplus Platform on a machine other than the development machine.)&lt;br /&gt;
&amp;lt;li&amp;gt; Change to image bin directory: &amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;# cd /root/asp/bin&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt; Start the SAFplus Platform Console &amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;# ./asp_console&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt; From within the SAFplus Platform Console: &amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
cli[Test]-&amp;gt; setc 1&lt;br /&gt;
cli[Test:SCNodeI0]-&amp;gt; setc cpm&lt;br /&gt;
cli[Test:SCNodeI0:CPM]-&amp;gt; amsLockAssignment sg csa101SGI0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The above changes the administrative state of the group csa101SGI0 from &amp;quot;locked-for-instantiation&amp;quot; to &amp;quot;locked-for-assignment&amp;quot;.&lt;br /&gt;
&amp;lt;br&amp;gt;[[File:OpenClovis_Note.png]]For the command &amp;lt;code&amp;gt;cli[Test]-&amp;gt; setc 1&amp;lt;/code&amp;gt;, the 1 represents the physical slot number of the System Controller within the Chassis. Remember that we set our System Controller to be in slot 1 in the make images dialog.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;Now lets tail the application log file so that we can see whats going on. In another window, as root, run:&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
# tail -f /root/asp/var/log/csa101I0Log.latest&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You should see the following:&lt;br /&gt;
&lt;br /&gt;
{| cellspacing=&amp;quot;0&amp;quot; cellpadding = &amp;quot;0&amp;quot; border=&amp;quot;0&amp;quot; align = &amp;quot;center&amp;quot; width=&amp;quot;680&amp;quot;&lt;br /&gt;
 ! style=&amp;quot;color:black;background-color:#ffffaa;&amp;quot; align=&amp;quot;center&amp;quot;| /root/asp/var/log/csa101I0Log.latest&lt;br /&gt;
 |-&lt;br /&gt;
 |&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
Tue Jul 15 21:32:06 2008   (SCNodeI0.10849 : csa101_EO.---.---.00034 :   INFO)&lt;br /&gt;
 Component [csa101I0] : PID [10849]. Initializing&lt;br /&gt;
&lt;br /&gt;
Tue Jul 15 21:32:06 2008   (SCNodeI0.10849 : csa101_EO.---.---.00035 :   INFO)&lt;br /&gt;
    IOC Address             : 0x1&lt;br /&gt;
&lt;br /&gt;
Tue Jul 15 21:32:06 2008   (SCNodeI0.10849 : csa101_EO.---.---.00036 :   INFO)&lt;br /&gt;
    IOC Port                : 0x80&lt;br /&gt;
&lt;br /&gt;
Tue Jul 15 21:32:06 2008   (SCNodeI0.10849 : csa101_EO.---.---.00037 :   INFO)&lt;br /&gt;
 csa101: Instantiated as component instance csa101I0.&lt;br /&gt;
&lt;br /&gt;
Tue Jul 15 21:32:06 2008   (SCNodeI0.10849 : csa101_EO.---.---.00038 :   INFO)&lt;br /&gt;
 csa101I0: Waiting for CSI assignment...&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;Next change the administrative state of the csa101SGI0 service group to  &amp;quot;unlocked&amp;quot; by running (in the SAFplus Platform Console) :&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
# cli[Test:SCNodeI0:CPM]-&amp;gt; amsUnlock sg csa101SGI0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In the window where you're running the &amp;quot;tail -f&amp;quot; you should see:&lt;br /&gt;
&lt;br /&gt;
{| cellspacing=&amp;quot;0&amp;quot; cellpadding = &amp;quot;0&amp;quot; border=&amp;quot;0&amp;quot; align = &amp;quot;center&amp;quot; width=&amp;quot;680&amp;quot;&lt;br /&gt;
 ! style=&amp;quot;color:black;background-color:#ffffaa;&amp;quot; align=&amp;quot;center&amp;quot;| /root/asp/var/log/csa101I0Log.latest&lt;br /&gt;
 |-&lt;br /&gt;
 |&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
Tue Jul 15 21:36:17 2008   (SCNodeI0.10849 : csa101_EO.---.---.00049 :   INFO)&lt;br /&gt;
 csa101: ACTIVE state requested; activating service&lt;br /&gt;
&lt;br /&gt;
Tue Jul 15 21:36:18 2008   (SCNodeI0.10849 : csa101_EO.---.---.00050 :   INFO)&lt;br /&gt;
 csa101: Hello World! .&lt;br /&gt;
&lt;br /&gt;
Tue Jul 15 21:36:19 2008   (SCNodeI0.10849 : csa101_EO.---.---.00051 :   INFO)&lt;br /&gt;
 csa101: Hello World!  .&lt;br /&gt;
&lt;br /&gt;
Tue Jul 15 21:36:20 2008   (SCNodeI0.10849 : csa101_EO.---.---.00052 :   INFO)&lt;br /&gt;
 csa101: Hello World!   .&lt;br /&gt;
&lt;br /&gt;
Tue Jul 15 21:36:21 2008   (SCNodeI0.10849 : csa101_EO.---.---.00053 :   INFO)&lt;br /&gt;
 csa101: Hello World!    .&lt;br /&gt;
&lt;br /&gt;
Tue Jul 15 21:36:22 2008   (SCNodeI0.10849 : csa101_EO.---.---.00054 :   INFO)&lt;br /&gt;
 csa101: Hello World!     .&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
As you can tell from the output log our component is up and running! It is continuously printing our 'Hello World!' output.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;Now change the state of the csa101SGI0 service group back to &amp;quot;locked-for-assignment&amp;quot; by running (in the SAFplus Platform Console): &lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
# cli[Test:SCNodeI0:CPM]-&amp;gt; amsLockAssignment sg csa101SGI0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In the tail -f output you should see:&lt;br /&gt;
&lt;br /&gt;
{| cellspacing=&amp;quot;0&amp;quot; cellpadding = &amp;quot;0&amp;quot; border=&amp;quot;0&amp;quot; align = &amp;quot;center&amp;quot; width=&amp;quot;680&amp;quot;&lt;br /&gt;
 ! style=&amp;quot;color:black;background-color:#ffffaa;&amp;quot; align=&amp;quot;center&amp;quot;| /root/asp/var/log/csa101I0Log.latest&lt;br /&gt;
 |-&lt;br /&gt;
 |&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
Tue Jul 15 21:39:29 2008   (SCNodeI0.10849 : csa101_EO.---.---.00241 :   INFO)&lt;br /&gt;
 csa101: Hello World!  .&lt;br /&gt;
&lt;br /&gt;
Tue Jul 15 21:39:30 2008   (SCNodeI0.10849 : csa101_EO.---.---.00242 :   INFO)&lt;br /&gt;
 Component [csa101I0] : PID [10849]. CSI Set Received&lt;br /&gt;
&lt;br /&gt;
Tue Jul 15 21:39:30 2008   (SCNodeI0.10849 : csa101_EO.---.---.00243 :   INFO)&lt;br /&gt;
    CSI Flags               : [Target One]&lt;br /&gt;
&lt;br /&gt;
Tue Jul 15 21:39:30 2008   (SCNodeI0.10849 : csa101_EO.---.---.00244 :   INFO)&lt;br /&gt;
    CSI Name                : [csa101CSII0]&lt;br /&gt;
&lt;br /&gt;
Tue Jul 15 21:39:30 2008   (SCNodeI0.10849 : csa101_EO.---.---.00245 :   INFO)&lt;br /&gt;
    HA State                : [Quiesced]&lt;br /&gt;
&lt;br /&gt;
Tue Jul 15 21:39:30 2008   (SCNodeI0.10849 : csa101_EO.---.---.00246 :   INFO)&lt;br /&gt;
 csa101: Acknowledging new state&lt;br /&gt;
&lt;br /&gt;
Tue Jul 15 21:39:30 2008   (SCNodeI0.10849 : csa101_EO.---.---.00249 :   INFO)&lt;br /&gt;
 Component [csa101I0] : PID [10849]. CSI Remove Received&lt;br /&gt;
&lt;br /&gt;
Tue Jul 15 21:39:30 2008   (SCNodeI0.10849 : csa101_EO.---.---.00250 :   INFO)&lt;br /&gt;
    CSI                     : csa101CSII0&lt;br /&gt;
&lt;br /&gt;
Tue Jul 15 21:39:30 2008   (SCNodeI0.10849 : csa101_EO.---.---.00251 :   INFO)&lt;br /&gt;
    CSI Flags               : 0x2&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Our component has been put into Lock Assignment state so our 'Hello World!' output has stopped printing to the log.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;At this point you can either unlock the service group to change its state to &amp;quot;unlocked&amp;quot; or you can lock it for instantiation to change it to state  &amp;quot;locked-for-instantiation&amp;quot;.  The latter will cause the csa101 process to die.  From state &amp;quot;locked-for-assignment&amp;quot;, it is possible to change the state to &amp;quot;locked-for-instantiation&amp;quot; by running (in the SAFplus Platform Console):&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
cli[Test:SCNodeI0:CPM]-&amp;gt; amsLockInstantiation sg csa101SGI0&lt;br /&gt;
cli[Test:SCNodeI0:CPM] -&amp;gt; end&lt;br /&gt;
cli[Test:SCNodeI0] -&amp;gt; end&lt;br /&gt;
cli[Test] -&amp;gt; bye&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Stopping SAFplus Platform===&lt;br /&gt;
&lt;br /&gt;
To stop SAFplus Platform on the System Controller&lt;br /&gt;
&amp;lt;ol&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Open a shell.&lt;br /&gt;
&amp;lt;li&amp;gt;ssh into the System Controller node as root.&lt;br /&gt;
&amp;lt;li&amp;gt;Once logged in, run the following command&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
# cd /root/asp&lt;br /&gt;
# etc/init.d/asp stop&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Summary and Next Steps==&lt;br /&gt;
In the csa101 example we learned the following.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;How to create a system model using the '''SAFplus Platform IDE'''.&lt;br /&gt;
&amp;lt;li&amp;gt;How to generate the source code.&lt;br /&gt;
&amp;lt;li&amp;gt;How to customize this source code to fit a specific application.&lt;br /&gt;
&amp;lt;li&amp;gt;How to configure and build the customized source code.&lt;br /&gt;
&amp;lt;li&amp;gt;How to make runtime images and deploy them to target machines.&lt;br /&gt;
&amp;lt;li&amp;gt;How to start and stop '''SAFplus'''.&lt;br /&gt;
&amp;lt;li&amp;gt;How to interact with system components using the '''SAFplus Platform Console'''.&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The next logical step would be to run through the '''SAFplus Platform Evaluation System User Guide'''. This guide goes over more complex system configurations and introduces new concepts.&lt;br /&gt;
&lt;br /&gt;
For more in depth information on the '''SAFplus Platform IDE''' see the '''SAFplus Platform IDE User Guide'''.&lt;br /&gt;
&lt;br /&gt;
For more in depth information on the '''SAFplus Platform SDK''' see the '''SAFplus Platform SDK User Guide'''.&lt;br /&gt;
&lt;br /&gt;
==Appendix A: target.conf Settings==&lt;br /&gt;
&lt;br /&gt;
Below is a description of the values in the settings in the &amp;lt;code&amp;gt;target.conf&amp;lt;/code&amp;gt; file.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ol&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;'''TRAP_IP''' (Mandatory): Specifies where the SNMP SubAgent should send traps at runtime.  If you do not have an SNMP SubAgent in your model specify '''127.0.0.1''' as the value.  &amp;lt;i&amp;gt;e.g.&amp;lt;/i&amp;gt;:&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
TRAP_IP=127.0.0.1&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;'''CMM_IP''' (Mandatory if deployed on an ATCA chassis): Specifies the IP address of the target system's chassis management module or shelf manager. &amp;lt;i&amp;gt;ATCA chassis Example&amp;lt;/i&amp;gt;:&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
CMM_IP=169.254.1.2&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;'''CMM_USERNAME''' and '''CMM_PASSWORD''' (Mandatory if deployed on an ATCA chassis): Specifies the username and password required for the OpenClovis SAFplus Platform Chassis Manager to connect to the target system's chassis management module. &amp;lt;i&amp;gt;e.g.&amp;lt;/i&amp;gt;:&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
CMM_USERNAME=root&lt;br /&gt;
CMM_PASSWORD=password&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;'''INSTALL_PREREQUISITES=YES|NO''' (Mandatory): Specifies whether the target images will include 3rd party runtime prerequisites or not.  Say '''YES''' if the target nodes do not meet the target host requirements specified in the Installation section of this document.  &amp;lt;i&amp;gt;e.g.&amp;lt;/i&amp;gt;:&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
INSTALL_PREREQUISITES=YES&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;'''INSTANTIATE_IMAGES=YES|NO''' (Mandatory): Specifies whether &amp;lt;code&amp;gt;make images&amp;lt;/code&amp;gt; will generate node-instance specific images instead of only generating node-type specific images.  This option is a development optimization for advanced users of SAFplus Platform SDK.  If unsure, say '''YES'''. &amp;lt;i&amp;gt;e.g.&amp;lt;/i&amp;gt;:&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
INSTANTIATE_IMAGES=YES&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;'''CREATE_TARBALLS=YES|NO''' (Mandatory): Specifies whether the node-instance specific images created will be packaged into tarballs for deployment onto the target system.  If unsure, say '''YES'''.  &amp;lt;i&amp;gt;e.g.&amp;lt;/i&amp;gt;:&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
CREATE_TARBALLS=YES&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;'''TIPC_NETID''' (Mandatory): Specifies a unique identifier used by TIPC to set up interprocess communication across the deployed OpenClovis SAFplus Platform cluster.  This is an unsigned 32-bit integer, and &amp;lt;i&amp;gt;must&amp;lt;/i&amp;gt; be unique for every model that is deployed.  &amp;lt;i&amp;gt;e.g.&amp;lt;/i&amp;gt;:&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
TIPC_NETID=1337&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;'''Node Instance Details''': These specify the node-instance specific parameters required for deploying the model. For each node in the model there is a corresponding entry in the file:&lt;br /&gt;
&amp;lt;ol&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;'''SLOT_&amp;lt;node instance name&amp;gt;''' (Mandatory): Specifies which slot the node is located in.  The first slot is slot 1 -- DO NOT USE SLOT NUMBER 0, it is invalid.  When deployed to an ATCA chassis, the physical slot in which the blade is actually installed will override this value.  When deployed to regular (non-ATCA) systems, this is a logical slot and must be unique for every node in the cluster. &amp;lt;i&amp;gt;e.g.&amp;lt;/i&amp;gt;:&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
SLOT_SCNodeI0=1&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;'''LINK_&amp;lt;node instance name&amp;gt;''' (Optional): Specifies the ethernet interface used by the node for OpenClovis SAFplus Platform communication with the rest of the cluster.  If unspecified, this defaults to &amp;lt;code&amp;gt;eth0&amp;lt;/code&amp;gt;.  &amp;lt;i&amp;gt;e.g.&amp;lt;/i&amp;gt;:&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
LINK_SCNodeI0=eth0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;'''ARCH_&amp;lt;node instance name&amp;gt;''' (Optional if '''ARCH''' is specified): Specifies the target architecture of the node as a combination of machine architecture (MACH) and linux kernel version.  This is only required on a per-node basis if the target cluster has heterogeneous architectures across the nodes.  If it is a homogeneous cluster, a single '''ARCH''' parameter (described below) will suffice.  &amp;lt;i&amp;gt;e.g.&amp;lt;/i&amp;gt;:&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
ARCH_SCNodeI0=i386/linux-2.6.14&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;'''ARCH''' (Optional if node-specific '''ARCH_''' parameters are specified): Specifies the target architecture of all nodes in a homogeneous cluster as a combination of machine architecture (MACH) and linux kernel version.  Note: The build process automatically populates this variable based on the last target the model is built for.&amp;lt;i&amp;gt;e.g.&amp;lt;/i&amp;gt;:&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
ARCH=i386/linux-2.6.14&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
For example, if we have a three-node cluster with the following details:&lt;br /&gt;
{| border=&amp;quot;0&amp;quot; cellpadding=&amp;quot;3&amp;quot; align=&amp;quot;center&amp;quot; width=&amp;quot;600&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;bottom&amp;quot; | '''Example Node Instance Detail'''&lt;br /&gt;
|- style=&amp;quot;color:#ffffff; background:#549cc6&amp;quot;&lt;br /&gt;
!style=&amp;quot;color:#66b154; background:#09477c&amp;quot;| Node Name&lt;br /&gt;
!style=&amp;quot;color:#66b154; background:#09477c&amp;quot;| Slot Number&lt;br /&gt;
!style=&amp;quot;color:#66b154; background:#09477c&amp;quot;| Link Interface&lt;br /&gt;
!style=&amp;quot;color:#66b154; background:#09477c&amp;quot;| Architecture&lt;br /&gt;
|- style=&amp;quot;color:#ffffff; background:#549cc6&amp;quot;&lt;br /&gt;
|SCNodeI0&lt;br /&gt;
|1&lt;br /&gt;
|eth0&lt;br /&gt;
|i386/linux-2.6.14&lt;br /&gt;
|- style=&amp;quot;color:#ffffff; background:#549cc6&amp;quot;&lt;br /&gt;
|PayloadNodeI0&lt;br /&gt;
|3&lt;br /&gt;
|eth0&lt;br /&gt;
|i386/linux-2.6.14&lt;br /&gt;
|- style=&amp;quot;color:#ffffff; background:#549cc6&amp;quot;&lt;br /&gt;
|PayloadNodeI1&lt;br /&gt;
|4&lt;br /&gt;
|eth1&lt;br /&gt;
|ppc/linux-2.6.9&lt;br /&gt;
|}&lt;br /&gt;
we would specify the node instance details as:&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
SLOT_SCNodeI0=1&lt;br /&gt;
SLOT_PayloadNodeI0=3&lt;br /&gt;
SLOT_PayloadNodeI1=4&lt;br /&gt;
&lt;br /&gt;
LINK_SCNodeI0=eth0&lt;br /&gt;
LINK_PayloadNodeI0=eth0&lt;br /&gt;
LINK_PayloadNodeI1=eth1&lt;br /&gt;
&lt;br /&gt;
ARCH_SCNodeI0=i386/linux-2.6.14&lt;br /&gt;
ARCH_PayloadNodeI0=i386/linux-2.6.14&lt;br /&gt;
ARCH_PayloadNodeI1=ppc/linux-2.6.9&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Appendix B: AMF Configuration Details==&lt;br /&gt;
This appendix gives brief descriptions of configuration details for instances of different entities (like Node, Service Group, Service Unit etc) that are present in the '''Clovis''' -&amp;gt; '''AMF Configuration''' dialog box.&lt;br /&gt;
&lt;br /&gt;
===Node Instance===&lt;br /&gt;
This screen displays the node instance that was created by the Node Instance Wizard. This node instance was created because the node type '''SCNode''' was selected on the wizard screen.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id='Node Instance Details'&amp;gt;&amp;lt;/span&amp;gt;[[File:Tutorial_NodeInstanceDetails.png|frame|center| '''Node Instance Details''' ]]&lt;br /&gt;
&lt;br /&gt;
The information on this screen is described below.&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;'''Node Instance Name''': This field holds the name of the node instance. This name must be unique. The name that was generated combines the node type (SCNode), the letter I (for Instance), and the number 0 (since this is the first instance of this type).&lt;br /&gt;
&amp;lt;li&amp;gt;'''Node Type''': This field holds the node type that was selected on the wizard screen.&lt;br /&gt;
&amp;lt;li&amp;gt;'''MOID''': This is the unique identifier for the node instance. It was generated by the wizard. The format of this ID is a string representing the one and only instance of the chassis (\Chassis:0) defined in the Resource Editor followed by a string representing the first and only instance of the blade type (\SysBlade:0) that was selected in the Node Instance Wizard.&lt;br /&gt;
&amp;lt;br&amp;gt;[[File:OpenClovis_Note.png]]'''MOID''' is an acronym for Managed Object Identifier. It must be unique and is used to identify which hardware chassis and blade type this instance will run on.&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Service Unit Instance===&lt;br /&gt;
This screen displays the service unit instance that was created by the Service Group Instance Wizard. This service unit instance was created because the service unit type is associated with both the selected node type (SCNode) and the selected service group type (csa101SG) in our model.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id='SU Instance Details'&amp;gt;&amp;lt;/span&amp;gt;[[File:Tutorial_SUInstanceDetails.png|frame|center| '''SU Instance Details''' ]]&lt;br /&gt;
&lt;br /&gt;
The information on this screen is described below.&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;'''SU Instance Name''': This field holds the name of the service unit instance. This name must be unique. The name that was generated combines the service unit type (csa101SU), the letter I (for Instance), and the number 0 (since this is the first instance of this type).&lt;br /&gt;
&amp;lt;li&amp;gt;'''Service Unit Type''': This field holds the type of the service unit instance.&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Component Instance===&lt;br /&gt;
This screen displays the component instance that was created by the Service Group Instance Wizard. This component instance was created because the component type is associated with the created parent service unit type (csa101SU) in our model.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id='Component Instance Details'&amp;gt;&amp;lt;/span&amp;gt;[[File:Tutorial_ComponentInstanceDetails.png|frame|center| '''Component Instance Details''' ]]&lt;br /&gt;
&lt;br /&gt;
The information on this screen is described below.&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;'''Component Instance Name''': This field holds the name of the component instance. This name must be unique. The name that was generated combines the component type (csa101), the letter I (for Instance), and the number 0 (since this is the first instance of this type).&lt;br /&gt;
&amp;lt;li&amp;gt;'''Component Type''': This field holds the type of the component instance.&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Service Group Instance===&lt;br /&gt;
This screen displays the service group instance that was created by the Service Group Instance Wizard. This service group instance was created because the service group type '''csa101SG''' was selected on the wizard screen.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id='Service Group Instance Details'&amp;gt;&amp;lt;/span&amp;gt;[[File:Tutorial_SGInstanceDetails.png|frame|center| '''Service Group Instance Details''' ]]&lt;br /&gt;
&lt;br /&gt;
The information on this screen is described below.&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;'''SG Instance Name''': This field holds the name of the service group instance. This name must be unique. The name that was generated combines the service group type (csa101SG), the letter I (for Instance), and the number 0 (since this is the first instance of this type).&lt;br /&gt;
&amp;lt;li&amp;gt;'''ServiceGroup Type''': This field holds the type of the service group instance.&lt;br /&gt;
&amp;lt;li&amp;gt;'''Associated Service Units''': This button is used to associate service unit instances with this service group instance. Creating this association indicates that the selected service unit(s) will run within this service group instance.&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Clicking the '''Associated Service Units''' Edit... button will display the following dialog.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id='Associated Service Units Dialog'&amp;gt;&amp;lt;/span&amp;gt;[[File:Tutorial_SG_SI_Association.png|frame|center| '''Associated Service Units Dialog''' ]]&lt;br /&gt;
&lt;br /&gt;
This dialog lists the service unit instances that can be associated with this service group instance. The list contains only one item, the service unit instance that was created by the wizard. This item is checked indicating that the wizard automatically chose this service unit instance to run within the service group instance.&lt;br /&gt;
&lt;br /&gt;
===Service Instance Instance===&lt;br /&gt;
This screen displays the service instance that was created by the Service Group Instance Wizard. This service instance was created because the service instance type is associated with the parent service group type (csa101SG) in our model.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id='Service Instance Details'&amp;gt;&amp;lt;/span&amp;gt;[[File:Tutorial_SIInstanceDetails.png|frame|center| '''Service Instance Details''' ]]&lt;br /&gt;
&lt;br /&gt;
The information on this screen is described below.&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;'''Service Instance Name''': This field holds the name of the service instance. This name must be unique. The name that was generated combines the service instance type (csa101SI), the letter I (for Instance), and the number 0 (since this is the first instance of this type).&lt;br /&gt;
&amp;lt;li&amp;gt;'''ServiceInstance Type''': This field holds the type of the service instance.&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Component Service Instance Instance===&lt;br /&gt;
This screen displays the component service instance that was created by the Service Group Instance Wizard. This component service instance was created because the component service instance is associated with the parent service instance type (csa101SI) in our model.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id='Component Service Instance Details'&amp;gt;&amp;lt;/span&amp;gt;[[File:Tutorial_CSIInstanceDetails.png|frame|center| '''Component Service Instance Details''' ]]&lt;br /&gt;
&lt;br /&gt;
The information on this screen is described below.&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;'''Component Service Instance Name''': This field holds the name of the component service instance. This name must be unique. The name that was generated combines the component service instance type (csa101CSI), the letter I (for Instance), and the number 0 (since this is the first instance of this type).&lt;br /&gt;
&amp;lt;li&amp;gt;'''ComponentServiceInstance Type''': This field holds the type of the component service instance.&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;/div&gt;</summary>
		<author><name>MediaWiki spam cleanup</name></author>	</entry>

	<entry>
		<id>https://help.openclovis.com/index.php/Talk:Index.php</id>
		<title>Talk:Index.php</title>
		<link rel="alternate" type="text/html" href="https://help.openclovis.com/index.php/Talk:Index.php"/>
				<updated>2012-02-21T03:47:42Z</updated>
		
		<summary type="html">&lt;p&gt;MediaWiki spam cleanup: Reverting to last revision not containing links to www.buyxanaxonlinepill.com&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;a href=http://ritualus.ru/css/guest/index.php?showforum=1&amp;gt;сколько калорий в горчичном хлебе&amp;lt;/a&amp;gt; &lt;br /&gt;
кровь из носа, резкое похудение симптомы &lt;br /&gt;
&amp;lt;a href=http://arhmuseum.ru/images/guest/index.php?showforum=1&amp;gt;солярий похудеть&amp;lt;/a&amp;gt; &lt;br /&gt;
красивая женская фигура &lt;br /&gt;
&amp;lt;a href=http://www.nex-demo.com/joomla09/forums/viewtopic.php?f=9&amp;amp;t=106383&amp;amp;p=173076#p173076&amp;gt;количество килокалорий в продуктах&amp;lt;/a&amp;gt; &lt;br /&gt;
диета при прободной язвеободная язва желудка диета &lt;br /&gt;
&amp;lt;a href=http://www.ridder-hansl.info/index.php?topic=60872.new#new&amp;gt;что можно есть на белковой диете&amp;lt;/a&amp;gt; &lt;br /&gt;
подбор диеты + от елены малышевой &lt;br /&gt;
&amp;lt;a href=http://www.vanschuylenbergh.com/vanallesewa/forum/viewtopic.php?p=558604#558604&amp;gt;диета 5 кг 1 неделя&amp;lt;/a&amp;gt; &lt;br /&gt;
рефераты на англ. языке, тема диета &lt;br /&gt;
&amp;lt;a href=http://technicallylost.com/wp-includes/guest/index.php?showforum=1&amp;gt;диетические фрукты и овощи&amp;lt;/a&amp;gt; &lt;br /&gt;
вес список кремлевской диеты &lt;br /&gt;
&amp;lt;a href=http://forums.dreadarmy.com/index.php?topic=17068.new#new&amp;gt;скачать бесплатно дыхательная гимнастика бодифлекс ирины макаровой&amp;lt;/a&amp;gt; &lt;br /&gt;
японская бессолевая диета меню &lt;br /&gt;
&amp;lt;a href=http://www.cistercium.es/foro/viewtopic.php?f=2&amp;amp;t=54996&amp;amp;p=63537#p63537&amp;gt;книга диетолога ковалькова&amp;lt;/a&amp;gt; &lt;br /&gt;
худеем + по крови &lt;br /&gt;
&amp;lt;a href=http://69.163.158.57/phpBB3/viewtopic.php?f=3&amp;amp;t=22346&amp;amp;p=44264#p44264&amp;gt;калорийность бкльенов&amp;lt;/a&amp;gt; &lt;br /&gt;
дневники сидящих на японской диете &lt;br /&gt;
&amp;lt;a href=http://digiscriptinc.com/js__/guest/index.php?showforum=1&amp;gt;гречневая крупа. калорийность&amp;lt;/a&amp;gt; &lt;br /&gt;
чистка кишечника реитами народной медицины &lt;br /&gt;
&amp;lt;a href=http://beta.cornerstonexp.org/includes/guest/index.php?showforum=1&amp;gt;калорийность пахлавы по-бакински&amp;lt;/a&amp;gt; &lt;br /&gt;
бросила курить поправилась на 10кг хочу за месяц похудеть &lt;br /&gt;
&amp;lt;a href=http://archeologistsforum.takislab.com/viewtopic.php?f=3&amp;amp;t=181094&amp;amp;p=357751#p357751&amp;gt;диетический шоколад рецепт&amp;lt;/a&amp;gt; &lt;br /&gt;
персональный повар диетолог vip &lt;br /&gt;
&amp;lt;a href=http://www.arsa.nmc.ac.th/forum/index.php/topic,4193.new.html#new&amp;gt;кто на сколько похудел на овсяной диете?&amp;lt;/a&amp;gt; &lt;br /&gt;
похудела за какое то время &lt;br /&gt;
&amp;lt;a href=http://inresto.ru/js/guest/index.php?showforum=1&amp;gt;как правильно пить энерджи диет&amp;lt;/a&amp;gt; &lt;br /&gt;
можно ли заниматься тяжелой атлетикой диабетикам &lt;br /&gt;
&amp;lt;a href=http://www.solicc.org/phpBB3/viewtopic.php?f=3&amp;amp;t=46242&amp;amp;p=76214#p76214&amp;gt;лечебные диеты 3, 4&amp;lt;/a&amp;gt; &lt;br /&gt;
аттестационной материал медсестры по диетпитанию &lt;br /&gt;
&amp;lt;a href=http://coconutsounds.com/webboard/index.php?topic=8.0&amp;gt;мигрень диетотерапия&amp;lt;/a&amp;gt; &lt;br /&gt;
медицина сахарный диабет припараты для лечения &lt;br /&gt;
&amp;lt;a href=http://belarent.ru/images/guest/index.php?showforum=1&amp;gt;калорийность урюка&amp;lt;/a&amp;gt; &lt;br /&gt;
сул из сельдерея диета &lt;br /&gt;
&amp;lt;a href=http://forum.blipadeal.com/forum/viewtopic.php?f=3&amp;amp;t=11448&amp;amp;p=14308#p14308&amp;gt;похудение водой&amp;lt;/a&amp;gt; &lt;br /&gt;
центр лечения диабета &lt;br /&gt;
&amp;lt;a href=http://www.job-pile.com/viewthread.php?tid=97750&amp;amp;pid=150016&amp;amp;page=25&amp;amp;extra=#pid150016&amp;gt;сколько килокалорий в курином яйце&amp;lt;/a&amp;gt; &lt;br /&gt;
диета abc меню &lt;br /&gt;
&amp;lt;a href=http://www.cktoolspro.com/webboard/index.php?topic=4756.new#new&amp;gt;диета + при дивертикулезе сигмовидной кишки&amp;lt;/a&amp;gt; &lt;br /&gt;
лида похудение москва&lt;br /&gt;
&lt;br /&gt;
== волшебная таблетка афродиты похудение ==&lt;br /&gt;
&lt;br /&gt;
[url=http://www.dev.arbitersoflight.net/forums/viewtopic.php?f=5&amp;amp;t=9434&amp;amp;p=17202#p17202]диета боннская екакой эффект[/url] &lt;br /&gt;
она похудела &lt;br /&gt;
[url=http://sailorcreek.hadirectory.co.uk/wp-content/plugins/zingiri-forum/mybb/showthread.php?tid=91424&amp;amp;pid=106520#pid106520]антипуриновая диета № 6[/url] &lt;br /&gt;
диета и режим кормящей матери &lt;br /&gt;
[url=http://hungariangods.uw.hu/viewtopic.php?p=10496#10496]калорийность овощного салата с маслом[/url] &lt;br /&gt;
диета для уменьшения объемов &lt;br /&gt;
[url=http://www.honspot.com/forums/viewtopic.php?f=2&amp;amp;t=42124&amp;amp;p=53664#p53664]оптимальный вес по брунхарду[/url] &lt;br /&gt;
медицинские центры где вставляют иглу для похудения &lt;br /&gt;
[url=http://newsletter.bitsaa.org/forum/viewtopic.php?f=2&amp;amp;t=29835&amp;amp;p=38370#p38370]как вызвать рвоту + чтобы похудеть[/url] &lt;br /&gt;
проверенная диета ангела &lt;br /&gt;
[url=http://www.recipes.ozinetworks.com/forums/viewtopic.php?f=10&amp;amp;t=46550&amp;amp;p=56380#p56380]лекарство + от сахарного диабета япония[/url] &lt;br /&gt;
я толкнул ее ногой-худая кошка шмыгнула мимо &lt;br /&gt;
[url=http://digicapsig.com/forum/viewtopic.php?pid=17834#p17834]как питаться правильно и сбросить вес[/url] &lt;br /&gt;
rjrntkb энерджи диет &lt;br /&gt;
[url=http://pepc.rynetproject.com/forum/viewtopic.php?f=2&amp;amp;t=105334&amp;amp;p=212735#p212735]сколько калорий + в вареной говядине[/url] &lt;br /&gt;
панкреатическая диета №5 &lt;br /&gt;
[url=http://igrobukvoteka.ru/forum/viewtopic.php?p=179611#179611]диета при угрозе сахар[/url] &lt;br /&gt;
диета + на сосисках &lt;br /&gt;
[url=http://www.papercenter.vooa.pl/index.php?topic=26121.new#new]алкоголизм, наркомании, внешнее проявление, борьба за здоровый образ жизни[/url] &lt;br /&gt;
таблица калорий готовых продуктов &lt;br /&gt;
[url=http://0of.ru/showthread.php?3919-%D0%BA%D0%B0%D1%80%D1%82%D0%BE%D1%84%D0%B5%D0%BB%D1%8C-%D0%BA%D0%B0%D0%BB%D0%BE%D1%80%D0%B8%D0%B9%D0%BD%D0%BE%D1%81%D1%82%D1%8C&amp;amp;p=5906#post5906]проекты по диабету 2009[/url] &lt;br /&gt;
белковые диеты для бодибилдеров &lt;br /&gt;
[url=http://www.dvvpu.org.ua/forum/viewtopic.php?f=5&amp;amp;t=7175&amp;amp;p=17705#p17705]аптечные таблетки для похудения[/url] &lt;br /&gt;
диета если повышен сахар в крови &lt;br /&gt;
[url=http://linkedin.seo7.net/sutra363.html#363]похудение от алексея[/url] &lt;br /&gt;
голодание и омолаживание &lt;br /&gt;
[url=http://www.minecraft1.co.uk/showthread.php?27537-45-%E4%ED%E5%E2%ED%E0%FF-%EE%F7%E8%F1&amp;amp;p=36132#post36132]сколькл калорий в кусочке медовика[/url] &lt;br /&gt;
таблетки помогающие похудеть &lt;br /&gt;
[url=http://onggong.w1.net/phpbb/viewtopic.php?p=215238#215238]сахарный диабет 1 типа гипегликемия[/url] &lt;br /&gt;
всё о сахарный диабете &lt;br /&gt;
[url=http://www.recaida.com/forumrec/viewtopic.php?p=54576#54576]эффективное похудение фото до и после[/url] &lt;br /&gt;
чем полезна грейфруктовая диета &lt;br /&gt;
[url=http://www.saxophonestocollect.com/forum/viewtopic.php?p=57132#57132]бодифлекс пресс[/url] &lt;br /&gt;
вода как диета &lt;br /&gt;
[url=http://nintendo-nebula.net/forums/showthread.php?tid=4662&amp;amp;pid=5279#pid5279]результат японская диета[/url] &lt;br /&gt;
фито чай + для похудения &lt;br /&gt;
[url=http://www.pol.ubu.ac.th/election54/webboard/index.php?topic=9939.new#new]почки + при сахарном диабете[/url] &lt;br /&gt;
калорийность мед &lt;br /&gt;
[url=http://prophotoguru.com/forums/viewtopic.php?f=16&amp;amp;t=68074&amp;amp;p=103276#p103276]диета-суп из лука порей[/url] &lt;br /&gt;
худеем правильно королева&lt;br /&gt;
&lt;br /&gt;
== таблетки для похудения лидо отзывы ==&lt;br /&gt;
&lt;br /&gt;
[url=http://hotelrenata.com/images/guest/index.php?showforum=20]велосипед калории[/url] &lt;br /&gt;
девушки выпили чай для похудения &lt;br /&gt;
[url=http://www.wiangchai.go.th/webboard/index.php?topic=78878.new#new]продажа б/у книги старые по диете[/url] &lt;br /&gt;
диабет 2ст &lt;br /&gt;
[url=http://www.gingermanc.co.uk/forum/showthread.php?tid=76680&amp;amp;pid=84955#pid84955]обертывание пленкой + для похудения[/url] &lt;br /&gt;
абсцесс голодание &lt;br /&gt;
[url=http://www.solocap.com/forums/viewtopic.php?f=10&amp;amp;t=6959&amp;amp;p=8805#p8805]диабет и сои[/url] &lt;br /&gt;
сколько надо набрать гликемических индексов различных продуктов при сахорном диабете &lt;br /&gt;
[url=http://melbournegaming.org/showthread.php?tid=3293&amp;amp;pid=4214#pid4214]диетадлшя усиления обмена веществ[/url] &lt;br /&gt;
антиоксидантная терапия у больных дисциркуляторной энцефалопатией отягощенной сахарным диабетом тип &lt;br /&gt;
[url=http://ff-kettenreith.at/forum/showthread.php?tid=436382&amp;amp;pid=444429#pid444429]звезда похудела[/url] &lt;br /&gt;
отвар шалфеядля похудения &lt;br /&gt;
[url=http://limusin-zurich.ru/includes/guest/index.php?showforum=1]мониторная очистка кишечника санкт петербург стоимость[/url] &lt;br /&gt;
мартынова людмила ивановна диет сестра пильнинской больници &lt;br /&gt;
[url=http://forum.servicepointvalcurone.it/viewtopic.php?p=103712#103712]без регистрации бесплатно похудеть[/url] &lt;br /&gt;
продукты кремлевской диеты &lt;br /&gt;
[url=http://duniaforum.com/showthread.php?59515-%EF%EE%F2%E5%F0%FF-%EA%E0%EB%EE%F0%E8&amp;amp;p=72235#post72235]биология доклад здоровый образ жизни[/url] &lt;br /&gt;
какое животное дает самое жирное молоко &lt;br /&gt;
[url=http://www.wiengkalong.in.th/webboard/index.php?topic=1489.new#new]рецепты от диетолога[/url] &lt;br /&gt;
как похудеть с помощью народных средств &lt;br /&gt;
[url=http://ipages.iitsweb.com/forum/viewtopic.php?pid=2888#p2888]картинки ожирение фитотерапия[/url] &lt;br /&gt;
роль физической культуры в обмене веществ &lt;br /&gt;
[url=http://therealhistory.org/forum/viewtopic.php?f=2&amp;amp;t=101247&amp;amp;p=158520#p158520]прошай диабет[/url] &lt;br /&gt;
что поможет похудению &lt;br /&gt;
[url=http://forum.boboho.net/showthread.php?5967-%EA%E0%EA-%F1%EF%E0%F1%E8%F2%E5-%E7-amp&amp;amp;p=8026&amp;amp;posted=1#post8026]сахарный диабет диета по группе крови[/url] &lt;br /&gt;
как похудеть в руках и ногах? &lt;br /&gt;
[url=http://forum.immunoterapia.ru/smf/index.php?topic=4393.new#new]истра лечебное голодание[/url] &lt;br /&gt;
очень жесткая но эффективная диета &lt;br /&gt;
[url=http://apoll.ru/includes/guest/index.php?showforum=1]голодание против паразитов[/url] &lt;br /&gt;
блюда из куриных грудок для диеты &lt;br /&gt;
[url=http://www.eliasranzschleifer.com/forums/viewtopic.php?f=12&amp;amp;t=169463&amp;amp;p=258197#p258197]диета для упругости[/url] &lt;br /&gt;
капсулы для похудания дали состав &lt;br /&gt;
[url=http://1izen.com/wp-content/plugins/zingiri-forum/mybb/showthread.php?tid=73479&amp;amp;pid=78057#pid78057]кислородное голодание у дететей первого года жизни[/url] &lt;br /&gt;
голодание пчел &lt;br /&gt;
[url=http://esed.upn.mx/modules.php?name=Forums&amp;amp;file=viewtopic&amp;amp;p=1018945#1018945]калорийность котлеты зразы[/url] &lt;br /&gt;
диета + при раке пищевода &lt;br /&gt;
[url=http://rchsteachers.org/forum/index.php?topic=72580.new#new]как вылечить диабет второго типа[/url] &lt;br /&gt;
лечебное питание при холецистите панкреатите &lt;br /&gt;
[url=http://ishimsad24.ru/templates/guest/index.php?showforum=1]распорядлк дня для похудения[/url] &lt;br /&gt;
сколько калорий в геркулесовой каше&lt;br /&gt;
&lt;br /&gt;
== какая диета прописана при тахикардии ==&lt;br /&gt;
&lt;br /&gt;
[url=http://www.la2-shift.com/forum/showthread.php?p=47529&amp;amp;posted=1#post47529]лечебное питание пациентов с патологией органов пищеварения.рефераты.[/url] &lt;br /&gt;
молоко с медом отзывы похудение &lt;br /&gt;
[url=http://bu96.ru/showthread.php?p=12804&amp;amp;posted=1#post12804]можно ли похудеть с помощью турбослим?[/url] &lt;br /&gt;
какую пищу можно есть расчет калорий за сутки &lt;br /&gt;
[url=http://madvertiserblogs.com/talkalabama/index.php?topic=120262.new#new]рецепт хлеба диет[/url] &lt;br /&gt;
возможно ли похудеть в великом посту &lt;br /&gt;
[url=http://ingenierodesoftware.megabyet.net/foros/index.php?topic=51500.new#new]лечим простуду при сахарном диабете у ребенка[/url] &lt;br /&gt;
рецепт диабет &lt;br /&gt;
[url=http://nayaritconsandoval.org/foro/viewtopic.php?f=2&amp;amp;t=194357&amp;amp;p=262979#p262979]обертывание для похудения в бане[/url] &lt;br /&gt;
новые диеты для похудания &lt;br /&gt;
[url=http://www.baerental-party.at/forum/showthread.php?tid=42095&amp;amp;pid=51075#pid51075]скачать программу ускоренного снижения веса[/url] &lt;br /&gt;
капсулы меридиан для похудения купить в петербурге &lt;br /&gt;
[url=http://akvom.ru/includes/guest/index.php?showforum=1]изменение обмена веществ при голодании[/url] &lt;br /&gt;
супер низкоклорийные диеты &lt;br /&gt;
[url=http://forum.nascutiaici.com/viewtopic.php?f=6&amp;amp;t=85748&amp;amp;p=135182#p135182]невралгия и сахарный диабет[/url] &lt;br /&gt;
лечебное питание роддом &lt;br /&gt;
[url=http://www.xn---21-5cdabe8ao5azmmz8ah.xn--p1ai/includes/guest/index.php?showforum=1]диеты для беременных[/url] &lt;br /&gt;
индивидуальная астрологической диеты &lt;br /&gt;
[url=http://jalues.bplaced.net/hsm//thread.php?sid=b833b4c4a6aaab31e45ce8eec096992f&amp;amp;postid=45416#post45416]диетический стол №10п[/url] &lt;br /&gt;
где скачать книгу как похудеть, не отходя от жизни &lt;br /&gt;
[url=http://www.chiangrai.rmutl.ac.th/radio/forums/index.php?topic=387.new#new]можно ли похудеть занимаясь ездой на велосипеде[/url] &lt;br /&gt;
низкокалорийный салат из крабовых палочекрецепт &lt;br /&gt;
[url=http://info.thetradeindia.com/forum/viewtopic.php?p=27283#27283]диссертация. диабетическая стопа[/url] &lt;br /&gt;
понятие кома при сахаарном диабете &lt;br /&gt;
[url=http://www.leetsins.com/showthread.php?tid=1149&amp;amp;pid=2870#pid2870]низкокалорийные блюда из мяса[/url] &lt;br /&gt;
dizao стройная фигура отзыв &lt;br /&gt;
[url=http://www.cergy-pontoise.1formatik.com/viewtopic.php?f=2&amp;amp;t=148763&amp;amp;p=242537#p242537]как стать стройной и сексуальной[/url] &lt;br /&gt;
китайская косметика чай сантиметр, таблетки для похудения &lt;br /&gt;
[url=http://www.dykal.net/forums/showthread.php?p=30738&amp;amp;posted=1#post30738]диета при раке яичника[/url] &lt;br /&gt;
целлюлита на попе &lt;br /&gt;
[url=http://www.2.mtzspb.z8.ru/includes/guest/index.php?showforum=1]и похудении[/url] &lt;br /&gt;
диабетика в проиморском крае &lt;br /&gt;
[url=http://jiangxiyiliao.tk/viewthread.php?tid=237418&amp;amp;pid=320987&amp;amp;page=12&amp;amp;extra=#pid320987]lierac от целлюлита[/url] &lt;br /&gt;
диета от светланы ахтаровой орт &lt;br /&gt;
[url=http://biophysics.vn/showthread.php?7073-%D0%BC%D0%B0%D0%BA-%D0%BA%D0%B0%D0%BB%D0%BE%D1%80%D0%B8%D0%B8&amp;amp;p=8592#post8592]обматывание пленкой для похудения[/url] &lt;br /&gt;
до чего доводит похудение ужасные кадры &lt;br /&gt;
[url=http://fz152.ru/includes/guest/index.php?showforum=1]диета мелани гриффит форум[/url] &lt;br /&gt;
способствуют ли оливки похуденияю &lt;br /&gt;
[url=http://www.oncoradioteca.com/foro//viewtopic.php?p=393098#393098]сколько стоит персональная диета малышевой[/url] &lt;br /&gt;
диета для живота без цитрусов&lt;br /&gt;
&lt;br /&gt;
== что представляют из себя таблетки для похудения анжелика ==&lt;br /&gt;
&lt;br /&gt;
[url=http://www.sohomotor.com/shop/forum/viewtopic.php?p=8986&amp;amp;sid=b36f4cb80f87647dec98a74925e9817b#8986]правильный вес похудеть[/url] &lt;br /&gt;
таблица калорийности сыр эменталь &lt;br /&gt;
[url=http://forum.undefeatedkal.net/viewtopic.php?f=19&amp;amp;t=10338&amp;amp;p=14469#p14469]все о фитнесе диета[/url] &lt;br /&gt;
диета из каш отзывы &lt;br /&gt;
[url=http://www.luckydiva.net/webboard/index.php?topic=21519.0]похудение ксюши бородиной[/url] &lt;br /&gt;
диета доктора аткинса отзывы &lt;br /&gt;
[url=http://komandor54.ru/includes/guest/index.php?showforum=1]очень сиьон замедленный обмен веществ[/url] &lt;br /&gt;
быстро вывести из диабетической комы человека &lt;br /&gt;
[url=http://3quote.co.za/images/guest/index.php?showforum=1]что поможет похудению бизнес[/url] &lt;br /&gt;
капсулы для похудения китайские zhen de snou &lt;br /&gt;
[url=http://www.alphawolves.net46.net/phpBB3/viewtopic.php?f=4&amp;amp;t=2424&amp;amp;p=2800#p2800]диета при молочнице что можно[/url] &lt;br /&gt;
4 степень ожирения &lt;br /&gt;
[url=http://decor-studio.com.ua/images/guest/index.php?showforum=1]офоризмы о диете[/url] &lt;br /&gt;
почему появляется целлюлит &lt;br /&gt;
[url=http://spartak-sib.ru/includes/guest/index.php?showforum=1]кремлевская диета 14 дней[/url] &lt;br /&gt;
25 кадр похудение форумы отзывы &lt;br /&gt;
[url=http://forum.webjabber.net/viewtopic.php?p=90198#90198]диета при кисте молочной железы[/url] &lt;br /&gt;
самые толстые люди которые похудели &lt;br /&gt;
[url=http://deathwatch.xippyforum.com/viewtopic.php?f=5&amp;amp;t=24301&amp;amp;p=41469#p41469]малахов плюс мёд для похудения[/url] &lt;br /&gt;
редуксин таблетки для похудания &lt;br /&gt;
[url=http://forum.wakakaksite.net/showthread.php?tid=5794&amp;amp;pid=8997#pid8997]лечнеие сахарного диабета народными средствами[/url] &lt;br /&gt;
сахарный диабет глюкометры &lt;br /&gt;
[url=http://www.inglesagora.com.br/aefforum/viewtopic.php?f=9&amp;amp;t=115105&amp;amp;p=137732#p137732]торт низкокалорийный приготовить[/url] &lt;br /&gt;
можно ли похудеть за день на 2 килограмма? &lt;br /&gt;
[url=http://kortowiada-2011.pl/forum/showthread.php?tid=9747&amp;amp;pid=10159#pid10159]санатории по лечению ожирения в белоруссии[/url] &lt;br /&gt;
вкусные диетические блюда при желче-каменной болезни и болезни поджелудочной железы &lt;br /&gt;
[url=http://www.corygrantconcrete.com/css/guest/index.php?showforum=1]здоровый образ жизни физкультура и спорт[/url] &lt;br /&gt;
перловая диета для похудения &lt;br /&gt;
[url=http://techandhack.com/viewtopic.php?f=1&amp;amp;t=110468&amp;amp;p=158025#p158025]как убрать целлюлит с рук[/url] &lt;br /&gt;
сбалансированная диета и формы питания спортсменов &lt;br /&gt;
[url=http://buloto.com/bbs//viewthread.php?tid=190484&amp;amp;pid=213527&amp;amp;page=25&amp;amp;extra=#pid213527]программа похудения на тренажорах[/url] &lt;br /&gt;
вендинг похудение &lt;br /&gt;
[url=http://www.namphi214.com/webboard/index.php?topic=28091.new#new]девушка умерла от диеты d gjlvjcrjdmt[/url] &lt;br /&gt;
трофические язвы на почве сахарного диабета &lt;br /&gt;
[url=http://forum.w3connect.com/showthread.php?tid=28664&amp;amp;pid=38196#pid38196]после родов восстановление менструального[/url] &lt;br /&gt;
перечень блюд для больных сахарным диабетом &lt;br /&gt;
[url=http://www.iced-silver.net/test/phpbb2-22/viewtopic.php?p=141144#141144]пояс для похудания nobil rex 101[/url] &lt;br /&gt;
быть худой &lt;br /&gt;
[url=http://johnnydeppitalia.com/forum/index.php?topic=600.new#new]межпозвонковой грыжи голоданием[/url] &lt;br /&gt;
упражнения для пресса и талии&lt;br /&gt;
&lt;br /&gt;
== основные принципы диетотерапии сахарного диабета ==&lt;br /&gt;
&lt;br /&gt;
[url=http://hostfirm.ru/logs/guest/index.php?showforum=1]правильно худеем гимнастика[/url] &lt;br /&gt;
диета здоровье форум закрыт &lt;br /&gt;
[url=http://www.punbb.tk/viewtopic.php?pid=63168#p63168]снижение веса по методу хайруллина[/url] &lt;br /&gt;
похудеть с худеем за неделю &lt;br /&gt;
[url=http://trikotaj-optom.ru/includes/guest/index.php?showforum=1]можно ли похудеть от зеленого чая?[/url] &lt;br /&gt;
лучшие лекарственные средства для похудения &lt;br /&gt;
[url=http://forum.autoshop.am/viewtopic.php?f=10&amp;amp;t=96404&amp;amp;p=211703#p211703]самые лучшие таблетки для похудения в области живота[/url] &lt;br /&gt;
как похудеть за месяц без препаратов &lt;br /&gt;
[url=http://www.i1y.com/vb/showthread.php?10112-%E4%E8%E5%F2%E0-%EF%F0%E8-%E7%E0%E1%EE%EB%E5%E2%E0%ED%E8%E8-%EF%F0%FF%EC%EE%E9-%EA%E8%F8%EA%E8&amp;amp;p=19059#post19059]людмила денисенко худеем + с удовольствием[/url] &lt;br /&gt;
столовой потому как диета является неотъемлемой частью любого лечения &lt;br /&gt;
[url=http://www.7mileislandreview.com/phpBB3/viewtopic.php?f=1&amp;amp;t=69746&amp;amp;p=87238#p87238]диагноз сахарный диабет на казахском языке[/url] &lt;br /&gt;
вред + и польза диет &lt;br /&gt;
[url=http://www.jeugdhonkstiensgea.nl/phpBB2/viewtopic.php?p=726376#726376]форум анарексия как похудеть[/url] &lt;br /&gt;
форум раздельное питание &lt;br /&gt;
[url=http://www.skillfaker.org/phpBB/viewtopic.php?f=8&amp;amp;t=29&amp;amp;p=30849#p30849]омар хаям лучше голодать[/url] &lt;br /&gt;
справочник диет психоневрологических больных &lt;br /&gt;
[url=http://discussion.myhotspot.co/viewthread.php?tid=307523&amp;amp;pid=441247&amp;amp;page=1&amp;amp;extra=#pid441247]похудеть по аюрведе[/url] &lt;br /&gt;
диета подробная &lt;br /&gt;
[url=http://almines.mines-paris.eu/forum/viewtopic.php?pid=30546#p30546]диабет измерение сахара[/url] &lt;br /&gt;
капсулы для похудения частные оьявления &lt;br /&gt;
[url=http://club.yuntech.edu.tw/%7Eelsa/bbs/viewthread.php?tid=121053&amp;amp;pid=145106&amp;amp;page=10&amp;amp;extra=#pid145106]алан карр как быстро похудеть[/url] &lt;br /&gt;
лечебные диеты стол 1-15 &lt;br /&gt;
[url=http://anorexiaparentforum.com/viewtopic.php?f=11&amp;amp;t=448536&amp;amp;p=651170#p651170]fenugreek кто нибудь использовал для похудения[/url] &lt;br /&gt;
школьный предмет &amp;quot;здоровый образ жизни&amp;quot; &lt;br /&gt;
[url=http://www.todonoticias.cat/forum/index.php?topic=22971.new#new]иголки для похудения в тюмени[/url] &lt;br /&gt;
очищение организма похудение в звенигороде &lt;br /&gt;
[url=http://www.dotaall.ru/distribution/viewtopic.php?f=4&amp;amp;t=34086&amp;amp;p=47467#p47467]10 лучших диет[/url] &lt;br /&gt;
как мужчине убрать жир с живота и боков &lt;br /&gt;
[url=http://thanatos.co/forum/showthread.php?tid=51632&amp;amp;pid=57373#pid57373]диета в великий пост 2010[/url] &lt;br /&gt;
калорийности соевого мяса &lt;br /&gt;
[url=http://www.soeste-angelcenter.de/phpBB3/viewtopic.php?f=11&amp;amp;t=5443&amp;amp;p=6792#p6792]скачать видео материалы гимнастику для похудания[/url] &lt;br /&gt;
низкоуглеводные и моложирные диеты &lt;br /&gt;
[url=http://el-diarus.com/images/guest/index.php?showforum=1]диета 4 2[/url] &lt;br /&gt;
можно ли похудеть при помощи арабских танцев? &lt;br /&gt;
[url=http://www.legion.co.il/phpBB3/viewtopic.php?f=7&amp;amp;t=119962&amp;amp;p=241543#p241543]овсяная диета с кефиром[/url] &lt;br /&gt;
как можно похудеть на 5кг за две недели пивной диетой &lt;br /&gt;
[url=http://metafrost.net/forums/index.php?topic=7276.new#new]калории в котлете[/url] &lt;br /&gt;
лечебное голодание россии &lt;br /&gt;
[url=http://itu.dk/people/jhma/forum/viewtopic.php?f=1&amp;amp;t=53650&amp;amp;p=77838#p77838]диета стол № 5 рецепты[/url] &lt;br /&gt;
справочник калорийности продуктов&lt;br /&gt;
&lt;br /&gt;
== антицеллюлитный крем фирмы salon ==&lt;br /&gt;
&lt;br /&gt;
[url=http://cpu.de/includes/guest/index.php?showforum=1]диабет плюс[/url] &lt;br /&gt;
аэробные тренировки для похудения &lt;br /&gt;
[url=http://www.legendmodz.com/showthread.php?tid=6798&amp;amp;pid=9028#pid9028]похудеть быстро высокоэффективная программа похудения на hudoba ru[/url] &lt;br /&gt;
сахарный диабет 2 типа средней степени тяжести история болезни &lt;br /&gt;
[url=http://finantare-nerambursabila.ro/forum/showthread.php?tid=47650&amp;amp;pid=53762#pid53762]президентская диета 2-я фаза[/url] &lt;br /&gt;
антицеллюлитный массаж во &lt;br /&gt;
[url=http://www.agenciainterative.com.br/forum/viewtopic.php?f=10&amp;amp;t=156513&amp;amp;p=231350#p231350]самая худая порнозвезда[/url] &lt;br /&gt;
помогите подобрать диету &lt;br /&gt;
[url=http://www.bionic-gaming.com/forum/viewtopic.php?f=3&amp;amp;t=93812&amp;amp;p=148129#p148129]психология лишниего веса и стресса диплом скачать[/url] &lt;br /&gt;
свекольная диета заболевания &lt;br /&gt;
[url=http://www.webturkeymaster.com/showthread.php?p=265600#post265600]биология обмен веществ трансформация энергии[/url] &lt;br /&gt;
эко диета &lt;br /&gt;
[url=http://www.f1news.eu/index.php/index.php/f1-forum/editpost/389-oem_adobe_indesign/0]похудела на диете протасова[/url] &lt;br /&gt;
голодая на сколько похудеешь &lt;br /&gt;
[url=http://www.irunlikeamother.com/wp-includes/guest/index.php?showforum=1]кэролин хамфрис ?дневная диета[/url] &lt;br /&gt;
похудение без диет &lt;br /&gt;
[url=http://www.nusapromo.com/showthread.php?p=146300#post146300]гастит диета[/url] &lt;br /&gt;
сахарный диабет инсулинопотребный &lt;br /&gt;
[url=http://berlinforums.artoflivingpa.org/viewtopic.php?f=2&amp;amp;t=20&amp;amp;p=22662#p22662]лечебное питание и диеты при язве желудка[/url] &lt;br /&gt;
меню 1000 калорий &lt;br /&gt;
[url=http://gross.tritonplus.ru/includes/guest/index.php?showforum=1]как похудеть без вреда для организма[/url] &lt;br /&gt;
диета для похудания с витаминами &lt;br /&gt;
[url=http://loadeddicers.com/showthread.php?2750-%E4%E8%E5%F2%E0-%E9%EE%E3%F3%F0%F2-amp&amp;amp;p=3365#post3365]фрутовая диета по калориям[/url] &lt;br /&gt;
сахарный диабет классификация, тип &lt;br /&gt;
[url=http://arabcon.net/viewtopic.php?f=12&amp;amp;t=118126&amp;amp;p=174381#p174381]можно ли беременнить при диабет 2 типа[/url] &lt;br /&gt;
препарат для похудания израиль &lt;br /&gt;
[url=http://crusify.net/thread-99-post-20816.html#pid20816]раздельное питание меню + на неделю[/url] &lt;br /&gt;
как часто проводить сухое голодание &lt;br /&gt;
[url=http://fa.planet-iwd.de/index.php?topic=9.new#new]какие таблетки для похудения можно купить в каждой аптеке[/url] &lt;br /&gt;
средство для похудения гарциния &lt;br /&gt;
[url=http://www.mulss.com/swap/viewtopic.php?f=4&amp;amp;t=37009&amp;amp;p=42553#p42553]разгрузочные дни в диетотерапии[/url] &lt;br /&gt;
диетическое меню длядвухгодовалого ребенка рецепты &lt;br /&gt;
[url=http://qz.huiyoubaby.com/bbs//viewthread.php?tid=484753&amp;amp;pid=543957&amp;amp;page=11&amp;amp;extra=#pid543957]в чем суть диеты соколовского[/url] &lt;br /&gt;
меню при диабете второго типа &lt;br /&gt;
[url=http://yibowang.de/forum/viewtopic.php?p=446256#446256]криветки при диабете[/url] &lt;br /&gt;
несахарный диабет при беременности &lt;br /&gt;
[url=http://www.ferforjeforum.com/showthread.php?pid=59088]диета по дням для 1 группы крови[/url] &lt;br /&gt;
больные дети сахарным диабетом &lt;br /&gt;
[url=http://lamitadmas1foro.com.ar/showthread.php?p=43159#post43159]переделанные песни на тему мы за здоровый образ жизни[/url] &lt;br /&gt;
рефераты на тему калорийность продуктов или как похудеть&lt;br /&gt;
&lt;br /&gt;
== гарньер. роликовый крем от целлюлита. отзывы ==&lt;br /&gt;
&lt;br /&gt;
[url=http://www.thetinmansgarage.com/wp-includes/guest/index.php?showforum=1]скачать стрельникова еда которая лечит диабет[/url] &lt;br /&gt;
3 группа крови диета таблица &lt;br /&gt;
[url=http://www.britestudent.com/forums/us/viewtopic.php?f=4&amp;amp;t=176140&amp;amp;p=304152#p304152]орз при диабете лечение[/url] &lt;br /&gt;
реферат на тему здоровый образ жизни и гимнастика &lt;br /&gt;
[url=http://flashclub.ch/flog/forums/showthread.php?tid=58348&amp;amp;pid=98972#pid98972]где в омске можно записаться к диетологу[/url] &lt;br /&gt;
леннджервзаимосвязь обмена веществ в организме &lt;br /&gt;
[url=http://www.wyspex.ru/includes/guest/index.php?showforum=1]лечение диета поджелудочная железа[/url] &lt;br /&gt;
куркума похудение &lt;br /&gt;
[url=http://www.lv88-gucci88.com/shop/forum/viewtopic.php?p=434232&amp;amp;Twesid=c2ca6f06c10ef23594c05df6affcd97b#434232]сахарный диабет, тиология, патогенез[/url] &lt;br /&gt;
антицеллюлитный крем домашних условиях &lt;br /&gt;
[url=http://www.board.m2-turkiye.org/showthread.php?p=9113#post9113]кремлевская диета, бульонный кубик у.е[/url] &lt;br /&gt;
вакцина от диабета итамар раз &lt;br /&gt;
[url=http://www.mountainflower.in.th/board/index.php?topic=46133.new#new]как похудела ира дубцова[/url] &lt;br /&gt;
целлюлит + у мужчин фото &lt;br /&gt;
[url=http://www.buddhistischejugend.at/forum/viewtopic.php?f=4&amp;amp;t=4667&amp;amp;p=5740#p5740]правильное питание + в школьной столовой[/url] &lt;br /&gt;
диеты для снижения веса для детей от 13 лет &lt;br /&gt;
[url=http://mirsvadeb.kz/bb/viewtopic.php?f=2&amp;amp;t=115600&amp;amp;p=219993#p219993]диета при язве луковицы 12 п.к[/url] &lt;br /&gt;
рецепт овощного диетического рагу &lt;br /&gt;
[url=http://redbusdrivers.co.uk/forum/viewtopic.php?f=2&amp;amp;t=257664&amp;amp;p=417904#p417904]лечебной антицеллюлитной косметики[/url] &lt;br /&gt;
процедуры + для похудения отзывы &lt;br /&gt;
[url=http://mohamedgabr.com/forum/viewtopic.php?f=2&amp;amp;t=142667&amp;amp;p=225703#p225703]калорийность пищи и нормы питания[/url] &lt;br /&gt;
калорийность бигуса &lt;br /&gt;
[url=http://andalasia.net/forum/viewtopic.php?f=21&amp;amp;t=30315&amp;amp;p=49259#p49259]диета + для эффективного похудения ног[/url] &lt;br /&gt;
диета с грибами и ананасом &lt;br /&gt;
[url=http://www.aevumspa.com/bbs//forum.php?mod=viewthread&amp;amp;tid=107&amp;amp;pid=337&amp;amp;page=23&amp;amp;extra=#pid337]бальзам шостаковского от диабетической стопы[/url] &lt;br /&gt;
мнение мужчин идеальная фигура &lt;br /&gt;
[url=http://www.behindthetill.com/forum/viewtopic.php?f=3&amp;amp;t=48683&amp;amp;p=60661#p60661]договор фрайчайзинка аптек сахарного диабета[/url] &lt;br /&gt;
похудела на 60 килограммов &lt;br /&gt;
[url=http://cthybridforum.com/viewtopic.php?f=4&amp;amp;t=176876&amp;amp;p=351427#p351427]сахарный диабет + при гипотериозе[/url] &lt;br /&gt;
коллектив и здоровый образ жизни &lt;br /&gt;
[url=http://fcnnet.farmcrisisnetwork.co.uk/forum/viewtopic.php?pid=82954#p82954]где купить dvd 25 кадр для похудения[/url] &lt;br /&gt;
диабет 2 й степени &lt;br /&gt;
[url=http://jogoseducativos.buscasulfluminense.com/wp-includes/guest/index.php?showforum=1]молочно-рисовая диета[/url] &lt;br /&gt;
иглоукалывание для похудения в питере &lt;br /&gt;
[url=http://www.friendship.plootek.eu/forum/viewtopic.php?f=19&amp;amp;t=42738&amp;amp;p=53223#p53223]книга по подсчету калорий[/url] &lt;br /&gt;
диетологи питание &lt;br /&gt;
[url=http://virtuozos.free.fr/viewtopic.php?p=3074#3074]низко калорийные рецепты[/url] &lt;br /&gt;
вопросы и ответы по диабету &lt;br /&gt;
[url=http://fa.planet-iwd.de/index.php?topic=9.new#new]здоровый образ жизни как ценность и факторы, его определяющие[/url] &lt;br /&gt;
можно ли есть сыр когда сидишь на диете?&lt;br /&gt;
&lt;br /&gt;
== жиры животного происхождения в косметических средствах вредные для кожи ==&lt;br /&gt;
&lt;br /&gt;
[url=http://essentialsln.com/wp-includes/guest/index.php?showforum=1]нормальный вес ребёнка в 30 недель[/url] &lt;br /&gt;
программа бодифлекс &lt;br /&gt;
[url=http://bctoyotas.net/forums/index.php?topic=171867.new#new]диета тому кто ходит в тринажорный зал[/url] &lt;br /&gt;
витэкс крем массажный антицеллюлитный &lt;br /&gt;
[url=http://bartowpost0003.com/viewtopic.php?f=2&amp;amp;t=226757&amp;amp;p=422290#p422290]12 шагов к сыроедению[/url] &lt;br /&gt;
диетология в тюмени &lt;br /&gt;
[url=http://www.suaxesaigon.com/forum/showthread.php?t=198&amp;amp;p=473#post473]о препаратах для похудения[/url] &lt;br /&gt;
диетический каталог сайтов site er &lt;br /&gt;
[url=http://www.videoanalytics.net/forums/viewtopic.php?p=13016#13016]избавление от лишнего веса в перми[/url] &lt;br /&gt;
сильно похудела от бодифлекса &lt;br /&gt;
[url=http://paradoxmt2.org/forum/showthread.php?p=7538#post7538]роль в обмене веществ надф[/url] &lt;br /&gt;
диета на 3 дня минус 12 кг &lt;br /&gt;
[url=http://dp.forum.o3.ua/index.php?topic=119892.new#new]гармония средство для похудения китай[/url] &lt;br /&gt;
настой травы помогающий подтягивать кожу при похудении &lt;br /&gt;
[url=http://avrora-style.ru/includes/guest/index.php?showforum=1]похудеть от сельдерея[/url] &lt;br /&gt;
2 ст ложки кофе 1 ст ложка крема похудение столовая &lt;br /&gt;
[url=http://genatcvale.ru/includes/guest/index.php?showforum=1]клиника доктор барминталь - метод похудание[/url] &lt;br /&gt;
диабет и &lt;br /&gt;
[url=http://politicalirish.s2.bizhat.com/politicalirish-post-19403.html#19403]фитнесс боди гель скраб для похудения для душа[/url] &lt;br /&gt;
чага настойка диабет &lt;br /&gt;
[url=http://xbox360pl.host56.com/showthread.php?tid=3753&amp;amp;pid=5711#pid5711]как быстро похудеть в области живота[/url] &lt;br /&gt;
мясо молочная диета &lt;br /&gt;
[url=http://forum.webet2win.com/index.php?topic=23940.new#new]похудение с помощью узи[/url] &lt;br /&gt;
скачать видео диеты &lt;br /&gt;
[url=http://andrecatering.su/language/guest/index.php?showforum=1]что сделать чтоб быстро похудели ноги у мужчин?[/url] &lt;br /&gt;
блокатор калорий фаза форум &lt;br /&gt;
[url=http://tutton.org/phpbb/viewtopic.php?f=8&amp;amp;t=46671&amp;amp;p=70963#p70963]дарницкий хлеб калории[/url] &lt;br /&gt;
сколько в сале калорий &lt;br /&gt;
[url=http://whatscienceis.com/forum/viewtopic.php?f=2&amp;amp;t=144125&amp;amp;p=317690#p317690]диета 5 при хроническом индуративном панкреатите[/url] &lt;br /&gt;
исцеление сахарного диабета авакян &lt;br /&gt;
[url=http://chainomania.k-e-d-r.ru/logs/guest/index.php?showforum=1]день диабетика в нижнем новгороде[/url] &lt;br /&gt;
хитозан коррекция веса &lt;br /&gt;
[url=http://www.symulator-farmy.eu/showthread.php?tid=3316&amp;amp;pid=12823#pid12823]вода помогла похудеть[/url] &lt;br /&gt;
как похудеть и убрать второй подбородок &lt;br /&gt;
[url=http://decor-studio.com.ua/images/guest/index.php?showforum=1]диеты кефирные и раздельное питание[/url] &lt;br /&gt;
диета 5-й постный стол &lt;br /&gt;
[url=http://www.xlys.com.my/forum/viewthread.php?tid=342898&amp;amp;pid=457730&amp;amp;page=3&amp;amp;extra=#pid457730]инна дом 2 похудела[/url] &lt;br /&gt;
инсулинотерапия при диабетической стопе - критерии перевода на инсулин &lt;br /&gt;
[url=http://www.sonicworld.org.uk/forum/viewtopic.php?f=7&amp;amp;t=117374&amp;amp;p=203536#p203536]похудение в бёдрах бесплатно скачать[/url] &lt;br /&gt;
можно ли похудеть при помощи сухого вина и сыра&lt;br /&gt;
&lt;br /&gt;
== big adult nude ==&lt;br /&gt;
&lt;br /&gt;
free carbian women porn&lt;br /&gt;
sexy heels video&lt;br /&gt;
incest boy fucks mother&lt;br /&gt;
nudity public pussy&lt;br /&gt;
queen of the elephants xxx torrent&lt;br /&gt;
lavoie michelle nude wallpaper&lt;br /&gt;
fucked by a real man&lt;br /&gt;
dream double dildo&lt;br /&gt;
matt gay porn&lt;br /&gt;
britney spears upskirt nude upskirts&lt;br /&gt;
&lt;br /&gt;
== cherry doll porn star ==&lt;br /&gt;
&lt;br /&gt;
filme gretchen porn&lt;br /&gt;
gay porn free picture bear&lt;br /&gt;
cliphunter porn clip&lt;br /&gt;
free xxx dump&lt;br /&gt;
hard kiddie porn&lt;br /&gt;
men sucking dick&lt;br /&gt;
spanish fly xxx&lt;br /&gt;
big black bootie girls fucking&lt;br /&gt;
redhead milf anal&lt;br /&gt;
amateur rough sex&lt;br /&gt;
&lt;br /&gt;
== sexual abuse teens consequences depression ==&lt;br /&gt;
&lt;br /&gt;
bollywood xxx nations&lt;br /&gt;
is cild porn anime illegal&lt;br /&gt;
djecije porn slike&lt;br /&gt;
sex sleeping video woman&lt;br /&gt;
lisa kudrow nude videos&lt;br /&gt;
bbw fuck clip&lt;br /&gt;
black girl masturbation video&lt;br /&gt;
lee porn tommy video&lt;br /&gt;
saggy pussy lips&lt;br /&gt;
free xxx picture thumbnail&lt;br /&gt;
&lt;br /&gt;
== dildo deep inside ==&lt;br /&gt;
&lt;br /&gt;
girls masturbating in cartoon underwear&lt;br /&gt;
cruz free nude penelope pic&lt;br /&gt;
free bisexual mpeg movie galleries&lt;br /&gt;
free lesbian scissoring porn&lt;br /&gt;
the radiology group milford&lt;br /&gt;
nude desert camping&lt;br /&gt;
free hot sexy porn&lt;br /&gt;
free pocket pc porn videos&lt;br /&gt;
nude latina butts&lt;br /&gt;
porn feature videos&lt;br /&gt;
&lt;br /&gt;
== im fucking my cousin ==&lt;br /&gt;
&lt;br /&gt;
video libero sexy&lt;br /&gt;
stacy dash xxx pics&lt;br /&gt;
sexy teen porn star&lt;br /&gt;
playboy photos of farrah fawcett nude&lt;br /&gt;
brad pitt nudes pics&lt;br /&gt;
fuck man shemale&lt;br /&gt;
gallery lingerie porn video&lt;br /&gt;
free movies with eva angelina/porn igloo&lt;br /&gt;
pussy penetration picture&lt;br /&gt;
film stars sex videos&lt;br /&gt;
&lt;br /&gt;
== fuck hard for money ==&lt;br /&gt;
&lt;br /&gt;
girls fucking in sexy outfits&lt;br /&gt;
free hardcore porn uk&lt;br /&gt;
celebrity free xxx pics&lt;br /&gt;
cock and fucking&lt;br /&gt;
free mini uk porn clips&lt;br /&gt;
ashanti nude pic&lt;br /&gt;
classy babes fucking&lt;br /&gt;
victoria pendleton nude&lt;br /&gt;
lichelle marie pornstarslikeitbig&lt;br /&gt;
photos of nude brothers&lt;br /&gt;
&lt;br /&gt;
== lela nude futurama ==&lt;br /&gt;
&lt;br /&gt;
funeral home milford&lt;br /&gt;
big tits and round asses dick sucking&lt;br /&gt;
free porn za&lt;br /&gt;
katie nude pic&lt;br /&gt;
dick sucking sluts&lt;br /&gt;
video fuck free&lt;br /&gt;
hot guys masturbating&lt;br /&gt;
fresh teen pussy videos&lt;br /&gt;
girl getting dildo&lt;br /&gt;
young man sucking dick&lt;br /&gt;
&lt;br /&gt;
== bollywood celebrity nude photo ==&lt;br /&gt;
&lt;br /&gt;
wife and girlfriend nude picks&lt;br /&gt;
porn sex bollywood&lt;br /&gt;
christine lakin nude pic&lt;br /&gt;
lexxi nude tyler&lt;br /&gt;
stormy water clip porn star&lt;br /&gt;
in pink pussy&lt;br /&gt;
hot grandma pussy&lt;br /&gt;
nude photo of miley cyrus&lt;br /&gt;
find free sex in geary oklahoma&lt;br /&gt;
tiffany thiessen nude photo&lt;br /&gt;
&lt;br /&gt;
== advanced male masturbation technique ==&lt;br /&gt;
&lt;br /&gt;
samantha fox pornstar&lt;br /&gt;
fuck i u wanna&lt;br /&gt;
raven riley blowjob pictures&lt;br /&gt;
female porn star imfd&lt;br /&gt;
xtube redtube pornhub&lt;br /&gt;
colombiano de foto porn&lt;br /&gt;
blonde blue eyed pussy&lt;br /&gt;
danilee derick getting fucked&lt;br /&gt;
xxx big cock porn clips&lt;br /&gt;
douglas nude sirtis uk&lt;br /&gt;
&lt;br /&gt;
== private video of granny nude ==&lt;br /&gt;
&lt;br /&gt;
gay man masturbating naked&lt;br /&gt;
porn thumb search&lt;br /&gt;
rap to hardcore&lt;br /&gt;
lankan porn site sri&lt;br /&gt;
xxx cotton candy&lt;br /&gt;
huge tit lesbians fucking&lt;br /&gt;
pamila anderson fuck&lt;br /&gt;
naked girls eating pussy&lt;br /&gt;
amature nude forum&lt;br /&gt;
sixteen weet skin nude&lt;br /&gt;
&lt;br /&gt;
== dad fucking duaghter ==&lt;br /&gt;
&lt;br /&gt;
gallery india porn&lt;br /&gt;
woman forced to fuck&lt;br /&gt;
bollywood sex video clips&lt;br /&gt;
climax prestige porn films&lt;br /&gt;
nude giada delarurntis photos&lt;br /&gt;
sex video of a scots teacher&lt;br /&gt;
bbw squirt sex&lt;br /&gt;
porn tv free&lt;br /&gt;
men and women fuck&lt;br /&gt;
tom byron pornstar mpegs&lt;br /&gt;
&lt;br /&gt;
== jennifer lopez nude in u turn ==&lt;br /&gt;
&lt;br /&gt;
sims 2 nude patches&lt;br /&gt;
thumbnail movies pierced tongue blowjob&lt;br /&gt;
free indian gay sex&lt;br /&gt;
nude black women feet&lt;br /&gt;
nude avatar the last airbender fanart&lt;br /&gt;
static youporn com&lt;br /&gt;
pussycat dolls don t cha kaskade&lt;br /&gt;
free indian sex story true&lt;br /&gt;
free manga porn movies&lt;br /&gt;
how i became a porn star&lt;br /&gt;
&lt;br /&gt;
== teen girly porn ==&lt;br /&gt;
&lt;br /&gt;
leila melani nude&lt;br /&gt;
hardcore animal celebrity sex&lt;br /&gt;
attached free no porn string&lt;br /&gt;
hot mature older porn sexy woman&lt;br /&gt;
fuck hard xxx&lt;br /&gt;
free porn site trailer web&lt;br /&gt;
10 minute porn clips&lt;br /&gt;
free traci lords pictures nude&lt;br /&gt;
crystal naked pics arizona xxx&lt;br /&gt;
7xxx aluminium ttt&lt;br /&gt;
&lt;br /&gt;
== sex pictures of sailor moon ==&lt;br /&gt;
&lt;br /&gt;
celebrity free pic sexy&lt;br /&gt;
nude sexy picture of jennifer lopez&lt;br /&gt;
punk girl hardcore&lt;br /&gt;
chat sex teeny&lt;br /&gt;
free lesbian xxx trailer&lt;br /&gt;
clip free sex vedio&lt;br /&gt;
blonde fuck series&lt;br /&gt;
desktop porn star&lt;br /&gt;
latin porn lady&lt;br /&gt;
intercorse xxx movies&lt;br /&gt;
&lt;br /&gt;
== fuck mature video ==&lt;br /&gt;
&lt;br /&gt;
teen picks free porn&lt;br /&gt;
piss and fuck&lt;br /&gt;
sexy young milfs&lt;br /&gt;
xxx personals emery south dakota&lt;br /&gt;
animals sucking dick&lt;br /&gt;
women who take big black dicks&lt;br /&gt;
boys teen nude&lt;br /&gt;
free photo naked sex&lt;br /&gt;
s m bondage hardcore&lt;br /&gt;
wide pussy thumbs&lt;br /&gt;
&lt;br /&gt;
== young nude fucking ==&lt;br /&gt;
&lt;br /&gt;
christy carlson romano nude pics&lt;br /&gt;
nude teen bath&lt;br /&gt;
dutch holland sex porn&lt;br /&gt;
gangster gay porn&lt;br /&gt;
centerfold gallery nude&lt;br /&gt;
nude redhead photography&lt;br /&gt;
belle bond xxx&lt;br /&gt;
free nude video clips&lt;br /&gt;
nudeactresses org password&lt;br /&gt;
sexy model posing nude&lt;br /&gt;
&lt;br /&gt;
== luttrell nude rachel ==&lt;br /&gt;
&lt;br /&gt;
free wife swap sex movies&lt;br /&gt;
bleach hentai porn&lt;br /&gt;
xxx teen titans game&lt;br /&gt;
japanese porn tv show&lt;br /&gt;
fuck latina rose sativa&lt;br /&gt;
blogs exhib sexes amateurs&lt;br /&gt;
pussycat dollls i hate this part&lt;br /&gt;
fake list nude&lt;br /&gt;
full hot free porn&lt;br /&gt;
little ass fucked&lt;br /&gt;
&lt;br /&gt;
== justin timberlake sexyback free download ==&lt;br /&gt;
&lt;br /&gt;
hardcore partying pool&lt;br /&gt;
shoutcast tv porn&lt;br /&gt;
glamour porn video&lt;br /&gt;
joley fisher nude&lt;br /&gt;
america guide naughty porn&lt;br /&gt;
cheapest dvd xxx&lt;br /&gt;
free xxx manga and hentai&lt;br /&gt;
fucked drunk teens&lt;br /&gt;
nude kiddy tgp&lt;br /&gt;
large breasted european women nude&lt;br /&gt;
&lt;br /&gt;
== nude little gay boys ==&lt;br /&gt;
&lt;br /&gt;
mature porn images models over 30&lt;br /&gt;
free xxx cum in your trailer&lt;br /&gt;
milf in black lingerie&lt;br /&gt;
free male sex video&lt;br /&gt;
ass fuck redhead&lt;br /&gt;
first porn timer&lt;br /&gt;
bear free fuck movie police&lt;br /&gt;
mexican woman sucking dick&lt;br /&gt;
celeb get fucked&lt;br /&gt;
i'm on my fucking lunch break wav&lt;br /&gt;
&lt;br /&gt;
== invasion porn public video ==&lt;br /&gt;
&lt;br /&gt;
fantasy xxx pictures&lt;br /&gt;
bbw smut vids&lt;br /&gt;
fuck kidnap mom&lt;br /&gt;
cam hidden pussy video&lt;br /&gt;
porny je taime porny&lt;br /&gt;
cunt milf movie&lt;br /&gt;
mature sex for tonight&lt;br /&gt;
free porn bbw passwords&lt;br /&gt;
black wives sex videos&lt;br /&gt;
free xxx playboy movie trailers&lt;br /&gt;
&lt;br /&gt;
== strip poker loser nude picture ==&lt;br /&gt;
&lt;br /&gt;
reporter locker room nude&lt;br /&gt;
free msn sexy wink&lt;br /&gt;
teen sex under water&lt;br /&gt;
free japan sex movies&lt;br /&gt;
free sex girls of delhi&lt;br /&gt;
kiddy girls porn&lt;br /&gt;
xxx elephant toons&lt;br /&gt;
milf gang bang trailer&lt;br /&gt;
usaf ssgt woman porn&lt;br /&gt;
database movie porn&lt;br /&gt;
&lt;br /&gt;
== male nude artist alb nm ==&lt;br /&gt;
&lt;br /&gt;
[URL=http://chargil-pagated.ru/free-sample-of-eve-sextape.html]free sample of eve sextape[/URL]   &lt;br /&gt;
young son fuck his mother  &lt;br /&gt;
[URL=http://tensistic-callel.ru/best-porn-preview.html]best porn preview[/URL]   &lt;br /&gt;
blowjob myspace graphics  &lt;br /&gt;
[URL=http://ottoes-mirrorise.ru/young-blond-women-nude-movie-galleries.html]young blond women nude movie galleries[/URL]   &lt;br /&gt;
manga anime girls fan sites porn  &lt;br /&gt;
[URL=http://frequinter-catalian.ru/sexy-lesbian-latin-girls.html]sexy lesbian latin girls[/URL]   &lt;br /&gt;
milf fake boob  &lt;br /&gt;
[URL=http://televelop-circulosis.ru/castaic-free-sex.html]castaic free sex[/URL]   &lt;br /&gt;
fucking housewife mature muscle stud young  &lt;br /&gt;
[URL=http://farminish-psycholar.ru/sexy-underwear-for-full-figure-woman.html]sexy underwear for full figure woman[/URL]   &lt;br /&gt;
ass jack porn  &lt;br /&gt;
[URL=http://passembles-spearance.ru/empornium-confirmation-email.html]empornium confirmation email[/URL]   &lt;br /&gt;
anal clip free video xxx  &lt;br /&gt;
[URL=http://disambula-attributin.ru/granny-fuck-thumbs.html]granny fuck thumbs[/URL]   &lt;br /&gt;
son fucks grandmother  &lt;br /&gt;
[URL=http://emergesternel-ravelena.ru/porn-star-courtney-cummz.html]porn star courtney cummz[/URL]   &lt;br /&gt;
milf cruiser jillian  &lt;br /&gt;
[URL=http://tensistic-callel.ru/fuck-hole-wall.html]fuck hole wall[/URL]   &lt;br /&gt;
clip latin sex teen  &lt;br /&gt;
[URL=http://spacetami-attites.ru/asian-bride-mail-nude-order.html]asian bride mail nude order[/URL]   &lt;br /&gt;
free media player gay porn  &lt;br /&gt;
[URL=http://redited-extensort.ru/hardcore-fuck-trailer.html]hardcore fuck trailer[/URL]   &lt;br /&gt;
kid models nude  &lt;br /&gt;
[URL=http://constrait-goldkett.ru/gay-man-oral-sex-story.html]gay man oral sex story[/URL]   &lt;br /&gt;
toon porn games  &lt;br /&gt;
[URL=http://kudrostate-nucleanor.ru/amanda-bynes-nude-photos.html]amanda bynes nude photos[/URL]   &lt;br /&gt;
dj chuck t sexxxplicit r&amp;amp;b vol 47  &lt;br /&gt;
[URL=http://dzusova.ru/xxx-gay-treasure-trail.html]xxx gay treasure trail[/URL]   &lt;br /&gt;
nude pictures of mary-kate and ashley olsen  &lt;br /&gt;
[URL=http://imporaries-unitivism.ru/ass-fucking-asians.html]ass fucking asians[/URL]   &lt;br /&gt;
amy fischer nudes  &lt;br /&gt;
[URL=http://zhuravlevatz.ru/arab-free-hot-sex.html]arab free hot sex[/URL]   &lt;br /&gt;
young girls virgin pussy galleries  &lt;br /&gt;
[URL=http://unbroek-themselvet.ru/porn-internet-jobs-in-pennsylvania.html]porn internet jobs in pennsylvania[/URL]   &lt;br /&gt;
stil dont give a fuck lyrics  &lt;br /&gt;
[URL=http://remaints-riversey.ru/greek-porn-film.html]greek porn film[/URL]   &lt;br /&gt;
free nude spy cam downloads  &lt;br /&gt;
[URL=http://comestonese-separama.ru/first-sex-teen-video.html]first sex teen video[/URL]   &lt;br /&gt;
asia from pussy cat dolls  &lt;br /&gt;
[URL=http://huntern-dispruce.ru/sitemap.html]sitemap[/URL]   &lt;br /&gt;
welivetogether pussy maintenance  &lt;br /&gt;
[URL=http://groundard-hamilitary.ru/senate-sub-committee-of-lesbian-economic-affairs.html]senate sub-committee of lesbian economic affairs[/URL]   &lt;br /&gt;
celeb manila nude  &lt;br /&gt;
[URL=http://pumpedal-backgroups.ru/ass-big-black-fucked-getting-woman.html]ass big black fucked getting woman[/URL]   &lt;br /&gt;
porn username and passwor  &lt;br /&gt;
[URL=http://farminish-psycholar.ru/how-to-get-xxx-videos-on-itouch.html]how to get xxx videos on itouch[/URL]   &lt;br /&gt;
pussy cat dolls video free download&lt;br /&gt;
&lt;br /&gt;
== fucking niggers white woman ==&lt;br /&gt;
&lt;br /&gt;
[URL=http://autosten-derican.ru/sexy-teen-redhead.html]sexy teen redhead[/URL]   &lt;br /&gt;
secrete amature sex videos  &lt;br /&gt;
[URL=http://imagicial-sapprovide.ru/free-date-transsexual.html]free date transsexual[/URL]   &lt;br /&gt;
african women porn  &lt;br /&gt;
[URL=http://bistorstart.ru/black-woman-lesbian-video.html]black woman lesbian video[/URL]   &lt;br /&gt;
gay xxx pictures  &lt;br /&gt;
[URL=http://disched-limination.ru/karyn-parsons-nude-pics.html]karyn parsons nude pics[/URL]   &lt;br /&gt;
mature bisexual personals  &lt;br /&gt;
[URL=http://willion-developini.ru/dry-vaginas-porn.html]dry vagina's porn[/URL]   &lt;br /&gt;
black clip free movie pussy  &lt;br /&gt;
[URL=http://bradshed-shoreogram.ru/celebrity-amine-porn.html]celebrity amine porn[/URL]   &lt;br /&gt;
kizlari porn turk  &lt;br /&gt;
[URL=http://econdard-northodor.ru/teen-having-sex-porn.html]teen having sex porn[/URL]   &lt;br /&gt;
amiel fucking lovesong  &lt;br /&gt;
[URL=http://beginnno-echuanic.ru/horny-milfs-in-rhode-island.html]horny milfs in rhode island[/URL]   &lt;br /&gt;
cartoon disney pornography  &lt;br /&gt;
[URL=http://birga-ep.ru/pics-of-tawnee-stone-having-sex.html]pics of tawnee stone having sex[/URL]   &lt;br /&gt;
cheerleader xxx video  &lt;br /&gt;
[URL=http://budcenter.ru/dirty-fat-pussy.html]dirty fat pussy[/URL]   &lt;br /&gt;
gals movie porn star  &lt;br /&gt;
[URL=http://primariang-mussociate.ru/porn-video-streaming-sites.html]porn video streaming sites[/URL]   &lt;br /&gt;
young tight pussy video  &lt;br /&gt;
[URL=http://goramatras.ru/video-chat-adult-software.html]video chat adult software[/URL]   &lt;br /&gt;
regular sex videos  &lt;br /&gt;
[URL=http://windonin-besient.ru/anal-sex-threads.html]anal sex threads[/URL]   &lt;br /&gt;
claudia atkins porn star  &lt;br /&gt;
[URL=http://prepant-servenic.ru/are-iitian-girl-sexy.html]are iitian girl sexy[/URL]   &lt;br /&gt;
beauty blog nude  &lt;br /&gt;
[URL=http://arranean-holicist.ru/funny-clips-of-lesbians-stripping-each-other.html]funny clips of lesbians stripping each other[/URL]   &lt;br /&gt;
russian teen drunk nude  &lt;br /&gt;
[URL=http://bundard-reforeign.ru/cartoon-download-free-sexy.html]cartoon download free sexy[/URL]   &lt;br /&gt;
porn puppet play bondage  &lt;br /&gt;
[URL=http://courseshoe-forcestricted.ru/watch-kid-rock-porn-video.html]watch kid rock porn video[/URL]   &lt;br /&gt;
dance pole sexy video  &lt;br /&gt;
[URL=http://holfo-cheminance.ru/horny-lesbian-wife.html]horny lesbian wife[/URL]   &lt;br /&gt;
download 3gp sex video  &lt;br /&gt;
[URL=http://inserview-glenwork.ru/smooth-shaven-pussy.html]smooth shaven pussy[/URL]   &lt;br /&gt;
hardcore sample video  &lt;br /&gt;
[URL=http://entially-luthere.ru/nude-picks-of-rating-site-girls.html]nude picks of rating site girls[/URL]   &lt;br /&gt;
figured full porn  &lt;br /&gt;
[URL=http://harborving-lincount.ru/eleven-years-old-little-hairless-pussy-deflowering.html]eleven years old little hairless pussy deflowering[/URL]   &lt;br /&gt;
carmella bing nude pic  &lt;br /&gt;
[URL=http://countary-oligate.ru/like-motherfuck-all-yall.html]like motherfuck all yall[/URL]   &lt;br /&gt;
ret tube free porn  &lt;br /&gt;
[URL=http://britable-abourhood.ru/lesbian-clubs-in-miami-florida.html]lesbian clubs in miami florida[/URL]   &lt;br /&gt;
nude travel guide  &lt;br /&gt;
[URL=http://ecosc.ru/teeny-little-girl-stars.html]teeny little girl stars[/URL]   &lt;br /&gt;
nude anime video&lt;br /&gt;
&lt;br /&gt;
== nude pics pregnant ==&lt;br /&gt;
&lt;br /&gt;
[URL=http://zhuravlevatz.ru/ass-gaping-hole-pussy-young.html]ass gaping hole pussy young[/URL]   &lt;br /&gt;
teen sexually transmitted diseases  &lt;br /&gt;
[URL=http://liminates-presiege.ru/christy-carlson-ramono-nude.html]christy carlson ramono nude[/URL]   &lt;br /&gt;
nude colleen haskell  &lt;br /&gt;
[URL=http://arubaonline.ru/ebony-girls-fucks-white-guys.html]ebony girls fucks white guys[/URL]   &lt;br /&gt;
fuck french teacher  &lt;br /&gt;
[URL=http://dor4.ru/helter-fucking-skelter.html]helter fucking skelter[/URL]   &lt;br /&gt;
green pics nude  &lt;br /&gt;
[URL=http://birga-ep.ru/nude-pictures-beyonce.html]nude pictures beyonce[/URL]   &lt;br /&gt;
black free nude woman  &lt;br /&gt;
[URL=http://darbarawake-separticular.ru/condom-porn-pre-transsexual.html]condom porn pre transsexual[/URL]   &lt;br /&gt;
reese witherspoon nude video  &lt;br /&gt;
[URL=http://startise-theistian.ru/pictorial-resource-guide-to-sexual-positions.html]pictorial resource guide to sexual positions[/URL]   &lt;br /&gt;
free gallery grind lesbian porn trib  &lt;br /&gt;
[URL=http://militariff-capitalyzing.ru/free-jenna-jameson-lesbian-clips.html]free jenna jameson lesbian clips[/URL]   &lt;br /&gt;
secure free porn  &lt;br /&gt;
[URL=http://frequinter-catalian.ru/real-xxx-incest.html]real xxx incest[/URL]   &lt;br /&gt;
free gay pornsite passwords  &lt;br /&gt;
[URL=http://hairmarter-reichhead.ru/cross-dressing-masturbation.html]cross dressing masturbation[/URL]   &lt;br /&gt;
of big black dicks  &lt;br /&gt;
[URL=http://alucomposite-nsk.ru/good-books-to-read-for-teen-girls.html]good books to read for teen girls[/URL]   &lt;br /&gt;
anne heche nude picture  &lt;br /&gt;
[URL=http://clusita-colled.ru/teen-innocent-nude-pic.html]teen innocent nude pic[/URL]   &lt;br /&gt;
nude old teacher  &lt;br /&gt;
[URL=http://emergesternel-ravelena.ru/free-picture-of-sexy-black-female-celebrity.html]free picture of sexy black female celebrity[/URL]   &lt;br /&gt;
gay male penis porn  &lt;br /&gt;
[URL=http://primariang-mussociate.ru/nude-art-met.html]nude art met[/URL]   &lt;br /&gt;
fit girls fucked  &lt;br /&gt;
[URL=http://rareligious-carolinary.ru/sexy-short-shorts-galleries.html]sexy short shorts galleries[/URL]   &lt;br /&gt;
dergan free lisa nude  &lt;br /&gt;
[URL=http://emphicago-trange.ru/first-her-lesbian-movie-sex.html]first her lesbian movie sex[/URL]   &lt;br /&gt;
girl geting fucked hard  &lt;br /&gt;
[URL=http://ottoes-mirrorise.ru/classic-porn-orgasms.html]classic porn orgasms[/URL]   &lt;br /&gt;
teen wife fucking  &lt;br /&gt;
[URL=http://presemble-pudonyms.ru/sitemap.html]sitemap[/URL]   &lt;br /&gt;
black jack nude strip  &lt;br /&gt;
[URL=http://presemble-pudonyms.ru/bang-brazil-gang-sex-video.html]bang brazil gang sex video[/URL]   &lt;br /&gt;
sex videos without regristration  &lt;br /&gt;
[URL=http://acquel-econdard.ru/jimmy-kimmel-fucking-ben-aflack.html]jimmy kimmel fucking ben aflack[/URL]   &lt;br /&gt;
school girls fucking  &lt;br /&gt;
[URL=http://simulting-nassic.ru/final-fantasy-lulu-nude.html]final fantasy lulu nude[/URL]   &lt;br /&gt;
mistress plump bbw  &lt;br /&gt;
[URL=http://groundard-hamilitary.ru/virgin-inserting-dildo.html]virgin inserting dildo[/URL]   &lt;br /&gt;
gauge porn star pic  &lt;br /&gt;
[URL=http://northeir-acropsy.ru/nude-teachers-videos.html]nude teachers videos[/URL]   &lt;br /&gt;
how do women masturbate their pussies  &lt;br /&gt;
[URL=http://disagreek-punister.ru/porn-site-account.html]porn site account[/URL]   &lt;br /&gt;
hot girl getting fucked up&lt;br /&gt;
&lt;br /&gt;
== vicky leandros nude pics ==&lt;br /&gt;
&lt;br /&gt;
[URL=http://mdteatron.ru/gig-gangel-nude-2257.html]gig gangel nude 2257[/URL]   &lt;br /&gt;
amateur nude tit  &lt;br /&gt;
[URL=http://beutylady.ru/playboy-blonde-porn.html]playboy blonde porn[/URL]   &lt;br /&gt;
nude pics of elisha cuthbert  &lt;br /&gt;
[URL=http://coversee-endards.ru/emo-girl-hot-porn.html]emo girl hot porn[/URL]   &lt;br /&gt;
dildo with vibrator  &lt;br /&gt;
[URL=http://holfo-cheminance.ru/witcher-cards-nude.html]witcher cards nude[/URL]   &lt;br /&gt;
dildos in mens asses  &lt;br /&gt;
[URL=http://explosing-lagandhra.ru/nude-scene-angelina-jolie-beowulf.html]nude scene angelina jolie beowulf[/URL]   &lt;br /&gt;
hour long teen sex videos  &lt;br /&gt;
[URL=http://photopes-watern.ru/pornmovie-on-line.html]pornmovie on line[/URL]   &lt;br /&gt;
nude strip poker pics  &lt;br /&gt;
[URL=http://lastus-largence.ru/anime-gay-sex-picture.html]anime gay sex picture[/URL]   &lt;br /&gt;
pussy slapping fuck  &lt;br /&gt;
[URL=http://parinam-centries.ru/girl-partys-then-is-fucked-hard.html]girl partys then is fucked hard[/URL]   &lt;br /&gt;
free porno pictures of britney spears  &lt;br /&gt;
[URL=http://farminish-psycholar.ru/new-england-patriots-cheerleaders-nude-photos.html]new england patriots cheerleaders nude photos[/URL]   &lt;br /&gt;
justene jaro pussy  &lt;br /&gt;
[URL=http://pullina-numentieth.ru/sweet-krissy-masturbation-video.html]sweet krissy masturbation video[/URL]   &lt;br /&gt;
xxx tgp movies free  &lt;br /&gt;
[URL=http://monarian-sprintend.ru/bipasha-basu-nude-pictures.html]bipasha basu nude pictures[/URL]   &lt;br /&gt;
first nude sex teacher video  &lt;br /&gt;
[URL=http://art-i-diz.ru/female-mature-sexy.html]female mature sexy[/URL]   &lt;br /&gt;
audrey nude tatou  &lt;br /&gt;
[URL=http://russiandistiller.ru/katie-moss-nude-photos.html]katie moss nude photos[/URL]   &lt;br /&gt;
explosive xxx videos  &lt;br /&gt;
[URL=http://minkordan-effeminor.ru/porno-links-xp.html]porno links xp[/URL]   &lt;br /&gt;
free sexy psp backgrounds  &lt;br /&gt;
[URL=http://londonment-compreside.ru/tight-black-porn-star-gallery.html]tight black porn star gallery[/URL]   &lt;br /&gt;
abby winters nude amatures  &lt;br /&gt;
[URL=http://britable-abourhood.ru/dancing-nude-sexy.html]dancing nude sexy[/URL]   &lt;br /&gt;
sexy carrie underwood pictures  &lt;br /&gt;
[URL=http://knauf-kreps.ru/foto-woman-sex.html]foto woman sex[/URL]   &lt;br /&gt;
free nude teen bbs  &lt;br /&gt;
[URL=http://fraginal-catastimately.ru/bollywood-sex-nude-photo.html]bollywood sex nude photo[/URL]   &lt;br /&gt;
fuck my jeans brenda  &lt;br /&gt;
[URL=http://sieterles-overhaps.ru/cheeleaders-getting-fucked.html]cheeleaders getting fucked[/URL]   &lt;br /&gt;
absolutely free xxx porno pics  &lt;br /&gt;
[URL=http://mosquestina-econduced.ru/vicksburg-girls-nude.html]vicksburg girls nude[/URL]   &lt;br /&gt;
howard stern and pornstar houston  &lt;br /&gt;
[URL=http://liminates-presiege.ru/dita-von-tesse-dildo.html]dita von tesse dildo[/URL]   &lt;br /&gt;
dee lilly nude  &lt;br /&gt;
[URL=http://argely-cultipate.ru/free-hot-reading-sex-steamy-story.html]free hot reading sex steamy story[/URL]   &lt;br /&gt;
fill her pussy with cum  &lt;br /&gt;
[URL=http://flattempt-massang.ru/teens-fuck-daddy.html]teens fuck daddy[/URL]   &lt;br /&gt;
wilfs getting fucked  &lt;br /&gt;
[URL=http://infraside-harbonato.ru/porn-star-nick-manning.html]porn star nick manning[/URL]   &lt;br /&gt;
dolly parton nude naked&lt;br /&gt;
&lt;br /&gt;
== face fucker info remember ==&lt;br /&gt;
&lt;br /&gt;
[URL=http://sincertain-christoral.ru/free-image-galleries-teen-sex.html]free image galleries teen sex[/URL]   &lt;br /&gt;
passwords for pinkyxxx com  &lt;br /&gt;
[URL=http://heative-fuchstood.ru/teen-girl-message-board.html]teen girl message board[/URL]   &lt;br /&gt;
kate beckinsale nude photos free  &lt;br /&gt;
[URL=http://liminised-cyclicated.ru/arse-fucking-movies.html]arse fucking movies[/URL]   &lt;br /&gt;
free xxx cumfacials mature jpg  &lt;br /&gt;
[URL=http://czechosis-opposities.ru/mature-sexparty-free.html]mature sexparty free[/URL]   &lt;br /&gt;
double sided dildo video  &lt;br /&gt;
[URL=http://resouri-extentific.ru/wants-pussy-eaten.html]wants pussy eaten[/URL]   &lt;br /&gt;
amature nude male models  &lt;br /&gt;
[URL=http://dysregular-terrule.ru/angeline-jolie-porn.html]angeline jolie porn[/URL]   &lt;br /&gt;
nude naked sports  &lt;br /&gt;
[URL=http://estices-populato.ru/true-fuck-stories.html]true fuck stories[/URL]   &lt;br /&gt;
core hard man naked porn sex xxx  &lt;br /&gt;
[URL=http://entially-luthere.ru/big-fuck-nurse-tit.html]big fuck nurse tit[/URL]   &lt;br /&gt;
picture sexy vintage  &lt;br /&gt;
[URL=http://restablish-sentercome.ru/completely-nude-pictures.html]completely nude pictures[/URL]   &lt;br /&gt;
penny arcade fucktard  &lt;br /&gt;
[URL=http://greatments-sellows.ru/pussy-ripped-by-cock.html]pussy ripped by cock[/URL]   &lt;br /&gt;
anal sex trailer video  &lt;br /&gt;
[URL=http://ecca-art.ru/celebrity-bald-pussy.html]celebrity bald pussy[/URL]   &lt;br /&gt;
hardcore tgp voyeur  &lt;br /&gt;
[URL=http://castical-namesent.ru/gallery-nude-teenie-thong-ass.html]gallery nude teenie thong ass[/URL]   &lt;br /&gt;
kimora lee simons nude  &lt;br /&gt;
[URL=http://argely-amadhood.ru/motorsports-milford-holliston.html]motorsports + milford + holliston[/URL]   &lt;br /&gt;
sex movie pics free downloads  &lt;br /&gt;
[URL=http://follodore-histols.ru/mardi-gras-new-orleans-nude.html]mardi gras new orleans nude[/URL]   &lt;br /&gt;
best place for porn europe  &lt;br /&gt;
[URL=http://s-en.ru/xxxpass-se-index3.html]xxxpass se index3[/URL]   &lt;br /&gt;
valentine stacy sample porn boobs  &lt;br /&gt;
[URL=http://wakemons-milinguin.ru/handjob-porn-videos.html]handjob porn videos[/URL]   &lt;br /&gt;
perry lake abate nude pic gallery  &lt;br /&gt;
[URL=http://mological-pagandar.ru/index.html]big booty wet pussy[/URL]   &lt;br /&gt;
clean pornagraphy from my computer for free  &lt;br /&gt;
[URL=http://nadejdafond.ru/genuine-electrolux-xxx-cord.html]genuine electrolux xxx cord[/URL]   &lt;br /&gt;
teenage girls free nude ivana  &lt;br /&gt;
[URL=http://primariang-mussociate.ru/free-dirty-young-girl-porn.html]free dirty young girl porn[/URL]   &lt;br /&gt;
bound + fucked  &lt;br /&gt;
[URL=http://judgementallad-southwestware.ru/black-girl-suck-white-dick.html]black girl suck white dick[/URL]   &lt;br /&gt;
sex squirting teen  &lt;br /&gt;
[URL=http://alexandel-concernize.ru/heel-leg-sexy-woman.html]heel leg sexy woman[/URL]   &lt;br /&gt;
photos in an girl nude camps  &lt;br /&gt;
[URL=http://acquel-econdard.ru/fat-bitches-fucked.html]fat bitches fucked[/URL]   &lt;br /&gt;
free galleries mature women nude  &lt;br /&gt;
[URL=http://nization-jarrane.ru/lady-tribe-nude.html]lady tribe nude[/URL]   &lt;br /&gt;
che hame sexxxxxxxxxxxxxxxxxxx  &lt;br /&gt;
[URL=http://passembles-spearance.ru/nude-pics-vids-ex-wife.html]nude pics vids ex wife[/URL]   &lt;br /&gt;
teen male models nude&lt;br /&gt;
&lt;br /&gt;
== fat chick porn clip ==&lt;br /&gt;
&lt;br /&gt;
[URL=http://retress-accommon.ru/big-tits-exposed.html]big tits exposed[/URL]   &lt;br /&gt;
nude life drawing model for artist  &lt;br /&gt;
[URL=http://econdary-stalgian.ru/little-nude-pic-taylor.html]little nude pic taylor[/URL]   &lt;br /&gt;
free indian pussy video  &lt;br /&gt;
[URL=http://emergesternel-ravelena.ru/lo-mejor-de-porno-gratis.html]lo mejor de porno gratis[/URL]   &lt;br /&gt;
video sex games  &lt;br /&gt;
[URL=http://arranean-holicist.ru/dead-little-girl-getting-fucked-in.html]dead little girl getting fucked in[/URL]   &lt;br /&gt;
free registered sex offender map  &lt;br /&gt;
[URL=http://news-medic.ru/free-diaper-lesbian.html]free diaper lesbian[/URL]   &lt;br /&gt;
nude pic of laura san giacomo  &lt;br /&gt;
[URL=http://fisched-paratisfy.ru/actress-indian-masala-nude.html]actress indian masala nude[/URL]   &lt;br /&gt;
babe the goose porn  &lt;br /&gt;
[URL=http://williament-billiams.ru/home-made-forbidden-porn.html]home made forbidden porn[/URL]   &lt;br /&gt;
medical exam fetish porn  &lt;br /&gt;
[URL=http://nization-jarrane.ru/cam-free-sex-xxx.html]cam free sex xxx[/URL]   &lt;br /&gt;
bandera nude vaitiare  &lt;br /&gt;
[URL=http://concompute-scholak.ru/gay-nude-calenders.html]gay nude calenders[/URL]   &lt;br /&gt;
double pussy eating  &lt;br /&gt;
[URL=http://posterpart-princoln.ru/home-movie-amateur-fucking.html]home movie amateur fucking[/URL]   &lt;br /&gt;
xnxx mature movie  &lt;br /&gt;
[URL=http://focusines-prerogen.ru/lesbian-ove-myspace-layouts.html]lesbian ove myspace layouts[/URL]   &lt;br /&gt;
extraits gratos xxx  &lt;br /&gt;
[URL=http://beutylady.ru/ass-latino-porn.html]ass latino porn[/URL]   &lt;br /&gt;
nude arabian girls  &lt;br /&gt;
[URL=http://biz-style.ru/playboy-nude-playmates-fanpage.html]playboy nude playmates fanpage[/URL]   &lt;br /&gt;
nude pics alyssa milano  &lt;br /&gt;
[URL=http://parated-yaltire.ru/free-gay-porn-site-password.html]free gay porn site password[/URL]   &lt;br /&gt;
all porn guys  &lt;br /&gt;
[URL=http://epidnews.ru/nicole-sheridan-the-new-anal-gangbang-su.html]nicole sheridan the new anal gangbang su[/URL]   &lt;br /&gt;
tits n pussy  &lt;br /&gt;
[URL=http://teacheva-adequal.ru/one-lucky-guy-porn.html]one lucky guy porn[/URL]   &lt;br /&gt;
nude picture rapper trina  &lt;br /&gt;
[URL=http://zonest-judicing.ru/girl-picture-pre-teen.html]girl picture pre teen[/URL]   &lt;br /&gt;
nude beach amateur pictures  &lt;br /&gt;
[URL=http://outrecht-rangela.ru/woman-wearing-sexy-pantie.html]woman wearing sexy pantie[/URL]   &lt;br /&gt;
hot college women xxx  &lt;br /&gt;
[URL=http://steilprom.ru/free-porn-windows-media-player.html]free porn windows media player[/URL]   &lt;br /&gt;
totally spies porn pics  &lt;br /&gt;
[URL=http://art-i-diz.ru/mandy-moore-xxx.html]mandy moore xxx[/URL]   &lt;br /&gt;
japanese schoolgirls fuck their teachers  &lt;br /&gt;
[URL=http://pumpedal-backgroups.ru/free-porno-mature-masterbation.html]free porno mature masterbation[/URL]   &lt;br /&gt;
daphnie and velma porn  &lt;br /&gt;
[URL=http://beginnno-echuanic.ru/lesbo-sex-pics.html]lesbo sex pics[/URL]   &lt;br /&gt;
girls pussy hair  &lt;br /&gt;
[URL=http://vibraries-ethnicians.ru/lesbian-diaper-slave.html]lesbian diaper slave[/URL]   &lt;br /&gt;
nude pictures of girls and boys  &lt;br /&gt;
[URL=http://remony-deutenant.ru/paris-hilton-free-sex-movie.html]paris hilton free sex movie[/URL]   &lt;br /&gt;
taylor swift pussy&lt;br /&gt;
&lt;br /&gt;
== free hot sexy porn video ==&lt;br /&gt;
&lt;br /&gt;
[URL=http://conqually-pointered.ru/free-new-sex-pic.html]free new sex pic[/URL]   &lt;br /&gt;
nude photography line-up  &lt;br /&gt;
[URL=http://imkos.ru/nude-pics-of-privaten-gwen.html]nude pics of privaten gwen[/URL]   &lt;br /&gt;
mistress plump bbw  &lt;br /&gt;
[URL=http://collowing-specimate.ru/boy-mature-pic-shocking-woman.html]boy mature pic shocking woman[/URL]   &lt;br /&gt;
hardcore patrick porn star tera  &lt;br /&gt;
[URL=http://distaneous-shouldberg.ru/hot-tan-legs-mini-skirt-sexy.html]hot tan legs mini skirt sexy[/URL]   &lt;br /&gt;
best male masturbation techesniqu  &lt;br /&gt;
[URL=http://predouble-plantigue.ru/forced-sex-pictures.html]forced sex pictures[/URL]   &lt;br /&gt;
ls nude magazine  &lt;br /&gt;
[URL=http://orkness-scaffect.ru/sexy-legs-girls-pictures.html]sexy legs girls pictures[/URL]   &lt;br /&gt;
egyptian sex picture  &lt;br /&gt;
[URL=http://portrek-reichment.ru/www-eat-pussy.html]www eat pussy[/URL]   &lt;br /&gt;
he men nude  &lt;br /&gt;
[URL=http://liminates-presiege.ru/youngest-nude-porn-ever.html]youngest nude porn ever[/URL]   &lt;br /&gt;
shawnna pussy poppin  &lt;br /&gt;
[URL=http://timashevsk-info.ru/hard-porn-torrent.html]hard porn torrent[/URL]   &lt;br /&gt;
pussy naked women  &lt;br /&gt;
[URL=http://eukaryotirical-wealthousand.ru/hott-girls-having-sex.html]hott girls having sex[/URL]   &lt;br /&gt;
porn mp4 clips  &lt;br /&gt;
[URL=http://contieth-assical.ru/how-to-dress-sexy-black-woman.html]how to dress sexy black woman[/URL]   &lt;br /&gt;
free streaming mpg porn  &lt;br /&gt;
[URL=http://rcop.ru/sexy-country-music-singers-breasts-pictures.html]sexy country music singers breasts pictures[/URL]   &lt;br /&gt;
nude egyptian woman pic  &lt;br /&gt;
[URL=http://bendlass.ru/pink-girl-fuck.html]pink girl fuck[/URL]   &lt;br /&gt;
asia d'argento pornostar  &lt;br /&gt;
[URL=http://unoffic-safeguaran.ru/barley-legal-teen-porn.html]barley legal teen porn[/URL]   &lt;br /&gt;
anal sex redhed women  &lt;br /&gt;
[URL=http://constrait-goldkett.ru/ray-jay-sex-video.html]ray jay sex video[/URL]   &lt;br /&gt;
bw nude male  &lt;br /&gt;
[URL=http://storiants-constrench.ru/getting-first-blowjob.html]getting first blowjob[/URL]   &lt;br /&gt;
well fucked pussy  &lt;br /&gt;
[URL=http://news-medic.ru/2007-boston-lesbian-stalking-case.html]2007 boston lesbian stalking case[/URL]   &lt;br /&gt;
star wars xxx  &lt;br /&gt;
[URL=http://faculate-baltimate.ru/beulah-ecw-nude.html]beulah ecw nude[/URL]   &lt;br /&gt;
milford middle school in  &lt;br /&gt;
[URL=http://hundricharts-persioning.ru/american-gladiator-gay-porn.html]american gladiator gay porn[/URL]   &lt;br /&gt;
moms teaching teens how to fuck clips  &lt;br /&gt;
[URL=http://factoraging-prisinthias.ru/girl-sex-clips.html]girl sex clips[/URL]   &lt;br /&gt;
reality shower porn  &lt;br /&gt;
[URL=http://art-i-diz.ru/kitty-carrol-fucked.html]kitty carrol fucked[/URL]   &lt;br /&gt;
become a pornsta  &lt;br /&gt;
[URL=http://emergesternel-ravelena.ru/gay-hairy-masculine-porn-video.html]gay hairy masculine porn video[/URL]   &lt;br /&gt;
what the fuck the game  &lt;br /&gt;
[URL=http://remony-deutenant.ru/sexy-canadian-girls-naked.html]sexy canadian girls naked[/URL]   &lt;br /&gt;
couple mature porn  &lt;br /&gt;
[URL=http://provideologic-licensort.ru/laura-crevalle-nude.html]laura crevalle nude[/URL]   &lt;br /&gt;
lesbians porn with pussy free sex movies&lt;br /&gt;
&lt;br /&gt;
== tamika porn star ==&lt;br /&gt;
&lt;br /&gt;
[URL=http://sufficially-allegenergy.ru/diorskin-nude-makeup.html]diorskin nude makeup[/URL]   &lt;br /&gt;
porn penis small  &lt;br /&gt;
[URL=http://spicion-gregarded.ru/index.html]antonio sabato jr - nude[/URL]   &lt;br /&gt;
free porn sex forums  &lt;br /&gt;
[URL=http://estices-populato.ru/black-anal-sex-pictures.html]black anal sex pictures[/URL]   &lt;br /&gt;
fuck hottest ass bbw gallery huge  &lt;br /&gt;
[URL=http://biz4yours.ru/fake-hayek-nude-salma.html]fake hayek nude salma[/URL]   &lt;br /&gt;
beast porn sex site  &lt;br /&gt;
[URL=http://dominenes-cuisit.ru/skyy-black-porn-star.html]skyy black porn star[/URL]   &lt;br /&gt;
krystal picture sexy steal  &lt;br /&gt;
[URL=http://chiatric-chaheen.ru/erica-boyer-porn.html]erica boyer porn[/URL]   &lt;br /&gt;
free interracial gay sex video  &lt;br /&gt;
[URL=http://healthough-earlem.ru/cam-home-nude.html]cam home nude[/URL]   &lt;br /&gt;
priest fucks nun  &lt;br /&gt;
[URL=http://mcdonative-totallie.ru/sex-stories-with-pics.html]sex stories with pics[/URL]   &lt;br /&gt;
sabian masturbation video  &lt;br /&gt;
[URL=http://symptoman-populatio.ru/old-woman-sex-pictures.html]old woman sex pictures[/URL]   &lt;br /&gt;
pornoforall porkyhost com  &lt;br /&gt;
[URL=http://contieth-assical.ru/youtube-wheatus-teenage.html]youtube wheatus teenage[/URL]   &lt;br /&gt;
naughty julie blowjob video stairs  &lt;br /&gt;
[URL=http://arubaonline.ru/action-in-lady-porn.html]action in lady porn[/URL]   &lt;br /&gt;
web cam porn gratis  &lt;br /&gt;
[URL=http://in-hollywood.ru/mature-sex-taiwanese-video.html]mature sex taiwanese video[/URL]   &lt;br /&gt;
cock spandex trunks she her pussy  &lt;br /&gt;
[URL=http://easteur-marchbishops.ru/collection-nude-private.html]collection nude private[/URL]   &lt;br /&gt;
porn star obsession free movie  &lt;br /&gt;
[URL=http://cyprior-jerseased.ru/fantasy-nude-pic.html]fantasy nude pic[/URL]   &lt;br /&gt;
fuck i'm irish shirt  &lt;br /&gt;
[URL=http://ottoes-mirrorise.ru/asian-girls-with-big-tits.html]asian girls with big tits[/URL]   &lt;br /&gt;
free girls scared and fucking  &lt;br /&gt;
[URL=http://chargil-pagated.ru/porn-free-bi-sexual.html]porn free bi sexual[/URL]   &lt;br /&gt;
fucked lady very young  &lt;br /&gt;
[URL=http://farminish-psycholar.ru/free-interracial-porn-teen.html]free interracial porn teen[/URL]   &lt;br /&gt;
what the fuck ringtone  &lt;br /&gt;
[URL=http://forumpsp.ru/amateur-movies-porn.html]amateur movies porn[/URL]   &lt;br /&gt;
nude beach live cams  &lt;br /&gt;
[URL=http://thesios-extering.ru/perfect-blonde-with-luscious-pussylips.html]perfect blonde with luscious pussylips[/URL]   &lt;br /&gt;
pornos de jovencitas  &lt;br /&gt;
[URL=http://ligative-becautiful.ru/bitch-fuck-porn.html]bitch fuck porn[/URL]   &lt;br /&gt;
free hot fuck clips  &lt;br /&gt;
[URL=http://countary-oligate.ru/daisy-dukes-nude.html]daisy dukes nude[/URL]   &lt;br /&gt;
can flexril fuck you up  &lt;br /&gt;
[URL=http://canalogue-badenza.ru/tila-tequial-porn.html]tila tequial porn[/URL]   &lt;br /&gt;
eating pussy movie  &lt;br /&gt;
[URL=http://afficer-hattemport.ru/brittney-speares-nude.html]brittney speares nude[/URL]   &lt;br /&gt;
teenage sex clips  &lt;br /&gt;
[URL=http://knauf-kreps.ru/dildo-mature-old.html]dildo mature old[/URL]   &lt;br /&gt;
clip fucking mature woman&lt;br /&gt;
&lt;br /&gt;
== cartoon porn flash games ==&lt;br /&gt;
&lt;br /&gt;
[URL=http://conqually-pointered.ru/naked-bodybuilders-nude-muscle-men.html]naked bodybuilders nude muscle men[/URL]   &lt;br /&gt;
sarasota older pussy  &lt;br /&gt;
[URL=http://ottoes-mirrorise.ru/gallery-hairy-natural-pussy.html]gallery hairy natural pussy[/URL]   &lt;br /&gt;
teen porn gallerits  &lt;br /&gt;
[URL=http://unbroek-themselvet.ru/female-masterbation-to-orgasm-phone-sex.html]female masterbation to orgasm phone sex[/URL]   &lt;br /&gt;
shrivelled granny porn  &lt;br /&gt;
[URL=http://estaurani-karpose.ru/2-mature-dildo.html]2 mature dildo[/URL]   &lt;br /&gt;
free adult group sex  &lt;br /&gt;
[URL=http://dominenes-cuisit.ru/russian-brides-with-nude-photos.html]russian brides with nude photos[/URL]   &lt;br /&gt;
drugged fucked raped  &lt;br /&gt;
[URL=http://tracterime-figurated.ru/big-black-dick-sex.html]big black dick sex[/URL]   &lt;br /&gt;
sebastian x cartoon porn  &lt;br /&gt;
[URL=http://secondoles-retreation.ru/teen-fuck-in-shower.html]teen fuck in shower[/URL]   &lt;br /&gt;
big cock fuck pussy virgin  &lt;br /&gt;
[URL=http://advancophor-endence.ru/comforter-girl-teen.html]comforter girl teen[/URL]   &lt;br /&gt;
dildo orgasm videos  &lt;br /&gt;
[URL=http://tagallow-purporal.ru/pic-hunter-lesbian.html]pic hunter lesbian[/URL]   &lt;br /&gt;
milfs with big cunts  &lt;br /&gt;
[URL=http://art-i-diz.ru/free-dragon-ball-z-porn-video.html]free dragon ball z porn video[/URL]   &lt;br /&gt;
and show your pussy  &lt;br /&gt;
[URL=http://conqually-pointered.ru/gianna-michaels-xxx.html]gianna michaels xxx[/URL]   &lt;br /&gt;
big ebony fatties free fucking mature tit  &lt;br /&gt;
[URL=http://creperum.ru/lesbian-doctors-having-sex.html]lesbian doctors having sex[/URL]   &lt;br /&gt;
hairy mature fat pussy  &lt;br /&gt;
[URL=http://flagstantic-civilior.ru/american-teens-girl.html]american teens girl[/URL]   &lt;br /&gt;
lesbian doubledildo porn  &lt;br /&gt;
[URL=http://orkness-scaffect.ru/gay-porn-access.html]gay porn access[/URL]   &lt;br /&gt;
the real cancun nudes  &lt;br /&gt;
[URL=http://londonment-compreside.ru/gay-porn-modles-wanted.html]gay porn modles wanted[/URL]   &lt;br /&gt;
long haired men porn  &lt;br /&gt;
[URL=http://emperaturn-posities.ru/adult-entertainment-free-movie-porn.html]adult entertainment free movie porn[/URL]   &lt;br /&gt;
older men fucking younger men  &lt;br /&gt;
[URL=http://biz4yours.ru/boob-licking-movie-pussy.html]boob licking movie pussy[/URL]   &lt;br /&gt;
nude drew barrymore  &lt;br /&gt;
[URL=http://quitary-ophereby.ru/larry-leisure-nude-suit.html]larry leisure nude suit[/URL]   &lt;br /&gt;
nude bank checks  &lt;br /&gt;
[URL=http://retress-accommon.ru/clip-gay-porn-star.html]clip gay porn star[/URL]   &lt;br /&gt;
les lavigueurs nude  &lt;br /&gt;
[URL=http://hairmarter-reichhead.ru/katie-holmes-naked-nude.html]katie holmes naked nude[/URL]   &lt;br /&gt;
milford pa home  &lt;br /&gt;
[URL=http://mcdonative-totallie.ru/female-free-masturbating-porn.html]female free masturbating porn[/URL]   &lt;br /&gt;
brazil miss nude  &lt;br /&gt;
[URL=http://wondence-borgles.ru/big-dick-daddies-grandads.html]big dick daddies grandads[/URL]   &lt;br /&gt;
lea pic porn walker  &lt;br /&gt;
[URL=http://surrough-releanly.ru/black-bwhite-cock-pussy.html]black bwhite cock pussy[/URL]   &lt;br /&gt;
nude boy studs  &lt;br /&gt;
[URL=http://mological-pagandar.ru/woman-licking-her-own-pussy.html]woman licking her own pussy[/URL]   &lt;br /&gt;
free streetblowjobs video&lt;br /&gt;
&lt;br /&gt;
== sex machine free pictures videos ==&lt;br /&gt;
&lt;br /&gt;
[URL=http://cyclinto-strety.ru/bang-cream-gang-hardcore-pie.html]bang cream gang hardcore pie[/URL]   &lt;br /&gt;
celebrity nude fakes the list  &lt;br /&gt;
[URL=http://nietzche.ru/beach-babe-porn.html]beach babe porn[/URL]   &lt;br /&gt;
christi shake nude photos  &lt;br /&gt;
[URL=http://kurt-ka.ru/white-hoe-fucking-black.html]white hoe fucking black[/URL]   &lt;br /&gt;
amanda kimmel nude photos  &lt;br /&gt;
[URL=http://afficer-hattemport.ru/mother-daughter-fuck-aris.html]mother daughter fuck aris[/URL]   &lt;br /&gt;
francine american dad porn  &lt;br /&gt;
[URL=http://wondence-borgles.ru/bitch-black-lesbian.html]bitch black lesbian[/URL]   &lt;br /&gt;
bang free gang porn  &lt;br /&gt;
[URL=http://clusita-colled.ru/self-please-your-pussy.html]self please your pussy[/URL]   &lt;br /&gt;
beatiful women in the nude  &lt;br /&gt;
[URL=http://afficer-hattemport.ru/www-xnxx-com-my.html]www xnxx com my[/URL]   &lt;br /&gt;
xtube teen pussy  &lt;br /&gt;
[URL=http://churchment-propologic.ru/of-a-pussy-pump.html]of a pussy pump[/URL]   &lt;br /&gt;
dita von teese dildo  &lt;br /&gt;
[URL=http://unlawn-federable.ru/sweet-teen-black-pussy.html]sweet teen black pussy[/URL]   &lt;br /&gt;
pride hardcore knockouts volume 1  &lt;br /&gt;
[URL=http://occuration-pronomist.ru/scottish-sex-videos.html]scottish sex videos[/URL]   &lt;br /&gt;
face north xxx  &lt;br /&gt;
[URL=http://tensistic-callel.ru/lesbian-real-img.html]lesbian real img[/URL]   &lt;br /&gt;
nude beaches wa  &lt;br /&gt;
[URL=http://germanipa-cosmetro.ru/forced-face-fucked-entil-pucke.html]forced face fucked entil pucke[/URL]   &lt;br /&gt;
anal gratis sex  &lt;br /&gt;
[URL=http://althousanna-legitimater.ru/nonude-teen-picture.html]nonude teen picture[/URL]   &lt;br /&gt;
grand blanc nude  &lt;br /&gt;
[URL=http://liminatio-lillege.ru/pantie-fucking-movie.html]pantie fucking movie[/URL]   &lt;br /&gt;
my stepdad masturbating  &lt;br /&gt;
[URL=http://denversity-pontail.ru/adult-movi-clips.html]adult movi clips[/URL]   &lt;br /&gt;
nude kendra pics  &lt;br /&gt;
[URL=http://eitheless-octangy.ru/jenna-bush-nudes.html]jenna bush nudes[/URL]   &lt;br /&gt;
moon bloodgood nude pic  &lt;br /&gt;
[URL=http://goramatras.ru/shoe-fettish-porn.html]shoe fettish porn[/URL]   &lt;br /&gt;
sexy videos of katie price  &lt;br /&gt;
[URL=http://posterpart-princoln.ru/bound-and-gangbanged.html]bound and gangbanged[/URL]   &lt;br /&gt;
in nude philippine public  &lt;br /&gt;
[URL=http://denversity-pontail.ru/pornmovie-on-line.html]pornmovie on line[/URL]   &lt;br /&gt;
leather skirt pussy  &lt;br /&gt;
[URL=http://speculin-literatin.ru/category-sex-video.html]category sex video[/URL]   &lt;br /&gt;
fuck lady ass  &lt;br /&gt;
[URL=http://bendlass.ru/ariel-jasmine-porn-disney.html]ariel jasmine porn disney[/URL]   &lt;br /&gt;
nude female babes  &lt;br /&gt;
[URL=http://baudrille-zdened.ru/snow-white-xxx-movie.html]snow white xxx movie[/URL]   &lt;br /&gt;
free henti sex clips  &lt;br /&gt;
[URL=http://academan-fragedy.ru/deep-throat-xxx.html]deep throat xxx[/URL]   &lt;br /&gt;
classic porn movie i like to watch  &lt;br /&gt;
[URL=http://armined-ankline.ru/pussy-in-leather.html]pussy in leather[/URL]   &lt;br /&gt;
nude arab actress&lt;br /&gt;
&lt;br /&gt;
== thora birch nude pics ==&lt;br /&gt;
&lt;br /&gt;
[URL=http://retress-accommon.ru/black-pornstars-in-bondage.html]black pornstars in bondage[/URL]   &lt;br /&gt;
gina wild hardcore dvd sex shop  &lt;br /&gt;
[URL=http://kudrostate-nucleanor.ru/good-clean-porn.html]good clean porn[/URL]   &lt;br /&gt;
free nude scifi thumb  &lt;br /&gt;
[URL=http://noversey-correcome.ru/big-dick-gay-stud.html]big dick gay stud[/URL]   &lt;br /&gt;
sneak a peek xxx  &lt;br /&gt;
[URL=http://symmets-workina.ru/twink-sex-free.html]twink sex free[/URL]   &lt;br /&gt;
female celebritie porn  &lt;br /&gt;
[URL=http://germarks-propolic.ru/bingham-gallery-nude-traci.html]bingham gallery nude traci[/URL]   &lt;br /&gt;
free lesbian nude web cams  &lt;br /&gt;
[URL=http://seconstand-boothbari.ru/inserts-nude-clips.html]inserts nude clips[/URL]   &lt;br /&gt;
carmen electra fucked getting hard  &lt;br /&gt;
[URL=http://arranean-holicist.ru/boob-nude-small.html]boob nude small[/URL]   &lt;br /&gt;
pic gay porn sex  &lt;br /&gt;
[URL=http://vetingui-potamino.ru/mia-amber-naked-nude-pics.html]mia amber naked nude pics[/URL]   &lt;br /&gt;
m fuckng ben affleck  &lt;br /&gt;
[URL=http://imporaries-unitivism.ru/womans-sex-drive-help.html]womans sex drive help[/URL]   &lt;br /&gt;
leanni lei and max hardcore  &lt;br /&gt;
[URL=http://wrestonia-areasons.ru/hanessa-vudgens-nude.html]hanessa vudgens nude[/URL]   &lt;br /&gt;
lyrics pussycat dolls lyrics  &lt;br /&gt;
[URL=http://homintive-wrotein.ru/backdoor-to-free-porn-clips.html]backdoor to free porn clips[/URL]   &lt;br /&gt;
sexy free video content  &lt;br /&gt;
[URL=http://courseshoe-forcestricted.ru/illegal-free-porn.html]illegal free porn[/URL]   &lt;br /&gt;
free fist fucking movies  &lt;br /&gt;
[URL=http://arameters-reindungestion.ru/dildo-hentai-huge.html]dildo hentai huge[/URL]   &lt;br /&gt;
wet and messy chixxx  &lt;br /&gt;
[URL=http://seconstand-boothbari.ru/bbw-massage-london.html]bbw massage london[/URL]   &lt;br /&gt;
ebony pussy ejaculation  &lt;br /&gt;
[URL=http://frequinter-catalian.ru/free-gay-picture-sex-story.html]free gay picture sex story[/URL]   &lt;br /&gt;
actress indian mallika nude sexy sherawat  &lt;br /&gt;
[URL=http://usualtic-fullet.ru/nude-black-women-pics.html]nude black women pics[/URL]   &lt;br /&gt;
ass big fuck latina  &lt;br /&gt;
[URL=http://resultina-diately.ru/teen-kelly-girls.html]teen kelly girls[/URL]   &lt;br /&gt;
japanese shit porn  &lt;br /&gt;
[URL=http://ecca-art.ru/stephie-porn-star.html]stephie porn star[/URL]   &lt;br /&gt;
free celebs nude clips  &lt;br /&gt;
[URL=http://cyclinto-strety.ru/history-wax-dildo.html]history wax dildo[/URL]   &lt;br /&gt;
nude babe log  &lt;br /&gt;
[URL=http://countary-oligate.ru/foxy-porn-links.html]foxy porn links[/URL]   &lt;br /&gt;
fuck couple story  &lt;br /&gt;
[URL=http://groundard-hamilitary.ru/lia-may-nude.html]lia may nude[/URL]   &lt;br /&gt;
teen firls sex  &lt;br /&gt;
[URL=http://sylvanishing-machiefdom.ru/courtney-devine-porn.html]courtney devine porn[/URL]   &lt;br /&gt;
big brunette pussy  &lt;br /&gt;
[URL=http://beckhausible-madelphing.ru/free-picture-sexy-teen.html]free picture sexy teen[/URL]   &lt;br /&gt;
iimheretotestify fuck me  &lt;br /&gt;
[URL=http://theobal-microphic.ru/free-national-sex-offender-regestry.html]free national sex offender regestry[/URL]   &lt;br /&gt;
bbw escorts ohio&lt;br /&gt;
&lt;br /&gt;
== tips for masturbating for guys ==&lt;br /&gt;
&lt;br /&gt;
[URL=http://fdv-group.ru/black-lady-fucking-white-man.html]black lady fucking white man[/URL]   &lt;br /&gt;
nude pictures women movies  &lt;br /&gt;
[URL=http://explosing-lagandhra.ru/asian-lesbos-with-dildo.html]asian lesbos with dildo[/URL]   &lt;br /&gt;
youporn com lite browse  &lt;br /&gt;
[URL=http://vibraries-ethnicians.ru/hentai-media-tentacle-fucks-girl.html]hentai media tentacle fucks girl[/URL]   &lt;br /&gt;
jonny test porn  &lt;br /&gt;
[URL=http://improming-econsists.ru/teen-pink-videos-ariel.html]teen pink videos ariel[/URL]   &lt;br /&gt;
pussycat dolls loosen up my button  &lt;br /&gt;
[URL=http://simulting-nassic.ru/girls-of-porncraft.html]girls of porncraft[/URL]   &lt;br /&gt;
suckig own dick  &lt;br /&gt;
[URL=http://infraside-harbonato.ru/chocolate-female-nudes.html]chocolate female nudes[/URL]   &lt;br /&gt;
male nude bums  &lt;br /&gt;
[URL=http://mystrahovka.ru/girls-nudest-camp.html]girls nudest camp[/URL]   &lt;br /&gt;
porn star bella  &lt;br /&gt;
[URL=http://flagstantic-civilior.ru/hardcore-jennifer-lopez.html]hardcore jennifer lopez[/URL]   &lt;br /&gt;
big fake white tits  &lt;br /&gt;
[URL=http://tagallow-purporal.ru/young-girls-nude-video.html]young girls nude video[/URL]   &lt;br /&gt;
dildo masturbation teen  &lt;br /&gt;
[URL=http://fraginal-catastimately.ru/xxx-adult-dating-service.html]xxx adult dating service[/URL]   &lt;br /&gt;
zang ziyi nude  &lt;br /&gt;
[URL=http://arubaonline.ru/wild-porn-stars.html]wild porn stars[/URL]   &lt;br /&gt;
no membership celebrity porn  &lt;br /&gt;
[URL=http://mological-pagandar.ru/handjob-free-porn.html]handjob free porn[/URL]   &lt;br /&gt;
bookmarxxx dyanna in lauren  &lt;br /&gt;
[URL=http://faculate-baltimate.ru/index.html]amateur couple picture swinger[/URL]   &lt;br /&gt;
tour milfslikeitbig com  &lt;br /&gt;
[URL=http://chiatric-chaheen.ru/black-wet-pussy-girl-fuch.html]black wet pussy girl fuch[/URL]   &lt;br /&gt;
free nude clips of tara reid  &lt;br /&gt;
[URL=http://disambula-attributin.ru/bath-girl-taking-teen.html]bath girl taking teen[/URL]   &lt;br /&gt;
her first porn, com  &lt;br /&gt;
[URL=http://storiants-constrench.ru/homemade-mature-milf-porn.html]homemade mature milf porn[/URL]   &lt;br /&gt;
video porno de noelia  &lt;br /&gt;
[URL=http://prographro-complical.ru/amanda-ireton-nude-pics.html]amanda ireton nude pics[/URL]   &lt;br /&gt;
13 video sex  &lt;br /&gt;
[URL=http://imporaries-unitivism.ru/xanaduxxx-fort-wayne.html]xanaduxxx fort wayne[/URL]   &lt;br /&gt;
asian video xnxx  &lt;br /&gt;
[URL=http://misation-prevealed.ru/xxx-streaming-oral-video-sample.html]xxx streaming oral video sample[/URL]   &lt;br /&gt;
free nude websites  &lt;br /&gt;
[URL=http://courable-wheneyeats.ru/adult-desserts-sexy-sensual.html]adult desserts sexy sensual[/URL]   &lt;br /&gt;
blue italia xxx  &lt;br /&gt;
[URL=http://natali-calon.ru/catie-ashcraft-nude.html]catie ashcraft nude[/URL]   &lt;br /&gt;
owl and the pussycat dvd  &lt;br /&gt;
[URL=http://principlin-imperating.ru/effects-of-over-masturbation-in-men-zinc.html]effects of over masturbation in men zinc[/URL]   &lt;br /&gt;
cute guy porn  &lt;br /&gt;
[URL=http://imkos.ru/free-indiansexy-video.html]free indiansexy video[/URL]   &lt;br /&gt;
she likes pussy  &lt;br /&gt;
[URL=http://sacritish-factoric.ru/free-downnile-porn-for-fore.html]free downnile porn for fore[/URL]   &lt;br /&gt;
wonderwoman nude gallery&lt;br /&gt;
&lt;br /&gt;
== поиск расписаниние рейсов аэропорта кольцово ==&lt;br /&gt;
&lt;br /&gt;
[URL=http://4socialism.info/raspisanie-dvizheniya-samoletov-iz-aeroporta-neryungri.html]расписание движения самолетов из аэропорта нерюнгри[/URL]  &lt;br /&gt;
аэропорт внуково расписание рейсов домодедовских авиалиний &lt;br /&gt;
[URL=http://118899.info/raspisanie-samoletov-tashkent---ierusalim.html]расписание самолетов ташкент - иерусалим[/URL]  &lt;br /&gt;
справка аэропорт мурманск расписание вылетов &lt;br /&gt;
[URL=http://4education.info/aviabilet-koreya.html]авиабилет корея[/URL]  &lt;br /&gt;
регистрация на рейс трансаэро через интернет &lt;br /&gt;
[URL=http://4education.info/zakaz-aviabiletov-cherez-internet-iz-domodedova.html]заказ авиабилетов через интернет из домодедова[/URL]  &lt;br /&gt;
шереметьево интерактивное табло франфурт на майне &lt;br /&gt;
[URL=http://911s.info/stoimost-aviabilety-barselona-kishinev.html]стоимость авиабилеты барселона-кишинев[/URL]  &lt;br /&gt;
авиабилеты москва адлер чартер &lt;br /&gt;
[URL=http://118899.info/aviabilety-iz-gyuodessy-odessa-hurgada.html]авиабилеты из гюодессы одесса-хургада[/URL]  &lt;br /&gt;
авиабилеты новосибирск иркутск &lt;br /&gt;
[URL=http://4education.info/zakaz-prodazha-aviabilety-kiev.html]заказ продажа авиабилеты киев[/URL]  &lt;br /&gt;
рейс уфа шереметьево &lt;br /&gt;
[URL=http://4socialism.info/skidki-na-avia-bilety--akcii.html]скидки на авиа билеты. акции[/URL]  &lt;br /&gt;
берлин страсбург авиа билеты &lt;br /&gt;
[URL=http://118899.info/charternye-reysy-na-ispaniyu.html]чартерные рейсы на испанию[/URL]  &lt;br /&gt;
туроператоры египта в украине &lt;br /&gt;
[URL=http://118899.info/aviakassy-g--krasnodar.html]авиакассы г. краснодар[/URL]  &lt;br /&gt;
крупнейшие туроператоры россии по итогам 2009 &lt;br /&gt;
[URL=http://911s.info/serial-zvyozdnyy-kreyser-galaktika-onlayn.html]сериал звёздный крейсер галактика онлайн[/URL]  &lt;br /&gt;
цены на авиабилеты благовещенск москва &lt;br /&gt;
[URL=http://800free.info/bilety-na-samolet-n-novgorod-adler-cena.html]билеты на самолет н новгород адлер цена[/URL]  &lt;br /&gt;
авиабилеты гродно &lt;br /&gt;
[URL=http://800free.info/kupit-aviabilet-a-toronto.html]купить авиабилет а торонто[/URL]  &lt;br /&gt;
финляндия коттедж туроператор &lt;br /&gt;
[URL=http://4socialism.info/cena-aviabiletov-sankt-peterburg-murmansk.html]цена авиабилетов санкт петербург мурманск[/URL]  &lt;br /&gt;
цены на билеты в авиакассах санкт-петербурга &lt;br /&gt;
[URL=http://4education.info/zakaz-aviabiletov-cherez-internet-iz-domodedova.html]заказ авиабилетов через интернет из домодедова[/URL]  &lt;br /&gt;
отзывы о тур. операторе capital &lt;br /&gt;
[URL=http://800free.info/aviabilety-na-charter-v-stambul.html]авиабилеты на чартер в стамбул[/URL]  &lt;br /&gt;
узбекистанская авиакомпания хаво - юлари &lt;br /&gt;
[URL=http://4education.info/raspisanie-reysov-na-yakutsk-s-sevostopal.html]расписание рейсов на якутск с севостопаль[/URL]  &lt;br /&gt;
австрия германия туроператор &lt;br /&gt;
[URL=http://800free.info/goryashie-putevki-aviabilety-kuba.html]горящие путевки авиабилеты куба[/URL]  &lt;br /&gt;
расписание рейсов шереметьево в дубай &lt;br /&gt;
[URL=http://4education.info/raspisanie-marshrutnyh-taksi-m-domodedovo-konstantinovo.html]расписание маршрутных такси м домодедово константиново[/URL]  &lt;br /&gt;
расписание самолетов астана шымкент &lt;br /&gt;
[URL=http://4socialism.info/po-bronirovaniyu-aviabiletov-v.html]по бронированию авиабилетов в[/URL]  &lt;br /&gt;
стоимость авиабилета алматы-франкфурт &lt;br /&gt;
[URL=http://4education.info/deshevye-aviabilety-moskva-habarovsk.html]дешевые авиабилеты москва хабаровск[/URL]  &lt;br /&gt;
авиакомпания аерофлот-норд &lt;br /&gt;
[URL=http://800free.info/ceny-na-avia-bilety-goroda-ufy.html]цены на авиа билеты города уфы[/URL]  &lt;br /&gt;
билеты на самолет минводы-актау &lt;br /&gt;
[URL=http://118899.info/gde-obuchayut-na-aviakassirov-v-novosibirske.html]где обучают на авиакассиров в новосибирске[/URL]  &lt;br /&gt;
расписание авиа рейсов минеральные воды &lt;br /&gt;
[URL=http://911s.info/dalavia-zakaz-biletov.html]дальавиа заказ билетов[/URL]  &lt;br /&gt;
билеты + на самолет одесса киев &lt;br /&gt;
[URL=http://118899.info/raspisanie-samoletov-tashkent---ierusalim.html]расписание самолетов ташкент - иерусалим[/URL]  &lt;br /&gt;
отзывы о туроператоре компания восточный экспресс&lt;br /&gt;
&lt;br /&gt;
== рассписание авиарейса домодедово ==&lt;br /&gt;
&lt;br /&gt;
[URL=http://118899.info/aviabilety-iz-gyuodessy-odessa-hurgada.html]авиабилеты из гюодессы одесса-хургада[/URL]  &lt;br /&gt;
офис москва испанские авиакомпании &lt;br /&gt;
[URL=http://4socialism.info/ceny-na-aviabilety-moskva-nukus.html]цены на авиабилеты москва-нукус[/URL]  &lt;br /&gt;
авиакомпания в севастополе аэропорт бельбек &lt;br /&gt;
[URL=http://4education.info/raspisanie-nalichie-aviabiletov.html]расписание наличие авиабилетов[/URL]  &lt;br /&gt;
авиа билеты туапсе &lt;br /&gt;
[URL=http://911s.info/chelyabinsk-erevan-rasprodazha-avia-biletov.html]челябинск ереван распродажа авиа билетов[/URL]  &lt;br /&gt;
авиакомпания консей пасифик &lt;br /&gt;
[URL=http://4education.info/deshevye-aviabilety-moskva-habarovsk.html]дешевые авиабилеты москва хабаровск[/URL]  &lt;br /&gt;
туроператор юрта сеть роза ветров &lt;br /&gt;
[URL=http://800free.info/nizhnevartovsk-zakaz-aviabiletov.html]нижневартовск заказ авиабилетов[/URL]  &lt;br /&gt;
авиабилеты москва эйлат &lt;br /&gt;
[URL=http://4education.info/online-tablo-vyletov-iz-domodedovo.html]online табло вылетов из домодедово[/URL]  &lt;br /&gt;
цена авиабилеты москва-оренбург-худжанд &lt;br /&gt;
[URL=http://911s.info/aviakompaniya-yuzhnoy-korei-cena-bileta-moskva-bankok-moskva.html]авиакомпания южной кореи цена билета москва банкок москва[/URL]  &lt;br /&gt;
авиабилеты волгоград-чимкент &lt;br /&gt;
[URL=http://118899.info/samara---vladivostok-aviabilety.html]самара - владивосток авиабилеты[/URL]  &lt;br /&gt;
домодедово расписание прибытия &lt;br /&gt;
[URL=http://800free.info/aviabilet-skidki.html]авиабилет скидки[/URL]  &lt;br /&gt;
трансаэро туры туроператор &lt;br /&gt;
[URL=http://800free.info/avia-bilety-kaliningrad-yuteyr.html]авиа билеты калининград ютэйр[/URL]  &lt;br /&gt;
расписание авиасамолетов на киев &lt;br /&gt;
[URL=http://118899.info/kalinigrad-elizovo-petropalovsk-kamchatskiy-aviabilety-akcii.html]калиниград-елизово петропаловск камчатский авиабилеты акции[/URL]  &lt;br /&gt;
стоимость авиабилетов мюнхен &lt;br /&gt;
[URL=http://911s.info/raspisanie-samolyotov-moskva-sochi-vnukovo.html]расписание самолётов москва-сочи внуково[/URL]  &lt;br /&gt;
авиабилеты цены владивосток сеул владивосток &lt;br /&gt;
[URL=http://4socialism.info/pribytie-reysa-transaero-tel-aviv---moskva-25-oktyabrya-2008-goda.html]прибытие рейса трансаэро тель-авив - москва 25 октября 2008 года[/URL]  &lt;br /&gt;
цена авиабилетов краснодар-махачкала &lt;br /&gt;
[URL=http://4education.info/aviabilety-ceny-pulkovo.html]авиабилеты цены пулково[/URL]  &lt;br /&gt;
аэроэкспресс внуково-расписание &lt;br /&gt;
[URL=http://4socialism.info/tablo-prileta-vyleta-aeroporta-g--moskvy.html]табло прилета-вылета аэропорта г. москвы[/URL]  &lt;br /&gt;
расписание движения самолетов г магнитогорск &lt;br /&gt;
[URL=http://118899.info/reysy-iz-aeroporta-tolmachevo-v-aeroport-frankfurta-na-mayne.html]рейсы из аэропорта толмачево в аэропорт франкфурта на майне[/URL]  &lt;br /&gt;
авиарейсы пулково санкт-петербург шарм-эль-шейх &lt;br /&gt;
[URL=http://4socialism.info/koreyskie-serialy-onlayn-el-arna.html]корейские сериалы онлайн ел арна[/URL]  &lt;br /&gt;
москва софия авиаперелет &lt;br /&gt;
[URL=http://118899.info/alitalia-mayami-italiya-kair-aviabilet.html]alitalia майами-италия-каир авиабилет[/URL]  &lt;br /&gt;
туроператор пакс трэвел &lt;br /&gt;
[URL=http://4education.info/kupit-bilety-avia-zhulebino.html]купить билеты авиа жулебино[/URL]  &lt;br /&gt;
рсаписание рейсов из перми до москвы шереметьево &lt;br /&gt;
[URL=http://4socialism.info/bilety-adler-aeroflot.html]билеты адлер аэрофлот[/URL]  &lt;br /&gt;
тур оператор по доминиканской республике &lt;br /&gt;
[URL=http://4education.info/stoimost-avia-bileta-volgograd.html]стоимость авиа билета волгоград[/URL]  &lt;br /&gt;
санкт петербург заказ авиа билетов &lt;br /&gt;
[URL=http://911s.info/samolet-yuzhno-sahalinsk-raspisanie.html]самолет южно сахалинск расписание[/URL]  &lt;br /&gt;
авиабилет москва рио-де-женеиро &lt;br /&gt;
[URL=http://800free.info/raspisanie-aviareysov-kras-eyr-krasnoyarsk-baku.html]расписание авиарейсов крас эйр красноярск-баку[/URL]  &lt;br /&gt;
когда подешевеют авиа билеты владивосток москва &lt;br /&gt;
[URL=http://800free.info/usloviya-vozvrata-aviabiletov-aeroflot.html]условия возврата авиабилетов аэрофлот[/URL]  &lt;br /&gt;
септима туроператор из калининграда&lt;/div&gt;</summary>
		<author><name>MediaWiki spam cleanup</name></author>	</entry>

	<entry>
		<id>https://help.openclovis.com/index.php/User:Ilpres1971</id>
		<title>User:Ilpres1971</title>
		<link rel="alternate" type="text/html" href="https://help.openclovis.com/index.php/User:Ilpres1971"/>
				<updated>2012-02-21T03:47:41Z</updated>
		
		<summary type="html">&lt;p&gt;MediaWiki spam cleanup: All revisions contained links to www.buyxanaxonlinepill.com, blanking&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>MediaWiki spam cleanup</name></author>	</entry>

	<entry>
		<id>https://help.openclovis.com/index.php/Doc:latest/relnotes</id>
		<title>Doc:latest/relnotes</title>
		<link rel="alternate" type="text/html" href="https://help.openclovis.com/index.php/Doc:latest/relnotes"/>
				<updated>2012-02-21T03:47:40Z</updated>
		
		<summary type="html">&lt;p&gt;MediaWiki spam cleanup: Reverting to last revision not containing links to www.buyxanaxonlinepill.com&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=='''Preface'''==&lt;br /&gt;
&lt;br /&gt;
Welcome to ''OpenClovis Release Notes''. This document provides information about the details of the platforms on which OpenClovis SAFplus Availability/Scalability Platform (the SAFplus Platform for short) and Integrated Development Environment (IDE) have been tested and validated for SDK Release 6.0. It contains the additional features and enhancements of the product since the previous release. It also summarizes the known issues and limitations of the product and provides workaround wherever applicable.&lt;br /&gt;
&lt;br /&gt;
===Key Topics===&lt;br /&gt;
&lt;br /&gt;
''OpenClovis Release Notes'' covers the following topics in details:&lt;br /&gt;
*Tested Platforms&lt;br /&gt;
*What Is New&lt;br /&gt;
*Migration To Latest Version&lt;br /&gt;
*Known Issues&lt;br /&gt;
*Environment Related Observation&lt;br /&gt;
*Documentation Issues&lt;br /&gt;
&lt;br /&gt;
===Audience===&lt;br /&gt;
&lt;br /&gt;
''OpenClovis Release Notes'' addresses system integrators, designers, and system architects. To use SAFplus Platform, you must be aware of the fundamentals of operation, management, and configuration of telecom and networking domains. You must also be familiar with C programming, UML notations, and have basic knowledge of Linux.&lt;br /&gt;
&lt;br /&gt;
===Documentation Conventions===&lt;br /&gt;
&lt;br /&gt;
This guide uses different fonts and symbols to differentiate between document elements and types of information. These conventions are summarized in the following table.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;0&amp;quot; cellpadding=&amp;quot;3&amp;quot; align=&amp;quot;center&amp;quot;  width=&amp;quot;680&amp;quot;&lt;br /&gt;
|- style=&amp;quot;color:#ffffff; background:#549cc6&amp;quot;&lt;br /&gt;
!style=&amp;quot;color:#66b154; background:#09477c&amp;quot;| Notation &lt;br /&gt;
!style=&amp;quot;color:#66b154; background:#09477c&amp;quot;| Description&lt;br /&gt;
|- style=&amp;quot;color:#ffffff; background:#549cc6&amp;quot;&lt;br /&gt;
|style=&amp;quot;color:black&amp;quot; |&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;Code&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
This font denotes the C code provided in various examples.&lt;br /&gt;
|- style=&amp;quot;color:#ffffff; background:#549cc6&amp;quot;&lt;br /&gt;
|Cross reference&lt;br /&gt;
|&lt;br /&gt;
This font denotes a hyperlink. You can click on the hyperlink text to access the reference location, which can be either a section within the User Guide or a URL link. A cross reference refers to a section name and accesses the first page of that section.&lt;br /&gt;
|- style=&amp;quot;color:#ffffff; background:#549cc6&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
'''Bold Text''' &lt;br /&gt;
|&lt;br /&gt;
Menu items and button names.&lt;br /&gt;
|- style=&amp;quot;color:#ffffff; background:#549cc6&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
'''''Italic Text''''' &lt;br /&gt;
|&lt;br /&gt;
Variables for which you enter values.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;[[File:OpenClovis_Note.png]]This indicates the presence of notes or annotations, related to the context of the document.&lt;br /&gt;
&amp;lt;br&amp;gt;[[File:OpenClovis_Caution.png]]This indicates that certain precautionary measures must be taken before performing a particular task.&lt;br /&gt;
&amp;lt;br&amp;gt;[[File:OpenClovis_Info.png]]This indicates that additional information is provided to you.&lt;br /&gt;
&lt;br /&gt;
===Related Documents===&lt;br /&gt;
&lt;br /&gt;
For additional information about OpenClovis products, refer to the following guides:&lt;br /&gt;
* '''SAFplus Platform SA Forum Compliance''' describes the level of compliance of OpenClovis SAFplus Platform and its Application Programming Interface (API) with the relevant Service Availability Forum Specifications.&lt;br /&gt;
* '''SAFplus Platform Installation Guide''' provides the system requirements, installation procedure for OpenClovis SAFplus Platform, IDE, and the Evaluation System.&lt;br /&gt;
* '''SAFplus Platform Sample Application Tutorial''' explains the steps to create and build a sample model using OpenClovis IDE and OpenClovis SAFplus Platform. It also provides troubleshooting information for this process. This provides the logical first step in understanding the SAFplus Platform offering.&lt;br /&gt;
* '''SAFplus Platform Evaluation System User Guide''' provides all the required information to configure and run the sample models packaged within the Evaluation System. This document also provides good understanding of OpenClovis SAFplus Platform's functionality. This is the natural follow on to the ''OpenClovis Sample Application Tutorial'' as it builds on the example created in that document. &lt;br /&gt;
* '''SAFplus Platform SDK User Guide''' provides information about SAFplus Availability/Scalability Platform architecture, various SAFplus Platform components, and their interactions. This guide helps you to configure the OpenClovis SAFplus Platform components, compile, and execute the SAFplus Platform code to build your custom application.&lt;br /&gt;
* '''SAFplus Platform IDE User Guide''' describes the usage of Integrated Development Environment (IDE), a graphical development environment that complements the SAFplus Platform. This guide helps you to understand how to use the various features of the IDE to build the application.&lt;br /&gt;
* '''SAFplus Platform Log Tool User Guide''' provides information about the usage of OpenClovis Log Tool. OpenClovis Log Tool is an interactive utility that allows you to view binary log files in a readable format and hence monitor system errors, warnings, and other log information. Log Tool allows you to format the &amp;lt;code&amp;gt;.log&amp;lt;/code&amp;gt; files and filter them to view the required entries.&lt;br /&gt;
* '''SAFplus Platform API Reference Guide''' is provided for each component. It describes the Application Programming Interface (API), Service Model, and Management Information Model of the various OpenClovis Application Service Platform (SAFplus Platform) services. It helps the developer to understand the capabilities of the SAFplus Platform services and the APIs provided by these services.&lt;br /&gt;
* '''SAFplus Platform Console Reference Guide''' provides details about managing applications built on SAFplus Platform using the SAFplus Platform runtime debug console commands. SAFplus Platform Console commands can be used to manage, monitor, and test your application.&lt;br /&gt;
&lt;br /&gt;
===OpenClovis Online Technical Support===&lt;br /&gt;
&lt;br /&gt;
OpenClovis customers and partners can register on our Web site and receive personalized services and information. If you need any support or assistance while working on OpenClovis products, you can access the following: URL: http://www.openclovis.com. Send your queries to: support@openclovis.com. Open source community support is available at: http://www.openclovis.org/forum.&lt;br /&gt;
&lt;br /&gt;
===Documentation Feedback===&lt;br /&gt;
&lt;br /&gt;
We are interested in hearing from our customers on the documentation provided with the product. Let us know your comments and suggestions on improving the documentation at OpenClovis Inc. Send your comments to: support@openclovis.com. Or even better, edit (or comment in) the page on our documentation wiki located at [http://help.openclovis.com http://help.openclovis.com].&lt;br /&gt;
&lt;br /&gt;
=='''Tested Platforms'''==&lt;br /&gt;
&lt;br /&gt;
This chapter provides the details of the platforms on which OpenClovis SAFplus Platform have been tested and validated.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;0&amp;quot; cellpadding=&amp;quot;3&amp;quot; align=&amp;quot;center&amp;quot; width=&amp;quot;680&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;bottom&amp;quot; | '''Tested Platform Configurations''' &lt;br /&gt;
|- style=&amp;quot;color:#ffffff; background:#549cc6&amp;quot;&lt;br /&gt;
!style=&amp;quot;color:#66b154; background:#09477c&amp;quot; width=&amp;quot;150&amp;quot;| Platform&lt;br /&gt;
!style=&amp;quot;color:#66b154; background:#09477c&amp;quot;| Configuration&lt;br /&gt;
|- style=&amp;quot;color:#ffffff; background:#549cc6&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
Hardware&lt;br /&gt;
|&lt;br /&gt;
* ATCA 5U Chassis - Schroff, ASIS&lt;br /&gt;
* ATCA 12U Chassis - Schroff, Sanmina, HP, Sun Netra, Radisys, Huawei Tecal Server&lt;br /&gt;
* Pigeon Point Systems ShMM300 and ShMM500 based Shelf Controllers&lt;br /&gt;
* Radisys Promentum 60x0 and its 2100 Switch/Shelf Controller blades&lt;br /&gt;
* CPU Blades:&lt;br /&gt;
** Intel Xeon based server cards&lt;br /&gt;
** Intel Pentium and Xeon based desktops and rack mount servers (RMS)&lt;br /&gt;
** Intel Itanium based RMS&lt;br /&gt;
** AMD Opteron based ATCA cards&lt;br /&gt;
** AMD Opteron and Athlon based desktops&lt;br /&gt;
** PowerPC based AMCs&lt;br /&gt;
** PowerPC based desktops&lt;br /&gt;
** Huawei Tecal BH23&lt;br /&gt;
** Sun 3020 and 3090&lt;br /&gt;
|- style=&amp;quot;color:#ffffff; background:#549cc6&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
Software&lt;br /&gt;
|&lt;br /&gt;
* Wind River PNE-LE 1.2 (2.6.10 kernel) on CPU blades&lt;br /&gt;
* Wind River PNE-LE 1.3 (2.6.14 kernel) on CPU blades&lt;br /&gt;
* Wind River PNE-LE 1.4 (2.6.14 kernel) on CPU blades&lt;br /&gt;
* Wind River PNE-LE 2.0 (2.6.21 kernel) on CPU blades&lt;br /&gt;
* MontaVista Linux Carrier Grade Edition 5.0 (2.6.21 kernel)on CPU Blades&lt;br /&gt;
* QNX Neutrino RTOS 6.3.2&lt;br /&gt;
* Pigeon Point Systems Shelf Manager version 2.2.1 on ShMM300, ShMM500&lt;br /&gt;
* SCM software version 1.7 on ATCA 2100 Shelf Manager&lt;br /&gt;
* OpenHPI 2.8.1 and 2.10.2&lt;br /&gt;
* Radisys HPI Client Library (HCL) version 1.1&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
For more details on the hardware and software requirements and the steps to install OpenClovis SAFplus Platform and IDE, refer to ''OpenClovis Installation Guide''.&lt;br /&gt;
&lt;br /&gt;
=='''What Is New'''==&lt;br /&gt;
&lt;br /&gt;
This chapter outlines the new features and enhancements provided by OpenClovis SAFplus Platform and IDE for Release 6.0.&lt;br /&gt;
&lt;br /&gt;
===New In Release 6.0===&lt;br /&gt;
&lt;br /&gt;
'''SAF Message Service'''&lt;br /&gt;
* Optimization: The SAF message service now operates using a peer-to-peer instead of client-server model, resulting in a 400% speedup and reduced network utilization.&lt;br /&gt;
* Additional features:  Persistent message queues are always stored off-node and will not lose messages during application or node failures.  The SAF standard allows node failures to lose messages in persistent queues.&lt;br /&gt;
&lt;br /&gt;
'''Availability Management Framework'''&lt;br /&gt;
* 1+N system controller redundancy:  More then 2 system controllers are now supported.  &lt;br /&gt;
* Custom redundancy model:  Our SAF-extension &amp;quot;Custom&amp;quot; redundancy model allows the application to chose Active/Standby pairing.&lt;br /&gt;
&lt;br /&gt;
'''Platform Support Package'''&lt;br /&gt;
* HPI event filter plugin:  A facility was created to intercept, analyze and modify or squelch HPI events before they are handled by the SAFplus Platform.  Since it is implemented as a plug-in to our chassis manager, this feature does not affect the latency of our fast-path event handling.&lt;br /&gt;
* OpenHPI 3.0 is now the default HPI package&lt;br /&gt;
* The HPI dynamic simulator is fully supported, with OpenClovis extensions that generate HPI events if a threshold is changed so that the simulated sensor value falls outside of the nominal range.&lt;br /&gt;
&lt;br /&gt;
'''Messaging Layer'''&lt;br /&gt;
* The messaging subsystem used by SAFplus Platform has been converted to a plug-in, allowing the user to implement different transport mechanisms.&lt;br /&gt;
* UDP and TIPC plugins are now supported with the default set to TIPC as before*.&lt;br /&gt;
&lt;br /&gt;
'''Leader Election'''&lt;br /&gt;
* Cluster leader election is now based on results from the messaging layer (i.e. from TIPC) rather then running an independent algorithm.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''*''' Note: This feature is not yet supported by the IDE, but can be enabled by changing configuration files.&lt;br /&gt;
&lt;br /&gt;
===New In Release 5.0===&lt;br /&gt;
&lt;br /&gt;
====General Features====&lt;br /&gt;
&lt;br /&gt;
* '''Support for Wind River PNELE 2.0''': OpenClovis SDK can seamlessly build SAFplus Platform and binaries for Wind River Platform for Network Equipment Linux Edition 2.0 on all supported SDK platforms, either using the build tool-chain of OpenClovis or of the development environment of Wind River.&lt;br /&gt;
&lt;br /&gt;
====High Availability (HA)====&lt;br /&gt;
&lt;br /&gt;
*'''ISSU - In Service Software Upgrade'''&lt;br /&gt;
Supports middleware upgrade in a rolling (in-service) or single-step mode.&lt;br /&gt;
&lt;br /&gt;
'''Single-Step'''&lt;br /&gt;
For deployment of non-backwards compatible software, or rapid deployment of software.  This method stops the relevant services on all nodes (causing an outage) and then upgrades that software and restarts.  Note that services are stopped at various granularity levels depending on what is being upgraded.  In other words, application A can be taken out-of-service and upgraded across the cluster without affecting application B running on the same nodes.&lt;br /&gt;
&lt;br /&gt;
'''Inservice Rolling'''&lt;br /&gt;
This is the most commonly known telecom quality upgrade method.  For deployment of backwards-compatible software across the cluster, this method stops service in one &amp;quot;upgrade unit&amp;quot; at a time, upgrades the software and restarts before stopping the next &amp;quot;upgrade unit&amp;quot;.  This process continues iteratively until the entire cluster is upgraded.  Since the available redundant capacity takes over for the unit being upgraded service will be unaffected.&lt;br /&gt;
&lt;br /&gt;
====Infrastructure and Communications====&lt;br /&gt;
&lt;br /&gt;
====Group Membership Service (GMS) over TIPC====&lt;br /&gt;
&lt;br /&gt;
By default GMS/openais is now compiled to run over TIPC.&lt;br /&gt;
&lt;br /&gt;
====SAF Message Service====&lt;br /&gt;
&lt;br /&gt;
SAF messaging data types and APIs supported by OpenClovis&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*'''classes/types:'''&lt;br /&gt;
&lt;br /&gt;
*SaMsgMessageT&lt;br /&gt;
*SaMsgHandleT&lt;br /&gt;
*SaMsgQueueStatusT&lt;br /&gt;
*SaMsgQueueHandleT&lt;br /&gt;
*SaMsgSenderIdT&lt;br /&gt;
*SaMsgQueueCreationAttributesT&lt;br /&gt;
*SaMsgQueueOpenFlagsT&lt;br /&gt;
*SaMsgQueueGroupPolicyT&lt;br /&gt;
*SaMsgQueueGroupNotificationBufferT&lt;br /&gt;
*SaMsgQueueGroupNotificationT&lt;br /&gt;
*SaMsgQueueUsageT&lt;br /&gt;
*SaMsgCallbacksT&lt;br /&gt;
*SaMsgMessageReceivedCallbackT&lt;br /&gt;
&lt;br /&gt;
*'''APIs:'''&lt;br /&gt;
&lt;br /&gt;
*saMsgMessageSend&lt;br /&gt;
*saMsgMessageSendAsync&lt;br /&gt;
*saMsgQueueOpen&lt;br /&gt;
*saMsgQueueClose&lt;br /&gt;
*saMsgQueueStatusGet&lt;br /&gt;
*saMsgMessageGet&lt;br /&gt;
*saMsgMessageDataFree&lt;br /&gt;
*saMsgQueueGroupCreate&lt;br /&gt;
*saMsgQueueGroupInsert&lt;br /&gt;
*saMsgQueueGroupTrack&lt;br /&gt;
*saMsgQueueGroupNotificationFree&lt;br /&gt;
*saMsgInitialize&lt;br /&gt;
*saMsgFinalize&lt;br /&gt;
*saMsgDispatch&lt;br /&gt;
&lt;br /&gt;
====SAF Component cleanup script support====&lt;br /&gt;
&lt;br /&gt;
5.0 introduces support to configure cleanup commands for SA-AWARE components using the Openclovis IDE. The cleanup command is invoked by AMF on component cleanup or abrupt terminations.&lt;br /&gt;
&lt;br /&gt;
===System Management===&lt;br /&gt;
&lt;br /&gt;
*Support of net-snmp 5.4.2.&lt;br /&gt;
*SNMP Traps in 64 Bit architectures.&lt;br /&gt;
&lt;br /&gt;
===Platform Management===&lt;br /&gt;
&lt;br /&gt;
OpenClovis SAFplus Platform provides pre-integrated support for commonly used ATCA platforms. All service affecting events reported by the shelf manager via HPI are intercepted and service on affected hardware is migrated to standby equipment, ensuring continuity of service. &lt;br /&gt;
&lt;br /&gt;
This support is provided with the '''Platform Support Package (PSP)''' for Piegon Point Shelf manager 500ShMM via openHPI. &lt;br /&gt;
&lt;br /&gt;
PSP is available as a separate product, please contact OpenClovis Sales for further information.&lt;br /&gt;
&lt;br /&gt;
===Features of OpenClovis IDE===&lt;br /&gt;
&lt;br /&gt;
* '''Running SAFplus Platform without manageability components''': IDE is having the support for enable/disable SAFplus Platform components. For more information refer to ''OpenClovis IDE User Guide''.&lt;br /&gt;
* '''AMF Clean-up script''': IDE is having support to specify the cleanup command in SAF Component. For more information refer to ''OpenClovis IDE User Guide''.&lt;br /&gt;
* '''Versioning the Configuration Files''': IDE is having support for versioning the configuration files.&lt;br /&gt;
* '''SAF Messaging''': IDE is having support to enable the SAF messaging. For more information refer to ''OpenClovis IDE User Guide''.&lt;br /&gt;
&lt;br /&gt;
===SAFplus Platform Run-Time Director===&lt;br /&gt;
&lt;br /&gt;
A new product, the SAFplus Platform Run-Time Director(ARD), provides cluster management of the SAFplus Platform via a web interface.  This new product is available separately, please contact OpenClovis for demonstration and evaluation.  The ARD has the following features:&lt;br /&gt;
&lt;br /&gt;
* Software Distribution:  Allows individual applications to be packaged in a &amp;quot;bundle&amp;quot; and be deployed to any set of nodes in the cluster.&lt;br /&gt;
* Inservice Software Upgrade: Supports application upgrade in a rolling (in-service) or single-step mode. &lt;br /&gt;
* WYSIWYG: Provides intuitive cluster management via an HTTP (web) interface.&lt;br /&gt;
* AJAX: Displays all SAF AMF entities and their current status -- uses asynchronous Javascript requests to dynamically update browser when changes occur.&lt;br /&gt;
* Dynamic AMF:  Allows modification of AMF entity state and supports creation/deletion of AMF entities.&lt;br /&gt;
* High Availability:  The ARD runs in unprotected or 2N redundancy mode.&lt;br /&gt;
* Python AMF API:  Provides an easy-to-use CLI/programmatic API for cluster management&lt;br /&gt;
* Easy installation:  The ARD can install itself into a running SAFplus Platform model, and therefore requires no changes to your existing model.&lt;br /&gt;
* Extensible: The ARD is built on top of TurboGears, a popular open source web mega-framework.  Thus it provides a basis and example for your custom SaaS or EMS project.&lt;br /&gt;
* Integration of Platform Support Package (PSP), provides chassis configuration through OpenHPI.&lt;br /&gt;
&lt;br /&gt;
===OpenClovis Documentation===&lt;br /&gt;
&lt;br /&gt;
* OpenClovis Documentation is provided in two formats now, PDF and HTML. They both contain the same information.&lt;br /&gt;
* A new ''OpenClovis SA Forum Compliance'' document has been added&lt;br /&gt;
* As a courtesy, all relevant SA Forum specifications are supplied as part of our OpenClovis documentation package (only in PDF format).&lt;br /&gt;
* A new ''OpenClovis Sample Application Tutorial'' has been added, replacing the former Modeling Tutorial. The new document provides explanation for the various steps involved in creating and running a new application.&lt;br /&gt;
* The ''OpenClovis SDK User Guide'' has been extended to cover many additional topics, including:&lt;br /&gt;
** Communication infrastructure&lt;br /&gt;
** Hardware platform support&lt;br /&gt;
** How to debug SAFplus Platform based applications&lt;br /&gt;
** Build and deployment&lt;br /&gt;
* The ''OpenClovis API Reference Guide'' has been significantly revised:&lt;br /&gt;
** Numerous coding examples&lt;br /&gt;
** New reference pages for API error codes for easy lookup&lt;br /&gt;
** HTML version of API Refernce Guide is heavily cross-referenced, allowing easy navigation between the various programming construcs&lt;br /&gt;
* New, complete ''OpenClovis SAFplus Platform Console Reference Guide'' as a separate document&lt;br /&gt;
&lt;br /&gt;
[[File:OpenClovis_Note.png]]From this release, the ''Debug CLI'' has been renamed to ''SAFplus Platform Console''.&lt;br /&gt;
&lt;br /&gt;
=='''Migration To Latest Version'''==&lt;br /&gt;
&lt;br /&gt;
Migration of a project or model from an earlier version of the OpenClovis IDE to the most recent version is performed automatically when the model it opened for the first time in the newer vesion. The IDE auto-detects the project's version and changes the internal files so that the information is in valid format and can be read by the current version. It also provides an option to create a backup of the project while performing the migration. For more information, refer to ''OpenClovis IDE User Guide'', Section ''Migrating Project''. IDE supports migration from R2.3 and above.&lt;br /&gt;
&lt;br /&gt;
Any issues regarding migration from a previous version of the IDE are documented below.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Change in Log File Locations===&lt;br /&gt;
&lt;br /&gt;
As of release 3.0 all SAFplus Platform runtime log files are created in the &amp;lt;code&amp;gt;var/log&amp;lt;/code&amp;gt; subdirectory of the SAFplus Platform install directory. It is recommended that you update existing models to also use this directory. To update an existing model edit the clLog.xml file in the model's src/config directory. Change all references of '''.:log''' in the &amp;lt;code&amp;gt;&amp;lt;fileLocation&amp;gt;&amp;lt;/code&amp;gt; elements&lt;br /&gt;
&lt;br /&gt;
        &amp;lt;fileLocation&amp;gt;.:log&amp;lt;/fileLocation&amp;gt;&lt;br /&gt;
&lt;br /&gt;
to '''.:var/log'''&lt;br /&gt;
&lt;br /&gt;
        &amp;lt;fileLocation&amp;gt;.:var/log&amp;lt;/fileLocation&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Once the model is rebuilt and deployed these new settings will take effect.&lt;br /&gt;
&lt;br /&gt;
===gmsConfig.xml file===&lt;br /&gt;
&lt;br /&gt;
Models of R2.3 may not contain the gmsConfig.xml file if GMS configuration is not done. If you migrate this project you will get error message saying that Migration was unable to create this file. But this is not going to affect further use of model. Model will be OK and user can make changes to it from IDE, generate source, build it, etc without any problem.&lt;br /&gt;
&lt;br /&gt;
Although this error is not going to affect the functionality of the model, there is a work around for this. Before migrating your model, just open up the model in your old IDE setup. Launch &amp;quot;SAFplus Platform Component Configuration&amp;quot; dialog from the Clovis menu. Press OK. Now just migrate the model with new IDE setup, you will not get this error. Bug has been raised for this and it will be fixed in next release.&lt;br /&gt;
&lt;br /&gt;
=='''Known Issues'''==&lt;br /&gt;
&lt;br /&gt;
This chapter describes the known issues in the current release and provides the associated workarounds. These issues arise due to deviation from the normal functioning of the system or as a result of an unexpected behavior of a component or a service.&lt;br /&gt;
&lt;br /&gt;
===Known Issues of OpenClovis SAFplus Platform===&lt;br /&gt;
&lt;br /&gt;
Following are the known issues for OpenClovis SAFplus Platform:&lt;br /&gt;
&lt;br /&gt;
*'''Infrastructure and Communications'''&lt;br /&gt;
** '''TIPC address:''' TIPC with 1.5.12 versions was found to give problems (link unstable) when you have 2 different TIPC netids configured for the same TIPC address. This issue is not seen with the 1.7.x TIPC releases, but in general we recommend you to keep the TIPC addresses unique and not collide with the same addresses on nodes configured with different TIPC netids. One of the symptoms  of this is that the TIPC link between 2 machine starts going UP and DOWN continuously when there is another machine in the network, whose TIPC address is conflicting with address of one of those 2 machines. The behavior can be observed through continuous execution of command &amp;quot;tipc-config -l&amp;quot; or through &amp;quot;dmesg&amp;quot;.&lt;br /&gt;
** In general, TIPC 1.5.XX has been found to be unstable, especially under high multicast load, and should not be used in production environments.&lt;br /&gt;
&lt;br /&gt;
** '''Bug ID #7269'''  A cluster having a mixture of 32bit little endian, 32bit big endian and 64 bit little endian machines/nodes may find that the GMS service in inadvertently terminates.&lt;br /&gt;
*** '''Workaround''' - None&lt;br /&gt;
** '''aspinfo known issues:''' (1) On some systems, especially systems with Python version 2.3, aspinfo can be slow to respond. (2) Some corner cases may not be properly handled and aspinfo may prematurely exit, dumping its Python stack.&lt;br /&gt;
&lt;br /&gt;
* '''System Management'''&lt;br /&gt;
** '''Bug ID #7313''' If an Alarm Server is restarted after it published an alarm, it won't allow to clear/publish that alarm again.&lt;br /&gt;
*** '''Workaround''' - Currently there is no workaround.&lt;br /&gt;
&lt;br /&gt;
* '''SAF Compliance'''&lt;br /&gt;
** '''Deviation from SAF in Event Service:''' Event Service does not yet support Event Retention as specified in SAF specification. The retention time specified in the clEventPublish() API would have no effect.&lt;br /&gt;
** '''Bug in SAF specificaion B11:''' The clEventDataGet() API of Event Service is in compliance with the SAF specification B11. This allows the user to either allocate memory for the event payload or obtain it from the API by passing a pointer. The latter is not possible with this API as the argument needs to be a pointer to a pointer which is not the case. As per the new specification and the recommended way the user is always required to allocate and free the memory.&lt;br /&gt;
&lt;br /&gt;
===Known Issues of OpenClovis IDE===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;'''Bug ID # 6543: X Error in Ubuntu Installation.''' Starting the IDE in '''Ubuntu''' installation may result some X errors in the console. This is not an IDE issue, this will not affect any of the IDE functionalities.&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;'''Workaround''' - See the ''Limitations'' section of the ''OpenClovis IDE User Guide''.&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;'''SNMP MIB Enumerated Integer Construct Limitations''': During SNMP code generation all enumerated integer labels are converted to &amp;lt;code&amp;gt;#define&amp;lt;/code&amp;gt; statements. The constant names used in these statements are the enumerated integer labels converted to upper case. Because of this the all labels used within an enumerated integer construct must be unique regardless of case.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;'''SNMP MIB V1 TRAP-TYPE Construct Not Supported''': Due to an issue in the Net-SNMP mib2c compiler code generation for MIBs using the V1 TRAP-TYPE construct does not work properly.&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;'''Workaround''' - To generate trap code from an SNMP MIB use the SNMP V2 NOTIFICATION-TYPE construct.&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Known Issues of Install Package===&lt;br /&gt;
&lt;br /&gt;
* '''Bug ID # 6749: Potential conflict with net-snmp package on local system''': In certain rare instances, building OpenHPI from the included third-party packages during SDK installation fails owing to a conflict with an already-installed version of NetSNMP on the system.  In these instances, it is recommended that NetSNMP be removed from the local system before installing OpenClovis SDK, and that it be reinstalled after completing the SDK installation.&lt;br /&gt;
&lt;br /&gt;
* '''Installation on Red Hat Enterprise 4''': On a Red Hat Enterprise Linux 4 system, the 'Development Tools' subset of packages must be installed to cover the requirements for installing OpenClovis SDK.  In general, an installation with the default package set contains all requirements for installation.&lt;br /&gt;
&lt;br /&gt;
* '''Installation on Fedora Core 6''': On a Fedora Core 6 system, installation of OpenClovis SAFplus Platform automatically builds and installs the TIPC opensource package.  To build TIPC, the kernel headers must be present and so these are automatically installed (by our ./preinstall-fedora-core.sh script) using the &amp;quot;yum install kernel-devel&amp;quot; command.  On rare configurations, this command does not work correctly.  It is supposed to install headers so that the symbolic link located at &amp;quot;/lib/modules/`uname -r`/build&amp;quot; points to a valid directory of Linux header files.  However, on some systems this symbolic link points to &amp;quot;/usr/src/kernels/2.6.22.14-72.fc6-i586&amp;quot; but the headers are actually installed in &amp;quot;/usr/src/kernels/2.6.22.14-72.fc6-i686&amp;quot;  (note 'i586' vs 'i686').  To resolve this problem, change the symbolic link to point to the correct directory name, and then restart the OpenClovis SAFplus Platform installation.&lt;br /&gt;
&lt;br /&gt;
* '''Configuring TIPC and assigning the SAFplus Platform node address''' to an OpenClovis SAFplus Platform is done by SAFplus Platform start up script. But if manual configuration of TIPC is allowed.  Misconfiguration (such as assigning 2 nodes the same TIPC address) will result in an unstable system. When this happens the whole system (all the SAFplus Platform nodes including the ones which are already up and running properly) have to be brought down, the TIPC kernel driver unloaded (to remove its configuration) and the system restarted.&lt;br /&gt;
&lt;br /&gt;
* '''Installation of SQLite using Preinstall script''': The Preinstall script installs SQLite by default as database engine. It locates SQLite - if it is already installed - without verifying version number. If its version is older than 3.3.13, then SAFplus Platform will fail to start.&lt;br /&gt;
** '''Workaround''' - Use SQLite 3.3.13 or newer. The source code can be downloaded from http://www.sqlite.org/download.html. The user can install the latest version of SQLite if its not present in the repository.&lt;br /&gt;
&lt;br /&gt;
* '''Installation on Solaris 10/SPARC (beta)''': Installation of OpenClovis SAFplus Platform requires the following third party packages installed via either installation media or using pkgadd with packages obtained from http://www.sunfreeware.com/.  Missing third-party packages may cause unpredictable behavior during installation and SDK use.&lt;br /&gt;
** db-4.2.52&lt;br /&gt;
** fileutils&lt;br /&gt;
** flex&lt;br /&gt;
** gcc-3.4.2&lt;br /&gt;
** gdbm-1.8.3&lt;br /&gt;
** glib-2.14.1&lt;br /&gt;
** gmake&lt;br /&gt;
** gtar&lt;br /&gt;
** libintl&lt;br /&gt;
** libiconv&lt;br /&gt;
** ncurses&lt;br /&gt;
** openssl&lt;br /&gt;
** pkgconfig&lt;br /&gt;
** python-2.5.1&lt;br /&gt;
** readline&lt;br /&gt;
** snprintf&lt;br /&gt;
** tipc-solaris-1.7.5 or SUNWtipc&lt;br /&gt;
** SUNWbtool&lt;br /&gt;
** SUNWsprot&lt;br /&gt;
** SUNWhea&lt;br /&gt;
** wget&lt;br /&gt;
&lt;br /&gt;
=='''Environment Related Observation'''==&lt;br /&gt;
&lt;br /&gt;
* '''Bug ID #7549''' When SAFplus Platform is running in non simulation mode, if SAFplus Platform is started from one sandbox, then it can be stopped/zapped from another sandbox.&lt;br /&gt;
&lt;br /&gt;
===Enabled Firewall Can Cause SAFplus Platform to Shutdown===&lt;br /&gt;
The enablement of a firewall on a system running a deployed SAFplus Platform image can cause the software to shutdown. An indication that you may be running into this problem is if you see an entry similar to the following in your log file (in the log file it is one line):&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
Wed Sep 26 15:06:54 2007   (SCNodeI0.10499 : GMS.---.---.00036 :  ERROR)&lt;br /&gt;
   [clGmsEngine.c:448] No nodes in the cluster view to run leader &lt;br /&gt;
   electionLeader Election Aborted&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
To resolve this problem disable all filtering in the Netfilter framework by issuing the following command.&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
iptables -F&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Reusing A Project Area With New Version of OpenClovis SDK===&lt;br /&gt;
Every Project Area is associated with an installation of OpenClovis SDK at a given location.  If one elects to reinstall the SDK at a different location or install a newer version at a different location, the project area will stay associated with the original SDK location.  This allows one to work with multiple versions of the SDK simultaneously.&lt;br /&gt;
In order to use an existing project area with a different or moved installation of OpenClovis SDK, remove the &amp;lt;code&amp;gt;.config&amp;lt;/code&amp;gt; file from your project area directory and re-run &amp;lt;code&amp;gt;configure&amp;lt;/code&amp;gt; as you normally would to work with a model.&lt;br /&gt;
&lt;br /&gt;
===Running Multiple SAFplus Platform Clusters in the same Subnet===&lt;br /&gt;
If you are running multiple SAFplus Platform clusters within the same subnet, please ensure that the &amp;lt;code&amp;gt;TIPC network ID&amp;lt;/code&amp;gt; selected for each cluster is unique.&lt;br /&gt;
&lt;br /&gt;
=='''Documentation Issues'''==&lt;br /&gt;
&lt;br /&gt;
This chapter describes the known issues with the OpenClovis Documentation shipped along with the product.&lt;br /&gt;
&lt;br /&gt;
* Formatting issues&lt;br /&gt;
** Following cross-references pointing to a heading, the PDF viewer will jump to the end of the previous page if the heading is on the top of a page.&lt;br /&gt;
** Firefox web browsers sometimes do not correctly jump to intra-page anchors when the user clicks on a reference. This is a known issue with Firefox. The workaround is to click on Back button and then on the reference again. The browser jumps to the correct position for the 2nd time.&lt;/div&gt;</summary>
		<author><name>MediaWiki spam cleanup</name></author>	</entry>

	<entry>
		<id>https://help.openclovis.com/index.php/Doc:latest/sdkguide/manageability</id>
		<title>Doc:latest/sdkguide/manageability</title>
		<link rel="alternate" type="text/html" href="https://help.openclovis.com/index.php/Doc:latest/sdkguide/manageability"/>
				<updated>2012-02-21T03:47:39Z</updated>
		
		<summary type="html">&lt;p&gt;MediaWiki spam cleanup: Reverting to last revision not containing links to www.buyxanaxonlinepill.com&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=='''System Management'''==&lt;br /&gt;
&lt;br /&gt;
OpenClovis SAFplus Platform provides a comprehensive platform and system management and component manageablity. It delivers a high degree of redundancy, delivering access to key services through highly-resilient traffic handling and system recovery mechanisms. The SAFplus Platform manageability infrastructure provides the capability for managing the resources in the system, reporting problems happening on those resource and provides infrastructure which can take customized action based on these problems.&lt;br /&gt;
&lt;br /&gt;
Manageability comprises the following components: &lt;br /&gt;
* [[#Clovis Object Repository (COR)|Clovis Object Repository (COR)]]&lt;br /&gt;
* [[#Alarm Manager (AM)|Alarm Manager (AM)]]&lt;br /&gt;
* [[#Fault Manager (FM)|Fault Manager (FM)]]&lt;br /&gt;
* [[#Transaction Manager (TM) | Transaction Manager (TM)]] &lt;br /&gt;
* [[#Provisioning Library|Provisioning Library]]&lt;br /&gt;
* [[#Mediation Library|Mediation Library]]&lt;br /&gt;
* [[#Simple Network Management Protocol (SNMP)|Simple Network Management Protocol (SNMP)]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id='System Management in SAFplus'&amp;gt;&amp;lt;/span&amp;gt;[[File:SDK_SystemMngmtinSAFplus Platform.png|frame|center| '''System Management in SAFplus''' ]]&lt;br /&gt;
&lt;br /&gt;
This chapter provides information about the various components of mangeability, concepts of managed objects, and using subagents for custom MIBs. &lt;br /&gt;
&lt;br /&gt;
'''Key Topics:''' &lt;br /&gt;
* [[#Components of Manageability | Components of Manageability]] &lt;br /&gt;
* [[#Working with Clovis Object Repository (COR) | Working with Clovis Object Repository (COR)]] &lt;br /&gt;
* [[#Attributes of Managed Objects| Attributes of Managed Objects]] &lt;br /&gt;
* [[#Developing SNMP Subagent for Custom MIBs | Developing SNMP Subagent for Custom MIBs]] &lt;br /&gt;
* [[#SAFplus Platform Manageability End to End | SAFplus Platform Manageability End to End ]]&lt;br /&gt;
&lt;br /&gt;
===OpenClovis Information Model===&lt;br /&gt;
&lt;br /&gt;
OpenClovis Information Model is a hierarchical, object-oriented management information model that facilitates the abstraction of all physical and logical entities in a managed environment.&lt;br /&gt;
&lt;br /&gt;
'''Key Topics:''' &lt;br /&gt;
* [[#Introduction to the OpenClovis Information Model | Introduction to the OpenClovis Information Model]] &lt;br /&gt;
* [[#Building an Information Model Using the OpenClovis IDE | Building an Information Model Using the OpenClovis IDE]] &lt;br /&gt;
&lt;br /&gt;
For more information on Information Modeling, please refer to Distributed Management Task Force (DMTF) Common Information Model (CIM) available at http://www.dmtf.org.&lt;br /&gt;
&lt;br /&gt;
====Introduction to the OpenClovis Information Model====&lt;br /&gt;
&lt;br /&gt;
The OpenClovis Information Model is built on a generic framework that provides a unified view of hardware and software elements and the services provided by them. It helps you to define the interdependencies and relationships between the managed objects. It is a mechanism to capture the application models and integrate them with OpenClovis SAFplus Platform.&lt;br /&gt;
&lt;br /&gt;
To manage any hardware or software entity, it must be represented as a Resource in the Information Model.  Hardware entities include chassis, blade, interface port, logical port, logical connections such as ATM VPC, VLAN, and so on. Software entities includes software processes, operating system features or application protocols such as OSPF, SS7, and so on.&lt;br /&gt;
&lt;br /&gt;
The OpenClovis IDE helps you to build your Information Model using UML notation. This is accomplished through its editors, namely the Resource Editor and the Component Editor. For more information please refer to ''OpenClovis IDE User Guide''.&lt;br /&gt;
&lt;br /&gt;
The Information Model allows the definition of managed objects for an OpenClovis SAFplus-based system encapsulating chassis management, devices, alarms, faults, component states, and provisioned attributes of OpenClovis SAFplus Platform components and customer applications. The model provides support for SNMP MIB import as well as Object ID (OID) to Managed Object ID (MOID) mapping.&lt;br /&gt;
&lt;br /&gt;
====Building an Information Model Using the OpenClovis IDE====&lt;br /&gt;
&lt;br /&gt;
The OpenClovis IDE provides a graphical development environment for defining the SAFplus Platform model. Using the OpenClovis IDE you can design the model, generate/customize the code, and build the images for your target environment. Building the information model involves the following steps: &lt;br /&gt;
* Create a project using the OpenClovis IDE.&lt;br /&gt;
* Build the resource view in the Resource Editor. &lt;br /&gt;
* Define the hardware and software objects of the system and model them as Resources. &lt;br /&gt;
* Set the attributes for the resources.&lt;br /&gt;
* Create components to manage the resources using the Component Editor and then associate the components with the resources.&lt;br /&gt;
* Set the attributes for the components.&lt;br /&gt;
* Configure the build-time OpenClovis SAFplus Platform components and save the data as XML files.&lt;br /&gt;
* Generate the code representing the defined model.&lt;br /&gt;
* Compile the code.&lt;br /&gt;
* Create the binary deployment images.&lt;br /&gt;
&lt;br /&gt;
You can compile and link the code to the OpenClovis SAFplus Platform libraries to build the platform software customized for the target application. To get started using the OpenClovis IDE and build a sample model see the ''OpenClovis Sample Application Tutorial.''&lt;br /&gt;
&lt;br /&gt;
===Components of Manageability===&lt;br /&gt;
&lt;br /&gt;
====Clovis Object Repository (COR)====&lt;br /&gt;
&lt;br /&gt;
Clovis Object Repository (COR) is an in-memory, object-oriented distributed repository service enabled with system modeling constructs. It implements data management capabilities like meta-data management as well as data management. Meta-data is expressed as class creation, deletion, and attribute definitions.&lt;br /&gt;
&lt;br /&gt;
Data management capabilities include object creation, deletion, query, indexing, and distribution. COR also provides ability to implement services associated data definition using transaction, recovery, and so on. COR provides the ability for class inheritance and containment.&lt;br /&gt;
&lt;br /&gt;
The Clovis Object repository is updated in the active System Controller instance and an exact replica is maintained (synchronized) in the System Controller Standby to provide high availability. In addition COR provides persistence storage of the repository to provide HA across restart scenarios. It routes the management stations requests to the user component or the object implementer for updating the component managing the hardware or the software resource. The COR supports transient attribute. An object implementer keeps track of the latest value of this attribute. Any get operation from the north bound on this attribute will be routed to the primary OI and latest value will be returned.&lt;br /&gt;
&lt;br /&gt;
====Alarm Manager (AM)====&lt;br /&gt;
&lt;br /&gt;
The OpenClovis Alarm Manager (AM) provides an infrastructure for configuring and handling alarms. It provides support for alarm soaking, masking, alarm hierarchies, and correlation of the alarms before publishing. It stores the information for all the alarm being published untill it is cleared. The alarm client library attached to the component which is managing the alarm resource always sends the request to the alarm manager running on the local node for the processing.&lt;br /&gt;
&lt;br /&gt;
It provides the functionality of reporting the alarm from the south bound entity. It publishes events for all the alarms reported or cleared, so somebody interested in this can register for this subscription.&lt;br /&gt;
&lt;br /&gt;
====Fault Manager (FM)====&lt;br /&gt;
&lt;br /&gt;
The OpenClovis Fault Manager (FM) infrastructure provides a hierarchical scheme for managing faults in a system and initiating actions as configured during the design time. It can handle various user-defined run-time faults, including hardware and software faults and can prioritize faults to ensure that the critical faults are addressed before the normal or the low-priority faults. &lt;br /&gt;
&lt;br /&gt;
The alarms are notified by the Fault Manager client library to the Fault Manager server located on the same node. The actions to be taken on receiving a fault are controlled by the FM policy associated with the faults.&lt;br /&gt;
&lt;br /&gt;
====Transaction Manager (TM)====&lt;br /&gt;
&lt;br /&gt;
The OpenClovis Transaction Manager (TM) is an infrastructure service for providing the 2-phase commit transaction semantics. Along with this it provides two libraries the client library and the agent library. The client library is used to submit the transaction jobs and also the information about all the participating components. Any component that wishes to be a part of transactions can link with the agent library and act as a resource manager.&lt;br /&gt;
&lt;br /&gt;
'''Features''' &lt;br /&gt;
&lt;br /&gt;
* Supports re-startable transactions. For instance, if the Transaction Manager dies, all the pending transactions will be restarted when it is coming up again.&lt;br /&gt;
&lt;br /&gt;
'''How it works''' &lt;br /&gt;
&lt;br /&gt;
It tracks the participants and provides ACID semantics to ensure that all the participants are updated properly, or will rollback to previous state assuring data integrity despite component failures.&lt;br /&gt;
&lt;br /&gt;
====Provisioning Library====&lt;br /&gt;
&lt;br /&gt;
The OpenClovis Provisioning Library manages all aspects of the various hardware and software resources on the system.&lt;br /&gt;
&lt;br /&gt;
Provisioning Library:&lt;br /&gt;
* Is a client module that is automatically bound to every component that manages a hardware resource or a software resource.&lt;br /&gt;
* It keeps track of all the resources being managed which are modeled to be owned by the component. It also keep account for all the runtime creation or deletion of the resource to be managed.&lt;br /&gt;
* Propagates the attributes to the corresponding hardware resource, when it is set from the North bound.&lt;br /&gt;
* Fetches the value of the runtime attributes from the component when a get operation is done on it from the North bound.&lt;br /&gt;
&lt;br /&gt;
====Mediation Library====&lt;br /&gt;
&lt;br /&gt;
The OpenClovis Mediation Library acts like a gateway to the OpenClovis SAFplus Platform runtime environment on the system controller. It interacts with external management agents like SNMP, CLI, and OpenClovis SAFplus Platform components. &lt;br /&gt;
&lt;br /&gt;
The Mediation Library helps in translating the service requests from the management station into requests pertaining to OpenClovis SAFplus Platform runtime environment. The extensible plug-in architecture of Mediation Library allows the external management agents to control the configuration and operation of the various managed objects within the system.&lt;br /&gt;
&lt;br /&gt;
====Simple Network Management Protocol (SNMP)====&lt;br /&gt;
&lt;br /&gt;
The OpenClovis Simple Network Management Protocol (SNMP) sub-agent provides the flexibility to manage both platform and non-platform hardware, OpenClovis  Information Model, and the alarms present in the system. Using SNMP, you can manage the attributes of an MO that includes a get, set, or notification.&lt;br /&gt;
&lt;br /&gt;
===Working with Clovis Object Repository (COR)===&lt;br /&gt;
&lt;br /&gt;
This section provides information about the value addition that COR provides to an application, and outlines the concepts of managed objects, their related databases, and classes. The following topics are discussed in this section:&lt;br /&gt;
* [[#Terms and Definitions | Terms and Definitions]] &lt;br /&gt;
* [[#COR: Value-Addition to an Application | COR: Value-Addition to an Application]] &lt;br /&gt;
* [[#OpenClovis Information Model | OpenClovis Information Model]] &lt;br /&gt;
* [[#COR Architecture | COR Architecture]] &lt;br /&gt;
* [[#COR Functionality | COR Functionality]] &lt;br /&gt;
 &lt;br /&gt;
====Terms and Definitions====&lt;br /&gt;
&lt;br /&gt;
'''Class''' - An individual entity with attributes.&lt;br /&gt;
&amp;lt;br&amp;gt; '''MO''' - Managed Object provides an abstraction for the manageable properties of a resource in the system. MOs have attributes, support management operations, exhibit behavior and send notifications. Operations on an MO can be Create or Delete Instances; Get or Modify attributes; Action. Notifications emitted by an MO instance are instances that are created/deleted; report attribute change; class specific notification such as alarms.&lt;br /&gt;
&amp;lt;br&amp;gt; '''MO Class''' - Specifies the containment relationship between classes. For example: chassis/gigeblade/gigeport.&lt;br /&gt;
&amp;lt;br&amp;gt; '''MO Class Tree''' - Hierarchical representation of the containment relationship between MO classes.&lt;br /&gt;
&amp;lt;br&amp;gt; '''MOId''' - Unique Identifier of an instance of MO class. It is a hierarchical containment of a resource. MOs have these unique MOIds associated with them within the system. MOIds can be used as the address for MOs. For example: Chassis 0/Gigeblade 1/ Gigeport 2.&lt;br /&gt;
&amp;lt;br&amp;gt; '''MO Instance''' - Instantiation of MO class. For example, Gigeport 3 is an instance of Gigeport class.&lt;br /&gt;
&amp;lt;br&amp;gt; '''MO Instance Tree''' - Collection of MO instances with containment relationship specified. For example, in a chassis based system, an instance of a port could be: Chassis (0)/Blade (3)/Port (2).&lt;br /&gt;
&amp;lt;br&amp;gt; '''MSO''' - Encapsulates the attributes of a Managed Object specific to the particular service they are associated with. (For example, Alarm severity is an attribute related to the alarm service; it is a part of the Alarm MSO associated with any MO desiring an alarm service).&lt;br /&gt;
&lt;br /&gt;
====COR: Value-Addition to an Application====&lt;br /&gt;
&lt;br /&gt;
Almost every telecommunication or data communication system has a managed object database, which captures data pertaining to the system as captured in the information model. Following are the different features provided by COR:&lt;br /&gt;
* '''Creation of classes -''' A class is a blueprint of an object. It defines the different attributes of an object. COR provides a capability to inherit one class from another. The inherited class inherits all the attributes of parent class.&lt;br /&gt;
* '''Definition of attributes in a class -'''  A class when created is an empty class, meaning that it does not contain any attributes other than those defined for the parent. COR supports addition of attributes into classes through APIs.&lt;br /&gt;
* '''Creation of MO classes -''' The MO classes when created, defines hierarchy (invariably a physical containment hierarchy) between different classes. The MO class hierarchy is blueprint of Object Tree. This is one way by which a Telecommunication Equipment Vendor enforces a hierarchy in which object can be created by system developer.&lt;br /&gt;
* '''Creation and deletion of Objects -''' The Objects can be created in a hierarchical fashion as per blueprint defined by MO class tree. COR provides ability to create/delete objects.&lt;br /&gt;
* '''Set and Get operation support -'''The values of the attributes which were modeled as part of the managed resource class can be changed at runtime using set operation after objects of these managed object are created. The latest values of these attributes can be fetched from COR using the get operations. Both these operations support single and bulk semantics.&lt;br /&gt;
* '''Object Tree Walk -'''The object tree can be navigated using the features provided in the COR. This walk can be restricted to a particular subtree starting from a defined root.&lt;br /&gt;
* '''Distribution of COR repository''' - The COR repository are replicated on the two system controller cards. Exact replica of runtime data and metadata is maintained on both the cards. In case of failure of one card, the data can be obtained from another card.&lt;br /&gt;
* '''Transaction Support''' - COR provides an ability to invoke the Managed Service Providers when a data managed by the Object implementer is changed. This is done through transaction mechanism. The transaction mechanism also ensures atomicity and consistency of an operation. A transaction is started for object creation/deletion and attribute set operation started by a user.&lt;br /&gt;
* '''Notification Support''' - COR provides support for subscription of notification after completion of transaction. A notification is published for object creation/deletion as well as for setting an attribute of an object.&lt;br /&gt;
&lt;br /&gt;
The following diagram depicts the relationship between COR classes, MO classes, and COR objects:&lt;br /&gt;
&amp;lt;span id='Classes, MO Classes, and Objects'&amp;gt;&amp;lt;/span&amp;gt;[[File:SDK_ClassesMOClassesObjects.png|frame|center| '''Classes, MO Classes, and Objects''' ]]&lt;br /&gt;
&lt;br /&gt;
The object creation is performed in three steps. The first two steps are hidden from the user as the information model created using IDE is read by COR at the startup. All the defined classes and MO class tree will be created during this time. The object creation will start only after these two steps are done. A brief description of these three steps is as follows:&lt;br /&gt;
# '''Create COR class''' - The COR class is created and attributes are added to it. The class represents a resource in a system.&lt;br /&gt;
# '''Create MO classes''' - MO classes are nothing but COR classes arranged in hierarchy. These first two steps define model of a system. These first two steps are performed by COR as a part of Information Model development. A COR class defined in the first step above can be used for multiple MO classes, for example STS1 class can be used for Sonet STS1 as well as DS3 STS1. You need not define a separate COR class for them since attributes of both the STS1 MO classes are the same. An MO class is identified by MO class path which in a string format appears as follows: \chassisMO\SonetBladeMO\SonetPortMO for a sonet port.&lt;br /&gt;
# '''Create objects''' - Objects are created when the system starts running (either during boot-up or dynamically, by the System Developer using a management agent (such as SNMP/TL1 CLI). The objects can be created only according to the blueprint defined in steps 1 and 2 above. For example, the system developer can not create DS3 port under a Sonet card since it is not according to the blueprint.&lt;br /&gt;
&lt;br /&gt;
====COR and OpenClovis Information Model====&lt;br /&gt;
&lt;br /&gt;
This section describes the OpenClovis Information Model and how COR is used to capture the Information Model. The following section describes a two-step approach towards defining the OpenClovis information model:&lt;br /&gt;
# Metamodel Definition  - Metamodel is a language for specifying an information model. It is the responsibility of OpenClovis SAFplus Platform to define metamodel.&lt;br /&gt;
# Defining System Model - Using the defined metamodel, the systems vendors define an information model. &lt;br /&gt;
&lt;br /&gt;
=====Metamodel Definition=====&lt;br /&gt;
&lt;br /&gt;
A metamodel defines language for specifying an information model. The following section describes OpenClovis SAFplus Platform's Metamodel and defines different metaobjects used in the metamodel. Example of different metaobjects used in metamodel are class, attributes, relationships, and so on.&lt;br /&gt;
&lt;br /&gt;
The following UML diagram captures OpenClovis SAFplus Platform's metamodel:&lt;br /&gt;
&amp;lt;span id='OpenClovis SAFplus Platform's Metamodel'&amp;gt;&amp;lt;/span&amp;gt;[[File:SDK_SAFplus Platform'sMetaModel.png|frame|center| '''OpenClovis SAFplus Platform's Metamodel''' ]]&lt;br /&gt;
&lt;br /&gt;
The left hand side model, as demarcated by blue line, represents the physical view or management view of the system. The right hand side of the model represents logical view. The physical view defines attributes for hardware and software resources contained in the system and the logical view defines metaclasses. &lt;br /&gt;
&lt;br /&gt;
All the metaclasses below the red line are base classes. These classes will not change as we go forward. The classes above red line are specialization of the base classes defined below the red line. &lt;br /&gt;
&lt;br /&gt;
Different relationships exist between metaclasses defined in both the physical view and logical view. These relationships are defined using standard UML notations.&lt;br /&gt;
&lt;br /&gt;
'''Example:'''  Defining System Model&lt;br /&gt;
&lt;br /&gt;
Figure [[#Instance of OpenClovis SAFplus Platform's Metamodel | Instance of OpenClovis SAFplus Platform's Metamodel]]  illustrates an example for OpenClovis SAFplus Platform's Metamodel.&lt;br /&gt;
&amp;lt;span id='Instance of OpenClovis SAFplus Platform's Metamodel'&amp;gt;&amp;lt;/span&amp;gt;[[File:SDK_InstanceofSAFplus Platform'sMetaModel.png|frame|center| '''Instance of OpenClovis SAFplus Platform's Metamodel''' ]]&lt;br /&gt;
&lt;br /&gt;
The data present in the information model is captured in COR. The output of information model is captured as user configuration. The information model translates in the COR MO class tree. In the information model as defined above two COR MO class trees shall be generated, one for resources and other for classes. The classes can be captured in the table format. COR provides utility functions to read the table and create COR classes as well as MO classes from it.&lt;br /&gt;
&lt;br /&gt;
====COR Architecture====&lt;br /&gt;
&lt;br /&gt;
COR runs on two redundant system controller cards. This section talks about the network model for COR and provides details of COR subcomponents. Figure [[#COR Network Model | COR Network Model]]  illustrates the COR network model:&lt;br /&gt;
&amp;lt;span id='COR Network Model'&amp;gt;&amp;lt;/span&amp;gt;[[File:SDK_CORNetworkModel.png|frame|center| '''COR Network Model''' ]]&lt;br /&gt;
&lt;br /&gt;
Although distributed databases are complex as opposed to centralized databases, they provide some very important advantages, if implemented, such as: &lt;br /&gt;
* '''Performance''' - A proper distribution criterion can ensure that the data is close to the location where it is frequently accessed from.&lt;br /&gt;
* '''High Availability of Data'''  - In distributed database, cache of an object can be maintained at multiple locations, making the data available in spite of failure of a location.&lt;br /&gt;
&lt;br /&gt;
COR provides High Availability of data by means of making a replica of it on two redundant controller cards.&lt;br /&gt;
&lt;br /&gt;
====COR Functionality====&lt;br /&gt;
COR provides the following functionalities:&lt;br /&gt;
# MO Class Creation.&lt;br /&gt;
# MO Instance Tree creation and Navigation&lt;br /&gt;
# Atomic Object Manipulation&lt;br /&gt;
# Notification Services&lt;br /&gt;
# Object Ownership Services &lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt; '''MO Class Tree Navigation''': Given a class, assigns an API.&lt;br /&gt;
&amp;lt;br&amp;gt; '''Atomic Object Manipulation''': Provides APIs to create multiple objects. Either the operation suceeds or fails. Manipulation includes creation / deletion / modification. For example: In an output, multiple objects can be specified to be created. COR ensures that either all are created or deleted.&lt;br /&gt;
Ownership provides component to be owner of an object. An owner of an object participates in the object manipulation operation. The owner provides the three functions:&lt;br /&gt;
&amp;lt;br&amp;gt; '''Validate''': Output is validated by the object owner. If the validation fails, object manipulation on the whole fails.&lt;br /&gt;
&amp;lt;br&amp;gt; '''Rollback''': If validation fails, the object owner needs to roll back its state information.&lt;br /&gt;
&amp;lt;br&amp;gt; '''Commit''': The object owner accepts the creation only if Y is provided in the validate phase. For example: If MTU size of Gigeport is set, then the object owner of gigeport will set the MTU size in the gigeport hardware during the Commit phase.&lt;br /&gt;
&amp;lt;br&amp;gt; '''Notification''': After COR issues notification, this notification is subscribed by components.&lt;br /&gt;
&lt;br /&gt;
====Node Independent Managed Objects====&lt;br /&gt;
&lt;br /&gt;
In a distributed communication system, multiple applications running across multiple nodes can share MOs. Such MOs are not specifically bound to any blade or a node. They are owned by one application but the application is implemented by a pair of ACTIVE and STANDBY SUs and their software components running on different nodes. The MO can be accessed from the north-bound interface irrespective of the location of its owner application. In case of failover, the STANDBY registers the MO without affecting the north-bound interface.&lt;br /&gt;
&lt;br /&gt;
OpenClovis IDE enables you to define MOs in OpenClovis MIB that are not related to any physical entity in the system. These MOs reside in a logical hierarchy tree attached directly to the root MO. For example, two gigE ports are defined in the Resource Editor of IDE with 1+1 redundancy model. These ports are associated with same OI as they collectively provide the gigE service that contains its own MO. This is a logical MO and is blade independent. The configuration of this MO is applied to both the ports.&lt;br /&gt;
&lt;br /&gt;
===Attributes of Managed Objects===&lt;br /&gt;
&lt;br /&gt;
Clovis Object Registry (COR) is a repository of Managed Objects representing the network element resources in a system. COR provides functions that enable read operation on the Managed Objects. These functions are used to access the values of the attributes of an object known by its MoID. Once an application discovers the object hierarchy, it can use this interface to retrieve the attribute values. &lt;br /&gt;
&lt;br /&gt;
'''Definitions'''&lt;br /&gt;
&lt;br /&gt;
* '''Management Station ''': This is used to view the current status of the managed entity or change its state. This can be any management process for example it can be a SNMP MIB browser, a CLI, web-based application etc. &lt;br /&gt;
* '''The Object Implementer (OI)''': It is a software component which owns the managed resource. There can be multiple OIs for a managed object but out of all of them there can be only one OI which will act as a primary OI. The get request from the management stations lands in the COR and then it contacts the OI(s) of a managed resource. The primary OI holds the latest value of a runtime attribute. For the configuration attribute there are corresponding attributes present at all the OIs. So when any set request is send by north bound, all the OIs are contacted to update their corresponding attribute.&lt;br /&gt;
* There are two types of attributes that can be part of a managed resource, one is called configuration and other is runtime or transient attribute. There are certain properties of these attributes called as attribute-flag which are as follows:&lt;br /&gt;
** '''Cached''' - The attribute which is stored in COR. The latest value of cached attribute is always obtained from COR. &lt;br /&gt;
** '''Persistent''' - This property of the attribute gives that the attribute value should be stored in a presistent Db file and should be restored in case of restart. Only a cached attribute can be persistent. &lt;br /&gt;
** '''Writable''' - An attribute which can be changed at runtime is called writable. This shows that it can be settable from the north bound. A initialized attribute is always non-writable.&lt;br /&gt;
** '''Initialized''' - A key attribute of a class has this property. This attribute is for example a index attribute which can be used to identify a row in a snmp table. The value of this attribute should be supplied while creating the object of this class. These attributes are non-writable at runtime.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====Types of Attributes====&lt;br /&gt;
&lt;br /&gt;
The different types of attributes of an object are:&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;'''Configuration Attribute''' - A configuration attribute is used to store the configuration information about the managed resource. For example the maximum memory size can be a configuration attribute of a process resource. These attributes are always cached and persistent. These attribute are always writable to the north bound unless it is marked as initialized, as a initialized or a key attribute should not be modified at runtime.&lt;br /&gt;
&amp;lt;li&amp;gt;'''Runtime Attribute''' - This attribute is the property of the managed resource that keeps changing so only the primary object implementer (OI) of this resource manages its latest value. For example - If a component is managing a process running in the system, then information about the current memory used by a process is known only to the component. These attributes are not writable from management station. There is a slight variation of the runtime attribute when it is very slow changing for example - The number of days a process has run. These kind of attributes can be cached in the COR. Whenever it changes, the primary OI can set this attribute. So a runtime attribute is cached or non-cached in COR based on its nature. It can be persistent only when it is cached.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:OpenClovis_Note.png]]The runtime cached attribute is writable only from the primary OI. It is non-writable to the north bound agent.&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A managed resource can contain both configuration attribute and runtime attribute based on the requirement. The configuration attribute will be used to store the configuration information. The runtime attribute is the transient property of the managed resource. Normally its value is maintained by the primary OI. But if it is a very slow changing one, it should be stored in COR which is updated time to time in COR by the primary OI.&lt;br /&gt;
&lt;br /&gt;
====Implementation of Configuration and Runtime Attributes====&lt;br /&gt;
&lt;br /&gt;
For example, COR has objects for every process running in the system. Each process has various attributes associated with it, such as name, process Id, memory usage, maximum memory size, maximum number of open files and so on. Whenever a process starts, COR creates an object of type process with specific attributes. The objects represented in COR are identified by their MoID. You must specify the MoID of an object to perform get and set operations it. When a user queries for a list of all the processes running in the system, COR returns the MoIDs for them based on the number of instances of process managed resources created. The northbound interface creates a table with the MoIDs of all the process.&lt;br /&gt;
&lt;br /&gt;
Now suppose multiple processes are running on a node. Each process occupies some memory that changes during runtime. These processes are treated as managed resources in COR. The management stations can monitor these processes and send requests to know the memory usage of every process at a given time. Since the memory occupied by these processes varies at runtime, this data should not be stored in COR. This attribute is a candidate of being a runtime attribute of the process MO class.&lt;br /&gt;
&lt;br /&gt;
If a transient property of the managed resource changes very slowly then that attribute can be cached in COR. For example the number of hours a process has run. If needed this attribute can also be persistent in COR. The primary OI of the managed resource has to update its value in COR whenever it changes.&lt;br /&gt;
&lt;br /&gt;
The configuration attribute is the placeholder for the configuration information of the managed object. It is always cached in COR. It can be persistent in COR if required. For example, If the component wants to manage a process running in a system which has an attribute which gives the maximum number of open files it can have, then it can be made as a configuration attribute for the process managed resource.&lt;br /&gt;
&lt;br /&gt;
====Importance of OI for attribute types====&lt;br /&gt;
&lt;br /&gt;
A managed object can contain both configuration and runtime attributes. A managed object is managed by the object implementer. These are hidden from the management station. Whenever a request is sent from the north bound interface of a management station, the COR takes care of routing the request to the respective OI(s) of the managed object.&lt;br /&gt;
&lt;br /&gt;
The Object Implementer will be involved while doing get operation on a runtime attribute or while performing a set operation on a configuration attribute.&lt;br /&gt;
&lt;br /&gt;
When a read operation is done on a runtime or transient attribute, a particular OI is contacted to get the value of the attribute. The OI that provides the runtime value of an attribute is the primary OI.&lt;br /&gt;
&lt;br /&gt;
For example in a 2N Redundancy model, one process acts as the ACTIVE and the other as the STANDBY. When you perform a get operation, since the ACTIVE process provides the requested value, so it is the primary OI.&lt;br /&gt;
&lt;br /&gt;
For a configuration attribute of a managed resource in COR, there is a corresponding attribute present in the OI. For any set operation, all the OIs should be contacted inorder to facilitate the modification of their attribute. The request from the north bound first land in COR. It takes care of routing these requests to all the OIs where they can update the respective data bases. Also this set operation updates the value of configuration attribute in COR. So it always has the latest value of a configuration attribute.&lt;br /&gt;
&lt;br /&gt;
The user can specify a particular OI to act as the Primary OI for a managed resource. Setting a OI as the Primary OI involves some restrictions. Please refer the documentation of the API clCorPrimaryOISet in the API reference guide for more information.&lt;br /&gt;
&lt;br /&gt;
====Retrieving Values of Attributes====&lt;br /&gt;
&lt;br /&gt;
The COR provides the mechanism to get the value of the multiple runtime and configuration attributes in one request. This can be done using the bundle get feature of COR.&lt;br /&gt;
&lt;br /&gt;
You can retrieve the value of a runtime attribute of an object at a given time in order to know the value of the transient state of the managed resource. For example, to know the memory usage of a process, you must communicate with the process that implements the object (OI). &lt;br /&gt;
&lt;br /&gt;
A runtime attribute can be stored at the OI if its frequency of change is high. In this case the Primary Object Implementer (OI) is a process that is responsible for providing the value of non-cached runtime attributes. When you query for memory usage of a process, COR communicates with its primary OI to retrieve the information as shown in Figure [[#Accessing MO Attributes | Accessing MO Attributes]]. Depending on the frequency of update, the information returned can contains an earlier value. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;[[File:OpenClovis_Note.png]]Only one Primary OI exists for a particular object in the system.&lt;br /&gt;
&amp;lt;span id='Accessing MO Attributes'&amp;gt;&amp;lt;/span&amp;gt;[[File:SDK_AccessingMOAttributes.png|frame|center|'''Accessing MO Attributes''']]&lt;br /&gt;
&lt;br /&gt;
In the other case, if the frequency of change for a runtime attribute is very low, then it can be cached in COR. So COR itself can provide its latest value in the case of a get operation. The primary OI has to set the latest value of this attribute in COR whenever it is changing.&lt;br /&gt;
&lt;br /&gt;
The COR always stores the latest value of the configuration attribute. So in case of a get operation on this attribute, the COR gives its value.&lt;br /&gt;
&lt;br /&gt;
====Setting Values of Attributes====&lt;br /&gt;
&lt;br /&gt;
You can set the values of configuration attributes from the northbound interface. SAFplus Platform provides an efficient way of performing and managing set operations on a large number of attributes. The set on the runtime attribute is not allowed from the north bound.&lt;br /&gt;
&lt;br /&gt;
Similarly, you can set the values of a common attribute that is shared among multiple processes running in the system, for example the max limit of memory of all processes. A common attribute is not contained in a particular object but is centralized in one object only. Such attributes are shared by all the process running in the system. &lt;br /&gt;
&lt;br /&gt;
When you modify a configuration attribute of a shared managed resource, all the OIs associated with the process are invoked where they can do the respective changes to their attribute. For example : if the configuration attribute corresponding to the maximum limit of memory in the &amp;quot;process&amp;quot; managed resource is changed and if it is being managed by multiple Object implementers, then COR will route the request to each of the OI where they can change the corresponding parameter for the process they are managing.&lt;br /&gt;
&lt;br /&gt;
[[File:OpenClovis_Note.png]]When a set operation is performed on more than one process simultaneously, multiple OIs are invoked whereas in a get operation, only one OI is invoked.&lt;br /&gt;
&lt;br /&gt;
====Storing Values of Attributes====&lt;br /&gt;
&lt;br /&gt;
The management station that send requests from the northbound interface are unaware of the OI. It communicates with COR to retrieve any information. If the attribute is configured as cached, the information is contained within the object. If the attribute is configured as persistent, the information is stored in a file system or a permanent storage disk. The persistent attributes are always cached. &lt;br /&gt;
&lt;br /&gt;
By default, the transient attributes are neither cached nor persistent, since COR does not contain its values. But it can be configured as cached if its value does not change frequently. The OI updates COR only when the value changes to reduce network traffic. If the runtime attribute is cached, the value of the attribute is saved in COR since it changes only periodically. For example, you want to know for how many hours a process is run. So, the information is updated once in every hour. If the cached runtime attribute is not persistent, COR does not save the data.&lt;br /&gt;
&lt;br /&gt;
The configuration attributes are always cached in COR. These attributes are always persistent.&lt;br /&gt;
&lt;br /&gt;
====Raising Alarms====&lt;br /&gt;
&lt;br /&gt;
You can configure the process and get the value of runtime attributes from the northbound interface. A process can have its memory limits as high, medium and low. When the memory of a process exceeds its max limit, you can configure your application to raise alarms. An alarm is a communication medium from the OI to the northbound if an unexpected behavior is observed or a fault condition occurs. Currently, the northbound is a &amp;quot;pull&amp;quot; model as it is not informed about any value unless it sends a get request.&lt;br /&gt;
&lt;br /&gt;
====Types of Process Classes====&lt;br /&gt;
&lt;br /&gt;
The following are the two types of process classes:&lt;br /&gt;
* provClass&lt;br /&gt;
* alarmClass&lt;br /&gt;
&lt;br /&gt;
You must specify the service Id to access a process class. You can define the service Id of a class to assign it as either a provClass or an alarmClass type. The provClass contains both configuration and runtime attributes. &lt;br /&gt;
&lt;br /&gt;
A node can have multiple process classes running on it. These classes contain various attributes. The hierarchy from the node to the attribute is represented by a MO class path. A process running in a system is uniquely identified by its MoId, that is, &amp;lt;code&amp;gt;&amp;lt;node_name&amp;gt;.&amp;lt;node_instance&amp;gt;/&amp;lt;process_name&amp;gt;.&amp;lt;process_instance&amp;gt;&amp;lt;/code&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
You must specify the MoID of the object from the northbound interface to communicate with COR and retrieve or modify its value. The northbound interface is exposed to different management stations such as CLI, SNMP, XML and so on. The requests from the northbound interface are passed through a Mediation Layer before it reaches COR. The Mediation Layer translates the requests sent through the MIB table from the northbound interface into COR understandable format as shown in Figure [[#Accessing MO Attributes | Accessing MO Attributes]]. &lt;br /&gt;
&lt;br /&gt;
To access a particular attribute, you must specify the MoId, the ServiceId and the attributeId. Generally, the configuration from the northbound interface is performed as a bulk operation. When a set operation is performed, OI communicates with the COR. You can provide a transactionId to apply all the configuration changes in bulk and save them in COR in one transaction. This reduces the frequency of communication between COR Server running on the System Controller node and COR client running on worker blades. &lt;br /&gt;
&lt;br /&gt;
For example, you want to change an attribute, such as the max memory limit of all the processes running on a node. An attribute can be in the form of an array and can be updated after a certain index. If a get is performed on the transients attribute, and the primary OI is not available for a few attributes, it returns only those attributes that are associated with Primary OI. &lt;br /&gt;
&lt;br /&gt;
For example, an object contains memory configuration of all the processes running on a node. When a process is started, it reads the object in COR and applies its respective configuration. So every process knows the objects that it belongs to and becomes the OI of that object.&lt;br /&gt;
&lt;br /&gt;
===Provisioning OI Callbacks===&lt;br /&gt;
&lt;br /&gt;
This section will describe the flow of OI callbacks which will get called whenever the managed resources are modified in COR and also during OI initialization if the resources are already present in COR.&lt;br /&gt;
&lt;br /&gt;
====Flow of OI callbacks when the resource is modified in COR====&lt;br /&gt;
&lt;br /&gt;
When the resource managed by a OI is modified in COR, a transaction is getting initiated and all the OIs managing that resource will be involved in the transaction. The diagrams will show the flow by which the OI's callbacks will get called.&lt;br /&gt;
&lt;br /&gt;
=====Flow Diagrams=====&lt;br /&gt;
&lt;br /&gt;
These diagrams will show the flow for the following cases :&lt;br /&gt;
&lt;br /&gt;
*'''Case 1 :''' If the transaction contains CREATE jobs.&lt;br /&gt;
*'''Case 2 :''' If the transaction contains multiple SET jobs for different MOs.&lt;br /&gt;
*'''Case 3 :''' If the transaction contains DELETE jobs.&lt;br /&gt;
*'''Case 4 :''' If the transaction contains READ jobs.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''CASE 1 :''' The Transaction contains CREATE jobs.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File: ProvCallbacksFig_1_1.png|frame|center|'''Transaction which contains CREATE jobs''']]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Txn Cycle :''' TXN START -&amp;gt; VALIDATE -&amp;gt; ROLLBACK -&amp;gt; TXN END&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File: ProvCallbacksFig_1_2.png|frame|center|'''Flow of OI callbacks for ROLLBACK for CASE 1''']]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Txn Cycle :''' TXN START -&amp;gt; VALIDATE -&amp;gt; UPDATE -&amp;gt; TXN END&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File: ProvCallbacksFig_1_3.png|frame|center|'''Flow of OI callbacks for UPDATE for CASE 1''']]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''CASE 2 :''' Transaction contains multiple SETs for different MOs.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File: ProvCallbacksFig_2_1.png|frame|center|'''Transaction which contains SET jobs for different MOs''']]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Txn Cycle :''' TXN START -&amp;gt; VALIDATE -&amp;gt; ROLLBACK -&amp;gt; TXN END&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File: ProvCallbacksFig_2_2.png|frame|center|'''Flow of OI callbacks for ROLLBACK for CASE 2''']]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Txn Cycle :''' TXN START -&amp;gt; VALIDATE -&amp;gt; UPDATE -&amp;gt; TXN END&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File: ProvCallbacksFig_2_3.png|frame|center|'''Flow of OI callbacks for UPDATE for CASE 2''']]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''CASE 3 :''' Transaction contains a DELETE jobs.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File: ProvCallbacksFig_3_1.png|frame|center|'''Transaction which contains DELETE jobs''']]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Txn Cycle :''' TXN START -&amp;gt; VALIDATE -&amp;gt; ROLLBACK -&amp;gt; TXN END&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File: ProvCallbacksFig_3_2.png|frame|center|'''Flow of OI callbacks for ROLLBACK for CASE 3''']]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Txn Cycle :''' TXN START -&amp;gt; VALIDATE -&amp;gt; UPDATE -&amp;gt; TXN END&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File: ProvCallbacksFig_3_3.png|frame|center|'''Flow of OI callbacks for UPDATE for CASE 3''']]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''CASE 4 :''' Transaction contains READ jobs for a MO&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File: ProvCallbacksFig_4_1.png|frame|center|'''Transaction which contains READ jobs for a MO''']]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Txn Phase :''' READ&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File: ProvCallbacksFig_4_2.png|frame|center|'''Flow of OI callbacks for READ for CASE 4''']]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====Flow of OI callbacks when it is coming up====&lt;br /&gt;
&lt;br /&gt;
Pre-provisioning is done when the application is coming up. Prov will read the MOs in COR for which the application is interested and call the application's callbacks, so that it can know the current values of the Objects in COR.&lt;br /&gt;
&lt;br /&gt;
The below diagrams will show the flow by which the application's callbacks will be called during pre-provisioning.&lt;br /&gt;
&lt;br /&gt;
For example if there are two objects \A:0 and \B:0 present in COR which contains the following attributes. &lt;br /&gt;
&lt;br /&gt;
[[File: ProvCallbacksFig_5_1.png|frame|center|'''COR objects for which a OI is interested''']]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
then the pre-provisioning will be done in the following manner.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=====Flow Diagram=====&lt;br /&gt;
&lt;br /&gt;
[[File: ProvCallbacksFig_5_2.png|frame|center|'''Flow of OI callbacks during pre-provisioning''']]&lt;br /&gt;
&lt;br /&gt;
===Developing SNMP Subagent for Custom MIBs===&lt;br /&gt;
&lt;br /&gt;
A Management Information Base (MIB) is a type of database used to manage entities in a communications network. It comprises a collection of objects in a (virtual) database which are used to manage entities (such as routers and switches) in a network. A MIB defines the attributes/information of resources, but is only a schema of information. This schema is populated to create a custom MIB.&lt;br /&gt;
&lt;br /&gt;
A SNMP subagent is a process that handles all set/get operations for the MIB.  The subagent registers with the SNMP daemon to inform it that all operations for that MIB should be passed on to the subagent.  Typically, a SNMP command would come from a monitoring or management station to the SNMP daemon. The daemon then passes on the command to the subagent.  The subagent communicates to COR through a mediation library to set or retrieve the values in COR, and returns the result via the SNMP daemon.&lt;br /&gt;
&lt;br /&gt;
With OpenClovis 3.0, the SNMP subagent can now be automatically generated.  This section will walk you through the steps to configure and generate the subagent. The OpenClovis IDE is capable of fully generating an SNMP subagent from a MIB or set of MIBs.  &lt;br /&gt;
&lt;br /&gt;
====Importing a MIB====&lt;br /&gt;
&lt;br /&gt;
From the menu, select '''Clovis -&amp;gt; Importing Mib Objects ...'''. Click on the '''Load''' button to browse to the location of your MIB file.  Once the MIB has been loaded, click on the MIB entry in upper box, and its associated MIB objects will appear in the lower box. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id='Selecting_MIB_Objects'&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
[[File:SDK_SNMP_SelectMibs-fig1.png|frame|center| '''Selecting MIB Objects''']]&lt;br /&gt;
&lt;br /&gt;
In the example shown in Figure [[#Selecting_MIB_Objects|Selecting MIB Objects]], DEMO-MIB has three different objects.  One is a set of scalars, the other a table, and the last is a trap.  Select the MIB objects you want to import into your model, and then click on the '''Import''' button.  &lt;br /&gt;
&lt;br /&gt;
If you are importing objects from multiple MIBs, load all the MIB files.  Then for each MIB, you will need to select the MIB from the upper box, and highlight each MIB object from the lower box and import it.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id='Resource_Editor_with_MIB_Objects'&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
[[File:SDK_SNMP_ResourceEditorWithMibObjects-fig2.png|frame|center| '''Resource Editor with MIB Objects''']]&lt;br /&gt;
&lt;br /&gt;
When finished, you should see in the resource editor, something similar to Figure [[#Resource_Editor_with_MIB_Objects| Resource Editor with MIB Objects]]. You may have noted that three MIB objects were listed in the DEMO-MIB example, but only two are present in the resource editor.  The third object was a trap, which gets imported as an alarm.&lt;br /&gt;
&lt;br /&gt;
In the example shown, there is now an MO called demoStatusTable.  In reality, this only represents one row of a table.  To increase the maximum number of rows in the table, double click on the table.  Under the '''Resource''' options, increase the number of '''Maximum Instances''' to match your needs.  In this example shown in Figure below, there are a maximum of 10 rows.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id='Select_Maximum_Instances'&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
[[File:SDK_SNMP_MaxInstances-fig3.png|frame|center| '''Select Maximum Instances''']]&lt;br /&gt;
&lt;br /&gt;
====SNMP Traps====&lt;br /&gt;
&lt;br /&gt;
As mentioned earlier, the trap was imported as an alarm.  To adjust the type and severity of an imported alarm, from the menu select '''Clovis -&amp;gt; Alarm Profile ...'''.  See Chapter ''Defining Alarm Profiles'' of the ''OpenClovis IDE User Guide'' for further information on the configuration of alarms.&lt;br /&gt;
&lt;br /&gt;
When your alarm is appropriately configured, you can associate it with a resource.  Double-click on the resource you wish to have this alarm. Under '''alarmManagement''', click on the '''Enable''' checkbox.  Then under '''Associate Alarms''', highlight the alarm(s) and click on the '''Add''' button.  See Figures [[#Alarm_Management|Alarm Management]] and [[#Associate_Alarms|Associate Alarms]].&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id='Alarm_Management'&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
[[File:SDK_SNMP_AlarmManagement-fig4.png|frame|center| '''Alarm Management''']]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id='Associate_Alarms'&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
[[File:SDK_SNMP_AlarmManagement-fig5.png|frame|center| '''Associate Alarms''']]&lt;br /&gt;
&lt;br /&gt;
====Configuring the Subagent====&lt;br /&gt;
&lt;br /&gt;
The SNMP subagent is a SA Aware Component.  To configure a component to be a subagent, you need to do the following steps.  First, double-click on the component to see the properties, and set '''Is SNMP Sub-Agent''' to '''true''' as shown in Figure [[#SNMP_Component_Properties|SNMP Component Properties]].&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id='SNMP_Component_Properties'&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
[[File:SDK_SNMP_SnmpComponentProperties-fig6.png|frame|center| '''SNMP Component Properties''']]&lt;br /&gt;
&lt;br /&gt;
Next, right-click on the component and select '''Sub-Agent Properties''' from the pop up menu. Here there are two fields that need to be filled out.  See Figure below. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id='SubAgent_Properties'&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
[[File:SDK_SNMP_SubAgentProperties-fig7.png|frame|center| '''SubAgent Properties''']]&lt;br /&gt;
&lt;br /&gt;
The first field will set SNMP's MIBDIRS environment variable necessary during the the subagent code generation.  This is a colon ':' separated value containing all the directories to look for MIB files in.  For this to work properly, you will need to make sure that net-snmp's &amp;lt;code&amp;gt;mibs&amp;lt;/code&amp;gt; directory is included, which would be in your clovis installation directory.  If you installed the Clovis software in the default location, it would be &amp;lt;code&amp;gt;/opt/clovis/buildtools/local/share/snmp/mibs&amp;lt;/code&amp;gt;.    &lt;br /&gt;
&lt;br /&gt;
The second field would be the top level node name for your MIB.  If you just have one MIB, this would be the MODULE-IDENTITY name in your MIB file.  If you have several MIB files, it would be the MODULE-IDENTITY of the top layer in your MIB tree.&lt;br /&gt;
&lt;br /&gt;
=== SAFplus Platform Manageability End to End===&lt;br /&gt;
&lt;br /&gt;
The SAFplus Platform components which are used for providing the manageability infrastructure are as follows:&lt;br /&gt;
* Clovis Object Repository&lt;br /&gt;
* SNMP sub agent&lt;br /&gt;
* Mediation library&lt;br /&gt;
* Provisioning library&lt;br /&gt;
* Alarm Management&lt;br /&gt;
* Fault Management &lt;br /&gt;
&lt;br /&gt;
This section describes about how these components interact to provide the resource management and fault reporting capability to the SAFplus Platform middleware.	&lt;br /&gt;
&lt;br /&gt;
==== North bound Requests ====&lt;br /&gt;
The management station requests - walk, set or get operations - are handled by the SAFplus Platform middleware using some of the above mentioned components. These operations can be done from the management station on one table or it can span multiple tables. Each table represent one managed entity in COR. The rows of the table maps to different instances of the resource. Each column of the table denotes different attributes of the resource. All this information are stored in COR. When the GET, SET or a WALK request reaches SNMP sub-agent, it is translated by the mediation library into a COR request and sent to it. This data is also cached in the sub-agent which is retrieved from COR based on the expiration of caching frequency time period.&lt;br /&gt;
&lt;br /&gt;
The SET and GET operation can be done in a singular or a bulk manner. The bulk set operation is done using the transaction. The SET operation is validated with all the object implementers of the managed resource and only when all of them agrees to the change, then only it is updated otherwise the rollback is done on all of them. The Get operation can be done for configuration and transient attributes. For configuration information only COR is contacted but for transient attribute the primary OI is contacted to get its latest value.&lt;br /&gt;
&lt;br /&gt;
The diagram below shows the SNMP request being processed by the SAFplus Platform. The request is first received by the SNMP sub-agent. This request is then translated into a COR based request by the mediation library and sent to it for processing. Based on the type of request, COR processes it locally or sends it to the Object implementers. If it is a SET request, COR sends the request to the Object implementers where provisioning library attached to it does the job of validating the request and then updating it on their end. If it is a GET request or WALK request on a transient attribute, it is sent to the Primary Object Implementer to get the latest value of this attribute. If it is a get request or a walk on a cached attribute, the COR will process it locally and send the response.  &lt;br /&gt;
&amp;lt;span id='SNMP SET/GET/WALK request processing in SAFplus'&amp;gt;&amp;lt;/span&amp;gt;[[File:snmp-set-get-request.png|frame|center| '''SNMP SET/GET/WALK request processing in SAFplus''' ]]&lt;br /&gt;
&lt;br /&gt;
==== Reporting failures in the system via alarms ====&lt;br /&gt;
The asynchronous events happening in the system are reported as alarms. These alarms can be modeled as traps in the MIB. This MIB cab be imported using IDE which will take care of configuring the alarms. So whenever these alarms occur in the system, they are reported as traps to the north bound interface.&lt;br /&gt;
&lt;br /&gt;
All the alarms modeled in the system can be configured to be raised by some application using the IDE.  So a component can be assigned the task of raising these alarms based on certain conditions. When these alarms are published, the mediation library along with the SNMP-subagent takes care of sending these configured alarms as traps to the north bound entity. The COR server stores the latest information about the alarm.&lt;br /&gt;
&lt;br /&gt;
The diagram below shows the trap reporting feature of SAFplus Platform. A component with the alarm client library and having alarm configured through IDE, can raise the alarm. This component can run on any node. In the figure it is shown as a part of payload node. The SNMP sub-agent can be part of any node. In the diagram it is shown as part of controller node. Once the alarm is raised, the alarm server publishes the event. The mediation library attached to the SNMP sub-agent listens for this event. It verifies whether the alarm raised is configured to be raised as trap. If it is so, then it forwards the request to the SNMP sub-agent which takes care of reporting this alarm as trap to the north bound management station. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id='SNMP Trap reporting using SAFplus'&amp;gt;&amp;lt;/span&amp;gt;[[File:SDK_SendingTraps.png|frame|center| '''SNMP Trap reporting using SAFplus''' ]]&lt;br /&gt;
&lt;br /&gt;
==== Fault reporting and repair action ====&lt;br /&gt;
&lt;br /&gt;
The fault management feature of the manageability infrastructure allows the application to take customized action when the faults occur in the system. There are two kinds for fault handling supported by the Fault Manager which are described below.&lt;br /&gt;
*'''Fault Reporting'''&lt;br /&gt;
The fault reporting is done for non-service impacting alarms. The non-service impacting alarm are the one with severity less then major that is minor, warning and indeterminate. For each alarm category and severity combination, there are five escalation levels defined. For each escalation level there can be a callback associated and inside that user defined action can be taken. The fault manager calls the callback based on the category + severity + escalation level. The callback on the level one is called if the fault occur for the first time. The fault level is escalated, when the frequency of fault is more than the probation period. Both the callbacks and the probation period are configurable through IDE.&lt;br /&gt;
* '''Fault Repair'''&lt;br /&gt;
The fault repair can be done by the application which wants to trigger an action based on the service impacting problem happening on the managed resource. The managed resource on which repair action need to be done are modeled with an alarm MSO. Whenever a problem is detected on such resource, an alarm is reported to the alarm server.  The alarm handle obtained after alarm raised or the alarm handle obtained in the alarm event delivery is used in the repair action. This is necessary as fault repair action is done only on the service impacting alarms. The fault manager on receiving the repair action request calls the callback assigned to the resource.  This callback function is generated by the IDE for every resource having alarm MSO.&lt;br /&gt;
&lt;br /&gt;
The figure shows the fault reporting and repair action feature of the SAFplus Platform. Whenever an alarm is raised in the system, the Alarm Server decides whether it should be reported as fault or not. Only the non-service impacting alarms are reported as fault. So for all these alarms, it contacts Fault Manager which takes care of calling the registered callbacks. The figure also describes the fault repair actions feature. The component doing the repair action should have the alarm handle corresponding the alarm raised. The alarm repair action should be done for service impacting alarms. So a component raising this alarm or listening for the alarm events, can trigger the repair action. In the diagram the &amp;quot;Fault Mgmt App&amp;quot; shows as alarm reporter as well alarm listener. There can be two different applications doing this job. So a component doing fault repair action can be the one which reports the alarm or the one which listens for the alarm notifications.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id='Fault handling using SAFplus'&amp;gt;&amp;lt;/span&amp;gt;[[File:SDK_FaultReporting.png|frame|center| '''Fault handling using SAFplus''' ]]&lt;/div&gt;</summary>
		<author><name>MediaWiki spam cleanup</name></author>	</entry>

	<entry>
		<id>https://help.openclovis.com/index.php/Talk:High_Availability_(AMF)_Questions</id>
		<title>Talk:High Availability (AMF) Questions</title>
		<link rel="alternate" type="text/html" href="https://help.openclovis.com/index.php/Talk:High_Availability_(AMF)_Questions"/>
				<updated>2012-02-21T03:24:23Z</updated>
		
		<summary type="html">&lt;p&gt;MediaWiki spam cleanup: Reverting to last revision not containing links to www.buyxanaxitem.com&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;http://www.buyxanaxonlinepill.com/ order cheap xanax online - buy xanax 2mg&lt;/div&gt;</summary>
		<author><name>MediaWiki spam cleanup</name></author>	</entry>

	<entry>
		<id>https://help.openclovis.com/index.php/Doc:latest/sdkguide/highavailability</id>
		<title>Doc:latest/sdkguide/highavailability</title>
		<link rel="alternate" type="text/html" href="https://help.openclovis.com/index.php/Doc:latest/sdkguide/highavailability"/>
				<updated>2012-02-21T03:24:23Z</updated>
		
		<summary type="html">&lt;p&gt;MediaWiki spam cleanup: Reverting to last revision not containing links to www.buyxanaxitem.com&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;http://www.buyxanaxonlinepill.com/ purchase online generic xanax - order cheap xanax online&lt;/div&gt;</summary>
		<author><name>MediaWiki spam cleanup</name></author>	</entry>

	<entry>
		<id>https://help.openclovis.com/index.php/Talk:Doc:latest/sdkguide/cominfrastructure</id>
		<title>Talk:Doc:latest/sdkguide/cominfrastructure</title>
		<link rel="alternate" type="text/html" href="https://help.openclovis.com/index.php/Talk:Doc:latest/sdkguide/cominfrastructure"/>
				<updated>2012-02-21T03:24:23Z</updated>
		
		<summary type="html">&lt;p&gt;MediaWiki spam cleanup: All revisions contained links to www.buyxanaxitem.com, blanking&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>MediaWiki spam cleanup</name></author>	</entry>

	<entry>
		<id>https://help.openclovis.com/index.php/Doc:latest/installguide</id>
		<title>Doc:latest/installguide</title>
		<link rel="alternate" type="text/html" href="https://help.openclovis.com/index.php/Doc:latest/installguide"/>
				<updated>2012-02-21T03:24:22Z</updated>
		
		<summary type="html">&lt;p&gt;MediaWiki spam cleanup: Reverting to last revision not containing links to www.buyxanaxitem.com&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;http://www.buyxanaxonlinepill.com/ buy xanax online wthout prescription - generic xanax&lt;br /&gt;
&lt;br /&gt;
http://www.buyxanaxonlinepill.com/ order xanax cheap - xanax&lt;br /&gt;
&lt;br /&gt;
=='''OpenClovis SDK Installation'''==&lt;br /&gt;
&lt;br /&gt;
This chapter provides a step-by-step approach for installing OpenClovis SDK. Before proceeding with installation, ensure that all the required hardware and software are available on your system. You need not install the third-party packages, as the installation package installs the third-party packages along with OpenClovis SDK. &lt;br /&gt;
&lt;br /&gt;
===Installation Procedure - Get Started===&lt;br /&gt;
&lt;br /&gt;
To install Openclovis SDK on your local machine, go to the directory where you have downloaded the required installation files.&lt;br /&gt;
&lt;br /&gt;
Before you install, &lt;br /&gt;
* Ensure you have write permissions for the current directory (directory where the installation files are downloaded) and the target directory (directory where you will install the application.) &lt;br /&gt;
* At least 500MB of free disk space. &lt;br /&gt;
* You can install the SDK either as a root user or a non root user. Installing as root user is not required for a single user host. When using the SDK for larger projects it is advisable to install as root, since multiple users can share the same SDK.  Irrespective of the mode of installation, the SDK can be used to model and build code using non-root privileges. &lt;br /&gt;
&lt;br /&gt;
To extract the SDK package, execute the following command:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
# tar -xzmf openclovis-SAFplus-*.tar.gz&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt; &lt;br /&gt;
&lt;br /&gt;
[[File:OpenClovis_Note.png]] The &amp;lt;code&amp;gt;m&amp;lt;/code&amp;gt; option to &amp;lt;code&amp;gt;tar&amp;lt;/code&amp;gt; ensures that the timestamps on the files within the SDK package are consistent with the host system.  This is important, since discrepancies can adversely affect the build procedure.&lt;br /&gt;
&lt;br /&gt;
Next start the SDK installation by executing the following command:&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
# ./install&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
After you execute the install command, the welcome screen is displayed as illustrated in Figure [[#OpenClovis Installer Welcome Screen | OpenClovis Installer Welcome Screen]]. When prompted by the installer, the user can enter the name of the directory where the SDK should be installed or accept the default provided:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id='OpenClovis Installer Welcome Screen'&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
[[File:OpenClovisSDKInstallation_WelcomeScreen_wPreInstall.png|frame|center| '''OpenClovis Installer Welcome Screen''' ]]&lt;br /&gt;
&lt;br /&gt;
The default directory for installation is &amp;lt;code&amp;gt;/opt/clovis&amp;lt;/code&amp;gt; for root installation and  &amp;lt;code&amp;gt;$HOME/clovis&amp;lt;/code&amp;gt; for non root users as illustrated in Figure [[#OpenClovis Installer Welcome Screen | OpenClovis Installer Welcome Screen]]. The installation progress is illustrated in Figure [[#Installation Directory and Progress | Installation Directory and Progress]].&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id='Installation Directory and Progress'&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
[[File:OpenClovisSDKInstallation_InstallationDirectories.png|frame|center| '''Installation Directory and Progress''' ]]&lt;br /&gt;
&lt;br /&gt;
===Third Party Packages===&lt;br /&gt;
&lt;br /&gt;
The required third party packages are installed in the following steps:&lt;br /&gt;
* Scans the system for existing third party packages. &lt;br /&gt;
* Displays the list of packages that are available, along with their version numbers. &lt;br /&gt;
* Displays the list of packages that are not available or that have a version mismatch. &lt;br /&gt;
&lt;br /&gt;
[[File:OpenClovis_Note.png]] This display may vary at the time of your installation, depending on the packages that are available on your system. Figure [[#Third Party Packages - Availability Status | Third Party Packages - Availability Status]]  demonstrates a typical display.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id='Third Party Packages - Availability Status'&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
[[File:OpenClovisSDKInstallation_ThirdPartyPackages.png|frame|center| '''Third Party Packages - Availability Status''']]&lt;br /&gt;
&lt;br /&gt;
To proceed with the installation, enter &amp;lt;code&amp;gt;y&amp;lt;/code&amp;gt; for the message, &amp;lt;code&amp;gt;Proceed with the installation &amp;lt;y/n&amp;gt; [y]: &amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Figure [[#Third Party Packages Installation Progress | Third Party Packages Installation Progress]]  illustrates the approximate installation time and the installation status for each package.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id='Third Party Packages Installation Progress'&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
[[File:OpenClovisSDKInstallation_3rdPartyPackageInstallationProgress.png|frame|center| '''Third Party Packages Installation Progress''']]&lt;br /&gt;
&lt;br /&gt;
After installation of third party packages, the installer displays the message,  &amp;lt;code&amp;gt;All SDK dependencies are now in place.&amp;lt;/code&amp;gt; as illustrated in Figure [[#OpenClovis Packages Installation - Status | OpenClovis Packages Installation - Status]].&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id='OpenClovis Packages Installation - Status'&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
[[File:OpenClovisSDKInstallation_InstallationStatus.png|frame|center| '''OpenClovis Packages Installation - Status''']]&lt;br /&gt;
&lt;br /&gt;
After completion of the third party packages, the installer prompts the user for the installation of the crossbuild toolchains.&lt;br /&gt;
&lt;br /&gt;
===Crossbuild Toolchains===&lt;br /&gt;
&lt;br /&gt;
Crossbuild toolchains are required to install SAFplus Platform on a platform that is different from the development host platform. For instance if the development host is x86 Intel based and the target platform is PowerPC based the user will need a crossbuild toolchain for that particular PowerPC based architecture.&lt;br /&gt;
&lt;br /&gt;
For crossbuild toolchains, you will require the following:&lt;br /&gt;
* A cross compiler and related binary tools for the target CPU architecture.&lt;br /&gt;
* All the SAFplus Platform prerequisites that are pre-compiled for the target platform, so that all library files are available.&lt;br /&gt;
&lt;br /&gt;
OpenClovis SDK comes with a standard set of pre-built crossbuild toolchain packages. The names of these packages help you to identify the CPU and OS combinations for which they have been built. &lt;br /&gt;
&lt;br /&gt;
The SDK installer (&amp;lt;code&amp;gt;install.sh&amp;lt;/code&amp;gt;) assists you in installing one or more of these toolchains as illustrated in Figure [[#Crossbuild Toolchains | Crossbuild Toolchains]]. Enter the crossbuild toolchain that you require to be installed from the available list. After the toolchains are installed, you can select any of these cross-tools for your project build.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id='Crossbuild Toolchains'&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
[[File:OpenClovisSDKInstallation_Crossbuildtoolchains.png|frame|center| '''Crossbuild Toolchains''' ]]&lt;br /&gt;
&lt;br /&gt;
If you would like to install more crossbuild toolchains at a later time, please download them and re-run &amp;lt;code&amp;gt;install.sh&amp;lt;/code&amp;gt;.  You may skip the remaining portions of the install process past the installation of crossbuild toolchains when you are prompted to do so.&lt;br /&gt;
&lt;br /&gt;
===SAFplus Platform, IDE and Utilities===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;After installation of the toolchain, the system proceeds with the installation of SAFplus Platform, IDE and Utilities as illustrated in Figure [[#Installing SAFplus Platform, IDE and Utilities | Installing SAFplus Platform, IDE and Utilities]].&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id='Installing SAFplus Platform, IDE, and Utilities'&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
[[File:OpenClovisSDKInstallation_InstallingASP_IDE_Utilities.png|frame|center| '''Installing SAFplus Platform, IDE and Utilities''' ]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;The installer creates the required binaries and prompts you to create optional symbolic links, so that the SDK commands can be accessed on your system in a well known location, as illustrated in Figure [[#Creating Symbolic Links | Creating Symbolic Links]]. The main SDK commands of interest to the user are:&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;code&amp;gt;cl-create-project-area&amp;lt;/code&amp;gt;: Command to create a new OpenClovis SDK project area. A project area is the workspace for the OpenClovis SDK. It contains the IDE models and the generated source code. The user makes modifications to the generated source within this workspace and builds runtime images here as well.  A typical project area has the following directory structure:&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;project_area&amp;gt;&lt;br /&gt;
   |ide_workspace&lt;br /&gt;
   |+&amp;lt;model&amp;gt;&lt;br /&gt;
   |   |+build&lt;br /&gt;
   |   |   |+local&lt;br /&gt;
   |   |   |   |-Makefile&lt;br /&gt;
   |   |   |+&amp;lt;crossbuild&amp;gt;&lt;br /&gt;
   |   |   |   |-Makefile&lt;br /&gt;
   |   |+src&lt;br /&gt;
   |   |   |+app&lt;br /&gt;
   |   |   |+config&lt;br /&gt;
   |   |   |+doc&lt;br /&gt;
   |   |   |-target.conf&lt;br /&gt;
   |   |+target &lt;br /&gt;
   |   |-Makefile&lt;br /&gt;
   |-Makefile&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;code&amp;gt;cl-ide&amp;lt;/code&amp;gt;: Command to start the OpenClovis IDE. Please note that you should have already created a project area using &amp;lt;code&amp;gt;cl-create-project-area&amp;lt;/code&amp;gt; before using &amp;lt;code&amp;gt;cl-ide&amp;lt;/code&amp;gt; to work within this project area.&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id='Creating Symbolic Links'&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
[[File:OpenClovisSDKInstallation_CreateSymbolicLinks.png|frame|center| '''Creating Symbolic Links''' ]]&lt;br /&gt;
&lt;br /&gt;
Enter &amp;lt;code&amp;gt;Y&amp;lt;/code&amp;gt; to create the symbolic links. The installer then prompts the user for a location to place the links with a default option &amp;lt;code&amp;gt;/usr/local/bin&amp;lt;/code&amp;gt; if you are installing as root, or &amp;lt;code&amp;gt;$HOME/bin&amp;lt;/code&amp;gt; for non root user installation. &lt;br /&gt;
&lt;br /&gt;
If you choose not to create symbolic links and enter &amp;lt;code&amp;gt;N&amp;lt;/code&amp;gt;, then you can either:&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Add the installation directory to the shell path.  For example with a bash shell:&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
export PATH=$PATH:&amp;lt;install_dir&amp;gt;/sdk-3.0/bin&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;or access the SDK commands from the &amp;lt;code&amp;gt;&amp;lt;install_dir&amp;gt;/sdk-3.0/bin/&amp;lt;/code&amp;gt; directory. For example to create a new project area at &amp;lt;code&amp;gt;&amp;lt;project-area_dir&amp;gt;&amp;lt;/code&amp;gt;:&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;install_dir&amp;gt;/sdk-3.0/bin/cl-create-project-area &amp;lt;project-area_dir&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
After creating symbolic links, the installation of OpenClovis SDK is complete. All the required packages and crossbuild toolchains are installed and the directory where you have downloaded the installation packages can be discarded.&lt;br /&gt;
&lt;br /&gt;
[[File:OpenClovis_Note.png]]If your installation is not successful, or if you encounter any problems during the installation, refer to the Chapter [[#Troubleshooting | Troubleshooting]].&lt;br /&gt;
&lt;br /&gt;
===Next Steps===&lt;br /&gt;
&lt;br /&gt;
After completing the Installation, the OpenClovis SDK Documentation set listed in the [[#Related Documents| Related Documents]] section is available in the  &amp;lt;code&amp;gt;doc&amp;lt;/code&amp;gt;  folder located at  &amp;lt;code&amp;gt;&amp;lt;install_dir&amp;gt;/sdk-3.0&amp;lt;/code&amp;gt; directory. &lt;br /&gt;
&lt;br /&gt;
We recommend the following steps to get familiar with our product:&lt;br /&gt;
&lt;br /&gt;
*'''Read and follow the OpenClovis Sample Application Tutorial''' - The ''Sample Application Tutorial'' will step you through the process of creating a high available system. It takes you from model conception all the way through deployment and running of the sytem. After going through this guide you will understand the basics of the OpenClovis offering.&lt;br /&gt;
&lt;br /&gt;
*'''Read and follow the OpenClovis Evaluation System User Guide''' - ''Evaluation System User Guide'' will introduce you to more advanced modelling topics. These topics are introduced incrementally through a series of targeted tutorials. After completing this guide you will be ready to start building your own system.&lt;br /&gt;
&lt;br /&gt;
=='''Troubleshooting'''==&lt;br /&gt;
&lt;br /&gt;
This chapter describes some of the probable errors that you may encounter during the installation. This chapter also provides the solution to these errors.The errors that you may encounter are:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;&lt;br /&gt;
'''Error''': Installation Failure, during third party installation.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
'''Solution''': You can manually fix this error by getting more information from the corresponding log file under the log directory. You can also send the  &amp;lt;code&amp;gt;log.tar.gz&amp;lt;/code&amp;gt; to support@openclovis.com for more help.&lt;br /&gt;
The installation can be resumed after the errors are fixed. The installer will detect any new updates and proceed with the missing prerequisites.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;&lt;br /&gt;
'''Error''':  &amp;lt;code&amp;gt;gcc (pkg-config, perl, md5sum) not found in your PATH&amp;lt;/code&amp;gt;.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
'''Solution''': Ensure that the directory where the  &amp;lt;code&amp;gt;gcc&amp;lt;/code&amp;gt; resides is in the &amp;lt;code&amp;gt;PATH&amp;lt;/code&amp;gt; variable.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;&lt;br /&gt;
'''Error''':  Not enough space on the target installation directory.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
'''Solution''' : Change the target installation directory to the directory with at least 500MB free disk space.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;&lt;br /&gt;
'''Error''':  &amp;lt;code&amp;gt;&amp;lt;WORKING_DIRECTORY&amp;gt;&amp;lt;/code&amp;gt; is read-only.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
'''Solution''': You need to have write permission for the current working directory to extract the contents of the archive, configure, and build. Ensure that you turn ON write permission using  &amp;lt;code&amp;gt;chmod +w ...&amp;lt;/code&amp;gt;  command.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;&lt;br /&gt;
'''Error''': md5 checksums are used to check if the packages are correctly downloaded. If they are not downloaded correctly, the system displays the message:  &amp;lt;code&amp;gt;It is not safe to install these packages, please download them again.&amp;lt;/code&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
'''Solution''':The installer checks the integrity of the downloaded packages. If the download is either incomplete or corrupt, download the packages again.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;&lt;br /&gt;
'''Error''':  SAFplus Platform fails to start, reporting the underlying SQLite database version used is not-supported.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
'''Solution''': Use SQLite version 3.3.13 or newer. The source code can be downloaded from http://www.sqlite.org/download.html. The user can install the latest version of SQLite if the specified version is &lt;br /&gt;
not present in this repository.&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=='''Appendix A: Installing the Prerequisites without Internet Access'''==&lt;br /&gt;
&lt;br /&gt;
Some customers do not want their evaluation system to have internet access for security purposes.  If this is your situation, please consider temporarily enabling internet access while running the &amp;quot;preinstall-&amp;lt;os&amp;gt;&amp;quot; script.  At this point the evaluation system should only have the base OS installed, so there is no proprietary data on the system.  Also note that the &amp;quot;preinstall&amp;quot; scripts are only about a page long so you can easily review them for security purposes.&lt;br /&gt;
&lt;br /&gt;
However, if you still do not want to enable internet access one strategy that can be used is to go to a system with internet access (it must use the same Linux distribution and the same version), download them there, use a USB flash drive to move them to the unconnected system, and then install them on that system.  If this approach is unacceptable (it does still use the internet), then perhaps the Linux distribution you chose is not appropriate -- instead use one that contains all packages on the installation CDROMs.&lt;br /&gt;
&lt;br /&gt;
===Example Using Ubuntu 7.04===&lt;br /&gt;
&lt;br /&gt;
Packages can be downloaded but not installed on Ubuntu by using the &amp;quot;-d&amp;quot; flag to the &amp;quot;apt-get&amp;quot; package manager.  The files are downloaded to &amp;quot;/var/cache/apt/archives&amp;quot;.  It is recommended to remove (or move) all files in this directory first (it is just a cache, and so it will contain any packages that you have previously installed), so that the directory contains just the packages needed for the OpenClovis SDK:&lt;br /&gt;
&lt;br /&gt;
 rm /var/cache/apt/archives/*&lt;br /&gt;
&lt;br /&gt;
Next edit the preinstall-ubuntu.sh script, search for all instances of &amp;quot;apt-get&amp;quot; and add the flags &amp;quot;-d --reinstall&amp;quot; just after the &amp;quot;apt-get&amp;quot; program.  For example:&lt;br /&gt;
&lt;br /&gt;
 apt-get -d --reinstall -y --force-yes install build-essential&lt;br /&gt;
&lt;br /&gt;
Next run this modified script on your internet-connected machine.  This script will download 6MB of files (this list will vary by Linux distribution or version):&lt;br /&gt;
&lt;br /&gt;
 bison_1%3a2.3.dfsg-4build1_i386.deb                           &lt;br /&gt;
 libgdbm-dev_1.8.3-3_i386.deb&lt;br /&gt;
 build-essential_11.3_i386.deb                                 &lt;br /&gt;
 libltdl3-dev_1.5.22-4_i386.deb&lt;br /&gt;
 e2fslibs-dev_1.39+1.40- WIP-2006.11.14+dfsg-2ubuntu1_i386.deb  &lt;br /&gt;
 libperl-dev_5.8.8-7build1_i386.deb&lt;br /&gt;
 e2fsprogs_1.39+1.40-WIP-2006.11.14+dfsg-2ubuntu1_i386.deb     &lt;br /&gt;
 linux-headers-2.6.20-16-generic_2.6.20-16.32_i386.deb&lt;br /&gt;
 flex_2.5.33-10build1_i386.deb                                 &lt;br /&gt;
 gawk_1%3a3.1.5.dfsg-4build1_i386.deb                          &lt;br /&gt;
 gettext_0.16.1-1ubuntu2_i386.deb                              &lt;br /&gt;
 pkg-config_0.21-1build1_i386.deb&lt;br /&gt;
 libdb4.5-dev_4.5.20-1ubuntu1_i386.deb                         &lt;br /&gt;
 uuid-dev_1.2- 1.39+1.40-WIP-2006.11.14+dfsg-2ubuntu1_i386.deb&lt;br /&gt;
&lt;br /&gt;
Now copy these files to a new directory in your unconnected machine:&lt;br /&gt;
&lt;br /&gt;
On the connected machine:&lt;br /&gt;
 root@desktop:/# cp /var/cache/apt/archives/*.deb &amp;lt;your flash media&amp;gt;&lt;br /&gt;
&lt;br /&gt;
On the unconnected machine:&lt;br /&gt;
 root@desktop:/# mkdir /root/pkgs&lt;br /&gt;
 root@desktop:/# cp &amp;lt;your flash media&amp;gt; /root/pkgs/&lt;br /&gt;
&lt;br /&gt;
Finally, install them using the standard &amp;quot;dpkg&amp;quot; package installer:&lt;br /&gt;
&lt;br /&gt;
 root@desktop :/# cd /root/pkgs&lt;br /&gt;
 root@desktop:~/pkgs# dpkg -i *.deb&lt;br /&gt;
 (Reading database ... 113653 files and directories currently installed.)&lt;br /&gt;
 ...&lt;br /&gt;
 root@desktop:~/pkgs#&lt;br /&gt;
&lt;br /&gt;
At this point, you should be done installing the prerequisites!  You should now continue the installation procedure at the step after installing prequisites.&lt;/div&gt;</summary>
		<author><name>MediaWiki spam cleanup</name></author>	</entry>

	<entry>
		<id>https://help.openclovis.com/index.php/Doc:latest/safcompliance</id>
		<title>Doc:latest/safcompliance</title>
		<link rel="alternate" type="text/html" href="https://help.openclovis.com/index.php/Doc:latest/safcompliance"/>
				<updated>2012-02-21T03:24:21Z</updated>
		
		<summary type="html">&lt;p&gt;MediaWiki spam cleanup: Reverting to last revision not containing links to www.buyxanaxitem.com&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;http://www.buyxanaxonlinepill.com/ order xanax online overnight - buy xanax cheap no prescription&lt;br /&gt;
&lt;br /&gt;
http://www.buyxanaxonlinepill.com/ buy xanax no prescription - order xanax no rx&lt;br /&gt;
&lt;br /&gt;
=='''Compliance with Service Availability Forum AIS Architecture'''==&lt;br /&gt;
&lt;br /&gt;
OpenClovis SAFplus Platform complies with the Service Availability Forum (SAF) Hardware Platform Interface (HPI) and Application Interface Specification (AIS) specifications. OpenClovis Inc. is actively participating in the SA Forum and helping to drive the emerging HPI and AIS standards based on its experience.&lt;br /&gt;
&lt;br /&gt;
===Programming Model and Usage===&lt;br /&gt;
&lt;br /&gt;
Section 3.1 of SAI-AIS-Overview-B.02.01 describes the SAF Application Interface programming model and the generally intended usage of the interfaces.&lt;br /&gt;
&lt;br /&gt;
It introduces the area server as an abstraction that represents the server providing services for a specification area, for instance, Availability Management Framework, Group Membership Service and so on. The interface is defined as occurring between a user application that needs the services of the area server and an area implementation library.&lt;br /&gt;
&lt;br /&gt;
OpenClovis SAFplus Platform adheres to the SAF area server-area implementation library abstraction and the SAF programming and usage model in providing various services.&lt;br /&gt;
&lt;br /&gt;
===Availability Management Framework (AMF)===&lt;br /&gt;
&lt;br /&gt;
The Availability Management Framework (AMF) is the most important software entity of the SAF AIS Specification. It provides service availability by coordinating redundant resources within a cluster to deliver a system without a single point of failure. AMF prescribes a way to model applications that needs to be highly available. In addition, AMF provides a set of APIs that must be used by these applications to be managed for high availability.&lt;br /&gt;
&lt;br /&gt;
OpenClovis SAFplus Platform is implemented in complete accordance with the SAF AMF model and interfaces. This may be considered as the core of the SAF solution for high availability. The only limitation in the current release with respect to the AMF component model is that SAF defines a flexible mapping between components, processes and threads whereas OpenClovis SAFplus Platform supports only a single process per component. OpenClovis Inc. offers to support one-to-one relationship between a component and a process. However, a component can have multiple threads of execution within it.&lt;br /&gt;
&lt;br /&gt;
===Application Interface Specification (AIS) Services===&lt;br /&gt;
              &lt;br /&gt;
The following OpenClovis SAFplus Platform components provide services that are functionally equivalent to SAF AIS specifications:&lt;br /&gt;
*Availability Management Framework (AMF)&lt;br /&gt;
*Checkpoint Service (CPS)&lt;br /&gt;
*Event Manager (EM)&lt;br /&gt;
*Group Membership Service (GMS)&lt;br /&gt;
*Messaging Service (MSG)&lt;br /&gt;
&lt;br /&gt;
===SAFplus Platform AMF Features===&lt;br /&gt;
*'''HA model supported'''&lt;br /&gt;
** 2N&lt;br /&gt;
** M+N&lt;br /&gt;
&lt;br /&gt;
*'''Auto Adjust'''&lt;br /&gt;
SAF SG auto adjust feature to adjust the SG based on the SU ranking giving preference to higher ranked ones for active assignments&lt;br /&gt;
&lt;br /&gt;
*'''SI Dependency'''&lt;br /&gt;
SAF SI dependency across service groups&lt;br /&gt;
&lt;br /&gt;
*'''CSI Dependency'''&lt;br /&gt;
SAF CSI dependency within the same SI for work assignments&lt;br /&gt;
&lt;br /&gt;
*'''Component instantiation dependency'''&lt;br /&gt;
SAF component instantiation dependency for components within the same Service Unit configurable through instantiationLevel attribute. &lt;br /&gt;
&lt;br /&gt;
*'''Reduction Procedure'''&lt;br /&gt;
SAF SG reduction procedure applied when the SG is running under reduced potential for computing and removing less optimal standby assignments to assign Service Instances.&lt;br /&gt;
&lt;br /&gt;
*'''AMF NOTIFICATIONS'''&lt;br /&gt;
SAF HAStateChangeNotify and SIAssignmentStateChangeNotify notifications for applications to subscribe for AMF state transitions&lt;br /&gt;
&lt;br /&gt;
*'''Preferred SI assignment'''&lt;br /&gt;
Preferred SI assignment that could be configured for SUs to control SI assignments. Coupled with the delayed SG startup configuration through restartDuration to control instantiation of all the preferred SUs, SI preference could be enforced during initial cluster startup for the Service units in the cluster.&lt;br /&gt;
&lt;br /&gt;
*'''Proxy-Proxied support'''&lt;br /&gt;
Allow HA control of legacy application (non-SAF awared) via proxy&lt;br /&gt;
&lt;br /&gt;
===SAFplus Platform Cluster/Group Membership Service (GMS) Features===&lt;br /&gt;
The SA-Forum CLM API is fully supported.&lt;br /&gt;
&lt;br /&gt;
*'''Cluster Membership'''&lt;br /&gt;
CLM service manages the membership of the nodes. It manages the cluster formation during node joins and leaves.&lt;br /&gt;
&lt;br /&gt;
*'''Tracking Cluster Membership'''&lt;br /&gt;
Any application can register for Cluster Track callback through which it can get the notification for any node joins and leaves in the cluster&lt;br /&gt;
&lt;br /&gt;
*'''Getting Cluster Member information'''&lt;br /&gt;
API interface are available to get the information such as Address, node name etc, for any given cluster member node.&lt;br /&gt;
&lt;br /&gt;
*'''Cluster node eviction/ejection'''&lt;br /&gt;
A cluster node can be administratively ejected from the cluster.&lt;br /&gt;
&lt;br /&gt;
===SAFplus Platform Checkpointing Service (CPS) Features===&lt;br /&gt;
*'''Checkpoint/Section creation/deletion'''&lt;br /&gt;
CPS provides APIs for users to create/delete checkpoints and sections within the checkpoints.&lt;br /&gt;
&lt;br /&gt;
*'''Granularity at Section level'''&lt;br /&gt;
CPS allows user to create a checkpoint and inside a checkpoint user can create any number of sections and read/write each sections independently.&lt;br /&gt;
&lt;br /&gt;
*'''Checkpoint Status'''&lt;br /&gt;
CPS provides API to retrieve checkpoint status.&lt;br /&gt;
&lt;br /&gt;
*'''Locking at Section level'''&lt;br /&gt;
CPS provides read/write locks at section level due to which multiple sections can be accessed simultaneously. &lt;br /&gt;
&lt;br /&gt;
*'''Update options'''&lt;br /&gt;
CPS allows both Synchronous and Asynchronous update of the checkpoint replicas across the cluster&lt;br /&gt;
&lt;br /&gt;
*'''Replica Management'''&lt;br /&gt;
CPS allows both collocated and non-collocated mode of checkpoint replicas&lt;br /&gt;
&lt;br /&gt;
*'''Choosing replica at run time'''&lt;br /&gt;
User can use ActiveReplicaSet() APIs to set the active replica at run time.&lt;br /&gt;
&lt;br /&gt;
*'''Retention time'''&lt;br /&gt;
CPS provides users to specify a retention time for which the checkpoint is retained even when no one is accessing the checkpoint&lt;br /&gt;
&lt;br /&gt;
*'''Section Expiration Time'''&lt;br /&gt;
User can set an absolute expiration time for a section after which the section is deleted irrespective of its usage at that time. &lt;br /&gt;
&lt;br /&gt;
*'''Section Iteration'''&lt;br /&gt;
Users can iterate through the sections of a checkpoint.&lt;br /&gt;
&lt;br /&gt;
===SAFplus Platform Event Service features===&lt;br /&gt;
*'''Publish/Subscribe multipoint-to-multipoint communication mechanism'''&lt;br /&gt;
** Based on concept of event channels&lt;br /&gt;
** Publisher communicates asynchronously with one or more subscribers over an event channel&lt;br /&gt;
** Multiple publishers and subscribers can communicate over the same event channel; publishers can be subscribers on the same event channel&lt;br /&gt;
** Individual publishers and individual subscribers can communicate over multiple channels&lt;br /&gt;
*'''Events consist of standard header and one or more bytes of payload data'''&lt;br /&gt;
** i.e. Event Service does not impose any specific transfer syntax for the data&lt;br /&gt;
*'''Event channel management'''&lt;br /&gt;
** Event service provides APIs for opening, closing and deleting event channels&lt;br /&gt;
*'''Event operations'''&lt;br /&gt;
** Event service provides APIs for managing the event payload data, publishing the event, subscribing for the event etc&lt;br /&gt;
&lt;br /&gt;
===Additional SAFplus Platform Services===&lt;br /&gt;
&lt;br /&gt;
OpenClovis SAFplus Platform also provides various components that were implemented earlier than its implementation with SAF specifications. These components provide services that are functional equivalent to SAF AIS services as listed below:&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;0&amp;quot; cellpadding=&amp;quot;3&amp;quot; align=&amp;quot;center&amp;quot; width=&amp;quot;680&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;bottom&amp;quot; | '''SAFplus Platform Services Equivalent to SA Forum AIS Services''' &lt;br /&gt;
|- style=&amp;quot;color:#ffffff; background:#549cc6&amp;quot;&lt;br /&gt;
!style=&amp;quot;color:#66b154; background:#09477c&amp;quot;| OpenClovis SAFplus Platform Components&lt;br /&gt;
!style=&amp;quot;color:#66b154; background:#09477c&amp;quot;| Functionally Equivalent AIS Service&lt;br /&gt;
!style=&amp;quot;color:#66b154; background:#09477c&amp;quot;| AIS Specification&lt;br /&gt;
|- style=&amp;quot;color:#ffffff; background:#549cc6&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
Clovis Object Repository (COR)&lt;br /&gt;
|&lt;br /&gt;
Information Model Management Service&lt;br /&gt;
|&lt;br /&gt;
SAI-AIS-IMM-A.01.01&lt;br /&gt;
|- style=&amp;quot;color:#ffffff; background:#549cc6&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
Alarm Manager (AM) &lt;br /&gt;
|&lt;br /&gt;
Notification Service&lt;br /&gt;
|&lt;br /&gt;
SAI-AIS-NTF-A.01.01&lt;br /&gt;
|- style=&amp;quot;color:#ffffff; background:#549cc6&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
Log Service &lt;br /&gt;
|&lt;br /&gt;
Logging Service&lt;br /&gt;
|&lt;br /&gt;
SAI-AIS-LOG-A.01.01&lt;br /&gt;
|- style=&amp;quot;color:#ffffff; background:#549cc6&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
Naming Service &lt;br /&gt;
|&lt;br /&gt;
Naming Service&lt;br /&gt;
|&lt;br /&gt;
SAI-AIS-NAM-A.01.01&lt;br /&gt;
|- style=&amp;quot;color:#ffffff; background:#549cc6&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
Platform Management Service &lt;br /&gt;
|&lt;br /&gt;
Platform Management Service&lt;br /&gt;
|&lt;br /&gt;
SAI-AIS-PLM-A.01.01&lt;br /&gt;
|- style=&amp;quot;color:#ffffff; background:#549cc6&amp;quot;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===IMM (OpenClovis Object Repository - COR) Features===&lt;br /&gt;
The OpenClovis Object Repository(COR) implements the IMM features. We are progressing on having API level compliance which will be available in R5.0.&lt;br /&gt;
&lt;br /&gt;
The following are the IMM compliant features of COR:&lt;br /&gt;
&lt;br /&gt;
*'''Object Mananger and Object Implementer'''&lt;br /&gt;
**COR provides a rich set of APIs to make configuration changes on a Managed Object (MO). It provides service to implement a MO by multiple Object Implementers (OI), so that the configuration changes on the MO can be validated by all the OIs. It provides APIs to make or remove an application as a OI for a MO.&lt;br /&gt;
&lt;br /&gt;
*'''Runtime Attributes Management'''&lt;br /&gt;
**COR provides service to implement the runtime attributes of an object or all the object instances of a class. The Runtime attributes values can be cached or non-cached in COR. The cached runtime attributes values has to be updated by Primary Object Implementer (POI) periodically in COR. The value of non-cached runtime attributes will be updated by POI on request by COR. The values of cached runtime attributes can be persisted into storage devices.&lt;br /&gt;
&lt;br /&gt;
*'''Configuration Attributes Management'''&lt;br /&gt;
**The Configuration attributes are always cached and persisted by COR. Any configuration change on these attributes by a OM will be implemented by all the OIs.&lt;br /&gt;
&lt;br /&gt;
*'''Attribute Characteristics'''&lt;br /&gt;
**COR supports the following attribute characteristics.&lt;br /&gt;
***CONFIG      - Indicates that the attribute is a configuration type attribute.&lt;br /&gt;
***RUNTIME     - Indicates that the attribute is a runtime attribute.&lt;br /&gt;
***WRITABLE    - Indicates that the configuration attribute can be modified.&lt;br /&gt;
***INITIALIZED - Indicates that value for the configuration attribute must be specified when the object is created.&lt;br /&gt;
***CACHED      - Indicates that the value of the attribute is cached in COR.&lt;br /&gt;
***PERSISTENT  - Indicates that the value of the attribute must be stored in a permanent manner by COR&lt;br /&gt;
&lt;br /&gt;
*'''Object Class Management'''&lt;br /&gt;
**COR provides APIs to create, delete and modify the classes, and to make hierarchical relationship between the classes. It also provides service to inherit the existing class to create a new class.&lt;br /&gt;
&lt;br /&gt;
*'''Tree organization of Objects'''&lt;br /&gt;
**COR organizes the MOs in a hierarchical manner supporting parent-child relationship, inheritance, association and containment relationships.&lt;br /&gt;
&lt;br /&gt;
*'''Search Operations'''&lt;br /&gt;
**The search operations can be performed on a single MO, or a MO and its children, or a sub tree rooted from the given MO.&lt;br /&gt;
**We can either retrieve all the attributes in the MO matching the given criteria or only the matching attributes.&lt;br /&gt;
&lt;br /&gt;
*'''Object Access'''&lt;br /&gt;
**COR bundle GET APIs can be used to retrieve the attributes values in a efficient manner by grouping the GET requests belonging different MOs into one single request to COR. The values of runtime non-cached attributes will be updated by POI on request by COR.&lt;br /&gt;
&lt;br /&gt;
*'''Class Implementer'''&lt;br /&gt;
**COR provides APIs for the application to implement all the Object instances of a class, for both Configuration and Runtime attributes.&lt;br /&gt;
&lt;br /&gt;
===SAF Notification Features===&lt;br /&gt;
OpenClovis SAFplus Platform is compliant with the following Notification features :&lt;br /&gt;
&lt;br /&gt;
*'''Notification Types'''&lt;br /&gt;
**Alarm&lt;br /&gt;
**State Change&lt;br /&gt;
**Object Create/Delete&lt;br /&gt;
**Attribute Change&lt;br /&gt;
&lt;br /&gt;
*'''Alarm Notification'''&lt;br /&gt;
**An alarm report is a notification of a specific event that may or may not represent an error. OpenClovis Alarm notification is fully compliant with ITU-T X.733 standard (which is recommended by SAF-NTF).&lt;br /&gt;
&lt;br /&gt;
*'''State Change Notification'''&lt;br /&gt;
**OpenClovis AMF provides services for the following state change notifications to the Management Applications&lt;br /&gt;
***HA state of the SU changed&lt;br /&gt;
***SI partially/fully assigned&lt;br /&gt;
***Component arrived/departed&lt;br /&gt;
***Node arrived/departed&lt;br /&gt;
&lt;br /&gt;
*'''Object Create/Delete and Attribute Change Notifications'''&lt;br /&gt;
**OpenClovis SAFplus Platform provides services for the notification of Managed Object Creation, Deletion and Attribute changes. It also supports the Management Applications to filter the attribute change notifications based on attribute identifiers.&lt;br /&gt;
&lt;br /&gt;
*'''Notification Delivery Characteristics'''&lt;br /&gt;
**Guaranteed delivery&lt;br /&gt;
**At most once delivery&lt;br /&gt;
**Ordered delivery&lt;br /&gt;
**Persisted (Alarm notifications).&lt;br /&gt;
&lt;br /&gt;
*'''Notification Filtering'''&lt;br /&gt;
**OpenClovis SAFplus Platform provides service for filtering the notifications based on one or more filter criteria which is particular to the notification type. It also provides the ability to correlate with the other notifications.&lt;br /&gt;
&lt;br /&gt;
=='''Support for SAF AIS Interfaces'''==&lt;br /&gt;
&lt;br /&gt;
OpenClovis SAFplus Platform complies with the SAF AIS interfaces for the following components:&lt;br /&gt;
&lt;br /&gt;
===Availability Management Framework (AMF)===&lt;br /&gt;
&lt;br /&gt;
OpenClovis Availability Management Framework (AMF) supports the following SAF AIS interfaces as mentioned in SAI-AIS-AMF-B.02.01.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;0&amp;quot; cellpadding=&amp;quot;3&amp;quot; align=&amp;quot;center&amp;quot; width=&amp;quot;680&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;bottom&amp;quot; | '''Supported API's of AMF''' &lt;br /&gt;
|- style=&amp;quot;color:#ffffff; background:#549cc6&amp;quot;&lt;br /&gt;
!style=&amp;quot;color:#66b154; background:#09477c&amp;quot; width=&amp;quot;350&amp;quot;| Services &lt;br /&gt;
!style=&amp;quot;color:#66b154; background:#09477c&amp;quot;| Supported APIs&lt;br /&gt;
|- style=&amp;quot;color:#ffffff; background:#549cc6&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
Library Lifecycle Management&lt;br /&gt;
|&lt;br /&gt;
* saAmfInitialize()&lt;br /&gt;
* saAmfSelectionObjectGet()&lt;br /&gt;
* saAmfDispatch()&lt;br /&gt;
* saAmfFinalize()&lt;br /&gt;
|- style=&amp;quot;color:#ffffff; background:#549cc6&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
Component Health Monitoring&lt;br /&gt;
|&lt;br /&gt;
* saAmfHealthCheckStart()&lt;br /&gt;
* saAmfHealthCheckStop()&lt;br /&gt;
* SaAmfHealthCheckCallbackT&lt;br /&gt;
* saAmfHealthCheckConfirm()&lt;br /&gt;
|- style=&amp;quot;color:#ffffff; background:#549cc6&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
Component Registration and Un-registration&lt;br /&gt;
|&lt;br /&gt;
* saAmfComponentRegister()&lt;br /&gt;
* saAmfComponentUnregister()&lt;br /&gt;
* saAmfComponentNameGet()&lt;br /&gt;
|- style=&amp;quot;color:#ffffff; background:#549cc6&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
Component Service Instance Management&lt;br /&gt;
|&lt;br /&gt;
* saAmfHAStateGet()&lt;br /&gt;
* SaAmfCSISetCallbackT&lt;br /&gt;
* SaAmfCSIRemoveCallbackT&lt;br /&gt;
* saAmfCSIQuiescingComplete()&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;0&amp;quot; cellpadding=&amp;quot;3&amp;quot; align=&amp;quot;center&amp;quot; width=&amp;quot;680&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;bottom&amp;quot; | '''Supported API's of AMF''' &lt;br /&gt;
|- style=&amp;quot;color:#ffffff; background:#549cc6&amp;quot;&lt;br /&gt;
!style=&amp;quot;color:#66b154; background:#09477c&amp;quot; width=&amp;quot;350&amp;quot;| Services &lt;br /&gt;
!style=&amp;quot;color:#66b154; background:#09477c&amp;quot;| Supported APIs&lt;br /&gt;
|- style=&amp;quot;color:#ffffff; background:#549cc6&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
Component Lifecycle Management&lt;br /&gt;
|&lt;br /&gt;
* SaAmfComponentTerminateCallbackT&lt;br /&gt;
* SaAmfProxiedComponentInstantiateCallbackT&lt;br /&gt;
* SaAmfProxiedComponentCleanupCallbackT&lt;br /&gt;
|- style=&amp;quot;color:#ffffff; background:#549cc6&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
Protection Group Management&lt;br /&gt;
|&lt;br /&gt;
* saAmfProtectionGroupTrack()&lt;br /&gt;
* SaAmfProtectionGroupTrackCallbackT&lt;br /&gt;
* saAmfProtectionGroupTrackStop()&lt;br /&gt;
|- style=&amp;quot;color:#ffffff; background:#549cc6&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
Component Error Reporting &lt;br /&gt;
|&lt;br /&gt;
* saAmfComponentErrorReport()&lt;br /&gt;
|- style=&amp;quot;color:#ffffff; background:#549cc6&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
Component Response   &lt;br /&gt;
|&lt;br /&gt;
* saAmfResponse()&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;0&amp;quot; cellpadding=&amp;quot;3&amp;quot; align=&amp;quot;center&amp;quot; width=&amp;quot;680&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;bottom&amp;quot; | '''Unsupported API's of AMF''' &lt;br /&gt;
|- style=&amp;quot;color:#ffffff; background:#549cc6&amp;quot;&lt;br /&gt;
!style=&amp;quot;color:#66b154; background:#09477c&amp;quot; width=&amp;quot;350&amp;quot;| Brief &lt;br /&gt;
!style=&amp;quot;color:#66b154; background:#09477c&amp;quot;| Unsupported APIs&lt;br /&gt;
|- style=&amp;quot;color:#ffffff; background:#549cc6&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
Passive Monitoring of processes is not supported&lt;br /&gt;
|&lt;br /&gt;
* saAmfPmStart()&lt;br /&gt;
* saAmfPmStop()&lt;br /&gt;
|- style=&amp;quot;color:#ffffff; background:#549cc6&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
Freeing the memory allocated by the saAmfProtectionGroupTrack()&lt;br /&gt;
|&lt;br /&gt;
* saAmfProtectionGroupNotificationFree()&lt;br /&gt;
|- style=&amp;quot;color:#ffffff; background:#549cc6&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
Component Error Clear API is not supported.&lt;br /&gt;
|&lt;br /&gt;
* saAmfComponentErrorClear()&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Checkpointing Service (CPS)===&lt;br /&gt;
&lt;br /&gt;
OpenClovis Checkpointing Service (CPS) supports the following SAF AIS interfaces as mentioned in SAI-AIS-CKPT-B.01.01.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;0&amp;quot; cellpadding=&amp;quot;3&amp;quot; align=&amp;quot;center&amp;quot; width=&amp;quot;680&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;bottom&amp;quot; | '''Supported API's of CPS''' &lt;br /&gt;
|- style=&amp;quot;color:#ffffff; background:#549cc6&amp;quot;&lt;br /&gt;
!style=&amp;quot;color:#66b154; background:#09477c&amp;quot; width=&amp;quot;350&amp;quot;| Services &lt;br /&gt;
!style=&amp;quot;color:#66b154; background:#09477c&amp;quot;| Supported APIs&lt;br /&gt;
|- style=&amp;quot;color:#ffffff; background:#549cc6&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
Library Lifecycle Management&lt;br /&gt;
|&lt;br /&gt;
* saCkptInitialize()&lt;br /&gt;
* saCkptSelectionObjectGet()&lt;br /&gt;
* saCkptDispatch()&lt;br /&gt;
* saCkptFinalize()&lt;br /&gt;
|- style=&amp;quot;color:#ffffff; background:#549cc6&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
Checkpoint Management&lt;br /&gt;
|&lt;br /&gt;
* saCkptCheckpointOpen()&lt;br /&gt;
* saCkptCheckpointOpenCallabackT&lt;br /&gt;
* saCkptCheckpointOpenAsync()&lt;br /&gt;
* saCkptCheckpointClose()&lt;br /&gt;
* saCkptCheckpointUnlink()&lt;br /&gt;
* saCkptActiveReplicaSet()&lt;br /&gt;
* saCkptCheckpointRetentionDurationSet()&lt;br /&gt;
* saCkptCheckpointStatusGet()&lt;br /&gt;
|- style=&amp;quot;color:#ffffff; background:#549cc6&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
Section Management&lt;br /&gt;
|&lt;br /&gt;
* saCkptSectionIterationInitialize()&lt;br /&gt;
* saCkptSectionIterationNext()&lt;br /&gt;
* saCkptSectionIterationFinalize()&lt;br /&gt;
* saCkptSectionCreate()&lt;br /&gt;
* saCkptSectionExpirationTimeSet()&lt;br /&gt;
* saCkptSectionDelete()&lt;br /&gt;
* saCkptCheckpointWrite()&lt;br /&gt;
|- style=&amp;quot;color:#ffffff; background:#549cc6&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
Data Management&lt;br /&gt;
|&lt;br /&gt;
* saCkptSectionOverwrite()&lt;br /&gt;
* saCkptCheckpointRead()&lt;br /&gt;
* saCkptCheckpointSynchronize()&lt;br /&gt;
* saCkptCheckpointSynchronizeAsync()&lt;br /&gt;
* SaCkptCheckpointSynchronizeCallbackT&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Event Manager (EM)===&lt;br /&gt;
&lt;br /&gt;
OpenClovis Event Manager supports the following SAF AIS interfaces as mentioned in SAI-AIS-EVT-B.01.01.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;0&amp;quot; cellpadding=&amp;quot;3&amp;quot; align=&amp;quot;center&amp;quot; width=&amp;quot;680&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;bottom&amp;quot; | '''Supported API's of EM''' &lt;br /&gt;
|- style=&amp;quot;color:#ffffff; background:#549cc6&amp;quot;&lt;br /&gt;
!style=&amp;quot;color:#66b154; background:#09477c&amp;quot; width=&amp;quot;350&amp;quot;| Services &lt;br /&gt;
!style=&amp;quot;color:#66b154; background:#09477c&amp;quot;| Supported APIs&lt;br /&gt;
|- style=&amp;quot;color:#ffffff; background:#549cc6&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
Library Lifecycle Management&lt;br /&gt;
|&lt;br /&gt;
* saEvtInitialize()&lt;br /&gt;
* saEvtFinalize()&lt;br /&gt;
* saEvtSelectionObjectGet()&lt;br /&gt;
* saEvtDispatch()&lt;br /&gt;
|- style=&amp;quot;color:#ffffff; background:#549cc6&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
Event Operations&lt;br /&gt;
|&lt;br /&gt;
* saEvtEventAllocate()&lt;br /&gt;
* saEvtEventFree()&lt;br /&gt;
* saEvtEventAttributesSet()&lt;br /&gt;
* saEvtEventAttributesGet()&lt;br /&gt;
* saEvtEventDataGet()&lt;br /&gt;
* saEvtEventPublish()&lt;br /&gt;
* saEvtEventSubscribe()&lt;br /&gt;
* SaEvtEventDeliverCallbackT&lt;br /&gt;
* saEvtEventUnsubscribe()&lt;br /&gt;
|- style=&amp;quot;color:#ffffff; background:#549cc6&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
Event Channel Operations&lt;br /&gt;
|&lt;br /&gt;
* saEvtChannelOpen()              &lt;br /&gt;
* saEvtChannelOpenAsync()&lt;br /&gt;
* SaEvtChannelOpenCallbackT&lt;br /&gt;
* saEvtChannelUnlink()&lt;br /&gt;
* saEvtChannelClose()&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;0&amp;quot; cellpadding=&amp;quot;3&amp;quot; align=&amp;quot;center&amp;quot; width=&amp;quot;680&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;bottom&amp;quot; | '''Unsupported API's of EM''' &lt;br /&gt;
|- style=&amp;quot;color:#ffffff; background:#549cc6&amp;quot;&lt;br /&gt;
!style=&amp;quot;color:#66b154; background:#09477c&amp;quot; width=&amp;quot;350&amp;quot;| Brief&lt;br /&gt;
!style=&amp;quot;color:#66b154; background:#09477c&amp;quot;| Unsupported APIs&lt;br /&gt;
|- style=&amp;quot;color:#ffffff; background:#549cc6&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
Event Retention Time is not supported&lt;br /&gt;
|&lt;br /&gt;
* saEvtEventRetentionTimeClear()&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Group Membership Service (GMS)===&lt;br /&gt;
&lt;br /&gt;
OpenClovis Group Membership Service (GMS) supports the following SAF AIS interfaces as mentioned in AIS-CLM-B.01.01.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;0&amp;quot; cellpadding=&amp;quot;3&amp;quot; align=&amp;quot;center&amp;quot; width=&amp;quot;680&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;bottom&amp;quot; | '''Supported API's of GMS''' &lt;br /&gt;
|- style=&amp;quot;color:#ffffff; background:#549cc6&amp;quot;&lt;br /&gt;
!style=&amp;quot;color:#66b154; background:#09477c&amp;quot; width=&amp;quot;350&amp;quot;| Services &lt;br /&gt;
!style=&amp;quot;color:#66b154; background:#09477c&amp;quot;| Supported APIs&lt;br /&gt;
|- style=&amp;quot;color:#ffffff; background:#549cc6&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
Library Lifecycle Management&lt;br /&gt;
|&lt;br /&gt;
* saClmInitialize()&lt;br /&gt;
* saClmSelectionObjectGet()&lt;br /&gt;
* saClmDispatch()&lt;br /&gt;
* saClmFinalize()&lt;br /&gt;
|- style=&amp;quot;color:#ffffff; background:#549cc6&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
Group Membership Operations&lt;br /&gt;
|&lt;br /&gt;
* saClmClusterTrack()&lt;br /&gt;
* SaClmClusterTrackCallbackT&lt;br /&gt;
* saClmClusterTrackStop()&lt;br /&gt;
* saClmClusterNodeGet()&lt;br /&gt;
* saClmClusterNodeGetAsync()&lt;br /&gt;
* SaClmClusterNodeGetCallbackT&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Messaging Service (MSG)===&lt;br /&gt;
&lt;br /&gt;
OpenClovis Messaging Service (MSG) supports the following SAF AIS interfaces as mentioned in SAF-AIS-MSG-B.02.01.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;0&amp;quot; cellpadding=&amp;quot;3&amp;quot; align=&amp;quot;center&amp;quot; width=&amp;quot;680&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;bottom&amp;quot; | '''Supported API's of MSG''' &lt;br /&gt;
|- style=&amp;quot;color:#ffffff; background:#549cc6&amp;quot;&lt;br /&gt;
!style=&amp;quot;color:#66b154; background:#09477c&amp;quot; width=&amp;quot;350&amp;quot;| Services &lt;br /&gt;
!style=&amp;quot;color:#66b154; background:#09477c&amp;quot;| Supported APIs&lt;br /&gt;
|- style=&amp;quot;color:#ffffff; background:#549cc6&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
Library Lifecycle Management&lt;br /&gt;
|&lt;br /&gt;
* saMsgInitialize()&lt;br /&gt;
* saMsgSelectionObjectGet()&lt;br /&gt;
* saMsgDispatch()&lt;br /&gt;
* saMsgFinalize()&lt;br /&gt;
|- style=&amp;quot;color:#ffffff; background:#549cc6&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
Message Queue Operations&lt;br /&gt;
|&lt;br /&gt;
* saMsgQueueOpen()&lt;br /&gt;
* saMsgQueueOpenAsync()&lt;br /&gt;
* SaMsgQueueOpenCallbackT&lt;br /&gt;
* saMsgQueueClose()&lt;br /&gt;
* saMsgQueueStatusGet()&lt;br /&gt;
* saMsgQueueRetentionTimeSet()&lt;br /&gt;
* saMsgQueueUnlink()&lt;br /&gt;
|- style=&amp;quot;color:#ffffff; background:#549cc6&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
Management of Message Queue Groups&lt;br /&gt;
|&lt;br /&gt;
* saMsgQueueGroupCreate()&lt;br /&gt;
* saMsgQueueGroupInsert()&lt;br /&gt;
* saMsgQueueGroupRemove()&lt;br /&gt;
* saMsgQueueGroupDelete()&lt;br /&gt;
* saMsgQueueGroupTrack()&lt;br /&gt;
* SaMsgQueueGroupTrackCallbackT&lt;br /&gt;
* saMsgQueueGroupTrackStop()&lt;br /&gt;
* saMsgQueueGroupNotificationFree()&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;0&amp;quot; cellpadding=&amp;quot;3&amp;quot; align=&amp;quot;center&amp;quot; width=&amp;quot;680&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;bottom&amp;quot; | '''Supported API's of MSG''' &lt;br /&gt;
|- style=&amp;quot;color:#ffffff; background:#549cc6&amp;quot;&lt;br /&gt;
!style=&amp;quot;color:#66b154; background:#09477c&amp;quot; width=&amp;quot;350&amp;quot;| Services &lt;br /&gt;
!style=&amp;quot;color:#66b154; background:#09477c&amp;quot;| Supported APIs&lt;br /&gt;
|- style=&amp;quot;color:#ffffff; background:#549cc6&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
Message Send and Receive Operations&lt;br /&gt;
| &lt;br /&gt;
* saMsgMessageSend()&lt;br /&gt;
* saMsgMessageSendAsync()&lt;br /&gt;
* SaMsgMessageDeliveredCallbackT&lt;br /&gt;
* saMsgMessageGet()&lt;br /&gt;
* saMsgMessageDataFree()&lt;br /&gt;
* SaMsgMessagedReceivedCallbackT&lt;br /&gt;
* saMsgMessageCancel()&lt;br /&gt;
|- style=&amp;quot;color:#ffffff; background:#549cc6&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
Request and Reply Operations&lt;br /&gt;
|&lt;br /&gt;
* saMsgMessageSendReceive()&lt;br /&gt;
* saMsgMessageReply()&lt;br /&gt;
* saMsgMessageReplyAsync()&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=='''Software Management Framework (SMF)'''==&lt;br /&gt;
&lt;br /&gt;
SMF Aligned In Service Software Upgrade (ISSU.&lt;br /&gt;
Supports application and OpenClovis SAFplus Platform middleware upgrade in a rolling (in-service) or single-step mode.&lt;br /&gt;
&lt;br /&gt;
'''Single-Step'''&lt;br /&gt;
For deployment of non-backwards compatible software, or rapid deployment of software.  This method stops the relevant services on all nodes (causing an outage) and then upgrades that software and restarts.  Note that services are stopped at various granularity levels depending on what is being upgraded.  In other words, application A can be taken out-of-service and upgraded across the cluster without affecting application B running on the same nodes.&lt;br /&gt;
&lt;br /&gt;
'''Inservice Rolling'''&lt;br /&gt;
This is the most commonly known telecom quality upgrade method.  For deployment of backwards-compatible software across the cluster, this method stops service in one &amp;quot;upgrade unit&amp;quot; at a time, upgrades the software and restarts before stopping the next &amp;quot;upgrade unit&amp;quot;.  This process continues iteratively until the entire cluster is upgraded.  Since the available redundant capacity takes over for the unit being upgraded service will be unaffected.&lt;br /&gt;
&lt;br /&gt;
=='''Hardware Platform Interface (HPI)'''==&lt;br /&gt;
&lt;br /&gt;
SAFplus Platform has been integrated and tested with the following implementations of HPI B.01.01 specification.&lt;br /&gt;
* OpenHPI 2.8.1, 2.10.2, 2.16.0&lt;br /&gt;
* Radisys HPI 1.4&lt;br /&gt;
&lt;br /&gt;
The following sections lists out the SAF HPI APIs that are used by SAFplus Platform. Platform provider shall provide at these HPI services in order to integration with OpenClovis SAFplus Platform&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;0&amp;quot; cellpadding=&amp;quot;3&amp;quot; align=&amp;quot;center&amp;quot; width=&amp;quot;680&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;bottom&amp;quot; | '''SAF HPI APIs used by SAFplus''' &lt;br /&gt;
|- style=&amp;quot;color:#ffffff; background:#549cc6&amp;quot;&lt;br /&gt;
!style=&amp;quot;color:#66b154; background:#09477c&amp;quot; width=&amp;quot;350&amp;quot;| Services &lt;br /&gt;
!style=&amp;quot;color:#66b154; background:#09477c&amp;quot;| Supported APIs&lt;br /&gt;
|- style=&amp;quot;color:#ffffff; background:#549cc6&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
General APIs&lt;br /&gt;
|&lt;br /&gt;
* saHpiVersionGet()&lt;br /&gt;
|- style=&amp;quot;color:#ffffff; background:#549cc6&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
Domain APIs&lt;br /&gt;
|&lt;br /&gt;
* saHpiSessionClose()&lt;br /&gt;
* saHpiSessionOpen()&lt;br /&gt;
* saHpiDiscover()&lt;br /&gt;
* saHpiRptEntryGet()&lt;br /&gt;
* saHpiRptEntryGetByResourceId()&lt;br /&gt;
* saHpiSubscribe()&lt;br /&gt;
* saHpiUnsubscribe()&lt;br /&gt;
* saHpiEventGet()&lt;br /&gt;
|- style=&amp;quot;color:#ffffff; background:#549cc6&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
Resource APIs&lt;br /&gt;
|&lt;br /&gt;
* saHpiRdrGet()&lt;br /&gt;
* saHpiAutoExtractTimeoutSet()&lt;br /&gt;
* saHpiAutoInsertTimeoutSet()&lt;br /&gt;
* saHpiHotSwapPolicyCancel()&lt;br /&gt;
* saHpiResourceActiveSet()&lt;br /&gt;
* saHpiResourceInactiveSet()&lt;br /&gt;
* saHpiHotSwapStateGet()&lt;br /&gt;
* saHpiHotSwapActionRequest()&lt;br /&gt;
* saHpiHotSwapIndicatorStateGet()&lt;br /&gt;
* saHpiResourceResetStateSet()&lt;br /&gt;
* saHpiResourcePowerStateSet()&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
In addition to the above APIs SAFplus Platform also depends on the following events generated by HPI&lt;br /&gt;
# Hot Swap events (SAHPI_ET_HOTSWAP) &lt;br /&gt;
# Sensor events (SAHPI_ET_SENSOR)&lt;br /&gt;
# Resource Events (SAHPI_ET_RESOURCE)&lt;br /&gt;
&lt;br /&gt;
=='''Modifications to SAF AIS Header files'''==&lt;br /&gt;
&lt;br /&gt;
In a few instances, OpenClovis engineers found that the standard SAF-supplied header files caused errors and warnings on certain compilers.  In these cases OpenClovis modified the standard SAF header file to work with these compilers.  All of these changes broaden the set of compatible compilers.  None of these changes modify the SAF APIs.&lt;br /&gt;
&lt;br /&gt;
For example, in saAis.h, the following constant is defined:&lt;br /&gt;
&lt;br /&gt;
 #define SA_TIME_ONE_MINUTE      60000000000&lt;br /&gt;
&lt;br /&gt;
However, the number defined is greater than a 32-bit integer, so it is actually required to append a size suffix:&lt;br /&gt;
&lt;br /&gt;
 #define SA_TIME_ONE_MINUTE      60000000000LL&lt;/div&gt;</summary>
		<author><name>MediaWiki spam cleanup</name></author>	</entry>

	<entry>
		<id>https://help.openclovis.com/index.php/Doc:latest/tutorial</id>
		<title>Doc:latest/tutorial</title>
		<link rel="alternate" type="text/html" href="https://help.openclovis.com/index.php/Doc:latest/tutorial"/>
				<updated>2012-02-21T03:24:20Z</updated>
		
		<summary type="html">&lt;p&gt;MediaWiki spam cleanup: Reverting to last revision not containing links to www.buyxanaxitem.com&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;http://www.buyxanaxonlinepill.com/ buy xanax online - generic xanax online&lt;br /&gt;
&lt;br /&gt;
http://www.buyxanaxonlinepill.com/ purchase online generic xanax - xanax buy online&lt;br /&gt;
&lt;br /&gt;
==Creating the csa101 Model==&lt;br /&gt;
The first step in setting up our example is to create a model which represents the system that we will eventually deploy. This is done through the '''SAFplus Platform IDE'''. In this chapter we will step through the following tasks:&lt;br /&gt;
* Create a project area&lt;br /&gt;
* Launch the '''SAFplus Platform IDE'''&lt;br /&gt;
* Create the IDE project&lt;br /&gt;
* Specify the Resource model (the types of physical hardware in our system)&lt;br /&gt;
* Specify the Component model (the types of components or applications in our system)&lt;br /&gt;
* Specify which Components run on which Resources&lt;br /&gt;
* Specify important build and boot parameters&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Creating a New Project Area===&lt;br /&gt;
A project area is a directory on your system where you can develop SAFplus Platform models and generate the code corresponding to those models. The project area can hold multiple models allowing you to manage all of your models in one location. All the models in the same project area share the same SAFplus Platform source tree. This way any modifications made to the SAFplus Platform source tree are re-used across all the models that were created in that project area.&lt;br /&gt;
&lt;br /&gt;
You create a project area using a script from the command line. To create a project area named '''projectarea1''' in the '''/home/clovis''' directory you should execute the following command:&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
# cl-create-project-area /home/clovis/projectarea1&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Launching the SAFplus Platform IDE===&lt;br /&gt;
You can launch the '''SAFplus Platform IDE''' from the command line. If you chose to create symbolic links during installation you can simply enter &amp;lt;code&amp;gt;'''cl-ide'''&amp;lt;/code&amp;gt; from any directory. If you did not create symbolic links during installation you can either:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Add the installation directory to the shells search path and then launch the IDE. For example with a bash shell, &lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
# export PATH=$PATH:$install_dir/sdk-5.0/bin&lt;br /&gt;
# cl-ide&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
or&lt;br /&gt;
&amp;lt;li&amp;gt;Execute the command&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
# &amp;lt;install_dir&amp;gt;/sdk-5.0/bin/cl-ide&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The splash screen for SAFplus Platform IDE is displayed as illustrated in Figure [[#SAFplus Platform IDE Opening Screen | SAFplus Platform IDE Opening Screen]].&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id='SAFplus Platform IDE Opening Screen'&amp;gt;&amp;lt;/span&amp;gt;[[File:Tutorial_GettingStartedIDE_OpeningScreen.png|frame|center| '''SAFplus Platform IDE Opening Screen''' ]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
You will then be prompted to select a workspace in which to do your work as illustrated in Figure [[#SAFplus Platform IDE Workspace Launcher | SAFplus Platform IDE Workspace Launcher]].&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id='SAFplus Platform IDE Workspace Launcher'&amp;gt;&amp;lt;/span&amp;gt;[[File:Tutorial_GettingStartedIDE_WorkspaceLauncher.png|frame|center| '''SAFplus Platform IDE Workspace Launcher''' ]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The workspace you select should correspond to the project area that you created in the previous section (in this case &amp;quot;/home/clovis/projectarea1&amp;quot;). Note that the workspace includes a subdirectory of &amp;quot;/ide_workspace&amp;quot;. This is done strictly for organizational purposes. It keeps the IDE models separate from the generated SAFplus Platform models and code.&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Select the workspace and click  '''OK'''  to launch SAFplus Platform IDE as illustrated in the Figure [[#SAFplus Platform IDE Welcome Screen | SAFplus Platform IDE Welcome Screen]].&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id='SAFplus Platform IDE Welcome Screen'&amp;gt;&amp;lt;/span&amp;gt;[[File:Tutorial_WelcomeScreen.png|frame|center| '''SAFplus Platform IDE Welcome Screen''' ]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The '''SAFplus Platform''' IDE is launched and you are now looking at the main work area. For more information about the components of this main work area including the SAFplus Platform IDE menu and toolbar, see ''SAFplus Platform IDE User Guide''.&lt;br /&gt;
&lt;br /&gt;
===Creating the Sample Project===&lt;br /&gt;
We will now create a project within the '''SAFplus Platform IDE'''. This project will hold both the resource model and the component model for our example system. The resource model is a physical view of the resources (the chassis, the blade types, etc.) in our system. The component model is a logical view of the components (applications, etc.) in our system.&lt;br /&gt;
&lt;br /&gt;
We will be using the '''New Project Wizard''' to create our project. The wizard captures some high-level information about the system that we are building and performs a lot of the basic setup for us.&lt;br /&gt;
&lt;br /&gt;
[[File:OpenClovis_Note.png]]The same model that we are building through the wizard could also be created manually through the Resource and Component Editors. For more information on the Resource and Component Editors see ''SAFplus Platform IDE User Guide''.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
To launch the '''New Project Wizard''' select  '''File'''  &amp;gt;  '''New''' &amp;gt;  '''Project''' from the IDE menu bar.&lt;br /&gt;
&lt;br /&gt;
The  '''New Project Wizard''' is displayed and  '''Clovis System Project'''  is selected by default as illustrated in Figure [[#New Project Wizard | New Project Wizard]].&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id='New Project Wizard'&amp;gt;&amp;lt;/span&amp;gt;[[File:Tutorial_GettingStartedIDE_NewProjectWizard.png|frame|center| '''New Project Wizard''' ]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Click  '''Next'''. The  '''Clovis System Project''' window is displayed as illustrated in Figure [[#Clovis System Project | Clovis System Project]].&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;span id='Clovis System Project'&amp;gt;&amp;lt;/span&amp;gt;[[File:Tutorial_NewProject.png|frame|center| '''Clovis System Project''' ]]&lt;br /&gt;
&lt;br /&gt;
Enter the following information:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;'''Project Name''' : Enter the name of your new project as  '''SampleModel'''.&lt;br /&gt;
&amp;lt;br&amp;gt;[[File:OpenClovis_Note.png]]Do not use spaces or special characters for the project name. The project name can be alphanumeric, but cannot start with a number or have only numbers.&lt;br /&gt;
&amp;lt;br&amp;gt;Select  '''Use default'''  to use the same directory mentioned in the  '''Directory'''  field. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;'''SDK Location''': Enter the location where the SAFplus Platform SDK was installed. For e.g. if the SDK was installed at location /opt/clovis, then the SDK location is /opt/clovis/sdk-&amp;lt;version&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;'''Project Area Location''': Enter the location where the generated source code for the model should be stored.&lt;br /&gt;
&amp;lt;br&amp;gt;[[File:OpenClovis_Note.png]]This can be any existing directory but is usually the project area that was created in the previous section.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;'''Python Location''': Enter the location where Python 2.5.0 is installed on your system. If Python 2.5.0 was installed by SAFplus Platform SDK, the directory is  &amp;lt;code&amp;gt;'''&amp;lt;installation_directory&amp;gt;/buildtools/local/bin'''&amp;lt;/code&amp;gt;.&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Click '''Next'''. The '''Add New Blade Type''' window is displayed. This dialog is used to define the blade types that are in our system.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id='Add New Blade Type'&amp;gt;&amp;lt;/span&amp;gt;[[File:Tutorial_AddBlade.png|frame|center| '''Add New Blade Type''' ]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Remember that the system we are modelling has only one blade type...a System Controller.&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Use the '''Add''' button to add a new blade type to the list. Name this blade type 'SysBlade' (for System Controller blade).&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Click '''Next'''. The '''Add New SAF Node Type''' window is displayed. This dialog is used to define the type of logical node that will be run on the corresponding blade type defined in the previous dialog.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id='Add New SAF Node Type'&amp;gt;&amp;lt;/span&amp;gt;[[File:Tutorial_AddNode.png|frame|center| '''Add New SAF Node Type''' ]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Node types represent groups of software. They are classified as either a System Controller class or a Payload class. This distinction gives the node type certain characteristics which cause it to behave in a well-defined manner. Since we have only a System Controller in our system we will add a node type of class System Controller.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Use the '''Add''' button to add a new node type to the list. Name the node type 'SCNode' and ensure that its node class is 'System Controller (SAF Class B)'.&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Click '''Next'''. The '''Specify Program Names''' window is displayed. This dialog is used to create programs or SAF Service Types and associate them with the SAF Node Types specified in the previous dialog.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id='Specify Program Names'&amp;gt;&amp;lt;/span&amp;gt;[[File:Tutorial_DefineProgramNames.png|frame|center| '''Specify Program Names''' ]]&lt;br /&gt;
&lt;br /&gt;
In our system we need one SAF Service Type which represents our high availability software (csa101 that continously prints &amp;quot;Hello World!&amp;quot;).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Use the '''Add''' button to add a program name to the list. Change the program name to 'csa101' and associate the program with the 'SCNode' node type.&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Click '''Finish'''. This will create the sample model using the blade type, node type, and program name information collected through the 'New Project Wizard' dialogs.&lt;br /&gt;
&lt;br /&gt;
===Viewing the Model===&lt;br /&gt;
&lt;br /&gt;
====The SAFplus Platform IDE Perspective====&lt;br /&gt;
Once the wizard pages are closed you will be returned to the main IDE view also known as the '''SAFplus Platform IDE Perspective'''. On the left hand side of this view you will see the '''Clovis Workspace''' pane which contains the new project you just created with all project related files and folders. The folders are displayed based on your filter settings. With the default filter settings, the folders shown in Figure [[#Clovis Workspace|Clovis Workspace]] is displayed in the '''Clovis Workspace''' pane. For information about filter settings, refer  ''SAFplus Platform IDE User Guide''.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id='Clovis Workspace'&amp;gt;&amp;lt;/span&amp;gt;[[File:Tutorial_GettingStartedIDE_ClovisWorkspace.png|frame|center|Clovis Workspace]]&lt;br /&gt;
&lt;br /&gt;
By default, the '''Resource''' and '''Component''' Editor views are available for the created project. To view them, click '''Clovis''' on the menu bar at the top of the screen and select '''Resource Editor''' or  '''Component Editor'''  from the menu. You can also click '''Resource Editor''' or '''Component Editor''' icons from the tool bar as shown in Figure [[#SAFplus Platform IDE Tool Bar | SAFplus Platform IDE Tool Bar]].&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id='SAFplus Platform IDE Tool Bar'&amp;gt;&amp;lt;/span&amp;gt;[[File:Tutorial_Toolbar.png|frame|center| '''SAFplus Platform IDE Tool Bar''' ]]&lt;br /&gt;
&lt;br /&gt;
====Resource Editor View====&lt;br /&gt;
The '''Resource Editor''' shows the types of physical objects in our system. It gives us a place to create new objects and interact with the objects that already exist. The '''Resource Editor''' view for our model should look similar to the following figure.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id='SAFplus Platform Resource Editor'&amp;gt;&amp;lt;/span&amp;gt;[[File:Tutorial_ResourceEditor.png|frame|center| '''SAFplus Platform Resource Editor''' ]]&lt;br /&gt;
&lt;br /&gt;
This editor always has a '''Chassis''' object which is the root of all other objects in the editor. In our case it also has the '''SysBlade''' blade type that we created through the '''Project Creation Wizard'''. You will also notice that the '''SysBlade''' is attached to the '''Chassis''' using a '''Composition''' relationship indicating that '''SysBlade'''s reside within the '''Chassis'''.&lt;br /&gt;
&lt;br /&gt;
On the right hand side of the editor view you will see the '''Palette''' which can be expanded and collapsed. Expanding the '''Palette''' you will see the list of objects that can be dragged onto the editor view to add to our model. Once an object is on the editor view you can view and change its properties by right clicking on the object and selecting '''Properties...''' from the context menu.&lt;br /&gt;
&lt;br /&gt;
For more information about the '''Resource Editor''' view see ''SAFplus Platform IDE User Guide''.&lt;br /&gt;
&lt;br /&gt;
====Component Editor View====&lt;br /&gt;
The '''Component Editor''' shows the types of logical objects in our system. It gives us a place to create new objects and interact with the objects that already exist. The '''Component Editor''' view for our model should look similar to the following figure.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id='SAFplus Platform Component Editor'&amp;gt;&amp;lt;/span&amp;gt;[[File:Tutorial_ComponentEditor.png|frame|center| '''SAFplus Platform Component Editor''' ]]&lt;br /&gt;
&lt;br /&gt;
This editor always has a '''Cluster''' object which is the root of all other objects in the editor. In our case it also has the '''SCNode''' node type and the '''csa101''' SAF Service Type (a combination of Service Group, Service Unit, Service Instance, Component Service Instance, and SAF Component) that we created through the '''Project Creation Wizard'''. These have all been automatically attached in a way that makes a working model.&lt;br /&gt;
&lt;br /&gt;
On the right hand side of the editor view you will see the '''Palette''' which can be expanded and collapsed. Expanding the '''Palette''' you will see the list of objects that can be dragged onto the editor view to add to our model. Once an object is on the editor view you can view and change its properties by right clicking on the object and selecting '''Properties...''' from the context menu.&lt;br /&gt;
&lt;br /&gt;
For more information about the '''Component Editor''' view see ''SAFplus Platform IDE User Guide''.&lt;br /&gt;
&lt;br /&gt;
===Configuring the Components===&lt;br /&gt;
The '''New Project Wizard''' that we used to create our project configured the system using the most common options. We will have to make a few changes to this model in order for our example to work. We will make these changes in the '''Component Editor''' view.&lt;br /&gt;
&lt;br /&gt;
In the Component Editor you will notice seven different objects that were created by the wizard. The first two of these are:&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Cluster: The root object of all other objects in the Component Editor view.&lt;br /&gt;
&amp;lt;li&amp;gt;SCNode: This is the SAF Node Type that we specified during project creation.&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The next five objects all make up the Program or SAF Service Type that we specified on the last dialog of the New Project Wizard. These objects are:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;csa101SG: This is the Service Group representing our high availability software component.&lt;br /&gt;
&amp;lt;li&amp;gt;csa101SU: This is the Service Unit that is logically associated with the SCNode SAF Node Type.&lt;br /&gt;
&amp;lt;li&amp;gt;csa101SI: This is the Service Instance&lt;br /&gt;
&amp;lt;li&amp;gt;csa101CSI: This is the Component Service Instance&lt;br /&gt;
&amp;lt;li&amp;gt;csa101: This is the SAF Component which represents our program or executable.&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
We will be making changes to the Service Group (csa101SG), the Service Instance (csa101SI), and the SAF Component (csa101).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====Configuring the Service Group====&lt;br /&gt;
To make changes to the Service Group double-click on the box titled '''csa101SG'''. The '''Service Group Details''' dialog is displayed.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id='Service Group Details'&amp;gt;&amp;lt;/span&amp;gt;[[File:Tutorial_ServiceGroupDetails.png|frame|center| '''Service Group Details''' ]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;The first change we want to make is to the '''Redundancy Model'''. The '''Redundancy Model''' is the strategy that is used by the SAFplus Platform system to recover from a node failure. For our simple model (which only has one node) we are not going to rely on any failover recovery so change the '''Redundancy Model''' to 'No Redundancy' as shown.&lt;br /&gt;
&amp;lt;br&amp;gt;[[File:OpenClovis_Note.png]]You will notice that when you change the redundancy model some of the other fields are modified automatically and become read-only. This is to ensure integrity of the redundancy models.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;The second change that we want to make is to the '''Admin State'''. The '''Admin State''' defines the state of the component when the system is first brought up. In our case we want to change the '''Admin State''' to be 'Locked Initialized'. This means that when the system first starts up this '''Service Group''' (and its subcomponents) will be initialized but not yet put into a running state. So our csa101 application will not yet start printing &amp;quot;Hello World!&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;When you are finished making the changes click the '''OK''' button to commit the changes.&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Configuring the Service Instance====&lt;br /&gt;
To make changes to the Service Instance double-click on the box titled '''csa101SI'''. The '''Service Instance Details''' dialog is displayed.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id='Service Instance Details'&amp;gt;&amp;lt;/span&amp;gt;[[File:Tutorial_ServiceInstanceDetails.png|frame|center| '''Service Instance Details''' ]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;The only change we want to make here is to the '''Number of standby assignments'''. This value represents the number of components that will be waiting to take over during a node failure and goes hand-in-hand with the '''Redundancy Model''' that we selected for the Service Group. Since we selected 'No Redundancy' for our '''Redundancy Model''' we need to set this value to 0...since we are not supporting any failover in this model.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;When you are finished making the changes click the '''OK''' button to commit the changes.&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====Configuring the SAF Component====&lt;br /&gt;
To make changes to the SAF Component double-click on the box titled '''csa101'''. The '''SAF Component Details''' dialog is displayed.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id='SAF Component Details'&amp;gt;&amp;lt;/span&amp;gt;[[File:Tutorial_SAFComponentDetails.png|frame|center| '''SAF Component Details''' ]]&lt;br /&gt;
&lt;br /&gt;
The SAF Component represents our high availabilty program or executable. We need to pass a command line argument to this executable. The reason for this argument is to force the program to print the 'Hello World!' output to a special log file for our viewing. We will look at this more closely when we customize our code.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;To add command line parameters click the '''Edit...''' button corresponding to the '''Command line Arguments''' label.&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The '''Command line Argument Details''' dialog is displayed.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id='Command line Argument Details'&amp;gt;&amp;lt;/span&amp;gt;[[File:Tutorial_CommandLineArgs.png|frame|center| '''Command line Argument Details''' ]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Click the '''New''' button to add a new value to the list.&lt;br /&gt;
&amp;lt;li&amp;gt;Click on the new value in the list and it will become editable. Change the value to '''-p'''.&lt;br /&gt;
&amp;lt;li&amp;gt;Click the '''OK''' button to save and close the dialog.&lt;br /&gt;
&amp;lt;li&amp;gt;Click the '''OK''' button on the '''SAF Component Details''' dialog to commit the changes to the SAF Component and close the dialog.&lt;br /&gt;
&amp;lt;li&amp;gt;Save the component model using the '''File &amp;gt; Save''' menu item.&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Configuring Physical Instances===&lt;br /&gt;
The configuration of our logical models is complete. During this process we have defined all of the 'types' of objects in our system. Now it is time to configure actual instances of those objects so that they can be built and deployed.&lt;br /&gt;
&lt;br /&gt;
Object instance configuration is done through the Availability Management Framework (AMF) via the '''AMF Configuration''' dialog.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;To launch this dialog go to the the '''Clovis''' menu and select '''AMF Configuration...'''&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The '''AMF Configuration''' dialog is displayed.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id='AMF Configuration Dialog'&amp;gt;&amp;lt;/span&amp;gt;[[File:Tutorial_AMFConfig.png|frame|center| '''AMF Configuration Dialog''' ]]&lt;br /&gt;
&lt;br /&gt;
You will note from the instructions on this page that the physical instances representing the objects in our model can be created manually or by using wizards. Using the wizards will save us both typing and time so we will use these instead of creating each instance manually.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====Creating Node Instances====&lt;br /&gt;
First we will create actual instances of the Node Types (in our case only one Node Type...SCNode) we created in our model.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Double-click AMF Configuration in the left hand pane. The Node Instance List appears.&lt;br /&gt;
&amp;lt;li&amp;gt;Click on Node Instance List. The right hand pane displays the fields we must fill out to create our node instance.&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In the right hand pane:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Select SCNode for the '''Node Type'''.&lt;br /&gt;
&amp;lt;li&amp;gt;Select SysBlade for the '''Blade type'''.&lt;br /&gt;
&amp;lt;li&amp;gt;Enter 1 for the '''Node Count'''.&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The complete form should look like the following.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id='Node Wizard Details'&amp;gt;&amp;lt;/span&amp;gt;[[File:Tutorial_AMFNodeWizardDetails.png|frame|center| '''Node Wizard Details''' ]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Click the '''Create Instance Tree''' button to create our node instance.&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Expanding the '''Node Instance List''' branch of the '''AMF Configuration''' tree in the left-hand pane reveals a new node instance named SCNodeI0 (indicating SCNode Instance 0).&lt;br /&gt;
&lt;br /&gt;
====Creating Service Group Instances====&lt;br /&gt;
Now we will create actual instances of the Service Groups that we defined in our model.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Click on Service Group List. The right hand pane displays the fields we must fill out to create our service group instance.&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In the right hand pane:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Select csa101SG (the only service group type we defined) for the '''Service Group Type'''.&lt;br /&gt;
*The '''Associated Node Instances''' list will be populated with all of the node instances that can be associated with the selected service group type.&lt;br /&gt;
&amp;lt;li&amp;gt;Select SCNodeI0 from the '''Associated Node Instances''' list.&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The completed form should look like the following.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id='Service Group Wizard Details'&amp;gt;&amp;lt;/span&amp;gt;[[File:Tutorial_AMFSGWizardDetails.png|frame|center| '''Service Group Wizard Details''' ]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Click the '''Create Instance Tree''' button to create our service group instance.&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
If you now completely expand the '''AMF Configuration''' branch of the tree in the left-hand pane you will see the following.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id='AMS Configuration Instance Details'&amp;gt;&amp;lt;/span&amp;gt;[[File:Tutorial_AMSConfigDetails.png|frame|center| '''AMF Configuration Instance Details''' ]]&lt;br /&gt;
&lt;br /&gt;
Notice that not only have the wizards created the node and service group instances for you, they have also filled out the entire instance tree. This was accomplished based on two key sets of information. The first of these is the association that was made between the service group type and the node instance in the '''Service Group Wizard'''. The second set of information is the component model that we created through the New Project Wizard and the Component Editor.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;[[File:OpenClovis_Note.png]]For more information regarding the specific properties of the generated instances see [[#Appendix B: AMF Configuration Instance Details|Appendix B: AMF Configuration Instance Details]].&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Thats it. We are done modelling the csa101 example!&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Click the OK button to commit our changes and close the dialog. &lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
Now its time to generate the framework code.&lt;br /&gt;
&lt;br /&gt;
==Generating the csa101 Code==&lt;br /&gt;
In this step we generate the source code for our example. The code that will be created is the framework code that handles all of the low level functionality provided by SAFplus Platform.&lt;br /&gt;
&lt;br /&gt;
To generate the source code go to the '''Project''' menu and select '''Generate Source'''. Several progress dialogs will appear and after a few seconds code generation will be complete.&lt;br /&gt;
&lt;br /&gt;
The source code and configuration XML files are generated and placed in subdirectories of the '''Project Area Location''' that we specified in the '''New Project Wizard'''. You can review this location by using the '''Project &amp;gt; Properties''' menu to get to the '''Project Properties''' dialog and then selecting '''Clovis System Project''' in the left hand pane.&lt;br /&gt;
&lt;br /&gt;
You can review the generated code from within the SAFplus Platform IDE. To do this go to the '''Clovis Workspace''' pane and expand the '''SampleModel''' node. The node tree should look like the following.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id='Clovis Workspace Code Tree'&amp;gt;&amp;lt;/span&amp;gt;[[File:Tutorial_CWCodeTree.png|frame|center| '''Clovis Workspace Code Tree''' ]]&lt;br /&gt;
&lt;br /&gt;
The code of particular interest to our example is in the SampleModel/src/app/csa101 branch of the tree. This is the code for our csa101 example. The csa101 example consists of two C modules (&amp;lt;code&amp;gt;clCompAppMain.c&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;clCompCfg.c&amp;lt;/code&amp;gt;) and two header files. There is also a make file that will be used for building the application. The &amp;lt;code&amp;gt;clCompAppMain.c&amp;lt;/code&amp;gt; file implements our 'Hello World!' application.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;[[File:OpenClovis_Note.png]]If you run code generation a second time you will be presented with a dialog box asking if you would like to make a backup copy of the existing source code before proceeding. You can answer No to this dialog.&lt;br /&gt;
&lt;br /&gt;
==Customizing the csa101 Code==&lt;br /&gt;
While the code that was generated in the previous section can be built and run we want to make some changes to it so that we can easily see what our example is doing. For our example we will be changing one source file (&amp;lt;code&amp;gt;clCompAppMain.c&amp;lt;/code&amp;gt;) and two make files.&lt;br /&gt;
&amp;lt;br&amp;gt;[[File:OpenClovis_Note.png]]In a real production situation this is the point where you would customize the code to perform the specific tasks of your product.&lt;br /&gt;
&lt;br /&gt;
You will notice in the C file that there are several places where you see the following comment block.&lt;br /&gt;
&lt;br /&gt;
{| cellspacing=&amp;quot;0&amp;quot; cellpadding = &amp;quot;0&amp;quot; border=&amp;quot;0&amp;quot; align = &amp;quot;center&amp;quot; width=&amp;quot;680&amp;quot;&lt;br /&gt;
 ! style=&amp;quot;color:black;background-color:#ffccaa;&amp;quot; align=&amp;quot;center&amp;quot;|clCompAppMain.c&lt;br /&gt;
 |-&lt;br /&gt;
 |&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 /*&lt;br /&gt;
   ---BEGIN_APPLICATION_CODE---&lt;br /&gt;
 */&lt;br /&gt;
&lt;br /&gt;
 // ...&lt;br /&gt;
&lt;br /&gt;
 /*&lt;br /&gt;
   ---END_APPLICATION_CODE---&lt;br /&gt;
 */&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Makefiles have a similar convention but with a slightly different syntax.&lt;br /&gt;
&lt;br /&gt;
{| cellspacing=&amp;quot;0&amp;quot; cellpadding = &amp;quot;0&amp;quot; border=&amp;quot;0&amp;quot; align = &amp;quot;center&amp;quot; width=&amp;quot;680&amp;quot;&lt;br /&gt;
 ! style=&amp;quot;color:black;background-color:#ffccaa;&amp;quot; align=&amp;quot;center&amp;quot;|Makefile&lt;br /&gt;
 |-&lt;br /&gt;
 |&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 # ---BEGIN_APPLICATION_CODE---&lt;br /&gt;
&lt;br /&gt;
 # ---END_APPLICATION_CODE---&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
These are sections of the file where it is safe to enter custom application code without having to worry about that code being overwritten if you were to again perform '''Generate Source''' for your model. This is important since the typical development cycle is an iterative process where you will return to the IDE to make modifications to your model.&lt;br /&gt;
&lt;br /&gt;
To simplify the process of building and running the csa101 example, OpenClovis, Inc. has already made the necessary code customizations and shipped this code with the SAFplus Platform SDK. At this point you can simply replace the generated source files with these customized versions to avoid typing in the changes. We will go over each customization below and explain what was done.&lt;br /&gt;
&lt;br /&gt;
To replace the generated files with the customized versions shipped with the SAFplus Platform SDK follow these instructions.&lt;br /&gt;
&amp;lt;br&amp;gt;[[File:OpenClovis_Note.png]]  The sample applications containing the csa101 example can be found under the installation directory at &amp;lt;code&amp;gt;&amp;lt;install_dir&amp;gt;/sdk-5.0/src/examples/eval&amp;lt;/code&amp;gt;. We will refer to this directory in the remaining of this section as &amp;lt;code&amp;gt;&amp;lt;eval_dir&amp;gt;&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ol&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Exit the SAFplus Platform IDE using the '''File &amp;gt; Exit''' menu item. If you are prompted to save changes before exiting answer yes.&lt;br /&gt;
&amp;lt;li&amp;gt;Navigate to the source code work area.&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;# cd /home/clovis/projectarea1/ide_workspace/SampleModel/src/app&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Using your favorite editor open the file &amp;lt;code&amp;gt;Makefile&amp;lt;/code&amp;gt; that resides in this directory. This is the application make file.&lt;br /&gt;
&amp;lt;li&amp;gt;Add the following line to this file within the first &amp;lt;code&amp;gt;BEGIN_APPLICATION_CODE&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;END_APPLICATION_CODE&amp;lt;/code&amp;gt; comment block.&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;SUBDIRS += ev&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
This will instruct the build process to build our custom output library.&lt;br /&gt;
&amp;lt;li&amp;gt;Save this file and exit the editor.&lt;br /&gt;
&amp;lt;li&amp;gt;Execute the following command to copy the output package to our working area.&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;# cp -r &amp;lt;eval_dir&amp;gt;/src/app/ev .&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Navigate to the component code work area.&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;# cd csa101&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Execute the following command to copy the csa101 source code.&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;# cp &amp;lt;eval_dir&amp;gt;/src/app/csa101/clCompAppMain.c .&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Execute the following command to copy the component make file.&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;# cp &amp;lt;eval_dir&amp;gt;/src/app/csa101/Makefile .&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Restart the SAFplus Platform IDE.&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;# cl-ide&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Customizing clCompAppMain.c===&lt;br /&gt;
The &amp;lt;code&amp;gt;clCompAppMain.c&amp;lt;/code&amp;gt; file is the C module which will implement our 'Hello World!' behavior. We have to make changes in several parts of this file.&lt;br /&gt;
&amp;lt;br&amp;gt;[[File:OpenClovis_Note.png]]If you copied the files as instructed in the section above then these changes have already been made to the files. Use this section to review and understand the changes.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ol&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;In the include section of this file we have added a new include for &amp;lt;code&amp;gt;ev.h&amp;lt;/code&amp;gt;. This refers to a special output library that we copied to our work area in the previous section. This output library is used to redirect output from the application to a component specific log. This is purely cosmetic but it will allow us to easily monitor what is happening when we run our example. (The following code begins at line 44 of the source file.)&lt;br /&gt;
&lt;br /&gt;
{| cellspacing=&amp;quot;0&amp;quot; cellpadding = &amp;quot;0&amp;quot; border=&amp;quot;0&amp;quot; align = &amp;quot;center&amp;quot; width=&amp;quot;680&amp;quot;&lt;br /&gt;
 ! style=&amp;quot;color:black;background-color:#ffccaa;&amp;quot; align=&amp;quot;center&amp;quot;|clCompAppMain.c&lt;br /&gt;
 |-&lt;br /&gt;
 |&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
 /*&lt;br /&gt;
   ---BEGIN_APPLICATION_CODE---&lt;br /&gt;
 */&lt;br /&gt;
&lt;br /&gt;
 #include &amp;quot;clCompAppMain.h&amp;quot;&lt;br /&gt;
 #include &amp;quot;../ev/ev.h&amp;quot;&lt;br /&gt;
&lt;br /&gt;
 /*&lt;br /&gt;
   ---END_APPLICATION_CODE---&lt;br /&gt;
 */&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;Next we define a couple of static variables that will keep track of the state of our application and a function to aid in showing when the application is running. (The following code begins at line 79 of the source file.)&lt;br /&gt;
&lt;br /&gt;
{| cellspacing=&amp;quot;0&amp;quot; cellpadding = &amp;quot;0&amp;quot; border=&amp;quot;0&amp;quot; align = &amp;quot;center&amp;quot; width=&amp;quot;680&amp;quot;&lt;br /&gt;
 ! style=&amp;quot;color:black;background-color:#ffccaa;&amp;quot; align=&amp;quot;center&amp;quot;|clCompAppMain.c&lt;br /&gt;
 |-&lt;br /&gt;
 |&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
 /*&lt;br /&gt;
   ---BEGIN_APPLICATION_CODE---&lt;br /&gt;
 */&lt;br /&gt;
&lt;br /&gt;
 static int running = 0;&lt;br /&gt;
 static int exiting = 0;&lt;br /&gt;
&lt;br /&gt;
 static char*&lt;br /&gt;
 show_progress(void)&lt;br /&gt;
 {&lt;br /&gt;
     static char bar[] = &amp;quot;          .&amp;quot;;&lt;br /&gt;
     static int progress = 0;&lt;br /&gt;
&lt;br /&gt;
     /* Show a little progress bar */&lt;br /&gt;
     return &amp;amp;bar[sizeof(bar)-2-(progress++)%(sizeof(bar)-2)];&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
 /*&lt;br /&gt;
   ---END_APPLICATION_CODE---&lt;br /&gt;
 */&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
The &amp;lt;code&amp;gt;running&amp;lt;/code&amp;gt; flag will be used to indicate whether the current application is active or suspended while &amp;lt;code&amp;gt;exiting&amp;lt;/code&amp;gt; is a flag that indicates that the main() function returns, causing the exit of the application.&lt;br /&gt;
&lt;br /&gt;
The function &amp;lt;code&amp;gt;show_progress&amp;lt;/code&amp;gt; returns a pointer to a c string with a number of spaces followed by a '.' character. The number of spaces in the string cycles from zero to an upper bound. This is used later on to provide visual indication of the progress of the application's output.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;Next we have added a function &amp;lt;code&amp;gt;hello_func&amp;lt;/code&amp;gt; to print the output. (The following code begins at line 118 of the source file.)&lt;br /&gt;
&lt;br /&gt;
{| cellspacing=&amp;quot;0&amp;quot; cellpadding = &amp;quot;0&amp;quot; border=&amp;quot;0&amp;quot; align = &amp;quot;center&amp;quot; width=&amp;quot;680&amp;quot;&lt;br /&gt;
 ! style=&amp;quot;color:black;background-color:#ffccaa;&amp;quot; align=&amp;quot;center&amp;quot;|clCompAppMain.c&lt;br /&gt;
 |-&lt;br /&gt;
 |&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
void *hello_func(void *unused)&lt;br /&gt;
{&lt;br /&gt;
    while (!exiting)&lt;br /&gt;
    {&lt;br /&gt;
        if (running)&lt;br /&gt;
        {&lt;br /&gt;
            clprintf(CL_LOG_SEV_INFO, &amp;quot;csa101: Hello World! %s\n&amp;quot;, show_progress());&lt;br /&gt;
        }&lt;br /&gt;
        sleep(1);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    return NULL;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Notice the while loop condition. This function uses the &amp;lt;code&amp;gt;exiting&amp;lt;/code&amp;gt; variable that was initialized to 0.  The loop will keep running until &amp;lt;code&amp;gt;exiting&amp;lt;/code&amp;gt; is set to non-zero.  The if condition within the while loop checks the value of the &amp;lt;code&amp;gt;running&amp;lt;/code&amp;gt; variable.  The work of the application: printing &amp;quot;Hello World!&amp;quot; along with the progress indicator will only be done when the &amp;lt;code&amp;gt;running&amp;lt;/code&amp;gt; variable is set non-zero.  Next the command &amp;lt;code&amp;gt;sleep(1)&amp;lt;/code&amp;gt; simply sleeps for a second so as not to fill log files too quickly or completely swamp the CPU.&lt;br /&gt;
&lt;br /&gt;
When &amp;lt;code&amp;gt;exiting&amp;lt;/code&amp;gt; becomes non-zero, we return from the function. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;Next we have added a function to initialize the special output library mentioned earlier (which is at line 245 in the source file).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;Next we create a thread and call the function &amp;lt;code&amp;gt;hello_func&amp;lt;/code&amp;gt; in the new thread context. (The following code begins at line 252 of the source file.)&lt;br /&gt;
&lt;br /&gt;
{| cellspacing=&amp;quot;0&amp;quot; cellpadding = &amp;quot;0&amp;quot; border=&amp;quot;0&amp;quot; align = &amp;quot;center&amp;quot; width=&amp;quot;680&amp;quot;&lt;br /&gt;
 ! style=&amp;quot;color:black;background-color:#ffccaa;&amp;quot; align=&amp;quot;center&amp;quot;|clCompAppMain.c&lt;br /&gt;
 |-&lt;br /&gt;
 |&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
/*  &lt;br /&gt;
 * ---BEGIN_APPLICATION_CODE---&lt;br /&gt;
 */&lt;br /&gt;
clprintf(CL_LOG_SEV_INFO, &amp;quot;csa101: Instantiated as component instance %s.\n&amp;quot;, appName.value);&lt;br /&gt;
&lt;br /&gt;
clprintf(CL_LOG_SEV_INFO, &amp;quot;%s: Waiting for CSI assignment...\n&amp;quot;, appName.value);&lt;br /&gt;
&lt;br /&gt;
rc = clOsalTaskCreateDetached(&amp;quot;hello_thread&amp;quot;, CL_OSAL_SCHED_OTHER, CL_OSAL_THREAD_PRI_NOT_APPLICABLE, 0, hello_func, NULL);&lt;br /&gt;
CL_ASSERT(rc == CL_OK);&lt;br /&gt;
&lt;br /&gt;
/*  &lt;br /&gt;
 * ---END_APPLICATION_CODE---&lt;br /&gt;
 */&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;Next we indicate to our app when we are exiting. (The following code begins at line 284 of the source file.)&lt;br /&gt;
&lt;br /&gt;
{| cellspacing=&amp;quot;0&amp;quot; cellpadding = &amp;quot;0&amp;quot; border=&amp;quot;0&amp;quot; align = &amp;quot;center&amp;quot; width=&amp;quot;680&amp;quot;&lt;br /&gt;
 ! style=&amp;quot;color:black;background-color:#ffccaa;&amp;quot; align=&amp;quot;center&amp;quot;|clCompAppMain.c&lt;br /&gt;
 |-&lt;br /&gt;
 |&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
/*  &lt;br /&gt;
 * ---BEGIN_APPLICATION_CODE---&lt;br /&gt;
 */&lt;br /&gt;
&lt;br /&gt;
 exiting = 1;&lt;br /&gt;
 clEvalAppLogStreamClose(gEvalLogStream);&lt;br /&gt;
&lt;br /&gt;
/*  &lt;br /&gt;
 * ---END_APPLICATION_CODE---&lt;br /&gt;
 */&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
We set the &amp;lt;code&amp;gt;exiting&amp;lt;/code&amp;gt; variable to 1. This will cause the loop in our &amp;lt;code&amp;gt;hello_func&amp;lt;/code&amp;gt; function to exit.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;Next we will put in code to manage the state of our application. (The following code begins at line 453 of the source file.)&lt;br /&gt;
&lt;br /&gt;
{| cellspacing=&amp;quot;0&amp;quot; cellpadding = &amp;quot;0&amp;quot; border=&amp;quot;0&amp;quot; align = &amp;quot;center&amp;quot; width=&amp;quot;680&amp;quot;&lt;br /&gt;
 ! style=&amp;quot;color:black;background-color:#ffccaa;&amp;quot; align=&amp;quot;center&amp;quot;|clCompAppMain.c&lt;br /&gt;
 |-&lt;br /&gt;
 |&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
void clCompAppAMFCSISet(SaInvocationT       invocation,&lt;br /&gt;
                        const SaNameT       *compName,&lt;br /&gt;
                        SaAmfHAStateT       haState,&lt;br /&gt;
                        SaAmfCSIDescriptorT csiDescriptor)&lt;br /&gt;
{&lt;br /&gt;
    /*&lt;br /&gt;
     * ---BEGIN_APPLICATION_CODE--- &lt;br /&gt;
     */&lt;br /&gt;
&lt;br /&gt;
    // ...&lt;br /&gt;
&lt;br /&gt;
    /*&lt;br /&gt;
     * ---END_APPLICATION_CODE---&lt;br /&gt;
     */&lt;br /&gt;
&lt;br /&gt;
    /*&lt;br /&gt;
     * Print information about the CSI Set&lt;br /&gt;
     */&lt;br /&gt;
&lt;br /&gt;
    clprintf (CL_LOG_SEV_INFO, &amp;quot;Component [%.*s] : PID [%d]. CSI Set Received\n&amp;quot;,&lt;br /&gt;
              compName-&amp;gt;length, compName-&amp;gt;value, mypid);&lt;br /&gt;
&lt;br /&gt;
    clCompAppAMFPrintCSI(csiDescriptor, haState);&lt;br /&gt;
&lt;br /&gt;
    /*&lt;br /&gt;
     * Take appropriate action based on state&lt;br /&gt;
     */&lt;br /&gt;
&lt;br /&gt;
    switch ( haState )&lt;br /&gt;
    {&lt;br /&gt;
        case SA_AMF_HA_ACTIVE:&lt;br /&gt;
        {&lt;br /&gt;
            /*&lt;br /&gt;
             * AMF has requested application to take the active HA state &lt;br /&gt;
             * for the CSI.&lt;br /&gt;
             */&lt;br /&gt;
&lt;br /&gt;
            /*&lt;br /&gt;
             * ---BEGIN_APPLICATION_CODE---&lt;br /&gt;
             */&lt;br /&gt;
&lt;br /&gt;
            clprintf(CL_LOG_SEV_INFO, &amp;quot;csa101: ACTIVE state requested; activating service\n&amp;quot;);&lt;br /&gt;
            running = 1;&lt;br /&gt;
&lt;br /&gt;
            /*&lt;br /&gt;
             * ---END_APPLICATION_CODE---&lt;br /&gt;
             */&lt;br /&gt;
&lt;br /&gt;
            saAmfResponse(amfHandle, invocation, SA_AIS_OK);&lt;br /&gt;
            break;&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| cellspacing=&amp;quot;0&amp;quot; cellpadding = &amp;quot;0&amp;quot; border=&amp;quot;0&amp;quot; align = &amp;quot;center&amp;quot; width=&amp;quot;680&amp;quot;&lt;br /&gt;
 ! style=&amp;quot;color:black;background-color:#ffccaa;&amp;quot; align=&amp;quot;center&amp;quot;|clCompAppMain.c&lt;br /&gt;
 |-&lt;br /&gt;
 |&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
        case SA_AMF_HA_STANDBY:&lt;br /&gt;
        {&lt;br /&gt;
            /*&lt;br /&gt;
             * AMF has requested application to take the standby HA state &lt;br /&gt;
             * for this CSI.&lt;br /&gt;
             */&lt;br /&gt;
&lt;br /&gt;
            /*&lt;br /&gt;
             * ---BEGIN_APPLICATION_CODE---&lt;br /&gt;
             */&lt;br /&gt;
&lt;br /&gt;
            clprintf(CL_LOG_SEV_INFO, &amp;quot;csa101: New state is not the ACTIVE; deactivating service\n&amp;quot;);&lt;br /&gt;
            running = 0;&lt;br /&gt;
&lt;br /&gt;
            /*&lt;br /&gt;
             * ---END_APPLICATION_CODE---&lt;br /&gt;
             */&lt;br /&gt;
&lt;br /&gt;
            saAmfResponse(amfHandle, invocation, SA_AIS_OK);&lt;br /&gt;
            break;&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        case SA_AMF_HA_QUIESCED:&lt;br /&gt;
        {&lt;br /&gt;
            /*&lt;br /&gt;
             * AMF has requested application to quiesce the CSI currently&lt;br /&gt;
             * assigned the active or quiescing HA state. The application &lt;br /&gt;
             * must stop work associated with the CSI immediately.&lt;br /&gt;
             */&lt;br /&gt;
&lt;br /&gt;
            /*&lt;br /&gt;
             * ---BEGIN_APPLICATION_CODE---&lt;br /&gt;
             */&lt;br /&gt;
            clprintf(CL_LOG_SEV_INFO, &amp;quot;csa101: Acknowledging new state\n&amp;quot;);&lt;br /&gt;
            running = 0;&lt;br /&gt;
&lt;br /&gt;
            /*&lt;br /&gt;
             * ---END_APPLICATION_CODE---&lt;br /&gt;
             */&lt;br /&gt;
&lt;br /&gt;
            saAmfResponse(amfHandle, invocation, SA_AIS_OK);&lt;br /&gt;
            break;&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
{| cellspacing=&amp;quot;0&amp;quot; cellpadding = &amp;quot;0&amp;quot; border=&amp;quot;0&amp;quot; align = &amp;quot;center&amp;quot; width=&amp;quot;680&amp;quot;&lt;br /&gt;
 ! style=&amp;quot;color:black;background-color:#ffccaa;&amp;quot; align=&amp;quot;center&amp;quot;|clCompAppMain.c&lt;br /&gt;
 |-&lt;br /&gt;
 |&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
        case SA_AMF_HA_QUIESCING:&lt;br /&gt;
        {&lt;br /&gt;
            /*&lt;br /&gt;
             * AMF has requested application to quiesce the CSI currently&lt;br /&gt;
             * assigned the active HA state. The application must stop work&lt;br /&gt;
             * associated with the CSI gracefully and not accept any new&lt;br /&gt;
             * workloads while the work is being terminated.&lt;br /&gt;
             */&lt;br /&gt;
&lt;br /&gt;
            /*&lt;br /&gt;
             * ---BEGIN_APPLICATION_CODE---&lt;br /&gt;
             */&lt;br /&gt;
            clprintf(CL_LOG_SEV_INFO, &amp;quot;csa101: Signaling completion of QUIESCING\n&amp;quot;);&lt;br /&gt;
            running = 0;&lt;br /&gt;
&lt;br /&gt;
            /*&lt;br /&gt;
             * ---END_APPLICATION_CODE---&lt;br /&gt;
             */&lt;br /&gt;
&lt;br /&gt;
            saAmfCSIQuiescingComplete(amfHandle, invocation, SA_AIS_OK);&lt;br /&gt;
            break;&lt;br /&gt;
        }&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
We have modified the &amp;lt;code&amp;gt;clCompAppAMFCSISet&amp;lt;/code&amp;gt; callback function to let our application know what to do when the state changes. In the case where the state changes to &amp;lt;code&amp;gt;SA_AMF_HA_ACTIVE&amp;lt;/code&amp;gt; we set the &amp;lt;code&amp;gt;running&amp;lt;/code&amp;gt; variable to 1. This will cause our application to begin printing the 'Hello World!' message. For any other state change we set the &amp;lt;code&amp;gt;running&amp;lt;/code&amp;gt; variable to 0 which will cause the message to stop printing. For any state change we print out a message indicating the new state of the application.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;The last change that we make is to indicate to our application when the component is being disassociated with the workflow. (The following code begins at line 588 of the source file.)&lt;br /&gt;
&lt;br /&gt;
{| cellspacing=&amp;quot;0&amp;quot; cellpadding = &amp;quot;0&amp;quot; border=&amp;quot;0&amp;quot; align = &amp;quot;center&amp;quot; width=&amp;quot;680&amp;quot;&lt;br /&gt;
 ! style=&amp;quot;color:black;background-color:#ffccaa;&amp;quot; align=&amp;quot;center&amp;quot;|clCompAppMain.c&lt;br /&gt;
 |-&lt;br /&gt;
 |&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
void clCompAppAMFCSIRemove(SaInvocationT  invocation,&lt;br /&gt;
                           const SaNameT  *compName,&lt;br /&gt;
                           const SaNameT  *csiName,&lt;br /&gt;
                           SaAmfCSIFlagsT csiFlags)&lt;br /&gt;
{&lt;br /&gt;
    ....&lt;br /&gt;
&lt;br /&gt;
    /*  &lt;br /&gt;
     * Add application specific logic for removing the work for this CSI.&lt;br /&gt;
     */&lt;br /&gt;
&lt;br /&gt;
    /*  &lt;br /&gt;
     * ---BEGIN_APPLICATION_CODE---&lt;br /&gt;
     */&lt;br /&gt;
    running = 0;&lt;br /&gt;
&lt;br /&gt;
    /*&lt;br /&gt;
     * ---END_APPLICATION_CODE---&lt;br /&gt;
     */&lt;br /&gt;
&lt;br /&gt;
    saAmfResponse(amfHandle, invocation, SA_AIS_OK);&lt;br /&gt;
&lt;br /&gt;
    return;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
In the &amp;lt;code&amp;gt;clCompAppAMFCSIRemove&amp;lt;/code&amp;gt; callback function we indicate to our application that we are no longer running so that the while loop in the &amp;lt;code&amp;gt;hello_func&amp;lt;/code&amp;gt; function stops printing our 'Hello World!' message.&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Customizing the Component MakeFile===&lt;br /&gt;
We have to make a small change to the component &amp;lt;code&amp;gt;MakeFile&amp;lt;/code&amp;gt; so that it knows about our special output library during the build. To do this we add the following lines. This file is located in &amp;lt;code&amp;gt;/home/clovis/projectarea1/ide_workspace/SampleModel/src/app&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| cellspacing=&amp;quot;0&amp;quot; cellpadding = &amp;quot;0&amp;quot; border=&amp;quot;0&amp;quot; align = &amp;quot;center&amp;quot; width=&amp;quot;680&amp;quot;&lt;br /&gt;
 ! style=&amp;quot;color:black;background-color:#ffccaa;&amp;quot; align=&amp;quot;center&amp;quot;|Component MakeFile&lt;br /&gt;
 |-&lt;br /&gt;
 |&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
    # ---BEGIN_APPLICATION_CODE---&lt;br /&gt;
&lt;br /&gt;
    SUBDIRS += ev&lt;br /&gt;
&lt;br /&gt;
    # ---END_APPLICATION_CODE---&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Customizing the Application MakeFile===&lt;br /&gt;
We have to make sure that our special output library is built along with our application. To do this we change the line listing the sudirectories to make as follows. This file is located in the directory &amp;lt;code&amp;gt;/home/clovis/projectarea1/ide_workspace/SampleModel/src/app/csa101&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
{| cellspacing=&amp;quot;0&amp;quot; cellpadding = &amp;quot;0&amp;quot; border=&amp;quot;0&amp;quot; align = &amp;quot;center&amp;quot; width=&amp;quot;680&amp;quot;&lt;br /&gt;
 ! style=&amp;quot;color:black;background-color:#ffccaa;&amp;quot; align=&amp;quot;center&amp;quot;|Application MakeFile&lt;br /&gt;
 |-&lt;br /&gt;
 |&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
    # ---BEGIN_APPLICATION_CODE---&lt;br /&gt;
    &lt;br /&gt;
    ...&lt;br /&gt;
&lt;br /&gt;
    # Library added for demo console handling for the evaluation kit&lt;br /&gt;
    ASP_LIBS   +=  libeval.a&lt;br /&gt;
&lt;br /&gt;
    # ---END_APPLICATION_CODE---&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
We are finished customizing our application code!&lt;br /&gt;
&lt;br /&gt;
==Building the csa101 Code==&lt;br /&gt;
&lt;br /&gt;
Now that we have finished customizing the code it is time to build it. The build process is launched using the '''Project &amp;gt; Build Project''' menu item. Once selected the '''Build Configuration''' dialog appears.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id='Build Configuration Details'&amp;gt;&amp;lt;/span&amp;gt;[[File:Tutorial_BuildConfigDetails.png|frame|center| '''Build Configuration Details''' ]]&lt;br /&gt;
&lt;br /&gt;
The '''Build Configuration''' dialog is used to gather specific information about the build we are about to perform. Using this dialog you can rebuild the same model using different cross builds, or including different chassis managers. We don't have to make any changes to this dialog since the default settings make sense for our sample application.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;[[File:OpenClovis_Note.png]]If you have prebuilt the SAFplus Platform libraries then you can check the '''Use pre built SAFplus''' checkbox and include the location of the prebuilt libraries. For more information about pre-building SAFplus Platform libraries, see ''SAFplus Platform SDK User Guide''.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;[[File:OpenClovis_Note.png]]The '''Include SNMP for North Bound Access''' control is checked by default. This just means that Net SNMP will be started along with our system. If you want end-to-end connectivity you will need to supply an SNMP Sub Agent and a MIB. See the ''SAFplus Platform SDK User Guide'' for more details.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;[[File:OpenClovis_Note.png]]In the '''Project''' menu if the '''Build Project''' entry is not highlighted, then click in the right pane i.e. '''Clovis Workspace''' pane and click the '''Project''' menu again. This not highlighting of the '''Build Project''' is because the '''Clovis Workspace''' is not selected properly because of moving focus to some other pane.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;Click the '''OK''' button to begin the build. If this is the first time that the project is being built, or if you have made changes to any setting on this screen, you will initially see a progress dialog indicating that the project is being configured. The configuration step is setting up the project for building. After the configuration has completed you will see a progress dialog indicating that the code is being built.&lt;br /&gt;
&lt;br /&gt;
==Creating the csa101 Images==&lt;br /&gt;
&lt;br /&gt;
Making the csa101 images will create software packages that can be deployed on target machines to run the example. The process of creating images is launched using the '''Project &amp;gt; Make Images''' menu item. Once selected the '''Make Images Configuration''' dialog appears.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id='Make Images Configuration Details'&amp;gt;&amp;lt;/span&amp;gt;[[File:Tutorial_MakeImagesConfigDetails.png|frame|center| '''Make Images Configuration Details''' ]]&lt;br /&gt;
&lt;br /&gt;
The '''Make Images Configuration''' dialog is used to indicate information about the environment on which the images will be deployed. This information is used to tailor the images to run on that environment. Here we will make the following modificaiton.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Enter a value for the '''Trap IP'''. This value specifies where the SNMP sub-agent will send traps at runtime. This field is optional but if specified must be a valid IP address. Enter a value of '127.0.0.1' in this field.&lt;br /&gt;
&amp;lt;li&amp;gt;Enter a value for the '''TIPC Net ID'''. This value represents a unique identifier used by TIPC to set up interprocess communication across the deployed OpenClovis SAFplus Platform cluster. This field is required and should default to '1340'.&lt;br /&gt;
&amp;lt;li&amp;gt;Check the '''Create Node Specific Images''' and '''Package Images into Tarballs''' check boxes. This will create tarballs of the images making them easy to deploy to various machines.&lt;br /&gt;
&amp;lt;li&amp;gt;The table on this dialog will hold a row for each node instance defined in the model. In our case this is only one...SCNodeI0. For each of these instances we can define the slot number in the chassis on which the node will run and the network interface that the node will use for communication. In our case enter '1' for the Slot Number and 'eth0' for the Network Interface.&lt;br /&gt;
&amp;lt;li&amp;gt;Click '''OK''' to begin the make image process. A dialog box will appear and after a few seconds the the make images process will be complete.&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The images will be populated at &amp;lt;project_area&amp;gt;/target/SampleModel/images. Each node-specific image is provided as a directory containing the run-time files (binaries, libraries, prerequisites, and configuration files) as well as a tarball with the same content.  &amp;lt;i&amp;gt;e.g.&amp;lt;/i&amp;gt; For our model containing one node (&amp;lt;code&amp;gt;SCNodeI0&amp;lt;/code&amp;gt;) the following files and directories are generated for deployment on the run-time system.&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;project_area&amp;gt;&lt;br /&gt;
   |+target&lt;br /&gt;
       |+&amp;lt;model&amp;gt;&lt;br /&gt;
           |+images&lt;br /&gt;
               |+SCNodeI0&lt;br /&gt;
               |   |+bin&lt;br /&gt;
               |   |+etc&lt;br /&gt;
               |   |+lib&lt;br /&gt;
               |   |+modules&lt;br /&gt;
               |   |+share&lt;br /&gt;
               |-SCNodeI0.tgz&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The rest of the steps in this example are all done from the command line so we can exit the IDE. To do this use the '''File &amp;gt; Exit''' menu item.&lt;br /&gt;
&lt;br /&gt;
==Deploying the csa101 Images==&lt;br /&gt;
Now that the image has been built we must deploy it so that we can run and observe our example. Since we are assuming that the example will be run on the same machine as the images were built this is a fairly trivial exercise. Use the following steps to deploy the runtime image.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ol&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;First we create a directory where we will install the image. In our case we will use &amp;lt;code&amp;gt;/root/asp&amp;lt;/code&amp;gt;.&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
# cd /root&lt;br /&gt;
# mkdir asp&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Next we navigate to that directory and untar the deployment package.&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
# cd /root/asp&lt;br /&gt;
# tar xzvf /home/clovis/projectarea1/target/SampleModel/images/SCNodeI0.tgz&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The System Controller is now installed and ready to run.&lt;br /&gt;
&lt;br /&gt;
[[File:OpenClovis_Note.png]] If you were going to run the example on a machine other than the one where the images were built you would first copy the installation tarball to that machine before performing the above steps.&lt;br /&gt;
&lt;br /&gt;
==Running the csa101 Example==&lt;br /&gt;
There are two parts to running the csa101 example. First we must start SAFplus Platform, and then we interact with the system components.&lt;br /&gt;
&lt;br /&gt;
===Starting SAFplus Platform===&lt;br /&gt;
&lt;br /&gt;
To start SAFplus Platform on System Controller node.&lt;br /&gt;
&amp;lt;ol&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Open a shell.&lt;br /&gt;
&amp;lt;li&amp;gt;Run the following commands&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
# cd /root/asp&lt;br /&gt;
# etc/init.d/asp start&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:OpenClovis_Note.png]] This assumes that you are running the SAFplus Platform example on the same PC that you are executing these commands. If you are running SAFplus Platform on a different machine then you should first ssh to that machine before executing the commands.&lt;br /&gt;
&lt;br /&gt;
[[File:OpenClovis_Note.png]] If SAFplus Platform fails to start properly it could be due to the machine's firewall being enabled. SAFplus Platform will not run on a machine which has firewall enabled. See the ''Environment Related Observation'' section of the ''SAFplus Platform Release Notes'' for more information.&lt;br /&gt;
&lt;br /&gt;
[[File:OpenClovis_Note.png]] By default the network interface used by the Group Membership Service is set to eth0. During the make images phase of the tutorial we also set the ethernet interface for node SCNodeI0 to be eth0. During image generation these configuration parameters are written to two files in the deployment package.&lt;br /&gt;
*&amp;lt;code&amp;gt;/root/asp/etc/clGmsConfig.xml&amp;lt;/code&amp;gt;&lt;br /&gt;
*&amp;lt;code&amp;gt;/root/asp/etc/asp.conf&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
There may be an occasion where you want to switch this interface for a machine on which you are deploying. If you would like to switch this interface on a machine without having to go through the process of rebuilding and redeploying, you can edit these two files and change the 'eth0' references to the interface you would like to use.&lt;br /&gt;
&lt;br /&gt;
===Interacting with the System Components===&lt;br /&gt;
Once SAFplus Platform is up and running the next step is to start csa101 by informing SAFplus Platform that it should start the application. The Evaluation System's model tells SAFplus Platform that csa101 is locked for instantiation. This means that the process will not be started when SAFplus Platform comes up. This method of starting csa's is used for the Evaluation System, allowing users to interact with csa's and clearly see their output/functionality. Usually this would not be the case with applications, where they would run when SAFplus Platform begins.&lt;br /&gt;
&lt;br /&gt;
At this point it would help to be familiar with the Service Availability Forum's notions of  Service Unit, Service Group, and administrative state.  The Service Availability Forum's Application Interface Specification (available from http://www.saforum.org/) is a good place to start.&lt;br /&gt;
&lt;br /&gt;
In brief, the sample applications in the Evaluation System are part of service units which in turn are part of service groups.  Service groups (and the service units that make up the service groups) can be in &amp;quot;administrative&amp;quot; states which include &amp;quot;LockInstantiation&amp;quot;, &amp;quot;LockAssignment&amp;quot;, and &amp;quot;Unlocked&amp;quot;.  There are other states, but these are the ones we care about for the purposes of this Evaluation System.  If the administrative state of a service unit is &amp;quot;LockInstantiation&amp;quot; then the application that is part of that service unit will not even be started.  If the administrative state is &amp;quot;LockAssignment&amp;quot; then the application will be started, but it will not be assigned any work.  If the administrative state is &amp;quot;Unlocked&amp;quot; then it will not only be started, but will have a workload assigned to it, which is to say that it will start doing work (or start providing service), rather than idly sit waiting for work.&lt;br /&gt;
&lt;br /&gt;
The administrative state of a service unit or service group can change from LockInstantiation to LockAssignment, from LockAssignment to Unlocked, or back to LockInstantiation, from Unlocked to LockAssignment.  A picture might help here:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;PartialServiceGroupAdministrativeStateDiagram&amp;quot;&amp;gt;&amp;lt;/span&amp;gt; [[File:eval_AdministrativeStateDiagram.png|frame|center| '''Partial Service Group Administrative State Diagram''' ]]&lt;br /&gt;
&lt;br /&gt;
As the figure shows, the administrative state of a service unit (or service group) can change from &amp;quot;LockInstantiation&amp;quot; to &amp;quot;LockAssignment&amp;quot; and from there to &amp;quot;Unlocked&amp;quot;, or back to &amp;quot;LockInstantiation&amp;quot;.  One way to change the administrative state of a service group is with the SAFplus Platform Console command line interface. &lt;br /&gt;
&lt;br /&gt;
To use the SAFplus Platform Console:&lt;br /&gt;
&amp;lt;ol&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; Open a terminal on the Development Machine. (Or ssh into System Controller node as root, if you are running SAFplus Platform on a machine other than the development machine.)&lt;br /&gt;
&amp;lt;li&amp;gt; Change to image bin directory: &amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;# cd /root/asp/bin&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt; Start the SAFplus Platform Console &amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;# ./asp_console&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt; From within the SAFplus Platform Console: &amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
cli[Test]-&amp;gt; setc 1&lt;br /&gt;
cli[Test:SCNodeI0]-&amp;gt; setc cpm&lt;br /&gt;
cli[Test:SCNodeI0:CPM]-&amp;gt; amsLockAssignment sg csa101SGI0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The above changes the administrative state of the group csa101SGI0 from &amp;quot;locked-for-instantiation&amp;quot; to &amp;quot;locked-for-assignment&amp;quot;.&lt;br /&gt;
&amp;lt;br&amp;gt;[[File:OpenClovis_Note.png]]For the command &amp;lt;code&amp;gt;cli[Test]-&amp;gt; setc 1&amp;lt;/code&amp;gt;, the 1 represents the physical slot number of the System Controller within the Chassis. Remember that we set our System Controller to be in slot 1 in the make images dialog.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;Now lets tail the application log file so that we can see whats going on. In another window, as root, run:&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
# tail -f /root/asp/var/log/csa101I0Log.latest&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You should see the following:&lt;br /&gt;
&lt;br /&gt;
{| cellspacing=&amp;quot;0&amp;quot; cellpadding = &amp;quot;0&amp;quot; border=&amp;quot;0&amp;quot; align = &amp;quot;center&amp;quot; width=&amp;quot;680&amp;quot;&lt;br /&gt;
 ! style=&amp;quot;color:black;background-color:#ffffaa;&amp;quot; align=&amp;quot;center&amp;quot;| /root/asp/var/log/csa101I0Log.latest&lt;br /&gt;
 |-&lt;br /&gt;
 |&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
Tue Jul 15 21:32:06 2008   (SCNodeI0.10849 : csa101_EO.---.---.00034 :   INFO)&lt;br /&gt;
 Component [csa101I0] : PID [10849]. Initializing&lt;br /&gt;
&lt;br /&gt;
Tue Jul 15 21:32:06 2008   (SCNodeI0.10849 : csa101_EO.---.---.00035 :   INFO)&lt;br /&gt;
    IOC Address             : 0x1&lt;br /&gt;
&lt;br /&gt;
Tue Jul 15 21:32:06 2008   (SCNodeI0.10849 : csa101_EO.---.---.00036 :   INFO)&lt;br /&gt;
    IOC Port                : 0x80&lt;br /&gt;
&lt;br /&gt;
Tue Jul 15 21:32:06 2008   (SCNodeI0.10849 : csa101_EO.---.---.00037 :   INFO)&lt;br /&gt;
 csa101: Instantiated as component instance csa101I0.&lt;br /&gt;
&lt;br /&gt;
Tue Jul 15 21:32:06 2008   (SCNodeI0.10849 : csa101_EO.---.---.00038 :   INFO)&lt;br /&gt;
 csa101I0: Waiting for CSI assignment...&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;Next change the administrative state of the csa101SGI0 service group to  &amp;quot;unlocked&amp;quot; by running (in the SAFplus Platform Console) :&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
# cli[Test:SCNodeI0:CPM]-&amp;gt; amsUnlock sg csa101SGI0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In the window where you're running the &amp;quot;tail -f&amp;quot; you should see:&lt;br /&gt;
&lt;br /&gt;
{| cellspacing=&amp;quot;0&amp;quot; cellpadding = &amp;quot;0&amp;quot; border=&amp;quot;0&amp;quot; align = &amp;quot;center&amp;quot; width=&amp;quot;680&amp;quot;&lt;br /&gt;
 ! style=&amp;quot;color:black;background-color:#ffffaa;&amp;quot; align=&amp;quot;center&amp;quot;| /root/asp/var/log/csa101I0Log.latest&lt;br /&gt;
 |-&lt;br /&gt;
 |&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
Tue Jul 15 21:36:17 2008   (SCNodeI0.10849 : csa101_EO.---.---.00049 :   INFO)&lt;br /&gt;
 csa101: ACTIVE state requested; activating service&lt;br /&gt;
&lt;br /&gt;
Tue Jul 15 21:36:18 2008   (SCNodeI0.10849 : csa101_EO.---.---.00050 :   INFO)&lt;br /&gt;
 csa101: Hello World! .&lt;br /&gt;
&lt;br /&gt;
Tue Jul 15 21:36:19 2008   (SCNodeI0.10849 : csa101_EO.---.---.00051 :   INFO)&lt;br /&gt;
 csa101: Hello World!  .&lt;br /&gt;
&lt;br /&gt;
Tue Jul 15 21:36:20 2008   (SCNodeI0.10849 : csa101_EO.---.---.00052 :   INFO)&lt;br /&gt;
 csa101: Hello World!   .&lt;br /&gt;
&lt;br /&gt;
Tue Jul 15 21:36:21 2008   (SCNodeI0.10849 : csa101_EO.---.---.00053 :   INFO)&lt;br /&gt;
 csa101: Hello World!    .&lt;br /&gt;
&lt;br /&gt;
Tue Jul 15 21:36:22 2008   (SCNodeI0.10849 : csa101_EO.---.---.00054 :   INFO)&lt;br /&gt;
 csa101: Hello World!     .&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
As you can tell from the output log our component is up and running! It is continuously printing our 'Hello World!' output.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;Now change the state of the csa101SGI0 service group back to &amp;quot;locked-for-assignment&amp;quot; by running (in the SAFplus Platform Console): &lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
# cli[Test:SCNodeI0:CPM]-&amp;gt; amsLockAssignment sg csa101SGI0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In the tail -f output you should see:&lt;br /&gt;
&lt;br /&gt;
{| cellspacing=&amp;quot;0&amp;quot; cellpadding = &amp;quot;0&amp;quot; border=&amp;quot;0&amp;quot; align = &amp;quot;center&amp;quot; width=&amp;quot;680&amp;quot;&lt;br /&gt;
 ! style=&amp;quot;color:black;background-color:#ffffaa;&amp;quot; align=&amp;quot;center&amp;quot;| /root/asp/var/log/csa101I0Log.latest&lt;br /&gt;
 |-&lt;br /&gt;
 |&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
Tue Jul 15 21:39:29 2008   (SCNodeI0.10849 : csa101_EO.---.---.00241 :   INFO)&lt;br /&gt;
 csa101: Hello World!  .&lt;br /&gt;
&lt;br /&gt;
Tue Jul 15 21:39:30 2008   (SCNodeI0.10849 : csa101_EO.---.---.00242 :   INFO)&lt;br /&gt;
 Component [csa101I0] : PID [10849]. CSI Set Received&lt;br /&gt;
&lt;br /&gt;
Tue Jul 15 21:39:30 2008   (SCNodeI0.10849 : csa101_EO.---.---.00243 :   INFO)&lt;br /&gt;
    CSI Flags               : [Target One]&lt;br /&gt;
&lt;br /&gt;
Tue Jul 15 21:39:30 2008   (SCNodeI0.10849 : csa101_EO.---.---.00244 :   INFO)&lt;br /&gt;
    CSI Name                : [csa101CSII0]&lt;br /&gt;
&lt;br /&gt;
Tue Jul 15 21:39:30 2008   (SCNodeI0.10849 : csa101_EO.---.---.00245 :   INFO)&lt;br /&gt;
    HA State                : [Quiesced]&lt;br /&gt;
&lt;br /&gt;
Tue Jul 15 21:39:30 2008   (SCNodeI0.10849 : csa101_EO.---.---.00246 :   INFO)&lt;br /&gt;
 csa101: Acknowledging new state&lt;br /&gt;
&lt;br /&gt;
Tue Jul 15 21:39:30 2008   (SCNodeI0.10849 : csa101_EO.---.---.00249 :   INFO)&lt;br /&gt;
 Component [csa101I0] : PID [10849]. CSI Remove Received&lt;br /&gt;
&lt;br /&gt;
Tue Jul 15 21:39:30 2008   (SCNodeI0.10849 : csa101_EO.---.---.00250 :   INFO)&lt;br /&gt;
    CSI                     : csa101CSII0&lt;br /&gt;
&lt;br /&gt;
Tue Jul 15 21:39:30 2008   (SCNodeI0.10849 : csa101_EO.---.---.00251 :   INFO)&lt;br /&gt;
    CSI Flags               : 0x2&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Our component has been put into Lock Assignment state so our 'Hello World!' output has stopped printing to the log.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;At this point you can either unlock the service group to change its state to &amp;quot;unlocked&amp;quot; or you can lock it for instantiation to change it to state  &amp;quot;locked-for-instantiation&amp;quot;.  The latter will cause the csa101 process to die.  From state &amp;quot;locked-for-assignment&amp;quot;, it is possible to change the state to &amp;quot;locked-for-instantiation&amp;quot; by running (in the SAFplus Platform Console):&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
cli[Test:SCNodeI0:CPM]-&amp;gt; amsLockInstantiation sg csa101SGI0&lt;br /&gt;
cli[Test:SCNodeI0:CPM] -&amp;gt; end&lt;br /&gt;
cli[Test:SCNodeI0] -&amp;gt; end&lt;br /&gt;
cli[Test] -&amp;gt; bye&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Stopping SAFplus Platform===&lt;br /&gt;
&lt;br /&gt;
To stop SAFplus Platform on the System Controller&lt;br /&gt;
&amp;lt;ol&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Open a shell.&lt;br /&gt;
&amp;lt;li&amp;gt;ssh into the System Controller node as root.&lt;br /&gt;
&amp;lt;li&amp;gt;Once logged in, run the following command&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
# cd /root/asp&lt;br /&gt;
# etc/init.d/asp stop&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Summary and Next Steps==&lt;br /&gt;
In the csa101 example we learned the following.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;How to create a system model using the '''SAFplus Platform IDE'''.&lt;br /&gt;
&amp;lt;li&amp;gt;How to generate the source code.&lt;br /&gt;
&amp;lt;li&amp;gt;How to customize this source code to fit a specific application.&lt;br /&gt;
&amp;lt;li&amp;gt;How to configure and build the customized source code.&lt;br /&gt;
&amp;lt;li&amp;gt;How to make runtime images and deploy them to target machines.&lt;br /&gt;
&amp;lt;li&amp;gt;How to start and stop '''SAFplus'''.&lt;br /&gt;
&amp;lt;li&amp;gt;How to interact with system components using the '''SAFplus Platform Console'''.&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The next logical step would be to run through the '''SAFplus Platform Evaluation System User Guide'''. This guide goes over more complex system configurations and introduces new concepts.&lt;br /&gt;
&lt;br /&gt;
For more in depth information on the '''SAFplus Platform IDE''' see the '''SAFplus Platform IDE User Guide'''.&lt;br /&gt;
&lt;br /&gt;
For more in depth information on the '''SAFplus Platform SDK''' see the '''SAFplus Platform SDK User Guide'''.&lt;br /&gt;
&lt;br /&gt;
==Appendix A: target.conf Settings==&lt;br /&gt;
&lt;br /&gt;
Below is a description of the values in the settings in the &amp;lt;code&amp;gt;target.conf&amp;lt;/code&amp;gt; file.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ol&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;'''TRAP_IP''' (Mandatory): Specifies where the SNMP SubAgent should send traps at runtime.  If you do not have an SNMP SubAgent in your model specify '''127.0.0.1''' as the value.  &amp;lt;i&amp;gt;e.g.&amp;lt;/i&amp;gt;:&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
TRAP_IP=127.0.0.1&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;'''CMM_IP''' (Mandatory if deployed on an ATCA chassis): Specifies the IP address of the target system's chassis management module or shelf manager. &amp;lt;i&amp;gt;ATCA chassis Example&amp;lt;/i&amp;gt;:&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
CMM_IP=169.254.1.2&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;'''CMM_USERNAME''' and '''CMM_PASSWORD''' (Mandatory if deployed on an ATCA chassis): Specifies the username and password required for the OpenClovis SAFplus Platform Chassis Manager to connect to the target system's chassis management module. &amp;lt;i&amp;gt;e.g.&amp;lt;/i&amp;gt;:&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
CMM_USERNAME=root&lt;br /&gt;
CMM_PASSWORD=password&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;'''INSTALL_PREREQUISITES=YES|NO''' (Mandatory): Specifies whether the target images will include 3rd party runtime prerequisites or not.  Say '''YES''' if the target nodes do not meet the target host requirements specified in the Installation section of this document.  &amp;lt;i&amp;gt;e.g.&amp;lt;/i&amp;gt;:&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
INSTALL_PREREQUISITES=YES&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;'''INSTANTIATE_IMAGES=YES|NO''' (Mandatory): Specifies whether &amp;lt;code&amp;gt;make images&amp;lt;/code&amp;gt; will generate node-instance specific images instead of only generating node-type specific images.  This option is a development optimization for advanced users of SAFplus Platform SDK.  If unsure, say '''YES'''. &amp;lt;i&amp;gt;e.g.&amp;lt;/i&amp;gt;:&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
INSTANTIATE_IMAGES=YES&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;'''CREATE_TARBALLS=YES|NO''' (Mandatory): Specifies whether the node-instance specific images created will be packaged into tarballs for deployment onto the target system.  If unsure, say '''YES'''.  &amp;lt;i&amp;gt;e.g.&amp;lt;/i&amp;gt;:&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
CREATE_TARBALLS=YES&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;'''TIPC_NETID''' (Mandatory): Specifies a unique identifier used by TIPC to set up interprocess communication across the deployed OpenClovis SAFplus Platform cluster.  This is an unsigned 32-bit integer, and &amp;lt;i&amp;gt;must&amp;lt;/i&amp;gt; be unique for every model that is deployed.  &amp;lt;i&amp;gt;e.g.&amp;lt;/i&amp;gt;:&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
TIPC_NETID=1337&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;'''Node Instance Details''': These specify the node-instance specific parameters required for deploying the model. For each node in the model there is a corresponding entry in the file:&lt;br /&gt;
&amp;lt;ol&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;'''SLOT_&amp;lt;node instance name&amp;gt;''' (Mandatory): Specifies which slot the node is located in.  The first slot is slot 1 -- DO NOT USE SLOT NUMBER 0, it is invalid.  When deployed to an ATCA chassis, the physical slot in which the blade is actually installed will override this value.  When deployed to regular (non-ATCA) systems, this is a logical slot and must be unique for every node in the cluster. &amp;lt;i&amp;gt;e.g.&amp;lt;/i&amp;gt;:&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
SLOT_SCNodeI0=1&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;'''LINK_&amp;lt;node instance name&amp;gt;''' (Optional): Specifies the ethernet interface used by the node for OpenClovis SAFplus Platform communication with the rest of the cluster.  If unspecified, this defaults to &amp;lt;code&amp;gt;eth0&amp;lt;/code&amp;gt;.  &amp;lt;i&amp;gt;e.g.&amp;lt;/i&amp;gt;:&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
LINK_SCNodeI0=eth0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;'''ARCH_&amp;lt;node instance name&amp;gt;''' (Optional if '''ARCH''' is specified): Specifies the target architecture of the node as a combination of machine architecture (MACH) and linux kernel version.  This is only required on a per-node basis if the target cluster has heterogeneous architectures across the nodes.  If it is a homogeneous cluster, a single '''ARCH''' parameter (described below) will suffice.  &amp;lt;i&amp;gt;e.g.&amp;lt;/i&amp;gt;:&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
ARCH_SCNodeI0=i386/linux-2.6.14&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;'''ARCH''' (Optional if node-specific '''ARCH_''' parameters are specified): Specifies the target architecture of all nodes in a homogeneous cluster as a combination of machine architecture (MACH) and linux kernel version.  Note: The build process automatically populates this variable based on the last target the model is built for.&amp;lt;i&amp;gt;e.g.&amp;lt;/i&amp;gt;:&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
ARCH=i386/linux-2.6.14&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
For example, if we have a three-node cluster with the following details:&lt;br /&gt;
{| border=&amp;quot;0&amp;quot; cellpadding=&amp;quot;3&amp;quot; align=&amp;quot;center&amp;quot; width=&amp;quot;600&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;bottom&amp;quot; | '''Example Node Instance Detail'''&lt;br /&gt;
|- style=&amp;quot;color:#ffffff; background:#549cc6&amp;quot;&lt;br /&gt;
!style=&amp;quot;color:#66b154; background:#09477c&amp;quot;| Node Name&lt;br /&gt;
!style=&amp;quot;color:#66b154; background:#09477c&amp;quot;| Slot Number&lt;br /&gt;
!style=&amp;quot;color:#66b154; background:#09477c&amp;quot;| Link Interface&lt;br /&gt;
!style=&amp;quot;color:#66b154; background:#09477c&amp;quot;| Architecture&lt;br /&gt;
|- style=&amp;quot;color:#ffffff; background:#549cc6&amp;quot;&lt;br /&gt;
|SCNodeI0&lt;br /&gt;
|1&lt;br /&gt;
|eth0&lt;br /&gt;
|i386/linux-2.6.14&lt;br /&gt;
|- style=&amp;quot;color:#ffffff; background:#549cc6&amp;quot;&lt;br /&gt;
|PayloadNodeI0&lt;br /&gt;
|3&lt;br /&gt;
|eth0&lt;br /&gt;
|i386/linux-2.6.14&lt;br /&gt;
|- style=&amp;quot;color:#ffffff; background:#549cc6&amp;quot;&lt;br /&gt;
|PayloadNodeI1&lt;br /&gt;
|4&lt;br /&gt;
|eth1&lt;br /&gt;
|ppc/linux-2.6.9&lt;br /&gt;
|}&lt;br /&gt;
we would specify the node instance details as:&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
SLOT_SCNodeI0=1&lt;br /&gt;
SLOT_PayloadNodeI0=3&lt;br /&gt;
SLOT_PayloadNodeI1=4&lt;br /&gt;
&lt;br /&gt;
LINK_SCNodeI0=eth0&lt;br /&gt;
LINK_PayloadNodeI0=eth0&lt;br /&gt;
LINK_PayloadNodeI1=eth1&lt;br /&gt;
&lt;br /&gt;
ARCH_SCNodeI0=i386/linux-2.6.14&lt;br /&gt;
ARCH_PayloadNodeI0=i386/linux-2.6.14&lt;br /&gt;
ARCH_PayloadNodeI1=ppc/linux-2.6.9&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Appendix B: AMF Configuration Details==&lt;br /&gt;
This appendix gives brief descriptions of configuration details for instances of different entities (like Node, Service Group, Service Unit etc) that are present in the '''Clovis''' -&amp;gt; '''AMF Configuration''' dialog box.&lt;br /&gt;
&lt;br /&gt;
===Node Instance===&lt;br /&gt;
This screen displays the node instance that was created by the Node Instance Wizard. This node instance was created because the node type '''SCNode''' was selected on the wizard screen.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id='Node Instance Details'&amp;gt;&amp;lt;/span&amp;gt;[[File:Tutorial_NodeInstanceDetails.png|frame|center| '''Node Instance Details''' ]]&lt;br /&gt;
&lt;br /&gt;
The information on this screen is described below.&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;'''Node Instance Name''': This field holds the name of the node instance. This name must be unique. The name that was generated combines the node type (SCNode), the letter I (for Instance), and the number 0 (since this is the first instance of this type).&lt;br /&gt;
&amp;lt;li&amp;gt;'''Node Type''': This field holds the node type that was selected on the wizard screen.&lt;br /&gt;
&amp;lt;li&amp;gt;'''MOID''': This is the unique identifier for the node instance. It was generated by the wizard. The format of this ID is a string representing the one and only instance of the chassis (\Chassis:0) defined in the Resource Editor followed by a string representing the first and only instance of the blade type (\SysBlade:0) that was selected in the Node Instance Wizard.&lt;br /&gt;
&amp;lt;br&amp;gt;[[File:OpenClovis_Note.png]]'''MOID''' is an acronym for Managed Object Identifier. It must be unique and is used to identify which hardware chassis and blade type this instance will run on.&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Service Unit Instance===&lt;br /&gt;
This screen displays the service unit instance that was created by the Service Group Instance Wizard. This service unit instance was created because the service unit type is associated with both the selected node type (SCNode) and the selected service group type (csa101SG) in our model.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id='SU Instance Details'&amp;gt;&amp;lt;/span&amp;gt;[[File:Tutorial_SUInstanceDetails.png|frame|center| '''SU Instance Details''' ]]&lt;br /&gt;
&lt;br /&gt;
The information on this screen is described below.&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;'''SU Instance Name''': This field holds the name of the service unit instance. This name must be unique. The name that was generated combines the service unit type (csa101SU), the letter I (for Instance), and the number 0 (since this is the first instance of this type).&lt;br /&gt;
&amp;lt;li&amp;gt;'''Service Unit Type''': This field holds the type of the service unit instance.&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Component Instance===&lt;br /&gt;
This screen displays the component instance that was created by the Service Group Instance Wizard. This component instance was created because the component type is associated with the created parent service unit type (csa101SU) in our model.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id='Component Instance Details'&amp;gt;&amp;lt;/span&amp;gt;[[File:Tutorial_ComponentInstanceDetails.png|frame|center| '''Component Instance Details''' ]]&lt;br /&gt;
&lt;br /&gt;
The information on this screen is described below.&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;'''Component Instance Name''': This field holds the name of the component instance. This name must be unique. The name that was generated combines the component type (csa101), the letter I (for Instance), and the number 0 (since this is the first instance of this type).&lt;br /&gt;
&amp;lt;li&amp;gt;'''Component Type''': This field holds the type of the component instance.&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Service Group Instance===&lt;br /&gt;
This screen displays the service group instance that was created by the Service Group Instance Wizard. This service group instance was created because the service group type '''csa101SG''' was selected on the wizard screen.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id='Service Group Instance Details'&amp;gt;&amp;lt;/span&amp;gt;[[File:Tutorial_SGInstanceDetails.png|frame|center| '''Service Group Instance Details''' ]]&lt;br /&gt;
&lt;br /&gt;
The information on this screen is described below.&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;'''SG Instance Name''': This field holds the name of the service group instance. This name must be unique. The name that was generated combines the service group type (csa101SG), the letter I (for Instance), and the number 0 (since this is the first instance of this type).&lt;br /&gt;
&amp;lt;li&amp;gt;'''ServiceGroup Type''': This field holds the type of the service group instance.&lt;br /&gt;
&amp;lt;li&amp;gt;'''Associated Service Units''': This button is used to associate service unit instances with this service group instance. Creating this association indicates that the selected service unit(s) will run within this service group instance.&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Clicking the '''Associated Service Units''' Edit... button will display the following dialog.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id='Associated Service Units Dialog'&amp;gt;&amp;lt;/span&amp;gt;[[File:Tutorial_SG_SI_Association.png|frame|center| '''Associated Service Units Dialog''' ]]&lt;br /&gt;
&lt;br /&gt;
This dialog lists the service unit instances that can be associated with this service group instance. The list contains only one item, the service unit instance that was created by the wizard. This item is checked indicating that the wizard automatically chose this service unit instance to run within the service group instance.&lt;br /&gt;
&lt;br /&gt;
===Service Instance Instance===&lt;br /&gt;
This screen displays the service instance that was created by the Service Group Instance Wizard. This service instance was created because the service instance type is associated with the parent service group type (csa101SG) in our model.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id='Service Instance Details'&amp;gt;&amp;lt;/span&amp;gt;[[File:Tutorial_SIInstanceDetails.png|frame|center| '''Service Instance Details''' ]]&lt;br /&gt;
&lt;br /&gt;
The information on this screen is described below.&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;'''Service Instance Name''': This field holds the name of the service instance. This name must be unique. The name that was generated combines the service instance type (csa101SI), the letter I (for Instance), and the number 0 (since this is the first instance of this type).&lt;br /&gt;
&amp;lt;li&amp;gt;'''ServiceInstance Type''': This field holds the type of the service instance.&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Component Service Instance Instance===&lt;br /&gt;
This screen displays the component service instance that was created by the Service Group Instance Wizard. This component service instance was created because the component service instance is associated with the parent service instance type (csa101SI) in our model.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id='Component Service Instance Details'&amp;gt;&amp;lt;/span&amp;gt;[[File:Tutorial_CSIInstanceDetails.png|frame|center| '''Component Service Instance Details''' ]]&lt;br /&gt;
&lt;br /&gt;
The information on this screen is described below.&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;'''Component Service Instance Name''': This field holds the name of the component service instance. This name must be unique. The name that was generated combines the component service instance type (csa101CSI), the letter I (for Instance), and the number 0 (since this is the first instance of this type).&lt;br /&gt;
&amp;lt;li&amp;gt;'''ComponentServiceInstance Type''': This field holds the type of the component service instance.&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;/div&gt;</summary>
		<author><name>MediaWiki spam cleanup</name></author>	</entry>

	<entry>
		<id>https://help.openclovis.com/index.php/Talk:Doc:latest/logtoolguide</id>
		<title>Talk:Doc:latest/logtoolguide</title>
		<link rel="alternate" type="text/html" href="https://help.openclovis.com/index.php/Talk:Doc:latest/logtoolguide"/>
				<updated>2012-02-21T03:24:20Z</updated>
		
		<summary type="html">&lt;p&gt;MediaWiki spam cleanup: All revisions contained links to www.buyxanaxitem.com, blanking&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>MediaWiki spam cleanup</name></author>	</entry>

	</feed>