in ec/ecresource/deploymentresource/deployment/v2/deployment_read.go [188:265]
func ReadDeployment(res *models.DeploymentGetResponse, remotes *models.RemoteResources, deploymentResources []*models.DeploymentResource) (*Deployment, error) {
var dep Deployment
if res.ID == nil {
return nil, utils.MissingField("ID")
}
dep.Id = *res.ID
dep.Alias = res.Alias
if res.Name == nil {
return nil, utils.MissingField("Name")
}
dep.Name = *res.Name
if res.Metadata != nil {
dep.Tags = converters.ModelsTagsToMap(res.Metadata.Tags)
}
if res.Resources == nil {
return nil, nil
}
templateID, err := getDeploymentTemplateID(res.Resources)
if err != nil {
return nil, err
}
dep.DeploymentTemplateId = templateID
dep.Region = getRegion(res.Resources)
// We're reconciling the version and storing the lowest version of any
// of the deployment resources. This ensures that if an upgrade fails,
// the state version will be lower than the desired version, making
// retries possible. Once more resource types are added, the function
// needs to be modified to check those as well.
version, err := getLowestVersion(res.Resources)
if err != nil {
// This code path is highly unlikely, but we're bubbling up the
// error in case one of the versions isn't parseable by semver.
return nil, fmt.Errorf("failed reading deployment: %w", err)
}
dep.Version = version
dep.Elasticsearch, err = elasticsearchv2.ReadElasticsearches(res.Resources.Elasticsearch, remotes)
if err != nil {
return nil, err
}
if dep.Kibana, err = kibanav2.ReadKibanas(res.Resources.Kibana); err != nil {
return nil, err
}
if dep.Apm, err = apmv2.ReadApms(res.Resources.Apm); err != nil {
return nil, err
}
if dep.IntegrationsServer, err = integrationsserverv2.ReadIntegrationsServers(res.Resources.IntegrationsServer); err != nil {
return nil, err
}
if dep.EnterpriseSearch, err = enterprisesearchv2.ReadEnterpriseSearches(res.Resources.EnterpriseSearch); err != nil {
return nil, err
}
if dep.TrafficFilter, err = readTrafficFilters(res.Settings); err != nil {
return nil, err
}
if dep.Observability, err = observabilityv2.ReadObservability(res.Settings); err != nil {
return nil, err
}
dep.parseCredentials(deploymentResources)
return &dep, nil
}