v7pushaction

package
v6.47.1+incompatible Latest Latest
Warning

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

Go to latest
Published: Oct 18, 2019 License: Apache-2.0 Imports: 20 Imported by: 72

Documentation

Overview

Package v7pushaction contains the business logic for orchestrating a V2 app push.

Index

Constants

View Source
const ProtocolRegexp = "^https?://|^tcp://"
View Source
const PushRetries = 3
View Source
const URLRegexp = "^(?:https?://|tcp://)?(?:(?:[\\w-]+\\.)|(?:[*]\\.))+\\w+(?:\\:\\d+)?(?:/.*)*(?:\\.\\w+)?$"
View Source
const UploadRetries = 3

Variables

This section is empty.

Functions

func HandleAppNameOverride

func HandleAppNameOverride(manifest pushmanifestparser.Manifest, overrides FlagOverrides) (pushmanifestparser.Manifest, error)

func HandleAppPathOverride

func HandleAppPathOverride(manifest pushmanifestparser.Manifest, overrides FlagOverrides) (pushmanifestparser.Manifest, error)

Overrides the path if path is given. Changes empty paths to pwd. Validates paths

func HandleBuildpacksOverride

func HandleBuildpacksOverride(manifest pushmanifestparser.Manifest, overrides FlagOverrides) (pushmanifestparser.Manifest, error)

func HandleDefaultRouteOverride

func HandleDefaultRouteOverride(manifest pushmanifestparser.Manifest, overrides FlagOverrides) (pushmanifestparser.Manifest, error)

func HandleDiskOverride

func HandleDiskOverride(manifest pushmanifestparser.Manifest, overrides FlagOverrides) (pushmanifestparser.Manifest, error)

func HandleDockerImageOverride

func HandleDockerImageOverride(manifest pushmanifestparser.Manifest, overrides FlagOverrides) (pushmanifestparser.Manifest, error)

func HandleDockerUsernameOverride

func HandleDockerUsernameOverride(manifest pushmanifestparser.Manifest, overrides FlagOverrides) (pushmanifestparser.Manifest, error)

func HandleDropletPathOverride

func HandleDropletPathOverride(manifest pushmanifestparser.Manifest, overrides FlagOverrides) (pushmanifestparser.Manifest, error)

func HandleHealthCheckEndpointOverride

func HandleHealthCheckEndpointOverride(manifest pushmanifestparser.Manifest, overrides FlagOverrides) (pushmanifestparser.Manifest, error)

func HandleHealthCheckTimeoutOverride

func HandleHealthCheckTimeoutOverride(manifest pushmanifestparser.Manifest, overrides FlagOverrides) (pushmanifestparser.Manifest, error)

func HandleHealthCheckTypeOverride

func HandleHealthCheckTypeOverride(manifest pushmanifestparser.Manifest, overrides FlagOverrides) (pushmanifestparser.Manifest, error)

func HandleInstancesOverride

func HandleInstancesOverride(manifest pushmanifestparser.Manifest, overrides FlagOverrides) (pushmanifestparser.Manifest, error)

func HandleMemoryOverride

func HandleMemoryOverride(manifest pushmanifestparser.Manifest, overrides FlagOverrides) (pushmanifestparser.Manifest, error)

func HandleNoRouteOverride

func HandleNoRouteOverride(manifest pushmanifestparser.Manifest, overrides FlagOverrides) (pushmanifestparser.Manifest, error)

func HandleRandomRouteOverride

func HandleRandomRouteOverride(manifest pushmanifestparser.Manifest, overrides FlagOverrides) (pushmanifestparser.Manifest, error)

func HandleStackOverride

func HandleStackOverride(manifest pushmanifestparser.Manifest, overrides FlagOverrides) (pushmanifestparser.Manifest, error)

func HandleStartCommandOverride

func HandleStartCommandOverride(manifest pushmanifestparser.Manifest, overrides FlagOverrides) (pushmanifestparser.Manifest, error)

func HandleStrategyOverride

func HandleStrategyOverride(manifest pushmanifestparser.Manifest, overrides FlagOverrides) (pushmanifestparser.Manifest, error)

func ShouldCreateBitsPackage

func ShouldCreateBitsPackage(plan PushPlan) bool

func ShouldCreateDeployment

func ShouldCreateDeployment(plan PushPlan) bool

func ShouldCreateDockerPackage

func ShouldCreateDockerPackage(plan PushPlan) bool

func ShouldCreateDroplet

func ShouldCreateDroplet(plan PushPlan) bool

func ShouldRestart

func ShouldRestart(plan PushPlan) bool

func ShouldSetDroplet

func ShouldSetDroplet(plan PushPlan) bool

func ShouldStagePackage

func ShouldStagePackage(plan PushPlan) bool

func ShouldStopApplication

func ShouldStopApplication(plan PushPlan) bool

Types

type Actor

type Actor struct {
	SharedActor SharedActor
	V7Actor     V7Actor

	PreparePushPlanSequence   []UpdatePushPlanFunc
	ChangeApplicationSequence func(plan PushPlan) []ChangeApplicationFunc
	TransformManifestSequence []HandleFlagOverrideFunc
	RandomWordGenerator       RandomWordGenerator
	// contains filtered or unexported fields
}

Actor handles all business logic for Cloud Controller v2 operations.

func NewActor

func NewActor(v3Actor V7Actor, sharedActor SharedActor) *Actor

NewActor returns a new actor.

func (Actor) Actualize

func (actor Actor) Actualize(plan PushPlan, progressBar ProgressBar) <-chan *PushEvent

func (Actor) CreateAndMapRoute

func (actor Actor) CreateAndMapRoute(orgGUID string, spaceGUID string, app v7action.Application, gt GenesisTechnique) (Warnings, error)

func (Actor) CreateAndReturnArchivePath

func (actor Actor) CreateAndReturnArchivePath(pushPlan PushPlan, unmatchedResources []sharedaction.V3Resource) (string, error)

func (Actor) CreateAndUploadApplicationBits

func (actor Actor) CreateAndUploadApplicationBits(pushPlan PushPlan, eventStream chan<- *PushEvent, progressBar ProgressBar) (v7action.Package, Warnings, error)

func (Actor) CreateBitsPackageForApplication

func (actor Actor) CreateBitsPackageForApplication(pushPlan PushPlan, eventStream chan<- *PushEvent, progressBar ProgressBar) (PushPlan, Warnings, error)

func (Actor) CreateDeploymentForApplication

func (actor Actor) CreateDeploymentForApplication(pushPlan PushPlan, eventStream chan<- *PushEvent, progressBar ProgressBar) (PushPlan, Warnings, error)

func (Actor) CreateDockerPackageForApplication

func (actor Actor) CreateDockerPackageForApplication(pushPlan PushPlan, eventStream chan<- *PushEvent, progressBar ProgressBar) (PushPlan, Warnings, error)

func (Actor) CreateDropletForApplication

func (actor Actor) CreateDropletForApplication(pushPlan PushPlan, eventStream chan<- *PushEvent, progressBar ProgressBar) (PushPlan, Warnings, error)

func (Actor) CreatePushPlans

func (actor Actor) CreatePushPlans(
	spaceGUID string,
	orgGUID string,
	manifest pushmanifestparser.Manifest,
	overrides FlagOverrides,
) ([]PushPlan, v7action.Warnings, error)

CreatePushPlans returns a set of PushPlan objects based off the inputs provided. It's assumed that all flag and argument and manifest combinations have been validated prior to calling this function.

func (Actor) GetPrepareApplicationSourceSequence

func (actor Actor) GetPrepareApplicationSourceSequence(plan PushPlan) []ChangeApplicationFunc

func (Actor) GetRuntimeSequence

func (actor Actor) GetRuntimeSequence(plan PushPlan) []ChangeApplicationFunc

func (Actor) HandleFlagOverrides

func (actor Actor) HandleFlagOverrides(
	baseManifest pushmanifestparser.Manifest,
	flagOverrides FlagOverrides,
) (pushmanifestparser.Manifest, error)

func (Actor) MatchResources

func (actor Actor) MatchResources(resources []sharedaction.V3Resource) ([]sharedaction.V3Resource, []sharedaction.V3Resource, Warnings, error)

MatchResources returns back a list of matched and unmatched resources for the provided resources.

func (Actor) RestartApplication

func (actor Actor) RestartApplication(pushPlan PushPlan, eventStream chan<- *PushEvent, progressBar ProgressBar) (PushPlan, Warnings, error)

func (Actor) SetDropletForApplication

func (actor Actor) SetDropletForApplication(pushPlan PushPlan, eventStream chan<- *PushEvent, progressBar ProgressBar) (PushPlan, Warnings, error)

func (Actor) SetupAllResourcesForPushPlan

func (actor Actor) SetupAllResourcesForPushPlan(pushPlan PushPlan, overrides FlagOverrides) (PushPlan, error)

func (Actor) StagePackageForApplication

func (actor Actor) StagePackageForApplication(pushPlan PushPlan, eventStream chan<- *PushEvent, progressBar ProgressBar) (PushPlan, Warnings, error)

func (Actor) StopApplication

func (actor Actor) StopApplication(pushPlan PushPlan, eventStream chan<- *PushEvent, progressBar ProgressBar) (PushPlan, Warnings, error)

type Application

type Application struct {
	v2action.Application
	Buildpacks []string
	Stack      v2action.Stack
}

func (Application) CalculatedBuildpacks

func (app Application) CalculatedBuildpacks() []string

CalculatedBuildpacks will return back the buildpacks for the application.

func (*Application) SetStack

func (app *Application) SetStack(stack v2action.Stack)

func (Application) String

func (app Application) String() string

type ChangeApplicationFunc

type ChangeApplicationFunc func(pushPlan PushPlan, eventStream chan<- *PushEvent, progressBar ProgressBar) (PushPlan, Warnings, error)

ChangeApplicationFunc is a function that is used by Actualize to setup application for staging, droplet creation, etc.

type Event

type Event string
const (
	ApplyManifest                   Event = "Applying manifest"
	ApplyManifestComplete           Event = "Applying manifest Complete"
	CreatingArchive                 Event = "creating archive"
	CreatingDroplet                 Event = "creating droplet"
	CreatingPackage                 Event = "creating package"
	PollingBuild                    Event = "polling build"
	ReadingArchive                  Event = "reading archive"
	ResourceMatching                Event = "resource matching"
	RestartingApplication           Event = "restarting application"
	RestartingApplicationComplete   Event = "restarting application complete"
	RetryUpload                     Event = "retry upload"
	SetDockerImage                  Event = "setting docker properties"
	SetDockerImageComplete          Event = "completed setting docker properties"
	SetDropletComplete              Event = "set droplet complete"
	SettingDroplet                  Event = "setting droplet"
	StagingComplete                 Event = "staging complete"
	StartingDeployment              Event = "starting deployment"
	StartingStaging                 Event = "starting staging"
	StoppingApplication             Event = "stopping application"
	StoppingApplicationComplete     Event = "stopping application complete"
	UploadDropletComplete           Event = "upload droplet complete"
	UploadingApplication            Event = "uploading application"
	UploadingApplicationWithArchive Event = "uploading application with archive"
	UploadingDroplet                Event = "uploading droplet"
	UploadWithArchiveComplete       Event = "upload complete"
	WaitingForDeployment            Event = "waiting for deployment"
)

type FlagOverrides

type FlagOverrides struct {
	AppName             string
	Buildpacks          []string
	Stack               string
	Disk                string
	DropletPath         string
	DockerImage         string
	DockerPassword      string
	DockerUsername      string
	HealthCheckEndpoint string
	HealthCheckTimeout  int64
	HealthCheckType     constant.HealthCheckType
	Instances           types.NullInt
	Memory              string
	NoStart             bool
	NoWait              bool
	ProvidedAppPath     string
	NoRoute             bool
	RandomRoute         bool
	StartCommand        types.FilteredString
	Strategy            constant.DeploymentStrategy
	ManifestPath        string
	PathsToVarsFiles    []string
	Vars                []template.VarKV
	NoManifest          bool
}

type GenesisTechnique

type GenesisTechnique int
const (
	DefaultRoute GenesisTechnique = iota
	RandomRoute
)

type HandleFlagOverrideFunc

type HandleFlagOverrideFunc func(manifest pushmanifestparser.Manifest, overrides FlagOverrides) (pushmanifestparser.Manifest, error)

type ProgressBar

type ProgressBar interface {
	NewProgressBarWrapper(reader io.Reader, sizeOfFile int64) io.Reader
}

type PushEvent

type PushEvent struct {
	Event    Event
	Plan     PushPlan
	Err      error
	Warnings Warnings
}

type PushPlan

type PushPlan struct {
	SpaceGUID string
	OrgGUID   string

	Application v7action.Application

	NoStart  bool
	NoWait   bool
	Strategy constant.DeploymentStrategy

	DockerImageCredentials v7action.DockerImageCredentials

	Archive      bool
	BitsPath     string
	DropletPath  string
	AllResources []sharedaction.V3Resource

	PackageGUID string
	DropletGUID string
}

func SetDefaultBitsPathForPushPlan

func SetDefaultBitsPathForPushPlan(pushPlan PushPlan, overrides FlagOverrides) (PushPlan, error)

func SetupDeploymentStrategyForPushPlan

func SetupDeploymentStrategyForPushPlan(pushPlan PushPlan, overrides FlagOverrides) (PushPlan, error)

func SetupDropletPathForPushPlan

func SetupDropletPathForPushPlan(pushPlan PushPlan, overrides FlagOverrides) (PushPlan, error)

func SetupNoStartForPushPlan

func SetupNoStartForPushPlan(pushPlan PushPlan, overrides FlagOverrides) (PushPlan, error)

func SetupNoWaitForPushPlan

func SetupNoWaitForPushPlan(pushPlan PushPlan, overrides FlagOverrides) (PushPlan, error)

func (PushPlan) String

func (state PushPlan) String() string

type RandomWordGenerator

type RandomWordGenerator interface {
	RandomAdjective() string
	RandomNoun() string
}

RandomWordGenerator returns random words.

type SharedActor

type SharedActor interface {
	GatherArchiveResources(archivePath string) ([]sharedaction.Resource, error)
	GatherDirectoryResources(sourceDir string) ([]sharedaction.Resource, error)
	ReadArchive(archivePath string) (io.ReadCloser, int64, error)
	ZipArchiveResources(sourceArchivePath string, filesToInclude []sharedaction.Resource) (string, error)
	ZipDirectoryResources(sourceDir string, filesToInclude []sharedaction.Resource) (string, error)
}

type UpdatePushPlanFunc

type UpdatePushPlanFunc func(pushPlan PushPlan, overrides FlagOverrides) (PushPlan, error)

UpdatePushPlanFunc is a function that is used by CreatePushPlans to setup push plans for the push command.

type V2Actor

type V2Actor interface {
	MapRouteToApplication(routeGUID string, appGUID string) (v2action.Warnings, error)
	CreateRoute(route v2action.Route, generatePort bool) (v2action.Route, v2action.Warnings, error)
	FindRouteBoundToSpaceWithSettings(route v2action.Route) (v2action.Route, v2action.Warnings, error)
	GetApplicationRoutes(applicationGUID string) (v2action.Routes, v2action.Warnings, error)
	GetOrganizationDomains(orgGUID string) ([]v2action.Domain, v2action.Warnings, error)
}

type V7Actor

type V7Actor interface {
	CreateApplicationDroplet(appGUID string) (v7action.Droplet, v7action.Warnings, error)
	CreateApplicationInSpace(app v7action.Application, spaceGUID string) (v7action.Application, v7action.Warnings, error)
	CreateBitsPackageByApplication(appGUID string) (v7action.Package, v7action.Warnings, error)
	CreateDeployment(appGUID string, dropletGUID string) (string, v7action.Warnings, error)
	CreateDockerPackageByApplication(appGUID string, dockerImageCredentials v7action.DockerImageCredentials) (v7action.Package, v7action.Warnings, error)
	CreateRoute(spaceGUID, domainName, hostname, path string) (v7action.Route, v7action.Warnings, error)
	GetApplicationByNameAndSpace(appName string, spaceGUID string) (v7action.Application, v7action.Warnings, error)
	GetApplicationDroplets(appName string, spaceGUID string) ([]v7action.Droplet, v7action.Warnings, error)
	GetApplicationRoutes(appGUID string) ([]v7action.Route, v7action.Warnings, error)
	GetApplicationsByNamesAndSpace(appNames []string, spaceGUID string) ([]v7action.Application, v7action.Warnings, error)
	GetDefaultDomain(orgGUID string) (v7action.Domain, v7action.Warnings, error)
	GetDomain(domainGUID string) (v7action.Domain, v7action.Warnings, error)
	GetRouteByAttributes(domainName, domainGUID, hostname, path string) (v7action.Route, v7action.Warnings, error)
	GetRouteDestinationByAppGUID(routeGUID string, appGUID string) (v7action.RouteDestination, v7action.Warnings, error)
	MapRoute(routeGUID string, appGUID string) (v7action.Warnings, error)
	PollBuild(buildGUID string, appName string) (v7action.Droplet, v7action.Warnings, error)
	PollPackage(pkg v7action.Package) (v7action.Package, v7action.Warnings, error)
	PollStart(appGUID string, noWait bool) (v7action.Warnings, error)
	PollStartForRolling(appGUID string, deploymentGUID string, noWait bool) (v7action.Warnings, error)
	ResourceMatch(resources []sharedaction.V3Resource) ([]sharedaction.V3Resource, v7action.Warnings, error)
	RestartApplication(appGUID string, noWait bool) (v7action.Warnings, error)
	ScaleProcessByApplication(appGUID string, process v7action.Process) (v7action.Warnings, error)
	SetApplicationDroplet(appGUID string, dropletGUID string) (v7action.Warnings, error)
	SetApplicationManifest(appGUID string, rawManifest []byte) (v7action.Warnings, error)
	SetSpaceManifest(spaceGUID string, rawManifest []byte) (v7action.Warnings, error)
	StageApplicationPackage(pkgGUID string) (v7action.Build, v7action.Warnings, error)
	StopApplication(appGUID string) (v7action.Warnings, error)
	UnmapRoute(routeGUID string, destinationGUID string) (v7action.Warnings, error)
	UpdateApplication(app v7action.Application) (v7action.Application, v7action.Warnings, error)
	UpdateProcessByTypeAndApplication(processType string, appGUID string, updatedProcess v7action.Process) (v7action.Warnings, error)
	UploadBitsPackage(pkg v7action.Package, matchedResources []sharedaction.V3Resource, newResources io.Reader, newResourcesLength int64) (v7action.Package, v7action.Warnings, error)
	UploadDroplet(dropletGUID string, dropletPath string, progressReader io.Reader, fileSize int64) (v7action.Warnings, error)
}

type Warnings

type Warnings []string

Warnings is a list of warnings returned back from the cloud controller

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