Needs/Provides
Infrastructure and Kubernetes resources often need information about other resources in order to be fully configured. The simplest example is references to identifiers of other resources. Network addresses are a common example in infrastructure resources. Needs/Provides is a way to formally express what values a resource needs and what values a resource provides. For example, a Kubernetes Namespace provides a namespace name. Most Kubernetes resources, such as Deployment and Service, need a namespace.
By capturing complete Needed and Provided information from all resources, it is possible to mostly automate the "wiring" of Config Units to each other.
Needed and Provided values differ from Infrastructure as Code module/template input and output variables in that they are not specific to a particular Config Unit, but are intrinsic to the resource types contained within the configuration data, and are applicable to all Config Units containing those resources types. It's extended schema information.
Provided values can fulfill Needed values within the same Unit and in Units linked to the providing Unit.
We plan to make the definitions of Provided and Needed values extensible, but for now these attributes are identified in the built-in function executor, by the functions get-needed and get-provided.
Currently needed values are indicated by the presence of placeholder values.