Git Product home page Git Product logo

pulumi-datadog's Introduction

Actions Status Slack NPM version Python version NuGet version PkgGoDev License

Datadog Provider

The Datadog resource provider for Pulumi lets you configure Datadog resources in your cloud programs. To use this package, please install the Pulumi CLI first.

Installing

This package is available in many languages in the standard packaging formats.

Node.js (Java/TypeScript)

To use from JavaScript or TypeScript in Node.js, install using either npm:

$ npm install @pulumi/datadog

or yarn:

$ yarn add @pulumi/datadog

Python

To use from Python, install using pip:

$ pip install pulumi_datadog

Go

To use from Go, use go get to grab the latest version of the library

$ go get github.com/pulumi/pulumi-datadog/sdk/v4

.NET

To use from .NET, install using dotnet add package:

$ dotnet add package Pulumi.Datadog

Configuration

The following configuration points are available:

  • apiKey (Required) - Datadog API key. This can also be set via the DATADOG_API_KEY environment variable.
  • appKey (Required) - Datadog APP key. This can also be set via the DATADOG_APP_KEY environment variable.
  • apiUrl (Optional) - The API Url. This can be also be set via the DATADOG_HOST environment variable. Note that this URL must not end with the /api/ path. For example, https://api.datadoghq.com/ is a correct value, while https://api.datadoghq.com/api/ is not.

Reference

For further information, please visit the Datadog provider docs or for detailed reference documentation, please visit the API docs.

pulumi-datadog's People

Contributors

aaronfriel avatar aq17 avatar cyrusnajmabadi avatar dependabot[bot] avatar ellismg avatar guineveresaenger avatar iwahbe avatar jaxxstorm avatar jen20 avatar jkisk avatar jkodroff avatar kennyjwilli avatar mikhailshilkov avatar mjeffryes avatar pgavlin avatar praneetloke avatar pulumi-bot avatar stack72 avatar t0yv0 avatar thomas11 avatar venelinmartinov avatar

Stargazers

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

Watchers

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

pulumi-datadog's Issues

Future support for creating Synthetic Browser test steps

Hi,

We're doing some work with Synthetics Browser tests at the moment, and noticed the following note in the documentation:

Some steps types (like steps involving elements) cannot be created, but they can be imported

Is there any plan to provide the ability for creating steps that require elements in the future? We're currently managing our Browser synthetics outside of code, so we're keen to understand if this is on the roadmap.

Cheers,
Matt

Prepare for release

Tracking items for release:

  • Depend on the most recent release of the upstream Terraform provider and have mapped all data sources and resources which make sense.
  • Have the various configuration options for the provider listed in the README file such that package consumers can easily find them.
  • Have documentation ready to publish (in the pulumi/docs repo)
  • Have at least one example running in CI against the provider
  • Tag a version and ensure it's published as latest

`make ensure` does not work

make ensure should invoke whichever go mod incantations are necessary to ensure that dependencies are available.

Non-recursive types for Group definition may be unhelpful

Consider this example from dashboard.md:

  widget {
    group_definition {
      layout_type = "ordered"
      title       = "Group Widget"

      widget {
        note_definition {
          content          = "cluster note widget"
          background_color = "pink"
          font_size        = "14"
          text_align       = "center"
          show_tick        = true
          tick_edge        = "left"
          tick_pos         = "50%"
        }
      }

      widget {
        alert_graph_definition {
          alert_id  = "123"
          viz_type  = "toplist"
          title     = "Alert Graph"
          live_span = "1h"
        }
      }
    }
  }

Expected behavior

Expect to group any kind of widget into a group_definition.

Current behavior

Generated types for the widget nested under the group_definition are different and cannot be used in a group_definition.

package datadog

import (
	"github.com/pulumi/pulumi/sdk/v3/go/pulumi"
)

func pinkNote() DashboardWidgetArgs {
	return DashboardWidgetArgs{
		NoteDefinition: DashboardWidgetNoteDefinitionArgs{
			BackgroundColor: pulumi.String("pink"),
			Content:         pulumi.String("pink note"),
		},
	}
}

func incorrect() DashboardWidgetArgs {
	return DashboardWidgetArgs{
		GroupDefinition: &DashboardWidgetGroupDefinitionArgs{
			LayoutType: pulumi.String("ordered"),
			Title:      pulumi.String("Group Widget"),
			Widgets: DashboardWidgetGroupDefinitionWidgetArray{
				pinkNote(),
			},
		},
	}
}

func correct() *DashboardWidgetArgs {
	return &DashboardWidgetArgs{
		GroupDefinition: &DashboardWidgetGroupDefinitionArgs{
			LayoutType: pulumi.String("ordered"),
			Title:      pulumi.String("Group Widget"),
			Widgets: DashboardWidgetGroupDefinitionWidgetArray{
				DashboardWidgetGroupDefinitionWidgetArgs{
					NoteDefinition: DashboardWidgetGroupDefinitionWidgetNoteDefinitionArgs{
						BackgroundColor: pulumi.String("pink"),
						Content:         pulumi.String("pink note"),
					},
				},
			},
		},
	}
}

./dashboard_test.go:22:13: cannot use pinkNote() (type DashboardWidgetArgs) as type DashboardWidgetGroupDefinitionWidgetInput in slice literal:
	DashboardWidgetArgs does not implement DashboardWidgetGroupDefinitionWidgetInput (missing ToDashboardWidgetGroupDefinitionWidgetOutput method)

Context (Environment)

Working on upgrading doc parsing to accept Nested Schema sections.

build fails during `tfgen`

for LANGUAGE in "nodejs" "python" "go" ; do \
		pulumi-tfgen-datadog $LANGUAGE --overlays overlays/$LANGUAGE/ --out sdk/$LANGUAGE/ || exit 3 ; \
	done
error: failed to gather package metadata: problem gathering resources: 7 errors occurred:
	* cannot find package "github.com/terraform-providers/terraform-provider-datadog" in any of:
	/Users/pgavlin/dev/go/src/github.com/pulumi/pulumi-datadog/vendor/github.com/terraform-providers/terraform-provider-datadog (vendor tree)
	/usr/local/go/src/github.com/terraform-providers/terraform-provider-datadog (from $GOROOT)
	/Users/pgavlin/dev/go/src/github.com/terraform-providers/terraform-provider-datadog (from $GOPATH)
	* cannot find package "github.com/terraform-providers/terraform-provider-datadog" in any of:
	/Users/pgavlin/dev/go/src/github.com/pulumi/pulumi-datadog/vendor/github.com/terraform-providers/terraform-provider-datadog (vendor tree)
	/usr/local/go/src/github.com/terraform-providers/terraform-provider-datadog (from $GOROOT)
	/Users/pgavlin/dev/go/src/github.com/terraform-providers/terraform-provider-datadog (from $GOPATH)
	* cannot find package "github.com/terraform-providers/terraform-provider-datadog" in any of:
	/Users/pgavlin/dev/go/src/github.com/pulumi/pulumi-datadog/vendor/github.com/terraform-providers/terraform-provider-datadog (vendor tree)
	/usr/local/go/src/github.com/terraform-providers/terraform-provider-datadog (from $GOROOT)
	/Users/pgavlin/dev/go/src/github.com/terraform-providers/terraform-provider-datadog (from $GOPATH)
	* cannot find package "github.com/terraform-providers/terraform-provider-datadog" in any of:
	/Users/pgavlin/dev/go/src/github.com/pulumi/pulumi-datadog/vendor/github.com/terraform-providers/terraform-provider-datadog (vendor tree)
	/usr/local/go/src/github.com/terraform-providers/terraform-provider-datadog (from $GOROOT)
	/Users/pgavlin/dev/go/src/github.com/terraform-providers/terraform-provider-datadog (from $GOPATH)
	* cannot find package "github.com/terraform-providers/terraform-provider-datadog" in any of:
	/Users/pgavlin/dev/go/src/github.com/pulumi/pulumi-datadog/vendor/github.com/terraform-providers/terraform-provider-datadog (vendor tree)
	/usr/local/go/src/github.com/terraform-providers/terraform-provider-datadog (from $GOROOT)
	/Users/pgavlin/dev/go/src/github.com/terraform-providers/terraform-provider-datadog (from $GOPATH)
	* cannot find package "github.com/terraform-providers/terraform-provider-datadog" in any of:
	/Users/pgavlin/dev/go/src/github.com/pulumi/pulumi-datadog/vendor/github.com/terraform-providers/terraform-provider-datadog (vendor tree)
	/usr/local/go/src/github.com/terraform-providers/terraform-provider-datadog (from $GOROOT)
	/Users/pgavlin/dev/go/src/github.com/terraform-providers/terraform-provider-datadog (from $GOPATH)
	* cannot find package "github.com/terraform-providers/terraform-provider-datadog" in any of:
	/Users/pgavlin/dev/go/src/github.com/pulumi/pulumi-datadog/vendor/github.com/terraform-providers/terraform-provider-datadog (vendor tree)
	/usr/local/go/src/github.com/terraform-providers/terraform-provider-datadog (from $GOROOT)
	/Users/pgavlin/dev/go/src/github.com/terraform-providers/terraform-provider-datadog (from $GOPATH)

I am using a vendor directory populated via go mod vendor.

Nested Schema doc parser confused about misleading labels

Our attempts to parse Nested Schema sections fail to make sense of some of the markdown. For example in dashboard.md there is a following section:

<<a id="nestedblock--widget--group_definition--widget--id--request--apm_query"></a>
### Nested Schema for `widget.group_definition.widget.id.request.show_present`

Required:

- **index** (String) Name of the index to query.

Optional:

- **compute** (Map of String, Deprecated) One of `compute` or `multi_compute` is required. The map has the keys as below. **Deprecated.** Define `compute_query` list with one element instead.
- **compute_query** (Block List, Max: 1) One of `compute_query` or `multi_compute` is required. The map has the keys as below. (see [below for nested schema](#nestedblock--widget--group_definition--widget--id--request--show_present--compute_query))
- **group_by** (Block List) Multiple `group_by` blocks are allowed with the structure below. (see [below for nested schema](#nestedblock--widget--group_definition--widget--id--request--show_present--group_by))
- **multi_compute** (Block List) One of `compute_query` or `multi_compute` is required. Multiple `multi_compute` blocks are allowed with the structure below. (see [below for nested schema](#nestedblock--widget--group_definition--widget--id--request--show_present--multi_compute))
- **search** (Map of String, Deprecated) Map defining the search query to use. **Deprecated.** Define `search_query` directly instead.
- **search_query** (String) The search query to use.

This could be an upstream issue. We could consider fixing upstream or injecting compensating data cleaning code.

Expected behavior

  • a id=.. and Nested Schema for ... should point to the same property; in the example it seems that Nested Schema label is off

  • The fully qualified property paths should be valid. In the example, widget.id.request subpath does not appear valid, as id is string-typed and should not have subproperties

Current behavior

Some nested schema sections have anomalies as above. The impact on Pulumi processing is mild, we fail to locate or misallocate property descriptions, but the actual code generation is not affected.

Steps to reproduce

Check out #126

Context (Environment)

Trying to upgrade pulumi-terraform-bridge to handle Nested Schema sections.

Affected feature

Documentation and docstrings on generated code.

repo is in need of a `-dev` tag

In order for the build to work as expected, this repo need some commit to be tagged with an appropriate prerelease version. I would suggest v0.16.0-dev or similar.

Several properties are missing doc strings

Several properties in this provider are missing docs. It's not clear what the pattern is for the missing docs. For example, a "top-level" property readOnly is missing a doc string but has one on the Terraform site.

It appears that all nested properties are missing docs. For example, recurrence in Downtime.

Another, possibly related issue, is all nested properties are generated on a single line. The previously linked recurrence and widgets are examples.

Release Datadog Provider

We should either make this provider public (and commit to maintaining it) or we should just kill it for now. Let's make a decision on this during M24.

Imported monitors replace `%` in their message with `%!x(MISSING)`

Expected behavior

Generated code for an imported monitor should include exactly the same message as the existing resource.

Current behavior

A monitor with % anywhere in its message will produce generated code containing %!x(MISSING) in place of %.

Steps to reproduce

Tested on pulumi-datadog 3.1.0.

  1. Manually create a monitor. In the message, include % anywhere. For example: "5% of requests failed".
  2. Import the monitor using pulumi import datadog:index/monitor:Monitor test 12345
  3. Observe the message in the generated code does not match the existing message verbatim. In this example, it produces "5%!o(MISSING)f requests failed"

Context (Environment)

This breaks messages with percent-encoded URLs to runbooks, for example. It also makes commonplace percentiles (99%) unreadable. It's relatively straightforward to fix, but it's a big annoyance when trying to import a large number of existing monitors. Being able to copy-paste the generated code would be ideal!

Affected feature

Unsure.

Error occurred when orchestrating Synthetics Test for SSL

We are having issue orchestrating Synthetics test for SSL subtype. The pulumi code is written in TypeScript and the error as below:

error: 1 error occurred:
        * updating urn:pulumi:prod::datadog-infrastructure::datadog:index/syntheticsTest:SyntheticsTest::datadog-infrastructure-synthetics-test-tmr-ssl: error updating synthetics test: 400 Bad Request: {"errors": ["properties.config.properties.request.additionalProperties: Additional properties are not allowed (u'timeout' was unexpected)\n\nFailed validating 'additionalProperties' in schema['properties']['config']['properties']['request']:\n    {'additionalProperties': False,\n     'properties': {'certificate': {'additionalProperties': False,\n                                    'properties': {'cert': {'additionalProperties': False,\n                                                            'properties': {'content': {'maxLength': 51200,\n                                                                                       'type': 'string'},\n                                                                           'filename': {'maxLength': 1500,\n                                                                                        'type': 'string'},\n                                                                           'updatedAt': {'maxLength': 1500,\n                                                                                         'type': 'string'}},\n                                                            'required': ['filename'],\n                                                            'type': 'object'},\n                                                   'key': {'additionalProperties': False,\n                                                           'properties': {'content': {'maxLength': 51200,\n                                                                                      'type': 'string'},\n                                                                          'filename': {'maxLength': 1500,\n                                                                                       'type': 'string'},\n                                                                          'updatedAt': {'maxLength': 1500,\n                                                                                        'type': 'string'}},\n                                                           'required': ['filename'],\n                                                           'type': 'object'}},\n                                    'required': ['cert', 'key'],\n                                    'type': 'object'},\n                    'host': {'maxLength': 6000, 'type': 'string'},\n                    'port': {'anyOf': [{'maximum': 65535,\n                                        'minimum': 1,\n                                        'type': 'integer'},\n                                       {'maxLength': 51200,\n                                        'pattern': '\\\\{\\\\{ *([A-Z][A-Z0-9_]+[A-Z0-9]) *\\\\}\\\\}',\n                                        'type': 'string'}]}},\n     'required': ['host', 'port'],\n     'type': 'object'}\n\nOn instance['config']['request']:\n    {u'host': u'example.org', u'port': 443, u'timeout': 60}"]}

We attempted a different approach by manually provisioning the Synthecits Test, and then importing the resource using pulumi import. Interestingly we noticed the request property in the generated code is an array instead of an object, and obviously it does not even compile. If we change it to a request object, then it gives the same error as above.

new datadog.SyntheticsTest(
  'datadog-infrastructure-synthetics-test-tmr-ssl',
  {
    assertions: [
      {
        operator: 'isInMoreThan',
        target: '30',
        type: 'certificate',
      },
    ],
    locations: ['aws:ap-southeast-2'],
    message: '',
    name: 'tmr-ssl',
    optionsList: {
      acceptSelfSigned: true,
      minLocationFailed: 1,
      tickEvery: 900,
    },
    request: [
      {
        host: 'example.org',
        port: 443,
        timeout: 60,
      },
    ],
    status: 'live',
    subtype: 'ssl',
    type: 'api',
  },
  {
    protect: true,
  }
);

Expected behavior

It is expected to orchestrate the Synthetics Test successfully.

Current behavior

The above error was thrown.

Steps to reproduce

  1. Run pulumi up on the pulumi code as above.

Context (Environment)

Package versions:

  1. @pulumi/datadog: 3.0.0
  2. @pulumi/pulumi: 3.2.0

OS version:
Fedora 34

Importing SyntheticTest fails: ### is not a valid SyntheticTickInterval

When attempting to import an existing Synthetics test, the import fails with ### is not a valid SyntheticTicksInterval where SyntheticTicksInterval is an integer provided by datadog in the response to the api call.

tickEvery seems to require an integer, but the import fails when an integer is provided.

Steps to reproduce

  1. Create DataDog synthetic test
  2. Import using pulumi import datadog:index/syntheticsTest:SyntheticsTest <name> <datadog id>

Expected: the import is successful
Actual: the import failed:

* error getting synthetics test from https://api.datadoghq.com/api/v1/synthetics/tests/9rj-e5v-jz4: 14400 is not a valid SyntheticsTickInterval: 
* {
  "status": "live",
  "public_id": "xxx-xxx-xxx",
  "tags": [
    "env:dev",
    "check_type:api-ssl"
  ],
  "locations": [
    "aws:us-east-2"
  ],
  "message": "@pagerduty \n\nCertificate for <host> is expiring in less than 10 days.\n\nPlease verify cert-manager configuration",
  "name": "SSL: example.org",
  "monitor_id": ########,
  "type": "api",
  "subtype": "ssl",
  "config": {
    "request": {
      "host": "example.org",
      "port": 443
    },
    "assertions": [
      {
        "operator": "isInMoreThan",
        "type": "certificate",
        "target": 10
      },
      {
        "operator": "moreThanOrEqual",
        "type": "tlsVersion",
        "target": "1.3"
      },
      {
        "operator": "lessThan",
        "type": "responseTime",
        "target": 40000
      }
    ]
  },
  "options": {
    "monitor_priority": 1,
    "monitor_options": {
      "renotify_interval": 240
    },
    "tick_every": 14400,
    "min_failure_duration": 0,
    "min_location_failed": 1
  }
}

Unable to create Synthetic API Test (SSL) - Extra timeout property being added?

When attempting to create a basic API Synthetics test of type SSL I get a 400 Bad Request error.

DETAILS

  • Language: Node.js/Typescript
  • Pulumi version: 2.16.2
  • Pulumi Datadog version: 2.13.0

CODE

import * as pulumi from "@pulumi/pulumi";
import * as datadog from "@pulumi/datadog";

const testSsl = new datadog.SyntheticsTest("test_yahoo", {
    locations: ["aws:eu-central-1"],
    name: "An API test on example.org",
    optionsList: {
        tickEvery: 900,
    },
    request: {
        host: "yahoo.com",
        port: 443,
    },
    status: "live",
    subtype: "ssl",
    type: "api",
});

OUTPUT
The following output was created with this command:

pulumi up --logtostderr -v=9 2> out.txt

I truncated to include just the relevant portion of the log

I0106 18:08:04.976373   23767 plugins.go:674] GetPluginPath(resource, datadog, 2.13.0): found in cache at /home/sami/.pulumi/plugins/resource-datadog-v2.13.0/pulumi-resource-datadog
I0106 18:08:04.976384   23767 plugin.go:124] Launching plugin 'datadog (resource)' from '/home/sami/.pulumi/plugins/resource-datadog-v2.13.0/pulumi-resource-datadog' with args: 127.0.0.1:39803
I0106 18:08:05.055746   23767 provider_plugin.go:1296] Provider[datadog, 0xc000e98d20].GetPluginInfo() executing
I0106 18:08:05.056492   23767 provider_plugin.go:176] Provider[datadog, 0xc000e98d20].CheckConfig(urn:pulumi:prod::cloud-dd-synthetic::pulumi:providers:datadog::default_2_13_0) executing (#olds=1,#news=1)
I0106 18:08:05.056526   23767 rpc.go:72] Marshaling property for RPC[Provider[datadog, 0xc000e98d20].CheckConfig(urn:pulumi:prod::cloud-dd-synthetic::pulumi:providers:datadog::default_2_13_0).olds]: version={2.13.0}
I0106 18:08:05.056551   23767 rpc.go:72] Marshaling property for RPC[Provider[datadog, 0xc000e98d20].CheckConfig(urn:pulumi:prod::cloud-dd-synthetic::pulumi:providers:datadog::default_2_13_0).news]: version={2.13.0}
I0106 18:08:05.057792   23767 provider_plugin.go:208] Provider[datadog, 0xc000e98d20].CheckConfig(urn:pulumi:prod::cloud-dd-synthetic::pulumi:providers:datadog::default_2_13_0) unimplemented rpc: returning news as is
I0106 18:08:05.057817   23767 registry.go:156] setProvider(urn:pulumi:prod::cloud-dd-synthetic::pulumi:providers:datadog::default_2_13_0::04da6b54-80e4-46f7-96ec-b56ff0331ba9)
I0106 18:08:05.057832   23767 registry.go:264] ProviderRegistry.Diff(urn:pulumi:prod::cloud-dd-synthetic::pulumi:providers:datadog::default_2_13_0,d367f7d0-3a95-4b6b-aa59-78702a17ac4d): executing (#olds=1,#news=1)
I0106 18:08:05.057841   23767 registry.go:146] GetProvider(urn:pulumi:prod::cloud-dd-synthetic::pulumi:providers:datadog::default_2_13_0::04da6b54-80e4-46f7-96ec-b56ff0331ba9)
I0106 18:08:05.057853   23767 provider_plugin.go:281] Provider[datadog, 0xc000e98d20].DiffConfig(urn:pulumi:prod::cloud-dd-synthetic::pulumi:providers:datadog::default_2_13_0) executing (#olds=1,#news=1)
I0106 18:08:05.057863   23767 rpc.go:72] Marshaling property for RPC[Provider[datadog, 0xc000e98d20].DiffConfig(urn:pulumi:prod::cloud-dd-synthetic::pulumi:providers:datadog::default_2_13_0).olds]: version={2.13.0}
I0106 18:08:05.057875   23767 rpc.go:72] Marshaling property for RPC[Provider[datadog, 0xc000e98d20].DiffConfig(urn:pulumi:prod::cloud-dd-synthetic::pulumi:providers:datadog::default_2_13_0).news]: version={2.13.0}
I0106 18:08:05.058231   23767 provider_plugin.go:312] Provider[datadog, 0xc000e98d20].DiffConfig(urn:pulumi:prod::cloud-dd-synthetic::pulumi:providers:datadog::default_2_13_0) unimplemented rpc: returning DiffUnknown with no replaces
I0106 18:08:05.058253   23767 step_generator.go:458] Planner decided not to update 'urn:pulumi:prod::cloud-dd-synthetic::pulumi:providers:datadog::default_2_13_0' after diff (same) (inputs=map[version:{2.13.0}])
I0106 18:08:05.058275   23767 step_executor.go:327] StepExecutor worker(-2): worker received chain for execution
I0106 18:08:05.058281   23767 step_executor.go:327] StepExecutor worker(-2): worker waiting for incoming chains
I0106 18:08:05.058293   23767 step_executor.go:327] StepExecutor worker(1): launching oneshot worker
I0106 18:08:05.058302   23767 snapshot.go:130] SnapshotManager: Beginning mutation for step `same` on resource `urn:pulumi:prod::cloud-dd-synthetic::pulumi:providers:datadog::default_2_13_0`
I0106 18:08:05.058308   23767 step_executor.go:327] StepExecutor worker(1): applying step same on urn:pulumi:prod::cloud-dd-synthetic::pulumi:providers:datadog::default_2_13_0 (preview false)
I0106 18:08:05.058318   23767 snapshot.go:252] SnapshotManager: sameSnapshotMutation.End(..., true)
I0106 18:08:05.058348   23767 snapshot.go:498] Marked old state snapshot as done: urn:pulumi:prod::cloud-dd-synthetic::pulumi:providers:datadog::default_2_13_0
I0106 18:08:05.058356   23767 snapshot.go:507] Appended new state snapshot to be written: urn:pulumi:prod::cloud-dd-synthetic::pulumi:providers:datadog::default_2_13_0
I0106 18:08:05.058366   23767 snapshot.go:274] SnapshotManager: sameSnapshotMutation.End() eliding write
I0106 18:08:05.058391   23767 step_executor.go:327] StepExecutor worker(1): step same on urn:pulumi:prod::cloud-dd-synthetic::pulumi:providers:datadog::default_2_13_0 retired
I0106 18:08:05.058427   23767 source_eval.go:349] registered default provider for package datadog-2.13.0: urn:pulumi:prod::cloud-dd-synthetic::pulumi:providers:datadog::default_2_13_0
I0106 18:08:05.058468   23767 rpc.go:247] Unmarshaling property for RPC[ResourceMonitor.RegisterResource(datadog:index/syntheticsTest:SyntheticsTest,test_yahoo)]: locations={[{aws:eu-central-1}]}
I0106 18:08:05.058499   23767 rpc.go:247] Unmarshaling property for RPC[ResourceMonitor.RegisterResource(datadog:index/syntheticsTest:SyntheticsTest,test_yahoo)]: name={An API test on example.org}
I0106 18:08:05.058504   23767 rpc.go:247] Unmarshaling property for RPC[ResourceMonitor.RegisterResource(datadog:index/syntheticsTest:SyntheticsTest,test_yahoo)]: tickEvery={900}
I0106 18:08:05.058512   23767 rpc.go:247] Unmarshaling property for RPC[ResourceMonitor.RegisterResource(datadog:index/syntheticsTest:SyntheticsTest,test_yahoo)]: optionsList={map[tickEvery:{900}]}
I0106 18:08:05.058520   23767 rpc.go:247] Unmarshaling property for RPC[ResourceMonitor.RegisterResource(datadog:index/syntheticsTest:SyntheticsTest,test_yahoo)]: host={yahoo.com}
I0106 18:08:05.058524   23767 rpc.go:247] Unmarshaling property for RPC[ResourceMonitor.RegisterResource(datadog:index/syntheticsTest:SyntheticsTest,test_yahoo)]: port={443}
I0106 18:08:05.058530   23767 rpc.go:247] Unmarshaling property for RPC[ResourceMonitor.RegisterResource(datadog:index/syntheticsTest:SyntheticsTest,test_yahoo)]: request={map[host:{yahoo.com} port:{443}]}
I0106 18:08:05.058537   23767 rpc.go:247] Unmarshaling property for RPC[ResourceMonitor.RegisterResource(datadog:index/syntheticsTest:SyntheticsTest,test_yahoo)]: status={live}
I0106 18:08:05.058542   23767 rpc.go:247] Unmarshaling property for RPC[ResourceMonitor.RegisterResource(datadog:index/syntheticsTest:SyntheticsTest,test_yahoo)]: subtype={ssl}
I0106 18:08:05.058546   23767 rpc.go:247] Unmarshaling property for RPC[ResourceMonitor.RegisterResource(datadog:index/syntheticsTest:SyntheticsTest,test_yahoo)]: type={api}
I0106 18:08:05.058555   23767 source_eval.go:870] ResourceMonitor.RegisterResource received: t=datadog:index/syntheticsTest:SyntheticsTest, name=test_yahoo, custom=true, #props=7, parent=urn:pulumi:prod::cloud-dd-synthetic::pulumi:pulumi:Stack::cloud-dd-synthetic-prod, protect=false, provider=urn:pulumi:prod::cloud-dd-synthetic::pulumi:providers:datadog::default_2_13_0::d367f7d0-3a95-4b6b-aa59-78702a17ac4d, deps=[], deleteBeforeReplace=<nil>, ignoreChanges=[], aliases=[], customTimeouts={0 0 0}
I0106 18:08:05.058591   23767 source_eval.go:158] EvalSourceIterator produced a registration: t=datadog:index/syntheticsTest:SyntheticsTest,name=test_yahoo,#props=7
I0106 18:08:05.058623   23767 deployment_executor.go:225] deploymentExecutor.Execute(...): incoming event (nil? false, <nil>)
I0106 18:08:05.058632   23767 deployment_executor.go:371] deploymentExecutor.handleSingleEvent(...): received RegisterResourceEvent
I0106 18:08:05.058642   23767 registry.go:146] GetProvider(urn:pulumi:prod::cloud-dd-synthetic::pulumi:providers:datadog::default_2_13_0::d367f7d0-3a95-4b6b-aa59-78702a17ac4d)
I0106 18:08:05.058651   23767 provider_plugin.go:522] Provider[datadog, 0xc001111140].Check(urn:pulumi:prod::cloud-dd-synthetic::datadog:index/syntheticsTest:SyntheticsTest::test_yahoo) executing (#olds=0,#news=7
I0106 18:08:05.058658   23767 rpc.go:72] Marshaling property for RPC[Provider[datadog, 0xc001111140].Check(urn:pulumi:prod::cloud-dd-synthetic::datadog:index/syntheticsTest:SyntheticsTest::test_yahoo).news]: locations={[{aws:eu-central-1}]}
I0106 18:08:05.058665   23767 rpc.go:72] Marshaling property for RPC[Provider[datadog, 0xc001111140].Check(urn:pulumi:prod::cloud-dd-synthetic::datadog:index/syntheticsTest:SyntheticsTest::test_yahoo).news]: name={An API test on example.org}
I0106 18:08:05.058669   23767 rpc.go:72] Marshaling property for RPC[Provider[datadog, 0xc001111140].Check(urn:pulumi:prod::cloud-dd-synthetic::datadog:index/syntheticsTest:SyntheticsTest::test_yahoo).news]: optionsList={map[tickEvery:{900}]}
I0106 18:08:05.058680   23767 rpc.go:72] Marshaling property for RPC[Provider[datadog, 0xc001111140].Check(urn:pulumi:prod::cloud-dd-synthetic::datadog:index/syntheticsTest:SyntheticsTest::test_yahoo).news]: tickEvery={900}
I0106 18:08:05.058686   23767 rpc.go:72] Marshaling property for RPC[Provider[datadog, 0xc001111140].Check(urn:pulumi:prod::cloud-dd-synthetic::datadog:index/syntheticsTest:SyntheticsTest::test_yahoo).news]: request={map[host:{yahoo.com} port:{443}]}
I0106 18:08:05.058777   23767 rpc.go:72] Marshaling property for RPC[Provider[datadog, 0xc001111140].Check(urn:pulumi:prod::cloud-dd-synthetic::datadog:index/syntheticsTest:SyntheticsTest::test_yahoo).news]: host={yahoo.com}
I0106 18:08:05.058787   23767 rpc.go:72] Marshaling property for RPC[Provider[datadog, 0xc001111140].Check(urn:pulumi:prod::cloud-dd-synthetic::datadog:index/syntheticsTest:SyntheticsTest::test_yahoo).news]: port={443}
I0106 18:08:05.058793   23767 rpc.go:72] Marshaling property for RPC[Provider[datadog, 0xc001111140].Check(urn:pulumi:prod::cloud-dd-synthetic::datadog:index/syntheticsTest:SyntheticsTest::test_yahoo).news]: status={live}
I0106 18:08:05.058797   23767 rpc.go:72] Marshaling property for RPC[Provider[datadog, 0xc001111140].Check(urn:pulumi:prod::cloud-dd-synthetic::datadog:index/syntheticsTest:SyntheticsTest::test_yahoo).news]: subtype={ssl}
I0106 18:08:05.058801   23767 rpc.go:72] Marshaling property for RPC[Provider[datadog, 0xc001111140].Check(urn:pulumi:prod::cloud-dd-synthetic::datadog:index/syntheticsTest:SyntheticsTest::test_yahoo).news]: type={api}
I0106 18:08:05.059934   23767 rpc.go:247] Unmarshaling property for RPC[Provider[datadog, 0xc001111140].Check(urn:pulumi:prod::cloud-dd-synthetic::datadog:index/syntheticsTest:SyntheticsTest::test_yahoo).inputs]: __defaults={[{message}]}
I0106 18:08:05.059959   23767 rpc.go:247] Unmarshaling property for RPC[Provider[datadog, 0xc001111140].Check(urn:pulumi:prod::cloud-dd-synthetic::datadog:index/syntheticsTest:SyntheticsTest::test_yahoo).inputs]: locations={[{aws:eu-central-1}]}
I0106 18:08:05.059975   23767 rpc.go:247] Unmarshaling property for RPC[Provider[datadog, 0xc001111140].Check(urn:pulumi:prod::cloud-dd-synthetic::datadog:index/syntheticsTest:SyntheticsTest::test_yahoo).inputs]: message={}
I0106 18:08:05.059987   23767 rpc.go:247] Unmarshaling property for RPC[Provider[datadog, 0xc001111140].Check(urn:pulumi:prod::cloud-dd-synthetic::datadog:index/syntheticsTest:SyntheticsTest::test_yahoo).inputs]: name={An API test on example.org}
I0106 18:08:05.060001   23767 rpc.go:247] Unmarshaling property for RPC[Provider[datadog, 0xc001111140].Check(urn:pulumi:prod::cloud-dd-synthetic::datadog:index/syntheticsTest:SyntheticsTest::test_yahoo).inputs]: __defaults={[{minLocationFailed}]}
I0106 18:08:05.060012   23767 rpc.go:247] Unmarshaling property for RPC[Provider[datadog, 0xc001111140].Check(urn:pulumi:prod::cloud-dd-synthetic::datadog:index/syntheticsTest:SyntheticsTest::test_yahoo).inputs]: minLocationFailed={1}
I0106 18:08:05.060018   23767 rpc.go:247] Unmarshaling property for RPC[Provider[datadog, 0xc001111140].Check(urn:pulumi:prod::cloud-dd-synthetic::datadog:index/syntheticsTest:SyntheticsTest::test_yahoo).inputs]: tickEvery={900}
I0106 18:08:05.060025   23767 rpc.go:247] Unmarshaling property for RPC[Provider[datadog, 0xc001111140].Check(urn:pulumi:prod::cloud-dd-synthetic::datadog:index/syntheticsTest:SyntheticsTest::test_yahoo).inputs]: optionsList={map[__defaults:{[{minLocationFailed}]} minLocationFailed:{1} tickEvery:{900}]}
I0106 18:08:05.060037   23767 rpc.go:247] Unmarshaling property for RPC[Provider[datadog, 0xc001111140].Check(urn:pulumi:prod::cloud-dd-synthetic::datadog:index/syntheticsTest:SyntheticsTest::test_yahoo).inputs]: __defaults={[{timeout}]}
I0106 18:08:05.060044   23767 rpc.go:247] Unmarshaling property for RPC[Provider[datadog, 0xc001111140].Check(urn:pulumi:prod::cloud-dd-synthetic::datadog:index/syntheticsTest:SyntheticsTest::test_yahoo).inputs]: host={yahoo.com}
I0106 18:08:05.060048   23767 rpc.go:247] Unmarshaling property for RPC[Provider[datadog, 0xc001111140].Check(urn:pulumi:prod::cloud-dd-synthetic::datadog:index/syntheticsTest:SyntheticsTest::test_yahoo).inputs]: port={443}
I0106 18:08:05.060058   23767 rpc.go:247] Unmarshaling property for RPC[Provider[datadog, 0xc001111140].Check(urn:pulumi:prod::cloud-dd-synthetic::datadog:index/syntheticsTest:SyntheticsTest::test_yahoo).inputs]: timeout={60}
I0106 18:08:05.060066   23767 rpc.go:247] Unmarshaling property for RPC[Provider[datadog, 0xc001111140].Check(urn:pulumi:prod::cloud-dd-synthetic::datadog:index/syntheticsTest:SyntheticsTest::test_yahoo).inputs]: request={[{map[__defaults:{[{timeout}]} host:{yahoo.com} port:{443} timeout:{60}]}]}
I0106 18:08:05.060076   23767 rpc.go:247] Unmarshaling property for RPC[Provider[datadog, 0xc001111140].Check(urn:pulumi:prod::cloud-dd-synthetic::datadog:index/syntheticsTest:SyntheticsTest::test_yahoo).inputs]: status={live}
I0106 18:08:05.060081   23767 rpc.go:247] Unmarshaling property for RPC[Provider[datadog, 0xc001111140].Check(urn:pulumi:prod::cloud-dd-synthetic::datadog:index/syntheticsTest:SyntheticsTest::test_yahoo).inputs]: subtype={ssl}
I0106 18:08:05.060086   23767 rpc.go:247] Unmarshaling property for RPC[Provider[datadog, 0xc001111140].Check(urn:pulumi:prod::cloud-dd-synthetic::datadog:index/syntheticsTest:SyntheticsTest::test_yahoo).inputs]: type={api}
I0106 18:08:05.060094   23767 provider_plugin.go:594] Provider[datadog, 0xc001111140].Check(urn:pulumi:prod::cloud-dd-synthetic::datadog:index/syntheticsTest:SyntheticsTest::test_yahoo) success: inputs=#9 failures=#0
I0106 18:08:05.060103   23767 step_generator.go:499] Planner decided to create 'urn:pulumi:prod::cloud-dd-synthetic::datadog:index/syntheticsTest:SyntheticsTest::test_yahoo' (inputs=map[__defaults:{[{message}]} locations:{[{aws:eu-central-1}]} message:{} name:{An API test on example.org} optionsList:{map[__defaults:{[{minLocationFailed}]} minLocationFailed:{1} tickEvery:{900}]} request:{[{map[__defaults:{[{timeout}]} host:{yahoo.com} port:{443} timeout:{60}]}]} status:{live} subtype:{ssl} type:{api}])
I0106 18:08:05.060146   23767 step_executor.go:327] StepExecutor worker(-2): worker received chain for execution
I0106 18:08:05.060173   23767 step_executor.go:327] StepExecutor worker(-2): worker waiting for incoming chains
I0106 18:08:05.060214   23767 step_executor.go:327] StepExecutor worker(2): launching oneshot worker
I0106 18:08:05.060306   23767 snapshot.go:130] SnapshotManager: Beginning mutation for step `create` on resource `urn:pulumi:prod::cloud-dd-synthetic::datadog:index/syntheticsTest:SyntheticsTest::test_yahoo`
I0106 18:08:05.060317   23767 snapshot.go:283] SnapshotManager.doCreate(urn:pulumi:prod::cloud-dd-synthetic::datadog:index/syntheticsTest:SyntheticsTest::test_yahoo)
I0106 18:08:05.060324   23767 snapshot.go:514] SnapshotManager.markPendingOperation(urn:pulumi:prod::cloud-dd-synthetic::datadog:index/syntheticsTest:SyntheticsTest::test_yahoo, creating)
I0106 18:08:05.214564   23767 step_executor.go:327] StepExecutor worker(2): applying step create on urn:pulumi:prod::cloud-dd-synthetic::datadog:index/syntheticsTest:SyntheticsTest::test_yahoo (preview false)
I0106 18:08:05.214695   23767 registry.go:146] GetProvider(urn:pulumi:prod::cloud-dd-synthetic::pulumi:providers:datadog::default_2_13_0::d367f7d0-3a95-4b6b-aa59-78702a17ac4d)
I0106 18:08:05.215021   23767 provider_plugin.go:695] Provider[datadog, 0xc001111140].Create(urn:pulumi:prod::cloud-dd-synthetic::datadog:index/syntheticsTest:SyntheticsTest::test_yahoo) executing (#props=9)
I0106 18:08:05.215099   23767 rpc.go:72] Marshaling property for RPC[Provider[datadog, 0xc001111140].Create(urn:pulumi:prod::cloud-dd-synthetic::datadog:index/syntheticsTest:SyntheticsTest::test_yahoo).inputs]: __defaults={[{message}]}
I0106 18:08:05.215154   23767 rpc.go:72] Marshaling property for RPC[Provider[datadog, 0xc001111140].Create(urn:pulumi:prod::cloud-dd-synthetic::datadog:index/syntheticsTest:SyntheticsTest::test_yahoo).inputs]: locations={[{aws:eu-central-1}]}
I0106 18:08:05.215193   23767 rpc.go:72] Marshaling property for RPC[Provider[datadog, 0xc001111140].Create(urn:pulumi:prod::cloud-dd-synthetic::datadog:index/syntheticsTest:SyntheticsTest::test_yahoo).inputs]: message={}
I0106 18:08:05.215269   23767 rpc.go:72] Marshaling property for RPC[Provider[datadog, 0xc001111140].Create(urn:pulumi:prod::cloud-dd-synthetic::datadog:index/syntheticsTest:SyntheticsTest::test_yahoo).inputs]: name={An API test on example.org}
I0106 18:08:05.215329   23767 rpc.go:72] Marshaling property for RPC[Provider[datadog, 0xc001111140].Create(urn:pulumi:prod::cloud-dd-synthetic::datadog:index/syntheticsTest:SyntheticsTest::test_yahoo).inputs]: optionsList={map[__defaults:{[{minLocationFailed}]} minLocationFailed:{1} tickEvery:{900}]}
I0106 18:08:05.215588   23767 rpc.go:72] Marshaling property for RPC[Provider[datadog, 0xc001111140].Create(urn:pulumi:prod::cloud-dd-synthetic::datadog:index/syntheticsTest:SyntheticsTest::test_yahoo).inputs]: __defaults={[{minLocationFailed}]}
I0106 18:08:05.215643   23767 rpc.go:72] Marshaling property for RPC[Provider[datadog, 0xc001111140].Create(urn:pulumi:prod::cloud-dd-synthetic::datadog:index/syntheticsTest:SyntheticsTest::test_yahoo).inputs]: minLocationFailed={1}
I0106 18:08:05.215706   23767 rpc.go:72] Marshaling property for RPC[Provider[datadog, 0xc001111140].Create(urn:pulumi:prod::cloud-dd-synthetic::datadog:index/syntheticsTest:SyntheticsTest::test_yahoo).inputs]: tickEvery={900}
I0106 18:08:05.215750   23767 rpc.go:72] Marshaling property for RPC[Provider[datadog, 0xc001111140].Create(urn:pulumi:prod::cloud-dd-synthetic::datadog:index/syntheticsTest:SyntheticsTest::test_yahoo).inputs]: request={[{map[__defaults:{[{timeout}]} host:{yahoo.com} port:{443} timeout:{60}]}]}
I0106 18:08:05.215821   23767 rpc.go:72] Marshaling property for RPC[Provider[datadog, 0xc001111140].Create(urn:pulumi:prod::cloud-dd-synthetic::datadog:index/syntheticsTest:SyntheticsTest::test_yahoo).inputs]: __defaults={[{timeout}]}
I0106 18:08:05.215858   23767 rpc.go:72] Marshaling property for RPC[Provider[datadog, 0xc001111140].Create(urn:pulumi:prod::cloud-dd-synthetic::datadog:index/syntheticsTest:SyntheticsTest::test_yahoo).inputs]: host={yahoo.com}
I0106 18:08:05.215879   23767 rpc.go:72] Marshaling property for RPC[Provider[datadog, 0xc001111140].Create(urn:pulumi:prod::cloud-dd-synthetic::datadog:index/syntheticsTest:SyntheticsTest::test_yahoo).inputs]: port={443}
I0106 18:08:05.215909   23767 rpc.go:72] Marshaling property for RPC[Provider[datadog, 0xc001111140].Create(urn:pulumi:prod::cloud-dd-synthetic::datadog:index/syntheticsTest:SyntheticsTest::test_yahoo).inputs]: timeout={60}
I0106 18:08:05.215941   23767 rpc.go:72] Marshaling property for RPC[Provider[datadog, 0xc001111140].Create(urn:pulumi:prod::cloud-dd-synthetic::datadog:index/syntheticsTest:SyntheticsTest::test_yahoo).inputs]: status={live}
I0106 18:08:05.215971   23767 rpc.go:72] Marshaling property for RPC[Provider[datadog, 0xc001111140].Create(urn:pulumi:prod::cloud-dd-synthetic::datadog:index/syntheticsTest:SyntheticsTest::test_yahoo).inputs]: subtype={ssl}
I0106 18:08:05.216010   23767 rpc.go:72] Marshaling property for RPC[Provider[datadog, 0xc001111140].Create(urn:pulumi:prod::cloud-dd-synthetic::datadog:index/syntheticsTest:SyntheticsTest::test_yahoo).inputs]: type={api}
I0106 18:08:05.220747   23767 eventsink.go:59] No meta timeoutkey found in Apply()
I0106 18:08:05.220823   23767 eventsink.go:62] eventSink::Debug(<{%reset%}>No meta timeoutkey found in Apply()<{%reset%}>)
I0106 18:08:05.463070   23767 provider_plugin.go:1391] provider received rpc error `Unknown`: `error creating synthetics test: 400 Bad Request: {"errors": ["properties.config.properties.request.additionalProperties: Additional properties are not allowed (u'timeout' was unexpected)\n\nFailed validating 'additionalProperties' in schema['properties']['config']['properties']['request']:\n    {'additionalProperties': False,\n     'properties': {'certificate': {'additionalProperties': False,\n                                    'properties': {'cert': {'additionalProperties': False,\n                                                            'properties': {'content': {'maxLength': 51200,\n                                                                                       'type': 'string'},\n                                                                           'filename': {'maxLength': 1500,\n                                                                                        'type': 'string'},\n                                                                           'updatedAt': {'maxLength': 1500,\n                                                                                         'type': 'string'}},\n                                                            'required': ['filename'],\n                                                            'type': 'object'},\n                                                   'key': {'additionalProperties': False,\n                                                           'properties': {'content': {'maxLength': 51200,\n                                                                                      'type': 'string'},\n                                                                          'filename': {'maxLength': 1500,\n                                                                                       'type': 'string'},\n                                                                          'updatedAt': {'maxLength': 1500,\n                                                                                        'type': 'string'}},\n                                                           'required': ['filename'],\n                                                           'type': 'object'}},\n                                    'required': ['cert', 'key'],\n                                    'type': 'object'},\n                    'host': {'maxLength': 6000, 'type': 'string'},\n                    'port': {'anyOf': [{'maxLength': 51200,\n                                        'type': 'string'},\n                                       {'maximum': 65535,\n                                        'minimum': 1,\n                                        'type': 'integer'}]}},\n     'required': ['host', 'port'],\n     'type': 'object'}\n\nOn instance['config']['request']:\n    {u'host': u'yahoo.com', u'port': 443, u'timeout': 60}"]}`
I0106 18:08:05.463160   23767 provider_plugin.go:1394] rpc error kind `Unknown` may not be recoverable
I0106 18:08:05.463184   23767 provider_plugin.go:737] Provider[datadog, 0xc001111140].Create(urn:pulumi:prod::cloud-dd-synthetic::datadog:index/syntheticsTest:SyntheticsTest::test_yahoo) failed: error creating synthetics test: 400 Bad Request: {"errors": ["properties.config.properties.request.additionalProperties: Additional properties are not allowed (u'timeout' was unexpected)\n\nFailed validating 'additionalProperties' in schema['properties']['config']['properties']['request']:\n    {'additionalProperties': False,\n     'properties': {'certificate': {'additionalProperties': False,\n                                    'properties': {'cert': {'additionalProperties': False,\n                                                            'properties': {'content': {'maxLength': 51200,\n                                                                                       'type': 'string'},\n                                                                           'filename': {'maxLength': 1500,\n                                                                                        'type': 'string'},\n                                                                           'updatedAt': {'maxLength': 1500,\n                                                                                         'type': 'string'}},\n                                                            'required': ['filename'],\n                                                            'type': 'object'},\n                                                   'key': {'additionalProperties': False,\n                                                           'properties': {'content': {'maxLength': 51200,\n                                                                                      'type': 'string'},\n                                                                          'filename': {'maxLength': 1500,\n                                                                                       'type': 'string'},\n                                                                          'updatedAt': {'maxLength': 1500,\n                                                                                        'type': 'string'}},\n                                                           'required': ['filename'],\n                                                           'type': 'object'}},\n                                    'required': ['cert', 'key'],\n                                    'type': 'object'},\n                    'host': {'maxLength': 6000, 'type': 'string'},\n                    'port': {'anyOf': [{'maxLength': 51200,\n                                        'type': 'string'},\n                                       {'maximum': 65535,\n                                        'minimum': 1,\n                                        'type': 'integer'}]}},\n     'required': ['host', 'port'],\n     'type': 'object'}\n\nOn instance['config']['request']:\n    {u'host': u'yahoo.com', u'port': 443, u'timeout': 60}"]}
I0106 18:08:05.463247   23767 eventsink.go:86] eventSink::Error(<{%reset%}>error creating synthetics test: 400 Bad Request: {"errors": ["properties.config.properties.request.additionalProperties: Additional properties are not allowed (u'timeout' was unexpected)\n\nFailed validating 'additionalProperties' in schema['properties']['config']['properties']['request']:\n    {'additionalProperties': False,\n     'properties': {'certificate': {'additionalProperties': False,\n                                    'properties': {'cert': {'additionalProperties': False,\n                                                            'properties': {'content': {'maxLength': 51200,\n                                                                                       'type': 'string'},\n                                                                           'filename': {'maxLength': 1500,\n                                                                                        'type': 'string'},\n                                                                           'updatedAt': {'maxLength': 1500,\n                                                                                         'type': 'string'}},\n                                                            'required': ['filename'],\n                                                            'type': 'object'},\n                                                   'key': {'additionalProperties': False,\n                                                           'properties': {'content': {'maxLength': 51200,\n                                                                                      'type': 'string'},\n                                                                          'filename': {'maxLength': 1500,\n                                                                                       'type': 'string'},\n                                                                          'updatedAt': {'maxLength': 1500,\n                                                                                        'type': 'string'}},\n                                                           'required': ['filename'],\n                                                           'type': 'object'}},\n                                    'required': ['cert', 'key'],\n                                    'type': 'object'},\n                    'host': {'maxLength': 6000, 'type': 'string'},\n                    'port': {'anyOf': [{'maxLength': 51200,\n                                        'type': 'string'},\n                                       {'maximum': 65535,\n                                        'minimum': 1,\n                                        'type': 'integer'}]}},\n     'required': ['host', 'port'],\n     'type': 'object'}\n\nOn instance['config']['request']:\n    {u'host': u'yahoo.com', u'port': 443, u'timeout': 60}"]}<{%reset%}>)
I0106 18:08:05.463429   23767 snapshot.go:301] SnapshotManager: createSnapshotMutation.End(..., false)
I0106 18:08:05.463455   23767 snapshot.go:521] SnapshotManager.markOperationComplete(urn:pulumi:prod::cloud-dd-synthetic::datadog:index/syntheticsTest:SyntheticsTest::test_yahoo)
I0106 18:08:05.593777   23767 step_executor.go:327] StepExecutor worker(2): step create on urn:pulumi:prod::cloud-dd-synthetic::datadog:index/syntheticsTest:SyntheticsTest::test_yahoo failed with an error: error creating synthetics test: 400 Bad Request: {"errors": ["properties.config.properties.request.additionalProperties: Additional properties are not allowed (u'timeout' was unexpected)\n\nFailed validating 'additionalProperties' in schema['properties']['config']['properties']['request']:\n    {'additionalProperties': False,\n     'properties': {'certificate': {'additionalProperties': False,\n                                    'properties': {'cert': {'additionalProperties': False,\n                                                            'properties': {'content': {'maxLength': 51200,\n                                                                                       'type': 'string'},\n                                                                           'filename': {'maxLength': 1500,\n                                                                                        'type': 'string'},\n                                                                           'updatedAt': {'maxLength': 1500,\n                                                                                         'type': 'string'}},\n                                                            'required': ['filename'],\n                                                            'type': 'object'},\n                                                   'key': {'additionalProperties': False,\n                                                           'properties': {'content': {'maxLength': 51200,\n                                                                                      'type': 'string'},\n                                                                          'filename': {'maxLength': 1500,\n                                                                                       'type': 'string'},\n                                                                          'updatedAt': {'maxLength': 1500,\n                                                                                        'type': 'string'}},\n                                                           'required': ['filename'],\n                                                           'type': 'object'}},\n                                    'required': ['cert', 'key'],\n                                    'type': 'object'},\n                    'host': {'maxLength': 6000, 'type': 'string'},\n                    'port': {'anyOf': [{'maxLength': 51200,\n                                        'type': 'string'},\n                                       {'maximum': 65535,\n                                        'minimum': 1,\n                                        'type': 'integer'}]}},\n     'required': ['host', 'port'],\n     'type': 'object'}\n\nOn instance['config']['request']:\n    {u'host': u'yahoo.com', u'port': 443, u'timeout': 60}"]}
I0106 18:08:05.593884   23767 step_executor.go:327] StepExecutor worker(2): step create on urn:pulumi:prod::cloud-dd-synthetic::datadog:index/syntheticsTest:SyntheticsTest::test_yahoo failed, signalling cancellation
I0106 18:08:05.593961   23767 deployment_executor.go:251] deploymentExecutor.Execute(...): context finished: context canceled
I0106 18:08:05.593982   23767 step_executor.go:327] StepExecutor worker(-1): StepExecutor.waitForCompletion(): waiting for worker threads to exit
I0106 18:08:05.594028   23767 step_executor.go:327] StepExecutor worker(-2): worker exiting due to cancellation
I0106 18:08:05.594068   23767 step_executor.go:327] StepExecutor worker(-1): StepExecutor.waitForCompletion(): worker threads all exited
I0106 18:08:05.594082   23767 deployment_executor.go:261] deploymentExecutor.Execute(...): step executor has completed
I0106 18:08:05.594103   23767 eventsink.go:86] eventSink::Error(<{%reset%}>update failed<{%reset%}>)
I0106 18:08:05.594247   23767 deployment_executor.go:132] deploymentExecutor.Execute(...): exiting provider canceller
I0106 18:08:05.598244   23767 langruntime_plugin.go:164] langhost[nodejs].Run(pwd=/home/sami/src/dd-infra,program=.,...,dryrun=false) failed: err=transport is closing

unable to compile a project that uses pulumi-datadog with less than 16GB of RAM

## bootstrap the go.mod; the go fmt will download the packages
$ cat >go.mod<<GO
module ddpd

go 1.14

require (
        github.com/pulumi/pulumi-datadog/sdk/v2 v2.6.0 // indirect
        github.com/pulumi/pulumi/sdk/v2 v2.0.0
)
GO

## this is obviously pseudocode due to golang mandating tabs
$ cat > main.go <<GO
package main

import (
        "github.com/pulumi/pulumi/sdk/v2/go/pulumi"
        "github.com/pulumi/pulumi-datadog/sdk/v2/go/datadog"
)

func main() {
        pulumi.Run(func(ctx *pulumi.Context) error {
                _, err := datadog.GetIpRanges(ctx, nil, nil)
                if err != nil {
                        return err
                }
                return nil
        })
}
GO

$ docker run --rm --memory 1G \
    -it -v $PWD:/foo \
    -w /foo \
    pulumi/pulumi-go:2.9.0 bash -exc 'go fmt main.go; go build -v -o /tmp/fred ./main.go'

produces:

[snip]
github.com/pulumi/pulumi/sdk/v2/go/pulumi
github.com/pulumi/pulumi-datadog/sdk/v2/go/datadog
go build github.com/pulumi/pulumi-datadog/sdk/v2/go/datadog: /usr/local/pkg/tool/linux_amd64/compile: signal: killed

I've tried it all the way up to 8GB without success, and I only mention the 16GB number because that's the point at which my machine exhausted its memory and locked up trying to build a project which uses this provider

SyntheticTest fails to "pick up" changes to URL argument after initial creation

When I create a Synthetics test say

new dd.SyntheticsTest(
  'test',
  {
    locations: ['aws:eu-central-1', 'aws:eu-west-1'],
    name: 'test',
    request: {
      method: 'GET',
      url: 'https://www.example.com'
    },
    assertions: [
      {
        type: 'statusCode',
        operator: 'is',
        target: 500
      }
    ],
    options: { tickEvery: 60 },
    message: 'test message',
    status: 'live',
    type: 'api',
    tags: ['example']
  },
  {}
)

it creates it no problem.

The issues arises when I change the url to a different one, like https://www.example2.com. The change does not seem to be "picked up".

▶ pulumi up
Previewing update (asdfasdf):
     Type                 Name               Plan     
     pulumi:pulumi:Stack  Examples-asdfasdf           
Resources:
    2 unchanged
Do you want to perform this update? no
confirmation declined, not proceeding with the update

Unable to set thresholds on datadog monitor

I've been trying to use the datadog provider in my pulumi python program to create a datadog monitor. When following the docs at https://www.pulumi.com/docs/reference/pkg/python/pulumi_datadog/ to create a monitor including thresholds like this

        my_monitor = datadog.Monitor(name='my name',
                                      resource_name='my-resource-name',
                                      type='metric alert',
                                      query='my query ...',
                                      tags=[
                                          'foo:bar',
                                      ],
                                      message='blah',
                                      thresholds=datadog.MonitorThresholdsArgs(
                                          ok=0,
                                          warning=2,
                                          warning_recovery=1,
                                          critical=4,
                                          critical_recovery=3,
                                      ),
                                      notify_no_data=False,
                                      renotify_interval=60,
                                      notify_audit=False,
                                      timeout_h=60,
                                      include_tags=True,
                                      opts=ResourceOptions(parent=self))

I get this error:

error: Traceback (most recent call last):
      File "/usr/bin/pulumi-language-python-exec", line 85, in <module>
        loop.run_until_complete(coro)
      File "/usr/local/lib/python3.8/asyncio/base_events.py", line 616, in run_until_complete
        return future.result()
      File "/usr/local/lib/python3.8/site-packages/pulumi/runtime/stack.py", line 83, in run_in_stack
        await run_pulumi_func(lambda: Stack(func))
      File "/usr/local/lib/python3.8/site-packages/pulumi/runtime/stack.py", line 51, in run_pulumi_func
        await RPC_MANAGER.rpcs.pop()
      File "/usr/local/lib/python3.8/site-packages/pulumi/runtime/rpc_manager.py", line 67, in rpc_wrapper
        result = await rpc
      File "/usr/local/lib/python3.8/site-packages/pulumi/runtime/resource.py", line 426, in do_register
        await rpc.resolve_outputs(res, resolver.serialized_props, resp.object, resolvers)
      File "/usr/local/lib/python3.8/site-packages/pulumi/runtime/rpc.py", line 502, in resolve_outputs
        translated_value = translate_output_properties(value, res.translate_output_property, types.get(key))
      File "/usr/local/lib/python3.8/site-packages/pulumi/runtime/rpc.py", line 466, in translate_output_properties
        raise AssertionError(f"Unexpected type. Expected 'list' got '{typ}'")
    AssertionError: Unexpected type. Expected 'list' got '<class 'pulumi_datadog.outputs.MonitorThresholds'>'

I'm using pulumi 2.8.2. Also tried 2.10.0 but got the same error.
I also tried providing a dict instead of using MonitorThresholdsArgs class, but get the same issue.

SyntheticsTest resource will always show diff of assertions with --refresh

I'm going to preface this with the fact that I'm not sure if this is an issue in Pulumi or in Terraform and I'd appreciate some help in determining where I should seek help.

Every time we run a pulumi preview --refresh --stack name --diff, we will see that the assertions are being added. It feels like the --refresh option is not properly querying the API and representing the assertions when populating the state and doing the diff.

Steps to reproduce

new datadog.SyntheticsTest(
  'some-name',
  {
    assertions: [
      {
        operator: 'lessThan',
        type: 'responseTime',
        target: responseTime,
      },
      {
        operator: 'is',
        type: 'statusCode',
        target: 200,
      }
    ],
    locations: ['aws:us-west-1'],
    message: pagerdutyMessage,
    'some-name',
    optionsList: {
      tickEvery: 300,
      minFailureDuration: 300,
      minLocationFailed: 1,
      followRedirects: true,
    },
    request: {
      method: 'GET',
      url: 'http://example.com',
      timeout: 30,
    },
    tags: defaultTags,
    type: 'api',
    subtype: 'http',
    status: 'live',
  }
)
  1. Given the resource above
  2. It has been deployed and no local changes have been made
  3. Run the command pulumi preview --refresh --stack name --diff
  4. You should see an update like the following:
~ assertions: [
    + [0]: {
        + operator  : "lessThan"
        + target    : 2000
        + type      : "responseTime"
    }
    + [1]: {
        + operator  : "is"
        + target    : 200
        + type      : "statusCode"
    }
]

Expected: There should be no updates made to the SyntheticsTest resource.
Actual: The assertions array always shows an update from an empty array to the array with our assertions.

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.