Details
-
Task
-
Status: Resolved
-
Major
-
Resolution: Fixed
-
1.7.0
-
None
Description
web-ui imposes validation for minimum limit of host components required to be installed for a service. Right now it is 1 for all master components except ZK server and HBase Master. So on "Assign Master" page UI doesn't show "+" sign next to any service component except ZK server and HBase master.
For now for Slave components, the minimum limit is 1 and maximum limit is "ALL". So If user does not select any host, web-ui throws validation error asking user to atleast select one host.
As a resolution to this ticket, this validation logic needs to be fetched from the server. Stacks API has cardinality field
{ "href" : "http://c6401.ambari.apache.org:8080/api/v1/stacks/HDP/versions/2.1/stackServices/HDFS/components?fields=StackServiceComponents/cardinality", "items" : [ { "href" : "http://c6401.ambari.apache.org:8080/api/v1/stacks/HDP/versions/2.1/services/HDFS/components/DATANODE", "StackServiceComponents" : { "cardinality" : "1+", "component_name" : "DATANODE", "service_name" : "HDFS", "stack_name" : "HDP", "stack_version" : "2.1" } }, { "href" : "http://c6401.ambari.apache.org:8080/api/v1/stacks/HDP/versions/2.1/services/HDFS/components/HDFS_CLIENT", "StackServiceComponents" : { "cardinality" : "0+", "component_name" : "HDFS_CLIENT", "service_name" : "HDFS", "stack_name" : "HDP", "stack_version" : "2.1" } }, { "href" : "http://c6401.ambari.apache.org:8080/api/v1/stacks/HDP/versions/2.1/services/HDFS/components/JOURNALNODE", "StackServiceComponents" : { "cardinality" : "0+", "component_name" : "JOURNALNODE", "service_name" : "HDFS", "stack_name" : "HDP", "stack_version" : "2.1" } }, { "href" : "http://c6401.ambari.apache.org:8080/api/v1/stacks/HDP/versions/2.1/services/HDFS/components/NAMENODE", "StackServiceComponents" : { "cardinality" : "1", "component_name" : "NAMENODE", "service_name" : "HDFS", "stack_name" : "HDP", "stack_version" : "2.1" } }, { "href" : "http://c6401.ambari.apache.org:8080/api/v1/stacks/HDP/versions/2.1/services/HDFS/components/SECONDARY_NAMENODE", "StackServiceComponents" : { "cardinality" : "1", "component_name" : "SECONDARY_NAMENODE", "service_name" : "HDFS", "stack_name" : "HDP", "stack_version" : "2.1" } }, { "href" : "http://c6401.ambari.apache.org:8080/api/v1/stacks/HDP/versions/2.1/services/HDFS/components/ZKFC", "StackServiceComponents" : { "cardinality" : "0+", "component_name" : "ZKFC", "service_name" : "HDFS", "stack_name" : "HDP", "stack_version" : "2.1" } } ] }
cardinality can also have value "ALL" which means service component should be installed on all hosts of the cluster
{ "href" : "http://c6401.ambari.apache.org:8080/api/v1/stacks/HDP/versions/2.1/services/GANGLIA/components/GANGLIA_MONITOR?fields=StackServiceComponents/cardinality", "StackServiceComponents" : { "cardinality" : "ALL", "component_name" : "GANGLIA_MONITOR", "service_name" : "GANGLIA", "stack_name" : "HDP", "stack_version" : "2.1" } }
We should not require hard-coded map in App.StackServiceComponent.cardinality function once this ticket is resolved