Hi Jeff,

The closest we have to documentation is the python doc comments we have in the 
base abstract class of StackAdvisor - 
https://github.com/apache/ambari/blob/trunk/ambari-server/src/main/resources/stacks/stack_advisor.py#L23


Each stack advisor does 4 things for which there are 4 ?abstract methods

1. recommend component layout - def recommendComponentLayout(self, services, 
hosts)

2. validate component layout - def validateComponentLayout(self, services, 
hosts)

3. recommend configurations based on layout - def recommendConfigurations(self, 
services, hosts)

4. validate configurations based on layout - def validateConfigurations(self, 
services, hosts)


If you notice, all 4 methods are passed 2 important pieces of information:

1. services - Contains any/all information about services being installed and 
which hosts they are installed on

2. hosts - Contains any/all information about hosts in cluster


The above 2 data structures will tell you anything about the cluster being 
created/edited.


So to the question about 'how to get the number of nodemangers' - it should be 
available by parsing both these data structures. We have utility method called 
'def getHostsWithComponent(self, serviceName, componentName, services, hosts)' 
which gets the hosts a particular component is installed. You can see its usage 
at - 
https://github.com/apache/ambari/blob/trunk/ambari-server/src/main/resources/stacks/HDP/2.0.6/services/stack_advisor.py#L722?


Hoping this helps.

Best regards,

Srimanth




________________________________
From: Mithun Mathew <[email protected]>
Sent: Monday, January 25, 2016 8:50 PM
To: [email protected]
Cc: [email protected]
Subject: Re: Is there any guide on how to write stackadvisor ?

Hi Jeff

Some existing implementation might help you give an idea of how stack_advisor 
is implemented to component layout recommendation: 
https://github.com/apache/ambari/blob/trunk/ambari-server/src/main/resources/stacks/HDP/2.3/services/stack_advisor.py#L25-#L51

If you can explain what exactly you are trying to achieve, I might be able to 
help you with it.

Regards
Matt

On Mon, Jan 25, 2016 at 4:31 PM, Jeff Zhang 
<[email protected]<mailto:[email protected]>> wrote:
I try to add stackadvisor for one component. The logic is simple, but don't 
know how to do that use ambari api. e.g. how to get the number of nodemangers, 
how to get the number of hosts that with my service deployed.  If there's any 
python api doc, there would be very helpful.


--
Best Regards

Jeff Zhang



--
Mithun Mathew (Matt)

  *

www.linkedin.com/in/mithunmatt/<http://www.linkedin.com/in/mithunmatt/>

Reply via email to