We are using CDAP inside a system where component (mircorservice) names contain ".".
However, I get:
2016-09-15T18:23:17 LOG <test_cl_wagonized_1> [cdap_app_a6a3c.start] INFO: Reponse code: 400, Response: Invalid app name 'fff70fa0f1eb45c1ae143335b35940c4.hello_world_cdap_app.service_id.location_id.att.com': Invalid Application ID.
If I try to replace the "." with underscores, it works:
Is valid and gets deployed.
Perhaps it is worth explaining why we want to do this so it does not seem like nitpicking for the sake of doing so.
We are now bridging CDAP applications with other types of containers running on external clusters, e.g., Docker.
To do so, we are using Consul (similar to ETCD/Confd). Consul has a DNS interface. I need to be able to use it to query the connection information of a CDAP application, which is something like "cdap_IP:port/some_stream_path.
So I want to register in consul
- somedocker.whatever.domain.com as dockerhost:ip
- somecdap.whatever.domain.com as cdap_IP:port/some_stream_path/streamname
And from inside of the docker I want to be able to call Consul's service discovery using DNS, e.g. Just looking up somecdap.whatever.domain.com should return to me cdap_IP:port/some_stream_path/streamname. Then the docker can post into the stream.
Except your non-allowing me to use somecdap.whatever.domain.com as an app name makes this process onerous and I have to map what I want as a name to what your API can tolerate as a name.