<div dir="ltr"><div class="gmail_extra"><div class="gmail_quote"><div>Hello,</div><div><br></div><div>Thanks Digimer for letting me about the tool. I was unaware of any such tools!! And because of that I was able to search clufter-cli tool for the migration.</div><div><br></div><div>Thanks a lot John for explaining each and everything in detailed manner. I am really admired the knowledge you guys have!!</div><div><br></div><div>I also noticed that clufter tool is written by you :). I am very thankful to you as it would save the ass of millions people like me who may have had difficulties in migration of their legacy programs from CMAN to Pacemaker.</div><div><br></div><div>As suggested I tried to migrate my existing cluster.conf file from CMAN to Pacemaker through the use of clufter. But have couple of queries going forward, would appreciate if you could answer these.</div><div><br></div><div>Please find In-line queries:</div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex"><br></blockquote><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex"><br>
Message: 2<br>
Date: Fri, 22 Jan 2016 21:52:17 +0100<br>
From: Jan Pokorn? &lt;<a href="mailto:jpokorny@redhat.com">jpokorny@redhat.com</a>&gt;<br>
To: Cluster Labs - All topics related to open-source clustering<br>
        welcomed        &lt;<a href="mailto:users@clusterlabs.org">users@clusterlabs.org</a>&gt;<br>
Subject: Re: [ClusterLabs] Cluster resources migration from CMAN to<br>
        Pacemaker<br>
Message-ID: &lt;<a href="mailto:20160122205217.GE28856@redhat.com">20160122205217.GE28856@redhat.com</a>&gt;<br>
Content-Type: text/plain; charset=&quot;us-ascii&quot;<br>
<br>
Hello,<br>
<br>
yes, as Digimer mentioned, clufter is the tool you may want to look<br>
at.  Do not expect fully automatic miracles from it, though.<br>
It&#39;s meant to show the conversion path, but one has to be walk it<br>
very carefully and make adjustments every here and there.<br>
In part because there is not a large overlap between resource agents<br>
of both kinds.<br>
<br>
On 22/01/16 17:32 +0530, jaspal singla wrote:<br>
&gt; I desperately need some help in order to migrate my cluster configuration<br>
&gt; from CMAN (RHEL-6.5) to PACEMAKER (RHEL-7.1).<br>
&gt;<br>
&gt; I have tried to explore a lot but couldn&#39;t find similarities configuring<br>
&gt; same resources (created in CMAN&#39;s cluster.conf file) to Pacemaker.<br>
&gt;<br>
&gt; I&#39;d like to share cluster.conf of RHEL-6.5 and want to achieve the same<br>
&gt; thing through Pacemaker. Any help would be greatly appreciable!!<br>
&gt;<br>
&gt; *Cluster.conf file*<br>
&gt;<br>
&gt; ######################################################################<br>
&gt;<br>
<br>
[reformatted configuration file below for better readability and added<br>
some comment in-line]<br>
<br>
&gt; &lt;?xml version=&quot;1.1&quot;?&gt;<br>
                 ^^^<br>
                 no, this is not the way to increase config version<br>
<br>
This seems to be quite frequented mistake; looks like configuration<br>
tools should have strictly refrained from using this XML declaration<br>
in the first place.<br>
<br>
&gt; &lt;cluster config_version=&quot;1&quot; name=&quot;HA1-105_CLUSTER&quot;&gt;<br>
&gt;   &lt;fence_daemon clean_start=&quot;0&quot; post_fail_delay=&quot;0&quot; post_join_delay=&quot;3&quot;/&gt;<br>
&gt;   &lt;clusternodes&gt;<br>
&gt;     &lt;clusternode name=&quot;<a href="http://ha1-105.test.com" rel="noreferrer" target="_blank">ha1-105.test.com</a>&quot; nodeid=&quot;1&quot; votes=&quot;1&quot;&gt;<br>
&gt;       &lt;fence/&gt;<br>
&gt;     &lt;/clusternode&gt;<br>
<br>
(I suppose that other nodes were omitted)<br></blockquote><div><br></div><div>No, its Single-Node Cluster Geographical Redundancy Configuration. </div><div><br></div><div>The geographical redundancy configuration allows us to locate two Prime Optical instances at geographically remote sites. One server instance is active; the other server instance is standby. The HA agent switches to the standby Element Management System (EMS) instance if an unrecoverable failure occurs on the active EMS instance. In a single-node cluster geographical redundancy configuration, there are two clusters with different names (one on each node), each containing a server.<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex">
<br>
&gt;   &lt;/clusternodes&gt;<br>
&gt;   &lt;cman/&gt;<br>
&gt;   &lt;fencedevices/&gt;<br>
&gt;   &lt;rm log_facility=&quot;local4&quot; log_level=&quot;7&quot;&gt;<br>
&gt;     &lt;failoverdomains&gt;<br>
&gt;       &lt;failoverdomain name=&quot;Ha1-105_Domain&quot; nofailback=&quot;0&quot; ordered=&quot;0&quot; restricted=&quot;0&quot;/&gt;<br>
<br>
TODO: have to check what does it mean when FOD is not saturated<br>
      with any cluster node references<br></blockquote><div><br></div><div>No worries of using FOD as I don&#39;t think, it will be in use as we have groups in pacemaker.</div><div> </div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex">
<br>
&gt;     &lt;/failoverdomains&gt;<br>
&gt;     &lt;resources&gt;<br>
&gt;       &lt;script file=&quot;/data/Product/HA/bin/ODG_IFAgent.py&quot; name=&quot;REPL_IF&quot;/&gt;<br>
<br>
General LSB-compliance-assumed commands are currently using a path hack<br>
with lsb:XYZ resource specification.  In this very case, it means<br>
the result after the conversion refers to<br>
&quot;lsb:../../..//data/Product/HA/bin/FsCheckAgent.py&quot;.<br>
<br>
Agreed, there should be a better way to support arbitrary locations</blockquote><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex">
beside /etc/init.d/XYZ.<br></blockquote><div><br></div><div>Configured resources as LSB as you suggested.</div><div> </div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex">
<br>
&gt;       &lt;script file=&quot;/data/Product/HA/bin/ODG_ReplicatorAgent.py&quot; name=&quot;ORACLE_REPLICATOR&quot;/&gt;<br>
&gt;       &lt;script file=&quot;/data/Product/HA/bin/OracleAgent.py&quot; name=&quot;CTM_SID&quot;/&gt;<br>
&gt;       &lt;script file=&quot;/data/Product/HA/bin/NtwIFAgent.py&quot; name=&quot;NTW_IF&quot;/&gt;<br>
&gt;       &lt;script file=&quot;/data/Product/HA/bin/FsCheckAgent.py&quot; name=&quot;FSCheck&quot;/&gt;<br>
&gt;       &lt;script file=&quot;/data/Product/HA/bin/ApacheAgent.py&quot; name=&quot;CTM_APACHE&quot;/&gt;<br>
&gt;       &lt;script file=&quot;/data/Product/HA/bin/CtmAgent.py&quot; name=&quot;CTM_SRV&quot;/&gt;<br>
&gt;       &lt;script file=&quot;/data/Product/HA/bin/RsyncAgent.py&quot; name=&quot;CTM_RSYNC&quot;/&gt;<br>
&gt;       &lt;script file=&quot;/data/Product/HA/bin/HeartBeat.py&quot; name=&quot;CTM_HEARTBEAT&quot;/&gt;<br>
&gt;       &lt;script file=&quot;/data/Product/HA/bin/FlashBackMonitor.py&quot; name=&quot;FLASHBACK&quot;/&gt;<br>
&gt;     &lt;/resources&gt;<br>
&gt;     &lt;service autostart=&quot;0&quot; domain=&quot;Ha1-105_Domain&quot; exclusive=&quot;0&quot; name=&quot;ctm_service&quot; recovery=&quot;disable&quot;&gt;<br>
<br>
autostart=&quot;0&quot; discovered a bug in processing towards &quot;pcs commands&quot;<br>
output:<br>
<a href="https://pagure.io/clufter/57ebc50caf2deddbc6c12042753ce0573a4a260c" rel="noreferrer" target="_blank">https://pagure.io/clufter/57ebc50caf2deddbc6c12042753ce0573a4a260c</a></blockquote><div><br></div><div>I don&#39;t want to start my some of the configured services when Pacemaker starts ( like it had happen in RGManager), I want to manually starts the services. Is their any way I can do that?</div><div><br></div><div><br></div><div>Also, I am trying to start the cluster but &quot;Resource Group: SERVICE-ctm_service-GROUP&quot; is going into unmanaged state and cannot be started. Could you please give me some clue of it like why its going in unamanged state and how it can be rectified?</div><div><br></div><div><br></div><div>Here is the resource group snip:</div><div><br></div><div><div>Resource Group: SERVICE-ctm_service-GROUP</div><div>     RESOURCE-script-FSCheck    (lsb:../../..//cisco/PrimeOpticalServer/HA/bin/FsCheckAgent.py):        Started <a href="http://ha1-103.cisco.com">ha1-103.cisco.com</a> (unmanaged)</div><div>     RESOURCE-script-NTW_IF     (lsb:../../..//cisco/PrimeOpticalServer/HA/bin/NtwIFAgent.py):  Stopped (unmanaged)</div><div>     RESOURCE-script-CTM_RSYNC  (lsb:../../..//cisco/PrimeOpticalServer/HA/bin/RsyncAgent.py):  Stopped (unmanaged)</div><div>     RESOURCE-script-REPL_IF    (lsb:../../..//cisco/PrimeOpticalServer/HA/bin/ODG_IFAgent.py): Stopped (unmanaged)</div><div>     RESOURCE-script-ORACLE_REPLICATOR  (lsb:../../..//cisco/PrimeOpticalServer/HA/bin/ODG_ReplicatorAgent.py): Stopped (unmanaged)</div><div>     RESOURCE-script-CTM_SID    (lsb:../../..//cisco/PrimeOpticalServer/HA/bin/OracleAgent.py): (target-role:Stopped) Started <a href="http://ha1-103.cisco.com">ha1-103.cisco.com</a> (unmanaged)</div><div>     RESOURCE-script-CTM_SRV    (lsb:../../..//cisco/PrimeOpticalServer/HA/bin/CtmAgent.py):    Stopped (unmanaged)</div><div>     RESOURCE-script-CTM_APACHE (lsb:../../..//cisco/PrimeOpticalServer/HA/bin/ApacheAgent.py): FAILED <a href="http://ha1-103.cisco.com">ha1-103.cisco.com</a> (unmanaged)</div><div> Resource Group: SERVICE-ctm_heartbeat-GROUP</div><div>     RESOURCE-script-CTM_HEARTBEAT      (lsb:../../..//cisco/PrimeOpticalServer/HA/bin/HeartBeat.py):   Started <a href="http://ha1-103.cisco.com">ha1-103.cisco.com</a></div><div> Resource Group: SERVICE-ctm_monitoring-GROUP</div><div>     RESOURCE-script-FLASHBACK  (lsb:../../..//cisco/PrimeOpticalServer/HA/bin/FlashBackMonitor.py):    Started <a href="http://ha1-103.cisco.com">ha1-103.cisco.com</a></div></div><div><br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex"><br>
<br>
&gt;       &lt;script ref=&quot;FSCheck&quot;/&gt;<br>
&gt;       &lt;script ref=&quot;NTW_IF&quot;/&gt;<br>
&gt;       &lt;script __independent_subtree=&quot;2&quot; __max_restarts=&quot;20&quot; __restart_expire_time=&quot;900&quot; ref=&quot;CTM_RSYNC&quot;/&gt;<br>
&gt;       &lt;script __independent_subtree=&quot;2&quot; __max_restarts=&quot;10&quot; __restart_expire_time=&quot;900&quot; ref=&quot;REPL_IF&quot;/&gt;<br>
<br>
__independent_subtree is currently not supported<br>
<br>
&gt;       &lt;script __independent_subtree=&quot;2&quot; ref=&quot;ORACLE_REPLICATOR&quot;/&gt;<br>
&gt;       &lt;script ref=&quot;CTM_SID&quot;&gt;<br>
&gt;         &lt;script ref=&quot;CTM_SRV&quot;&gt;<br>
&gt;           &lt;script ref=&quot;CTM_APACHE&quot;/&gt;<br>
&gt;         &lt;/script&gt;<br>
&gt;       &lt;/script&gt;<br>
&gt;     &lt;/service&gt;<br>
&gt;     &lt;service autostart=&quot;1&quot; exclusive=&quot;0&quot; max_restarts=&quot;3&quot; name=&quot;ctm_heartbeat&quot; recovery=&quot;restart&quot; restart_expire_time=&quot;900&quot;&gt;<br>
<br>
recovery/restart parameters were not supported until now:<br>
<a href="https://pagure.io/clufter/0bddf45587588db38086c6b6498ab77004fa59b4" rel="noreferrer" target="_blank">https://pagure.io/clufter/0bddf45587588db38086c6b6498ab77004fa59b4</a></blockquote><div><br></div><div>What should we use instead of &quot;__independent_subtree=&quot;2&quot; in Pacemaker? Is their any other way  to achieve the previous behavior?  Please suggest.</div><div> </div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex"><br>
<br>
&gt;       &lt;script ref=&quot;CTM_HEARTBEAT&quot;/&gt;<br>
&gt;     &lt;/service&gt;<br>
&gt;     &lt;service autostart=&quot;1&quot; exclusive=&quot;0&quot; max_restarts=&quot;3&quot; name=&quot;ctm_monitoring&quot; recovery=&quot;restart&quot; restart_expire_time=&quot;900&quot;&gt;<br>
&gt;       &lt;script ref=&quot;FLASHBACK&quot;/&gt;<br>
&gt;     &lt;/service&gt;<br>
&gt;   &lt;/rm&gt;<br>
&gt; &lt;/cluster&gt;<br>
&gt;<br>
&gt; ###############################################<br>
&gt;<br>
&gt;<br>
&gt; * Quries/concerns:*<br>
&gt;<br>
&gt; -&gt; How can I specifically mentioned above 10 resources through Pacemaker?<br>
<br>
Using the newest code from the next branch of linked repository<br>
(will make a standard release shortly) the suggestion that still<br>
require manual review(!) is a sequence of commands like this:<br>
<br>
$ clufter ccs2pcscmd -gqs jaspal.conf<br>
&gt; pcs cluster auth <a href="http://ha1-105.test.com" rel="noreferrer" target="_blank">ha1-105.test.com</a><br>
&gt; pcs cluster setup --start --name HA1-105_CLUSTER <a href="http://ha1-105.test.com" rel="noreferrer" target="_blank">ha1-105.test.com</a> \<br>
&gt;   --consensus 12000 --token 10000 --join 60<br>
&gt; sleep 60<br>
&gt; pcs cluster cib tmp-cib.xml --config<br>
&gt; pcs -f tmp-cib.xml property set stonith-enabled=false<br>
&gt; pcs -f tmp-cib.xml \<br>
&gt;   resource create RESOURCE-script-FSCheck \<br>
&gt;   lsb:../../..//data/Product/HA/bin/FsCheckAgent.py \<br>
&gt;   op monitor id=RESOURCE-script-FSCheck-OP-monitor name=monitor \<br>
&gt;   interval=30s<br>
&gt; pcs -f tmp-cib.xml \<br>
&gt;   resource create RESOURCE-script-NTW_IF \<br>
&gt;   lsb:../../..//data/Product/HA/bin/NtwIFAgent.py \<br>
&gt;   op monitor id=RESOURCE-script-NTW_IF-OP-monitor name=monitor \<br>
&gt;   interval=30s<br>
&gt; pcs -f tmp-cib.xml \<br>
&gt;   resource create RESOURCE-script-CTM_RSYNC \<br>
&gt;   lsb:../../..//data/Product/HA/bin/RsyncAgent.py \<br>
&gt;   op monitor id=RESOURCE-script-CTM_RSYNC-OP-monitor name=monitor \<br>
&gt;   interval=30s<br>
&gt; pcs -f tmp-cib.xml \<br>
&gt;   resource create RESOURCE-script-REPL_IF \<br>
&gt;   lsb:../../..//data/Product/HA/bin/ODG_IFAgent.py \<br>
&gt;   op monitor id=RESOURCE-script-REPL_IF-OP-monitor name=monitor \<br>
&gt;   interval=30s<br>
&gt; pcs -f tmp-cib.xml \<br>
&gt;   resource create RESOURCE-script-ORACLE_REPLICATOR \<br>
&gt;   lsb:../../..//data/Product/HA/bin/ODG_ReplicatorAgent.py \<br>
&gt;   op monitor id=RESOURCE-script-ORACLE_REPLICATOR-OP-monitor \<br>
&gt;   name=monitor interval=30s<br>
&gt; pcs -f tmp-cib.xml \<br>
&gt;   resource create RESOURCE-script-CTM_SID \<br>
&gt;   lsb:../../..//data/Product/HA/bin/OracleAgent.py \<br>
&gt;   op monitor id=RESOURCE-script-CTM_SID-OP-monitor name=monitor \<br>
&gt;   interval=30s<br>
&gt; pcs -f tmp-cib.xml \<br>
&gt;   resource create RESOURCE-script-CTM_SRV \<br>
&gt;   lsb:../../..//data/Product/HA/bin/CtmAgent.py \<br>
&gt;   op monitor id=RESOURCE-script-CTM_SRV-OP-monitor name=monitor \<br>
&gt;   interval=30s<br>
&gt; pcs -f tmp-cib.xml \<br>
&gt;   resource create RESOURCE-script-CTM_APACHE \<br>
&gt;   lsb:../../..//data/Product/HA/bin/ApacheAgent.py \<br>
&gt;   op monitor id=RESOURCE-script-CTM_APACHE-OP-monitor name=monitor \<br>
&gt;   interval=30s<br>
&gt; pcs -f tmp-cib.xml \<br>
&gt;   resource create RESOURCE-script-CTM_HEARTBEAT \<br>
&gt;   lsb:../../..//data/Product/HA/bin/HeartBeat.py \<br>
&gt;   op monitor id=RESOURCE-script-CTM_HEARTBEAT-OP-monitor name=monitor \<br>
&gt;   interval=30s<br>
&gt; pcs -f tmp-cib.xml \<br>
&gt;   resource create RESOURCE-script-FLASHBACK \<br>
&gt;   lsb:../../..//data/Product/HA/bin/FlashBackMonitor.py \<br>
&gt;   op monitor id=RESOURCE-script-FLASHBACK-OP-monitor name=monitor \<br>
&gt;   interval=30s<br>
&gt; pcs -f tmp-cib.xml \<br>
&gt;   resource group add SERVICE-ctm_service-GROUP RESOURCE-script-FSCheck \<br>
&gt;   RESOURCE-script-NTW_IF RESOURCE-script-CTM_RSYNC \<br>
&gt;   RESOURCE-script-REPL_IF RESOURCE-script-ORACLE_REPLICATOR \<br>
&gt;   RESOURCE-script-CTM_SID RESOURCE-script-CTM_SRV \<br>
&gt;   RESOURCE-script-CTM_APACHE<br>
&gt; pcs -f tmp-cib.xml resource \<br>
&gt;   meta SERVICE-ctm_service-GROUP is-managed=false<br>
&gt; pcs -f tmp-cib.xml \<br>
&gt;   resource group add SERVICE-ctm_heartbeat-GROUP \<br>
&gt;   RESOURCE-script-CTM_HEARTBEAT<br>
&gt; pcs -f tmp-cib.xml resource \<br>
&gt;   meta SERVICE-ctm_heartbeat-GROUP migration-threshold=3 \<br>
&gt;   failure-timeout=900<br>
&gt; pcs -f tmp-cib.xml \<br>
&gt;   resource group add SERVICE-ctm_monitoring-GROUP \<br>
&gt;   RESOURCE-script-FLASHBACK<br>
&gt; pcs -f tmp-cib.xml resource \<br>
&gt;   meta SERVICE-ctm_monitoring-GROUP migration-threshold=3 \<br>
&gt;   failure-timeout=900<br>
&gt; pcs cluster cib-push tmp-cib.xml --config<br>
<br>
&gt; -&gt; the services being used in &lt;service&gt; section are not init.d services,<br>
&gt; these services uses script reference of above defined resources. So, how<br>
&gt; could I do the same thing in Pacemaker?<br>
<br>
see above around &quot;FsCheckAgent.py&quot;<br>
<br>
&gt; Couple of concerns I have:<br>
&gt; -&gt; How do I create failover domains in pacemaker and link resources to it?<br>
<br>
In Pacemaker, there is no direct equivalent of failover domains.<br>
The constraints and temporal behavior cooked into the concept<br>
of failover domains are split into orthogonal properties in the<br>
Pacemaker world[*] and it&#39;s true some traits are very hard to model<br>
there, if achievable without external support (like in the resource<br>
agent directly) at all.<br>
<br>
Also note that failover domains allow for easy mixing of symmetric<br>
and assymetric behavior within the subset of nodes for particular<br>
resources, something really not straightforward in Pacemaker.<br>
<br>
On the other hand, Pacemaker offers very fine-grained approach to<br>
customizing the behavior of the cluster so forgetting about concept<br>
of failover domain should be relatively painless.<br>
<br>
[*] search for failoverdomain in<br>
    <a href="https://pagure.io/clufter/blob/master/f/__root__/doc/rgmanager-pacemaker.02.resources.txt" rel="noreferrer" target="_blank">https://pagure.io/clufter/blob/master/f/__root__/doc/rgmanager-pacemaker.02.resources.txt</a><br>
<br>
&gt; -&gt; By default there are several pre-defined resource API&#39;s given in<br>
&gt; Pacemaker and we can use them if our requirements match with pre-defined<br>
&gt; API&#39;s like IPADDR2, Apache etc. But what if I have some python scripts and<br>
&gt; want to use those scripts as resources? Is their any way to do that?<br>
<br>
If they are one-off launchers of some long-running process, you may<br>
want to use ocf:anything resource (contained in resource-agents package):<br>
<br>
<a href="https://github.com/ClusterLabs/resource-agents/blob/master/heartbeat/anything" rel="noreferrer" target="_blank">https://github.com/ClusterLabs/resource-agents/blob/master/heartbeat/anything</a><br>
<br>
and refer to them via binfile parameter.<br>
<br>
Or you may consider making your scripts OCF compliant:<br>
<a href="http://www.linux-ha.org/doc/dev-guides/ra-dev-guide.html" rel="noreferrer" target="_blank">http://www.linux-ha.org/doc/dev-guides/ra-dev-guide.html</a><br>
<br>
--<br>
Jan (Poki)<br>
-------------- next part --------------<br>
A non-text attachment was scrubbed...<br>
Name: not available<br>
Type: application/pgp-signature<br>
Size: 819 bytes<br>
Desc: not available<br>
URL: &lt;<a href="http://clusterlabs.org/pipermail/users/attachments/20160122/d48e17c5/attachment-0001.sig" rel="noreferrer" target="_blank">http://clusterlabs.org/pipermail/users/attachments/20160122/d48e17c5/attachment-0001.sig</a>&gt;<br>
<br>
------------------------------<br>
<br>
_______________________________________________<br>
Users mailing list<br>
<a href="mailto:Users@clusterlabs.org">Users@clusterlabs.org</a><br>
<a href="http://clusterlabs.org/mailman/listinfo/users" rel="noreferrer" target="_blank">http://clusterlabs.org/mailman/listinfo/users</a><br>
<br>
<br>
End of Users Digest, Vol 12, Issue 39<br>
*************************************<br></blockquote><div><br></div><div>Thanks</div><div>Jaspal</div><div> </div></div><br></div></div>