(ctx context.Context, args createArgs)
| 601 | } |
| 602 | |
| 603 | func createRecords(ctx context.Context, args createArgs) { |
| 604 | zone := lookupZone(ctx, args.name) |
| 605 | records := parseRecordList(args.records, zone) |
| 606 | expandSelfAliases(records, zone) |
| 607 | |
| 608 | grouped := groupRecords(records) |
| 609 | |
| 610 | var existing []*route53types.ResourceRecordSet |
| 611 | if args.replace || args.append { |
| 612 | var err error |
| 613 | existing, err = ListAllRecordSets(ctx, r53, *zone.Id) |
| 614 | fatalIfErr(err) |
| 615 | } |
| 616 | |
| 617 | additions := []route53types.Change{} |
| 618 | deletions := []route53types.Change{} |
| 619 | for _, values := range grouped { |
| 620 | rrset := ConvertBindToRRSet(values) |
| 621 | args.applyRRSetParams(rrset) |
| 622 | |
| 623 | addChange := route53types.Change{ |
| 624 | Action: route53types.ChangeActionCreate, |
| 625 | ResourceRecordSet: rrset, |
| 626 | } |
| 627 | additions = append(additions, addChange) |
| 628 | |
| 629 | if args.replace || args.append { |
| 630 | // add DELETE if there is an existing record |
| 631 | for _, candidate := range existing { |
| 632 | if equalCaseInsensitiveStringPtrs(rrset.Name, candidate.Name) && |
| 633 | rrset.Type == candidate.Type && |
| 634 | equalStringPtrs(rrset.SetIdentifier, candidate.SetIdentifier) { |
| 635 | change := route53types.Change{ |
| 636 | Action: route53types.ChangeActionDelete, |
| 637 | ResourceRecordSet: candidate, |
| 638 | } |
| 639 | deletions = append(deletions, change) |
| 640 | |
| 641 | if args.append { |
| 642 | additions[len(additions)-1].ResourceRecordSet.ResourceRecords = append(additions[len(additions)-1].ResourceRecordSet.ResourceRecords, candidate.ResourceRecords...) |
| 643 | } |
| 644 | break |
| 645 | } |
| 646 | } |
| 647 | } |
| 648 | } |
| 649 | |
| 650 | resp := batchChanges(ctx, additions, deletions, zone) |
| 651 | |
| 652 | for _, record := range records { |
| 653 | txt := strings.Replace(record.String(), "\t", " ", -1) |
| 654 | fmt.Printf("Created record: '%s'\n", txt) |
| 655 | } |
| 656 | |
| 657 | if args.wait { |
| 658 | waitForChange(ctx, resp.ChangeInfo) |
| 659 | } |
| 660 | } |
no test coverage detected