in pkg/api/deploymentapi/depresourceapi/new_payload.go [90:214]
func NewPayload(params NewPayloadParams) (*models.DeploymentCreateRequest, error) {
res, err := deptemplateapi.Get(deptemplateapi.GetParams{
API: params.API,
TemplateID: params.DeploymentTemplateID,
Region: params.Region,
})
if err != nil {
return nil, err
}
// Version Discovery
version, err := LatestStackVersion(LatestStackVersionParams{
Writer: params.Writer,
API: params.API,
Version: params.Version,
Region: params.Region,
})
if err != nil {
return nil, err
}
esPayload, err := ParseElasticsearchInput(ParseElasticsearchInputParams{
NewElasticsearchParams: NewElasticsearchParams{
RefID: params.ElasticsearchInstance.RefID,
Version: version,
Plugins: params.Plugins,
Region: params.Region,
TemplateID: params.DeploymentTemplateID,
DeploymentTemplateInfoV2: res,
},
API: params.API,
Size: params.ElasticsearchInstance.Size,
ZoneCount: params.ElasticsearchInstance.ZoneCount,
Writer: params.Writer,
TopologyElements: params.TopologyElements,
})
if err != nil {
return nil, err
}
kibanaPayload, err := NewKibana(NewStateless{
ElasticsearchRefID: params.ElasticsearchInstance.RefID,
API: params.API,
RefID: params.KibanaInstance.RefID,
Version: version,
Region: params.Region,
TemplateID: params.DeploymentTemplateID,
Size: params.KibanaInstance.Size,
ZoneCount: params.KibanaInstance.ZoneCount,
DeploymentTemplateInfoV2: res,
})
if err != nil {
return nil, err
}
resources := models.DeploymentCreateResources{
Elasticsearch: []*models.ElasticsearchPayload{esPayload},
Kibana: []*models.KibanaPayload{kibanaPayload},
}
if params.ApmEnable {
apmPayload, err := NewApm(NewStateless{
ElasticsearchRefID: params.ElasticsearchInstance.RefID,
API: params.API,
RefID: params.ApmInstance.RefID,
Version: version,
Region: params.Region,
TemplateID: params.DeploymentTemplateID,
Size: params.ApmInstance.Size,
ZoneCount: params.ApmInstance.ZoneCount,
DeploymentTemplateInfoV2: res,
})
if err != nil {
return nil, err
}
resources.Apm = []*models.ApmPayload{apmPayload}
}
if params.AppsearchEnable {
appsearchPayload, err := NewAppSearch(NewStateless{
ElasticsearchRefID: params.ElasticsearchInstance.RefID,
API: params.API,
RefID: params.AppsearchInstance.RefID,
Version: version,
Region: params.Region,
TemplateID: params.DeploymentTemplateID,
Size: params.AppsearchInstance.Size,
ZoneCount: params.AppsearchInstance.ZoneCount,
DeploymentTemplateInfoV2: res,
})
if err != nil {
return nil, err
}
resources.Appsearch = []*models.AppSearchPayload{appsearchPayload}
}
if params.EnterpriseSearchEnable {
enterpriseSearchPayload, err := NewEnterpriseSearch(
NewStateless{
ElasticsearchRefID: params.ElasticsearchInstance.RefID,
API: params.API,
RefID: params.EnterpriseSearchInstance.RefID,
Version: version,
Region: params.Region,
TemplateID: params.DeploymentTemplateID,
Size: params.EnterpriseSearchInstance.Size,
ZoneCount: params.EnterpriseSearchInstance.ZoneCount,
DeploymentTemplateInfoV2: res,
})
if err != nil {
return nil, err
}
resources.EnterpriseSearch = []*models.EnterpriseSearchPayload{enterpriseSearchPayload}
}
payload := models.DeploymentCreateRequest{
Name: params.Name,
Resources: &resources,
}
return &payload, nil
}