fix: service endpoint spec flattening

This commit is contained in:
Manuel Vogel 2020-02-01 15:50:59 +01:00
parent d8b0c139e5
commit ef47f0cbdb
No known key found for this signature in database
GPG key ID: 24E54F214569A8A5
2 changed files with 25 additions and 5 deletions

View file

@ -94,6 +94,7 @@ func resourceDockerServiceCreate(d *schema.ResourceData, meta interface{}) error
}
}
d.SetId(service.ID)
return resourceDockerServiceRead(d, meta)
}
@ -141,8 +142,8 @@ func resourceDockerServiceReadRefreshFunc(
jsonObj, _ := json.MarshalIndent(service, "", "\t")
log.Printf("[DEBUG] Docker service inspect: %s", jsonObj)
if service.Endpoint.Spec.Mode != service.Spec.EndpointSpec.Mode {
log.Printf("[DEBUG] endpoint.Spec of Service %s does not match Spec.EndpointSpec yet", serviceID)
if string(service.Endpoint.Spec.Mode) == "" && string(service.Spec.EndpointSpec.Mode) == "" {
log.Printf("[DEBUG] Service %s does not expose endpoint spec yet", apiService.ID)
return serviceID, "pending", nil
}
@ -162,8 +163,17 @@ func resourceDockerServiceReadRefreshFunc(
if err = d.Set("rollback_config", flattenServiceUpdateOrRollbackConfig(service.Spec.RollbackConfig)); err != nil {
log.Printf("[WARN] failed to set rollback_config from API: %s", err)
}
if err = d.Set("endpoint_spec", flattenServiceEndpointSpec(service.Endpoint)); err != nil {
log.Printf("[WARN] failed to set endpoint spec from API: %s", err)
if service.Endpoint.Spec.Mode != "" {
if err = d.Set("endpoint_spec", flattenServiceEndpoint(service.Endpoint)); err != nil {
log.Printf("[WARN] failed to set endpoint spec from API: %s", err)
}
} else if service.Spec.EndpointSpec.Mode != "" {
if err = d.Set("endpoint_spec", flattenServiceEndpointSpec(service.Spec.EndpointSpec)); err != nil {
log.Printf("[WARN] failed to set endpoint spec from API: %s", err)
}
} else {
return serviceID, "", fmt.Errorf("Error no endpoint spec for service %s", apiService.ID)
}
return serviceID, "all_fields", nil

View file

@ -85,7 +85,7 @@ func flattenServiceUpdateOrRollbackConfig(in *swarm.UpdateConfig) []interface{}
return out
}
func flattenServiceEndpointSpec(in swarm.Endpoint) []interface{} {
func flattenServiceEndpoint(in swarm.Endpoint) []interface{} {
var out = make([]interface{}, 0, 0)
m := make(map[string]interface{})
m["mode"] = string(in.Spec.Mode)
@ -95,6 +95,16 @@ func flattenServiceEndpointSpec(in swarm.Endpoint) []interface{} {
return out
}
func flattenServiceEndpointSpec(in *swarm.EndpointSpec) []interface{} {
var out = make([]interface{}, 0, 0)
m := make(map[string]interface{})
m["mode"] = string(in.Mode)
m["ports"] = flattenServicePorts(in.Ports)
out = append(out, m)
return out
}
///// start TaskSpec
func flattenContainerSpec(in *swarm.ContainerSpec) []interface{} {
var out = make([]interface{}, 0, 0)