DDF Registry

Goals

  • Capture registry requirement/use cases and high level architecture/design artifacts for the creation of a DDF registry.

Assumptions

  • Definitions of terms
    • Administrator: person with role, responsibility and permissions to make configuration changes to a node.
    • Node: a single running instance of DDF-based or analogous capabilities. A node has one or more federation methods.
      • The identification key for a node is its name currently, subject to change.
    • Federation Method: named, agreed-upon communication method.
      • properties necessary to define communication with a node. (connection-uri, timeout, security info, etc.)
    • Enterprise: a group of nodes with a purposefully-defined relationship.
    • Identity node: the specific instance that an administrator is configuring.
    • registry Information:  A "contact list entry" of a node, 1 or more federation methods that the node makes available, and any properties known about each federation method.  Additionally, this will be expanded to include information beyond just available federation methods to include information for understanding or interacting with the node referenced.
  • A node has a local store of registry information (a "Contact List") that will always consist of at least its "identity node" information, and will generally contain one or more other node's information for federation purposes.

Requirements/Use Cases

#TitleUser StoryImportanceNotes
1Publish As an administrator, I want to publish node information that I know about to another node so that I can expose the chosen node's registry information to somewhere else.

Must Have

    • This may be my identity node contact information or any other node contact information that I have within my node information contact list.
    • a node includes all federation methods and related property information
    • Additional node information should be included if present (e.g., Describe or any other node-specific information stored as part of the node information)
2Unpublish

As an administrator, I want to unpublish node information that I published to an external node so that the information is no longer exposed there

Must Have
3UpdateAs an administrator, I want to update node information for nodes that I have published to another node so that I can inform that node of changes.Must Have
  • Examples of changes:
    • new IPs/URIs
    • FQDN
    • timeouts
4Subscribe/Poll

As an administrator, I want to be able to configure access to external node information provider, which will then be polled periodically for node information to add to my local contact list, so that I can have node information for other nodes with which to configure federation (automatically or otherwise).

Must Have
  • can edit polling interval
5

Federation Method Preference

As an administrator, I want to be able to choose my preferred order of the federation methods I can use, so that I can determine the priority for automatic federation configuration against nodes discovered through node information exchange.

Must Have
  • Reasons for preference might include bandwidth requirements, secure/public, etc
  • Default priority provided out-of-the-box should be discussed
6Disable NodeAs an administrator, I want to disable federation to a node in my node contact list so that it can be hidden from use by users and processes interacting with my node's services.Must Have
  • A disabled node is still available for publish/unpublish to external node information providers, property editing, etc. - but is not visible or available for any functional operations in the local node
7Enable NodeAs an administrator, I want to enable a disabled node in my node contact list so that it can be put into an active state for users and processes interacting with my node's servicesMust Have
8Node Preview

As an administrator, I want to preview/view the node contact information present at an external node information provider, so that I can decide whether or not to configure that node as a provider of node information for my local contact list



9Source SearchAs an administrator, I want to find a node based on a source id/site name so that I can find a specific site in the enterprise


10Date SearchAs an administrator, I want to find a node based on publish date


11Remove

As an administrator, I want to be able to remove a configuration of an external node information provider so that I no longer use it to retrieval node contact list information updates

Must Have
12Manualy Add NodeAs an administrator, I want to manually add a new node contact record to my contact list, including multiple federation methods and associated propertiesMust Have
13Delete

As an administrator, I want to delete node contact record to my contact list (including all of its information)

Must Have
14Edit

As an administrator, I want to edit a node contact record in my contact list (including adding federation methods and editing any related properties or adding new ones)

Must Have
  • Example properties to edit
    • change timeouts
    • change service uris
  • Need to flag somehow that it has been edited
  • If the node contact entry came from an external node information provider, then any edited or new properties or federation methods should be considered local "overrides" of the external information, and the changes should be maintained through subsequent refreshes/updates of that node contact entry from the external provider
    • In this case (locally edited or expanded node contact entries that came from an external node information provider), I should be able to see that I have different values than those coming from the external provider, and be able to view/compare them.
15Multi Subscribe

As an administrator, I want a view of my node information contact list, from which I can configure it, its population and exposure to/from external nodes, and manage my node's use of it for federation and other purposes.


Must Have
  • I should be able to see (through icons, coloring, columns, presentation, or somehow) the nature of each node contact list entry:
    • Where it came from (my identity node, published to me, pulled from an external provider, created locally)
    • Edit/override status (if it came from an external provider or publisher, have I edited it to differ from the externally provided information)
    • Federation configuration (am I currently federated with it, or is it disabled? What method am I using to federate with it?)
    • As far as I can tell, if I'm federated with it, what is the coarse status of that federation? (e.g., green/yellow/red)
    • Any visibility restrictions of the entry with respect to external node requests for my contact list entries?
  • I should be able to select or click on a node contact list entry to view more detailed information and configuration options, including but not limited to the above
16
As an administrator, I want my node to configurably allow update/refresh of my node information contact list from 0 or more external node information providers, and configurably allow other nodes to use me as node information provider and place to publish node information to.
  • the initial contents of my node contact list will be the identity node (i.e., myself)
  • default behavior is to ask during installation for an external node information provider
  • default behavior is to deny incoming node information requests.
  • default behavior is to deny incoming publish requests.
17Configure Local Node InformationAs an administrator, I want to be able to configure publishing my identity node node information to 0 or more other nodes.

18Multi PublishAs an administrator, I want to have the option to publish my identity node to any node I configure as an External node Information Provider.
  • The default will be to publish my identity node upon configuration.
  • Optionally, I can publish additional contacts at this time.
19Node VisibilityAs an administrator, I want to configure which node contacts are available to nodes requesting node information from my node.
  • include/exclude other nodes
  • include/exclude identity node

Decision

Created a DDF Registry which was later extracted to a separate repository.

https://github.com/codice/ddf-registry