Page MenuHomePhabricator

Expand conftool to support multiple objects via a schema definition.
Closed, ResolvedPublic

Description

In its current incarnation, conftool only supports two object types:

  • nodes, describing single applications in a service pool
  • service, describing the corresponding service

What we want is to extend its behaviour so that any generic object type can be added programmaticaly, via a schema file.

Schema files should allow to add objects with different characteristics, and also allow the same syncronization mechanism that we use now: define which objects are present from yaml files, and - for specific objects - also the content of objects themselves.

The objects in the schema will have the following format:

<object-name>:
   path: <base-path>
   tags: [tag1, tag2]
  schema:
     field1: { type: string, default: <field1-default-value> }

So we need to define the base path on the kvstore for an object class, the tags needed to describe the object itself, and a schema with a dict of fields, their type and default value.

As far as types are concerned, I think we can limit ourselves to a series of simple ones, namely:

  • integer
  • string
  • boolean
  • list
  • dictionary/hash

relationships between such objects can be described as dependencies: for example, nodes depend on a corresponding service being defined. Those can be listed as well., and will determine the order of syncronization between the on disc structures and the live data.

Event Timeline

Joe created this task.Jan 20 2017, 12:18 PM
Restricted Application added a subscriber: Aklapper. · View Herald TranscriptJan 20 2017, 12:18 PM
Joe moved this task from Backlog to Doing on the User-Joe board.Jan 22 2017, 10:38 AM

Change 288609 had a related patch set uploaded (by Giuseppe Lavagetto):
Generalize entities definitions

https://gerrit.wikimedia.org/r/288609

Change 288881 had a related patch set uploaded (by Giuseppe Lavagetto):
Add schema support

https://gerrit.wikimedia.org/r/288881

Joe moved this task from Doing to Blocked on others on the User-Joe board.Jan 24 2017, 8:34 AM
Krinkle moved this task from Inbox to Radar on the Performance-Team board.Jan 26 2017, 10:28 PM

Change 288609 merged by jenkins-bot:
Generalize entities definitions

https://gerrit.wikimedia.org/r/288609

Joe moved this task from Blocked on others to Doing on the User-Joe board.Feb 15 2017, 4:40 PM

Change 288881 merged by jenkins-bot:
Add schema support

https://gerrit.wikimedia.org/r/288881

Joe added a comment.Feb 24 2017, 5:27 PM

The code is done and a package has been created, although still only in experimental. This task can be considered resolved though.

Joe closed this task as Resolved.Feb 24 2017, 5:28 PM