mirror of
				https://github.com/moby/moby.git
				synced 2022-11-09 12:21:53 -05:00 
			
		
		
		
	Generate plugin types from the swagger spec.
Signed-off-by: Daniel Nephin <dnephin@docker.com>
This commit is contained in:
		
							parent
							
								
									02e1ffd76c
								
							
						
					
					
						commit
						6f7b69b63f
					
				
					 9 changed files with 415 additions and 167 deletions
				
			
		| 
						 | 
				
			
			@ -1118,11 +1118,15 @@ definitions:
 | 
			
		|||
 | 
			
		||||
  PluginMount:
 | 
			
		||||
    type: "object"
 | 
			
		||||
    x-nullable: false
 | 
			
		||||
    required: [Name, Description, Settable, Source, Destination, Type, Options]
 | 
			
		||||
    properties:
 | 
			
		||||
      Name:
 | 
			
		||||
        type: "string"
 | 
			
		||||
        x-nullable: false
 | 
			
		||||
      Description:
 | 
			
		||||
        type: "string"
 | 
			
		||||
        x-nullable: false
 | 
			
		||||
      Settable:
 | 
			
		||||
        type: "array"
 | 
			
		||||
        items:
 | 
			
		||||
| 
						 | 
				
			
			@ -1131,8 +1135,10 @@ definitions:
 | 
			
		|||
        type: "string"
 | 
			
		||||
      Destination:
 | 
			
		||||
        type: "string"
 | 
			
		||||
        x-nullable: false
 | 
			
		||||
      Type:
 | 
			
		||||
        type: "string"
 | 
			
		||||
        x-nullable: false
 | 
			
		||||
      Options:
 | 
			
		||||
        type: "array"
 | 
			
		||||
        items:
 | 
			
		||||
| 
						 | 
				
			
			@ -1140,11 +1146,15 @@ definitions:
 | 
			
		|||
 | 
			
		||||
  PluginDevice:
 | 
			
		||||
    type: "object"
 | 
			
		||||
    required: [Name, Description, Settable, Path]
 | 
			
		||||
    x-nullable: false
 | 
			
		||||
    properties:
 | 
			
		||||
      Name:
 | 
			
		||||
        type: "string"
 | 
			
		||||
        x-nullable: false
 | 
			
		||||
      Description:
 | 
			
		||||
        type: "string"
 | 
			
		||||
        x-nullable: false
 | 
			
		||||
      Settable:
 | 
			
		||||
        type: "array"
 | 
			
		||||
        items:
 | 
			
		||||
| 
						 | 
				
			
			@ -1152,22 +1162,61 @@ definitions:
 | 
			
		|||
      Path:
 | 
			
		||||
        type: "string"
 | 
			
		||||
 | 
			
		||||
  PluginEnv:
 | 
			
		||||
    type: "object"
 | 
			
		||||
    x-nullable: false
 | 
			
		||||
    required: [Name, Description, Settable, Value]
 | 
			
		||||
    properties:
 | 
			
		||||
      Name:
 | 
			
		||||
        x-nullable: false
 | 
			
		||||
        type: "string"
 | 
			
		||||
      Description:
 | 
			
		||||
        x-nullable: false
 | 
			
		||||
        type: "string"
 | 
			
		||||
      Settable:
 | 
			
		||||
        type: "array"
 | 
			
		||||
        items:
 | 
			
		||||
          type: "string"
 | 
			
		||||
      Value:
 | 
			
		||||
        type: "string"
 | 
			
		||||
 | 
			
		||||
  PluginInterfaceType:
 | 
			
		||||
    type: "object"
 | 
			
		||||
    x-nullable: false
 | 
			
		||||
    required: [Prefix, Capability, Version]
 | 
			
		||||
    properties:
 | 
			
		||||
      Prefix:
 | 
			
		||||
        type: "string"
 | 
			
		||||
        x-nullable: false
 | 
			
		||||
      Capability:
 | 
			
		||||
        type: "string"
 | 
			
		||||
        x-nullable: false
 | 
			
		||||
      Version:
 | 
			
		||||
        type: "string"
 | 
			
		||||
        x-nullable: false
 | 
			
		||||
 | 
			
		||||
  Plugin:
 | 
			
		||||
    description: "A plugin for the Remote API"
 | 
			
		||||
    type: "object"
 | 
			
		||||
    required: [Config, Enabled, Manifest, Name, Tag]
 | 
			
		||||
    properties:
 | 
			
		||||
      Id:
 | 
			
		||||
        type: "string"
 | 
			
		||||
      Name:
 | 
			
		||||
        type: "string"
 | 
			
		||||
        x-nullable: false
 | 
			
		||||
      Tag:
 | 
			
		||||
        type: "string"
 | 
			
		||||
        x-nullable: false
 | 
			
		||||
      Enabled:
 | 
			
		||||
        description: "True when the plugin is running. False when the plugin is not running, only installed."
 | 
			
		||||
        type: "boolean"
 | 
			
		||||
        x-nullable: false
 | 
			
		||||
      Config:
 | 
			
		||||
        description: "Settings that can be modified by users."
 | 
			
		||||
        type: "object"
 | 
			
		||||
        x-nullable: false
 | 
			
		||||
        required: [Args, Devices, Env, Mounts]
 | 
			
		||||
        properties:
 | 
			
		||||
          Mounts:
 | 
			
		||||
            type: "array"
 | 
			
		||||
| 
						 | 
				
			
			@ -1188,40 +1237,67 @@ definitions:
 | 
			
		|||
      Manifest:
 | 
			
		||||
        description: "The manifest of a plugin."
 | 
			
		||||
        type: "object"
 | 
			
		||||
        x-nullable: false
 | 
			
		||||
        required:
 | 
			
		||||
          - ManifestVersion
 | 
			
		||||
          - Description
 | 
			
		||||
          - Documentation
 | 
			
		||||
          - Interface
 | 
			
		||||
          - Entrypoint
 | 
			
		||||
          - Workdir
 | 
			
		||||
          - Network
 | 
			
		||||
          - Capabilities
 | 
			
		||||
          - Mounts
 | 
			
		||||
          - Devices
 | 
			
		||||
          - Env
 | 
			
		||||
          - Args
 | 
			
		||||
        properties:
 | 
			
		||||
          ManifestVersion:
 | 
			
		||||
            type: "string"
 | 
			
		||||
            x-nullable: false
 | 
			
		||||
          Description:
 | 
			
		||||
            type: "string"
 | 
			
		||||
            x-nullable: false
 | 
			
		||||
          Documentation:
 | 
			
		||||
            type: "string"
 | 
			
		||||
            x-nullable: false
 | 
			
		||||
          Interface:
 | 
			
		||||
            description: "The interface between Docker and the plugin"
 | 
			
		||||
            x-nullable: false
 | 
			
		||||
            type: "object"
 | 
			
		||||
            required: [Types, Socket]
 | 
			
		||||
            properties:
 | 
			
		||||
              Types:
 | 
			
		||||
                type: "array"
 | 
			
		||||
                items:
 | 
			
		||||
                  type: "string"
 | 
			
		||||
                  $ref: "#/definitions/PluginInterfaceType"
 | 
			
		||||
              Socket:
 | 
			
		||||
                type: "string"
 | 
			
		||||
                x-nullable: false
 | 
			
		||||
          Entrypoint:
 | 
			
		||||
            type: "array"
 | 
			
		||||
            items:
 | 
			
		||||
              type: "string"
 | 
			
		||||
          Workdir:
 | 
			
		||||
            type: "string"
 | 
			
		||||
            x-nullable: false
 | 
			
		||||
          User:
 | 
			
		||||
            type: "object"
 | 
			
		||||
            x-nullable: false
 | 
			
		||||
            properties:
 | 
			
		||||
              UID:
 | 
			
		||||
                type: "integer"
 | 
			
		||||
                format: "uint32"
 | 
			
		||||
              GID:
 | 
			
		||||
                type: "integer"
 | 
			
		||||
                format: "uint32"
 | 
			
		||||
          Network:
 | 
			
		||||
            type: "object"
 | 
			
		||||
            x-nullable: false
 | 
			
		||||
            required: [Type]
 | 
			
		||||
            properties:
 | 
			
		||||
              Type:
 | 
			
		||||
                x-nullable: false
 | 
			
		||||
                type: "string"
 | 
			
		||||
          Capabilities:
 | 
			
		||||
            type: "array"
 | 
			
		||||
| 
						 | 
				
			
			@ -1236,24 +1312,19 @@ definitions:
 | 
			
		|||
            items:
 | 
			
		||||
              $ref: "#/definitions/PluginDevice"
 | 
			
		||||
          Env:
 | 
			
		||||
            type: "object"
 | 
			
		||||
            properties:
 | 
			
		||||
              Name:
 | 
			
		||||
                type: "string"
 | 
			
		||||
              Description:
 | 
			
		||||
                type: "string"
 | 
			
		||||
              Settable:
 | 
			
		||||
                type: "array"
 | 
			
		||||
                items:
 | 
			
		||||
                  type: "string"
 | 
			
		||||
              Value:
 | 
			
		||||
                type: "string"
 | 
			
		||||
            type: "array"
 | 
			
		||||
            items:
 | 
			
		||||
              $ref: "#/definitions/PluginEnv"
 | 
			
		||||
          Args:
 | 
			
		||||
            type: "object"
 | 
			
		||||
            x-nullable: false
 | 
			
		||||
            required: [Name, Description, Settable, Value]
 | 
			
		||||
            properties:
 | 
			
		||||
              Name:
 | 
			
		||||
                x-nullable: false
 | 
			
		||||
                type: "string"
 | 
			
		||||
              Description:
 | 
			
		||||
                x-nullable: false
 | 
			
		||||
                type: "string"
 | 
			
		||||
              Settable:
 | 
			
		||||
                type: "array"
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -314,3 +314,12 @@ type TaskListOptions struct {
 | 
			
		|||
type PluginRemoveOptions struct {
 | 
			
		||||
	Force bool
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// PluginInstallOptions holds parameters to install a plugin.
 | 
			
		||||
type PluginInstallOptions struct {
 | 
			
		||||
	Disabled              bool
 | 
			
		||||
	AcceptAllPermissions  bool
 | 
			
		||||
	RegistryAuth          string // RegistryAuth is the base64 encoded credentials for the registry
 | 
			
		||||
	PrivilegeFunc         RequestPrivilegeFunc
 | 
			
		||||
	AcceptPermissionsFunc func(PluginPrivileges) (bool, error)
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -1,168 +1,163 @@
 | 
			
		|||
package types
 | 
			
		||||
 | 
			
		||||
import (
 | 
			
		||||
	"encoding/json"
 | 
			
		||||
	"fmt"
 | 
			
		||||
)
 | 
			
		||||
// This file was generated by the swagger tool.
 | 
			
		||||
// Editing this file might prove futile when you re-run the swagger generate command
 | 
			
		||||
 | 
			
		||||
// PluginInstallOptions holds parameters to install a plugin.
 | 
			
		||||
type PluginInstallOptions struct {
 | 
			
		||||
	Disabled              bool
 | 
			
		||||
	AcceptAllPermissions  bool
 | 
			
		||||
	RegistryAuth          string // RegistryAuth is the base64 encoded credentials for the registry
 | 
			
		||||
	PrivilegeFunc         RequestPrivilegeFunc
 | 
			
		||||
	AcceptPermissionsFunc func(PluginPrivileges) (bool, error)
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// PluginConfig represents the values of settings potentially modifiable by a user
 | 
			
		||||
type PluginConfig struct {
 | 
			
		||||
	Mounts  []PluginMount
 | 
			
		||||
	Env     []string
 | 
			
		||||
	Args    []string
 | 
			
		||||
	Devices []PluginDevice
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// Plugin represents a Docker plugin for the remote API
 | 
			
		||||
// Plugin A plugin for the Remote API
 | 
			
		||||
// swagger:model Plugin
 | 
			
		||||
type Plugin struct {
 | 
			
		||||
	ID   string `json:"Id,omitempty"`
 | 
			
		||||
	Name string
 | 
			
		||||
	Tag  string
 | 
			
		||||
	// Enabled is true when the plugin is running, is false when the plugin is not running, only installed.
 | 
			
		||||
	Enabled  bool
 | 
			
		||||
	Config   PluginConfig
 | 
			
		||||
	Manifest PluginManifest
 | 
			
		||||
 | 
			
		||||
	// config
 | 
			
		||||
	// Required: true
 | 
			
		||||
	Config PluginConfig `json:"Config"`
 | 
			
		||||
 | 
			
		||||
	// True when the plugin is running. False when the plugin is not running, only installed.
 | 
			
		||||
	// Required: true
 | 
			
		||||
	Enabled bool `json:"Enabled"`
 | 
			
		||||
 | 
			
		||||
	// Id
 | 
			
		||||
	ID string `json:"Id,omitempty"`
 | 
			
		||||
 | 
			
		||||
	// manifest
 | 
			
		||||
	// Required: true
 | 
			
		||||
	Manifest PluginManifest `json:"Manifest"`
 | 
			
		||||
 | 
			
		||||
	// name
 | 
			
		||||
	// Required: true
 | 
			
		||||
	Name string `json:"Name"`
 | 
			
		||||
 | 
			
		||||
	// tag
 | 
			
		||||
	// Required: true
 | 
			
		||||
	Tag string `json:"Tag"`
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// PluginsListResponse contains the response for the remote API
 | 
			
		||||
type PluginsListResponse []*Plugin
 | 
			
		||||
// PluginConfigSettings that can be modified by users.
 | 
			
		||||
// swagger:model PluginConfig
 | 
			
		||||
type PluginConfig struct {
 | 
			
		||||
 | 
			
		||||
const (
 | 
			
		||||
	authzDriver   = "AuthzDriver"
 | 
			
		||||
	graphDriver   = "GraphDriver"
 | 
			
		||||
	ipamDriver    = "IpamDriver"
 | 
			
		||||
	networkDriver = "NetworkDriver"
 | 
			
		||||
	volumeDriver  = "VolumeDriver"
 | 
			
		||||
)
 | 
			
		||||
	// args
 | 
			
		||||
	// Required: true
 | 
			
		||||
	Args []string `json:"Args"`
 | 
			
		||||
 | 
			
		||||
// PluginInterfaceType represents a type that a plugin implements.
 | 
			
		||||
type PluginInterfaceType struct {
 | 
			
		||||
	Prefix     string // This is always "docker"
 | 
			
		||||
	Capability string // Capability should be validated against the above list.
 | 
			
		||||
	Version    string // Plugin API version. Depends on the capability
 | 
			
		||||
	// devices
 | 
			
		||||
	// Required: true
 | 
			
		||||
	Devices []PluginDevice `json:"Devices"`
 | 
			
		||||
 | 
			
		||||
	// env
 | 
			
		||||
	// Required: true
 | 
			
		||||
	Env []string `json:"Env"`
 | 
			
		||||
 | 
			
		||||
	// mounts
 | 
			
		||||
	// Required: true
 | 
			
		||||
	Mounts []PluginMount `json:"Mounts"`
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// UnmarshalJSON implements json.Unmarshaler for PluginInterfaceType
 | 
			
		||||
func (t *PluginInterfaceType) UnmarshalJSON(p []byte) error {
 | 
			
		||||
	versionIndex := len(p)
 | 
			
		||||
	prefixIndex := 0
 | 
			
		||||
	if len(p) < 2 || p[0] != '"' || p[len(p)-1] != '"' {
 | 
			
		||||
		return fmt.Errorf("%q is not a plugin interface type", p)
 | 
			
		||||
	}
 | 
			
		||||
	p = p[1 : len(p)-1]
 | 
			
		||||
loop:
 | 
			
		||||
	for i, b := range p {
 | 
			
		||||
		switch b {
 | 
			
		||||
		case '.':
 | 
			
		||||
			prefixIndex = i
 | 
			
		||||
		case '/':
 | 
			
		||||
			versionIndex = i
 | 
			
		||||
			break loop
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
	t.Prefix = string(p[:prefixIndex])
 | 
			
		||||
	t.Capability = string(p[prefixIndex+1 : versionIndex])
 | 
			
		||||
	if versionIndex < len(p) {
 | 
			
		||||
		t.Version = string(p[versionIndex+1:])
 | 
			
		||||
	}
 | 
			
		||||
	return nil
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// MarshalJSON implements json.Marshaler for PluginInterfaceType
 | 
			
		||||
func (t *PluginInterfaceType) MarshalJSON() ([]byte, error) {
 | 
			
		||||
	return json.Marshal(t.String())
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// String implements fmt.Stringer for PluginInterfaceType
 | 
			
		||||
func (t PluginInterfaceType) String() string {
 | 
			
		||||
	return fmt.Sprintf("%s.%s/%s", t.Prefix, t.Capability, t.Version)
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// PluginInterface describes the interface between Docker and plugin
 | 
			
		||||
type PluginInterface struct {
 | 
			
		||||
	Types  []PluginInterfaceType
 | 
			
		||||
	Socket string
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// PluginSetting is to be embedded in other structs, if they are supposed to be
 | 
			
		||||
// modifiable by the user.
 | 
			
		||||
type PluginSetting struct {
 | 
			
		||||
	Name        string
 | 
			
		||||
	Description string
 | 
			
		||||
	Settable    []string
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// PluginNetwork represents the network configuration for a plugin
 | 
			
		||||
type PluginNetwork struct {
 | 
			
		||||
	Type string
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// PluginMount represents the mount configuration for a plugin
 | 
			
		||||
type PluginMount struct {
 | 
			
		||||
	PluginSetting
 | 
			
		||||
	Source      *string
 | 
			
		||||
	Destination string
 | 
			
		||||
	Type        string
 | 
			
		||||
	Options     []string
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// PluginEnv represents an environment variable for a plugin
 | 
			
		||||
type PluginEnv struct {
 | 
			
		||||
	PluginSetting
 | 
			
		||||
	Value *string
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// PluginArgs represents the command line arguments for a plugin
 | 
			
		||||
type PluginArgs struct {
 | 
			
		||||
	PluginSetting
 | 
			
		||||
	Value []string
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// PluginDevice represents a device for a plugin
 | 
			
		||||
type PluginDevice struct {
 | 
			
		||||
	PluginSetting
 | 
			
		||||
	Path *string
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// PluginUser represents the user for the plugin's process
 | 
			
		||||
type PluginUser struct {
 | 
			
		||||
	UID uint32 `json:"Uid,omitempty"`
 | 
			
		||||
	GID uint32 `json:"Gid,omitempty"`
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// PluginManifest represents the manifest of a plugin
 | 
			
		||||
// PluginManifestThe manifest of a plugin.
 | 
			
		||||
// swagger:model PluginManifest
 | 
			
		||||
type PluginManifest struct {
 | 
			
		||||
	ManifestVersion string
 | 
			
		||||
	Description     string
 | 
			
		||||
	Documentation   string
 | 
			
		||||
	Interface       PluginInterface
 | 
			
		||||
	Entrypoint      []string
 | 
			
		||||
	Workdir         string
 | 
			
		||||
	User            PluginUser `json:",omitempty"`
 | 
			
		||||
	Network         PluginNetwork
 | 
			
		||||
	Capabilities    []string
 | 
			
		||||
	Mounts          []PluginMount
 | 
			
		||||
	Devices         []PluginDevice
 | 
			
		||||
	Env             []PluginEnv
 | 
			
		||||
	Args            PluginArgs
 | 
			
		||||
 | 
			
		||||
	// args
 | 
			
		||||
	// Required: true
 | 
			
		||||
	Args PluginManifestArgs `json:"Args"`
 | 
			
		||||
 | 
			
		||||
	// capabilities
 | 
			
		||||
	// Required: true
 | 
			
		||||
	Capabilities []string `json:"Capabilities"`
 | 
			
		||||
 | 
			
		||||
	// description
 | 
			
		||||
	// Required: true
 | 
			
		||||
	Description string `json:"Description"`
 | 
			
		||||
 | 
			
		||||
	// devices
 | 
			
		||||
	// Required: true
 | 
			
		||||
	Devices []PluginDevice `json:"Devices"`
 | 
			
		||||
 | 
			
		||||
	// documentation
 | 
			
		||||
	// Required: true
 | 
			
		||||
	Documentation string `json:"Documentation"`
 | 
			
		||||
 | 
			
		||||
	// entrypoint
 | 
			
		||||
	// Required: true
 | 
			
		||||
	Entrypoint []string `json:"Entrypoint"`
 | 
			
		||||
 | 
			
		||||
	// env
 | 
			
		||||
	// Required: true
 | 
			
		||||
	Env []PluginEnv `json:"Env"`
 | 
			
		||||
 | 
			
		||||
	// interface
 | 
			
		||||
	// Required: true
 | 
			
		||||
	Interface PluginManifestInterface `json:"Interface"`
 | 
			
		||||
 | 
			
		||||
	// manifest version
 | 
			
		||||
	// Required: true
 | 
			
		||||
	ManifestVersion string `json:"ManifestVersion"`
 | 
			
		||||
 | 
			
		||||
	// mounts
 | 
			
		||||
	// Required: true
 | 
			
		||||
	Mounts []PluginMount `json:"Mounts"`
 | 
			
		||||
 | 
			
		||||
	// network
 | 
			
		||||
	// Required: true
 | 
			
		||||
	Network PluginManifestNetwork `json:"Network"`
 | 
			
		||||
 | 
			
		||||
	// user
 | 
			
		||||
	User PluginManifestUser `json:"User,omitempty"`
 | 
			
		||||
 | 
			
		||||
	// workdir
 | 
			
		||||
	// Required: true
 | 
			
		||||
	Workdir string `json:"Workdir"`
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// PluginPrivilege describes a permission the user has to accept
 | 
			
		||||
// upon installing a plugin.
 | 
			
		||||
type PluginPrivilege struct {
 | 
			
		||||
	Name        string
 | 
			
		||||
	Description string
 | 
			
		||||
	Value       []string
 | 
			
		||||
// PluginManifestArgsplugin manifest args
 | 
			
		||||
// swagger:model PluginManifestArgs
 | 
			
		||||
type PluginManifestArgs struct {
 | 
			
		||||
 | 
			
		||||
	// description
 | 
			
		||||
	// Required: true
 | 
			
		||||
	Description string `json:"Description"`
 | 
			
		||||
 | 
			
		||||
	// name
 | 
			
		||||
	// Required: true
 | 
			
		||||
	Name string `json:"Name"`
 | 
			
		||||
 | 
			
		||||
	// settable
 | 
			
		||||
	// Required: true
 | 
			
		||||
	Settable []string `json:"Settable"`
 | 
			
		||||
 | 
			
		||||
	// value
 | 
			
		||||
	// Required: true
 | 
			
		||||
	Value []string `json:"Value"`
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// PluginPrivileges is a list of PluginPrivilege
 | 
			
		||||
type PluginPrivileges []PluginPrivilege
 | 
			
		||||
// PluginManifestInterfaceThe interface between Docker and the plugin
 | 
			
		||||
// swagger:model PluginManifestInterface
 | 
			
		||||
type PluginManifestInterface struct {
 | 
			
		||||
 | 
			
		||||
	// socket
 | 
			
		||||
	// Required: true
 | 
			
		||||
	Socket string `json:"Socket"`
 | 
			
		||||
 | 
			
		||||
	// types
 | 
			
		||||
	// Required: true
 | 
			
		||||
	Types []PluginInterfaceType `json:"Types"`
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// PluginManifestNetworkplugin manifest network
 | 
			
		||||
// swagger:model PluginManifestNetwork
 | 
			
		||||
type PluginManifestNetwork struct {
 | 
			
		||||
 | 
			
		||||
	// type
 | 
			
		||||
	// Required: true
 | 
			
		||||
	Type string `json:"Type"`
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// PluginManifestUserplugin manifest user
 | 
			
		||||
// swagger:model PluginManifestUser
 | 
			
		||||
type PluginManifestUser struct {
 | 
			
		||||
 | 
			
		||||
	// g ID
 | 
			
		||||
	GID uint32 `json:"GID,omitempty"`
 | 
			
		||||
 | 
			
		||||
	// UID
 | 
			
		||||
	UID uint32 `json:"UID,omitempty"`
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
							
								
								
									
										25
									
								
								api/types/plugin_device.go
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										25
									
								
								api/types/plugin_device.go
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,25 @@
 | 
			
		|||
package types
 | 
			
		||||
 | 
			
		||||
// This file was generated by the swagger tool.
 | 
			
		||||
// Editing this file might prove futile when you re-run the swagger generate command
 | 
			
		||||
 | 
			
		||||
// PluginDevice plugin device
 | 
			
		||||
// swagger:model PluginDevice
 | 
			
		||||
type PluginDevice struct {
 | 
			
		||||
 | 
			
		||||
	// description
 | 
			
		||||
	// Required: true
 | 
			
		||||
	Description string `json:"Description"`
 | 
			
		||||
 | 
			
		||||
	// name
 | 
			
		||||
	// Required: true
 | 
			
		||||
	Name string `json:"Name"`
 | 
			
		||||
 | 
			
		||||
	// path
 | 
			
		||||
	// Required: true
 | 
			
		||||
	Path *string `json:"Path"`
 | 
			
		||||
 | 
			
		||||
	// settable
 | 
			
		||||
	// Required: true
 | 
			
		||||
	Settable []string `json:"Settable"`
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										25
									
								
								api/types/plugin_env.go
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										25
									
								
								api/types/plugin_env.go
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,25 @@
 | 
			
		|||
package types
 | 
			
		||||
 | 
			
		||||
// This file was generated by the swagger tool.
 | 
			
		||||
// Editing this file might prove futile when you re-run the swagger generate command
 | 
			
		||||
 | 
			
		||||
// PluginEnv plugin env
 | 
			
		||||
// swagger:model PluginEnv
 | 
			
		||||
type PluginEnv struct {
 | 
			
		||||
 | 
			
		||||
	// description
 | 
			
		||||
	// Required: true
 | 
			
		||||
	Description string `json:"Description"`
 | 
			
		||||
 | 
			
		||||
	// name
 | 
			
		||||
	// Required: true
 | 
			
		||||
	Name string `json:"Name"`
 | 
			
		||||
 | 
			
		||||
	// settable
 | 
			
		||||
	// Required: true
 | 
			
		||||
	Settable []string `json:"Settable"`
 | 
			
		||||
 | 
			
		||||
	// value
 | 
			
		||||
	// Required: true
 | 
			
		||||
	Value *string `json:"Value"`
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										21
									
								
								api/types/plugin_interface_type.go
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										21
									
								
								api/types/plugin_interface_type.go
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,21 @@
 | 
			
		|||
package types
 | 
			
		||||
 | 
			
		||||
// This file was generated by the swagger tool.
 | 
			
		||||
// Editing this file might prove futile when you re-run the swagger generate command
 | 
			
		||||
 | 
			
		||||
// PluginInterfaceType plugin interface type
 | 
			
		||||
// swagger:model PluginInterfaceType
 | 
			
		||||
type PluginInterfaceType struct {
 | 
			
		||||
 | 
			
		||||
	// capability
 | 
			
		||||
	// Required: true
 | 
			
		||||
	Capability string `json:"Capability"`
 | 
			
		||||
 | 
			
		||||
	// prefix
 | 
			
		||||
	// Required: true
 | 
			
		||||
	Prefix string `json:"Prefix"`
 | 
			
		||||
 | 
			
		||||
	// version
 | 
			
		||||
	// Required: true
 | 
			
		||||
	Version string `json:"Version"`
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										37
									
								
								api/types/plugin_mount.go
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										37
									
								
								api/types/plugin_mount.go
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,37 @@
 | 
			
		|||
package types
 | 
			
		||||
 | 
			
		||||
// This file was generated by the swagger tool.
 | 
			
		||||
// Editing this file might prove futile when you re-run the swagger generate command
 | 
			
		||||
 | 
			
		||||
// PluginMount plugin mount
 | 
			
		||||
// swagger:model PluginMount
 | 
			
		||||
type PluginMount struct {
 | 
			
		||||
 | 
			
		||||
	// description
 | 
			
		||||
	// Required: true
 | 
			
		||||
	Description string `json:"Description"`
 | 
			
		||||
 | 
			
		||||
	// destination
 | 
			
		||||
	// Required: true
 | 
			
		||||
	Destination string `json:"Destination"`
 | 
			
		||||
 | 
			
		||||
	// name
 | 
			
		||||
	// Required: true
 | 
			
		||||
	Name string `json:"Name"`
 | 
			
		||||
 | 
			
		||||
	// options
 | 
			
		||||
	// Required: true
 | 
			
		||||
	Options []string `json:"Options"`
 | 
			
		||||
 | 
			
		||||
	// settable
 | 
			
		||||
	// Required: true
 | 
			
		||||
	Settable []string `json:"Settable"`
 | 
			
		||||
 | 
			
		||||
	// source
 | 
			
		||||
	// Required: true
 | 
			
		||||
	Source *string `json:"Source"`
 | 
			
		||||
 | 
			
		||||
	// type
 | 
			
		||||
	// Required: true
 | 
			
		||||
	Type string `json:"Type"`
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										64
									
								
								api/types/plugin_responses.go
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										64
									
								
								api/types/plugin_responses.go
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,64 @@
 | 
			
		|||
package types
 | 
			
		||||
 | 
			
		||||
import (
 | 
			
		||||
	"encoding/json"
 | 
			
		||||
	"fmt"
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
// PluginsListResponse contains the response for the remote API
 | 
			
		||||
type PluginsListResponse []*Plugin
 | 
			
		||||
 | 
			
		||||
const (
 | 
			
		||||
	authzDriver   = "AuthzDriver"
 | 
			
		||||
	graphDriver   = "GraphDriver"
 | 
			
		||||
	ipamDriver    = "IpamDriver"
 | 
			
		||||
	networkDriver = "NetworkDriver"
 | 
			
		||||
	volumeDriver  = "VolumeDriver"
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
// UnmarshalJSON implements json.Unmarshaler for PluginInterfaceType
 | 
			
		||||
func (t *PluginInterfaceType) UnmarshalJSON(p []byte) error {
 | 
			
		||||
	versionIndex := len(p)
 | 
			
		||||
	prefixIndex := 0
 | 
			
		||||
	if len(p) < 2 || p[0] != '"' || p[len(p)-1] != '"' {
 | 
			
		||||
		return fmt.Errorf("%q is not a plugin interface type", p)
 | 
			
		||||
	}
 | 
			
		||||
	p = p[1 : len(p)-1]
 | 
			
		||||
loop:
 | 
			
		||||
	for i, b := range p {
 | 
			
		||||
		switch b {
 | 
			
		||||
		case '.':
 | 
			
		||||
			prefixIndex = i
 | 
			
		||||
		case '/':
 | 
			
		||||
			versionIndex = i
 | 
			
		||||
			break loop
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
	t.Prefix = string(p[:prefixIndex])
 | 
			
		||||
	t.Capability = string(p[prefixIndex+1 : versionIndex])
 | 
			
		||||
	if versionIndex < len(p) {
 | 
			
		||||
		t.Version = string(p[versionIndex+1:])
 | 
			
		||||
	}
 | 
			
		||||
	return nil
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// MarshalJSON implements json.Marshaler for PluginInterfaceType
 | 
			
		||||
func (t *PluginInterfaceType) MarshalJSON() ([]byte, error) {
 | 
			
		||||
	return json.Marshal(t.String())
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// String implements fmt.Stringer for PluginInterfaceType
 | 
			
		||||
func (t PluginInterfaceType) String() string {
 | 
			
		||||
	return fmt.Sprintf("%s.%s/%s", t.Prefix, t.Capability, t.Version)
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// PluginPrivilege describes a permission the user has to accept
 | 
			
		||||
// upon installing a plugin.
 | 
			
		||||
type PluginPrivilege struct {
 | 
			
		||||
	Name        string
 | 
			
		||||
	Description string
 | 
			
		||||
	Value       []string
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// PluginPrivileges is a list of PluginPrivilege
 | 
			
		||||
type PluginPrivileges []PluginPrivilege
 | 
			
		||||
| 
						 | 
				
			
			@ -5,4 +5,5 @@ swagger generate model -f api/swagger.yaml \
 | 
			
		|||
    -t api -m types --skip-validator \
 | 
			
		||||
    -n Volume \
 | 
			
		||||
    -n Port \
 | 
			
		||||
    -n ImageSummary
 | 
			
		||||
    -n ImageSummary \
 | 
			
		||||
    -n Plugin -n PluginDevice -n PluginMount -n PluginEnv -n PluginInterfaceType
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue