Git Product home page Git Product logo

terraform-provider-spinnaker's Introduction

Terraform logo

Terraform Provider for Spinnaker

Test

The Terraform Spinnaker provider is a plugin for Terraform that allows for the full lifecycle management of Spinnaker resources.
This provider is maintained internally by @KeisukeYamashita and it was originally forked from armory-io/terraform-provider-spinnaker.

Roadmap

Our roadmap for expanding support in Terraform for Spinnaker resources can be found in our Roadmap.

Frequently Asked Questions

Responses to our most frequently asked questions can be found in our FAQ

Contributing

We appreciate your help! To contribute, please read the contribution guidelines: Contributing to Terraform - Spinnaker Provider

terraform-provider-spinnaker's People

Contributors

ameng avatar andrein avatar awsiv avatar charlieegan3 avatar davewongillies avatar dependabot[bot] avatar dmyerscough avatar e96wic avatar ethanfrogers avatar isakgicu avatar joshuarowe-salesforce avatar keisukeyamashita avatar nevins-b avatar nevins-jask avatar nilium avatar parondeau avatar thiago-scherrer avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

terraform-provider-spinnaker's Issues

Initialize the gate client on CRUD

WHAT

As title. Lazy client initialize.

WHY

In initial Armory's Spinnaker Terraform Provider implementation, it depends on the spinnaker/spin.

If the tfstate has Spinnaker resource, on terraform plan, terraform will initialize the gateclient. However, on the initialize, the spin will try to access the the Spinnaker API.

If the provider can't access the Spinnaker API on terraform init that is okay.
We should avoid the CI to fail when we change the lab Spinnaker authn method.

Suppress diff on the runAsUser key if using managed service accounts

WHAT

We would like terraform to ignore changes to the runAsUser key if you're using managed service accounts.

WHY

If you're utilizing pipeline permissions to create managed service accounts after pipeline creation, terraform will show runAsUser as changed even if the pipeline JSON file hasn't changed.

# spinnaker_pipeline.epic_react_ui_apply_pipelines["example-ui"] will be updated in-place
  ~ resource "spinnaker_pipeline" "example-ui_apply_pipelines" {
        id          = "d792fda1-e868-4684-803e-c0f968cba65a"
        name        = "example-ui APPLY"
      ~ pipeline    = jsonencode(
          ~ {
              ~ triggers                 = [
                  ~ {
                      - runAsUser    = "d792fda1-e868-4684-803e-c0f968cba65a@managed-service-account" -> null
                        # (6 unchanged elements hidden)
                    },
                ]
                # (8 unchanged elements hidden)
            }
        )
        # (2 unchanged attributes hidden)
    }

gate_endpoint and GATE_ENDPOINT doesn't work

WHAT

Providing gate_endpoint variable int he provider block or export GATE_ENDPOINT=https://gate_url doesn't work. It doesn't work with server variable in the provider block either. The only way it works is export GATE_URL=https://gate_url.

WHY

Using version 0.3.0

Migrate dependabot v1 to v2

WHAT

Currently, we are using dependabot v1. We want to migrate to v2.

WHY

Because v2 has nice native GitHub integration. It will improve our dependency management.

Terraform crashes when updating a spinnaker_project in-place. Destroying a project fails with Error: 500

WHAT

crash.log

Creating a spinnaker_project with terraform-provider-spinnaker is working, but managing that project afterwards is failing.

When trying to update a project in-place, terraform crashes:

Terraform will perform the following actions:

  # spinnaker_project.projects["corporate"] will be updated in-place
  ~ resource "spinnaker_project" "projects" {
      ~ email = "[email protected]" -> "[email protected]"
        id    = "corporate"
        name  = "corporate"
    }

  # spinnaker_project.projects["customercare"] will be updated in-place
  ~ resource "spinnaker_project" "projects" {
      ~ email = "[email protected]" -> "[email protected]"
        id    = "customercare"
        name  = "customercare"
    }

Plan: 0 to add, 2 to change, 0 to destroy.

----------------------------------------

spinnaker_project.projects["customercare"]: Modifying... [id=customercare]
spinnaker_project.projects["corporate"]: Modifying... [id=corporate]

Error: rpc error: code = Unavailable desc = transport is closing

Error: rpc error: code = Unavailable desc = transport is closing

panic: interface conversion: interface {} is nil, not int
2021-03-11T13:51:23.041Z [DEBUG] plugin.terraform-provider-spinnaker_v0.3.0: 
2021-03-11T13:51:23.041Z [DEBUG] plugin.terraform-provider-spinnaker_v0.3.0: goroutine 58 [running]:
2021-03-11T13:51:23.041Z [DEBUG] plugin.terraform-provider-spinnaker_v0.3.0: github.com/mercari/terraform-provider-spinnaker/spinnaker/api.NewCreateApplicationTask(0xc000654c80, 0x49fa6b, 0xf9dfa0, 0xc0006fb100)
2021-03-11T13:51:23.041Z [DEBUG] plugin.terraform-provider-spinnaker_v0.3.0:    github.com/mercari/terraform-provider-spinnaker/spinnaker/api/application.go:53 +0x11a5
2021-03-11T13:51:23.042Z [DEBUG] plugin.terraform-provider-spinnaker_v0.3.0: github.com/mercari/terraform-provider-spinnaker/spinnaker.resourceSpinnakerProjectUpdate(0xf9e020, 0xc000659020, 0xc000654c80, 0xd9ae20, 0xc00018e070, 0xc000397bd0, 0xacc86a, 0xc000331100)
2021-03-11T13:51:23.042Z [DEBUG] plugin.terraform-provider-spinnaker_v0.3.0:    github.com/mercari/terraform-provider-spinnaker/spinnaker/resource_project.go:128 +0x45
2021-03-11T13:51:23.042Z [DEBUG] plugin.terraform-provider-spinnaker_v0.3.0: github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema.(*Resource).update(0xc000181380, 0xf9dfa0, 0xc0006fb100, 0xc000654c80, 0xd9ae20, 0xc00018e070, 0x0, 0x0, 0x0)
2021-03-11T13:51:23.042Z [DEBUG] plugin.terraform-provider-spinnaker_v0.3.0:    github.com/hashicorp/terraform-plugin-sdk/[email protected]/helper/schema/resource.go:309 +0x1ea
2021-03-11T13:51:23.042Z [DEBUG] plugin.terraform-provider-spinnaker_v0.3.0: github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema.(*Resource).Apply(0xc000181380, 0xf9dfa0, 0xc0006fb100, 0xc0000b1570, 0xc000331100, 0xd9ae20, 0xc00018e070, 0x0, 0x0, 0x0, ...)
2021-03-11T13:51:23.042Z [DEBUG] plugin.terraform-provider-spinnaker_v0.3.0:    github.com/hashicorp/terraform-plugin-sdk/[email protected]/helper/schema/resource.go:404 +0x390
2021-03-11T13:51:23.042Z [DEBUG] plugin.terraform-provider-spinnaker_v0.3.0: github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema.(*GRPCProviderServer).ApplyResourceChange(0xc00029eda0, 0xf9dfa0, 0xc0006fb100, 0xc000666410, 0xc0006fb100, 0x0, 0xfa8f40)
2021-03-11T13:51:23.042Z [DEBUG] plugin.terraform-provider-spinnaker_v0.3.0:    github.com/hashicorp/terraform-plugin-sdk/[email protected]/helper/schema/grpc_provider.go:955 +0x8cf
2021-03-11T13:51:23.042Z [DEBUG] plugin.terraform-provider-spinnaker_v0.3.0: github.com/hashicorp/terraform-plugin-go/tfprotov5/server.(*server).ApplyResourceChange(0xc000653e00, 0xf9dfa0, 0xc0006fb100, 0xc0000b13b0, 0xc000653e00, 0xc00065eea0, 0xc0004dbba0)
2021-03-11T13:51:23.042Z [DEBUG] plugin.terraform-provider-spinnaker_v0.3.0:    github.com/hashicorp/[email protected]/tfprotov5/server/server.go:331 +0xae
2021-03-11T13:51:23.042Z [DEBUG] plugin.terraform-provider-spinnaker_v0.3.0: github.com/hashicorp/terraform-plugin-go/tfprotov5/internal/tfplugin5._Provider_ApplyResourceChange_Handler(0xe37fe0, 0xc000653e00, 0xf9e060, 0xc00065eea0, 0xc000658480, 0x0, 0xf9e060, 0xc00065eea0, 0xc0006b0d20, 0xef)
2021-03-11T13:51:23.042Z [DEBUG] plugin.terraform-provider-spinnaker_v0.3.0:    github.com/hashicorp/[email protected]/tfprotov5/internal/tfplugin5/tfplugin5_grpc.pb.go:380 +0x214
2021-03-11T13:51:23.042Z [DEBUG] plugin.terraform-provider-spinnaker_v0.3.0: google.golang.org/grpc.(*Server).processUnaryRPC(0xc0001fea80, 0xfa6dc0, 0xc0004ee600, 0xc00046cf00, 0xc000080c00, 0x146c8a0, 0x0, 0x0, 0x0)
2021-03-11T13:51:23.042Z [DEBUG] plugin.terraform-provider-spinnaker_v0.3.0:    google.golang.org/[email protected]/server.go:1210 +0x522
2021-03-11T13:51:23.042Z [DEBUG] plugin.terraform-provider-spinnaker_v0.3.0: google.golang.org/grpc.(*Server).handleStream(0xc0001fea80, 0xfa6dc0, 0xc0004ee600, 0xc00046cf00, 0x0)
2021-03-11T13:51:23.042Z [DEBUG] plugin.terraform-provider-spinnaker_v0.3.0:    google.golang.org/[email protected]/server.go:1533 +0xd05
2021-03-11T13:51:23.042Z [DEBUG] plugin.terraform-provider-spinnaker_v0.3.0: google.golang.org/grpc.(*Server).serveStreams.func1.2(0xc000036050, 0xc0001fea80, 0xfa6dc0, 0xc0004ee600, 0xc00046cf00)
2021-03-11T13:51:23.042Z [DEBUG] plugin.terraform-provider-spinnaker_v0.3.0:    google.golang.org/[email protected]/server.go:871 +0xa5
2021-03-11T13:51:23.042Z [DEBUG] plugin.terraform-provider-spinnaker_v0.3.0: created by google.golang.org/grpc.(*Server).serveStreams.func1
2021-03-11T13:51:23.042Z [DEBUG] plugin.terraform-provider-spinnaker_v0.3.0:    google.golang.org/[email protected]/server.go:869 +0x1fd
2021/03/11 13:51:23 [DEBUG] spinnaker_project.projects["corporate"]: apply errored, but we're indicating that via the Error pointer rather than returning it: rpc error: code = Unavailable desc = transport is closing
2021/03/11 13:51:23 [TRACE] EvalWriteState: recording 0 dependencies for spinnaker_project.projects["corporate"]
2021/03/11 13:51:23 [TRACE] EvalWriteState: writing current state object for spinnaker_project.projects["corporate"]
2021-03-11T13:51:23.045Z [WARN]  plugin.stdio: received EOF, stopping recv loop: err="rpc error: code = Unavailable desc = transport is closing"
2021/03/11 13:51:23 [TRACE] EvalApplyProvisioners: spinnaker_project.projects["corporate"] is not freshly-created, so no provisioning is required
2021/03/11 13:51:23 [TRACE] EvalWriteState: recording 0 dependencies for spinnaker_project.projects["corporate"]
2021/03/11 13:51:23 [TRACE] EvalWriteState: writing current state object for spinnaker_project.projects["corporate"]
2021/03/11 13:51:23 [TRACE] vertex "spinnaker_project.projects[\"corporate\"]": visit complete
2021/03/11 13:51:23 [DEBUG] spinnaker_project.projects["customercare"]: apply errored, but we're indicating that via the Error pointer rather than returning it: rpc error: code = Unavailable desc = transport is closing
2021/03/11 13:51:23 [TRACE] EvalWriteState: recording 0 dependencies for spinnaker_project.projects["customercare"]
2021/03/11 13:51:23 [TRACE] EvalWriteState: writing current state object for spinnaker_project.projects["customercare"]
2021/03/11 13:51:23 [TRACE] EvalApplyProvisioners: spinnaker_project.projects["customercare"] is not freshly-created, so no provisioning is required
2021/03/11 13:51:23 [TRACE] EvalWriteState: recording 0 dependencies for spinnaker_project.projects["customercare"]
2021/03/11 13:51:23 [TRACE] EvalWriteState: writing current state object for spinnaker_project.projects["customercare"]
2021/03/11 13:51:23 [TRACE] vertex "spinnaker_project.projects[\"customercare\"]": visit complete
2021/03/11 13:51:23 [TRACE] dag/walk: upstream of "meta.count-boundary (EachMode fixup)" errored, so skipping
2021/03/11 13:51:23 [TRACE] dag/walk: upstream of "provider[\"registry.terraform.io/mercari/spinnaker\"] (close)" errored, so skipping
2021/03/11 13:51:23 [TRACE] dag/walk: upstream of "root" errored, so skipping
2021-03-11T13:51:23.048Z [DEBUG] plugin: plugin process exited: path=.terraform/providers/registry.terraform.io/mercari/spinnaker/0.3.0/linux_amd64/terraform-provider-spinnaker_v0.3.0 pid=953 error="exit status 2"
2021/03/11 13:51:23 [TRACE] statemgr.Filesystem: creating backup snapshot at terraform.tfstate.backup
2021/03/11 13:51:23 [TRACE] statemgr.Filesystem: state has changed since last snapshot, so incrementing serial to 52
2021/03/11 13:51:23 [TRACE] statemgr.Filesystem: writing snapshot at terraform.tfstate
2021/03/11 13:51:23 [TRACE] statemgr.Filesystem: removing lock metadata file .terraform.tfstate.lock.info
2021/03/11 13:51:23 [TRACE] statemgr.Filesystem: unlocking terraform.tfstate using fcntl flock
2021-03-11T13:51:23.078Z [DEBUG] plugin: plugin exited



!!!!!!!!!!!!!!!!!!!!!!!!!!! TERRAFORM CRASH !!!!!!!!!!!!!!!!!!!!!!!!!!!!

Terraform crashed! This is always indicative of a bug within Terraform.
A crash log has been placed at "crash.log" relative to your current
working directory. It would be immensely helpful if you could please
report the crash with Terraform[1] so that we can fix this.

When reporting bugs, please include your terraform version. That
information is available on the first line of crash.log. You can also
get it by running 'terraform --version' on the command line.

SECURITY WARNING: the "crash.log" file that was created may contain 
sensitive information that must be redacted before it is safe to share 
on the issue tracker.

[1]: https://github.com/hashicorp/terraform/issues

!!!!!!!!!!!!!!!!!!!!!!!!!!! TERRAFORM CRASH !!!!!!!!!!!!!!!!!!!!!!!!!!!!

Also, destroying a project fails with Error: 500:

Terraform will perform the following actions:

  # spinnaker_project.projects["corporate"] will be destroyed
  - resource "spinnaker_project" "projects" {
      - email = "[email protected]" -> null
      - id    = "corporate" -> null
      - name  = "corporate" -> null
    }

  # spinnaker_project.projects["customercare"] will be destroyed
  - resource "spinnaker_project" "projects" {
      - email = "[email protected]" -> null
      - id    = "customercare" -> null
      - name  = "customercare" -> null
    }

Plan: 0 to add, 0 to change, 2 to destroy.

-----------------------------------------

spinnaker_project.projects["customercare"]: Destroying... [id=customercare]
spinnaker_project.projects["corporate"]: Destroying... [id=corporate]

Error: 500 

Error: 500 

WHY

We discovered this issue after trying to update a project with new applications after it was created. Without projects, we find that it's difficult to discern which applications belong to a particular development squad in the UI.

This is an example of the relevant code being used when we encountered this issue:

# customercare.tf
locals {
  project = {
    customercare : {
      email        = local.email
      applications = keys(local.applications)
    }
  }
}

# corporate.tf
locals {
  project = {
    corporate : {
      email        = local.email
      applications = keys(local.applications)
    }
  }
}

# main.tf
locals {
  corporate_project = module.corporate.project
  customercare_project = module.customercare.project

  all_projects = merge(
    local.corporate_project,
    local.customercare_project,
  )
}

resource "spinnaker_project" "projects" {
  for_each = tomap(local.all_projects)

  name = each.key
  email = each.value.email
  config {
    applications = each.value.applications
  }
}

Update Go version to the latest version

WHAT

Currently, we use 1.13 version of Go. We can upgrade to the latest version.

WHY

Better to maintain. Since Go1 compatibility, there are no breaking changes.

Add automate generated CHANGELOG

WHAT

Introduce git-chglog/git-chglog to this repo.

WHY

Currently, CHANGELOG.md is maintained manually.
This approach is adopted in some other Hashicorp's Terraform provider too.

But since there is only one maintainer, I want to reduce the toil.

Addressing go vet errors

Hello

running make vet on the current code yields:

go vet .
# github.com/mercari/terraform-provider-spinnaker/spinnaker
spinnaker/resource_canary_config.go:66:2: struct field id has json tag but is not exported
spinnaker/resource_canary_config.go:67:2: struct field name has json tag but is not exported
spinnaker/resource_canary_config.go:68:2: struct field description has json tag but is not exported
spinnaker/resource_canary_config.go:69:2: struct field configVersion has json tag but is not exported
spinnaker/resource_canary_config.go:70:2: struct field applications has json tag but is not exported
spinnaker/resource_canary_config.go:71:2: struct field judge has json tag but is not exported
spinnaker/resource_canary_config.go:72:2: struct field metrics has json tag but is not exported
spinnaker/resource_canary_config.go:73:2: struct field templates has json tag but is not exported
spinnaker/resource_canary_config.go:74:2: struct field classifier has json tag but is not exported
spinnaker/resource_canary_config.go:78:2: struct field name has json tag but is not exported
spinnaker/resource_canary_config.go:79:2: struct field judgeConfigurations has json tag but is not exported
spinnaker/resource_canary_config.go:93:2: struct field groupWeights has json tag but is not exported

but when looking closer at the code, it seems that those tags aren't really used anywhere since the data passed to or from the Spinnaker API is conveyed within a type interface{}:

And when looking at the rest of the code it's similar: data are exchanged either through a type interface{} or []interface{} or map[string]interface{} which means that in all cases the tags information is lost since it only applies to a struct.
Those tags only express some minor case adjustements, but AFAIU all the named structs defined by that package are not intended to be exported anyway, so all those fields could be simply renamed in lowercase.
The actual translation from an interface{} or similar to a named type is realised by calls to mapstructure.Decode which performs a case-insensitive mapping, that's why this all works even if the json tags are ignored.

terraform crash

WHAT

My terraform execution with this provider failed with the following message. I'm trying to debug this issue, and was wondering if the maintainers have some insights.

Terraform version

Terraform v0.14.6
+ provider registry.terraform.io/mercari/spinnaker v0.3.0

Crash details

!!!!!!!!!!!!!!!!!!!!!!!!!!! TERRAFORM CRASH !!!!!!!!!!!!!!!!!!!!!!!!!!!!

Terraform crashed! This is always indicative of a bug within Terraform.
A crash log has been placed at "crash.log" relative to your current
working directory. It would be immensely helpful if you could please
report the crash with Terraform[1] so that we can fix this.

When reporting bugs, please include your terraform version. That
information is available on the first line of crash.log. You can also
get it by running 'terraform --version' on the command line.

SECURITY WARNING: the "crash.log" file that was created may contain 
sensitive information that must be redacted before it is safe to share 
on the issue tracker.

[1]: https://github.com/hashicorp/terraform/issues

!!!!!!!!!!!!!!!!!!!!!!!!!!! TERRAFORM CRASH !!!!!!!!!!!!!!!!!!!!!!!!!!!!

Please refer to my crash.log for more information.

WHY

Introduce acceptance test in the CI

WHAT

Currently, I ran the acceptance test in my local enviroment.
We want to run it too in the CI step.

WHY

Better reliability on the source codes.

Undeprecate spinnaker_pipeline resource/datasource

WHAT

Add test coverage and undeprecate spinnaker_pipeline resource and datasource. Willing to step up and maintain them for the foreseeable future.

WHY

From my understanding, the plan is to replace it with a more HCL-friendly resource. When/if the new resource type is implemented, there will still be a lot of code using the current resource with no straightforward migration path.

We're currently experiencing the migration pain from the other point of view: our workflow currently uses jgramoll/terraform-provider-spinnaker which does provide a HCL-friendly interface, but we're switching to sponnet + terraform-provider-jsonnet + mercari/terraform-provider-spinnaker to render our pipelines because the other provider is very slow and isn't as flexible as sponnet. There's also #71, which we will need to implement in order to migrate our pipelines, but I'd like to hear your thoughts/feedback before I start.

Bug when pipeline is deleted in UI: "Error: NoSuchEntityException"

When I run terraform:

$ terraform apply
module.locust_pipeline.null_resource.render_pipeline: Refreshing state... [id=4622595260021803334]
module.locust_pipeline.spinnaker_pipeline.locust: Refreshing state... [id=110bac63-4bc2-4de6-86a2-067c0d156960]
spinnaker_pipeline.load_test["dms"]: Refreshing state... [id=230a5a70-290e-4e28-8f12-acf5969b116f]
spinnaker_pipeline.load_test["mas"]: Refreshing state... [id=0fd3373e-29d7-4a57-86e8-4b9f92eb6ca9]
spinnaker_pipeline.load_test["dps"]: Refreshing state... [id=380d199b-3425-4d26-8771-98856a6ad15b]
...
spinnaker_pipeline.load_test["opa-oma-cs"]: Refreshing state... [id=863e7992-e58e-49e6-a7f8-c45c20083c1f]

Error: NoSuchEntityException

Any idea how to fix this? Normally terraform would just recreate the resource.

To fix this you need to remove the pipeline from the state: terraform state rm module.locust_pipeline.spinnaker_pipeline.locust

Error: resource spinnaker_pipeline doesn't support import

WHAT

I need to import spinnaker pipelines into my terraform remote state

WHY

I have existing pipelines that I don't want to recreate. When I try with this command:

terraform import spinnaker_pipeline.pipeline my_app.pipeline

I get the following error:

Error: resource spinnaker_pipeline doesn't support import

Fix wrong zip compress format for Terraform registry

WHAT

As title.

How to reproduce

Make sure that you have Terraform version upper than 0.13.0.

$ terraform version
Terraform v0.13.1

And then write a provider block.

terraform {
  required_providers {
    miro = {
      source = "mercari/spinnaker"
    }
  }
}

provider "spinnaker" {
  gate_endpoint = "https://spinnaker.nokisai.com"
}

Run below.

$ terraform init
Initializing the backend...

Initializing provider plugins...
- Finding latest version of mercari/spinnaker...
- Finding latest version of hashicorp/spinnaker...
- Installing mercari/spinnaker v0.2.3...


Error: Failed to install provider

Error while installing mercari/spinnaker v0.2.3: zip: not a valid zip file


Error: Failed to install provider

Error while installing hashicorp/spinnaker: provider registry
registry.terraform.io does not have a provider named
registry.terraform.io/hashicorp/spinnaker

WHY

The pull tgz format from the Terraform Registry is not currect, and not runnable.

Semver release

WHAT

Currently, our release doesn't have v prefix.

WHY

We should follow Semver that Terraform registry requires.

Plugin is crashing on apply

WHAT

I want to create an application using the provider but I am getting a plugin crash error

WHY

terraform {
required_providers {
spinnaker = {
source = "mercari/spinnaker"
version = "0.3.0"
}
}
}

provider "spinnaker" {
gate_endpoint = "XXX"
default_headers = "XXX"
ignore_cert_errors = true
}

resource "spinnaker_application" "my_app" {
name = "terraform-app"
email = "XXX"
}

spinnaker_application.my_app: Creating...

│ Error: Plugin did not respond

│ with spinnaker_application.my_app,
│ on provider.tf line 16, in resource "spinnaker_application" "my_app":
│ 16: resource "spinnaker_application" "my_app" {

│ The plugin encountered an error, and failed to respond to the plugin.(*GRPCProvider).ApplyResourceChange call. The plugin logs may contain more details.

Stack trace from the terraform-provider-spinnaker_v0.3.0 plugin:

panic: interface conversion: interface {} is nil, not string

goroutine 84 [running]:
github.com/mercari/terraform-provider-spinnaker/spinnaker/api.CreateApplication(0xc0003a83f0, 0xc00076b050, 0x0, 0x0)
github.com/mercari/terraform-provider-spinnaker/spinnaker/api/application.go:145 +0x547
github.com/mercari/terraform-provider-spinnaker/spinnaker.resourceSpinnakerApplicationCreate(0xf9e020, 0xc00076c240, 0xc000822200, 0xd9ae20, 0xc0003a83f0, 0xc000768b20, 0xacc86a, 0xc000691fe0)
github.com/mercari/terraform-provider-spinnaker/spinnaker/resource_application.go:105 +0x10d
github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema.(*Resource).create(0xc000318780, 0xf9dfa0, 0xc0005169c0, 0xc000822200, 0xd9ae20, 0xc0003a83f0, 0x0, 0x0, 0x0)
github.com/hashicorp/terraform-plugin-sdk/[email protected]/helper/schema/resource.go:285 +0x1ea
github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema.(*Resource).Apply(0xc000318780, 0xf9dfa0, 0xc0005169c0, 0xc0003b4310, 0xc000691fe0, 0xd9ae20, 0xc0003a83f0, 0x0, 0x0, 0x0, ...)
github.com/hashicorp/terraform-plugin-sdk/[email protected]/helper/schema/resource.go:396 +0x65b
github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema.(*GRPCProviderServer).ApplyResourceChange(0xc000121780, 0xf9dfa0, 0xc0005169c0, 0xc000764820, 0xc0005169c0, 0x0, 0xfa8f40)
github.com/hashicorp/terraform-plugin-sdk/[email protected]/helper/schema/grpc_provider.go:955 +0x8cf
github.com/hashicorp/terraform-plugin-go/tfprotov5/server.(*server).ApplyResourceChange(0xc00041b920, 0xf9dfa0, 0xc0005169c0, 0xc0003b4070, 0xc00041b920, 0xc00035eab0, 0xc0007feba0)
github.com/hashicorp/[email protected]/tfprotov5/server/server.go:331 +0xae
github.com/hashicorp/terraform-plugin-go/tfprotov5/internal/tfplugin5._Provider_ApplyResourceChange_Handler(0xe37fe0, 0xc00041b920, 0xf9e060, 0xc00035eab0, 0xc000681c20, 0x0, 0xf9e060, 0xc00035eab0, 0xc000396a00, 0x137)
github.com/hashicorp/[email protected]/tfprotov5/internal/tfplugin5/tfplugin5_grpc.pb.go:380 +0x214
google.golang.org/grpc.(*Server).processUnaryRPC(0xc0001f2700, 0xfa6dc0, 0xc000001e00, 0xc000370500, 0xc0003f2ba0, 0x146c8a0, 0x0, 0x0, 0x0)
google.golang.org/[email protected]/server.go:1210 +0x522
google.golang.org/grpc.(*Server).handleStream(0xc0001f2700, 0xfa6dc0, 0xc000001e00, 0xc000370500, 0x0)
google.golang.org/[email protected]/server.go:1533 +0xd05
google.golang.org/grpc.(*Server).serveStreams.func1.2(0xc000290190, 0xc0001f2700, 0xfa6dc0, 0xc000001e00, 0xc000370500)
google.golang.org/[email protected]/server.go:871 +0xa5
created by google.golang.org/grpc.(*Server).serveStreams.func1
google.golang.org/[email protected]/server.go:869 +0x1fd

Error: The terraform-provider-spinnaker_v0.3.0 plugin crashed!

This is always indicative of a bug within the plugin. It would be immensely
helpful if you could report the crash with the plugin's maintainers so that it
can be fixed. The output above should help diagnose the issue.

Add canary configuration resource/data source

WHAT

We want to create a resource/data source that managed the canary configuration.

WHY

This is also created manually in most organization and we want to declaratively manage this config.

Add test coverage

WHAT

We currently have no test coverage.
This was first suggested here #93 and I agree to add it.

We will add codecov report and status badges to the README.md

WHY

To maintain the project.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.