The default clouddriver.yml ignores the repository specified in spinnaker.yml and instead gets the entire catalog. This is confusing because some registries (like the default 'index.docker.io') don't let you get the entire catalog and return a '401 Unauthorized'. I modified clouddriver.yml to use the repository, but also removed 'library/nginx' so that it still gets the entire catalog by default
Add ‘:’ to the username and passwordFile environment vars so that they default to null (and thus you can connect to public repos). Otherwise it was using the literal string “${SPINNAKER_DOCKER_USERNAME}” as my username
This is currently configurable by command line parameters with fixed service
names so is restricted to the pre-existing service names (not HA names).
However except for that one function that converts the options toa list of
endpoints, that is the only place for that restriction. So in the interim
you can replace that method with a different mechanism if you need different
names (such as 'clouddriver-ro', etc) and it should work.
--service_hosts=<comma delimited list of IPs, defaulting to "localhost">
--<service>=<comma listed list of network locations> where <service> is
"clouddriver", etc and <network location> is <host[:port]> where the
standard port will be assumed if not provided. A host of "*" means
use all the hosts in --service_hosts.
If --service_hosts is empty then by default no services will be used.
If --<service>=<empty> then that service will be ignored. If non empty
it will override --service_hosts (unless it is "*" in which case it is
service_hosts).
By default each service specifies its endpoints as "*" so the net effect
is that it will look at the standard ports for localhost if you say nothing,
or the standard ports for --service_hosts if you just specify that.
I renamed a couple modules that github doesnt seem to track.
metric_collector_handlers.py -> spectator_handlers.py
metric_collector.py -> spinnaker_metric_tool.py
I pulled out the HTTP and Monitor server into server_handlers.py
I changed the CommandHandler to distinguish between web and commandline.
I use argparse subcommands and have each primary module inject its commands
(the main tool asks each module for its commands).
Added datadog integration as another alternative, requirements.txt
to facilitate setup, and a bash script for execution because of the
complex pythonpath.