Documentation
¶
Overview ¶
Package openapi is a collection of libraries for fetching the openapi spec from a Kubernetes server and then indexing the type definitions. The openapi spec contains the object model definitions and extensions metadata such as the patchStrategy and patchMergeKey for creating patches.
Index ¶
Constants ¶
const (
Integer = "integer"
Number = "number"
String = "string"
Boolean = "boolean"
)
Defines openapi types.
const PrintColumnsKey = "x-kubernetes-print-columns"
Variables ¶
This section is empty.
Functions ¶
func GetPrintColumns ¶
func GetPrintColumns(extensions spec.Extensions) (string, bool)
GetPrintColumns looks for the open API extension for the display columns.
Types ¶
type Array ¶
type Array struct {
BaseSchema
SubType Schema
}
Array must have all its element of the same `SubType`.
type BaseSchema ¶ added in v1.8.0
type BaseSchema struct {
Description string
Extensions map[string]interface{}
Path Path
}
BaseSchema holds data used by each types of schema.
func (*BaseSchema) GetDescription ¶ added in v1.8.0
func (b *BaseSchema) GetDescription() string
func (*BaseSchema) GetExtensions ¶ added in v1.8.0
func (b *BaseSchema) GetExtensions() map[string]interface{}
type Definitions ¶ added in v1.8.0
type Definitions struct {
// contains filtered or unexported fields
}
Definitions is an implementation of `Resources`. It looks for resources in an openapi Schema.
func (*Definitions) LookupResource ¶ added in v1.8.0
func (d *Definitions) LookupResource(gvk schema.GroupVersionKind) Schema
LookupResource is public through the interface of Resources. It returns a visitable schema from the given group-version-kind.
func (*Definitions) ParseSchema ¶ added in v1.8.0
func (d *Definitions) ParseSchema(s *openapi_v2.Schema, path *Path) (Schema, error)
ParseSchema creates a walkable Schema from an openapi schema. While this function is public, it doesn't leak through the interface.
type Getter ¶
type Getter interface {
// OpenAPIData returns the parsed OpenAPIData
Get() (Resources, error)
}
Getter is an interface for fetching openapi specs and parsing them into an Resources struct
func NewOpenAPIGetter ¶
func NewOpenAPIGetter(openAPIClient discovery.OpenAPISchemaInterface) Getter
NewOpenAPIGetter returns an object to return OpenAPIDatas which reads from a server, and then stores in memory for subsequent invocations
type Kind ¶
type Kind struct {
BaseSchema
// Lists names of required fields.
RequiredFields []string
// Maps field names to types.
Fields map[string]Schema
}
Kind is a complex object. It can have multiple different subtypes for each field, as defined in the `Fields` field. Mandatory fields are listed in `RequiredFields`. The key of the object is always of type `string`.
type Map ¶
type Map struct {
BaseSchema
SubType Schema
}
Map is an object who values must all be of the same `SubType`. The key of the object is always of type `string`.
type Path ¶ added in v1.8.0
type Path struct {
// contains filtered or unexported fields
}
Path helps us keep track of type paths
func (*Path) ArrayPath ¶ added in v1.8.0
func (p *Path) ArrayPath(i int) Path
ArrayPath appends an array index and creates a new path
type Primitive ¶ added in v1.8.0
type Primitive struct {
BaseSchema
// Type of a primitive must be one of: integer, number, string, boolean.
Type string
Format string
}
Primitive is a literal. There can be multiple types of primitives, and this subtype can be visited through the `subType` field.
type Reference ¶ added in v1.8.0
type Reference interface {
Schema
Reference() string
SubSchema() Schema
}
Reference implementation depends on the type of document.
type Resources ¶
type Resources interface {
LookupResource(gvk schema.GroupVersionKind) Schema
}
Resources interface describe a resources provider, that can give you resource based on group-version-kind.
func NewOpenAPIData ¶
func NewOpenAPIData(doc *openapi_v2.Document) (Resources, error)
NewOpenAPIData creates a new `Resources` out of the openapi document.
type Schema ¶ added in v1.8.0
type Schema interface {
// Giving a visitor here will let you visit the actual type.
Accept(SchemaVisitor)
// Pretty print the name of the type.
GetName() string
// Describes how to access this field.
GetPath() *Path
// Describes the field.
GetDescription() string
// Returns type extensions.
GetExtensions() map[string]interface{}
}
Schema is the base definition of an openapi type.
type SchemaVisitor ¶ added in v1.8.0
type SchemaVisitor interface {
VisitArray(*Array)
VisitMap(*Map)
VisitPrimitive(*Primitive)
VisitKind(*Kind)
VisitReference(Reference)
}
SchemaVisitor is an interface that you need to implement if you want to "visit" an openapi schema. A dispatch on the Schema type will call the appropriate function based on its actual type: - Array is a list of one and only one given subtype - Map is a map of string to one and only one given subtype - Primitive can be string, integer, number and boolean. - Kind is an object with specific fields mapping to specific types. - Reference is a link to another definition.