[master] KUDU-2181 Fix duplicate master address and remove unsafe flag tag

While testing add master on a physical cluster, observed that
supplying only hostnames without port resulted in duplicates
being supplied to bring up new master which in turn leads
to failure in creating distributed Raft config on startup.

For e.g. kudu master add hp1,hp2 h2

Reason being hp2 is compared as hp2:7051 whereas in the vector
of strings "master_addresses", it contains hp1,hp2.

This changes adds a new function ParseAddresses() in HostPort class
that's a variant of existing ParseStrings() function and takes
a vector of strings instead. This new function is used
in the duplicate detection logic.

This change also removes the unsafe tag from
--master_addr_add_new_master as the feature is ready but keeps
it hidden as it's only meant to be used by the add master orchestration
tool.

This one is tricky to test locally and write a test because
we need to specify ports for starting masters/tservers.
Verified the fix on physical cluster. Along with CM integration
we can add a systest later.

Change-Id: Icf29730e3a6b225adb24ff161cac2ad777b46b81
Reviewed-on: http://gerrit.cloudera.org:8080/17500
Tested-by: Bankim Bhavsar <bankim@cloudera.com>
Reviewed-by: Alexey Serbin <aserbin@cloudera.com>
4 files changed