Mark Chu-Carroll created AURORA-520:
---------------------------------------
Summary: Update "aurora job diff"
Key: AURORA-520
URL: https://issues.apache.org/jira/browse/AURORA-520
Project: Aurora
Issue Type: Task
Components: Client
Reporter: Mark Chu-Carroll
Users complain because the "aurora job diff" command doesn't work the way
they'd like it to. In its current form, it's got two major problems.
(1) It reports spurious differences between running jobs and local
configurations, due to automatically filled fields that shouldn't be part of
the comparison. For example, a job config specifies who created using an
Identity record, which has two fields: the rolename running the job, and the
username of the person who ran the command. For comparing live jobs against
local configs, that's irrelevant.
(2) The diffs are very hard to read. Diffs are generated by downloading the
running task configs for a job, and writing them to the disk in json; then
uploading the local config, getting *it* converted to thrift, and writing that
to the disk in json, and then running the Unix diff command on the two json
files.
Unix diff isn't the most pleasant thing to read under the best of
circumstances. But making matters worse, the entire json format of the files
being diffed is unfamiliar to users! So they're looking at a hard-to-read diff
syntax ranging over an unfamiliar data syntax.
To fix this, I'd like to replace the use of Unix diff. The json records for the
configs are semantically just trees. Writing a comparison function that
compares corresponding trees is pretty easy, and can generate *much* better
diffs.
An example of the diff to be generated by this code would be something like the
following - assuming that the local config increases the number of instances
from 2 to 3, and the CPU request from 2 to 4:
{noformat}
Local config has a different number of tasks: 3 local vs 2 running
Task diffs found in instance 1:
Field 'numCpus' is '4' local, but '2' remote
2 total diff(s) found
{noformat}
--
This message was sent by Atlassian JIRA
(v6.2#6252)