in cmd/certificate_validate.go [18:72]
func (o certificateValidateOperation) execute() {
certificate, err := o.findCertificate(o.domainName)
if err != nil {
o.output.Fatal(err, "Could not validate certificate")
return
}
if !certificate.IsPendingValidation() {
o.output.Fatal(fmt.Errorf("certificate %s is in state %s", o.domainName, Humanize(certificate.Status)), "Could not validate certificate")
return
}
o.output.Debug("Listing hosted zones [API=route53 Action=ListHostedZones]")
hostedZones, err := o.route53.ListHostedZones()
if err != nil {
o.output.Fatal(err, "Could not validate certificate")
return
}
for _, v := range certificate.Validations {
switch {
case v.IsPendingValidation():
if zone, ok := hostedZones.FindSuperDomainOf(v.DomainName); ok {
o.output.Debug("Creating resource record [API=route53 Action=ChangeResourceRecordSets HostedZone=%s]", zone.ID)
id, err := o.route53.CreateResourceRecord(
route53.CreateResourceRecordInput{
HostedZoneID: zone.ID,
RecordType: v.ResourceRecord.Type,
Name: v.ResourceRecord.Name,
Value: v.ResourceRecord.Value,
},
)
if err != nil {
o.output.Fatal(err, "Could not validate certificate")
return
}
o.output.Debug("Created resource record [ChangeID=%s]", id)
o.output.Info("[%s] created validation record", v.DomainName)
} else {
o.output.Warn("[%s] could not find zone in Amazon Route 53", v.DomainName)
}
case v.IsSuccess():
o.output.Info("[%s] already validated", v.DomainName)
case v.IsFailed():
o.output.Fatal(nil, "[%s] failed validation", v.DomainName)
return
default:
o.output.Warn("[%s] unexpected status: %s", v.DomainName, Humanize(v.Status))
}
}
}