[lucicfg] Implement 'graph.key(typ1, id1, typ2, id2, ...)' internal API.

Config entities will be defined as named nodes in a DAG. graph.key(...) returns
an opaque label that identifies such a node.

We intern keys to make their identities (~address) match their values 1-to-1.
That allows them to be used as keys in Starlark dicts and Go maps right away,
without any additional code.

R=nodir@chromium.org
BUG=833946

Change-Id: I4db550081e331b2e4c49761ac581f0543814e213
Reviewed-on: https://chromium-review.googlesource.com/c/1357257
Reviewed-by: Nodir Turakulov <nodir@chromium.org>
Commit-Queue: Vadim Shtayura <vadimsh@chromium.org>
9 files changed
tree: 462bb3e2ca7a6ee3f0db31c631bf58795bff1f4e
  1. appengine/
  2. auth/
  3. buildbucket/
  4. cipd/
  5. client/
  6. common/
  7. config/
  8. dm/
  9. examples/
  10. gce/
  11. grpc/
  12. hardcoded/
  13. infra/
  14. logdog/
  15. luci_notify/
  16. lucicfg/
  17. lucictx/
  18. machine-db/
  19. milo/
  20. mmutex/
  21. mp/
  22. scheduler/
  23. scripts/
  24. server/
  25. starlark/
  26. tokenserver/
  27. tools/
  28. tumble/
  29. vpython/
  30. web/
  31. .travis.yml
  32. AUTHORS
  33. codereview.settings
  34. CONTRIBUTING.md
  35. CONTRIBUTORS
  36. LICENSE
  37. OWNERS
  38. pre-commit-go.yml
  39. PRESUBMIT.py
  40. README.md
README.md

luci-go: LUCI services and tools in Go

GoDoc

Installing

LUCI Go code is meant to be worked on from an Chromium infra.git checkout, which enforces packages versions and Go toolchain version. First get fetch via depot_tools.git then run:

fetch infra
cd infra/go
eval `./env.py`
cd src/go.chromium.org/luci

Contributing

Contributing uses the same flow as Chromium contributions.