Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
15 changes: 14 additions & 1 deletion .generator/schemas/v2/openapi.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -5994,7 +5994,7 @@ components:
description: Request object.
properties:
data:
$ref: '#/components/schemas/CIAppCreatePipelineEventRequestData'
$ref: '#/components/schemas/CIAppCreatePipelineEventRequestDataSingleOrArray'
type: object
CIAppCreatePipelineEventRequestAttributes:
description: Attributes of the pipeline event to create.
Expand Down Expand Up @@ -6030,6 +6030,16 @@ components:
type:
$ref: '#/components/schemas/CIAppCreatePipelineEventRequestDataType'
type: object
CIAppCreatePipelineEventRequestDataArray:
description: Array of pipeline events to create in batch.
items:
$ref: '#/components/schemas/CIAppCreatePipelineEventRequestData'
type: array
CIAppCreatePipelineEventRequestDataSingleOrArray:
description: Data of the pipeline events to create.
oneOf:
- $ref: '#/components/schemas/CIAppCreatePipelineEventRequestData'
- $ref: '#/components/schemas/CIAppCreatePipelineEventRequestDataArray'
CIAppCreatePipelineEventRequestDataType:
default: cipipeline_resource_request
description: Type of the event.
Expand Down Expand Up @@ -51718,6 +51728,9 @@ paths:
we support, see [Pipeline Data Model And Execution Types](https://docs.datadoghq.com/continuous_integration/guides/pipeline_data_model/).


Multiple events can be sent in an array (up to 1000).


Pipeline events can be submitted with a timestamp that is up to 18 hours in
the past.'
operationId: CreateCIAppPipelineEvent
Expand Down
2 changes: 2 additions & 0 deletions api/datadogV2/api_ci_visibility_pipelines.go
Original file line number Diff line number Diff line change
Expand Up @@ -99,6 +99,8 @@ func (a *CIVisibilityPipelinesApi) AggregateCIAppPipelineEvents(ctx _context.Con
// CreateCIAppPipelineEvent Send pipeline event.
// Send your pipeline event to your Datadog platform over HTTP. For details about how pipeline executions are modeled and what execution types we support, see [Pipeline Data Model And Execution Types](https://docs.datadoghq.com/continuous_integration/guides/pipeline_data_model/).
//
// Multiple events can be sent in an array (up to 1000).
//
// Pipeline events can be submitted with a timestamp that is up to 18 hours in the past.
func (a *CIVisibilityPipelinesApi) CreateCIAppPipelineEvent(ctx _context.Context, body CIAppCreatePipelineEventRequest) (interface{}, *_nethttp.Response, error) {
var (
Expand Down
25 changes: 8 additions & 17 deletions api/datadogV2/model_ci_app_create_pipeline_event_request.go
Original file line number Diff line number Diff line change
Expand Up @@ -10,8 +10,8 @@ import (

// CIAppCreatePipelineEventRequest Request object.
type CIAppCreatePipelineEventRequest struct {
// Data of the pipeline event to create.
Data *CIAppCreatePipelineEventRequestData `json:"data,omitempty"`
// Data of the pipeline events to create.
Data *CIAppCreatePipelineEventRequestDataSingleOrArray `json:"data,omitempty"`
// UnparsedObject contains the raw value of the object if there was an error when deserializing into the struct
UnparsedObject map[string]interface{} `json:"-"`
AdditionalProperties map[string]interface{} `json:"-"`
Expand All @@ -35,17 +35,17 @@ func NewCIAppCreatePipelineEventRequestWithDefaults() *CIAppCreatePipelineEventR
}

// GetData returns the Data field value if set, zero value otherwise.
func (o *CIAppCreatePipelineEventRequest) GetData() CIAppCreatePipelineEventRequestData {
func (o *CIAppCreatePipelineEventRequest) GetData() CIAppCreatePipelineEventRequestDataSingleOrArray {
if o == nil || o.Data == nil {
var ret CIAppCreatePipelineEventRequestData
var ret CIAppCreatePipelineEventRequestDataSingleOrArray
return ret
}
return *o.Data
}

// GetDataOk returns a tuple with the Data field value if set, nil otherwise
// and a boolean to check if the value has been set.
func (o *CIAppCreatePipelineEventRequest) GetDataOk() (*CIAppCreatePipelineEventRequestData, bool) {
func (o *CIAppCreatePipelineEventRequest) GetDataOk() (*CIAppCreatePipelineEventRequestDataSingleOrArray, bool) {
if o == nil || o.Data == nil {
return nil, false
}
Expand All @@ -57,8 +57,8 @@ func (o *CIAppCreatePipelineEventRequest) HasData() bool {
return o != nil && o.Data != nil
}

// SetData gets a reference to the given CIAppCreatePipelineEventRequestData and assigns it to the Data field.
func (o *CIAppCreatePipelineEventRequest) SetData(v CIAppCreatePipelineEventRequestData) {
// SetData gets a reference to the given CIAppCreatePipelineEventRequestDataSingleOrArray and assigns it to the Data field.
func (o *CIAppCreatePipelineEventRequest) SetData(v CIAppCreatePipelineEventRequestDataSingleOrArray) {
o.Data = &v
}

Expand All @@ -81,7 +81,7 @@ func (o CIAppCreatePipelineEventRequest) MarshalJSON() ([]byte, error) {
// UnmarshalJSON deserializes the given payload.
func (o *CIAppCreatePipelineEventRequest) UnmarshalJSON(bytes []byte) (err error) {
all := struct {
Data *CIAppCreatePipelineEventRequestData `json:"data,omitempty"`
Data *CIAppCreatePipelineEventRequestDataSingleOrArray `json:"data,omitempty"`
}{}
if err = datadog.Unmarshal(bytes, &all); err != nil {
return datadog.Unmarshal(bytes, &o.UnparsedObject)
Expand All @@ -92,20 +92,11 @@ func (o *CIAppCreatePipelineEventRequest) UnmarshalJSON(bytes []byte) (err error
} else {
return err
}

hasInvalidField := false
if all.Data != nil && all.Data.UnparsedObject != nil && o.UnparsedObject == nil {
hasInvalidField = true
}
o.Data = all.Data

if len(additionalProperties) > 0 {
o.AdditionalProperties = additionalProperties
}

if hasInvalidField {
return datadog.Unmarshal(bytes, &o.UnparsedObject)
}

return nil
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,105 @@
// Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
// This product includes software developed at Datadog (https://www.datadoghq.com/).
// Copyright 2019-Present Datadog, Inc.

package datadogV2

import (
"github.com/DataDog/datadog-api-client-go/v2/api/datadog"
)

// CIAppCreatePipelineEventRequestDataSingleOrArray - Data of the pipeline events to create.
type CIAppCreatePipelineEventRequestDataSingleOrArray struct {
CIAppCreatePipelineEventRequestData *CIAppCreatePipelineEventRequestData
CIAppCreatePipelineEventRequestDataArray *[]CIAppCreatePipelineEventRequestData

// UnparsedObject contains the raw value of the object if there was an error when deserializing into the struct
UnparsedObject interface{}
}

// CIAppCreatePipelineEventRequestDataAsCIAppCreatePipelineEventRequestDataSingleOrArray is a convenience function that returns CIAppCreatePipelineEventRequestData wrapped in CIAppCreatePipelineEventRequestDataSingleOrArray.
func CIAppCreatePipelineEventRequestDataAsCIAppCreatePipelineEventRequestDataSingleOrArray(v *CIAppCreatePipelineEventRequestData) CIAppCreatePipelineEventRequestDataSingleOrArray {
return CIAppCreatePipelineEventRequestDataSingleOrArray{CIAppCreatePipelineEventRequestData: v}
}

// CIAppCreatePipelineEventRequestDataArrayAsCIAppCreatePipelineEventRequestDataSingleOrArray is a convenience function that returns []CIAppCreatePipelineEventRequestData wrapped in CIAppCreatePipelineEventRequestDataSingleOrArray.
func CIAppCreatePipelineEventRequestDataArrayAsCIAppCreatePipelineEventRequestDataSingleOrArray(v *[]CIAppCreatePipelineEventRequestData) CIAppCreatePipelineEventRequestDataSingleOrArray {
return CIAppCreatePipelineEventRequestDataSingleOrArray{CIAppCreatePipelineEventRequestDataArray: v}
}

// UnmarshalJSON turns data into one of the pointers in the struct.
func (obj *CIAppCreatePipelineEventRequestDataSingleOrArray) UnmarshalJSON(data []byte) error {
var err error
match := 0
// try to unmarshal data into CIAppCreatePipelineEventRequestData
err = datadog.Unmarshal(data, &obj.CIAppCreatePipelineEventRequestData)
if err == nil {
if obj.CIAppCreatePipelineEventRequestData != nil && obj.CIAppCreatePipelineEventRequestData.UnparsedObject == nil {
jsonCIAppCreatePipelineEventRequestData, _ := datadog.Marshal(obj.CIAppCreatePipelineEventRequestData)
if string(jsonCIAppCreatePipelineEventRequestData) == "{}" && string(data) != "{}" { // empty struct
obj.CIAppCreatePipelineEventRequestData = nil
} else {
match++
}
} else {
obj.CIAppCreatePipelineEventRequestData = nil
}
} else {
obj.CIAppCreatePipelineEventRequestData = nil
}

// try to unmarshal data into CIAppCreatePipelineEventRequestDataArray
err = datadog.Unmarshal(data, &obj.CIAppCreatePipelineEventRequestDataArray)
if err == nil {
if obj.CIAppCreatePipelineEventRequestDataArray != nil {
jsonCIAppCreatePipelineEventRequestDataArray, _ := datadog.Marshal(obj.CIAppCreatePipelineEventRequestDataArray)
if string(jsonCIAppCreatePipelineEventRequestDataArray) == "{}" && string(data) != "{}" { // empty struct
obj.CIAppCreatePipelineEventRequestDataArray = nil
} else {
match++
}
} else {
obj.CIAppCreatePipelineEventRequestDataArray = nil
}
} else {
obj.CIAppCreatePipelineEventRequestDataArray = nil
}

if match != 1 { // more than 1 match
// reset to nil
obj.CIAppCreatePipelineEventRequestData = nil
obj.CIAppCreatePipelineEventRequestDataArray = nil
return datadog.Unmarshal(data, &obj.UnparsedObject)
}
return nil // exactly one match
}

// MarshalJSON turns data from the first non-nil pointers in the struct to JSON.
func (obj CIAppCreatePipelineEventRequestDataSingleOrArray) MarshalJSON() ([]byte, error) {
if obj.CIAppCreatePipelineEventRequestData != nil {
return datadog.Marshal(&obj.CIAppCreatePipelineEventRequestData)
}

if obj.CIAppCreatePipelineEventRequestDataArray != nil {
return datadog.Marshal(&obj.CIAppCreatePipelineEventRequestDataArray)
}

if obj.UnparsedObject != nil {
return datadog.Marshal(obj.UnparsedObject)
}
return nil, nil // no data in oneOf schemas
}

// GetActualInstance returns the actual instance.
func (obj *CIAppCreatePipelineEventRequestDataSingleOrArray) GetActualInstance() interface{} {
if obj.CIAppCreatePipelineEventRequestData != nil {
return obj.CIAppCreatePipelineEventRequestData
}

if obj.CIAppCreatePipelineEventRequestDataArray != nil {
return obj.CIAppCreatePipelineEventRequestDataArray
}

// all schemas are nil
return nil
}
45 changes: 23 additions & 22 deletions examples/v2/ci-visibility-pipelines/CreateCIAppPipelineEvent.go
Original file line number Diff line number Diff line change
Expand Up @@ -15,28 +15,29 @@ import (

func main() {
body := datadogV2.CIAppCreatePipelineEventRequest{
Data: &datadogV2.CIAppCreatePipelineEventRequestData{
Attributes: &datadogV2.CIAppCreatePipelineEventRequestAttributes{
Resource: datadogV2.CIAppCreatePipelineEventRequestAttributesResource{
CIAppPipelineEventPipeline: &datadogV2.CIAppPipelineEventPipeline{
CIAppPipelineEventFinishedPipeline: &datadogV2.CIAppPipelineEventFinishedPipeline{
Level: datadogV2.CIAPPPIPELINEEVENTPIPELINELEVEL_PIPELINE,
UniqueId: "3eacb6f3-ff04-4e10-8a9c-46e6d054024a",
Name: "Deploy to AWS",
Url: "https://my-ci-provider.example/pipelines/my-pipeline/run/1",
Start: time.Now().Add(time.Second * -120),
End: time.Now().Add(time.Second * -30),
Status: datadogV2.CIAPPPIPELINEEVENTPIPELINESTATUS_SUCCESS,
PartialRetry: false,
Git: *datadogV2.NewNullableCIAppGitInfo(&datadogV2.CIAppGitInfo{
RepositoryUrl: "https://github.com/DataDog/datadog-agent",
Sha: "7f263865994b76066c4612fd1965215e7dcb4cd2",
AuthorEmail: "john.doe@email.com",
}),
}}},
},
Type: datadogV2.CIAPPCREATEPIPELINEEVENTREQUESTDATATYPE_CIPIPELINE_RESOURCE_REQUEST.Ptr(),
},
Data: &datadogV2.CIAppCreatePipelineEventRequestDataSingleOrArray{
CIAppCreatePipelineEventRequestData: &datadogV2.CIAppCreatePipelineEventRequestData{
Attributes: &datadogV2.CIAppCreatePipelineEventRequestAttributes{
Resource: datadogV2.CIAppCreatePipelineEventRequestAttributesResource{
CIAppPipelineEventPipeline: &datadogV2.CIAppPipelineEventPipeline{
CIAppPipelineEventFinishedPipeline: &datadogV2.CIAppPipelineEventFinishedPipeline{
Level: datadogV2.CIAPPPIPELINEEVENTPIPELINELEVEL_PIPELINE,
UniqueId: "3eacb6f3-ff04-4e10-8a9c-46e6d054024a",
Name: "Deploy to AWS",
Url: "https://my-ci-provider.example/pipelines/my-pipeline/run/1",
Start: time.Now().Add(time.Second * -120),
End: time.Now().Add(time.Second * -30),
Status: datadogV2.CIAPPPIPELINEEVENTPIPELINESTATUS_SUCCESS,
PartialRetry: false,
Git: *datadogV2.NewNullableCIAppGitInfo(&datadogV2.CIAppGitInfo{
RepositoryUrl: "https://github.com/DataDog/datadog-agent",
Sha: "7f263865994b76066c4612fd1965215e7dcb4cd2",
AuthorEmail: "john.doe@email.com",
}),
}}},
},
Type: datadogV2.CIAPPCREATEPIPELINEEVENTREQUESTDATATYPE_CIPIPELINE_RESOURCE_REQUEST.Ptr(),
}},
}
ctx := datadog.NewDefaultContext(context.Background())
configuration := datadog.NewConfiguration()
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -15,23 +15,24 @@ import (

func main() {
body := datadogV2.CIAppCreatePipelineEventRequest{
Data: &datadogV2.CIAppCreatePipelineEventRequestData{
Attributes: &datadogV2.CIAppCreatePipelineEventRequestAttributes{
Resource: datadogV2.CIAppCreatePipelineEventRequestAttributesResource{
CIAppPipelineEventJob: &datadogV2.CIAppPipelineEventJob{
Level: datadogV2.CIAPPPIPELINEEVENTJOBLEVEL_JOB,
Id: "cf9456de-8b9e-4c27-aa79-27b1e78c1a33",
Name: "Build image",
PipelineUniqueId: "3eacb6f3-ff04-4e10-8a9c-46e6d054024a",
PipelineName: "Deploy to AWS",
Start: time.Now().Add(time.Second * -120),
End: time.Now().Add(time.Second * -30),
Status: datadogV2.CIAPPPIPELINEEVENTJOBSTATUS_ERROR,
Url: "https://my-ci-provider.example/jobs/my-jobs/run/1",
}},
},
Type: datadogV2.CIAPPCREATEPIPELINEEVENTREQUESTDATATYPE_CIPIPELINE_RESOURCE_REQUEST.Ptr(),
},
Data: &datadogV2.CIAppCreatePipelineEventRequestDataSingleOrArray{
CIAppCreatePipelineEventRequestData: &datadogV2.CIAppCreatePipelineEventRequestData{
Attributes: &datadogV2.CIAppCreatePipelineEventRequestAttributes{
Resource: datadogV2.CIAppCreatePipelineEventRequestAttributesResource{
CIAppPipelineEventJob: &datadogV2.CIAppPipelineEventJob{
Level: datadogV2.CIAPPPIPELINEEVENTJOBLEVEL_JOB,
Id: "cf9456de-8b9e-4c27-aa79-27b1e78c1a33",
Name: "Build image",
PipelineUniqueId: "3eacb6f3-ff04-4e10-8a9c-46e6d054024a",
PipelineName: "Deploy to AWS",
Start: time.Now().Add(time.Second * -120),
End: time.Now().Add(time.Second * -30),
Status: datadogV2.CIAPPPIPELINEEVENTJOBSTATUS_ERROR,
Url: "https://my-ci-provider.example/jobs/my-jobs/run/1",
}},
},
Type: datadogV2.CIAPPCREATEPIPELINEEVENTREQUESTDATATYPE_CIPIPELINE_RESOURCE_REQUEST.Ptr(),
}},
}
ctx := datadog.NewDefaultContext(context.Background())
configuration := datadog.NewConfiguration()
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -15,27 +15,28 @@ import (

func main() {
body := datadogV2.CIAppCreatePipelineEventRequest{
Data: &datadogV2.CIAppCreatePipelineEventRequestData{
Attributes: &datadogV2.CIAppCreatePipelineEventRequestAttributes{
Resource: datadogV2.CIAppCreatePipelineEventRequestAttributesResource{
CIAppPipelineEventPipeline: &datadogV2.CIAppPipelineEventPipeline{
CIAppPipelineEventInProgressPipeline: &datadogV2.CIAppPipelineEventInProgressPipeline{
Level: datadogV2.CIAPPPIPELINEEVENTPIPELINELEVEL_PIPELINE,
UniqueId: "3eacb6f3-ff04-4e10-8a9c-46e6d054024a",
Name: "Deploy to AWS",
Url: "https://my-ci-provider.example/pipelines/my-pipeline/run/1",
Start: time.Now().Add(time.Second * -120),
Status: datadogV2.CIAPPPIPELINEEVENTPIPELINEINPROGRESSSTATUS_RUNNING,
PartialRetry: false,
Git: *datadogV2.NewNullableCIAppGitInfo(&datadogV2.CIAppGitInfo{
RepositoryUrl: "https://github.com/DataDog/datadog-agent",
Sha: "7f263865994b76066c4612fd1965215e7dcb4cd2",
AuthorEmail: "john.doe@email.com",
}),
}}},
},
Type: datadogV2.CIAPPCREATEPIPELINEEVENTREQUESTDATATYPE_CIPIPELINE_RESOURCE_REQUEST.Ptr(),
},
Data: &datadogV2.CIAppCreatePipelineEventRequestDataSingleOrArray{
CIAppCreatePipelineEventRequestData: &datadogV2.CIAppCreatePipelineEventRequestData{
Attributes: &datadogV2.CIAppCreatePipelineEventRequestAttributes{
Resource: datadogV2.CIAppCreatePipelineEventRequestAttributesResource{
CIAppPipelineEventPipeline: &datadogV2.CIAppPipelineEventPipeline{
CIAppPipelineEventInProgressPipeline: &datadogV2.CIAppPipelineEventInProgressPipeline{
Level: datadogV2.CIAPPPIPELINEEVENTPIPELINELEVEL_PIPELINE,
UniqueId: "3eacb6f3-ff04-4e10-8a9c-46e6d054024a",
Name: "Deploy to AWS",
Url: "https://my-ci-provider.example/pipelines/my-pipeline/run/1",
Start: time.Now().Add(time.Second * -120),
Status: datadogV2.CIAPPPIPELINEEVENTPIPELINEINPROGRESSSTATUS_RUNNING,
PartialRetry: false,
Git: *datadogV2.NewNullableCIAppGitInfo(&datadogV2.CIAppGitInfo{
RepositoryUrl: "https://github.com/DataDog/datadog-agent",
Sha: "7f263865994b76066c4612fd1965215e7dcb4cd2",
AuthorEmail: "john.doe@email.com",
}),
}}},
},
Type: datadogV2.CIAPPCREATEPIPELINEEVENTREQUESTDATATYPE_CIPIPELINE_RESOURCE_REQUEST.Ptr(),
}},
}
ctx := datadog.NewDefaultContext(context.Background())
configuration := datadog.NewConfiguration()
Expand Down
Loading
Loading