In union option groups, the list of selected ids is encoded as a comma-delimited string. For example, if 'foo' and 'bar' are selected, the value 'foo,bar' is sent, ie ["foo", "bar"] -> "foo,bar" Under this scheme, with nothing selected, the empty string should be sent, ie. [] -> "" Before this change, the frontend code called the "none option" by id 'none'. There were several issues with this: * The frontend would send 'none' when nothing was selected, not ''. The backend ignored this as it ignores junk values in the options, treating them as though they hadn't been given. * The backend would attempt to set the default value of an option to "nothing selected", ie. [], by sending ''. The frontend would interpret this as nothing selected, *not even the 'none' option*, which caused a visual bug. * Everything would break if one of the legitimate options had the id 'none', which could easily happen eg. if a user had a 'none' k8s namespace. This is perhaps an unusual name, but our code shouldn't break when a particular arbitary string is used as an input. With this change, the none option is called '', which fixes all the above problems: * The frontend encodes [''] as '' * The frontend decodes '' as [''], and therefore shows the '' option as selected * The string '' is not a valid k8s namespace name and is a reasonable "prohibited value" for all other use cases. The backend already couldn't handle a value with this id correctly prior to this change anyway.
Weave Scope - Troubleshooting & Monitoring for Docker & Kubernetes
Weave Scope automatically generates a map of your application, enabling you to intuitively understand, monitor, and control your containerized, microservices based application.
Understand your Docker containers in real-time
Choose an overview of your container infrastructure, or focus on a specific microservice. Easily identify and correct issues to ensure the stability and performance of your containerized applications.
Contextual details and deep linking
View contextual metrics, tags and metadata for your containers. Effortlessly navigate between processes inside your container to hosts your containers run on, arranged in expandable, sortable tables. Easily to find the container using the most CPU or memory for a given host or service.
Interact with and manage containers
Interact with your containers directly: pause, restart and stop containers. Launch a command line. All without leaving the scope browser window.
Extend and customize via plugins
Add custom details or interactions for your hosts, containers and/or processes by creating Scope plugins; or just choose from some that others have already written at the Github Weaveworks Scope Plugins organization.
Getting started
sudo curl -L git.io/scope -o /usr/local/bin/scope
sudo chmod a+x /usr/local/bin/scope
scope launch
This script downloads and runs a recent Scope image from Docker Hub.
Now, open your web browser to http://localhost:4040. (If you're using
boot2docker, replace localhost with the output of boot2docker ip.)
For instructions on installing Scope on Kubernetes, DCOS or ECS, see the docs.
Getting help
If you have any questions about, feedback for or problems with Scope:
- Read the Weave Scope docs.
- Invite yourself to the #weave-community slack channel.
- Ask a question on the #weave-community slack channel.
- Join the Weave User Group and get invited to online talks, hands-on training and meetups in your area.
- Send an email to weave-users@weave.works
- File an issue.
Your feedback is always welcome!