Compare commits
22 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 0cbe23bedf | |||
| d6ca712713 | |||
| fefb4e655d | |||
| 62fdea0aa0 | |||
| 350c71b221 | |||
| 203a182934 | |||
| bfb4a8df11 | |||
| 9424fce5a5 | |||
| 9151f53591 | |||
| 94c3dd8392 | |||
| b8b2ed07b6 | |||
| 360ff1c137 | |||
| 19b1390a3a | |||
| 4281e43090 | |||
| 66de7dd387 | |||
| c3221cec81 | |||
| d53c94b32a | |||
| d31e07d605 | |||
| 9c5fc3bbbb | |||
| d56514492b | |||
| 8979bfe059 | |||
| ebacced232 |
@@ -7,5 +7,5 @@ runs:
|
||||
- name: Install Terraform
|
||||
uses: hashicorp/setup-terraform@v3
|
||||
with:
|
||||
terraform_version: 1.5.7
|
||||
terraform_version: 1.7.5
|
||||
terraform_wrapper: false
|
||||
|
||||
@@ -183,6 +183,9 @@ jobs:
|
||||
- name: Setup sqlc
|
||||
uses: ./.github/actions/setup-sqlc
|
||||
|
||||
- name: Setup Terraform
|
||||
uses: ./.github/actions/setup-tf
|
||||
|
||||
- name: go install tools
|
||||
run: |
|
||||
go install google.golang.org/protobuf/cmd/protoc-gen-go@v1.30
|
||||
|
||||
@@ -178,9 +178,9 @@ jobs:
|
||||
env:
|
||||
EV_SIGNING_CERT: ${{ secrets.EV_SIGNING_CERT }}
|
||||
|
||||
- name: Test migrations from current ref to main
|
||||
run: |
|
||||
make test-migrations
|
||||
# - name: Test migrations from current ref to main
|
||||
# run: |
|
||||
# make test-migrations
|
||||
|
||||
# Setup GCloud for signing Windows binaries.
|
||||
- name: Authenticate to Google Cloud
|
||||
|
||||
@@ -489,6 +489,7 @@ gen: \
|
||||
coderd/apidoc/swagger.json \
|
||||
.prettierignore.include \
|
||||
.prettierignore \
|
||||
provisioner/terraform/testdata/version \
|
||||
site/.prettierrc.yaml \
|
||||
site/.prettierignore \
|
||||
site/.eslintignore \
|
||||
@@ -674,6 +675,12 @@ provisioner/terraform/testdata/.gen-golden: $(wildcard provisioner/terraform/tes
|
||||
go test ./provisioner/terraform -run="Test.*Golden$$" -update
|
||||
touch "$@"
|
||||
|
||||
provisioner/terraform/testdata/version:
|
||||
if [[ "$(shell cat provisioner/terraform/testdata/version.txt)" != "$(shell terraform version -json | jq -r '.terraform_version')" ]]; then
|
||||
./provisioner/terraform/testdata/generate.sh
|
||||
fi
|
||||
.PHONY: provisioner/terraform/testdata/version
|
||||
|
||||
scripts/ci-report/testdata/.gen-golden: $(wildcard scripts/ci-report/testdata/*) $(wildcard scripts/ci-report/*.go)
|
||||
go test ./scripts/ci-report -run=TestOutputMatchesGoldenFile -update
|
||||
touch "$@"
|
||||
|
||||
+1
-1
@@ -239,7 +239,7 @@ func (r *RootCmd) login() *serpent.Command {
|
||||
|
||||
if !inv.ParsedFlags().Changed("first-user-trial") && os.Getenv(firstUserTrialEnv) == "" {
|
||||
v, _ := cliui.Prompt(inv, cliui.PromptOptions{
|
||||
Text: "Start a 30-day trial of Enterprise?",
|
||||
Text: "Start a trial of Enterprise?",
|
||||
IsConfirm: true,
|
||||
Default: "yes",
|
||||
})
|
||||
|
||||
+11
-24
@@ -796,31 +796,18 @@ func (r *RootCmd) Server(newAPI func(context.Context, *coderd.Options) (*coderd.
|
||||
cliui.Infof(inv.Stdout, "\n==> Logs will stream in below (press ctrl+c to gracefully exit):")
|
||||
|
||||
if vals.Telemetry.Enable {
|
||||
gitAuth := make([]telemetry.GitAuth, 0)
|
||||
// TODO:
|
||||
var gitAuthConfigs []codersdk.ExternalAuthConfig
|
||||
for _, cfg := range gitAuthConfigs {
|
||||
gitAuth = append(gitAuth, telemetry.GitAuth{
|
||||
Type: cfg.Type,
|
||||
})
|
||||
vals, err := vals.WithoutSecrets()
|
||||
if err != nil {
|
||||
return xerrors.Errorf("remove secrets from deployment values: %w", err)
|
||||
}
|
||||
|
||||
options.Telemetry, err = telemetry.New(telemetry.Options{
|
||||
BuiltinPostgres: builtinPostgres,
|
||||
DeploymentID: deploymentID,
|
||||
Database: options.Database,
|
||||
Logger: logger.Named("telemetry"),
|
||||
URL: vals.Telemetry.URL.Value(),
|
||||
Wildcard: vals.WildcardAccessURL.String() != "",
|
||||
DERPServerRelayURL: vals.DERP.Server.RelayURL.String(),
|
||||
GitAuth: gitAuth,
|
||||
GitHubOAuth: vals.OAuth2.Github.ClientID != "",
|
||||
OIDCAuth: vals.OIDC.ClientID != "",
|
||||
OIDCIssuerURL: vals.OIDC.IssuerURL.String(),
|
||||
Prometheus: vals.Prometheus.Enable.Value(),
|
||||
STUN: len(vals.DERP.Server.STUNAddresses) != 0,
|
||||
Tunnel: tunnel != nil,
|
||||
Experiments: vals.Experiments.Value(),
|
||||
BuiltinPostgres: builtinPostgres,
|
||||
DeploymentID: deploymentID,
|
||||
Database: options.Database,
|
||||
Logger: logger.Named("telemetry"),
|
||||
URL: vals.Telemetry.URL.Value(),
|
||||
Tunnel: tunnel != nil,
|
||||
DeploymentConfig: vals,
|
||||
ParseLicenseJWT: func(lic *telemetry.License) error {
|
||||
// This will be nil when running in AGPL-only mode.
|
||||
if options.ParseLicenseClaims == nil {
|
||||
@@ -1441,7 +1428,7 @@ func newProvisionerDaemon(
|
||||
|
||||
connector[string(database.ProvisionerTypeTerraform)] = sdkproto.NewDRPCProvisionerClient(terraformClient)
|
||||
default:
|
||||
return nil, fmt.Errorf("unknown provisioner type %q", provisionerType)
|
||||
return nil, xerrors.Errorf("unknown provisioner type %q", provisionerType)
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -6,6 +6,7 @@ import (
|
||||
"errors"
|
||||
"fmt"
|
||||
"io"
|
||||
"log"
|
||||
"net/http"
|
||||
"net/url"
|
||||
"os"
|
||||
@@ -79,6 +80,10 @@ func (r *RootCmd) ssh() *serpent.Command {
|
||||
ctx, cancel := context.WithCancel(ctx)
|
||||
defer cancel()
|
||||
|
||||
// Prevent unnecessary logs from the stdlib from messing up the TTY.
|
||||
// See: https://github.com/coder/coder/issues/13144
|
||||
log.SetOutput(io.Discard)
|
||||
|
||||
logger := inv.Logger
|
||||
defer func() {
|
||||
if retErr != nil {
|
||||
|
||||
Generated
+4
-6
@@ -8549,6 +8549,10 @@ const docTemplate = `{
|
||||
"description": "ExternalURL references the current Coder version.\nFor production builds, this will link directly to a release. For development builds, this will link to a commit.",
|
||||
"type": "string"
|
||||
},
|
||||
"telemetry": {
|
||||
"description": "Telemetry is a boolean that indicates whether telemetry is enabled.",
|
||||
"type": "boolean"
|
||||
},
|
||||
"upgrade_message": {
|
||||
"description": "UpgradeMessage is the message displayed to users when an outdated client\nis detected.",
|
||||
"type": "string"
|
||||
@@ -9608,12 +9612,6 @@ const docTemplate = `{
|
||||
"description": "DisplayName is shown in the UI to identify the auth config.",
|
||||
"type": "string"
|
||||
},
|
||||
"extra_token_keys": {
|
||||
"type": "array",
|
||||
"items": {
|
||||
"type": "string"
|
||||
}
|
||||
},
|
||||
"id": {
|
||||
"description": "ID is a unique identifier for the auth config.\nIt defaults to ` + "`" + `type` + "`" + ` when not provided.",
|
||||
"type": "string"
|
||||
|
||||
Generated
+4
-6
@@ -7607,6 +7607,10 @@
|
||||
"description": "ExternalURL references the current Coder version.\nFor production builds, this will link directly to a release. For development builds, this will link to a commit.",
|
||||
"type": "string"
|
||||
},
|
||||
"telemetry": {
|
||||
"description": "Telemetry is a boolean that indicates whether telemetry is enabled.",
|
||||
"type": "boolean"
|
||||
},
|
||||
"upgrade_message": {
|
||||
"description": "UpgradeMessage is the message displayed to users when an outdated client\nis detected.",
|
||||
"type": "string"
|
||||
@@ -8603,12 +8607,6 @@
|
||||
"description": "DisplayName is shown in the UI to identify the auth config.",
|
||||
"type": "string"
|
||||
},
|
||||
"extra_token_keys": {
|
||||
"type": "array",
|
||||
"items": {
|
||||
"type": "string"
|
||||
}
|
||||
},
|
||||
"id": {
|
||||
"description": "ID is a unique identifier for the auth config.\nIt defaults to `type` when not provided.",
|
||||
"type": "string"
|
||||
|
||||
@@ -444,6 +444,7 @@ func New(options *Options) *API {
|
||||
WorkspaceProxy: false,
|
||||
UpgradeMessage: api.DeploymentValues.CLIUpgradeMessage.String(),
|
||||
DeploymentID: api.DeploymentID,
|
||||
Telemetry: api.Telemetry.Enabled(),
|
||||
}
|
||||
api.SiteHandler = site.New(&site.Options{
|
||||
BinFS: binFS,
|
||||
|
||||
@@ -1255,7 +1255,9 @@ type ExternalAuthConfigOptions struct {
|
||||
// ValidatePayload is the payload that is used when the user calls the
|
||||
// equivalent of "userinfo" for oauth2. This is not standardized, so is
|
||||
// different for each provider type.
|
||||
ValidatePayload func(email string) interface{}
|
||||
//
|
||||
// The int,error payload can control the response if set.
|
||||
ValidatePayload func(email string) (interface{}, int, error)
|
||||
|
||||
// routes is more advanced usage. This allows the caller to
|
||||
// completely customize the response. It captures all routes under the /external-auth-validate/*
|
||||
@@ -1292,7 +1294,20 @@ func (f *FakeIDP) ExternalAuthConfig(t testing.TB, id string, custom *ExternalAu
|
||||
case "/user", "/", "":
|
||||
var payload interface{} = "OK"
|
||||
if custom.ValidatePayload != nil {
|
||||
payload = custom.ValidatePayload(email)
|
||||
var err error
|
||||
var code int
|
||||
payload, code, err = custom.ValidatePayload(email)
|
||||
if code == 0 && err == nil {
|
||||
code = http.StatusOK
|
||||
}
|
||||
if code == 0 && err != nil {
|
||||
code = http.StatusUnauthorized
|
||||
}
|
||||
if err != nil {
|
||||
http.Error(rw, fmt.Sprintf("failed validation via custom method: %s", err.Error()), code)
|
||||
return
|
||||
}
|
||||
rw.WriteHeader(code)
|
||||
}
|
||||
_ = json.NewEncoder(rw).Encode(payload)
|
||||
default:
|
||||
|
||||
@@ -202,7 +202,7 @@ func (c *Config) ValidateToken(ctx context.Context, link *oauth2.Token) (bool, *
|
||||
return false, nil, err
|
||||
}
|
||||
defer res.Body.Close()
|
||||
if res.StatusCode == http.StatusUnauthorized {
|
||||
if res.StatusCode == http.StatusUnauthorized || res.StatusCode == http.StatusForbidden {
|
||||
// The token is no longer valid!
|
||||
return false, nil, nil
|
||||
}
|
||||
|
||||
@@ -79,11 +79,11 @@ func TestExternalAuthByID(t *testing.T) {
|
||||
client := coderdtest.New(t, &coderdtest.Options{
|
||||
ExternalAuthConfigs: []*externalauth.Config{
|
||||
fake.ExternalAuthConfig(t, providerID, &oidctest.ExternalAuthConfigOptions{
|
||||
ValidatePayload: func(_ string) interface{} {
|
||||
ValidatePayload: func(_ string) (interface{}, int, error) {
|
||||
return github.User{
|
||||
Login: github.String("kyle"),
|
||||
AvatarURL: github.String("https://avatars.githubusercontent.com/u/12345678?v=4"),
|
||||
}
|
||||
}, 0, nil
|
||||
},
|
||||
}, func(cfg *externalauth.Config) {
|
||||
cfg.Type = codersdk.EnhancedExternalAuthProviderGitHub.String()
|
||||
@@ -108,11 +108,11 @@ func TestExternalAuthByID(t *testing.T) {
|
||||
|
||||
// routes includes a route for /install that returns a list of installations
|
||||
routes := (&oidctest.ExternalAuthConfigOptions{
|
||||
ValidatePayload: func(_ string) interface{} {
|
||||
ValidatePayload: func(_ string) (interface{}, int, error) {
|
||||
return github.User{
|
||||
Login: github.String("kyle"),
|
||||
AvatarURL: github.String("https://avatars.githubusercontent.com/u/12345678?v=4"),
|
||||
}
|
||||
}, 0, nil
|
||||
},
|
||||
}).AddRoute("/installs", func(_ string, rw http.ResponseWriter, r *http.Request) {
|
||||
httpapi.Write(r.Context(), rw, http.StatusOK, struct {
|
||||
@@ -556,7 +556,7 @@ func TestExternalAuthCallback(t *testing.T) {
|
||||
// If the validation URL gives a non-OK status code, this
|
||||
// should be treated as an internal server error.
|
||||
srv.Config.Handler = http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
|
||||
w.WriteHeader(http.StatusForbidden)
|
||||
w.WriteHeader(http.StatusBadRequest)
|
||||
w.Write([]byte("Something went wrong!"))
|
||||
})
|
||||
_, err = agentClient.ExternalAuth(ctx, agentsdk.ExternalAuthRequest{
|
||||
@@ -565,7 +565,7 @@ func TestExternalAuthCallback(t *testing.T) {
|
||||
var apiError *codersdk.Error
|
||||
require.ErrorAs(t, err, &apiError)
|
||||
require.Equal(t, http.StatusInternalServerError, apiError.StatusCode())
|
||||
require.Equal(t, "validate external auth token: status 403: body: Something went wrong!", apiError.Detail)
|
||||
require.Equal(t, "validate external auth token: status 400: body: Something went wrong!", apiError.Detail)
|
||||
})
|
||||
|
||||
t.Run("ExpiredNoRefresh", func(t *testing.T) {
|
||||
|
||||
@@ -41,20 +41,13 @@ type Options struct {
|
||||
// URL is an endpoint to direct telemetry towards!
|
||||
URL *url.URL
|
||||
|
||||
BuiltinPostgres bool
|
||||
DeploymentID string
|
||||
GitHubOAuth bool
|
||||
OIDCAuth bool
|
||||
OIDCIssuerURL string
|
||||
Wildcard bool
|
||||
DERPServerRelayURL string
|
||||
GitAuth []GitAuth
|
||||
Prometheus bool
|
||||
STUN bool
|
||||
SnapshotFrequency time.Duration
|
||||
Tunnel bool
|
||||
ParseLicenseJWT func(lic *License) error
|
||||
Experiments []string
|
||||
DeploymentID string
|
||||
DeploymentConfig *codersdk.DeploymentValues
|
||||
BuiltinPostgres bool
|
||||
Tunnel bool
|
||||
|
||||
SnapshotFrequency time.Duration
|
||||
ParseLicenseJWT func(lic *License) error
|
||||
}
|
||||
|
||||
// New constructs a reporter for telemetry data.
|
||||
@@ -100,6 +93,7 @@ type Reporter interface {
|
||||
// database. For example, if a new user is added, a snapshot can
|
||||
// contain just that user entry.
|
||||
Report(snapshot *Snapshot)
|
||||
Enabled() bool
|
||||
Close()
|
||||
}
|
||||
|
||||
@@ -116,6 +110,10 @@ type remoteReporter struct {
|
||||
shutdownAt *time.Time
|
||||
}
|
||||
|
||||
func (*remoteReporter) Enabled() bool {
|
||||
return true
|
||||
}
|
||||
|
||||
func (r *remoteReporter) Report(snapshot *Snapshot) {
|
||||
go r.reportSync(snapshot)
|
||||
}
|
||||
@@ -242,31 +240,24 @@ func (r *remoteReporter) deployment() error {
|
||||
}
|
||||
|
||||
data, err := json.Marshal(&Deployment{
|
||||
ID: r.options.DeploymentID,
|
||||
Architecture: sysInfo.Architecture,
|
||||
BuiltinPostgres: r.options.BuiltinPostgres,
|
||||
Containerized: containerized,
|
||||
Wildcard: r.options.Wildcard,
|
||||
DERPServerRelayURL: r.options.DERPServerRelayURL,
|
||||
GitAuth: r.options.GitAuth,
|
||||
Kubernetes: os.Getenv("KUBERNETES_SERVICE_HOST") != "",
|
||||
GitHubOAuth: r.options.GitHubOAuth,
|
||||
OIDCAuth: r.options.OIDCAuth,
|
||||
OIDCIssuerURL: r.options.OIDCIssuerURL,
|
||||
Prometheus: r.options.Prometheus,
|
||||
InstallSource: installSource,
|
||||
STUN: r.options.STUN,
|
||||
Tunnel: r.options.Tunnel,
|
||||
OSType: sysInfo.OS.Type,
|
||||
OSFamily: sysInfo.OS.Family,
|
||||
OSPlatform: sysInfo.OS.Platform,
|
||||
OSName: sysInfo.OS.Name,
|
||||
OSVersion: sysInfo.OS.Version,
|
||||
CPUCores: runtime.NumCPU(),
|
||||
MemoryTotal: mem.Total,
|
||||
MachineID: sysInfo.UniqueID,
|
||||
StartedAt: r.startedAt,
|
||||
ShutdownAt: r.shutdownAt,
|
||||
ID: r.options.DeploymentID,
|
||||
Architecture: sysInfo.Architecture,
|
||||
BuiltinPostgres: r.options.BuiltinPostgres,
|
||||
Containerized: containerized,
|
||||
Config: r.options.DeploymentConfig,
|
||||
Kubernetes: os.Getenv("KUBERNETES_SERVICE_HOST") != "",
|
||||
InstallSource: installSource,
|
||||
Tunnel: r.options.Tunnel,
|
||||
OSType: sysInfo.OS.Type,
|
||||
OSFamily: sysInfo.OS.Family,
|
||||
OSPlatform: sysInfo.OS.Platform,
|
||||
OSName: sysInfo.OS.Name,
|
||||
OSVersion: sysInfo.OS.Version,
|
||||
CPUCores: runtime.NumCPU(),
|
||||
MemoryTotal: mem.Total,
|
||||
MachineID: sysInfo.UniqueID,
|
||||
StartedAt: r.startedAt,
|
||||
ShutdownAt: r.shutdownAt,
|
||||
})
|
||||
if err != nil {
|
||||
return xerrors.Errorf("marshal deployment: %w", err)
|
||||
@@ -481,10 +472,6 @@ func (r *remoteReporter) createSnapshot() (*Snapshot, error) {
|
||||
}
|
||||
return nil
|
||||
})
|
||||
eg.Go(func() error {
|
||||
snapshot.Experiments = ConvertExperiments(r.options.Experiments)
|
||||
return nil
|
||||
})
|
||||
|
||||
err := eg.Wait()
|
||||
if err != nil {
|
||||
@@ -745,16 +732,6 @@ func ConvertExternalProvisioner(id uuid.UUID, tags map[string]string, provisione
|
||||
}
|
||||
}
|
||||
|
||||
func ConvertExperiments(experiments []string) []Experiment {
|
||||
var out []Experiment
|
||||
|
||||
for _, exp := range experiments {
|
||||
out = append(out, Experiment{Name: exp})
|
||||
}
|
||||
|
||||
return out
|
||||
}
|
||||
|
||||
// Snapshot represents a point-in-time anonymized database dump.
|
||||
// Data is aggregated by latest on the server-side, so partial data
|
||||
// can be sent without issue.
|
||||
@@ -777,40 +754,28 @@ type Snapshot struct {
|
||||
WorkspaceResourceMetadata []WorkspaceResourceMetadata `json:"workspace_resource_metadata"`
|
||||
WorkspaceResources []WorkspaceResource `json:"workspace_resources"`
|
||||
Workspaces []Workspace `json:"workspaces"`
|
||||
Experiments []Experiment `json:"experiments"`
|
||||
}
|
||||
|
||||
// Deployment contains information about the host running Coder.
|
||||
type Deployment struct {
|
||||
ID string `json:"id"`
|
||||
Architecture string `json:"architecture"`
|
||||
BuiltinPostgres bool `json:"builtin_postgres"`
|
||||
Containerized bool `json:"containerized"`
|
||||
Kubernetes bool `json:"kubernetes"`
|
||||
Tunnel bool `json:"tunnel"`
|
||||
Wildcard bool `json:"wildcard"`
|
||||
DERPServerRelayURL string `json:"derp_server_relay_url"`
|
||||
GitAuth []GitAuth `json:"git_auth"`
|
||||
GitHubOAuth bool `json:"github_oauth"`
|
||||
OIDCAuth bool `json:"oidc_auth"`
|
||||
OIDCIssuerURL string `json:"oidc_issuer_url"`
|
||||
Prometheus bool `json:"prometheus"`
|
||||
InstallSource string `json:"install_source"`
|
||||
STUN bool `json:"stun"`
|
||||
OSType string `json:"os_type"`
|
||||
OSFamily string `json:"os_family"`
|
||||
OSPlatform string `json:"os_platform"`
|
||||
OSName string `json:"os_name"`
|
||||
OSVersion string `json:"os_version"`
|
||||
CPUCores int `json:"cpu_cores"`
|
||||
MemoryTotal uint64 `json:"memory_total"`
|
||||
MachineID string `json:"machine_id"`
|
||||
StartedAt time.Time `json:"started_at"`
|
||||
ShutdownAt *time.Time `json:"shutdown_at"`
|
||||
}
|
||||
|
||||
type GitAuth struct {
|
||||
Type string `json:"type"`
|
||||
ID string `json:"id"`
|
||||
Architecture string `json:"architecture"`
|
||||
BuiltinPostgres bool `json:"builtin_postgres"`
|
||||
Containerized bool `json:"containerized"`
|
||||
Kubernetes bool `json:"kubernetes"`
|
||||
Config *codersdk.DeploymentValues `json:"config"`
|
||||
Tunnel bool `json:"tunnel"`
|
||||
InstallSource string `json:"install_source"`
|
||||
OSType string `json:"os_type"`
|
||||
OSFamily string `json:"os_family"`
|
||||
OSPlatform string `json:"os_platform"`
|
||||
OSName string `json:"os_name"`
|
||||
OSVersion string `json:"os_version"`
|
||||
CPUCores int `json:"cpu_cores"`
|
||||
MemoryTotal uint64 `json:"memory_total"`
|
||||
MachineID string `json:"machine_id"`
|
||||
StartedAt time.Time `json:"started_at"`
|
||||
ShutdownAt *time.Time `json:"shutdown_at"`
|
||||
}
|
||||
|
||||
type APIKey struct {
|
||||
@@ -985,11 +950,8 @@ type ExternalProvisioner struct {
|
||||
ShutdownAt *time.Time `json:"shutdown_at"`
|
||||
}
|
||||
|
||||
type Experiment struct {
|
||||
Name string `json:"name"`
|
||||
}
|
||||
|
||||
type noopReporter struct{}
|
||||
|
||||
func (*noopReporter) Report(_ *Snapshot) {}
|
||||
func (*noopReporter) Enabled() bool { return false }
|
||||
func (*noopReporter) Close() {}
|
||||
|
||||
@@ -114,17 +114,6 @@ func TestTelemetry(t *testing.T) {
|
||||
require.Len(t, snapshot.Users, 1)
|
||||
require.Equal(t, snapshot.Users[0].EmailHashed, "bb44bf07cf9a2db0554bba63a03d822c927deae77df101874496df5a6a3e896d@coder.com")
|
||||
})
|
||||
t.Run("Experiments", func(t *testing.T) {
|
||||
t.Parallel()
|
||||
|
||||
const expName = "my-experiment"
|
||||
exps := []string{expName}
|
||||
_, snapshot := collectSnapshot(t, dbmem.New(), func(opts telemetry.Options) telemetry.Options {
|
||||
opts.Experiments = exps
|
||||
return opts
|
||||
})
|
||||
require.Equal(t, []telemetry.Experiment{{Name: expName}}, snapshot.Experiments)
|
||||
})
|
||||
}
|
||||
|
||||
// nolint:paralleltest
|
||||
|
||||
@@ -20,9 +20,11 @@ import (
|
||||
"cdr.dev/slog/sloggers/slogtest"
|
||||
"github.com/coder/coder/v2/coderd/audit"
|
||||
"github.com/coder/coder/v2/coderd/coderdtest"
|
||||
"github.com/coder/coder/v2/coderd/coderdtest/oidctest"
|
||||
"github.com/coder/coder/v2/coderd/database"
|
||||
"github.com/coder/coder/v2/coderd/database/dbauthz"
|
||||
"github.com/coder/coder/v2/coderd/database/dbtime"
|
||||
"github.com/coder/coder/v2/coderd/externalauth"
|
||||
"github.com/coder/coder/v2/coderd/rbac"
|
||||
"github.com/coder/coder/v2/codersdk"
|
||||
"github.com/coder/coder/v2/provisioner/echo"
|
||||
@@ -711,6 +713,78 @@ func TestWorkspaceBuildStatus(t *testing.T) {
|
||||
require.EqualValues(t, codersdk.WorkspaceStatusDeleted, workspace.LatestBuild.Status)
|
||||
}
|
||||
|
||||
func TestWorkspaceDeleteSuspendedUser(t *testing.T) {
|
||||
t.Parallel()
|
||||
const providerID = "fake-github"
|
||||
fake := oidctest.NewFakeIDP(t, oidctest.WithServing())
|
||||
|
||||
validateCalls := 0
|
||||
userSuspended := false
|
||||
owner := coderdtest.New(t, &coderdtest.Options{
|
||||
IncludeProvisionerDaemon: true,
|
||||
ExternalAuthConfigs: []*externalauth.Config{
|
||||
fake.ExternalAuthConfig(t, providerID, &oidctest.ExternalAuthConfigOptions{
|
||||
ValidatePayload: func(email string) (interface{}, int, error) {
|
||||
validateCalls++
|
||||
if userSuspended {
|
||||
// Simulate the user being suspended from the IDP too.
|
||||
return "", http.StatusForbidden, fmt.Errorf("user is suspended")
|
||||
}
|
||||
return "OK", 0, nil
|
||||
},
|
||||
}),
|
||||
},
|
||||
})
|
||||
|
||||
first := coderdtest.CreateFirstUser(t, owner)
|
||||
|
||||
// New user that we will suspend when we try to delete the workspace.
|
||||
client, user := coderdtest.CreateAnotherUser(t, owner, first.OrganizationID, rbac.RoleTemplateAdmin())
|
||||
fake.ExternalLogin(t, client)
|
||||
|
||||
version := coderdtest.CreateTemplateVersion(t, client, first.OrganizationID, &echo.Responses{
|
||||
Parse: echo.ParseComplete,
|
||||
ProvisionApply: echo.ApplyComplete,
|
||||
ProvisionPlan: []*proto.Response{{
|
||||
Type: &proto.Response_Plan{
|
||||
Plan: &proto.PlanComplete{
|
||||
Error: "",
|
||||
Resources: nil,
|
||||
Parameters: nil,
|
||||
ExternalAuthProviders: []*proto.ExternalAuthProviderResource{
|
||||
{
|
||||
Id: providerID,
|
||||
Optional: false,
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
}},
|
||||
})
|
||||
|
||||
validateCalls = 0 // Reset
|
||||
coderdtest.AwaitTemplateVersionJobCompleted(t, client, version.ID)
|
||||
template := coderdtest.CreateTemplate(t, client, first.OrganizationID, version.ID)
|
||||
workspace := coderdtest.CreateWorkspace(t, client, first.OrganizationID, template.ID)
|
||||
coderdtest.AwaitWorkspaceBuildJobCompleted(t, client, workspace.LatestBuild.ID)
|
||||
require.Equal(t, 1, validateCalls) // Ensure the external link is working
|
||||
|
||||
// Suspend the user
|
||||
ctx := testutil.Context(t, testutil.WaitLong)
|
||||
_, err := owner.UpdateUserStatus(ctx, user.ID.String(), codersdk.UserStatusSuspended)
|
||||
require.NoError(t, err, "suspend user")
|
||||
|
||||
// Now delete the workspace build
|
||||
userSuspended = true
|
||||
build, err := owner.CreateWorkspaceBuild(ctx, workspace.ID, codersdk.CreateWorkspaceBuildRequest{
|
||||
Transition: codersdk.WorkspaceTransitionDelete,
|
||||
})
|
||||
require.NoError(t, err)
|
||||
build = coderdtest.AwaitWorkspaceBuildJobCompleted(t, owner, build.ID)
|
||||
require.Equal(t, 2, validateCalls)
|
||||
require.Equal(t, codersdk.WorkspaceStatusDeleted, build.Status)
|
||||
}
|
||||
|
||||
func TestWorkspaceBuildDebugMode(t *testing.T) {
|
||||
t.Parallel()
|
||||
|
||||
|
||||
@@ -389,7 +389,7 @@ type ExternalAuthConfig struct {
|
||||
AppInstallationsURL string `json:"app_installations_url" yaml:"app_installations_url"`
|
||||
NoRefresh bool `json:"no_refresh" yaml:"no_refresh"`
|
||||
Scopes []string `json:"scopes" yaml:"scopes"`
|
||||
ExtraTokenKeys []string `json:"extra_token_keys" yaml:"extra_token_keys"`
|
||||
ExtraTokenKeys []string `json:"-" yaml:"extra_token_keys"`
|
||||
DeviceFlow bool `json:"device_flow" yaml:"device_flow"`
|
||||
DeviceCodeURL string `json:"device_code_url" yaml:"device_code_url"`
|
||||
// Regex allows API requesters to match an auth config by
|
||||
@@ -2152,11 +2152,12 @@ type BuildInfoResponse struct {
|
||||
ExternalURL string `json:"external_url"`
|
||||
// Version returns the semantic version of the build.
|
||||
Version string `json:"version"`
|
||||
|
||||
// DashboardURL is the URL to hit the deployment's dashboard.
|
||||
// For external workspace proxies, this is the coderd they are connected
|
||||
// to.
|
||||
DashboardURL string `json:"dashboard_url"`
|
||||
// Telemetry is a boolean that indicates whether telemetry is enabled.
|
||||
Telemetry bool `json:"telemetry"`
|
||||
|
||||
WorkspaceProxy bool `json:"workspace_proxy"`
|
||||
|
||||
|
||||
Generated
+1
-1
@@ -57,6 +57,7 @@ curl -X GET http://coder-server:8080/api/v2/buildinfo \
|
||||
"dashboard_url": "string",
|
||||
"deployment_id": "string",
|
||||
"external_url": "string",
|
||||
"telemetry": true,
|
||||
"upgrade_message": "string",
|
||||
"version": "string",
|
||||
"workspace_proxy": true
|
||||
@@ -227,7 +228,6 @@ curl -X GET http://coder-server:8080/api/v2/deployment/config \
|
||||
"device_flow": true,
|
||||
"display_icon": "string",
|
||||
"display_name": "string",
|
||||
"extra_token_keys": ["string"],
|
||||
"id": "string",
|
||||
"no_refresh": true,
|
||||
"regex": "string",
|
||||
|
||||
Generated
+2
-5
@@ -1180,6 +1180,7 @@ AuthorizationObject can represent a "set" of objects, such as: all workspaces in
|
||||
"dashboard_url": "string",
|
||||
"deployment_id": "string",
|
||||
"external_url": "string",
|
||||
"telemetry": true,
|
||||
"upgrade_message": "string",
|
||||
"version": "string",
|
||||
"workspace_proxy": true
|
||||
@@ -1194,6 +1195,7 @@ AuthorizationObject can represent a "set" of objects, such as: all workspaces in
|
||||
| `dashboard_url` | string | false | | Dashboard URL is the URL to hit the deployment's dashboard. For external workspace proxies, this is the coderd they are connected to. |
|
||||
| `deployment_id` | string | false | | Deployment ID is the unique identifier for this deployment. |
|
||||
| `external_url` | string | false | | External URL references the current Coder version. For production builds, this will link directly to a release. For development builds, this will link to a commit. |
|
||||
| `telemetry` | boolean | false | | Telemetry is a boolean that indicates whether telemetry is enabled. |
|
||||
| `upgrade_message` | string | false | | Upgrade message is the message displayed to users when an outdated client is detected. |
|
||||
| `version` | string | false | | Version returns the semantic version of the build. |
|
||||
| `workspace_proxy` | boolean | false | | |
|
||||
@@ -1955,7 +1957,6 @@ CreateWorkspaceRequest provides options for creating a new workspace. Only one o
|
||||
"device_flow": true,
|
||||
"display_icon": "string",
|
||||
"display_name": "string",
|
||||
"extra_token_keys": ["string"],
|
||||
"id": "string",
|
||||
"no_refresh": true,
|
||||
"regex": "string",
|
||||
@@ -2328,7 +2329,6 @@ CreateWorkspaceRequest provides options for creating a new workspace. Only one o
|
||||
"device_flow": true,
|
||||
"display_icon": "string",
|
||||
"display_name": "string",
|
||||
"extra_token_keys": ["string"],
|
||||
"id": "string",
|
||||
"no_refresh": true,
|
||||
"regex": "string",
|
||||
@@ -2745,7 +2745,6 @@ CreateWorkspaceRequest provides options for creating a new workspace. Only one o
|
||||
"device_flow": true,
|
||||
"display_icon": "string",
|
||||
"display_name": "string",
|
||||
"extra_token_keys": ["string"],
|
||||
"id": "string",
|
||||
"no_refresh": true,
|
||||
"regex": "string",
|
||||
@@ -2768,7 +2767,6 @@ CreateWorkspaceRequest provides options for creating a new workspace. Only one o
|
||||
| `device_flow` | boolean | false | | |
|
||||
| `display_icon` | string | false | | Display icon is a URL to an icon to display in the UI. |
|
||||
| `display_name` | string | false | | Display name is shown in the UI to identify the auth config. |
|
||||
| `extra_token_keys` | array of string | false | | |
|
||||
| `id` | string | false | | ID is a unique identifier for the auth config. It defaults to `type` when not provided. |
|
||||
| `no_refresh` | boolean | false | | |
|
||||
| `regex` | string | false | | Regex allows API requesters to match an auth config by a string (e.g. coder.com) instead of by it's type. |
|
||||
@@ -8693,7 +8691,6 @@ _None_
|
||||
"device_flow": true,
|
||||
"display_icon": "string",
|
||||
"display_name": "string",
|
||||
"extra_token_keys": ["string"],
|
||||
"id": "string",
|
||||
"no_refresh": true,
|
||||
"regex": "string",
|
||||
|
||||
@@ -54,7 +54,7 @@ RUN mkdir -p /opt/terraform
|
||||
# The below step is optional if you wish to keep the existing version.
|
||||
# See https://github.com/coder/coder/blob/main/provisioner/terraform/install.go#L23-L24
|
||||
# for supported Terraform versions.
|
||||
ARG TERRAFORM_VERSION=1.5.6
|
||||
ARG TERRAFORM_VERSION=1.7.5
|
||||
RUN apk update && \
|
||||
apk del terraform && \
|
||||
curl -LOs https://releases.hashicorp.com/terraform/${TERRAFORM_VERSION}/terraform_${TERRAFORM_VERSION}_linux_amd64.zip \
|
||||
|
||||
+2
-2
@@ -169,9 +169,9 @@ RUN apt-get update --quiet && apt-get install --yes \
|
||||
# Configure FIPS-compliant policies
|
||||
update-crypto-policies --set FIPS
|
||||
|
||||
# NOTE: In scripts/Dockerfile.base we specifically install Terraform version 1.6.6.
|
||||
# NOTE: In scripts/Dockerfile.base we specifically install Terraform version 1.7.5.
|
||||
# Installing the same version here to match.
|
||||
RUN wget -O /tmp/terraform.zip "https://releases.hashicorp.com/terraform/1.6.6/terraform_1.6.6_linux_amd64.zip" && \
|
||||
RUN wget -O /tmp/terraform.zip "https://releases.hashicorp.com/terraform/1.7.5/terraform_1.7.5_linux_amd64.zip" && \
|
||||
unzip /tmp/terraform.zip -d /usr/local/bin && \
|
||||
rm -f /tmp/terraform.zip && \
|
||||
chmod +x /usr/local/bin/terraform && \
|
||||
|
||||
@@ -1485,10 +1485,17 @@ func (h *heartbeats) filter(mappings []mapping) []mapping {
|
||||
ok := m.coordinator == h.self
|
||||
if !ok {
|
||||
_, ok = h.coordinators[m.coordinator]
|
||||
if !ok {
|
||||
// If a mapping exists to a coordinator lost to heartbeats,
|
||||
// still add the mapping as LOST. If a coordinator misses
|
||||
// heartbeats but a client is still connected to it, this may be
|
||||
// the only mapping available for it. Newer mappings will take
|
||||
// precedence.
|
||||
m.kind = proto.CoordinateResponse_PeerUpdate_LOST
|
||||
}
|
||||
}
|
||||
if ok {
|
||||
out = append(out, m)
|
||||
}
|
||||
|
||||
out = append(out, m)
|
||||
}
|
||||
return out
|
||||
}
|
||||
|
||||
@@ -11,6 +11,7 @@ import (
|
||||
"time"
|
||||
|
||||
"github.com/google/uuid"
|
||||
"github.com/stretchr/testify/assert"
|
||||
"github.com/stretchr/testify/require"
|
||||
"go.uber.org/mock/gomock"
|
||||
"golang.org/x/xerrors"
|
||||
@@ -33,9 +34,9 @@ import (
|
||||
// make update-golden-files
|
||||
var UpdateGoldenFiles = flag.Bool("update", false, "update .golden files")
|
||||
|
||||
// TestHeartbeat_Cleanup is internal so that we can overwrite the cleanup period and not wait an hour for the timed
|
||||
// TestHeartbeats_Cleanup is internal so that we can overwrite the cleanup period and not wait an hour for the timed
|
||||
// cleanup.
|
||||
func TestHeartbeat_Cleanup(t *testing.T) {
|
||||
func TestHeartbeats_Cleanup(t *testing.T) {
|
||||
t.Parallel()
|
||||
|
||||
ctrl := gomock.NewController(t)
|
||||
@@ -78,6 +79,41 @@ func TestHeartbeat_Cleanup(t *testing.T) {
|
||||
close(waitForCleanup)
|
||||
}
|
||||
|
||||
func TestHeartbeats_LostCoordinator_MarkLost(t *testing.T) {
|
||||
t.Parallel()
|
||||
|
||||
ctrl := gomock.NewController(t)
|
||||
mStore := dbmock.NewMockStore(ctrl)
|
||||
|
||||
ctx, cancel := context.WithTimeout(context.Background(), testutil.WaitShort)
|
||||
defer cancel()
|
||||
logger := slogtest.Make(t, nil).Leveled(slog.LevelDebug)
|
||||
|
||||
uut := &heartbeats{
|
||||
ctx: ctx,
|
||||
logger: logger,
|
||||
store: mStore,
|
||||
cleanupPeriod: time.Millisecond,
|
||||
coordinators: map[uuid.UUID]time.Time{
|
||||
uuid.New(): time.Now(),
|
||||
},
|
||||
}
|
||||
|
||||
mpngs := []mapping{{
|
||||
peer: uuid.New(),
|
||||
coordinator: uuid.New(),
|
||||
updatedAt: time.Now(),
|
||||
node: &proto.Node{},
|
||||
kind: proto.CoordinateResponse_PeerUpdate_NODE,
|
||||
}}
|
||||
|
||||
// Filter should still return the mapping without a coordinator, but marked
|
||||
// as LOST.
|
||||
got := uut.filter(mpngs)
|
||||
require.Len(t, got, 1)
|
||||
assert.Equal(t, proto.CoordinateResponse_PeerUpdate_LOST, got[0].kind)
|
||||
}
|
||||
|
||||
// TestLostPeerCleanupQueries tests that our SQL queries to clean up lost peers do what we expect,
|
||||
// that is, clean up peers and associated tunnels that have been lost for over 24 hours.
|
||||
func TestLostPeerCleanupQueries(t *testing.T) {
|
||||
|
||||
@@ -415,6 +415,52 @@ func TestPGCoordinatorSingle_MissedHeartbeats(t *testing.T) {
|
||||
assertEventuallyLost(ctx, t, store, client.id)
|
||||
}
|
||||
|
||||
func TestPGCoordinatorSingle_MissedHeartbeats_NoDrop(t *testing.T) {
|
||||
t.Parallel()
|
||||
if !dbtestutil.WillUsePostgres() {
|
||||
t.Skip("test only with postgres")
|
||||
}
|
||||
store, ps := dbtestutil.NewDB(t)
|
||||
ctx, cancel := context.WithTimeout(context.Background(), testutil.WaitSuperLong)
|
||||
defer cancel()
|
||||
logger := slogtest.Make(t, nil).Leveled(slog.LevelDebug)
|
||||
|
||||
coordinator, err := tailnet.NewPGCoord(ctx, logger, ps, store)
|
||||
require.NoError(t, err)
|
||||
defer coordinator.Close()
|
||||
|
||||
agentID := uuid.New()
|
||||
|
||||
client := agpltest.NewPeer(ctx, t, coordinator, "client")
|
||||
defer client.Close(ctx)
|
||||
client.AddTunnel(agentID)
|
||||
|
||||
client.UpdateDERP(11)
|
||||
|
||||
// simulate a second coordinator via DB calls only --- our goal is to test
|
||||
// broken heart-beating, so we can't use a real coordinator
|
||||
fCoord2 := &fakeCoordinator{
|
||||
ctx: ctx,
|
||||
t: t,
|
||||
store: store,
|
||||
id: uuid.New(),
|
||||
}
|
||||
// simulate a single heartbeat, the coordinator is healthy
|
||||
fCoord2.heartbeat()
|
||||
|
||||
fCoord2.agentNode(agentID, &agpl.Node{PreferredDERP: 12})
|
||||
// since it's healthy the client should get the new node.
|
||||
client.AssertEventuallyHasDERP(agentID, 12)
|
||||
|
||||
// the heartbeat should then timeout and we'll get sent a LOST update, NOT a
|
||||
// disconnect.
|
||||
client.AssertEventuallyLost(agentID)
|
||||
|
||||
client.Close(ctx)
|
||||
|
||||
assertEventuallyLost(ctx, t, store, client.ID)
|
||||
}
|
||||
|
||||
func TestPGCoordinatorSingle_SendsHeartbeats(t *testing.T) {
|
||||
t.Parallel()
|
||||
if !dbtestutil.WillUsePostgres() {
|
||||
@@ -857,6 +903,16 @@ func newTestAgent(t *testing.T, coord agpl.CoordinatorV1, name string, id ...uui
|
||||
return a
|
||||
}
|
||||
|
||||
func newTestClient(t *testing.T, coord agpl.CoordinatorV1, agentID uuid.UUID, id ...uuid.UUID) *testConn {
|
||||
c := newTestConn(id)
|
||||
go func() {
|
||||
err := coord.ServeClient(c.serverWS, c.id, agentID)
|
||||
assert.NoError(t, err)
|
||||
close(c.closeChan)
|
||||
}()
|
||||
return c
|
||||
}
|
||||
|
||||
func (c *testConn) close() error {
|
||||
return c.ws.Close()
|
||||
}
|
||||
@@ -902,16 +958,6 @@ func (c *testConn) waitForClose(ctx context.Context, t *testing.T) {
|
||||
}
|
||||
}
|
||||
|
||||
func newTestClient(t *testing.T, coord agpl.CoordinatorV1, agentID uuid.UUID, id ...uuid.UUID) *testConn {
|
||||
c := newTestConn(id)
|
||||
go func() {
|
||||
err := coord.ServeClient(c.serverWS, c.id, agentID)
|
||||
assert.NoError(t, err)
|
||||
close(c.closeChan)
|
||||
}()
|
||||
return c
|
||||
}
|
||||
|
||||
func assertEventuallyHasDERPs(ctx context.Context, t *testing.T, c *testConn, expected ...int) {
|
||||
t.Helper()
|
||||
for {
|
||||
|
||||
@@ -39,6 +39,22 @@ func New(db database.Store, url string, keys map[string]ed25519.PublicKey) func(
|
||||
return xerrors.Errorf("perform license request: %w", err)
|
||||
}
|
||||
defer res.Body.Close()
|
||||
if res.StatusCode > 300 {
|
||||
body, err := io.ReadAll(res.Body)
|
||||
if err != nil {
|
||||
return xerrors.Errorf("read license response: %w", err)
|
||||
}
|
||||
// This is the format of the error response from
|
||||
// the license server.
|
||||
var msg struct {
|
||||
Error string `json:"error"`
|
||||
}
|
||||
err = json.Unmarshal(body, &msg)
|
||||
if err != nil {
|
||||
return xerrors.Errorf("unmarshal error: %w", err)
|
||||
}
|
||||
return xerrors.New(msg.Error)
|
||||
}
|
||||
raw, err := io.ReadAll(res.Body)
|
||||
if err != nil {
|
||||
return xerrors.Errorf("read license: %w", err)
|
||||
|
||||
@@ -216,7 +216,7 @@ func TestDialCoordinator(t *testing.T) {
|
||||
Node: &proto.Node{
|
||||
Id: 55,
|
||||
AsOf: timestamppb.New(time.Unix(1689653252, 0)),
|
||||
Key: peerNodeKey[:],
|
||||
Key: peerNodeKey,
|
||||
Disco: string(peerDiscoKey),
|
||||
PreferredDerp: 0,
|
||||
DerpLatency: map[string]float64{
|
||||
|
||||
+1
-1
@@ -250,7 +250,7 @@ EOF
|
||||
main() {
|
||||
MAINLINE=1
|
||||
STABLE=0
|
||||
TERRAFORM_VERSION="1.6.6"
|
||||
TERRAFORM_VERSION="1.7.5"
|
||||
|
||||
if [ "${TRACE-}" ]; then
|
||||
set -x
|
||||
|
||||
@@ -24,6 +24,8 @@ import (
|
||||
"github.com/coder/coder/v2/provisionersdk/proto"
|
||||
)
|
||||
|
||||
var version170 = version.Must(version.NewVersion("1.7.0"))
|
||||
|
||||
type executor struct {
|
||||
logger slog.Logger
|
||||
server *server
|
||||
@@ -346,8 +348,16 @@ func (e *executor) graph(ctx, killCtx context.Context) (string, error) {
|
||||
return "", ctx.Err()
|
||||
}
|
||||
|
||||
ver, err := e.version(ctx)
|
||||
if err != nil {
|
||||
return "", err
|
||||
}
|
||||
args := []string{"graph"}
|
||||
if ver.GreaterThanOrEqual(version170) {
|
||||
args = append(args, "-type=plan")
|
||||
}
|
||||
var out strings.Builder
|
||||
cmd := exec.CommandContext(killCtx, e.binaryPath, "graph") // #nosec
|
||||
cmd := exec.CommandContext(killCtx, e.binaryPath, args...) // #nosec
|
||||
cmd.Stdout = &out
|
||||
cmd.Dir = e.workdir
|
||||
cmd.Env = e.basicEnv()
|
||||
@@ -356,7 +366,7 @@ func (e *executor) graph(ctx, killCtx context.Context) (string, error) {
|
||||
slog.F("binary_path", e.binaryPath),
|
||||
slog.F("args", "graph"),
|
||||
)
|
||||
err := cmd.Start()
|
||||
err = cmd.Start()
|
||||
if err != nil {
|
||||
return "", err
|
||||
}
|
||||
|
||||
@@ -20,10 +20,10 @@ var (
|
||||
// when Terraform is not available on the system.
|
||||
// NOTE: Keep this in sync with the version in scripts/Dockerfile.base.
|
||||
// NOTE: Keep this in sync with the version in install.sh.
|
||||
TerraformVersion = version.Must(version.NewVersion("1.6.6"))
|
||||
TerraformVersion = version.Must(version.NewVersion("1.7.5"))
|
||||
|
||||
minTerraformVersion = version.Must(version.NewVersion("1.1.0"))
|
||||
maxTerraformVersion = version.Must(version.NewVersion("1.6.9")) // use .9 to automatically allow patch releases
|
||||
maxTerraformVersion = version.Must(version.NewVersion("1.7.9")) // use .9 to automatically allow patch releases
|
||||
|
||||
terraformMinorVersionMismatch = xerrors.New("Terraform binary minor version mismatch.")
|
||||
)
|
||||
|
||||
@@ -2,7 +2,7 @@ terraform {
|
||||
required_providers {
|
||||
coder = {
|
||||
source = "coder/coder"
|
||||
version = "0.6.1"
|
||||
version = "0.22.0"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
-1
@@ -21,4 +21,3 @@ digraph {
|
||||
"[root] root" -> "[root] provider[\"registry.terraform.io/hashicorp/null\"] (close)"
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
+28
-4
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"format_version": "1.2",
|
||||
"terraform_version": "1.5.5",
|
||||
"terraform_version": "1.7.5",
|
||||
"planned_values": {
|
||||
"root_module": {
|
||||
"resources": [
|
||||
@@ -17,11 +17,22 @@
|
||||
"connection_timeout": 120,
|
||||
"dir": null,
|
||||
"env": null,
|
||||
"login_before_ready": true,
|
||||
"metadata": [],
|
||||
"motd_file": null,
|
||||
"order": null,
|
||||
"os": "linux",
|
||||
"shutdown_script": null,
|
||||
"shutdown_script_timeout": 300,
|
||||
"startup_script": null,
|
||||
"startup_script_behavior": null,
|
||||
"startup_script_timeout": 300,
|
||||
"troubleshooting_url": null
|
||||
},
|
||||
"sensitive_values": {}
|
||||
"sensitive_values": {
|
||||
"display_apps": [],
|
||||
"metadata": []
|
||||
}
|
||||
}
|
||||
],
|
||||
"child_modules": [
|
||||
@@ -78,17 +89,29 @@
|
||||
"connection_timeout": 120,
|
||||
"dir": null,
|
||||
"env": null,
|
||||
"login_before_ready": true,
|
||||
"metadata": [],
|
||||
"motd_file": null,
|
||||
"order": null,
|
||||
"os": "linux",
|
||||
"shutdown_script": null,
|
||||
"shutdown_script_timeout": 300,
|
||||
"startup_script": null,
|
||||
"startup_script_behavior": null,
|
||||
"startup_script_timeout": 300,
|
||||
"troubleshooting_url": null
|
||||
},
|
||||
"after_unknown": {
|
||||
"display_apps": true,
|
||||
"id": true,
|
||||
"init_script": true,
|
||||
"metadata": [],
|
||||
"token": true
|
||||
},
|
||||
"before_sensitive": false,
|
||||
"after_sensitive": {
|
||||
"display_apps": [],
|
||||
"metadata": [],
|
||||
"token": true
|
||||
}
|
||||
}
|
||||
@@ -153,7 +176,7 @@
|
||||
"coder": {
|
||||
"name": "coder",
|
||||
"full_name": "registry.terraform.io/coder/coder",
|
||||
"version_constraint": "0.6.1"
|
||||
"version_constraint": "0.22.0"
|
||||
},
|
||||
"module.module:null": {
|
||||
"name": "null",
|
||||
@@ -236,5 +259,6 @@
|
||||
]
|
||||
}
|
||||
],
|
||||
"timestamp": "2023-08-30T19:24:59Z"
|
||||
"timestamp": "2024-05-22T17:02:40Z",
|
||||
"errored": false
|
||||
}
|
||||
|
||||
-1
@@ -21,4 +21,3 @@ digraph {
|
||||
"[root] root" -> "[root] provider[\"registry.terraform.io/hashicorp/null\"] (close)"
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
+26
-5
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"format_version": "1.0",
|
||||
"terraform_version": "1.5.5",
|
||||
"terraform_version": "1.7.5",
|
||||
"values": {
|
||||
"root_module": {
|
||||
"resources": [
|
||||
@@ -16,15 +16,36 @@
|
||||
"auth": "token",
|
||||
"connection_timeout": 120,
|
||||
"dir": null,
|
||||
"display_apps": [
|
||||
{
|
||||
"port_forwarding_helper": true,
|
||||
"ssh_helper": true,
|
||||
"vscode": true,
|
||||
"vscode_insiders": false,
|
||||
"web_terminal": true
|
||||
}
|
||||
],
|
||||
"env": null,
|
||||
"id": "c6fd4a45-dc64-4830-8ff1-9a6c8074fca8",
|
||||
"id": "f26b1d53-799e-4fbb-9fd3-71e60b37eacd",
|
||||
"init_script": "",
|
||||
"login_before_ready": true,
|
||||
"metadata": [],
|
||||
"motd_file": null,
|
||||
"order": null,
|
||||
"os": "linux",
|
||||
"shutdown_script": null,
|
||||
"shutdown_script_timeout": 300,
|
||||
"startup_script": null,
|
||||
"token": "2559767b-afc6-4293-92cf-d57d98bda13a",
|
||||
"startup_script_behavior": null,
|
||||
"startup_script_timeout": 300,
|
||||
"token": "ce663074-ebea-44cb-b6d1-321f590f7982",
|
||||
"troubleshooting_url": null
|
||||
},
|
||||
"sensitive_values": {
|
||||
"display_apps": [
|
||||
{}
|
||||
],
|
||||
"metadata": [],
|
||||
"token": true
|
||||
}
|
||||
}
|
||||
@@ -48,7 +69,7 @@
|
||||
"outputs": {
|
||||
"script": ""
|
||||
},
|
||||
"random": "5659889568915200015"
|
||||
"random": "8031375470547649400"
|
||||
},
|
||||
"sensitive_values": {
|
||||
"inputs": {},
|
||||
@@ -63,7 +84,7 @@
|
||||
"provider_name": "registry.terraform.io/hashicorp/null",
|
||||
"schema_version": 0,
|
||||
"values": {
|
||||
"id": "4052095409343470524",
|
||||
"id": "3370916843136140681",
|
||||
"triggers": null
|
||||
},
|
||||
"sensitive_values": {},
|
||||
|
||||
@@ -2,7 +2,7 @@ terraform {
|
||||
required_providers {
|
||||
coder = {
|
||||
source = "coder/coder"
|
||||
version = "0.6.1"
|
||||
version = "0.22.0"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
-1
@@ -17,4 +17,3 @@ digraph {
|
||||
"[root] root" -> "[root] provider[\"registry.terraform.io/hashicorp/null\"] (close)"
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
+28
-4
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"format_version": "1.2",
|
||||
"terraform_version": "1.5.5",
|
||||
"terraform_version": "1.7.5",
|
||||
"planned_values": {
|
||||
"root_module": {
|
||||
"resources": [
|
||||
@@ -17,11 +17,22 @@
|
||||
"connection_timeout": 120,
|
||||
"dir": null,
|
||||
"env": null,
|
||||
"login_before_ready": true,
|
||||
"metadata": [],
|
||||
"motd_file": null,
|
||||
"order": null,
|
||||
"os": "linux",
|
||||
"shutdown_script": null,
|
||||
"shutdown_script_timeout": 300,
|
||||
"startup_script": null,
|
||||
"startup_script_behavior": null,
|
||||
"startup_script_timeout": 300,
|
||||
"troubleshooting_url": null
|
||||
},
|
||||
"sensitive_values": {}
|
||||
"sensitive_values": {
|
||||
"display_apps": [],
|
||||
"metadata": []
|
||||
}
|
||||
},
|
||||
{
|
||||
"address": "null_resource.a",
|
||||
@@ -68,17 +79,29 @@
|
||||
"connection_timeout": 120,
|
||||
"dir": null,
|
||||
"env": null,
|
||||
"login_before_ready": true,
|
||||
"metadata": [],
|
||||
"motd_file": null,
|
||||
"order": null,
|
||||
"os": "linux",
|
||||
"shutdown_script": null,
|
||||
"shutdown_script_timeout": 300,
|
||||
"startup_script": null,
|
||||
"startup_script_behavior": null,
|
||||
"startup_script_timeout": 300,
|
||||
"troubleshooting_url": null
|
||||
},
|
||||
"after_unknown": {
|
||||
"display_apps": true,
|
||||
"id": true,
|
||||
"init_script": true,
|
||||
"metadata": [],
|
||||
"token": true
|
||||
},
|
||||
"before_sensitive": false,
|
||||
"after_sensitive": {
|
||||
"display_apps": [],
|
||||
"metadata": [],
|
||||
"token": true
|
||||
}
|
||||
}
|
||||
@@ -131,7 +154,7 @@
|
||||
"coder": {
|
||||
"name": "coder",
|
||||
"full_name": "registry.terraform.io/coder/coder",
|
||||
"version_constraint": "0.6.1"
|
||||
"version_constraint": "0.22.0"
|
||||
},
|
||||
"null": {
|
||||
"name": "null",
|
||||
@@ -181,5 +204,6 @@
|
||||
]
|
||||
}
|
||||
},
|
||||
"timestamp": "2023-08-30T19:25:02Z"
|
||||
"timestamp": "2024-05-22T17:02:43Z",
|
||||
"errored": false
|
||||
}
|
||||
|
||||
-1
@@ -17,4 +17,3 @@ digraph {
|
||||
"[root] root" -> "[root] provider[\"registry.terraform.io/hashicorp/null\"] (close)"
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Generated
Vendored
+26
-5
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"format_version": "1.0",
|
||||
"terraform_version": "1.5.5",
|
||||
"terraform_version": "1.7.5",
|
||||
"values": {
|
||||
"root_module": {
|
||||
"resources": [
|
||||
@@ -16,15 +16,36 @@
|
||||
"auth": "token",
|
||||
"connection_timeout": 120,
|
||||
"dir": null,
|
||||
"display_apps": [
|
||||
{
|
||||
"port_forwarding_helper": true,
|
||||
"ssh_helper": true,
|
||||
"vscode": true,
|
||||
"vscode_insiders": false,
|
||||
"web_terminal": true
|
||||
}
|
||||
],
|
||||
"env": null,
|
||||
"id": "9fb263ae-2d96-414f-abfa-7874e73695d2",
|
||||
"id": "9d869fc3-c185-4278-a5d2-873f809a4449",
|
||||
"init_script": "",
|
||||
"login_before_ready": true,
|
||||
"metadata": [],
|
||||
"motd_file": null,
|
||||
"order": null,
|
||||
"os": "linux",
|
||||
"shutdown_script": null,
|
||||
"shutdown_script_timeout": 300,
|
||||
"startup_script": null,
|
||||
"token": "4f391c60-20f9-4d57-906e-92e2f3e1e3c1",
|
||||
"startup_script_behavior": null,
|
||||
"startup_script_timeout": 300,
|
||||
"token": "418bb1d6-49d8-4340-ac84-ed6991457ff9",
|
||||
"troubleshooting_url": null
|
||||
},
|
||||
"sensitive_values": {
|
||||
"display_apps": [
|
||||
{}
|
||||
],
|
||||
"metadata": [],
|
||||
"token": true
|
||||
}
|
||||
},
|
||||
@@ -36,7 +57,7 @@
|
||||
"provider_name": "registry.terraform.io/hashicorp/null",
|
||||
"schema_version": 0,
|
||||
"values": {
|
||||
"id": "2616597461049838347",
|
||||
"id": "3681188688307687011",
|
||||
"triggers": null
|
||||
},
|
||||
"sensitive_values": {},
|
||||
@@ -53,7 +74,7 @@
|
||||
"provider_name": "registry.terraform.io/hashicorp/null",
|
||||
"schema_version": 0,
|
||||
"values": {
|
||||
"id": "6759504907417146954",
|
||||
"id": "6055360096088266226",
|
||||
"triggers": null
|
||||
},
|
||||
"sensitive_values": {},
|
||||
|
||||
+1
-1
@@ -2,7 +2,7 @@ terraform {
|
||||
required_providers {
|
||||
coder = {
|
||||
source = "coder/coder"
|
||||
version = "0.6.1"
|
||||
version = "0.22.0"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Generated
Vendored
-1
@@ -19,4 +19,3 @@ digraph {
|
||||
"[root] root" -> "[root] provider[\"registry.terraform.io/hashicorp/null\"] (close)"
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Generated
Vendored
+28
-4
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"format_version": "1.2",
|
||||
"terraform_version": "1.5.5",
|
||||
"terraform_version": "1.7.5",
|
||||
"planned_values": {
|
||||
"root_module": {
|
||||
"resources": [
|
||||
@@ -17,11 +17,22 @@
|
||||
"connection_timeout": 120,
|
||||
"dir": null,
|
||||
"env": null,
|
||||
"login_before_ready": true,
|
||||
"metadata": [],
|
||||
"motd_file": null,
|
||||
"order": null,
|
||||
"os": "linux",
|
||||
"shutdown_script": null,
|
||||
"shutdown_script_timeout": 300,
|
||||
"startup_script": null,
|
||||
"startup_script_behavior": null,
|
||||
"startup_script_timeout": 300,
|
||||
"troubleshooting_url": null
|
||||
},
|
||||
"sensitive_values": {}
|
||||
"sensitive_values": {
|
||||
"display_apps": [],
|
||||
"metadata": []
|
||||
}
|
||||
},
|
||||
{
|
||||
"address": "null_resource.first",
|
||||
@@ -68,17 +79,29 @@
|
||||
"connection_timeout": 120,
|
||||
"dir": null,
|
||||
"env": null,
|
||||
"login_before_ready": true,
|
||||
"metadata": [],
|
||||
"motd_file": null,
|
||||
"order": null,
|
||||
"os": "linux",
|
||||
"shutdown_script": null,
|
||||
"shutdown_script_timeout": 300,
|
||||
"startup_script": null,
|
||||
"startup_script_behavior": null,
|
||||
"startup_script_timeout": 300,
|
||||
"troubleshooting_url": null
|
||||
},
|
||||
"after_unknown": {
|
||||
"display_apps": true,
|
||||
"id": true,
|
||||
"init_script": true,
|
||||
"metadata": [],
|
||||
"token": true
|
||||
},
|
||||
"before_sensitive": false,
|
||||
"after_sensitive": {
|
||||
"display_apps": [],
|
||||
"metadata": [],
|
||||
"token": true
|
||||
}
|
||||
}
|
||||
@@ -131,7 +154,7 @@
|
||||
"coder": {
|
||||
"name": "coder",
|
||||
"full_name": "registry.terraform.io/coder/coder",
|
||||
"version_constraint": "0.6.1"
|
||||
"version_constraint": "0.22.0"
|
||||
},
|
||||
"null": {
|
||||
"name": "null",
|
||||
@@ -181,5 +204,6 @@
|
||||
]
|
||||
}
|
||||
},
|
||||
"timestamp": "2023-08-30T19:25:04Z"
|
||||
"timestamp": "2024-05-22T17:02:45Z",
|
||||
"errored": false
|
||||
}
|
||||
|
||||
Generated
Vendored
-1
@@ -19,4 +19,3 @@ digraph {
|
||||
"[root] root" -> "[root] provider[\"registry.terraform.io/hashicorp/null\"] (close)"
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Generated
Vendored
+26
-5
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"format_version": "1.0",
|
||||
"terraform_version": "1.5.5",
|
||||
"terraform_version": "1.7.5",
|
||||
"values": {
|
||||
"root_module": {
|
||||
"resources": [
|
||||
@@ -16,15 +16,36 @@
|
||||
"auth": "token",
|
||||
"connection_timeout": 120,
|
||||
"dir": null,
|
||||
"display_apps": [
|
||||
{
|
||||
"port_forwarding_helper": true,
|
||||
"ssh_helper": true,
|
||||
"vscode": true,
|
||||
"vscode_insiders": false,
|
||||
"web_terminal": true
|
||||
}
|
||||
],
|
||||
"env": null,
|
||||
"id": "56d6f6e2-a7f8-4594-9bc3-044a4fd3b021",
|
||||
"id": "d9c497fe-1dc4-4551-b46d-282f775e9509",
|
||||
"init_script": "",
|
||||
"login_before_ready": true,
|
||||
"metadata": [],
|
||||
"motd_file": null,
|
||||
"order": null,
|
||||
"os": "linux",
|
||||
"shutdown_script": null,
|
||||
"shutdown_script_timeout": 300,
|
||||
"startup_script": null,
|
||||
"token": "715216d1-fca1-4652-9032-d5367072706f",
|
||||
"startup_script_behavior": null,
|
||||
"startup_script_timeout": 300,
|
||||
"token": "6fa01f69-de93-4610-b942-b787118146f8",
|
||||
"troubleshooting_url": null
|
||||
},
|
||||
"sensitive_values": {
|
||||
"display_apps": [
|
||||
{}
|
||||
],
|
||||
"metadata": [],
|
||||
"token": true
|
||||
}
|
||||
},
|
||||
@@ -36,7 +57,7 @@
|
||||
"provider_name": "registry.terraform.io/hashicorp/null",
|
||||
"schema_version": 0,
|
||||
"values": {
|
||||
"id": "7470209964325643389",
|
||||
"id": "2012753940926517215",
|
||||
"triggers": null
|
||||
},
|
||||
"sensitive_values": {},
|
||||
@@ -52,7 +73,7 @@
|
||||
"provider_name": "registry.terraform.io/hashicorp/null",
|
||||
"schema_version": 0,
|
||||
"values": {
|
||||
"id": "251158623761758523",
|
||||
"id": "2163283012438694669",
|
||||
"triggers": null
|
||||
},
|
||||
"sensitive_values": {},
|
||||
|
||||
+1
-1
@@ -2,7 +2,7 @@ terraform {
|
||||
required_providers {
|
||||
coder = {
|
||||
source = "coder/coder"
|
||||
version = "0.11.2"
|
||||
version = "0.22.0"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Generated
Vendored
-1
@@ -15,4 +15,3 @@ digraph {
|
||||
"[root] root" -> "[root] provider[\"registry.terraform.io/hashicorp/null\"] (close)"
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Generated
Vendored
+6
-3
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"format_version": "1.2",
|
||||
"terraform_version": "1.5.5",
|
||||
"terraform_version": "1.7.5",
|
||||
"planned_values": {
|
||||
"root_module": {
|
||||
"resources": [
|
||||
@@ -29,6 +29,7 @@
|
||||
"login_before_ready": true,
|
||||
"metadata": [],
|
||||
"motd_file": null,
|
||||
"order": null,
|
||||
"os": "linux",
|
||||
"shutdown_script": null,
|
||||
"shutdown_script_timeout": 300,
|
||||
@@ -89,6 +90,7 @@
|
||||
"login_before_ready": true,
|
||||
"metadata": [],
|
||||
"motd_file": null,
|
||||
"order": null,
|
||||
"os": "linux",
|
||||
"shutdown_script": null,
|
||||
"shutdown_script_timeout": 300,
|
||||
@@ -143,7 +145,7 @@
|
||||
"coder": {
|
||||
"name": "coder",
|
||||
"full_name": "registry.terraform.io/coder/coder",
|
||||
"version_constraint": "0.11.2"
|
||||
"version_constraint": "0.22.0"
|
||||
},
|
||||
"null": {
|
||||
"name": "null",
|
||||
@@ -201,5 +203,6 @@
|
||||
]
|
||||
}
|
||||
},
|
||||
"timestamp": "2023-08-30T19:25:10Z"
|
||||
"timestamp": "2024-05-22T17:02:50Z",
|
||||
"errored": false
|
||||
}
|
||||
|
||||
Generated
Vendored
-1
@@ -15,4 +15,3 @@ digraph {
|
||||
"[root] root" -> "[root] provider[\"registry.terraform.io/hashicorp/null\"] (close)"
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Generated
Vendored
+5
-4
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"format_version": "1.0",
|
||||
"terraform_version": "1.5.5",
|
||||
"terraform_version": "1.7.5",
|
||||
"values": {
|
||||
"root_module": {
|
||||
"resources": [
|
||||
@@ -26,18 +26,19 @@
|
||||
}
|
||||
],
|
||||
"env": null,
|
||||
"id": "ba0faeb0-5a14-4908-946e-360329a8c852",
|
||||
"id": "c55cfcad-5422-46e5-a144-e933660bacd3",
|
||||
"init_script": "",
|
||||
"login_before_ready": true,
|
||||
"metadata": [],
|
||||
"motd_file": null,
|
||||
"order": null,
|
||||
"os": "linux",
|
||||
"shutdown_script": null,
|
||||
"shutdown_script_timeout": 300,
|
||||
"startup_script": null,
|
||||
"startup_script_behavior": null,
|
||||
"startup_script_timeout": 300,
|
||||
"token": "010c13b9-95aa-4b66-a2ad-5937e467134a",
|
||||
"token": "e170615d-a3a2-4dc4-a65e-4990ceeb79e5",
|
||||
"troubleshooting_url": null
|
||||
},
|
||||
"sensitive_values": {
|
||||
@@ -56,7 +57,7 @@
|
||||
"provider_name": "registry.terraform.io/hashicorp/null",
|
||||
"schema_version": 0,
|
||||
"values": {
|
||||
"id": "7220106781059326067",
|
||||
"id": "3512108359019802900",
|
||||
"triggers": null
|
||||
},
|
||||
"sensitive_values": {},
|
||||
|
||||
@@ -2,7 +2,7 @@ terraform {
|
||||
required_providers {
|
||||
coder = {
|
||||
source = "coder/coder"
|
||||
version = "0.11.2"
|
||||
version = "0.22.0"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
-1
@@ -15,4 +15,3 @@ digraph {
|
||||
"[root] root" -> "[root] provider[\"registry.terraform.io/hashicorp/null\"] (close)"
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
+6
-3
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"format_version": "1.2",
|
||||
"terraform_version": "1.5.5",
|
||||
"terraform_version": "1.7.5",
|
||||
"planned_values": {
|
||||
"root_module": {
|
||||
"resources": [
|
||||
@@ -29,6 +29,7 @@
|
||||
"login_before_ready": true,
|
||||
"metadata": [],
|
||||
"motd_file": null,
|
||||
"order": null,
|
||||
"os": "linux",
|
||||
"shutdown_script": null,
|
||||
"shutdown_script_timeout": 300,
|
||||
@@ -89,6 +90,7 @@
|
||||
"login_before_ready": true,
|
||||
"metadata": [],
|
||||
"motd_file": null,
|
||||
"order": null,
|
||||
"os": "linux",
|
||||
"shutdown_script": null,
|
||||
"shutdown_script_timeout": 300,
|
||||
@@ -143,7 +145,7 @@
|
||||
"coder": {
|
||||
"name": "coder",
|
||||
"full_name": "registry.terraform.io/coder/coder",
|
||||
"version_constraint": "0.11.2"
|
||||
"version_constraint": "0.22.0"
|
||||
},
|
||||
"null": {
|
||||
"name": "null",
|
||||
@@ -201,5 +203,6 @@
|
||||
]
|
||||
}
|
||||
},
|
||||
"timestamp": "2023-08-30T19:25:07Z"
|
||||
"timestamp": "2024-05-22T17:02:48Z",
|
||||
"errored": false
|
||||
}
|
||||
|
||||
-1
@@ -15,4 +15,3 @@ digraph {
|
||||
"[root] root" -> "[root] provider[\"registry.terraform.io/hashicorp/null\"] (close)"
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
+5
-4
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"format_version": "1.0",
|
||||
"terraform_version": "1.5.5",
|
||||
"terraform_version": "1.7.5",
|
||||
"values": {
|
||||
"root_module": {
|
||||
"resources": [
|
||||
@@ -26,18 +26,19 @@
|
||||
}
|
||||
],
|
||||
"env": null,
|
||||
"id": "a7b8ff17-66ba-47b4-a4b4-51da1ad835fc",
|
||||
"id": "3fb63a4e-bb0e-4380-9ed9-8b1581943b1f",
|
||||
"init_script": "",
|
||||
"login_before_ready": true,
|
||||
"metadata": [],
|
||||
"motd_file": null,
|
||||
"order": null,
|
||||
"os": "linux",
|
||||
"shutdown_script": null,
|
||||
"shutdown_script_timeout": 300,
|
||||
"startup_script": null,
|
||||
"startup_script_behavior": null,
|
||||
"startup_script_timeout": 300,
|
||||
"token": "75fc044a-b120-4e86-be94-056cec981bd9",
|
||||
"token": "eb5720a7-91fd-4e37-8085-af3c8205702c",
|
||||
"troubleshooting_url": null
|
||||
},
|
||||
"sensitive_values": {
|
||||
@@ -56,7 +57,7 @@
|
||||
"provider_name": "registry.terraform.io/hashicorp/null",
|
||||
"schema_version": 0,
|
||||
"values": {
|
||||
"id": "4184951391452107661",
|
||||
"id": "2929624824161973000",
|
||||
"triggers": null
|
||||
},
|
||||
"sensitive_values": {},
|
||||
|
||||
+1
-1
@@ -2,7 +2,7 @@ terraform {
|
||||
required_providers {
|
||||
coder = {
|
||||
source = "coder/coder"
|
||||
version = "0.16.0"
|
||||
version = "0.22.0"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Generated
Vendored
-1
@@ -21,4 +21,3 @@ digraph {
|
||||
"[root] root" -> "[root] provider[\"registry.terraform.io/hashicorp/null\"] (close)"
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Generated
Vendored
+6
-4
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"format_version": "1.2",
|
||||
"terraform_version": "1.6.6",
|
||||
"terraform_version": "1.7.5",
|
||||
"planned_values": {
|
||||
"root_module": {
|
||||
"resources": [
|
||||
@@ -20,6 +20,7 @@
|
||||
"login_before_ready": true,
|
||||
"metadata": [],
|
||||
"motd_file": null,
|
||||
"order": null,
|
||||
"os": "linux",
|
||||
"shutdown_script": null,
|
||||
"shutdown_script_timeout": 300,
|
||||
@@ -69,6 +70,7 @@
|
||||
"login_before_ready": true,
|
||||
"metadata": [],
|
||||
"motd_file": null,
|
||||
"order": null,
|
||||
"os": "linux",
|
||||
"shutdown_script": null,
|
||||
"shutdown_script_timeout": 300,
|
||||
@@ -116,7 +118,7 @@
|
||||
],
|
||||
"prior_state": {
|
||||
"format_version": "1.0",
|
||||
"terraform_version": "1.6.6",
|
||||
"terraform_version": "1.7.5",
|
||||
"values": {
|
||||
"root_module": {
|
||||
"resources": [
|
||||
@@ -157,7 +159,7 @@
|
||||
"coder": {
|
||||
"name": "coder",
|
||||
"full_name": "registry.terraform.io/coder/coder",
|
||||
"version_constraint": "0.16.0"
|
||||
"version_constraint": "0.22.0"
|
||||
},
|
||||
"null": {
|
||||
"name": "null",
|
||||
@@ -225,6 +227,6 @@
|
||||
]
|
||||
}
|
||||
},
|
||||
"timestamp": "2024-02-12T23:11:52Z",
|
||||
"timestamp": "2024-05-22T17:02:52Z",
|
||||
"errored": false
|
||||
}
|
||||
|
||||
Generated
Vendored
-1
@@ -21,4 +21,3 @@ digraph {
|
||||
"[root] root" -> "[root] provider[\"registry.terraform.io/hashicorp/null\"] (close)"
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Generated
Vendored
+5
-4
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"format_version": "1.0",
|
||||
"terraform_version": "1.6.6",
|
||||
"terraform_version": "1.7.5",
|
||||
"values": {
|
||||
"root_module": {
|
||||
"resources": [
|
||||
@@ -54,18 +54,19 @@
|
||||
}
|
||||
],
|
||||
"env": null,
|
||||
"id": "d1f23602-ef8e-4ecf-aa5a-df8aa476344e",
|
||||
"id": "923df4d0-cf96-4cf8-aaff-426e58927a81",
|
||||
"init_script": "",
|
||||
"login_before_ready": true,
|
||||
"metadata": [],
|
||||
"motd_file": null,
|
||||
"order": null,
|
||||
"os": "linux",
|
||||
"shutdown_script": null,
|
||||
"shutdown_script_timeout": 300,
|
||||
"startup_script": null,
|
||||
"startup_script_behavior": null,
|
||||
"startup_script_timeout": 300,
|
||||
"token": "90440015-11c8-442b-adba-9f2bd279b5c7",
|
||||
"token": "f5328221-90c7-4056-83b4-7b76d6f46580",
|
||||
"troubleshooting_url": null
|
||||
},
|
||||
"sensitive_values": {
|
||||
@@ -84,7 +85,7 @@
|
||||
"provider_name": "registry.terraform.io/hashicorp/null",
|
||||
"schema_version": 0,
|
||||
"values": {
|
||||
"id": "8183284779544326910",
|
||||
"id": "4621387386750422041",
|
||||
"triggers": null
|
||||
},
|
||||
"sensitive_values": {},
|
||||
|
||||
+4
-2
@@ -22,11 +22,13 @@ for d in */; do
|
||||
terraform init -upgrade
|
||||
terraform plan -out terraform.tfplan
|
||||
terraform show -json ./terraform.tfplan | jq >"$name".tfplan.json
|
||||
terraform graph >"$name".tfplan.dot
|
||||
terraform graph -type=plan >"$name".tfplan.dot
|
||||
rm terraform.tfplan
|
||||
terraform apply -auto-approve
|
||||
terraform show -json ./terraform.tfstate | jq >"$name".tfstate.json
|
||||
rm terraform.tfstate
|
||||
terraform graph >"$name".tfstate.dot
|
||||
terraform graph -type=plan >"$name".tfstate.dot
|
||||
popd
|
||||
done
|
||||
|
||||
terraform version -json | jq -r '.terraform_version' >version.txt
|
||||
|
||||
@@ -2,7 +2,7 @@ terraform {
|
||||
required_providers {
|
||||
coder = {
|
||||
source = "coder/coder"
|
||||
version = "0.6.13"
|
||||
version = "0.22.0"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
-1
@@ -21,4 +21,3 @@ digraph {
|
||||
"[root] root" -> "[root] provider[\"registry.terraform.io/hashicorp/null\"] (close)"
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
+19
-5
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"format_version": "1.2",
|
||||
"terraform_version": "1.5.5",
|
||||
"terraform_version": "1.7.5",
|
||||
"planned_values": {
|
||||
"root_module": {
|
||||
"resources": [
|
||||
@@ -18,15 +18,21 @@
|
||||
"dir": null,
|
||||
"env": null,
|
||||
"login_before_ready": true,
|
||||
"metadata": [],
|
||||
"motd_file": null,
|
||||
"order": null,
|
||||
"os": "linux",
|
||||
"shutdown_script": null,
|
||||
"shutdown_script_timeout": 300,
|
||||
"startup_script": null,
|
||||
"startup_script_behavior": null,
|
||||
"startup_script_timeout": 300,
|
||||
"troubleshooting_url": null
|
||||
},
|
||||
"sensitive_values": {}
|
||||
"sensitive_values": {
|
||||
"display_apps": [],
|
||||
"metadata": []
|
||||
}
|
||||
},
|
||||
{
|
||||
"address": "null_resource.dev",
|
||||
@@ -62,21 +68,28 @@
|
||||
"dir": null,
|
||||
"env": null,
|
||||
"login_before_ready": true,
|
||||
"metadata": [],
|
||||
"motd_file": null,
|
||||
"order": null,
|
||||
"os": "linux",
|
||||
"shutdown_script": null,
|
||||
"shutdown_script_timeout": 300,
|
||||
"startup_script": null,
|
||||
"startup_script_behavior": null,
|
||||
"startup_script_timeout": 300,
|
||||
"troubleshooting_url": null
|
||||
},
|
||||
"after_unknown": {
|
||||
"display_apps": true,
|
||||
"id": true,
|
||||
"init_script": true,
|
||||
"metadata": [],
|
||||
"token": true
|
||||
},
|
||||
"before_sensitive": false,
|
||||
"after_sensitive": {
|
||||
"display_apps": [],
|
||||
"metadata": [],
|
||||
"token": true
|
||||
}
|
||||
}
|
||||
@@ -105,7 +118,7 @@
|
||||
],
|
||||
"prior_state": {
|
||||
"format_version": "1.0",
|
||||
"terraform_version": "1.5.5",
|
||||
"terraform_version": "1.7.5",
|
||||
"values": {
|
||||
"root_module": {
|
||||
"resources": [
|
||||
@@ -144,7 +157,7 @@
|
||||
"coder": {
|
||||
"name": "coder",
|
||||
"full_name": "registry.terraform.io/coder/coder",
|
||||
"version_constraint": "0.6.13"
|
||||
"version_constraint": "0.22.0"
|
||||
},
|
||||
"null": {
|
||||
"name": "null",
|
||||
@@ -209,5 +222,6 @@
|
||||
]
|
||||
}
|
||||
},
|
||||
"timestamp": "2023-08-30T19:25:13Z"
|
||||
"timestamp": "2024-05-22T17:02:55Z",
|
||||
"errored": false
|
||||
}
|
||||
|
||||
-1
@@ -21,4 +21,3 @@ digraph {
|
||||
"[root] root" -> "[root] provider[\"registry.terraform.io/hashicorp/null\"] (close)"
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Generated
Vendored
+20
-4
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"format_version": "1.0",
|
||||
"terraform_version": "1.5.5",
|
||||
"terraform_version": "1.7.5",
|
||||
"values": {
|
||||
"root_module": {
|
||||
"resources": [
|
||||
@@ -42,20 +42,36 @@
|
||||
"auth": "token",
|
||||
"connection_timeout": 120,
|
||||
"dir": null,
|
||||
"display_apps": [
|
||||
{
|
||||
"port_forwarding_helper": true,
|
||||
"ssh_helper": true,
|
||||
"vscode": true,
|
||||
"vscode_insiders": false,
|
||||
"web_terminal": true
|
||||
}
|
||||
],
|
||||
"env": null,
|
||||
"id": "a8139f31-219b-4ee5-9e64-60d8dd94be27",
|
||||
"id": "48a24332-1a90-48d9-9e03-b4e9f09c6eab",
|
||||
"init_script": "",
|
||||
"login_before_ready": true,
|
||||
"metadata": [],
|
||||
"motd_file": null,
|
||||
"order": null,
|
||||
"os": "linux",
|
||||
"shutdown_script": null,
|
||||
"shutdown_script_timeout": 300,
|
||||
"startup_script": null,
|
||||
"startup_script_behavior": null,
|
||||
"startup_script_timeout": 300,
|
||||
"token": "20cdf0ee-2da9-432e-a3ad-674b900ed3c1",
|
||||
"token": "6a2ae93f-3f25-423d-aa97-b2f1c5d9c20b",
|
||||
"troubleshooting_url": null
|
||||
},
|
||||
"sensitive_values": {
|
||||
"display_apps": [
|
||||
{}
|
||||
],
|
||||
"metadata": [],
|
||||
"token": true
|
||||
}
|
||||
},
|
||||
@@ -67,7 +83,7 @@
|
||||
"provider_name": "registry.terraform.io/hashicorp/null",
|
||||
"schema_version": 0,
|
||||
"values": {
|
||||
"id": "8246789295692160686",
|
||||
"id": "8095584601893320918",
|
||||
"triggers": null
|
||||
},
|
||||
"sensitive_values": {},
|
||||
|
||||
@@ -2,7 +2,7 @@ terraform {
|
||||
required_providers {
|
||||
coder = {
|
||||
source = "coder/coder"
|
||||
version = "0.6.1"
|
||||
version = "0.22.0"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
-1
@@ -17,4 +17,3 @@ digraph {
|
||||
"[root] root" -> "[root] provider[\"registry.terraform.io/hashicorp/null\"] (close)"
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
+28
-4
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"format_version": "1.2",
|
||||
"terraform_version": "1.5.5",
|
||||
"terraform_version": "1.7.5",
|
||||
"planned_values": {
|
||||
"root_module": {
|
||||
"resources": [
|
||||
@@ -17,11 +17,22 @@
|
||||
"connection_timeout": 120,
|
||||
"dir": null,
|
||||
"env": null,
|
||||
"login_before_ready": true,
|
||||
"metadata": [],
|
||||
"motd_file": null,
|
||||
"order": null,
|
||||
"os": "linux",
|
||||
"shutdown_script": null,
|
||||
"shutdown_script_timeout": 300,
|
||||
"startup_script": null,
|
||||
"startup_script_behavior": null,
|
||||
"startup_script_timeout": 300,
|
||||
"troubleshooting_url": null
|
||||
},
|
||||
"sensitive_values": {}
|
||||
"sensitive_values": {
|
||||
"display_apps": [],
|
||||
"metadata": []
|
||||
}
|
||||
},
|
||||
{
|
||||
"address": "coder_agent_instance.main",
|
||||
@@ -68,17 +79,29 @@
|
||||
"connection_timeout": 120,
|
||||
"dir": null,
|
||||
"env": null,
|
||||
"login_before_ready": true,
|
||||
"metadata": [],
|
||||
"motd_file": null,
|
||||
"order": null,
|
||||
"os": "linux",
|
||||
"shutdown_script": null,
|
||||
"shutdown_script_timeout": 300,
|
||||
"startup_script": null,
|
||||
"startup_script_behavior": null,
|
||||
"startup_script_timeout": 300,
|
||||
"troubleshooting_url": null
|
||||
},
|
||||
"after_unknown": {
|
||||
"display_apps": true,
|
||||
"id": true,
|
||||
"init_script": true,
|
||||
"metadata": [],
|
||||
"token": true
|
||||
},
|
||||
"before_sensitive": false,
|
||||
"after_sensitive": {
|
||||
"display_apps": [],
|
||||
"metadata": [],
|
||||
"token": true
|
||||
}
|
||||
}
|
||||
@@ -132,7 +155,7 @@
|
||||
"coder": {
|
||||
"name": "coder",
|
||||
"full_name": "registry.terraform.io/coder/coder",
|
||||
"version_constraint": "0.6.1"
|
||||
"version_constraint": "0.22.0"
|
||||
},
|
||||
"null": {
|
||||
"name": "null",
|
||||
@@ -201,5 +224,6 @@
|
||||
]
|
||||
}
|
||||
],
|
||||
"timestamp": "2023-08-30T19:25:15Z"
|
||||
"timestamp": "2024-05-22T17:02:57Z",
|
||||
"errored": false
|
||||
}
|
||||
|
||||
-1
@@ -17,4 +17,3 @@ digraph {
|
||||
"[root] root" -> "[root] provider[\"registry.terraform.io/hashicorp/null\"] (close)"
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
+27
-6
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"format_version": "1.0",
|
||||
"terraform_version": "1.5.5",
|
||||
"terraform_version": "1.7.5",
|
||||
"values": {
|
||||
"root_module": {
|
||||
"resources": [
|
||||
@@ -16,15 +16,36 @@
|
||||
"auth": "google-instance-identity",
|
||||
"connection_timeout": 120,
|
||||
"dir": null,
|
||||
"display_apps": [
|
||||
{
|
||||
"port_forwarding_helper": true,
|
||||
"ssh_helper": true,
|
||||
"vscode": true,
|
||||
"vscode_insiders": false,
|
||||
"web_terminal": true
|
||||
}
|
||||
],
|
||||
"env": null,
|
||||
"id": "07c39e97-3461-4912-87c6-aab06714fb79",
|
||||
"id": "3bc8e20f-2024-4014-ac11-806e7e1a1e24",
|
||||
"init_script": "",
|
||||
"login_before_ready": true,
|
||||
"metadata": [],
|
||||
"motd_file": null,
|
||||
"order": null,
|
||||
"os": "linux",
|
||||
"shutdown_script": null,
|
||||
"shutdown_script_timeout": 300,
|
||||
"startup_script": null,
|
||||
"token": "4d389c4e-479b-4004-8ad1-b10da989bbdb",
|
||||
"startup_script_behavior": null,
|
||||
"startup_script_timeout": 300,
|
||||
"token": "6ef0492b-8dbe-4c61-8eb8-a37acb671278",
|
||||
"troubleshooting_url": null
|
||||
},
|
||||
"sensitive_values": {
|
||||
"display_apps": [
|
||||
{}
|
||||
],
|
||||
"metadata": [],
|
||||
"token": true
|
||||
}
|
||||
},
|
||||
@@ -36,8 +57,8 @@
|
||||
"provider_name": "registry.terraform.io/coder/coder",
|
||||
"schema_version": 0,
|
||||
"values": {
|
||||
"agent_id": "07c39e97-3461-4912-87c6-aab06714fb79",
|
||||
"id": "13ac93bd-54bf-4e93-b2a1-35534139e255",
|
||||
"agent_id": "3bc8e20f-2024-4014-ac11-806e7e1a1e24",
|
||||
"id": "7ba714fa-f2b8-4d33-8987-f67466505033",
|
||||
"instance_id": "example"
|
||||
},
|
||||
"sensitive_values": {},
|
||||
@@ -53,7 +74,7 @@
|
||||
"provider_name": "registry.terraform.io/hashicorp/null",
|
||||
"schema_version": 0,
|
||||
"values": {
|
||||
"id": "8984327635720248545",
|
||||
"id": "4065206823139127011",
|
||||
"triggers": null
|
||||
},
|
||||
"sensitive_values": {},
|
||||
|
||||
@@ -2,7 +2,7 @@ terraform {
|
||||
required_providers {
|
||||
coder = {
|
||||
source = "coder/coder"
|
||||
version = "0.6.5"
|
||||
version = "0.22.0"
|
||||
}
|
||||
kubernetes = {
|
||||
source = "hashicorp/kubernetes"
|
||||
|
||||
@@ -2,7 +2,7 @@ terraform {
|
||||
required_providers {
|
||||
coder = {
|
||||
source = "coder/coder"
|
||||
version = "0.6.1"
|
||||
version = "0.22.0"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
-1
@@ -18,4 +18,3 @@ digraph {
|
||||
"[root] root" -> "[root] provider[\"registry.terraform.io/hashicorp/null\"] (close)"
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
+36
-4
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"format_version": "1.2",
|
||||
"terraform_version": "1.5.5",
|
||||
"terraform_version": "1.7.5",
|
||||
"planned_values": {
|
||||
"root_module": {
|
||||
"resources": [
|
||||
@@ -17,11 +17,22 @@
|
||||
"connection_timeout": 120,
|
||||
"dir": null,
|
||||
"env": null,
|
||||
"login_before_ready": true,
|
||||
"metadata": [],
|
||||
"motd_file": null,
|
||||
"order": null,
|
||||
"os": "linux",
|
||||
"shutdown_script": null,
|
||||
"shutdown_script_timeout": 300,
|
||||
"startup_script": null,
|
||||
"startup_script_behavior": null,
|
||||
"startup_script_timeout": 300,
|
||||
"troubleshooting_url": null
|
||||
},
|
||||
"sensitive_values": {}
|
||||
"sensitive_values": {
|
||||
"display_apps": [],
|
||||
"metadata": []
|
||||
}
|
||||
},
|
||||
{
|
||||
"address": "coder_app.apps[\"app1\"]",
|
||||
@@ -34,9 +45,11 @@
|
||||
"values": {
|
||||
"command": null,
|
||||
"display_name": "app1",
|
||||
"external": false,
|
||||
"healthcheck": [],
|
||||
"icon": null,
|
||||
"name": null,
|
||||
"order": null,
|
||||
"relative_path": null,
|
||||
"share": "owner",
|
||||
"slug": "app1",
|
||||
@@ -58,9 +71,11 @@
|
||||
"values": {
|
||||
"command": null,
|
||||
"display_name": "app2",
|
||||
"external": false,
|
||||
"healthcheck": [],
|
||||
"icon": null,
|
||||
"name": null,
|
||||
"order": null,
|
||||
"relative_path": null,
|
||||
"share": "owner",
|
||||
"slug": "app2",
|
||||
@@ -104,17 +119,29 @@
|
||||
"connection_timeout": 120,
|
||||
"dir": null,
|
||||
"env": null,
|
||||
"login_before_ready": true,
|
||||
"metadata": [],
|
||||
"motd_file": null,
|
||||
"order": null,
|
||||
"os": "linux",
|
||||
"shutdown_script": null,
|
||||
"shutdown_script_timeout": 300,
|
||||
"startup_script": null,
|
||||
"startup_script_behavior": null,
|
||||
"startup_script_timeout": 300,
|
||||
"troubleshooting_url": null
|
||||
},
|
||||
"after_unknown": {
|
||||
"display_apps": true,
|
||||
"id": true,
|
||||
"init_script": true,
|
||||
"metadata": [],
|
||||
"token": true
|
||||
},
|
||||
"before_sensitive": false,
|
||||
"after_sensitive": {
|
||||
"display_apps": [],
|
||||
"metadata": [],
|
||||
"token": true
|
||||
}
|
||||
}
|
||||
@@ -134,9 +161,11 @@
|
||||
"after": {
|
||||
"command": null,
|
||||
"display_name": "app1",
|
||||
"external": false,
|
||||
"healthcheck": [],
|
||||
"icon": null,
|
||||
"name": null,
|
||||
"order": null,
|
||||
"relative_path": null,
|
||||
"share": "owner",
|
||||
"slug": "app1",
|
||||
@@ -169,9 +198,11 @@
|
||||
"after": {
|
||||
"command": null,
|
||||
"display_name": "app2",
|
||||
"external": false,
|
||||
"healthcheck": [],
|
||||
"icon": null,
|
||||
"name": null,
|
||||
"order": null,
|
||||
"relative_path": null,
|
||||
"share": "owner",
|
||||
"slug": "app2",
|
||||
@@ -216,7 +247,7 @@
|
||||
"coder": {
|
||||
"name": "coder",
|
||||
"full_name": "registry.terraform.io/coder/coder",
|
||||
"version_constraint": "0.6.1"
|
||||
"version_constraint": "0.22.0"
|
||||
},
|
||||
"null": {
|
||||
"name": "null",
|
||||
@@ -295,5 +326,6 @@
|
||||
]
|
||||
}
|
||||
],
|
||||
"timestamp": "2023-08-30T19:25:17Z"
|
||||
"timestamp": "2024-05-22T17:02:59Z",
|
||||
"errored": false
|
||||
}
|
||||
|
||||
-1
@@ -18,4 +18,3 @@ digraph {
|
||||
"[root] root" -> "[root] provider[\"registry.terraform.io/hashicorp/null\"] (close)"
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
+33
-8
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"format_version": "1.0",
|
||||
"terraform_version": "1.5.5",
|
||||
"terraform_version": "1.7.5",
|
||||
"values": {
|
||||
"root_module": {
|
||||
"resources": [
|
||||
@@ -16,15 +16,36 @@
|
||||
"auth": "token",
|
||||
"connection_timeout": 120,
|
||||
"dir": null,
|
||||
"display_apps": [
|
||||
{
|
||||
"port_forwarding_helper": true,
|
||||
"ssh_helper": true,
|
||||
"vscode": true,
|
||||
"vscode_insiders": false,
|
||||
"web_terminal": true
|
||||
}
|
||||
],
|
||||
"env": null,
|
||||
"id": "9a8356cf-b5ef-4da0-9b4e-cfeaca1fbfcf",
|
||||
"id": "d8d2ed23-193d-4784-9ce5-7bc0d879bb14",
|
||||
"init_script": "",
|
||||
"login_before_ready": true,
|
||||
"metadata": [],
|
||||
"motd_file": null,
|
||||
"order": null,
|
||||
"os": "linux",
|
||||
"shutdown_script": null,
|
||||
"shutdown_script_timeout": 300,
|
||||
"startup_script": null,
|
||||
"token": "7116ebd2-5205-4427-8cdb-5f86ec819911",
|
||||
"startup_script_behavior": null,
|
||||
"startup_script_timeout": 300,
|
||||
"token": "0555adfc-e969-4fd2-8cfd-47560bd1b5a3",
|
||||
"troubleshooting_url": null
|
||||
},
|
||||
"sensitive_values": {
|
||||
"display_apps": [
|
||||
{}
|
||||
],
|
||||
"metadata": [],
|
||||
"token": true
|
||||
}
|
||||
},
|
||||
@@ -37,13 +58,15 @@
|
||||
"provider_name": "registry.terraform.io/coder/coder",
|
||||
"schema_version": 0,
|
||||
"values": {
|
||||
"agent_id": "9a8356cf-b5ef-4da0-9b4e-cfeaca1fbfcf",
|
||||
"agent_id": "d8d2ed23-193d-4784-9ce5-7bc0d879bb14",
|
||||
"command": null,
|
||||
"display_name": "app1",
|
||||
"external": false,
|
||||
"healthcheck": [],
|
||||
"icon": null,
|
||||
"id": "8ad9b3c3-0951-4612-adea-5c89ac12642a",
|
||||
"id": "11fa3ff2-d6ba-41ca-b1df-6c98d395c0b8",
|
||||
"name": null,
|
||||
"order": null,
|
||||
"relative_path": null,
|
||||
"share": "owner",
|
||||
"slug": "app1",
|
||||
@@ -66,13 +89,15 @@
|
||||
"provider_name": "registry.terraform.io/coder/coder",
|
||||
"schema_version": 0,
|
||||
"values": {
|
||||
"agent_id": "9a8356cf-b5ef-4da0-9b4e-cfeaca1fbfcf",
|
||||
"agent_id": "d8d2ed23-193d-4784-9ce5-7bc0d879bb14",
|
||||
"command": null,
|
||||
"display_name": "app2",
|
||||
"external": false,
|
||||
"healthcheck": [],
|
||||
"icon": null,
|
||||
"id": "b3cbb3eb-62d8-485f-8378-2d2ed751aa38",
|
||||
"id": "cd1a2e37-adbc-49f0-bd99-033c62a1533e",
|
||||
"name": null,
|
||||
"order": null,
|
||||
"relative_path": null,
|
||||
"share": "owner",
|
||||
"slug": "app2",
|
||||
@@ -94,7 +119,7 @@
|
||||
"provider_name": "registry.terraform.io/hashicorp/null",
|
||||
"schema_version": 0,
|
||||
"values": {
|
||||
"id": "5757307222275435634",
|
||||
"id": "4490911212417021152",
|
||||
"triggers": null
|
||||
},
|
||||
"sensitive_values": {},
|
||||
|
||||
@@ -2,7 +2,7 @@ terraform {
|
||||
required_providers {
|
||||
coder = {
|
||||
source = "coder/coder"
|
||||
version = "0.8.3"
|
||||
version = "0.22.0"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
-1
@@ -27,4 +27,3 @@ digraph {
|
||||
"[root] root" -> "[root] provider[\"registry.terraform.io/hashicorp/null\"] (close)"
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
+24
-3
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"format_version": "1.2",
|
||||
"terraform_version": "1.5.5",
|
||||
"terraform_version": "1.7.5",
|
||||
"planned_values": {
|
||||
"root_module": {
|
||||
"resources": [
|
||||
@@ -20,6 +20,7 @@
|
||||
"login_before_ready": true,
|
||||
"metadata": [],
|
||||
"motd_file": null,
|
||||
"order": null,
|
||||
"os": "linux",
|
||||
"shutdown_script": null,
|
||||
"shutdown_script_timeout": 300,
|
||||
@@ -29,6 +30,7 @@
|
||||
"troubleshooting_url": null
|
||||
},
|
||||
"sensitive_values": {
|
||||
"display_apps": [],
|
||||
"metadata": []
|
||||
}
|
||||
},
|
||||
@@ -48,6 +50,7 @@
|
||||
"login_before_ready": true,
|
||||
"metadata": [],
|
||||
"motd_file": "/etc/motd",
|
||||
"order": null,
|
||||
"os": "darwin",
|
||||
"shutdown_script": "echo bye bye",
|
||||
"shutdown_script_timeout": 30,
|
||||
@@ -57,6 +60,7 @@
|
||||
"troubleshooting_url": null
|
||||
},
|
||||
"sensitive_values": {
|
||||
"display_apps": [],
|
||||
"metadata": []
|
||||
}
|
||||
},
|
||||
@@ -76,6 +80,7 @@
|
||||
"login_before_ready": true,
|
||||
"metadata": [],
|
||||
"motd_file": null,
|
||||
"order": null,
|
||||
"os": "windows",
|
||||
"shutdown_script": null,
|
||||
"shutdown_script_timeout": 300,
|
||||
@@ -85,6 +90,7 @@
|
||||
"troubleshooting_url": "https://coder.com/troubleshoot"
|
||||
},
|
||||
"sensitive_values": {
|
||||
"display_apps": [],
|
||||
"metadata": []
|
||||
}
|
||||
},
|
||||
@@ -104,6 +110,7 @@
|
||||
"login_before_ready": false,
|
||||
"metadata": [],
|
||||
"motd_file": null,
|
||||
"order": null,
|
||||
"os": "linux",
|
||||
"shutdown_script": null,
|
||||
"shutdown_script_timeout": 300,
|
||||
@@ -113,6 +120,7 @@
|
||||
"troubleshooting_url": null
|
||||
},
|
||||
"sensitive_values": {
|
||||
"display_apps": [],
|
||||
"metadata": []
|
||||
}
|
||||
},
|
||||
@@ -152,6 +160,7 @@
|
||||
"login_before_ready": true,
|
||||
"metadata": [],
|
||||
"motd_file": null,
|
||||
"order": null,
|
||||
"os": "linux",
|
||||
"shutdown_script": null,
|
||||
"shutdown_script_timeout": 300,
|
||||
@@ -161,6 +170,7 @@
|
||||
"troubleshooting_url": null
|
||||
},
|
||||
"after_unknown": {
|
||||
"display_apps": true,
|
||||
"id": true,
|
||||
"init_script": true,
|
||||
"metadata": [],
|
||||
@@ -168,6 +178,7 @@
|
||||
},
|
||||
"before_sensitive": false,
|
||||
"after_sensitive": {
|
||||
"display_apps": [],
|
||||
"metadata": [],
|
||||
"token": true
|
||||
}
|
||||
@@ -193,6 +204,7 @@
|
||||
"login_before_ready": true,
|
||||
"metadata": [],
|
||||
"motd_file": "/etc/motd",
|
||||
"order": null,
|
||||
"os": "darwin",
|
||||
"shutdown_script": "echo bye bye",
|
||||
"shutdown_script_timeout": 30,
|
||||
@@ -202,6 +214,7 @@
|
||||
"troubleshooting_url": null
|
||||
},
|
||||
"after_unknown": {
|
||||
"display_apps": true,
|
||||
"id": true,
|
||||
"init_script": true,
|
||||
"metadata": [],
|
||||
@@ -209,6 +222,7 @@
|
||||
},
|
||||
"before_sensitive": false,
|
||||
"after_sensitive": {
|
||||
"display_apps": [],
|
||||
"metadata": [],
|
||||
"token": true
|
||||
}
|
||||
@@ -234,6 +248,7 @@
|
||||
"login_before_ready": true,
|
||||
"metadata": [],
|
||||
"motd_file": null,
|
||||
"order": null,
|
||||
"os": "windows",
|
||||
"shutdown_script": null,
|
||||
"shutdown_script_timeout": 300,
|
||||
@@ -243,6 +258,7 @@
|
||||
"troubleshooting_url": "https://coder.com/troubleshoot"
|
||||
},
|
||||
"after_unknown": {
|
||||
"display_apps": true,
|
||||
"id": true,
|
||||
"init_script": true,
|
||||
"metadata": [],
|
||||
@@ -250,6 +266,7 @@
|
||||
},
|
||||
"before_sensitive": false,
|
||||
"after_sensitive": {
|
||||
"display_apps": [],
|
||||
"metadata": [],
|
||||
"token": true
|
||||
}
|
||||
@@ -275,6 +292,7 @@
|
||||
"login_before_ready": false,
|
||||
"metadata": [],
|
||||
"motd_file": null,
|
||||
"order": null,
|
||||
"os": "linux",
|
||||
"shutdown_script": null,
|
||||
"shutdown_script_timeout": 300,
|
||||
@@ -284,6 +302,7 @@
|
||||
"troubleshooting_url": null
|
||||
},
|
||||
"after_unknown": {
|
||||
"display_apps": true,
|
||||
"id": true,
|
||||
"init_script": true,
|
||||
"metadata": [],
|
||||
@@ -291,6 +310,7 @@
|
||||
},
|
||||
"before_sensitive": false,
|
||||
"after_sensitive": {
|
||||
"display_apps": [],
|
||||
"metadata": [],
|
||||
"token": true
|
||||
}
|
||||
@@ -323,7 +343,7 @@
|
||||
"coder": {
|
||||
"name": "coder",
|
||||
"full_name": "registry.terraform.io/coder/coder",
|
||||
"version_constraint": "0.8.3"
|
||||
"version_constraint": "0.22.0"
|
||||
},
|
||||
"null": {
|
||||
"name": "null",
|
||||
@@ -440,5 +460,6 @@
|
||||
]
|
||||
}
|
||||
},
|
||||
"timestamp": "2023-08-30T19:25:20Z"
|
||||
"timestamp": "2024-05-22T17:03:01Z",
|
||||
"errored": false
|
||||
}
|
||||
|
||||
-1
@@ -27,4 +27,3 @@ digraph {
|
||||
"[root] root" -> "[root] provider[\"registry.terraform.io/hashicorp/null\"] (close)"
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
+62
-10
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"format_version": "1.0",
|
||||
"terraform_version": "1.5.5",
|
||||
"terraform_version": "1.7.5",
|
||||
"values": {
|
||||
"root_module": {
|
||||
"resources": [
|
||||
@@ -16,22 +16,35 @@
|
||||
"auth": "token",
|
||||
"connection_timeout": 120,
|
||||
"dir": null,
|
||||
"display_apps": [
|
||||
{
|
||||
"port_forwarding_helper": true,
|
||||
"ssh_helper": true,
|
||||
"vscode": true,
|
||||
"vscode_insiders": false,
|
||||
"web_terminal": true
|
||||
}
|
||||
],
|
||||
"env": null,
|
||||
"id": "094d300c-f07a-4357-870f-6ca1fc9154a2",
|
||||
"id": "0ffc6582-b017-404e-b83f-48e4a5ab38bc",
|
||||
"init_script": "",
|
||||
"login_before_ready": true,
|
||||
"metadata": [],
|
||||
"motd_file": null,
|
||||
"order": null,
|
||||
"os": "linux",
|
||||
"shutdown_script": null,
|
||||
"shutdown_script_timeout": 300,
|
||||
"startup_script": null,
|
||||
"startup_script_behavior": null,
|
||||
"startup_script_timeout": 300,
|
||||
"token": "27bd44bc-0126-4c8d-9b98-8f27619e3656",
|
||||
"token": "b7f0a913-ecb1-4c80-8559-fbcb435d53d0",
|
||||
"troubleshooting_url": null
|
||||
},
|
||||
"sensitive_values": {
|
||||
"display_apps": [
|
||||
{}
|
||||
],
|
||||
"metadata": [],
|
||||
"token": true
|
||||
}
|
||||
@@ -48,22 +61,35 @@
|
||||
"auth": "token",
|
||||
"connection_timeout": 1,
|
||||
"dir": null,
|
||||
"display_apps": [
|
||||
{
|
||||
"port_forwarding_helper": true,
|
||||
"ssh_helper": true,
|
||||
"vscode": true,
|
||||
"vscode_insiders": false,
|
||||
"web_terminal": true
|
||||
}
|
||||
],
|
||||
"env": null,
|
||||
"id": "bb844516-2cdd-419c-87e1-d0d3ea69fe78",
|
||||
"id": "1780ae95-844c-4d5c-94fb-6ccfe4a7656d",
|
||||
"init_script": "",
|
||||
"login_before_ready": true,
|
||||
"metadata": [],
|
||||
"motd_file": "/etc/motd",
|
||||
"order": null,
|
||||
"os": "darwin",
|
||||
"shutdown_script": "echo bye bye",
|
||||
"shutdown_script_timeout": 30,
|
||||
"startup_script": null,
|
||||
"startup_script_behavior": "non-blocking",
|
||||
"startup_script_timeout": 30,
|
||||
"token": "8a31b688-d3d2-4c22-b37e-c9810b9b329a",
|
||||
"token": "695f8765-3d3d-4da0-9a5a-bb7b1f568bde",
|
||||
"troubleshooting_url": null
|
||||
},
|
||||
"sensitive_values": {
|
||||
"display_apps": [
|
||||
{}
|
||||
],
|
||||
"metadata": [],
|
||||
"token": true
|
||||
}
|
||||
@@ -80,22 +106,35 @@
|
||||
"auth": "token",
|
||||
"connection_timeout": 120,
|
||||
"dir": null,
|
||||
"display_apps": [
|
||||
{
|
||||
"port_forwarding_helper": true,
|
||||
"ssh_helper": true,
|
||||
"vscode": true,
|
||||
"vscode_insiders": false,
|
||||
"web_terminal": true
|
||||
}
|
||||
],
|
||||
"env": null,
|
||||
"id": "c6123c01-0543-4102-bdcf-f0ee2a9c1269",
|
||||
"id": "333b7856-24ac-46be-9ae3-e4981b25481d",
|
||||
"init_script": "",
|
||||
"login_before_ready": true,
|
||||
"metadata": [],
|
||||
"motd_file": null,
|
||||
"order": null,
|
||||
"os": "windows",
|
||||
"shutdown_script": null,
|
||||
"shutdown_script_timeout": 300,
|
||||
"startup_script": null,
|
||||
"startup_script_behavior": "blocking",
|
||||
"startup_script_timeout": 300,
|
||||
"token": "64185462-292f-4b75-b350-625326ba596e",
|
||||
"token": "50ddfb93-264f-4f64-8c8d-db7d8d37c0a1",
|
||||
"troubleshooting_url": "https://coder.com/troubleshoot"
|
||||
},
|
||||
"sensitive_values": {
|
||||
"display_apps": [
|
||||
{}
|
||||
],
|
||||
"metadata": [],
|
||||
"token": true
|
||||
}
|
||||
@@ -112,22 +151,35 @@
|
||||
"auth": "token",
|
||||
"connection_timeout": 120,
|
||||
"dir": null,
|
||||
"display_apps": [
|
||||
{
|
||||
"port_forwarding_helper": true,
|
||||
"ssh_helper": true,
|
||||
"vscode": true,
|
||||
"vscode_insiders": false,
|
||||
"web_terminal": true
|
||||
}
|
||||
],
|
||||
"env": null,
|
||||
"id": "85d0614c-3e44-4f20-b4bf-a015c8dfcaac",
|
||||
"id": "90736626-71c9-4b76-bdfc-f6ce9b3dda05",
|
||||
"init_script": "",
|
||||
"login_before_ready": false,
|
||||
"metadata": [],
|
||||
"motd_file": null,
|
||||
"order": null,
|
||||
"os": "linux",
|
||||
"shutdown_script": null,
|
||||
"shutdown_script_timeout": 300,
|
||||
"startup_script": null,
|
||||
"startup_script_behavior": null,
|
||||
"startup_script_timeout": 300,
|
||||
"token": "021b1139-fa63-42ba-be1a-85f8456f3c28",
|
||||
"token": "8c4ae7b9-12b7-4a9c-a55a-a98cfb049103",
|
||||
"troubleshooting_url": null
|
||||
},
|
||||
"sensitive_values": {
|
||||
"display_apps": [
|
||||
{}
|
||||
],
|
||||
"metadata": [],
|
||||
"token": true
|
||||
}
|
||||
@@ -140,7 +192,7 @@
|
||||
"provider_name": "registry.terraform.io/hashicorp/null",
|
||||
"schema_version": 0,
|
||||
"values": {
|
||||
"id": "6753149467284740901",
|
||||
"id": "6980014108785645805",
|
||||
"triggers": null
|
||||
},
|
||||
"sensitive_values": {},
|
||||
|
||||
@@ -2,7 +2,7 @@ terraform {
|
||||
required_providers {
|
||||
coder = {
|
||||
source = "coder/coder"
|
||||
version = "0.6.1"
|
||||
version = "0.22.0"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
-1
@@ -23,4 +23,3 @@ digraph {
|
||||
"[root] root" -> "[root] provider[\"registry.terraform.io/hashicorp/null\"] (close)"
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
+40
-4
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"format_version": "1.2",
|
||||
"terraform_version": "1.5.5",
|
||||
"terraform_version": "1.7.5",
|
||||
"planned_values": {
|
||||
"root_module": {
|
||||
"resources": [
|
||||
@@ -17,11 +17,22 @@
|
||||
"connection_timeout": 120,
|
||||
"dir": null,
|
||||
"env": null,
|
||||
"login_before_ready": true,
|
||||
"metadata": [],
|
||||
"motd_file": null,
|
||||
"order": null,
|
||||
"os": "linux",
|
||||
"shutdown_script": null,
|
||||
"shutdown_script_timeout": 300,
|
||||
"startup_script": null,
|
||||
"startup_script_behavior": null,
|
||||
"startup_script_timeout": 300,
|
||||
"troubleshooting_url": null
|
||||
},
|
||||
"sensitive_values": {}
|
||||
"sensitive_values": {
|
||||
"display_apps": [],
|
||||
"metadata": []
|
||||
}
|
||||
},
|
||||
{
|
||||
"address": "coder_app.app1",
|
||||
@@ -33,9 +44,11 @@
|
||||
"values": {
|
||||
"command": null,
|
||||
"display_name": null,
|
||||
"external": false,
|
||||
"healthcheck": [],
|
||||
"icon": null,
|
||||
"name": null,
|
||||
"order": null,
|
||||
"relative_path": null,
|
||||
"share": "owner",
|
||||
"slug": "app1",
|
||||
@@ -56,6 +69,7 @@
|
||||
"values": {
|
||||
"command": null,
|
||||
"display_name": null,
|
||||
"external": false,
|
||||
"healthcheck": [
|
||||
{
|
||||
"interval": 5,
|
||||
@@ -65,6 +79,7 @@
|
||||
],
|
||||
"icon": null,
|
||||
"name": null,
|
||||
"order": null,
|
||||
"relative_path": null,
|
||||
"share": "owner",
|
||||
"slug": "app2",
|
||||
@@ -87,9 +102,11 @@
|
||||
"values": {
|
||||
"command": null,
|
||||
"display_name": null,
|
||||
"external": false,
|
||||
"healthcheck": [],
|
||||
"icon": null,
|
||||
"name": null,
|
||||
"order": null,
|
||||
"relative_path": null,
|
||||
"share": "owner",
|
||||
"slug": "app3",
|
||||
@@ -133,17 +150,29 @@
|
||||
"connection_timeout": 120,
|
||||
"dir": null,
|
||||
"env": null,
|
||||
"login_before_ready": true,
|
||||
"metadata": [],
|
||||
"motd_file": null,
|
||||
"order": null,
|
||||
"os": "linux",
|
||||
"shutdown_script": null,
|
||||
"shutdown_script_timeout": 300,
|
||||
"startup_script": null,
|
||||
"startup_script_behavior": null,
|
||||
"startup_script_timeout": 300,
|
||||
"troubleshooting_url": null
|
||||
},
|
||||
"after_unknown": {
|
||||
"display_apps": true,
|
||||
"id": true,
|
||||
"init_script": true,
|
||||
"metadata": [],
|
||||
"token": true
|
||||
},
|
||||
"before_sensitive": false,
|
||||
"after_sensitive": {
|
||||
"display_apps": [],
|
||||
"metadata": [],
|
||||
"token": true
|
||||
}
|
||||
}
|
||||
@@ -162,9 +191,11 @@
|
||||
"after": {
|
||||
"command": null,
|
||||
"display_name": null,
|
||||
"external": false,
|
||||
"healthcheck": [],
|
||||
"icon": null,
|
||||
"name": null,
|
||||
"order": null,
|
||||
"relative_path": null,
|
||||
"share": "owner",
|
||||
"slug": "app1",
|
||||
@@ -196,6 +227,7 @@
|
||||
"after": {
|
||||
"command": null,
|
||||
"display_name": null,
|
||||
"external": false,
|
||||
"healthcheck": [
|
||||
{
|
||||
"interval": 5,
|
||||
@@ -205,6 +237,7 @@
|
||||
],
|
||||
"icon": null,
|
||||
"name": null,
|
||||
"order": null,
|
||||
"relative_path": null,
|
||||
"share": "owner",
|
||||
"slug": "app2",
|
||||
@@ -240,9 +273,11 @@
|
||||
"after": {
|
||||
"command": null,
|
||||
"display_name": null,
|
||||
"external": false,
|
||||
"healthcheck": [],
|
||||
"icon": null,
|
||||
"name": null,
|
||||
"order": null,
|
||||
"relative_path": null,
|
||||
"share": "owner",
|
||||
"slug": "app3",
|
||||
@@ -287,7 +322,7 @@
|
||||
"coder": {
|
||||
"name": "coder",
|
||||
"full_name": "registry.terraform.io/coder/coder",
|
||||
"version_constraint": "0.6.1"
|
||||
"version_constraint": "0.22.0"
|
||||
},
|
||||
"null": {
|
||||
"name": "null",
|
||||
@@ -410,5 +445,6 @@
|
||||
]
|
||||
}
|
||||
],
|
||||
"timestamp": "2023-08-30T19:25:22Z"
|
||||
"timestamp": "2024-05-22T17:03:03Z",
|
||||
"errored": false
|
||||
}
|
||||
|
||||
-1
@@ -23,4 +23,3 @@ digraph {
|
||||
"[root] root" -> "[root] provider[\"registry.terraform.io/hashicorp/null\"] (close)"
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
+37
-10
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"format_version": "1.0",
|
||||
"terraform_version": "1.5.5",
|
||||
"terraform_version": "1.7.5",
|
||||
"values": {
|
||||
"root_module": {
|
||||
"resources": [
|
||||
@@ -16,15 +16,36 @@
|
||||
"auth": "token",
|
||||
"connection_timeout": 120,
|
||||
"dir": null,
|
||||
"display_apps": [
|
||||
{
|
||||
"port_forwarding_helper": true,
|
||||
"ssh_helper": true,
|
||||
"vscode": true,
|
||||
"vscode_insiders": false,
|
||||
"web_terminal": true
|
||||
}
|
||||
],
|
||||
"env": null,
|
||||
"id": "c8dab94d-651c-4d9b-a19a-1c067a2976ea",
|
||||
"id": "c950352c-7c4a-41cc-9049-ad07ded85c47",
|
||||
"init_script": "",
|
||||
"login_before_ready": true,
|
||||
"metadata": [],
|
||||
"motd_file": null,
|
||||
"order": null,
|
||||
"os": "linux",
|
||||
"shutdown_script": null,
|
||||
"shutdown_script_timeout": 300,
|
||||
"startup_script": null,
|
||||
"token": "96745539-f607-45f5-aa71-4f70f593ca6a",
|
||||
"startup_script_behavior": null,
|
||||
"startup_script_timeout": 300,
|
||||
"token": "143c3974-49f5-4898-815b-c4044283ebc8",
|
||||
"troubleshooting_url": null
|
||||
},
|
||||
"sensitive_values": {
|
||||
"display_apps": [
|
||||
{}
|
||||
],
|
||||
"metadata": [],
|
||||
"token": true
|
||||
}
|
||||
},
|
||||
@@ -36,13 +57,15 @@
|
||||
"provider_name": "registry.terraform.io/coder/coder",
|
||||
"schema_version": 0,
|
||||
"values": {
|
||||
"agent_id": "c8dab94d-651c-4d9b-a19a-1c067a2976ea",
|
||||
"agent_id": "c950352c-7c4a-41cc-9049-ad07ded85c47",
|
||||
"command": null,
|
||||
"display_name": null,
|
||||
"external": false,
|
||||
"healthcheck": [],
|
||||
"icon": null,
|
||||
"id": "de5959cb-248c-44a0-bd04-9d5f28dfb415",
|
||||
"id": "23135384-0e9f-4efc-b74c-d3e5e878ed67",
|
||||
"name": null,
|
||||
"order": null,
|
||||
"relative_path": null,
|
||||
"share": "owner",
|
||||
"slug": "app1",
|
||||
@@ -64,9 +87,10 @@
|
||||
"provider_name": "registry.terraform.io/coder/coder",
|
||||
"schema_version": 0,
|
||||
"values": {
|
||||
"agent_id": "c8dab94d-651c-4d9b-a19a-1c067a2976ea",
|
||||
"agent_id": "c950352c-7c4a-41cc-9049-ad07ded85c47",
|
||||
"command": null,
|
||||
"display_name": null,
|
||||
"external": false,
|
||||
"healthcheck": [
|
||||
{
|
||||
"interval": 5,
|
||||
@@ -75,8 +99,9 @@
|
||||
}
|
||||
],
|
||||
"icon": null,
|
||||
"id": "60aaa860-01d1-4d42-804b-2dc689676307",
|
||||
"id": "01e73639-0fd1-4bcb-bd88-d22eb8244627",
|
||||
"name": null,
|
||||
"order": null,
|
||||
"relative_path": null,
|
||||
"share": "owner",
|
||||
"slug": "app2",
|
||||
@@ -100,13 +125,15 @@
|
||||
"provider_name": "registry.terraform.io/coder/coder",
|
||||
"schema_version": 0,
|
||||
"values": {
|
||||
"agent_id": "c8dab94d-651c-4d9b-a19a-1c067a2976ea",
|
||||
"agent_id": "c950352c-7c4a-41cc-9049-ad07ded85c47",
|
||||
"command": null,
|
||||
"display_name": null,
|
||||
"external": false,
|
||||
"healthcheck": [],
|
||||
"icon": null,
|
||||
"id": "3455e899-9bf9-4c0e-ac5b-6f861d5541a0",
|
||||
"id": "058c9054-9714-4a5f-9fde-8a451ab58620",
|
||||
"name": null,
|
||||
"order": null,
|
||||
"relative_path": null,
|
||||
"share": "owner",
|
||||
"slug": "app3",
|
||||
@@ -128,7 +155,7 @@
|
||||
"provider_name": "registry.terraform.io/hashicorp/null",
|
||||
"schema_version": 0,
|
||||
"values": {
|
||||
"id": "7562947701260361048",
|
||||
"id": "9051436019409847411",
|
||||
"triggers": null
|
||||
},
|
||||
"sensitive_values": {},
|
||||
|
||||
+1
-1
@@ -2,7 +2,7 @@ terraform {
|
||||
required_providers {
|
||||
coder = {
|
||||
source = "coder/coder"
|
||||
version = "0.9.0"
|
||||
version = "0.22.0"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Generated
Vendored
-1
@@ -20,4 +20,3 @@ digraph {
|
||||
"[root] root" -> "[root] provider[\"registry.terraform.io/hashicorp/null\"] (close)"
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Generated
Vendored
+11
-3
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"format_version": "1.2",
|
||||
"terraform_version": "1.5.5",
|
||||
"terraform_version": "1.7.5",
|
||||
"planned_values": {
|
||||
"root_module": {
|
||||
"resources": [
|
||||
@@ -23,11 +23,13 @@
|
||||
"display_name": "Process Count",
|
||||
"interval": 5,
|
||||
"key": "process_count",
|
||||
"order": null,
|
||||
"script": "ps -ef | wc -l",
|
||||
"timeout": 1
|
||||
}
|
||||
],
|
||||
"motd_file": null,
|
||||
"order": null,
|
||||
"os": "linux",
|
||||
"shutdown_script": null,
|
||||
"shutdown_script_timeout": 300,
|
||||
@@ -37,6 +39,7 @@
|
||||
"troubleshooting_url": null
|
||||
},
|
||||
"sensitive_values": {
|
||||
"display_apps": [],
|
||||
"metadata": [
|
||||
{}
|
||||
]
|
||||
@@ -137,11 +140,13 @@
|
||||
"display_name": "Process Count",
|
||||
"interval": 5,
|
||||
"key": "process_count",
|
||||
"order": null,
|
||||
"script": "ps -ef | wc -l",
|
||||
"timeout": 1
|
||||
}
|
||||
],
|
||||
"motd_file": null,
|
||||
"order": null,
|
||||
"os": "linux",
|
||||
"shutdown_script": null,
|
||||
"shutdown_script_timeout": 300,
|
||||
@@ -151,6 +156,7 @@
|
||||
"troubleshooting_url": null
|
||||
},
|
||||
"after_unknown": {
|
||||
"display_apps": true,
|
||||
"id": true,
|
||||
"init_script": true,
|
||||
"metadata": [
|
||||
@@ -160,6 +166,7 @@
|
||||
},
|
||||
"before_sensitive": false,
|
||||
"after_sensitive": {
|
||||
"display_apps": [],
|
||||
"metadata": [
|
||||
{}
|
||||
],
|
||||
@@ -283,7 +290,7 @@
|
||||
"coder": {
|
||||
"name": "coder",
|
||||
"full_name": "registry.terraform.io/coder/coder",
|
||||
"version_constraint": "0.9.0"
|
||||
"version_constraint": "0.22.0"
|
||||
},
|
||||
"null": {
|
||||
"name": "null",
|
||||
@@ -424,5 +431,6 @@
|
||||
]
|
||||
}
|
||||
],
|
||||
"timestamp": "2023-08-30T19:25:27Z"
|
||||
"timestamp": "2024-05-22T17:03:06Z",
|
||||
"errored": false
|
||||
}
|
||||
|
||||
Generated
Vendored
-1
@@ -20,4 +20,3 @@ digraph {
|
||||
"[root] root" -> "[root] provider[\"registry.terraform.io/hashicorp/null\"] (close)"
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Generated
Vendored
+22
-8
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"format_version": "1.0",
|
||||
"terraform_version": "1.5.5",
|
||||
"terraform_version": "1.7.5",
|
||||
"values": {
|
||||
"root_module": {
|
||||
"resources": [
|
||||
@@ -16,8 +16,17 @@
|
||||
"auth": "token",
|
||||
"connection_timeout": 120,
|
||||
"dir": null,
|
||||
"display_apps": [
|
||||
{
|
||||
"port_forwarding_helper": true,
|
||||
"ssh_helper": true,
|
||||
"vscode": true,
|
||||
"vscode_insiders": false,
|
||||
"web_terminal": true
|
||||
}
|
||||
],
|
||||
"env": null,
|
||||
"id": "4d2791c5-e623-4c79-9c3a-81d70fde0f1d",
|
||||
"id": "8352a117-1250-44ef-bba2-0abdb2a77665",
|
||||
"init_script": "",
|
||||
"login_before_ready": true,
|
||||
"metadata": [
|
||||
@@ -25,21 +34,26 @@
|
||||
"display_name": "Process Count",
|
||||
"interval": 5,
|
||||
"key": "process_count",
|
||||
"order": 0,
|
||||
"script": "ps -ef | wc -l",
|
||||
"timeout": 1
|
||||
}
|
||||
],
|
||||
"motd_file": null,
|
||||
"order": null,
|
||||
"os": "linux",
|
||||
"shutdown_script": null,
|
||||
"shutdown_script_timeout": 300,
|
||||
"startup_script": null,
|
||||
"startup_script_behavior": null,
|
||||
"startup_script_timeout": 300,
|
||||
"token": "b068b430-4ecb-4116-a103-de3aaa1abd3e",
|
||||
"token": "b46fd197-3be4-42f8-9c47-5a9e71a76ef6",
|
||||
"troubleshooting_url": null
|
||||
},
|
||||
"sensitive_values": {
|
||||
"display_apps": [
|
||||
{}
|
||||
],
|
||||
"metadata": [
|
||||
{}
|
||||
],
|
||||
@@ -57,7 +71,7 @@
|
||||
"daily_cost": 29,
|
||||
"hide": true,
|
||||
"icon": "/icon/server.svg",
|
||||
"id": "0a46d060-c676-4324-a016-8dcdc7581d36",
|
||||
"id": "1f7911d4-5b64-4e20-af9b-b6ee2aff602b",
|
||||
"item": [
|
||||
{
|
||||
"is_null": false,
|
||||
@@ -72,7 +86,7 @@
|
||||
"value": ""
|
||||
}
|
||||
],
|
||||
"resource_id": "6477445272839759515"
|
||||
"resource_id": "7229373774865666851"
|
||||
},
|
||||
"sensitive_values": {
|
||||
"item": [
|
||||
@@ -96,7 +110,7 @@
|
||||
"daily_cost": 20,
|
||||
"hide": true,
|
||||
"icon": "/icon/server.svg",
|
||||
"id": "77a107bc-073e-4180-9f7f-0e60fc42b6c2",
|
||||
"id": "34fe7a46-2a2f-4628-8946-ef80a7ffdb5e",
|
||||
"item": [
|
||||
{
|
||||
"is_null": false,
|
||||
@@ -105,7 +119,7 @@
|
||||
"value": "world"
|
||||
}
|
||||
],
|
||||
"resource_id": "6477445272839759515"
|
||||
"resource_id": "7229373774865666851"
|
||||
},
|
||||
"sensitive_values": {
|
||||
"item": [
|
||||
@@ -125,7 +139,7 @@
|
||||
"provider_name": "registry.terraform.io/hashicorp/null",
|
||||
"schema_version": 0,
|
||||
"values": {
|
||||
"id": "6477445272839759515",
|
||||
"id": "7229373774865666851",
|
||||
"triggers": null
|
||||
},
|
||||
"sensitive_values": {},
|
||||
|
||||
@@ -2,7 +2,7 @@ terraform {
|
||||
required_providers {
|
||||
coder = {
|
||||
source = "coder/coder"
|
||||
version = "0.14.1"
|
||||
version = "0.22.0"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
+18
-8
@@ -1,9 +1,19 @@
|
||||
digraph G {
|
||||
rankdir = "RL";
|
||||
node [shape = rect, fontname = "sans-serif"];
|
||||
"coder_agent.main" [label="coder_agent.main"];
|
||||
"coder_metadata.about_info" [label="coder_metadata.about_info"];
|
||||
"null_resource.about" [label="null_resource.about"];
|
||||
"coder_metadata.about_info" -> "null_resource.about";
|
||||
"null_resource.about" -> "coder_agent.main";
|
||||
digraph {
|
||||
compound = "true"
|
||||
newrank = "true"
|
||||
subgraph "root" {
|
||||
"[root] coder_agent.main (expand)" [label = "coder_agent.main", shape = "box"]
|
||||
"[root] coder_metadata.about_info (expand)" [label = "coder_metadata.about_info", shape = "box"]
|
||||
"[root] null_resource.about (expand)" [label = "null_resource.about", shape = "box"]
|
||||
"[root] provider[\"registry.terraform.io/coder/coder\"]" [label = "provider[\"registry.terraform.io/coder/coder\"]", shape = "diamond"]
|
||||
"[root] provider[\"registry.terraform.io/hashicorp/null\"]" [label = "provider[\"registry.terraform.io/hashicorp/null\"]", shape = "diamond"]
|
||||
"[root] coder_agent.main (expand)" -> "[root] provider[\"registry.terraform.io/coder/coder\"]"
|
||||
"[root] coder_metadata.about_info (expand)" -> "[root] null_resource.about (expand)"
|
||||
"[root] null_resource.about (expand)" -> "[root] coder_agent.main (expand)"
|
||||
"[root] null_resource.about (expand)" -> "[root] provider[\"registry.terraform.io/hashicorp/null\"]"
|
||||
"[root] provider[\"registry.terraform.io/coder/coder\"] (close)" -> "[root] coder_metadata.about_info (expand)"
|
||||
"[root] provider[\"registry.terraform.io/hashicorp/null\"] (close)" -> "[root] null_resource.about (expand)"
|
||||
"[root] root" -> "[root] provider[\"registry.terraform.io/coder/coder\"] (close)"
|
||||
"[root] root" -> "[root] provider[\"registry.terraform.io/hashicorp/null\"] (close)"
|
||||
}
|
||||
}
|
||||
|
||||
+5
-3
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"format_version": "1.2",
|
||||
"terraform_version": "1.7.1-dev",
|
||||
"terraform_version": "1.7.5",
|
||||
"planned_values": {
|
||||
"root_module": {
|
||||
"resources": [
|
||||
@@ -29,6 +29,7 @@
|
||||
}
|
||||
],
|
||||
"motd_file": null,
|
||||
"order": null,
|
||||
"os": "linux",
|
||||
"shutdown_script": null,
|
||||
"shutdown_script_timeout": 300,
|
||||
@@ -132,6 +133,7 @@
|
||||
}
|
||||
],
|
||||
"motd_file": null,
|
||||
"order": null,
|
||||
"os": "linux",
|
||||
"shutdown_script": null,
|
||||
"shutdown_script_timeout": 300,
|
||||
@@ -253,7 +255,7 @@
|
||||
"coder": {
|
||||
"name": "coder",
|
||||
"full_name": "registry.terraform.io/coder/coder",
|
||||
"version_constraint": "0.14.1"
|
||||
"version_constraint": "0.22.0"
|
||||
},
|
||||
"null": {
|
||||
"name": "null",
|
||||
@@ -381,6 +383,6 @@
|
||||
]
|
||||
}
|
||||
],
|
||||
"timestamp": "2024-02-08T11:45:52Z",
|
||||
"timestamp": "2024-05-22T17:03:05Z",
|
||||
"errored": false
|
||||
}
|
||||
|
||||
+18
-8
@@ -1,9 +1,19 @@
|
||||
digraph G {
|
||||
rankdir = "RL";
|
||||
node [shape = rect, fontname = "sans-serif"];
|
||||
"coder_agent.main" [label="coder_agent.main"];
|
||||
"coder_metadata.about_info" [label="coder_metadata.about_info"];
|
||||
"null_resource.about" [label="null_resource.about"];
|
||||
"coder_metadata.about_info" -> "null_resource.about";
|
||||
"null_resource.about" -> "coder_agent.main";
|
||||
digraph {
|
||||
compound = "true"
|
||||
newrank = "true"
|
||||
subgraph "root" {
|
||||
"[root] coder_agent.main (expand)" [label = "coder_agent.main", shape = "box"]
|
||||
"[root] coder_metadata.about_info (expand)" [label = "coder_metadata.about_info", shape = "box"]
|
||||
"[root] null_resource.about (expand)" [label = "null_resource.about", shape = "box"]
|
||||
"[root] provider[\"registry.terraform.io/coder/coder\"]" [label = "provider[\"registry.terraform.io/coder/coder\"]", shape = "diamond"]
|
||||
"[root] provider[\"registry.terraform.io/hashicorp/null\"]" [label = "provider[\"registry.terraform.io/hashicorp/null\"]", shape = "diamond"]
|
||||
"[root] coder_agent.main (expand)" -> "[root] provider[\"registry.terraform.io/coder/coder\"]"
|
||||
"[root] coder_metadata.about_info (expand)" -> "[root] null_resource.about (expand)"
|
||||
"[root] null_resource.about (expand)" -> "[root] coder_agent.main (expand)"
|
||||
"[root] null_resource.about (expand)" -> "[root] provider[\"registry.terraform.io/hashicorp/null\"]"
|
||||
"[root] provider[\"registry.terraform.io/coder/coder\"] (close)" -> "[root] coder_metadata.about_info (expand)"
|
||||
"[root] provider[\"registry.terraform.io/hashicorp/null\"] (close)" -> "[root] null_resource.about (expand)"
|
||||
"[root] root" -> "[root] provider[\"registry.terraform.io/coder/coder\"] (close)"
|
||||
"[root] root" -> "[root] provider[\"registry.terraform.io/hashicorp/null\"] (close)"
|
||||
}
|
||||
}
|
||||
|
||||
+7
-6
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"format_version": "1.0",
|
||||
"terraform_version": "1.7.1",
|
||||
"terraform_version": "1.7.5",
|
||||
"values": {
|
||||
"root_module": {
|
||||
"resources": [
|
||||
@@ -26,7 +26,7 @@
|
||||
}
|
||||
],
|
||||
"env": null,
|
||||
"id": "90e2f3da-90d8-4cfd-8cfd-6e9c9da29a37",
|
||||
"id": "847150eb-c3b6-497d-9dad-8e62d478cfff",
|
||||
"init_script": "",
|
||||
"login_before_ready": true,
|
||||
"metadata": [
|
||||
@@ -40,13 +40,14 @@
|
||||
}
|
||||
],
|
||||
"motd_file": null,
|
||||
"order": null,
|
||||
"os": "linux",
|
||||
"shutdown_script": null,
|
||||
"shutdown_script_timeout": 300,
|
||||
"startup_script": null,
|
||||
"startup_script_behavior": null,
|
||||
"startup_script_timeout": 300,
|
||||
"token": "f6f9a6c5-d352-4029-b476-67edfe802806",
|
||||
"token": "a0c4f2f5-cc40-4731-9028-636033229c9c",
|
||||
"troubleshooting_url": null
|
||||
},
|
||||
"sensitive_values": {
|
||||
@@ -70,7 +71,7 @@
|
||||
"daily_cost": 29,
|
||||
"hide": true,
|
||||
"icon": "/icon/server.svg",
|
||||
"id": "a485c7b2-2b6c-42ab-b6d5-f51b681a5a41",
|
||||
"id": "3feec3a3-6f9e-4cfb-b122-2273e345def0",
|
||||
"item": [
|
||||
{
|
||||
"is_null": false,
|
||||
@@ -97,7 +98,7 @@
|
||||
"value": "squirrel"
|
||||
}
|
||||
],
|
||||
"resource_id": "5837178340504502573"
|
||||
"resource_id": "160324296641913729"
|
||||
},
|
||||
"sensitive_values": {
|
||||
"item": [
|
||||
@@ -120,7 +121,7 @@
|
||||
"provider_name": "registry.terraform.io/hashicorp/null",
|
||||
"schema_version": 0,
|
||||
"values": {
|
||||
"id": "5837178340504502573",
|
||||
"id": "160324296641913729",
|
||||
"triggers": null
|
||||
},
|
||||
"sensitive_values": {},
|
||||
|
||||
+1
-1
@@ -2,7 +2,7 @@ terraform {
|
||||
required_providers {
|
||||
coder = {
|
||||
source = "coder/coder"
|
||||
version = "0.9.0"
|
||||
version = "0.22.0"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Generated
Vendored
-1
@@ -21,4 +21,3 @@ digraph {
|
||||
"[root] root" -> "[root] provider[\"registry.terraform.io/hashicorp/null\"] (close)"
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Generated
Vendored
+14
-10
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"format_version": "1.2",
|
||||
"terraform_version": "1.5.5",
|
||||
"terraform_version": "1.7.5",
|
||||
"planned_values": {
|
||||
"root_module": {
|
||||
"resources": [
|
||||
@@ -20,6 +20,7 @@
|
||||
"login_before_ready": true,
|
||||
"metadata": [],
|
||||
"motd_file": null,
|
||||
"order": null,
|
||||
"os": "windows",
|
||||
"shutdown_script": null,
|
||||
"shutdown_script_timeout": 300,
|
||||
@@ -29,6 +30,7 @@
|
||||
"troubleshooting_url": null
|
||||
},
|
||||
"sensitive_values": {
|
||||
"display_apps": [],
|
||||
"metadata": []
|
||||
}
|
||||
},
|
||||
@@ -68,6 +70,7 @@
|
||||
"login_before_ready": true,
|
||||
"metadata": [],
|
||||
"motd_file": null,
|
||||
"order": null,
|
||||
"os": "windows",
|
||||
"shutdown_script": null,
|
||||
"shutdown_script_timeout": 300,
|
||||
@@ -77,6 +80,7 @@
|
||||
"troubleshooting_url": null
|
||||
},
|
||||
"after_unknown": {
|
||||
"display_apps": true,
|
||||
"id": true,
|
||||
"init_script": true,
|
||||
"metadata": [],
|
||||
@@ -84,6 +88,7 @@
|
||||
},
|
||||
"before_sensitive": false,
|
||||
"after_sensitive": {
|
||||
"display_apps": [],
|
||||
"metadata": [],
|
||||
"token": true
|
||||
}
|
||||
@@ -113,7 +118,7 @@
|
||||
],
|
||||
"prior_state": {
|
||||
"format_version": "1.0",
|
||||
"terraform_version": "1.5.5",
|
||||
"terraform_version": "1.7.5",
|
||||
"values": {
|
||||
"root_module": {
|
||||
"resources": [
|
||||
@@ -128,10 +133,9 @@
|
||||
"default": null,
|
||||
"description": null,
|
||||
"display_name": null,
|
||||
"ephemeral": false,
|
||||
"icon": null,
|
||||
"id": "245304bd-d7c0-4dc0-b4b2-90a036245af0",
|
||||
"legacy_variable": null,
|
||||
"legacy_variable_name": null,
|
||||
"id": "7fb346d2-b8c2-4f2a-99d1-a8fd54cc479e",
|
||||
"mutable": false,
|
||||
"name": "Example",
|
||||
"option": null,
|
||||
@@ -156,10 +160,9 @@
|
||||
"default": "ok",
|
||||
"description": "blah blah",
|
||||
"display_name": null,
|
||||
"ephemeral": false,
|
||||
"icon": null,
|
||||
"id": "bccaddc6-97f1-48aa-a1c0-3438cc96139d",
|
||||
"legacy_variable": null,
|
||||
"legacy_variable_name": null,
|
||||
"id": "0581cc2a-9e6d-4f04-93a6-88fcbd0757f0",
|
||||
"mutable": false,
|
||||
"name": "Sample",
|
||||
"option": null,
|
||||
@@ -182,7 +185,7 @@
|
||||
"coder": {
|
||||
"name": "coder",
|
||||
"full_name": "registry.terraform.io/coder/coder",
|
||||
"version_constraint": "0.9.0"
|
||||
"version_constraint": "0.22.0"
|
||||
},
|
||||
"null": {
|
||||
"name": "null",
|
||||
@@ -265,5 +268,6 @@
|
||||
]
|
||||
}
|
||||
},
|
||||
"timestamp": "2023-08-30T19:25:32Z"
|
||||
"timestamp": "2024-05-22T17:03:11Z",
|
||||
"errored": false
|
||||
}
|
||||
|
||||
Generated
Vendored
-1
@@ -21,4 +21,3 @@ digraph {
|
||||
"[root] root" -> "[root] provider[\"registry.terraform.io/hashicorp/null\"] (close)"
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user