pulumi/pkg/backend/updates.go
CyrusNajmabadi 66bd3f4aa8
Breaking changes due to Feature 2.0 work
* Make `async:true` the default for `invoke` calls (#3750)

* Switch away from native grpc impl. (#3728)

* Remove usage of the 'deasync' library from @pulumi/pulumi. (#3752)

* Only retry as long as we get unavailable back.  Anything else continues. (#3769)

* Handle all errors for now. (#3781)


* Do not assume --yes was present when using pulumi in non-interactive mode (#3793)

* Upgrade all paths for sdk and pkg to v2

* Backport C# invoke classes and other recent gen changes (#4288)

Adjust C# generation

* Replace IDeployment with a sealed class (#4318)

Replace IDeployment with a sealed class

* .NET: default to args subtype rather than Args.Empty (#4320)

* Adding system namespace for Dotnet code gen

This is required for using Obsolute attributes for deprecations

```
Iam/InstanceProfile.cs(142,10): error CS0246: The type or namespace name 'ObsoleteAttribute' could not be found (are you missing a using directive or an assembly reference?) [/Users/stack72/code/go/src/github.com/pulumi/pulumi-aws/sdk/dotnet/Pulumi.Aws.csproj]
Iam/InstanceProfile.cs(142,10): error CS0246: The type or namespace name 'Obsolete' could not be found (are you missing a using directive or an assembly reference?) [/Users/stack72/code/go/src/github.com/pulumi/pulumi-aws/sdk/dotnet/Pulumi.Aws.csproj]
```

* Fix the nullability of config type properties in C# codegen (#4379)
2020-04-14 09:30:25 +01:00

111 lines
4.5 KiB
Go

// Copyright 2016-2018, Pulumi Corporation.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
package backend
import (
"github.com/pulumi/pulumi/pkg/v2/engine"
"github.com/pulumi/pulumi/sdk/v2/go/common/apitype"
"github.com/pulumi/pulumi/sdk/v2/go/common/resource/config"
)
// UpdateMetadata describes optional metadata about an update.
type UpdateMetadata struct {
// Message is an optional message associated with the update.
Message string `json:"message"`
// Environment contains optional data from the deploying environment. e.g. the current
// source code control commit information.
Environment map[string]string `json:"environment"`
}
// UpdateResult is an enum for the result of the update.
type UpdateResult string
const (
// InProgressResult is for updates that have not yet completed.
InProgressResult UpdateResult = "in-progress"
// SucceededResult is for updates that completed successfully.
SucceededResult UpdateResult = "succeeded"
// FailedResult is for updates that have failed.
FailedResult UpdateResult = "failed"
)
// Keys we use for values put into UpdateInfo.Environment.
const (
// GitHead is the commit hash of HEAD.
GitHead = "git.head"
// GitHeadName is the name of the HEAD ref. e.g. "refs/heads/master" or "refs/tags/v1.0.0".
GitHeadName = "git.headName"
// GitDirty ("true", "false") indicates if there are any unstaged or modified files in the local repo.
GitDirty = "git.dirty"
// GitCommitter is the name of the person who committed the commit at HEAD.
GitCommitter = "git.committer"
// GitCommitterEmail is the Email address associated with the committer.
GitCommitterEmail = "git.committer.email"
// GitAuthor is the name of the person who authored the commit at HEAD.
GitAuthor = "git.author"
// GitAuthorEmail is the email address associated with the commit's author.
GitAuthorEmail = "git.author.email"
// VCSRepoOwner is the user who owns the local repo, if the origin remote is a cloud host.
VCSRepoOwner = "vcs.owner"
// VCSRepoName is the name of the repo, if the local git repo's remote origin is a cloud host.
VCSRepoName = "vcs.repo"
//VCSRepoKind is the cloud host where the repo is hosted.
VCSRepoKind = "vcs.kind"
// CISystem is the name of the CI system running the pulumi operation.
CISystem = "ci.system"
// CIBuildID is an opaque ID of the build in the CI system.
CIBuildID = "ci.build.id"
// CIBuildNumber is a sequentially incrementing number specific for a project/repo.
// This value is only set for CI systems that have separate Build ID and a Build Number.
// If this value is blank, use `CIBuildID` always.
CIBuildNumer = "ci.build.number"
// CIBuildType is the type of build of the CI system, e.g. "push", "pull_request", "test_only".
CIBuildType = "ci.build.type"
// CIBuildURL is a URL to get more information about the particular CI build.
CIBuildURL = "ci.build.url"
// CIPRHeadSHA is the SHA of the HEAD commit of a pull request running on CI. This is needed since the CI
// server will run at a different, merge commit. (headSHA merged into the target branch.)
CIPRHeadSHA = "ci.pr.headSHA"
// CIPRNumber is the PR number, for which the current CI job may be executing.
// Combining this information with the `VCSRepoKind` will give us the PR URL.
CIPRNumber = "ci.pr.number"
)
// UpdateInfo describes a previous update.
type UpdateInfo struct {
// Information known before an update is started.
Kind apitype.UpdateKind `json:"kind"`
StartTime int64 `json:"startTime"`
// Message is an optional message associated with the update.
Message string `json:"message"`
// Environment contains optional data from the deploying environment. e.g. the current
// source code control commit information.
Environment map[string]string `json:"environment"`
// Config used for the update.
Config config.Map `json:"config"`
// Information obtained from an update completing.
Result UpdateResult `json:"result"`
EndTime int64 `json:"endTime"`
ResourceChanges engine.ResourceChanges `json:"resourceChanges,omitempty"`
}