volman

package module
v0.0.0-...-b9b56e6 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Aug 28, 2018 License: Apache-2.0 Imports: 1 Imported by: 0

README

Cloud Foundry Volume Services

On Cloud Foundry, applications connect to services via a service marketplace. Each service has a Service Broker, with encapsulates the logic for creating, managing, and binding services to applications. Until recently, the only data services that have been allowed were ones with a network-based connection, such as a SQL database. With Volume Services, we've added the ability to attach data services that have a filesystem-based interface.

Currently, we have platform support for Shared Volumes. Shared Volumes are distributed filesystems, such as NFS-based systems, which allow all instances of an application to share the same mounted volume simultaneously and access it concurrently.

This feature adds two new concepts to CF: Volume Mounts on Service Brokers and Volume Drivers on Diego Cells, which are described below.

For more information on CF Volume Services, please refer to this introductory document.

Developer Notes

Setting up Intellij

Configure your project to run gofmt and go imports using the following regex:-

file[diego-release]:src/github.com/cloudfoundry-incubator/inigo/*.go||file[diego-bosh-release]:src/github.com/cloudfoundry-incubator/inigo/**/*||file[diego-release]:src/github.com/cloudfoundry-incubator/volman/*.go||file[diego-release]:src/github.com/cloudfoundry-incubator/volman/**/*

This is so that Intellij does not go fmt dependent packages which may result in source changes.

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

This section is empty.

Types

type Discoverer

type Discoverer interface {
	Discover(logger lager.Logger) (map[string]Plugin, error)
}

type InfoResponse

type InfoResponse struct {
	Name string `json:"name"`
}

type ListDriversResponse

type ListDriversResponse struct {
	Drivers []InfoResponse `json:"drivers"`
}

type Manager

type Manager interface {
	ListDrivers(logger lager.Logger) (ListDriversResponse, error)
	Mount(logger lager.Logger, driverId string, volumeId string, config map[string]interface{}) (MountResponse, error)
	Unmount(logger lager.Logger, driverId string, volumeId string) error
}

type MountRequest

type MountRequest struct {
	DriverId string                 `json:"driverId"`
	VolumeId string                 `json:"volumeId"`
	Config   map[string]interface{} `json:"config"`
}

type MountResponse

type MountResponse struct {
	Path string `json:"path"`
}

type Plugin

type Plugin interface {
	ListVolumes(logger lager.Logger) ([]string, error)
	Mount(logger lager.Logger, volumeId string, config map[string]interface{}) (MountResponse, error)
	Unmount(logger lager.Logger, volumeId string) error
	Matches(lager.Logger, PluginSpec) bool
}

type PluginRegistry

type PluginRegistry interface {
	Plugin(id string) (Plugin, bool)
	Plugins() map[string]Plugin
	Set(plugins map[string]Plugin)
	Keys() []string
}

type PluginSpec

type PluginSpec struct {
	Name      string     `json:"Name"`
	Address   string     `json:"Addr"`
	TLSConfig *TLSConfig `json:"TLSConfig"`
}

type SafeError

type SafeError struct {
	SafeDescription string `json:"SafeDescription"`
}

func (SafeError) Error

func (s SafeError) Error() string

type TLSConfig

type TLSConfig struct {
	InsecureSkipVerify bool   `json:"InsecureSkipVerify"`
	CAFile             string `json:"CAFile"`
	CertFile           string `json:"CertFile"`
	KeyFile            string `json:"KeyFile"`
}

type UnmountRequest

type UnmountRequest struct {
	DriverId string `json:"driverId"`
	VolumeId string `json:"volumeId"`
}

Directories

Path Synopsis
Code generated by counterfeiter.
Code generated by counterfeiter.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL