From e44c1c83debe35c55d29345e72025eec687b6295 Mon Sep 17 00:00:00 2001 From: outscale_hmi Date: Mon, 3 Oct 2022 06:48:55 +0000 Subject: [PATCH] upgrade sdk go from v1 to v2 Signed-off-by: outscale_hmi --- builder/osc/bsu/builder.go | 6 +- builder/osc/bsu/step_create_omi.go | 78 ++- builder/osc/bsusurrogate/builder.go | 6 +- builder/osc/bsusurrogate/step_register_omi.go | 98 ++-- .../osc/bsusurrogate/step_snapshop_volumes.go | 41 +- builder/osc/bsuvolume/artifact.go | 12 +- builder/osc/bsuvolume/builder.go | 6 +- builder/osc/bsuvolume/step_tag_bsu_volumes.go | 34 +- builder/osc/chroot/builder.go | 4 +- builder/osc/chroot/step_check_root_device.go | 6 +- builder/osc/chroot/step_create_omi.go | 68 ++- builder/osc/chroot/step_create_volume.go | 60 +- builder/osc/chroot/step_link_volume.go | 31 +- builder/osc/chroot/step_snapshot.go | 25 +- builder/osc/chroot/step_vm_info.go | 21 +- builder/osc/common/access_config.go | 125 +++-- builder/osc/common/artifact.go | 24 +- builder/osc/common/block_device.go | 59 +- builder/osc/common/block_device_test.go | 174 +++--- builder/osc/common/build_filters.go | 52 +- builder/osc/common/interpolate_build_info.go | 12 +- .../osc/common/interpolate_build_info_test.go | 14 +- builder/osc/common/ssh.go | 114 ++-- builder/osc/common/state.go | 157 +++--- builder/osc/common/step_cleanup_volumes.go | 43 +- builder/osc/common/step_create_tags.go | 63 +-- builder/osc/common/step_deregister_omi.go | 44 +- builder/osc/common/step_get_password.go | 17 +- builder/osc/common/step_key_pair.go | 30 +- builder/osc/common/step_network_info.go | 69 ++- builder/osc/common/step_pre_validate.go | 22 +- builder/osc/common/step_public_ip.go | 23 +- builder/osc/common/step_run_source_vm.go | 121 ++-- builder/osc/common/step_security_group.go | 99 ++-- builder/osc/common/step_source_omi_info.go | 48 +- .../osc/common/step_source_omi_info_test.go | 6 +- builder/osc/common/step_stop_bsu_backed_vm.go | 24 +- builder/osc/common/step_update_omi.go | 36 +- builder/osc/common/tags.go | 24 +- example/most_recent_test.pkr.hcl | 6 +- go.mod | 157 +----- go.sum | 518 +----------------- 42 files changed, 911 insertions(+), 1666 deletions(-) diff --git a/builder/osc/bsu/builder.go b/builder/osc/bsu/builder.go index b775c896..f85c88b9 100644 --- a/builder/osc/bsu/builder.go +++ b/builder/osc/bsu/builder.go @@ -19,7 +19,7 @@ import ( packersdk "github.com/hashicorp/packer-plugin-sdk/packer" "github.com/hashicorp/packer-plugin-sdk/template/config" "github.com/hashicorp/packer-plugin-sdk/template/interpolate" - "github.com/outscale/osc-sdk-go/osc" + oscgo "github.com/outscale/osc-sdk-go/v2" osccommon "github.com/outscale/packer-plugin-outscale/builder/osc/common" ) @@ -86,7 +86,7 @@ func (b *Builder) Prepare(raws ...interface{}) ([]string, []string, error) { } func (b *Builder) Run(ctx context.Context, ui packersdk.Ui, hook packersdk.Hook) (packersdk.Artifact, error) { - var oscConn *osc.APIClient + var oscConn *oscgo.APIClient var err error if oscConn, err = b.config.NewOSCClient(); err != nil { return nil, err @@ -164,7 +164,7 @@ func (b *Builder) Run(ctx context.Context, ui packersdk.Ui, hook packersdk.Hook) &communicator.StepConnect{ Config: &b.config.RunConfig.Comm, Host: osccommon.OscSSHHost( - oscConn.VmApi, + oscConn, b.config.SSHInterface), SSHConfig: b.config.RunConfig.Comm.SSHConfigFunc(), }, diff --git a/builder/osc/bsu/step_create_omi.go b/builder/osc/bsu/step_create_omi.go index d177c2f5..af345399 100644 --- a/builder/osc/bsu/step_create_omi.go +++ b/builder/osc/bsu/step_create_omi.go @@ -5,72 +5,67 @@ import ( "fmt" "log" - "github.com/antihax/optional" "github.com/hashicorp/packer-plugin-sdk/multistep" packersdk "github.com/hashicorp/packer-plugin-sdk/packer" - "github.com/outscale/osc-sdk-go/osc" + oscgo "github.com/outscale/osc-sdk-go/v2" osccommon "github.com/outscale/packer-plugin-outscale/builder/osc/common" ) type stepCreateOMI struct { - image *osc.Image + image *oscgo.Image RawRegion string } func (s *stepCreateOMI) Run(ctx context.Context, state multistep.StateBag) multistep.StepAction { config := state.Get("config").(*Config) - oscconn := state.Get("osc").(*osc.APIClient) - vm := state.Get("vm").(osc.Vm) + oscconn := state.Get("osc").(*oscgo.APIClient) + vm := state.Get("vm").(oscgo.Vm) ui := state.Get("ui").(packersdk.Ui) // Create the image omiName := config.OMIName - ui.Say(fmt.Sprintf("Creating OMI %s from vm %s", omiName, vm.VmId)) - createOpts := osc.CreateImageRequest{ + ui.Say(fmt.Sprintf("Creating OMI %s from vm %s", omiName, vm.GetVmId())) + blockDeviceMapping := config.BlockDevices.BuildOscOMIDevices() + createOpts := oscgo.CreateImageRequest{ VmId: vm.VmId, - ImageName: omiName, - BlockDeviceMappings: config.BlockDevices.BuildOscOMIDevices(), + ImageName: &omiName, + BlockDeviceMappings: &blockDeviceMapping, } if config.OMIDescription != "" { - createOpts.Description = config.OMIDescription + createOpts.Description = &config.OMIDescription } - resp, _, err := oscconn.ImageApi.CreateImage(context.Background(), &osc.CreateImageOpts{ - CreateImageRequest: optional.NewInterface(createOpts), - }) - if err != nil || resp.Image.ImageId == "" { + resp, _, err := oscconn.ImageApi.CreateImage(context.Background()).CreateImageRequest(createOpts).Execute() + if err != nil || resp.GetImage().ImageId == nil { err := fmt.Errorf("Error creating OMI: %s", err) state.Put("error", err) ui.Error(err.Error()) return multistep.ActionHalt } - image := resp.Image + image := resp.GetImage() // Set the OMI ID in the state - ui.Message(fmt.Sprintf("OMI: %s", image.ImageId)) + ui.Message(fmt.Sprintf("OMI: %s", image.GetImageId())) omis := make(map[string]string) - omis[s.RawRegion] = image.ImageId + omis[s.RawRegion] = image.GetImageId() state.Put("omis", omis) // Wait for the image to become ready ui.Say("Waiting for OMI to become ready...") - if err := osccommon.WaitUntilOscImageAvailable(oscconn, image.ImageId); err != nil { + if err := osccommon.WaitUntilOscImageAvailable(oscconn, *image.ImageId); err != nil { log.Printf("Error waiting for OMI: %s", err) - imagesResp, _, err := oscconn.ImageApi.ReadImages(context.Background(), &osc.ReadImagesOpts{ - ReadImagesRequest: optional.NewInterface(osc.ReadImagesRequest{ - Filters: osc.FiltersImage{ - ImageIds: []string{image.ImageId}, - }, - }), - }) + req := oscgo.ReadImagesRequest{ + Filters: &oscgo.FiltersImage{ImageIds: &[]string{image.GetImageId()}}, + } + imagesResp, _, err := oscconn.ImageApi.ReadImages(context.Background()).ReadImagesRequest(req).Execute() if err != nil { log.Printf("Unable to determine reason waiting for OMI failed: %s", err) err = fmt.Errorf("Unknown error waiting for OMI") } else { - stateReason := imagesResp.Images[0].StateComment - err = fmt.Errorf("Error waiting for OMI. Reason: %s", stateReason) + stateReason := imagesResp.GetImages()[0].GetStateComment() + err = fmt.Errorf("Error waiting for OMI. Reason: %s", *stateReason.StateMessage) } state.Put("error", err) @@ -78,25 +73,23 @@ func (s *stepCreateOMI) Run(ctx context.Context, state multistep.StateBag) multi return multistep.ActionHalt } - imagesResp, _, err := oscconn.ImageApi.ReadImages(context.Background(), &osc.ReadImagesOpts{ - ReadImagesRequest: optional.NewInterface(osc.ReadImagesRequest{ - Filters: osc.FiltersImage{ - ImageIds: []string{image.ImageId}, - }, - }), - }) + req := oscgo.ReadImagesRequest{ + Filters: &oscgo.FiltersImage{ImageIds: &[]string{image.GetImageId()}}, + } + imagesResp, _, err := oscconn.ImageApi.ReadImages(context.Background()).ReadImagesRequest(req).Execute() if err != nil { err := fmt.Errorf("Error searching for OMI: %s", err) state.Put("error", err) ui.Error(err.Error()) return multistep.ActionHalt } - s.image = &imagesResp.Images[0] + s.image = &imagesResp.GetImages()[0] snapshots := make(map[string][]string) - for _, blockDeviceMapping := range imagesResp.Images[0].BlockDeviceMappings { - if blockDeviceMapping.Bsu.SnapshotId != "" { - snapshots[s.RawRegion] = append(snapshots[s.RawRegion], blockDeviceMapping.Bsu.SnapshotId) + blockMapping := imagesResp.GetImages()[0].BlockDeviceMappings + for _, blockDeviceMapping := range *blockMapping { + if blockDeviceMapping.Bsu.SnapshotId != nil { + snapshots[s.RawRegion] = append(snapshots[s.RawRegion], *blockDeviceMapping.Bsu.SnapshotId) } } state.Put("snapshots", snapshots) @@ -115,14 +108,13 @@ func (s *stepCreateOMI) Cleanup(state multistep.StateBag) { return } - oscconn := state.Get("osc").(*osc.APIClient) + oscconn := state.Get("osc").(*oscgo.APIClient) ui := state.Get("ui").(packersdk.Ui) ui.Say("Deregistering the OMI because cancellation or error...") - DeleteOpts := osc.DeleteImageRequest{ImageId: s.image.ImageId} - if _, _, err := oscconn.ImageApi.DeleteImage(context.Background(), &osc.DeleteImageOpts{ - DeleteImageRequest: optional.NewInterface(DeleteOpts), - }); err != nil { + DeleteOpts := oscgo.DeleteImageRequest{ImageId: s.image.GetImageId()} + _, _, err := oscconn.ImageApi.DeleteImage(context.Background()).DeleteImageRequest(DeleteOpts).Execute() + if err != nil { ui.Error(fmt.Sprintf("Error Deleting OMI, may still be around: %s", err)) return } diff --git a/builder/osc/bsusurrogate/builder.go b/builder/osc/bsusurrogate/builder.go index 9b006ff7..19d623f2 100644 --- a/builder/osc/bsusurrogate/builder.go +++ b/builder/osc/bsusurrogate/builder.go @@ -17,7 +17,7 @@ import ( packersdk "github.com/hashicorp/packer-plugin-sdk/packer" "github.com/hashicorp/packer-plugin-sdk/template/config" "github.com/hashicorp/packer-plugin-sdk/template/interpolate" - "github.com/outscale/osc-sdk-go/osc" + oscgo "github.com/outscale/osc-sdk-go/v2" osccommon "github.com/outscale/packer-plugin-outscale/builder/osc/common" ) @@ -103,7 +103,7 @@ func (b *Builder) Prepare(raws ...interface{}) ([]string, []string, error) { } func (b *Builder) Run(ctx context.Context, ui packersdk.Ui, hook packersdk.Hook) (packersdk.Artifact, error) { - var oscConn *osc.APIClient + var oscConn *oscgo.APIClient var err error if oscConn, err = b.config.NewOSCClient(); err != nil { @@ -186,7 +186,7 @@ func (b *Builder) Run(ctx context.Context, ui packersdk.Ui, hook packersdk.Hook) &communicator.StepConnect{ Config: &b.config.RunConfig.Comm, Host: osccommon.OscSSHHost( - oscConn.VmApi, + oscConn, b.config.SSHInterface), SSHConfig: b.config.RunConfig.Comm.SSHConfigFunc(), }, diff --git a/builder/osc/bsusurrogate/step_register_omi.go b/builder/osc/bsusurrogate/step_register_omi.go index ab00b096..9d3c7d63 100644 --- a/builder/osc/bsusurrogate/step_register_omi.go +++ b/builder/osc/bsusurrogate/step_register_omi.go @@ -4,45 +4,43 @@ import ( "context" "fmt" - "github.com/antihax/optional" "github.com/hashicorp/packer-plugin-sdk/multistep" packersdk "github.com/hashicorp/packer-plugin-sdk/packer" - "github.com/outscale/osc-sdk-go/osc" + "github.com/outscale/osc-sdk-go/v2" + oscgo "github.com/outscale/osc-sdk-go/v2" osccommon "github.com/outscale/packer-plugin-outscale/builder/osc/common" ) // StepRegisterOMI creates the OMI. type StepRegisterOMI struct { RootDevice RootBlockDevice - OMIDevices []osc.BlockDeviceMappingImage - LaunchDevices []osc.BlockDeviceMappingVmCreation - image *osc.Image + OMIDevices []oscgo.BlockDeviceMappingImage + LaunchDevices []oscgo.BlockDeviceMappingVmCreation + image *oscgo.Image RawRegion string } func (s *StepRegisterOMI) Run(ctx context.Context, state multistep.StateBag) multistep.StepAction { config := state.Get("config").(*Config) - oscconn := state.Get("osc").(*osc.APIClient) + oscconn := state.Get("osc").(*oscgo.APIClient) snapshotIds := state.Get("snapshot_ids").(map[string]string) ui := state.Get("ui").(packersdk.Ui) ui.Say("Registering the OMI...") blockDevices := s.combineDevices(snapshotIds) - - registerOpts := osc.CreateImageRequest{ - ImageName: config.OMIName, - Architecture: "x86_64", - RootDeviceName: s.RootDevice.DeviceName, - BlockDeviceMappings: blockDevices, + architecture := "x86_64" + registerOpts := oscgo.CreateImageRequest{ + ImageName: &config.OMIName, + Architecture: &architecture, + RootDeviceName: &s.RootDevice.DeviceName, + BlockDeviceMappings: &blockDevices, } if config.OMIDescription != "" { - registerOpts.Description = config.OMIDescription + registerOpts.Description = &config.OMIDescription } - registerResp, _, err := oscconn.ImageApi.CreateImage(context.Background(), &osc.CreateImageOpts{ - CreateImageRequest: optional.NewInterface(registerOpts), - }) + registerResp, _, err := oscconn.ImageApi.CreateImage(context.Background()).CreateImageRequest(registerOpts).Execute() if err != nil { state.Put("error", fmt.Errorf("Error registering OMI: %s", err)) ui.Error(state.Get("error").(error).Error()) @@ -50,40 +48,37 @@ func (s *StepRegisterOMI) Run(ctx context.Context, state multistep.StateBag) mul } // Set the OMI ID in the state - ui.Say(fmt.Sprintf("OMI: %s", registerResp.Image.ImageId)) + ui.Say(fmt.Sprintf("OMI: %s", *registerResp.GetImage().ImageId)) omis := make(map[string]string) - omis[s.RawRegion] = registerResp.Image.ImageId + omis[s.RawRegion] = *registerResp.GetImage().ImageId state.Put("omis", omis) // Wait for the image to become ready ui.Say("Waiting for OMI to become ready...") - if err := osccommon.WaitUntilOscImageAvailable(oscconn, registerResp.Image.ImageId); err != nil { + if err := osccommon.WaitUntilOscImageAvailable(oscconn, *registerResp.GetImage().ImageId); err != nil { err := fmt.Errorf("Error waiting for OMI: %s", err) state.Put("error", err) ui.Error(err.Error()) return multistep.ActionHalt } - imagesResp, _, err := oscconn.ImageApi.ReadImages(context.Background(), &osc.ReadImagesOpts{ - ReadImagesRequest: optional.NewInterface(osc.ReadImagesRequest{ - Filters: osc.FiltersImage{ - ImageIds: []string{registerResp.Image.ImageId}, - }, - }), - }) - + filterReq := oscgo.ReadImagesRequest{ + Filters: &oscgo.FiltersImage{ImageIds: &[]string{*registerResp.GetImage().ImageId}}, + } + imagesResp, _, err := oscconn.ImageApi.ReadImages(context.Background()).ReadImagesRequest(filterReq).Execute() if err != nil { err := fmt.Errorf("Error searching for OMI: %s", err) state.Put("error", err) ui.Error(err.Error()) return multistep.ActionHalt } - s.image = &imagesResp.Images[0] + s.image = &imagesResp.GetImages()[0] snapshots := make(map[string][]string) - for _, blockDeviceMapping := range imagesResp.Images[0].BlockDeviceMappings { - if blockDeviceMapping.Bsu.SnapshotId != "" { - snapshots[s.RawRegion] = append(snapshots[s.RawRegion], blockDeviceMapping.Bsu.SnapshotId) + block := imagesResp.GetImages()[0].BlockDeviceMappings + for _, blockDeviceMapping := range *block { + if blockDeviceMapping.Bsu.GetSnapshotId() != "" { + snapshots[s.RawRegion] = append(snapshots[s.RawRegion], blockDeviceMapping.Bsu.GetSnapshotId()) } } state.Put("snapshots", snapshots) @@ -102,62 +97,59 @@ func (s *StepRegisterOMI) Cleanup(state multistep.StateBag) { return } - oscconn := state.Get("osc").(*osc.APIClient) + oscconn := state.Get("osc").(*oscgo.APIClient) ui := state.Get("ui").(packersdk.Ui) ui.Say("Deregistering the OMI because cancellation or error...") - deregisterOpts := osc.DeleteImageRequest{ImageId: s.image.ImageId} - _, _, err := oscconn.ImageApi.DeleteImage(context.Background(), &osc.DeleteImageOpts{ - DeleteImageRequest: optional.NewInterface(deregisterOpts), - }) - + deregisterOpts := oscgo.DeleteImageRequest{ImageId: *s.image.ImageId} + _, _, err := oscconn.ImageApi.DeleteImage(context.Background()).DeleteImageRequest(deregisterOpts).Execute() if err != nil { ui.Error(fmt.Sprintf("Error deregistering OMI, may still be around: %s", err)) return } } -func (s *StepRegisterOMI) combineDevices(snapshotIDs map[string]string) []osc.BlockDeviceMappingImage { - devices := map[string]osc.BlockDeviceMappingImage{} +func (s *StepRegisterOMI) combineDevices(snapshotIDs map[string]string) []oscgo.BlockDeviceMappingImage { + devices := map[string]oscgo.BlockDeviceMappingImage{} for _, device := range s.OMIDevices { - devices[device.DeviceName] = device + devices[device.GetDeviceName()] = device } // Devices in launch_block_device_mappings override any with // the same name in ami_block_device_mappings, except for the // one designated as the root device in ami_root_device for _, device := range s.LaunchDevices { - snapshotID, ok := snapshotIDs[device.DeviceName] + snapshotID, ok := snapshotIDs[device.GetDeviceName()] if ok { - device.Bsu.SnapshotId = snapshotID + device.Bsu.SnapshotId = &snapshotID } - if device.DeviceName == s.RootDevice.SourceDeviceName { - device.DeviceName = s.RootDevice.DeviceName + if device.GetDeviceName() == s.RootDevice.SourceDeviceName { + device.DeviceName = &s.RootDevice.DeviceName - if device.Bsu.VolumeType != "" { - device.Bsu.VolumeType = s.RootDevice.VolumeType - if device.Bsu.VolumeType != "io1" { - device.Bsu.Iops = 0 + if device.Bsu.VolumeType != nil { + device.Bsu.VolumeType = &s.RootDevice.VolumeType + if *device.Bsu.VolumeType != "io1" { + *device.Bsu.Iops = 0 } } } - devices[device.DeviceName] = copyToDeviceMappingImage(device) + devices[device.GetDeviceName()] = copyToDeviceMappingImage(device) } - blockDevices := []osc.BlockDeviceMappingImage{} + blockDevices := []oscgo.BlockDeviceMappingImage{} for _, device := range devices { blockDevices = append(blockDevices, device) } return blockDevices } -func copyToDeviceMappingImage(device osc.BlockDeviceMappingVmCreation) osc.BlockDeviceMappingImage { - deviceImage := osc.BlockDeviceMappingImage{ +func copyToDeviceMappingImage(device osc.BlockDeviceMappingVmCreation) oscgo.BlockDeviceMappingImage { + deviceImage := oscgo.BlockDeviceMappingImage{ DeviceName: device.DeviceName, VirtualDeviceName: device.VirtualDeviceName, - Bsu: osc.BsuToCreate{ + Bsu: &oscgo.BsuToCreate{ DeleteOnVmDeletion: device.Bsu.DeleteOnVmDeletion, Iops: device.Bsu.Iops, SnapshotId: device.Bsu.SnapshotId, diff --git a/builder/osc/bsusurrogate/step_snapshop_volumes.go b/builder/osc/bsusurrogate/step_snapshop_volumes.go index 76421bd7..94fa632b 100644 --- a/builder/osc/bsusurrogate/step_snapshop_volumes.go +++ b/builder/osc/bsusurrogate/step_snapshop_volumes.go @@ -6,11 +6,10 @@ import ( "sync" "time" - "github.com/antihax/optional" multierror "github.com/hashicorp/go-multierror" "github.com/hashicorp/packer-plugin-sdk/multistep" packersdk "github.com/hashicorp/packer-plugin-sdk/packer" - "github.com/outscale/osc-sdk-go/osc" + oscgo "github.com/outscale/osc-sdk-go/v2" osccommon "github.com/outscale/packer-plugin-outscale/builder/osc/common" ) @@ -20,19 +19,19 @@ import ( // // snapshot_ids map[string]string - IDs of the created snapshots type StepSnapshotVolumes struct { - LaunchDevices []osc.BlockDeviceMappingVmCreation + LaunchDevices []oscgo.BlockDeviceMappingVmCreation snapshotIds map[string]string } func (s *StepSnapshotVolumes) snapshotVolume(ctx context.Context, deviceName string, state multistep.StateBag) error { - oscconn := state.Get("osc").(*osc.APIClient) + oscconn := state.Get("osc").(*oscgo.APIClient) ui := state.Get("ui").(packersdk.Ui) - vm := state.Get("vm").(osc.Vm) + vm := state.Get("vm").(oscgo.Vm) var volumeId string - for _, volume := range vm.BlockDeviceMappings { - if volume.DeviceName == deviceName { - volumeId = volume.Bsu.VolumeId + for _, volume := range *vm.BlockDeviceMappings { + if volume.GetDeviceName() == deviceName { + volumeId = volume.Bsu.GetVolumeId() } } if volumeId == "" { @@ -42,21 +41,20 @@ func (s *StepSnapshotVolumes) snapshotVolume(ctx context.Context, deviceName str ui.Say(fmt.Sprintf("Creating snapshot of EBS Volume %s...", volumeId)) description := fmt.Sprintf("Packer: %s", time.Now().String()) - createSnapResp, _, err := oscconn.SnapshotApi.CreateSnapshot(context.Background(), &osc.CreateSnapshotOpts{ - CreateSnapshotRequest: optional.NewInterface(osc.CreateSnapshotRequest{ - VolumeId: volumeId, - Description: description, - }), - }) + request := oscgo.CreateSnapshotRequest{ + Description: &description, + VolumeId: &volumeId, + } + createSnapResp, _, err := oscconn.SnapshotApi.CreateSnapshot(context.Background()).CreateSnapshotRequest(request).Execute() if err != nil { return err } // Set the snapshot ID so we can delete it later - s.snapshotIds[deviceName] = createSnapResp.Snapshot.SnapshotId + s.snapshotIds[deviceName] = *createSnapResp.Snapshot.SnapshotId // Wait for snapshot to be created - err = osccommon.WaitUntilOscSnapshotCompleted(oscconn, createSnapResp.Snapshot.SnapshotId) + err = osccommon.WaitUntilOscSnapshotCompleted(oscconn, *createSnapResp.Snapshot.SnapshotId) return err } @@ -69,9 +67,9 @@ func (s *StepSnapshotVolumes) Run(ctx context.Context, state multistep.StateBag) var errs *multierror.Error for _, device := range s.LaunchDevices { wg.Add(1) - go func(device osc.BlockDeviceMappingVmCreation) { + go func(device oscgo.BlockDeviceMappingVmCreation) { defer wg.Done() - if err := s.snapshotVolume(ctx, device.DeviceName, state); err != nil { + if err := s.snapshotVolume(ctx, device.GetDeviceName(), state); err != nil { errs = multierror.Append(errs, err) } }(device) @@ -98,13 +96,12 @@ func (s *StepSnapshotVolumes) Cleanup(state multistep.StateBag) { _, halted := state.GetOk(multistep.StateHalted) if cancelled || halted { - oscconn := state.Get("osc").(*osc.APIClient) + oscconn := state.Get("osc").(*oscgo.APIClient) ui := state.Get("ui").(packersdk.Ui) ui.Say("Removing snapshots since we cancelled or halted...") for _, snapshotID := range s.snapshotIds { - _, _, err := oscconn.SnapshotApi.DeleteSnapshot(context.Background(), &osc.DeleteSnapshotOpts{ - DeleteSnapshotRequest: optional.NewInterface(osc.DeleteSnapshotRequest{SnapshotId: snapshotID}), - }) + request := oscgo.DeleteSnapshotRequest{SnapshotId: snapshotID} + _, _, err := oscconn.SnapshotApi.DeleteSnapshot(context.Background()).DeleteSnapshotRequest(request).Execute() if err != nil { ui.Error(fmt.Sprintf("Error: %s", err)) } diff --git a/builder/osc/bsuvolume/artifact.go b/builder/osc/bsuvolume/artifact.go index 47ea083e..701cfe9e 100644 --- a/builder/osc/bsuvolume/artifact.go +++ b/builder/osc/bsuvolume/artifact.go @@ -7,10 +7,9 @@ import ( "sort" "strings" - "github.com/antihax/optional" packersdk "github.com/hashicorp/packer-plugin-sdk/packer" registryimage "github.com/hashicorp/packer-plugin-sdk/packer/registry/image" - "github.com/outscale/osc-sdk-go/osc" + oscgo "github.com/outscale/osc-sdk-go/v2" ) // map of region to list of volume IDs @@ -31,7 +30,7 @@ type Artifact struct { BuilderIdValue string // Client connection for performing API stuff. - Conn *osc.APIClient + Conn *oscgo.APIClient // StateData should store data such as GeneratedData // to be shared with post-processors @@ -85,12 +84,11 @@ func (a *Artifact) Destroy() error { for _, volumeID := range volumeIDs { log.Printf("Deregistering Volume ID (%s) from region (%s)", volumeID, region) - input := osc.DeleteVolumeRequest{ + input := oscgo.DeleteVolumeRequest{ VolumeId: volumeID, } - if _, _, err := a.Conn.VolumeApi.DeleteVolume(context.Background(), &osc.DeleteVolumeOpts{ - DeleteVolumeRequest: optional.NewInterface(optional.NewInterface(input)), - }); err != nil { + _, _, err := a.Conn.VolumeApi.DeleteVolume(context.Background()).DeleteVolumeRequest(input).Execute() + if err != nil { errors = append(errors, err) } } diff --git a/builder/osc/bsuvolume/builder.go b/builder/osc/bsuvolume/builder.go index 4dab17e1..8e27e777 100644 --- a/builder/osc/bsuvolume/builder.go +++ b/builder/osc/bsuvolume/builder.go @@ -17,7 +17,7 @@ import ( packersdk "github.com/hashicorp/packer-plugin-sdk/packer" "github.com/hashicorp/packer-plugin-sdk/template/config" "github.com/hashicorp/packer-plugin-sdk/template/interpolate" - "github.com/outscale/osc-sdk-go/osc" + oscgo "github.com/outscale/osc-sdk-go/v2" osccommon "github.com/outscale/packer-plugin-outscale/builder/osc/common" ) @@ -100,7 +100,7 @@ func (b *Builder) Run(ctx context.Context, ui packersdk.Ui, hook packersdk.Hook) // }, // } - var oscConn *osc.APIClient + var oscConn *oscgo.APIClient var err error if oscConn, err = b.config.NewOSCClient(); err != nil { return nil, err @@ -175,7 +175,7 @@ func (b *Builder) Run(ctx context.Context, ui packersdk.Ui, hook packersdk.Hook) &communicator.StepConnect{ Config: &b.config.RunConfig.Comm, Host: osccommon.OscSSHHost( - oscConn.VmApi, + oscConn, b.config.SSHInterface), SSHConfig: b.config.RunConfig.Comm.SSHConfigFunc(), }, diff --git a/builder/osc/bsuvolume/step_tag_bsu_volumes.go b/builder/osc/bsuvolume/step_tag_bsu_volumes.go index ecef68c4..58075053 100644 --- a/builder/osc/bsuvolume/step_tag_bsu_volumes.go +++ b/builder/osc/bsuvolume/step_tag_bsu_volumes.go @@ -4,11 +4,10 @@ import ( "context" "fmt" - "github.com/antihax/optional" "github.com/hashicorp/packer-plugin-sdk/multistep" packersdk "github.com/hashicorp/packer-plugin-sdk/packer" "github.com/hashicorp/packer-plugin-sdk/template/interpolate" - "github.com/outscale/osc-sdk-go/osc" + oscgo "github.com/outscale/osc-sdk-go/v2" ) type stepTagBSUVolumes struct { @@ -18,17 +17,17 @@ type stepTagBSUVolumes struct { } func (s *stepTagBSUVolumes) Run(_ context.Context, state multistep.StateBag) multistep.StepAction { - oscconn := state.Get("osc").(*osc.APIClient) - vm := state.Get("vm").(osc.Vm) + oscconn := state.Get("osc").(*oscgo.APIClient) + vm := state.Get("vm").(oscgo.Vm) ui := state.Get("ui").(packersdk.Ui) volumes := make(BsuVolumes) - for _, instanceBlockDevices := range vm.BlockDeviceMappings { + for _, instanceBlockDevices := range *vm.BlockDeviceMappings { for _, configVolumeMapping := range s.VolumeMapping { - if configVolumeMapping.DeviceName == instanceBlockDevices.DeviceName { + if &configVolumeMapping.DeviceName == instanceBlockDevices.DeviceName { volumes[s.RawRegion] = append( volumes[s.RawRegion], - instanceBlockDevices.Bsu.VolumeId) + instanceBlockDevices.Bsu.GetVolumeId()) } } } @@ -37,7 +36,7 @@ func (s *stepTagBSUVolumes) Run(_ context.Context, state multistep.StateBag) mul if len(s.VolumeMapping) > 0 { ui.Say("Tagging BSU volumes...") - toTag := map[string][]osc.ResourceTag{} + toTag := map[string][]oscgo.ResourceTag{} for _, mapping := range s.VolumeMapping { if len(mapping.Tags) == 0 { ui.Say(fmt.Sprintf("No tags specified for volume on %s...", mapping.DeviceName)) @@ -53,22 +52,21 @@ func (s *stepTagBSUVolumes) Run(_ context.Context, state multistep.StateBag) mul } tags.Report(ui) - for _, v := range vm.BlockDeviceMappings { - if v.DeviceName == mapping.DeviceName { - toTag[v.Bsu.VolumeId] = tags + for _, v := range *vm.BlockDeviceMappings { + if v.GetDeviceName() == mapping.DeviceName { + toTag[v.Bsu.GetVolumeId()] = tags } } } for volumeId, tags := range toTag { - _, _, err := oscconn.TagApi.CreateTags(context.Background(), &osc.CreateTagsOpts{ - CreateTagsRequest: optional.NewInterface(osc.CreateTagsRequest{ - ResourceIds: []string{volumeId}, - Tags: tags, - }), - }) + request := oscgo.CreateTagsRequest{ + ResourceIds: []string{volumeId}, + Tags: tags, + } + _, _, err := oscconn.TagApi.CreateTags(context.Background()).CreateTagsRequest(request).Execute() if err != nil { - err := fmt.Errorf("Error tagging BSU Volume %s on %s: %s", volumeId, vm.VmId, err) + err := fmt.Errorf("Error tagging BSU Volume %s on %s: %s", volumeId, vm.GetVmId(), err) state.Put("error", err) ui.Error(err.Error()) return multistep.ActionHalt diff --git a/builder/osc/chroot/builder.go b/builder/osc/chroot/builder.go index be32fada..af52849c 100644 --- a/builder/osc/chroot/builder.go +++ b/builder/osc/chroot/builder.go @@ -18,7 +18,7 @@ import ( packersdk "github.com/hashicorp/packer-plugin-sdk/packer" "github.com/hashicorp/packer-plugin-sdk/template/config" "github.com/hashicorp/packer-plugin-sdk/template/interpolate" - "github.com/outscale/osc-sdk-go/osc" + oscgo "github.com/outscale/osc-sdk-go/v2" osccommon "github.com/outscale/packer-plugin-outscale/builder/osc/common" ) @@ -189,7 +189,7 @@ func (b *Builder) Run(ctx context.Context, ui packersdk.Ui, hook packersdk.Hook) return nil, errors.New("The outscale-chroot builder only works on Linux environments.") } - var oscConn *osc.APIClient + var oscConn *oscgo.APIClient var err error if oscConn, err = b.config.NewOSCClient(); err != nil { return nil, err diff --git a/builder/osc/chroot/step_check_root_device.go b/builder/osc/chroot/step_check_root_device.go index 57f19290..ce683027 100644 --- a/builder/osc/chroot/step_check_root_device.go +++ b/builder/osc/chroot/step_check_root_device.go @@ -6,20 +6,20 @@ import ( "github.com/hashicorp/packer-plugin-sdk/multistep" packersdk "github.com/hashicorp/packer-plugin-sdk/packer" - "github.com/outscale/osc-sdk-go/osc" + oscgo "github.com/outscale/osc-sdk-go/v2" ) // StepCheckRootDevice makes sure the root device on the OMI is BSU-backed. type StepCheckRootDevice struct{} func (s *StepCheckRootDevice) Run(_ context.Context, state multistep.StateBag) multistep.StepAction { - image := state.Get("source_image").(osc.Image) + image := state.Get("source_image").(oscgo.Image) ui := state.Get("ui").(packersdk.Ui) ui.Say("Checking the root device on source OMI...") // It must be BSU-backed otherwise the build won't work - if image.RootDeviceType != "ebs" { + if image.GetRootDeviceType() != "ebs" { err := fmt.Errorf("The root device of the source OMI must be BSU-backed.") state.Put("error", err) ui.Error(err.Error()) diff --git a/builder/osc/chroot/step_create_omi.go b/builder/osc/chroot/step_create_omi.go index b4719676..8dee2b0f 100644 --- a/builder/osc/chroot/step_create_omi.go +++ b/builder/osc/chroot/step_create_omi.go @@ -4,10 +4,9 @@ import ( "context" "fmt" - "github.com/antihax/optional" "github.com/hashicorp/packer-plugin-sdk/multistep" packersdk "github.com/hashicorp/packer-plugin-sdk/packer" - "github.com/outscale/osc-sdk-go/osc" + oscgo "github.com/outscale/osc-sdk-go/v2" osccommon "github.com/outscale/packer-plugin-outscale/builder/osc/common" ) @@ -19,16 +18,16 @@ type StepCreateOMI struct { func (s *StepCreateOMI) Run(ctx context.Context, state multistep.StateBag) multistep.StepAction { config := state.Get("config").(*Config) - osconn := state.Get("osc").(*osc.APIClient) + osconn := state.Get("osc").(*oscgo.APIClient) snapshotId := state.Get("snapshot_id").(string) ui := state.Get("ui").(packersdk.Ui) ui.Say("Creating the OMI...") var ( - registerOpts osc.CreateImageRequest - mappings []osc.BlockDeviceMappingImage - image osc.Image + registerOpts oscgo.CreateImageRequest + mappings []oscgo.BlockDeviceMappingImage + image oscgo.Image rootDeviceName string ) @@ -36,28 +35,28 @@ func (s *StepCreateOMI) Run(ctx context.Context, state multistep.StateBag) multi mappings = config.OMIBlockDevices.BuildOscOMIDevices() rootDeviceName = config.RootDeviceName } else { - image = state.Get("source_image").(osc.Image) - mappings = image.BlockDeviceMappings - rootDeviceName = image.RootDeviceName + image = state.Get("source_image").(oscgo.Image) + mappings = *image.BlockDeviceMappings + rootDeviceName = *image.RootDeviceName } - newMappings := make([]osc.BlockDeviceMappingImage, len(mappings)) + newMappings := make([]oscgo.BlockDeviceMappingImage, len(mappings)) for i, device := range mappings { newDevice := device //FIX: Temporary fix - gibSize := newDevice.Bsu.VolumeSize / (1024 * 1024 * 1024) - newDevice.Bsu.VolumeSize = gibSize + gibSize := *newDevice.Bsu.VolumeSize / (1024 * 1024 * 1024) + newDevice.Bsu.VolumeSize = &gibSize - if newDevice.DeviceName == rootDeviceName { - if newDevice.Bsu != (osc.BsuToCreate{}) { - newDevice.Bsu.SnapshotId = snapshotId + if newDevice.GetDeviceName() == rootDeviceName { + if *newDevice.Bsu != (oscgo.BsuToCreate{}) { + newDevice.Bsu.SnapshotId = &snapshotId } else { - newDevice.Bsu = osc.BsuToCreate{SnapshotId: snapshotId} + newDevice.Bsu = &oscgo.BsuToCreate{SnapshotId: &snapshotId} } - if config.FromScratch || int32(s.RootVolumeSize) > newDevice.Bsu.VolumeSize { - newDevice.Bsu.VolumeSize = int32(s.RootVolumeSize) + if config.FromScratch || int32(s.RootVolumeSize) > newDevice.Bsu.GetVolumeSize() { + *newDevice.Bsu.VolumeSize = int32(s.RootVolumeSize) } } @@ -65,39 +64,38 @@ func (s *StepCreateOMI) Run(ctx context.Context, state multistep.StateBag) multi } if config.FromScratch { - registerOpts = osc.CreateImageRequest{ - ImageName: config.OMIName, - Architecture: "x86_64", - RootDeviceName: rootDeviceName, - BlockDeviceMappings: newMappings, + architecture := "x86_64" + registerOpts = oscgo.CreateImageRequest{ + ImageName: &config.OMIName, + Architecture: &architecture, + RootDeviceName: &rootDeviceName, + BlockDeviceMappings: &newMappings, } } else { registerOpts = buildRegisterOpts(config, image, newMappings) } if config.OMIDescription != "" { - registerOpts.Description = config.OMIDescription + registerOpts.Description = &config.OMIDescription } - registerResp, _, err := osconn.ImageApi.CreateImage(context.Background(), &osc.CreateImageOpts{ - CreateImageRequest: optional.NewInterface(registerOpts), - }) + registerResp, _, err := osconn.ImageApi.CreateImage(context.Background()).CreateImageRequest(registerOpts).Execute() if err != nil { state.Put("error", fmt.Errorf("Error registering OMI: %s", err)) ui.Error(state.Get("error").(error).Error()) return multistep.ActionHalt } - imageID := registerResp.Image.ImageId + imageID := registerResp.GetImage().ImageId // Set the OMI ID in the state - ui.Say(fmt.Sprintf("OMI: %s", imageID)) + ui.Say(fmt.Sprintf("OMI: %s", *imageID)) omis := make(map[string]string) - omis[s.RawRegion] = imageID + omis[s.RawRegion] = *imageID state.Put("omis", omis) ui.Say("Waiting for OMI to become ready...") - if err := osccommon.WaitUntilOscImageAvailable(osconn, imageID); err != nil { + if err := osccommon.WaitUntilOscImageAvailable(osconn, *imageID); err != nil { err := fmt.Errorf("Error waiting for OMI: %s", err) state.Put("error", err) ui.Error(err.Error()) @@ -109,12 +107,12 @@ func (s *StepCreateOMI) Run(ctx context.Context, state multistep.StateBag) multi func (s *StepCreateOMI) Cleanup(state multistep.StateBag) {} -func buildRegisterOpts(config *Config, image osc.Image, mappings []osc.BlockDeviceMappingImage) osc.CreateImageRequest { - registerOpts := osc.CreateImageRequest{ - ImageName: config.OMIName, +func buildRegisterOpts(config *Config, image oscgo.Image, mappings []oscgo.BlockDeviceMappingImage) oscgo.CreateImageRequest { + registerOpts := oscgo.CreateImageRequest{ + ImageName: &config.OMIName, Architecture: image.Architecture, RootDeviceName: image.RootDeviceName, - BlockDeviceMappings: mappings, + BlockDeviceMappings: &mappings, } return registerOpts } diff --git a/builder/osc/chroot/step_create_volume.go b/builder/osc/chroot/step_create_volume.go index 865b4e8a..3b0eb362 100644 --- a/builder/osc/chroot/step_create_volume.go +++ b/builder/osc/chroot/step_create_volume.go @@ -6,11 +6,10 @@ import ( "fmt" "log" - "github.com/antihax/optional" "github.com/hashicorp/packer-plugin-sdk/multistep" packersdk "github.com/hashicorp/packer-plugin-sdk/packer" "github.com/hashicorp/packer-plugin-sdk/template/interpolate" - "github.com/outscale/osc-sdk-go/osc" + oscgo "github.com/outscale/osc-sdk-go/v2" osccommon "github.com/outscale/packer-plugin-outscale/builder/osc/common" ) @@ -31,8 +30,8 @@ type StepCreateVolume struct { func (s *StepCreateVolume) Run(ctx context.Context, state multistep.StateBag) multistep.StepAction { config := state.Get("config").(*Config) - oscconn := state.Get("osc").(*osc.APIClient) - vm := state.Get("vm").(osc.Vm) + oscconn := state.Get("osc").(*oscgo.APIClient) + vm := state.Get("vm").(oscgo.Vm) ui := state.Get("ui").(packersdk.Ui) var err error @@ -45,7 +44,7 @@ func (s *StepCreateVolume) Run(ctx context.Context, state multistep.StateBag) mu return multistep.ActionHalt } - var createVolume *osc.CreateVolumeRequest + var createVolume *oscgo.CreateVolumeRequest if config.FromScratch { rootVolumeType := osccommon.VolumeTypeGp2 if s.RootVolumeType == "io1" { @@ -56,18 +55,19 @@ func (s *StepCreateVolume) Run(ctx context.Context, state multistep.StateBag) mu } else if s.RootVolumeType != "" { rootVolumeType = s.RootVolumeType } - createVolume = &osc.CreateVolumeRequest{ - SubregionName: vm.Placement.SubregionName, - Size: int32(s.RootVolumeSize), - VolumeType: rootVolumeType, + size := int32(s.RootVolumeSize) + createVolume = &oscgo.CreateVolumeRequest{ + SubregionName: vm.Placement.GetSubregionName(), + Size: &size, + VolumeType: &rootVolumeType, } } else { // Determine the root device snapshot - image := state.Get("source_image").(osc.Image) - log.Printf("Searching for root device of the image (%s)", image.RootDeviceName) - var rootDevice *osc.BlockDeviceMappingImage - for _, device := range image.BlockDeviceMappings { + image := state.Get("source_image").(oscgo.Image) + log.Printf("Searching for root device of the image (%s)", image.GetRootDeviceName()) + var rootDevice *oscgo.BlockDeviceMappingImage + for _, device := range *image.BlockDeviceMappings { if device.DeviceName == image.RootDeviceName { rootDevice = &device break @@ -75,7 +75,7 @@ func (s *StepCreateVolume) Run(ctx context.Context, state multistep.StateBag) mu } ui.Say("Creating the root volume...") - createVolume, err = s.buildCreateVolumeInput(vm.Placement.SubregionName, rootDevice) + createVolume, err = s.buildCreateVolumeInput(vm.Placement.GetSubregionName(), rootDevice) if err != nil { state.Put("error", err) ui.Error(err.Error()) @@ -85,9 +85,7 @@ func (s *StepCreateVolume) Run(ctx context.Context, state multistep.StateBag) mu log.Printf("Create args: %+v", createVolume) - createVolumeResp, _, err := oscconn.VolumeApi.CreateVolume(context.Background(), &osc.CreateVolumeOpts{ - CreateVolumeRequest: optional.NewInterface(*createVolume), - }) + createVolumeResp, _, err := oscconn.VolumeApi.CreateVolume(context.Background()).CreateVolumeRequest(*createVolume).Execute() if err != nil { err := fmt.Errorf("Error creating root volume: %s", err) state.Put("error", err) @@ -96,7 +94,7 @@ func (s *StepCreateVolume) Run(ctx context.Context, state multistep.StateBag) mu } // Set the volume ID so we remember to delete it later - s.volumeId = createVolumeResp.Volume.VolumeId + s.volumeId = *createVolumeResp.GetVolume().VolumeId log.Printf("Volume ID: %s", s.volumeId) //Create tags for volume @@ -127,47 +125,45 @@ func (s *StepCreateVolume) Cleanup(state multistep.StateBag) { return } - oscconn := state.Get("osc").(*osc.APIClient) + oscconn := state.Get("osc").(*oscgo.APIClient) ui := state.Get("ui").(packersdk.Ui) ui.Say("Deleting the created BSU volume...") - _, _, err := oscconn.VolumeApi.DeleteVolume(context.Background(), &osc.DeleteVolumeOpts{ - DeleteVolumeRequest: optional.NewInterface(osc.DeleteVolumeRequest{VolumeId: s.volumeId}), - }) + _, _, err := oscconn.VolumeApi.DeleteVolume(context.Background()).DeleteVolumeRequest(oscgo.DeleteVolumeRequest{VolumeId: s.volumeId}).Execute() if err != nil { ui.Error(fmt.Sprintf("Error deleting BSU volume: %s", err)) } } -func (s *StepCreateVolume) buildCreateVolumeInput(suregionName string, rootDevice *osc.BlockDeviceMappingImage) (*osc.CreateVolumeRequest, error) { +func (s *StepCreateVolume) buildCreateVolumeInput(suregionName string, rootDevice *oscgo.BlockDeviceMappingImage) (*oscgo.CreateVolumeRequest, error) { if rootDevice == nil { return nil, fmt.Errorf("Couldn't find root device") } //FIX: Temporary fix - gibSize := rootDevice.Bsu.VolumeSize / (1024 * 1024 * 1024) - createVolumeInput := &osc.CreateVolumeRequest{ + gibSize := *rootDevice.Bsu.VolumeSize / (1024 * 1024 * 1024) + createVolumeInput := &oscgo.CreateVolumeRequest{ SubregionName: suregionName, - Size: gibSize, + Size: &gibSize, SnapshotId: rootDevice.Bsu.SnapshotId, VolumeType: rootDevice.Bsu.VolumeType, Iops: rootDevice.Bsu.Iops, } - if int32(s.RootVolumeSize) > rootDevice.Bsu.VolumeSize { - createVolumeInput.Size = int32(s.RootVolumeSize) + if int32(s.RootVolumeSize) > *rootDevice.Bsu.VolumeSize { + *createVolumeInput.Size = int32(s.RootVolumeSize) } - if s.RootVolumeType == "" || s.RootVolumeType == rootDevice.Bsu.VolumeType { + if s.RootVolumeType == "" || s.RootVolumeType == rootDevice.Bsu.GetVolumeType() { return createVolumeInput, nil } if s.RootVolumeType == "io1" { - return nil, fmt.Errorf("Root volume type cannot be io1, because existing root volume type was %s", rootDevice.Bsu.VolumeType) + return nil, fmt.Errorf("Root volume type cannot be io1, because existing root volume type was %s", rootDevice.Bsu.GetVolumeType()) } - createVolumeInput.VolumeType = s.RootVolumeType + createVolumeInput.VolumeType = &s.RootVolumeType // non io1 cannot set iops - createVolumeInput.Iops = 0 + *createVolumeInput.Iops = 0 return createVolumeInput, nil } diff --git a/builder/osc/chroot/step_link_volume.go b/builder/osc/chroot/step_link_volume.go index ad286b7b..8d4741ec 100644 --- a/builder/osc/chroot/step_link_volume.go +++ b/builder/osc/chroot/step_link_volume.go @@ -4,10 +4,9 @@ import ( "context" "fmt" - "github.com/antihax/optional" "github.com/hashicorp/packer-plugin-sdk/multistep" packersdk "github.com/hashicorp/packer-plugin-sdk/packer" - "github.com/outscale/osc-sdk-go/osc" + oscgo "github.com/outscale/osc-sdk-go/v2" osccommon "github.com/outscale/packer-plugin-outscale/builder/osc/common" ) @@ -24,9 +23,9 @@ type StepLinkVolume struct { } func (s *StepLinkVolume) Run(ctx context.Context, state multistep.StateBag) multistep.StepAction { - oscconn := state.Get("osc").(*osc.APIClient) + oscconn := state.Get("osc").(*oscgo.APIClient) device := state.Get("device").(string) - vm := state.Get("vm").(osc.Vm) + vm := state.Get("vm").(oscgo.Vm) ui := state.Get("ui").(packersdk.Ui) volumeId := state.Get("volume_id").(string) @@ -35,14 +34,12 @@ func (s *StepLinkVolume) Run(ctx context.Context, state multistep.StateBag) mult linkVolume := device ui.Say(fmt.Sprintf("Attaching the root volume to %s", linkVolume)) - _, _, err := oscconn.VolumeApi.LinkVolume(context.Background(), &osc.LinkVolumeOpts{ - LinkVolumeRequest: optional.NewInterface(osc.LinkVolumeRequest{ - VmId: vm.VmId, - VolumeId: volumeId, - DeviceName: linkVolume, - }), - }) - + opts := oscgo.LinkVolumeRequest{ + DeviceName: linkVolume, + VmId: *vm.VmId, + VolumeId: volumeId, + } + _, _, err := oscconn.VolumeApi.LinkVolume(context.Background()).LinkVolumeRequest(opts).Execute() if err != nil { err := fmt.Errorf("Error attaching volume: %s", err) state.Put("error", err) @@ -79,14 +76,14 @@ func (s *StepLinkVolume) CleanupFunc(state multistep.StateBag) error { return nil } - oscconn := state.Get("osc").(*osc.APIClient) + oscconn := state.Get("osc").(*oscgo.APIClient) ui := state.Get("ui").(packersdk.Ui) ui.Say("Detaching BSU volume...") - _, _, err := oscconn.VolumeApi.UnlinkVolume(context.Background(), &osc.UnlinkVolumeOpts{ - UnlinkVolumeRequest: optional.NewInterface(osc.UnlinkVolumeRequest{VolumeId: s.volumeId}), - }) - + opts := oscgo.UnlinkVolumeRequest{ + VolumeId: s.volumeId, + } + _, _, err := oscconn.VolumeApi.UnlinkVolume(context.Background()).UnlinkVolumeRequest(opts).Execute() if err != nil { return fmt.Errorf("Error detaching BSU volume: %s", err) } diff --git a/builder/osc/chroot/step_snapshot.go b/builder/osc/chroot/step_snapshot.go index b5fe8bce..a57102dd 100644 --- a/builder/osc/chroot/step_snapshot.go +++ b/builder/osc/chroot/step_snapshot.go @@ -5,10 +5,9 @@ import ( "fmt" "time" - "github.com/antihax/optional" "github.com/hashicorp/packer-plugin-sdk/multistep" packersdk "github.com/hashicorp/packer-plugin-sdk/packer" - "github.com/outscale/osc-sdk-go/osc" + oscgo "github.com/outscale/osc-sdk-go/v2" osccommon "github.com/outscale/packer-plugin-outscale/builder/osc/common" ) @@ -23,19 +22,18 @@ type StepSnapshot struct { } func (s *StepSnapshot) Run(ctx context.Context, state multistep.StateBag) multistep.StepAction { - oscconn := state.Get("osc").(*osc.APIClient) + oscconn := state.Get("osc").(*oscgo.APIClient) ui := state.Get("ui").(packersdk.Ui) volumeId := state.Get("volume_id").(string) ui.Say("Creating snapshot...") description := fmt.Sprintf("Packer: %s", time.Now().String()) - createSnapResp, _, err := oscconn.SnapshotApi.CreateSnapshot(context.Background(), &osc.CreateSnapshotOpts{ - CreateSnapshotRequest: optional.NewInterface(osc.CreateSnapshotRequest{ - VolumeId: volumeId, - Description: description, - }), - }) + request := oscgo.CreateSnapshotRequest{ + Description: &description, + VolumeId: &volumeId, + } + createSnapResp, _, err := oscconn.SnapshotApi.CreateSnapshot(context.Background()).CreateSnapshotRequest(request).Execute() if err != nil { err := fmt.Errorf("Error creating snapshot: %s", err) state.Put("error", err) @@ -44,7 +42,7 @@ func (s *StepSnapshot) Run(ctx context.Context, state multistep.StateBag) multis } // Set the snapshot ID so we can delete it later - s.snapshotId = createSnapResp.Snapshot.SnapshotId + s.snapshotId = *createSnapResp.GetSnapshot().SnapshotId ui.Message(fmt.Sprintf("Snapshot ID: %s", s.snapshotId)) // Wait for the snapshot to be ready @@ -75,12 +73,11 @@ func (s *StepSnapshot) Cleanup(state multistep.StateBag) { _, halted := state.GetOk(multistep.StateHalted) if cancelled || halted { - oscconn := state.Get("osc").(*osc.APIClient) + oscconn := state.Get("osc").(*oscgo.APIClient) ui := state.Get("ui").(packersdk.Ui) ui.Say("Removing snapshot since we cancelled or halted...") - _, _, err := oscconn.SnapshotApi.DeleteSnapshot(context.Background(), &osc.DeleteSnapshotOpts{ - DeleteSnapshotRequest: optional.NewInterface(osc.DeleteSnapshotRequest{SnapshotId: s.snapshotId}), - }) + request := oscgo.DeleteSnapshotRequest{SnapshotId: s.snapshotId} + _, _, err := oscconn.SnapshotApi.DeleteSnapshot(context.Background()).DeleteSnapshotRequest(request).Execute() if err != nil { ui.Error(fmt.Sprintf("Error: %s", err)) } diff --git a/builder/osc/chroot/step_vm_info.go b/builder/osc/chroot/step_vm_info.go index 079deb08..8fdf61e7 100644 --- a/builder/osc/chroot/step_vm_info.go +++ b/builder/osc/chroot/step_vm_info.go @@ -5,17 +5,16 @@ import ( "fmt" "log" - "github.com/antihax/optional" "github.com/hashicorp/packer-plugin-sdk/multistep" packersdk "github.com/hashicorp/packer-plugin-sdk/packer" - "github.com/outscale/osc-sdk-go/osc" + oscgo "github.com/outscale/osc-sdk-go/v2" ) // StepVmInfo verifies that this builder is running on an Outscale vm. type StepVmInfo struct{} func (s *StepVmInfo) Run(_ context.Context, state multistep.StateBag) multistep.StepAction { - oscconn := state.Get("osc").(*osc.APIClient) + oscconn := state.Get("osc").(*oscgo.APIClient) //session := state.Get("clientConfig").(*session.Session) ui := state.Get("ui").(packersdk.Ui) @@ -37,11 +36,11 @@ func (s *StepVmInfo) Run(_ context.Context, state multistep.StateBag) multistep. log.Printf("[Debug] VmID got: %s", string(vmID)) // Query the entire vm metadata - resp, _, err := oscconn.VmApi.ReadVms(context.Background(), &osc.ReadVmsOpts{ - ReadVmsRequest: optional.NewInterface(osc.ReadVmsRequest{Filters: osc.FiltersVm{ - VmIds: []string{string(vmID)}, - }}), - }) + resp, _, err := oscconn.VmApi.ReadVms(context.Background()).ReadVmsRequest(oscgo.ReadVmsRequest{ + Filters: &oscgo.FiltersVm{ + VmIds: &[]string{string(vmID)}, + }, + }).Execute() if err != nil { err := fmt.Errorf("Error getting vm data: %s", err) state.Put("error", err) @@ -49,16 +48,16 @@ func (s *StepVmInfo) Run(_ context.Context, state multistep.StateBag) multistep. return multistep.ActionHalt } - vmsResp := resp + vmsResp := resp.GetVms() - if len(vmsResp.Vms) == 0 { + if len(vmsResp) == 0 { err := fmt.Errorf("Error getting vm data: no vm found") state.Put("error", err) ui.Error(err.Error()) return multistep.ActionHalt } - vm := vmsResp.Vms[0] + vm := vmsResp[0] state.Put("vm", vm) return multistep.ActionContinue diff --git a/builder/osc/common/access_config.go b/builder/osc/common/access_config.go index 6648e162..caf57a23 100644 --- a/builder/osc/common/access_config.go +++ b/builder/osc/common/access_config.go @@ -1,6 +1,7 @@ package common import ( + "context" "crypto/tls" "errors" "fmt" @@ -9,7 +10,8 @@ import ( "os" "github.com/hashicorp/packer-plugin-sdk/template/interpolate" - "github.com/outscale/osc-sdk-go/osc" + "github.com/outscale/osc-sdk-go/v2" + oscgo "github.com/outscale/osc-sdk-go/v2" "github.com/outscale/packer-plugin-outscale/version" ) @@ -41,59 +43,76 @@ func getValueFromEnvVariables(envVariables []string) (string, bool) { } // NewOSCClient retrieves the Outscale OSC-SDK client -func (c *AccessConfig) NewOSCClient() (*osc.APIClient, error) { - if c.AccessKey == "" { - var ok bool - if c.AccessKey, ok = getValueFromEnvVariables([]string{"OSC_ACCESS_KEY", "OUTSCALE_ACCESSKEYID"}); !ok { - return nil, errors.New("No access key has been setted (configuration file, environment variable : OSC_ACCESS_KEY or OUTSCALE_ACCESSKEYID)") - } - } - - if c.SecretKey == "" { - var ok bool - if c.SecretKey, ok = getValueFromEnvVariables([]string{"OSC_SECRET_KEY", "OUTSCALE_SECRETKEYID"}); !ok { - return nil, errors.New("No secret key has been setted (configuration file, environment variable : OSC_SECRET_KEY or OUTSCALE_SECRETKEYID)") - } - } - - if c.RawRegion == "" { - var ok bool - if c.RawRegion, ok = getValueFromEnvVariables([]string{"OSC_REGION", "OUTSCALE_REGION"}); !ok { - return nil, errors.New("No region has been setted (configuration file, environment variable : OSC_REGION or OUTSCALE_REGION)") - } +func (c *AccessConfig) NewOSCClient() (*oscgo.APIClient, error) { + /* + if c.AccessKey == "" { + var ok bool + if c.AccessKey, ok = getValueFromEnvVariables([]string{"OSC_ACCESS_KEY", "OUTSCALE_ACCESSKEYID"}); !ok { + return nil, errors.New("No access key has been setted (configuration file, environment variable : OSC_ACCESS_KEY or OUTSCALE_ACCESSKEYID)") + } + >>>>>>> f22fa63... upgrade sdk go from v1 to v2 + } + + if c.SecretKey == "" { + var ok bool + if c.SecretKey, ok = getValueFromEnvVariables([]string{"OSC_SECRET_KEY", "OUTSCALE_SECRETKEYID"}); !ok { + return nil, errors.New("No secret key has been setted (configuration file, environment variable : OSC_SECRET_KEY or OUTSCALE_SECRETKEYID)") + } + } + + if c.RawRegion == "" { + var ok bool + if c.RawRegion, ok = getValueFromEnvVariables([]string{"OSC_REGION", "OUTSCALE_REGION"}); !ok { + return nil, errors.New("No region has been setted (configuration file, environment variable : OSC_REGION or OUTSCALE_REGION)") + } + } + + if c.CustomEndpointOAPI == "" { + var ok bool + if c.CustomEndpointOAPI, ok = getValueFromEnvVariables([]string{"OSC_ENDPOINT_API", "OUTSCALE_OAPI_URL"}); !ok { + log.Printf("No Custom Endpoint has been setted") + } + } + + if c.CustomEndpointOAPI == "" { + c.CustomEndpointOAPI = "outscale.com/oapi/latest" + + if c.RawRegion == "cn-southeast-1" { + c.CustomEndpointOAPI = "outscale.hk/oapi/latest" + } + + } + + if c.X509certPath == "" { + var ok bool + if c.X509certPath, ok = getValueFromEnvVariables([]string{"OSC_X509_CLIENT_CERT", "OUTSCALE_X509CERT"}); !ok { + log.Printf("No Certificat Path has been setted") + } + } + + if c.X509keyPath == "" { + var ok bool + if c.X509certPath, ok = getValueFromEnvVariables([]string{"OSC_X509_CLIENT_KEY", "OUTSCALE_X509KEY"}); !ok { + log.Printf("No Key Path has been setted") + } + }*/ + oscClient := oscgo.NewConfigEnv() + config, err := oscClient.Configuration() + if err != nil { + return nil, errors.New("No access key has been setted (configuration file, environment variable : OSC_ACCESS_KEY or OUTSCALE_ACCESSKEYID") } - - if c.CustomEndpointOAPI == "" { - var ok bool - if c.CustomEndpointOAPI, ok = getValueFromEnvVariables([]string{"OSC_ENDPOINT_API", "OUTSCALE_OAPI_URL"}); !ok { - log.Printf("No Custom Endpoint has been setted") - } + ctx, err := oscClient.Context(context.Background()) + if err != nil { + return nil, errors.New("Cannot create context for making a query") } - - if c.CustomEndpointOAPI == "" { - c.CustomEndpointOAPI = "outscale.com/oapi/latest" - - if c.RawRegion == "cn-southeast-1" { - c.CustomEndpointOAPI = "outscale.hk/oapi/latest" - } - - } - - if c.X509certPath == "" { - var ok bool - if c.X509certPath, ok = getValueFromEnvVariables([]string{"OSC_X509_CLIENT_CERT", "OUTSCALE_X509CERT"}); !ok { - log.Printf("No Certificat Path has been setted") - } - } - - if c.X509keyPath == "" { - var ok bool - if c.X509certPath, ok = getValueFromEnvVariables([]string{"OSC_X509_CLIENT_KEY", "OUTSCALE_X509KEY"}); !ok { - log.Printf("No Key Path has been setted") - } + client := oscgo.NewAPIClient(config) + _, _, err = client.SubregionApi.ReadSubregions(ctx).ReadSubregionsRequest(oscgo.ReadSubregionsRequest{}).Execute() + if err != nil { + return nil, errors.New("Cannot call ReadSubregions") } + return client, nil - return c.NewOSCClientByRegion(c.RawRegion), nil + //return c.NewOSCClientByRegion(c.RawRegion), nil } // GetRegion retrieves the Outscale OSC-SDK Region set @@ -124,10 +143,10 @@ func (c *AccessConfig) NewOSCClientByRegion(region string) *osc.APIClient { skipClient.Transport = NewTransport(c.AccessKey, c.SecretKey, c.RawRegion, skipClient.Transport) - return osc.NewAPIClient(&osc.Configuration{ - BasePath: fmt.Sprintf("https://api.%s.%s", region, c.CustomEndpointOAPI), + return oscgo.NewAPIClient(&oscgo.Configuration{ + Host: fmt.Sprintf("api.%s.outscale.com", c.RawRegion), DefaultHeader: make(map[string]string), - UserAgent: fmt.Sprintf("packer-osc/%s", version.PluginVersion.String()), + UserAgent: fmt.Sprintf("packer-plugin-outscale/%s", version.PluginVersion.String()), HTTPClient: skipClient, Debug: true, }) diff --git a/builder/osc/common/artifact.go b/builder/osc/common/artifact.go index bddc43be..12712ef5 100644 --- a/builder/osc/common/artifact.go +++ b/builder/osc/common/artifact.go @@ -7,10 +7,9 @@ import ( "sort" "strings" - "github.com/antihax/optional" packersdk "github.com/hashicorp/packer-plugin-sdk/packer" registryimage "github.com/hashicorp/packer-plugin-sdk/packer/registry/image" - "github.com/outscale/osc-sdk-go/osc" + oscgo "github.com/outscale/osc-sdk-go/v2" ) // Artifact is an artifact implementation that contains built OMIs. @@ -82,28 +81,25 @@ func (a *Artifact) Destroy() error { regionConn := config.NewOSCClientByRegion(region) // Get image metadata - imageResp, _, err := regionConn.ImageApi.ReadImages(context.Background(), &osc.ReadImagesOpts{ - ReadImagesRequest: optional.NewInterface(osc.ReadImagesRequest{ - Filters: osc.FiltersImage{ - ImageIds: []string{imageId}, - }, - }), - }) + imageResp, _, err := regionConn.ImageApi.ReadImages(context.Background()).ReadImagesRequest(oscgo.ReadImagesRequest{ + Filters: &oscgo.FiltersImage{ + ImageIds: &[]string{imageId}, + }, + }).Execute() if err != nil { errors = append(errors, err) } - if len(imageResp.Images) == 0 { + if len(imageResp.GetImages()) == 0 { err := fmt.Errorf("Error retrieving details for OMI (%s), no images found", imageId) errors = append(errors, err) } // Deregister ami - input := osc.DeleteImageRequest{ + input := oscgo.DeleteImageRequest{ ImageId: imageId, } - if _, _, err := regionConn.ImageApi.DeleteImage(context.Background(), &osc.DeleteImageOpts{ - DeleteImageRequest: optional.NewInterface(input), - }); err != nil { + _, _, err = regionConn.ImageApi.DeleteImage(context.Background()).DeleteImageRequest(input).Execute() + if err != nil { errors = append(errors, err) } diff --git a/builder/osc/common/block_device.go b/builder/osc/common/block_device.go index 3751e386..f55fd8ad 100644 --- a/builder/osc/common/block_device.go +++ b/builder/osc/common/block_device.go @@ -5,8 +5,9 @@ import ( "log" "strings" + "github.com/aws/aws-sdk-go/aws" "github.com/hashicorp/packer-plugin-sdk/template/interpolate" - "github.com/outscale/osc-sdk-go/osc" + oscgo "github.com/outscale/osc-sdk-go/v2" ) // BlockDevice @@ -34,41 +35,41 @@ type LaunchBlockDevices struct { LaunchMappings []BlockDevice `mapstructure:"launch_block_device_mappings"` } -func buildOscBlockDevicesImage(b []BlockDevice) []osc.BlockDeviceMappingImage { - var blockDevices []osc.BlockDeviceMappingImage +func buildOscBlockDevicesImage(b []BlockDevice) []oscgo.BlockDeviceMappingImage { + var blockDevices []oscgo.BlockDeviceMappingImage for _, blockDevice := range b { - mapping := osc.BlockDeviceMappingImage{ - DeviceName: blockDevice.DeviceName, + mapping := oscgo.BlockDeviceMappingImage{ + DeviceName: &blockDevice.DeviceName, } if blockDevice.VirtualName != "" { if strings.HasPrefix(blockDevice.VirtualName, "ephemeral") { - mapping.VirtualDeviceName = blockDevice.VirtualName + mapping.VirtualDeviceName = &blockDevice.VirtualName } } else { - bsu := osc.BsuToCreate{ - DeleteOnVmDeletion: blockDevice.DeleteOnVmDeletion, + bsu := oscgo.BsuToCreate{ + DeleteOnVmDeletion: &blockDevice.DeleteOnVmDeletion, } if blockDevice.VolumeType != "" { - bsu.VolumeType = blockDevice.VolumeType + bsu.VolumeType = &blockDevice.VolumeType } if blockDevice.VolumeSize > 0 { - bsu.VolumeSize = int32(blockDevice.VolumeSize) + bsu.VolumeSize = aws.Int32(int32(blockDevice.VolumeSize)) } // IOPS is only valid for io1 type if blockDevice.VolumeType == "io1" { - bsu.Iops = int32(blockDevice.IOPS) + bsu.Iops = aws.Int32(int32(blockDevice.IOPS)) } if blockDevice.SnapshotId != "" { - bsu.SnapshotId = blockDevice.SnapshotId + bsu.SnapshotId = &blockDevice.SnapshotId } - mapping.Bsu = bsu + mapping.Bsu = &bsu } blockDevices = append(blockDevices, mapping) @@ -76,45 +77,47 @@ func buildOscBlockDevicesImage(b []BlockDevice) []osc.BlockDeviceMappingImage { return blockDevices } -func buildOscBlockDevicesVmCreation(b []BlockDevice) []osc.BlockDeviceMappingVmCreation { +func buildOscBlockDevicesVmCreation(b []BlockDevice) []oscgo.BlockDeviceMappingVmCreation { log.Printf("[DEBUG] Launch Block Device %#v", b) - var blockDevices []osc.BlockDeviceMappingVmCreation + var blockDevices []oscgo.BlockDeviceMappingVmCreation for _, blockDevice := range b { - mapping := osc.BlockDeviceMappingVmCreation{ - DeviceName: blockDevice.DeviceName, + mapping := oscgo.BlockDeviceMappingVmCreation{ + DeviceName: &blockDevice.DeviceName, } if blockDevice.NoDevice { - mapping.NoDevice = "" + mapping.NoDevice = aws.String("") + //blockDevices = mapping[0] } else if blockDevice.VirtualName != "" { if strings.HasPrefix(blockDevice.VirtualName, "ephemeral") { - mapping.VirtualDeviceName = blockDevice.VirtualName + mapping.VirtualDeviceName = &blockDevice.VirtualName } } else { - bsu := osc.BsuToCreate{ - DeleteOnVmDeletion: blockDevice.DeleteOnVmDeletion, + bsu := oscgo.BsuToCreate{ + DeleteOnVmDeletion: &blockDevice.DeleteOnVmDeletion, } if blockDevice.VolumeType != "" { - bsu.VolumeType = blockDevice.VolumeType + bsu.VolumeType = &blockDevice.VolumeType } if blockDevice.VolumeSize > 0 { - bsu.VolumeSize = int32(blockDevice.VolumeSize) + bsu.VolumeSize = aws.Int32(int32(blockDevice.VolumeSize)) + } // IOPS is only valid for io1 type if blockDevice.VolumeType == "io1" { - bsu.Iops = int32(blockDevice.IOPS) + bsu.Iops = aws.Int32(int32(blockDevice.IOPS)) } if blockDevice.SnapshotId != "" { - bsu.SnapshotId = blockDevice.SnapshotId + bsu.SnapshotId = &blockDevice.SnapshotId } - mapping.Bsu = bsu + mapping.Bsu = &bsu } blockDevices = append(blockDevices, mapping) @@ -144,10 +147,10 @@ func (b *BlockDevices) Prepare(ctx *interpolate.Context) (errs []error) { return errs } -func (b *OMIBlockDevices) BuildOscOMIDevices() []osc.BlockDeviceMappingImage { +func (b *OMIBlockDevices) BuildOscOMIDevices() []oscgo.BlockDeviceMappingImage { return buildOscBlockDevicesImage(b.OMIMappings) } -func (b *LaunchBlockDevices) BuildOSCLaunchDevices() []osc.BlockDeviceMappingVmCreation { +func (b *LaunchBlockDevices) BuildOSCLaunchDevices() []oscgo.BlockDeviceMappingVmCreation { return buildOscBlockDevicesVmCreation(b.LaunchMappings) } diff --git a/builder/osc/common/block_device_test.go b/builder/osc/common/block_device_test.go index 472a7f86..969083f1 100644 --- a/builder/osc/common/block_device_test.go +++ b/builder/osc/common/block_device_test.go @@ -4,13 +4,15 @@ import ( "reflect" "testing" - "github.com/outscale/osc-sdk-go/osc" + "github.com/aws/aws-sdk-go/aws" + + oscgo "github.com/outscale/osc-sdk-go/v2" ) func TestBlockDevice_LaunchDevices(t *testing.T) { cases := []struct { Config *BlockDevice - Result osc.BlockDeviceMappingVmCreation + Result oscgo.BlockDeviceMappingVmCreation }{ { Config: &BlockDevice{ @@ -21,13 +23,13 @@ func TestBlockDevice_LaunchDevices(t *testing.T) { DeleteOnVmDeletion: true, }, - Result: osc.BlockDeviceMappingVmCreation{ - DeviceName: "/dev/sdb", - Bsu: osc.BsuToCreate{ - SnapshotId: "snap-1234", - VolumeType: "standard", - VolumeSize: 8, - DeleteOnVmDeletion: true, + Result: oscgo.BlockDeviceMappingVmCreation{ + DeviceName: aws.String("/dev/sdb"), + Bsu: &oscgo.BsuToCreate{ + SnapshotId: aws.String("snap-1234"), + VolumeType: aws.String("standard"), + VolumeSize: aws.Int32(8), + DeleteOnVmDeletion: aws.Bool(true), }, }, }, @@ -37,11 +39,11 @@ func TestBlockDevice_LaunchDevices(t *testing.T) { VolumeSize: 8, }, - Result: osc.BlockDeviceMappingVmCreation{ - DeviceName: "/dev/sdb", - Bsu: osc.BsuToCreate{ - VolumeSize: 8, - DeleteOnVmDeletion: false, + Result: oscgo.BlockDeviceMappingVmCreation{ + DeviceName: aws.String("/dev/sdb"), + Bsu: &oscgo.BsuToCreate{ + VolumeSize: aws.Int32(8), + DeleteOnVmDeletion: aws.Bool(false), }, }, }, @@ -54,13 +56,13 @@ func TestBlockDevice_LaunchDevices(t *testing.T) { IOPS: 1000, }, - Result: osc.BlockDeviceMappingVmCreation{ - DeviceName: "/dev/sdb", - Bsu: osc.BsuToCreate{ - VolumeType: "io1", - VolumeSize: 8, - DeleteOnVmDeletion: true, - Iops: 1000, + Result: oscgo.BlockDeviceMappingVmCreation{ + DeviceName: aws.String("/dev/sdb"), + Bsu: &oscgo.BsuToCreate{ + VolumeType: aws.String("io1"), + VolumeSize: aws.Int32(8), + DeleteOnVmDeletion: aws.Bool(true), + Iops: aws.Int32(1000), }, }, }, @@ -72,12 +74,12 @@ func TestBlockDevice_LaunchDevices(t *testing.T) { DeleteOnVmDeletion: true, }, - Result: osc.BlockDeviceMappingVmCreation{ - DeviceName: "/dev/sdb", - Bsu: osc.BsuToCreate{ - VolumeType: "gp2", - VolumeSize: 8, - DeleteOnVmDeletion: true, + Result: oscgo.BlockDeviceMappingVmCreation{ + DeviceName: aws.String("/dev/sdb"), + Bsu: &oscgo.BsuToCreate{ + VolumeType: aws.String("gp2"), + VolumeSize: aws.Int32(8), + DeleteOnVmDeletion: aws.Bool(true), }, }, }, @@ -89,12 +91,12 @@ func TestBlockDevice_LaunchDevices(t *testing.T) { DeleteOnVmDeletion: true, }, - Result: osc.BlockDeviceMappingVmCreation{ - DeviceName: "/dev/sdb", - Bsu: osc.BsuToCreate{ - VolumeType: "gp2", - VolumeSize: 8, - DeleteOnVmDeletion: true, + Result: oscgo.BlockDeviceMappingVmCreation{ + DeviceName: aws.String("/dev/sdb"), + Bsu: &oscgo.BsuToCreate{ + VolumeType: aws.String("gp2"), + VolumeSize: aws.Int32(8), + DeleteOnVmDeletion: aws.Bool(true), }, }, }, @@ -105,11 +107,11 @@ func TestBlockDevice_LaunchDevices(t *testing.T) { DeleteOnVmDeletion: true, }, - Result: osc.BlockDeviceMappingVmCreation{ - DeviceName: "/dev/sdb", - Bsu: osc.BsuToCreate{ - VolumeType: "standard", - DeleteOnVmDeletion: true, + Result: oscgo.BlockDeviceMappingVmCreation{ + DeviceName: aws.String("/dev/sdb"), + Bsu: &oscgo.BsuToCreate{ + VolumeType: aws.String("standard"), + DeleteOnVmDeletion: aws.Bool(true), }, }, }, @@ -119,9 +121,9 @@ func TestBlockDevice_LaunchDevices(t *testing.T) { VirtualName: "ephemeral0", }, - Result: osc.BlockDeviceMappingVmCreation{ - DeviceName: "/dev/sdb", - VirtualDeviceName: "ephemeral0", + Result: oscgo.BlockDeviceMappingVmCreation{ + DeviceName: aws.String("/dev/sdb"), + VirtualDeviceName: aws.String("ephemeral0"), }, }, { @@ -130,9 +132,9 @@ func TestBlockDevice_LaunchDevices(t *testing.T) { NoDevice: true, }, - Result: osc.BlockDeviceMappingVmCreation{ - DeviceName: "/dev/sdb", - NoDevice: "", + Result: oscgo.BlockDeviceMappingVmCreation{ + DeviceName: aws.String("/dev/sdb"), + NoDevice: aws.String(""), }, }, } @@ -143,7 +145,7 @@ func TestBlockDevice_LaunchDevices(t *testing.T) { LaunchMappings: []BlockDevice{*tc.Config}, } - expected := []osc.BlockDeviceMappingVmCreation{tc.Result} + expected := []oscgo.BlockDeviceMappingVmCreation{tc.Result} launchResults := launchBlockDevices.BuildOSCLaunchDevices() if !reflect.DeepEqual(expected, launchResults) { @@ -156,7 +158,7 @@ func TestBlockDevice_LaunchDevices(t *testing.T) { func TestBlockDevice_OMI(t *testing.T) { cases := []struct { Config *BlockDevice - Result osc.BlockDeviceMappingImage + Result oscgo.BlockDeviceMappingImage }{ { Config: &BlockDevice{ @@ -167,13 +169,13 @@ func TestBlockDevice_OMI(t *testing.T) { DeleteOnVmDeletion: true, }, - Result: osc.BlockDeviceMappingImage{ - DeviceName: "/dev/sdb", - Bsu: osc.BsuToCreate{ - SnapshotId: "snap-1234", - VolumeType: "standard", - VolumeSize: 8, - DeleteOnVmDeletion: true, + Result: oscgo.BlockDeviceMappingImage{ + DeviceName: aws.String("/dev/sdb"), + Bsu: &oscgo.BsuToCreate{ + SnapshotId: aws.String("snap-1234"), + VolumeType: aws.String("standard"), + VolumeSize: aws.Int32(8), + DeleteOnVmDeletion: aws.Bool(true), }, }, }, @@ -184,11 +186,11 @@ func TestBlockDevice_OMI(t *testing.T) { DeleteOnVmDeletion: true, }, - Result: osc.BlockDeviceMappingImage{ - DeviceName: "/dev/sdb", - Bsu: osc.BsuToCreate{ - VolumeSize: 8, - DeleteOnVmDeletion: true, + Result: oscgo.BlockDeviceMappingImage{ + DeviceName: aws.String("/dev/sdb"), + Bsu: &oscgo.BsuToCreate{ + VolumeSize: aws.Int32(8), + DeleteOnVmDeletion: aws.Bool(true), }, }, }, @@ -201,13 +203,13 @@ func TestBlockDevice_OMI(t *testing.T) { IOPS: 1000, }, - Result: osc.BlockDeviceMappingImage{ - DeviceName: "/dev/sdb", - Bsu: osc.BsuToCreate{ - VolumeType: "io1", - VolumeSize: 8, - DeleteOnVmDeletion: true, - Iops: 1000, + Result: oscgo.BlockDeviceMappingImage{ + DeviceName: aws.String("/dev/sdb"), + Bsu: &oscgo.BsuToCreate{ + VolumeType: aws.String("io1"), + VolumeSize: aws.Int32(8), + DeleteOnVmDeletion: aws.Bool(true), + Iops: aws.Int32(1000), }, }, }, @@ -219,12 +221,12 @@ func TestBlockDevice_OMI(t *testing.T) { DeleteOnVmDeletion: true, }, - Result: osc.BlockDeviceMappingImage{ - DeviceName: "/dev/sdb", - Bsu: osc.BsuToCreate{ - VolumeType: "gp2", - VolumeSize: 8, - DeleteOnVmDeletion: true, + Result: oscgo.BlockDeviceMappingImage{ + DeviceName: aws.String("/dev/sdb"), + Bsu: &oscgo.BsuToCreate{ + VolumeType: aws.String("gp2"), + VolumeSize: aws.Int32(8), + DeleteOnVmDeletion: aws.Bool(true), }, }, }, @@ -236,12 +238,12 @@ func TestBlockDevice_OMI(t *testing.T) { DeleteOnVmDeletion: true, }, - Result: osc.BlockDeviceMappingImage{ - DeviceName: "/dev/sdb", - Bsu: osc.BsuToCreate{ - VolumeType: "gp2", - VolumeSize: 8, - DeleteOnVmDeletion: true, + Result: oscgo.BlockDeviceMappingImage{ + DeviceName: aws.String("/dev/sdb"), + Bsu: &oscgo.BsuToCreate{ + VolumeType: aws.String("gp2"), + VolumeSize: aws.Int32(8), + DeleteOnVmDeletion: aws.Bool(true), }, }, }, @@ -252,11 +254,11 @@ func TestBlockDevice_OMI(t *testing.T) { DeleteOnVmDeletion: true, }, - Result: osc.BlockDeviceMappingImage{ - DeviceName: "/dev/sdb", - Bsu: osc.BsuToCreate{ - VolumeType: "standard", - DeleteOnVmDeletion: true, + Result: oscgo.BlockDeviceMappingImage{ + DeviceName: aws.String("/dev/sdb"), + Bsu: &oscgo.BsuToCreate{ + VolumeType: aws.String("standard"), + DeleteOnVmDeletion: aws.Bool(true), }, }, }, @@ -266,9 +268,9 @@ func TestBlockDevice_OMI(t *testing.T) { VirtualName: "ephemeral0", }, - Result: osc.BlockDeviceMappingImage{ - DeviceName: "/dev/sdb", - VirtualDeviceName: "ephemeral0", + Result: oscgo.BlockDeviceMappingImage{ + DeviceName: aws.String("/dev/sdb"), + VirtualDeviceName: aws.String("ephemeral0"), }, }, } @@ -278,7 +280,7 @@ func TestBlockDevice_OMI(t *testing.T) { OMIMappings: []BlockDevice{*tc.Config}, } - expected := []osc.BlockDeviceMappingImage{tc.Result} + expected := []oscgo.BlockDeviceMappingImage{tc.Result} omiResults := omiBlockDevices.BuildOscOMIDevices() if !reflect.DeepEqual(expected, omiResults) { diff --git a/builder/osc/common/build_filters.go b/builder/osc/common/build_filters.go index 993fe276..a48ecd1c 100644 --- a/builder/osc/common/build_filters.go +++ b/builder/osc/common/build_filters.go @@ -4,28 +4,28 @@ import ( "log" "strconv" - "github.com/outscale/osc-sdk-go/osc" + oscgo "github.com/outscale/osc-sdk-go/v2" ) -func buildOscNetFilters(input map[string]string) osc.FiltersNet { - var filters osc.FiltersNet +func buildOscNetFilters(input map[string]string) oscgo.FiltersNet { + var filters oscgo.FiltersNet for k, v := range input { filterValue := []string{v} switch name := k; name { case "ip-range": - filters.IpRanges = filterValue + filters.IpRanges = &filterValue case "dhcp-options-set-id": - filters.DhcpOptionsSetIds = filterValue + filters.DhcpOptionsSetIds = &filterValue case "is-default": if isDefault, err := strconv.ParseBool(v); err == nil { - filters.IsDefault = isDefault + filters.IsDefault = &isDefault } case "state": - filters.States = filterValue + filters.States = &filterValue case "tag-key": - filters.TagKeys = filterValue + filters.TagKeys = &filterValue case "tag-value": - filters.TagValues = filterValue + filters.TagValues = &filterValue default: log.Printf("[Debug] Unknown Filter Name: %s.", name) } @@ -33,25 +33,25 @@ func buildOscNetFilters(input map[string]string) osc.FiltersNet { return filters } -func buildOscSubnetFilters(input map[string]string) osc.FiltersSubnet { - var filters osc.FiltersSubnet +func buildOscSubnetFilters(input map[string]string) oscgo.FiltersSubnet { + var filters oscgo.FiltersSubnet for k, v := range input { filterValue := []string{v} switch name := k; name { case "available-ips-counts": if ipCount, err := strconv.Atoi(v); err == nil { - filters.AvailableIpsCounts = []int32{int32(ipCount)} + filters.AvailableIpsCounts = &[]int32{int32(ipCount)} } case "ip-ranges": - filters.IpRanges = filterValue + filters.IpRanges = &filterValue case "net-ids": - filters.NetIds = filterValue + filters.NetIds = &filterValue case "states": - filters.States = filterValue + filters.States = &filterValue case "subnet-ids": - filters.SubnetIds = filterValue + filters.SubnetIds = &filterValue case "sub-region-names": - filters.SubregionNames = filterValue + filters.SubregionNames = &filterValue default: log.Printf("[Debug] Unknown Filter Name: %s.", name) } @@ -59,28 +59,28 @@ func buildOscSubnetFilters(input map[string]string) osc.FiltersSubnet { return filters } -func buildOSCOMIFilters(input map[string]string) osc.FiltersImage { - var filters osc.FiltersImage +func buildOSCOMIFilters(input map[string]string) oscgo.FiltersImage { + var filters oscgo.FiltersImage for k, v := range input { filterValue := []string{v} switch name := k; name { case "account-alias": - filters.AccountAliases = filterValue + filters.AccountAliases = &filterValue case "account-id": - filters.AccountIds = filterValue + filters.AccountIds = &filterValue case "architecture": - filters.Architectures = filterValue + filters.Architectures = &filterValue case "image-id": - filters.ImageIds = filterValue + filters.ImageIds = &filterValue case "image-name": - filters.ImageNames = filterValue + filters.ImageNames = &filterValue // case "image-type": // filters.ImageTypes = filterValue case "virtualization-type": - filters.VirtualizationTypes = filterValue + filters.VirtualizationTypes = &filterValue case "root-device-type": - filters.RootDeviceTypes = filterValue + filters.RootDeviceTypes = &filterValue // case "block-device-mapping-volume-type": // filters.BlockDeviceMappingVolumeType = filterValue //Some params are missing. diff --git a/builder/osc/common/interpolate_build_info.go b/builder/osc/common/interpolate_build_info.go index 33444219..6a216803 100644 --- a/builder/osc/common/interpolate_build_info.go +++ b/builder/osc/common/interpolate_build_info.go @@ -2,7 +2,7 @@ package common import ( "github.com/hashicorp/packer-plugin-sdk/multistep" - "github.com/outscale/osc-sdk-go/osc" + oscgo "github.com/outscale/osc-sdk-go/v2" ) type BuildInfoTemplate struct { @@ -20,16 +20,16 @@ func extractBuildInfo(region string, state multistep.StateBag) *BuildInfoTemplat } } - sourceOMI := rawSourceOMI.(osc.Image) - sourceOMITags := make(map[string]string, len(sourceOMI.Tags)) - for _, tag := range sourceOMI.Tags { + sourceOMI := rawSourceOMI.(oscgo.Image) + sourceOMITags := make(map[string]string, len(*sourceOMI.Tags)) + for _, tag := range *sourceOMI.Tags { sourceOMITags[tag.Key] = tag.Value } return &BuildInfoTemplate{ BuildRegion: region, - SourceOMI: sourceOMI.ImageId, - SourceOMIName: sourceOMI.ImageName, + SourceOMI: *sourceOMI.ImageId, + SourceOMIName: *sourceOMI.ImageName, SourceOMITags: sourceOMITags, } } diff --git a/builder/osc/common/interpolate_build_info_test.go b/builder/osc/common/interpolate_build_info_test.go index 559acf7b..1a57f3e5 100644 --- a/builder/osc/common/interpolate_build_info_test.go +++ b/builder/osc/common/interpolate_build_info_test.go @@ -5,14 +5,16 @@ import ( "testing" "github.com/hashicorp/packer-plugin-sdk/multistep" - "github.com/outscale/osc-sdk-go/osc" + oscgo "github.com/outscale/osc-sdk-go/v2" ) -func testImage() osc.Image { - return osc.Image{ - ImageId: "ami-abcd1234", - ImageName: "ami_test_name", - Tags: []osc.ResourceTag{ +func testImage() oscgo.Image { + imageId := "ami-abcd1234" + imageName := "ami_test_name" + return oscgo.Image{ + ImageId: &imageId, + ImageName: &imageName, + Tags: &[]oscgo.ResourceTag{ { Key: "key-1", Value: "value-1", diff --git a/builder/osc/common/ssh.go b/builder/osc/common/ssh.go index f16b9f1b..170bd156 100644 --- a/builder/osc/common/ssh.go +++ b/builder/osc/common/ssh.go @@ -6,17 +6,10 @@ import ( "fmt" "time" - "net/http" - - "github.com/antihax/optional" "github.com/hashicorp/packer-plugin-sdk/multistep" - "github.com/outscale/osc-sdk-go/osc" + oscgo "github.com/outscale/osc-sdk-go/v2" ) -type oscDescriber interface { - ReadVms(ctx context.Context, localVarOptionals *osc.ReadVmsOpts) (osc.ReadVmsResponse, *http.Response, error) -} - var ( // modified in tests sshHostSleepDuration = time.Second @@ -24,65 +17,73 @@ var ( // SSHHost returns a function that can be given to the SSH communicator // for determining the SSH address based on the vm DNS name. -func SSHHost(e oscDescriber, sshInterface string) func(multistep.StateBag) (string, error) { +func SSHHost(conn *oscgo.APIClient, sshInterface string) func(multistep.StateBag) (string, error) { return func(state multistep.StateBag) (string, error) { const tries = 2 // <= with current structure to check result of describing `tries` times for j := 0; j <= tries; j++ { var host string - i := state.Get("vm").(osc.Vm) + i := state.Get("vm").(oscgo.Vm) if sshInterface != "" { switch sshInterface { case "public_ip": - if i.PublicIp != "" { - host = i.PublicIp + if i.GetPublicIp() != "" { + host = i.GetPublicIp() } case "public_dns": - if i.PublicDnsName != "" { - host = i.PublicDnsName + if i.GetPublicDnsName() != "" { + host = i.GetPublicDnsName() } case "private_ip": - if i.PrivateIp != "" { - host = i.PrivateIp + if i.GetPrivateIp() != "" { + host = i.GetPrivateIp() } case "private_dns": - if i.PrivateDnsName != "" { - host = i.PrivateDnsName + if i.GetPrivateDnsName() != "" { + host = i.GetPrivateDnsName() } default: panic(fmt.Sprintf("Unknown interface type: %s", sshInterface)) } - } else if i.NetId != "" { - if i.PublicIp != "" { - host = i.PublicIp - } else if i.PrivateIp != "" { - host = i.PrivateIp + } else if i.GetNetId() != "" { + if i.GetPublicIp() != "" { + host = i.GetPublicIp() + } else if i.GetPrivateIp() != "" { + host = i.GetPrivateIp() } - } else if i.PublicDnsName != "" { - host = i.PublicDnsName + } else if i.GetPublicDnsName() != "" { + host = i.GetPublicDnsName() } if host != "" { return host, nil } - - r, _, err := e.ReadVms(context.Background(), &osc.ReadVmsOpts{ + /*readFilters := oscgo.FiltersVm{ + VmIds: &[]string{i.VmId}, + }*/ + //readOpts := oscgo.ReadVmsRequest{Filters: &readFilters} + r, _, err := conn.VmApi.ReadVms(context.Background()).ReadVmsRequest(oscgo.ReadVmsRequest{ + Filters: &oscgo.FiltersVm{ + VmIds: &[]string{i.GetVmId()}, + }}).Execute() + //r, _, err := e.ReadVms(context.Background()).ReadVmsRequest(readOpts).Execute() + /*r, _, err := e.ReadVms(context.Background(), &osc.ReadVmsOpts{ ReadVmsRequest: optional.NewInterface(osc.ReadVmsRequest{ Filters: osc.FiltersVm{ VmIds: []string{i.VmId}, }, }), - }) + })*/ if err != nil { return "", err } - if len(r.Vms) == 0 { - return "", fmt.Errorf("vm not found: %s", i.VmId) + if len(r.GetVms()) == 0 { + return "", fmt.Errorf("vm not found: %s", i.GetVmId()) } - state.Put("vm", r.Vms[0]) + state.Put("vm", r.GetVms()[0]) time.Sleep(sshHostSleepDuration) } @@ -92,66 +93,63 @@ func SSHHost(e oscDescriber, sshInterface string) func(multistep.StateBag) (stri // SSHHost returns a function that can be given to the SSH communicator // for determining the SSH address based on the vm DNS name. -func OscSSHHost(e oscDescriber, sshInterface string) func(multistep.StateBag) (string, error) { +func OscSSHHost(conn *oscgo.APIClient, sshInterface string) func(multistep.StateBag) (string, error) { return func(state multistep.StateBag) (string, error) { const tries = 2 // <= with current structure to check result of describing `tries` times for j := 0; j <= tries; j++ { var host string - i := state.Get("vm").(osc.Vm) + i := state.Get("vm").(oscgo.Vm) if sshInterface != "" { switch sshInterface { case "public_ip": - if i.PublicIp != "" { - host = i.PublicIp + if i.GetPublicIp() != "" { + host = i.GetPublicIp() } case "public_dns": - if i.PublicDnsName != "" { - host = i.PublicDnsName + if i.GetPublicDnsName() != "" { + host = i.GetPublicDnsName() } case "private_ip": - if i.PrivateIp != "" { - host = i.PrivateIp + if i.GetPrivateIp() != "" { + host = i.GetPrivateIp() } case "private_dns": - if i.PrivateDnsName != "" { - host = i.PrivateDnsName + if i.GetPrivateDnsName() != "" { + host = i.GetPrivateDnsName() } default: panic(fmt.Sprintf("Unknown interface type: %s", sshInterface)) } - } else if i.NetId != "" { - if i.PublicIp != "" { - host = i.PublicIp - } else if i.PrivateIp != "" { - host = i.PrivateIp + } else if i.GetNetId() != "" { + if i.GetPublicIp() != "" { + host = i.GetPublicIp() + } else if i.GetPrivateIp() != "" { + host = i.GetPrivateIp() } - } else if i.PublicDnsName != "" { - host = i.PublicDnsName + } else if i.GetPublicDnsName() != "" { + host = i.GetPublicDnsName() } if host != "" { return host, nil } - r, _, err := e.ReadVms(context.Background(), &osc.ReadVmsOpts{ - ReadVmsRequest: optional.NewInterface(osc.ReadVmsRequest{ - Filters: osc.FiltersVm{ - VmIds: []string{i.VmId}, - }, - }), - }) + r, _, err := conn.VmApi.ReadVms(context.Background()).ReadVmsRequest(oscgo.ReadVmsRequest{ + Filters: &oscgo.FiltersVm{ + VmIds: &[]string{i.GetVmId()}, + }}).Execute() if err != nil { return "", err } - if len(r.Vms) == 0 { - return "", fmt.Errorf("vm not found: %s", i.VmId) + if len(r.GetVms()) == 0 { + return "", fmt.Errorf("vm not found: %s", i.GetVmId()) } - state.Put("vm", r.Vms[0]) + state.Put("vm", r.GetVms()[0]) time.Sleep(sshHostSleepDuration) } diff --git a/builder/osc/common/state.go b/builder/osc/common/state.go index 3c345ec8..232bd2d5 100644 --- a/builder/osc/common/state.go +++ b/builder/osc/common/state.go @@ -5,63 +5,62 @@ import ( "fmt" "log" - "github.com/antihax/optional" - "github.com/outscale/osc-sdk-go/osc" + oscgo "github.com/outscale/osc-sdk-go/v2" "github.com/outscale/packer-plugin-outscale/builder/osc/common/retry" ) type stateRefreshFunc func() (string, error) -func waitUntilForOscVmRunning(conn *osc.APIClient, vmID string) error { +func waitUntilForOscVmRunning(conn *oscgo.APIClient, vmID string) error { errCh := make(chan error, 1) go waitForState(errCh, "running", waitUntilOscVmStateFunc(conn, vmID)) err := <-errCh return err } -func waitUntilOscVmDeleted(conn *osc.APIClient, vmID string) error { +func waitUntilOscVmDeleted(conn *oscgo.APIClient, vmID string) error { errCh := make(chan error, 1) go waitForState(errCh, "terminated", waitUntilOscVmStateFunc(conn, vmID)) return <-errCh } -func waitUntilOscVmStopped(conn *osc.APIClient, vmID string) error { +func waitUntilOscVmStopped(conn *oscgo.APIClient, vmID string) error { errCh := make(chan error, 1) go waitForState(errCh, "stopped", waitUntilOscVmStateFunc(conn, vmID)) return <-errCh } -func WaitUntilOscSnapshotCompleted(conn *osc.APIClient, id string) error { +func WaitUntilOscSnapshotCompleted(conn *oscgo.APIClient, id string) error { errCh := make(chan error, 1) go waitForState(errCh, "completed", waitUntilOscSnapshotStateFunc(conn, id)) return <-errCh } -func WaitUntilOscImageAvailable(conn *osc.APIClient, imageID string) error { +func WaitUntilOscImageAvailable(conn *oscgo.APIClient, imageID string) error { errCh := make(chan error, 1) go waitForState(errCh, "available", waitUntilOscImageStateFunc(conn, imageID)) return <-errCh } -func WaitUntilOscVolumeAvailable(conn *osc.APIClient, volumeID string) error { +func WaitUntilOscVolumeAvailable(conn *oscgo.APIClient, volumeID string) error { errCh := make(chan error, 1) go waitForState(errCh, "available", volumeOscWaitFunc(conn, volumeID)) return <-errCh } -func WaitUntilOscVolumeIsLinked(conn *osc.APIClient, volumeID string) error { +func WaitUntilOscVolumeIsLinked(conn *oscgo.APIClient, volumeID string) error { errCh := make(chan error, 1) go waitForState(errCh, "attached", waitUntilOscVolumeLinkedStateFunc(conn, volumeID)) return <-errCh } -func WaitUntilOscVolumeIsUnlinked(conn *osc.APIClient, volumeID string) error { +func WaitUntilOscVolumeIsUnlinked(conn *oscgo.APIClient, volumeID string) error { errCh := make(chan error, 1) go waitForState(errCh, "dettached", waitUntilOscVolumeUnLinkedStateFunc(conn, volumeID)) return <-errCh } -func WaitUntilOscSnapshotDone(conn *osc.APIClient, snapshotID string) error { +func WaitUntilOscSnapshotDone(conn *oscgo.APIClient, snapshotID string) error { errCh := make(chan error, 1) go waitForState(errCh, "completed", waitUntilOscSnapshotDoneStateFunc(conn, snapshotID)) return <-errCh @@ -80,16 +79,14 @@ func waitForState(errCh chan<- error, target string, refresh stateRefreshFunc) { errCh <- err } -func waitUntilOscVmStateFunc(conn *osc.APIClient, id string) stateRefreshFunc { +func waitUntilOscVmStateFunc(conn *oscgo.APIClient, id string) stateRefreshFunc { return func() (string, error) { log.Printf("[Debug] Retrieving state for VM with id %s", id) - resp, _, err := conn.VmApi.ReadVms(context.Background(), &osc.ReadVmsOpts{ - ReadVmsRequest: optional.NewInterface(osc.ReadVmsRequest{ - Filters: osc.FiltersVm{ - VmIds: []string{id}, - }, - }), - }) + resp, _, err := conn.VmApi.ReadVms(context.Background()).ReadVmsRequest(oscgo.ReadVmsRequest{ + Filters: &oscgo.FiltersVm{ + VmIds: &[]string{id}, + }, + }).Execute() if err != nil { return "", err @@ -100,61 +97,55 @@ func waitUntilOscVmStateFunc(conn *osc.APIClient, id string) stateRefreshFunc { // return "", fmt.Errorf("Vm with ID %s not Found", id) // } - if len(resp.Vms) == 0 { + if len(resp.GetVms()) == 0 { return "pending", nil } - return resp.Vms[0].State, nil + return *resp.GetVms()[0].State, nil } } -func waitUntilOscVolumeLinkedStateFunc(conn *osc.APIClient, id string) stateRefreshFunc { +func waitUntilOscVolumeLinkedStateFunc(conn *oscgo.APIClient, id string) stateRefreshFunc { return func() (string, error) { log.Printf("[Debug] Check if volume with id %s exists", id) - resp, _, err := conn.VolumeApi.ReadVolumes(context.Background(), &osc.ReadVolumesOpts{ - ReadVolumesRequest: optional.NewInterface(osc.ReadVolumesRequest{ - Filters: osc.FiltersVolume{ - VolumeIds: []string{id}, - }, - }), - }) + resp, _, err := conn.VolumeApi.ReadVolumes(context.Background()).ReadVolumesRequest(oscgo.ReadVolumesRequest{ + Filters: &oscgo.FiltersVolume{ + VolumeIds: &[]string{id}, + }, + }).Execute() if err != nil { return "", err } - if len(resp.Volumes) == 0 { + if len(resp.GetVolumes()) == 0 { return "pending", nil } - if len(resp.Volumes[0].LinkedVolumes) == 0 { + if len(*resp.GetVolumes()[0].LinkedVolumes) == 0 { return "pending", nil } - - return resp.Volumes[0].LinkedVolumes[0].State, nil + volume := resp.GetVolumes()[0] + return volume.GetState(), nil } } -func waitUntilOscVolumeUnLinkedStateFunc(conn *osc.APIClient, id string) stateRefreshFunc { +func waitUntilOscVolumeUnLinkedStateFunc(conn *oscgo.APIClient, id string) stateRefreshFunc { return func() (string, error) { log.Printf("[Debug] Check if volume with id %s exists", id) - resp, _, err := conn.VolumeApi.ReadVolumes(context.Background(), &osc.ReadVolumesOpts{ - ReadVolumesRequest: optional.NewInterface(osc.ReadVolumesRequest{ - Filters: osc.FiltersVolume{ - VolumeIds: []string{id}, - }, - }), - }) - + request := oscgo.ReadVolumesRequest{ + Filters: &oscgo.FiltersVolume{VolumeIds: &[]string{id}}, + } + resp, _, err := conn.VolumeApi.ReadVolumes(context.Background()).ReadVolumesRequest(request).Execute() if err != nil { return "", err } - if len(resp.Volumes) == 0 { + if len(resp.GetVolumes()) == 0 { return "pending", nil } - if len(resp.Volumes[0].LinkedVolumes) == 0 { + if len(*resp.GetVolumes()[0].LinkedVolumes) == 0 { return "dettached", nil } @@ -162,106 +153,90 @@ func waitUntilOscVolumeUnLinkedStateFunc(conn *osc.APIClient, id string) stateRe } } -func waitUntilOscSnapshotStateFunc(conn *osc.APIClient, id string) stateRefreshFunc { +func waitUntilOscSnapshotStateFunc(conn *oscgo.APIClient, id string) stateRefreshFunc { return func() (string, error) { log.Printf("[Debug] Check if Snapshot with id %s exists", id) - resp, _, err := conn.SnapshotApi.ReadSnapshots(context.Background(), &osc.ReadSnapshotsOpts{ - ReadSnapshotsRequest: optional.NewInterface(osc.ReadSnapshotsRequest{ - Filters: osc.FiltersSnapshot{ - SnapshotIds: []string{id}, - }, - }), - }) + resp, _, err := conn.SnapshotApi.ReadSnapshots(context.Background()).ReadSnapshotsRequest(oscgo.ReadSnapshotsRequest{ + Filters: &oscgo.FiltersSnapshot{SnapshotIds: &[]string{id}}, + }).Execute() if err != nil { return "", err } - if len(resp.Snapshots) == 0 { + if len(resp.GetSnapshots()) == 0 { return "pending", nil } - return resp.Snapshots[0].State, nil + return *resp.GetSnapshots()[0].State, nil } } -func waitUntilOscImageStateFunc(conn *osc.APIClient, id string) stateRefreshFunc { +func waitUntilOscImageStateFunc(conn *oscgo.APIClient, id string) stateRefreshFunc { return func() (string, error) { log.Printf("[Debug] Check if Image with id %s exists", id) - resp, _, err := conn.ImageApi.ReadImages(context.Background(), &osc.ReadImagesOpts{ - ReadImagesRequest: optional.NewInterface(osc.ReadImagesRequest{ - Filters: osc.FiltersImage{ - ImageIds: []string{id}, - }, - }), - }) - + filterReq := oscgo.ReadImagesRequest{ + Filters: &oscgo.FiltersImage{ImageIds: &[]string{id}}, + } + resp, _, err := conn.ImageApi.ReadImages(context.Background()).ReadImagesRequest(filterReq).Execute() if err != nil { return "", err } - if len(resp.Images) == 0 { + if len(resp.GetImages()) == 0 { return "pending", nil } - if resp.Images[0].State == "failed" { - return resp.Images[0].State, fmt.Errorf("Image (%s) creation is failed", id) + if *resp.GetImages()[0].State == "failed" { + return *resp.GetImages()[0].State, fmt.Errorf("Image (%s) creation is failed", id) } - return resp.Images[0].State, nil + return *resp.GetImages()[0].State, nil } } -func waitUntilOscSnapshotDoneStateFunc(conn *osc.APIClient, id string) stateRefreshFunc { +func waitUntilOscSnapshotDoneStateFunc(conn *oscgo.APIClient, id string) stateRefreshFunc { return func() (string, error) { log.Printf("[Debug] Check if Snapshot with id %s exists", id) - resp, _, err := conn.SnapshotApi.ReadSnapshots(context.Background(), &osc.ReadSnapshotsOpts{ - ReadSnapshotsRequest: optional.NewInterface(osc.ReadSnapshotsRequest{ - Filters: osc.FiltersSnapshot{ - SnapshotIds: []string{id}, - }, - }), - }) + resp, _, err := conn.SnapshotApi.ReadSnapshots(context.Background()).ReadSnapshotsRequest(oscgo.ReadSnapshotsRequest{ + Filters: &oscgo.FiltersSnapshot{SnapshotIds: &[]string{id}}, + }).Execute() if err != nil { return "", err } - if len(resp.Snapshots) == 0 { + if len(resp.GetSnapshots()) == 0 { return "", fmt.Errorf("Snapshot with ID %s. Not Found", id) } - if resp.Snapshots[0].State == "error" { - return resp.Snapshots[0].State, fmt.Errorf("Snapshot (%s) creation is failed", id) + if *resp.GetSnapshots()[0].State == "error" { + return *resp.GetSnapshots()[0].State, fmt.Errorf("Snapshot (%s) creation is failed", id) } - return resp.Snapshots[0].State, nil + return *resp.GetSnapshots()[0].State, nil } } -func volumeOscWaitFunc(conn *osc.APIClient, id string) stateRefreshFunc { +func volumeOscWaitFunc(conn *oscgo.APIClient, id string) stateRefreshFunc { return func() (string, error) { log.Printf("[Debug] Check if SvolumeG with id %s exists", id) - resp, _, err := conn.VolumeApi.ReadVolumes(context.Background(), &osc.ReadVolumesOpts{ - ReadVolumesRequest: optional.NewInterface(osc.ReadVolumesRequest{ - Filters: osc.FiltersVolume{ - VolumeIds: []string{id}, - }, - }), - }) + resp, _, err := conn.VolumeApi.ReadVolumes(context.Background()).ReadVolumesRequest(oscgo.ReadVolumesRequest{ + Filters: &oscgo.FiltersVolume{VolumeIds: &[]string{id}}, + }).Execute() if err != nil { return "", err } - if len(resp.Volumes) == 0 { + if len(resp.GetVolumes()) == 0 { return "waiting", nil } - if resp.Volumes[0].State == "error" { - return resp.Volumes[0].State, fmt.Errorf("Volume (%s) creation is failed", id) + if *resp.GetVolumes()[0].State == "error" { + return *resp.GetVolumes()[0].State, fmt.Errorf("Volume (%s) creation is failed", id) } - return resp.Volumes[0].State, nil + return *resp.GetVolumes()[0].State, nil } } diff --git a/builder/osc/common/step_cleanup_volumes.go b/builder/osc/common/step_cleanup_volumes.go index 2663cc9b..83b59519 100644 --- a/builder/osc/common/step_cleanup_volumes.go +++ b/builder/osc/common/step_cleanup_volumes.go @@ -5,10 +5,9 @@ import ( "fmt" "reflect" - "github.com/antihax/optional" "github.com/hashicorp/packer-plugin-sdk/multistep" packersdk "github.com/hashicorp/packer-plugin-sdk/packer" - "github.com/outscale/osc-sdk-go/osc" + oscgo "github.com/outscale/osc-sdk-go/v2" ) // StepCleanupVolumes cleans up any orphaned volumes that were not designated to @@ -26,14 +25,14 @@ func (s *StepCleanupVolumes) Run(_ context.Context, state multistep.StateBag) mu // Cleanup ... func (s *StepCleanupVolumes) Cleanup(state multistep.StateBag) { - oscconn := state.Get("osc").(*osc.APIClient) + oscconn := state.Get("osc").(*oscgo.APIClient) vmRaw := state.Get("vm") - var vm osc.Vm + var vm oscgo.Vm if vmRaw != nil { - vm = vmRaw.(osc.Vm) + vm = vmRaw.(oscgo.Vm) } ui := state.Get("ui").(packersdk.Ui) - if vm.VmId == "" { + if vm.VmId == nil { ui.Say("No volumes to clean up, skipping") return } @@ -44,22 +43,17 @@ func (s *StepCleanupVolumes) Cleanup(state multistep.StateBag) { // to device name, to compare with save list below var vl []string volList := make(map[string]string) - for _, bdm := range vm.BlockDeviceMappings { - if !reflect.DeepEqual(bdm.Bsu, osc.BsuCreated{}) { - vl = append(vl, bdm.Bsu.VolumeId) - volList[bdm.Bsu.VolumeId] = bdm.DeviceName + for _, bdm := range *vm.BlockDeviceMappings { + if !reflect.DeepEqual(bdm.Bsu, oscgo.BsuCreated{}) { + vl = append(vl, *bdm.Bsu.VolumeId) + volList[*bdm.Bsu.VolumeId] = *bdm.DeviceName } } // Using the volume list from the cached Vm, check with Outscale for up to // date information on them - resp, _, err := oscconn.VolumeApi.ReadVolumes(context.Background(), &osc.ReadVolumesOpts{ - ReadVolumesRequest: optional.NewInterface(osc.ReadVolumesRequest{ - Filters: osc.FiltersVolume{ - VolumeIds: vl, - }, - }), - }) + resp, _, err := oscconn.VolumeApi.ReadVolumes(context.Background()).ReadVolumesRequest(oscgo.ReadVolumesRequest{ + Filters: &oscgo.FiltersVolume{VolumeIds: &vl}}).Execute() if err != nil { ui.Say(fmt.Sprintf("Error describing volumes: %s", err)) @@ -68,13 +62,13 @@ func (s *StepCleanupVolumes) Cleanup(state multistep.StateBag) { // If any of the returned volumes are in a "deleting" stage or otherwise not // available, remove them from the list of volumes - for _, v := range resp.Volumes { - if v.State != "" && v.State != "available" { - delete(volList, v.VolumeId) + for _, v := range resp.GetVolumes() { + if v.State != nil && *v.State != "available" { + delete(volList, *v.VolumeId) } } - if len(resp.Volumes) == 0 { + if len(resp.GetVolumes()) == 0 { ui.Say("No volumes to clean up, skipping") return } @@ -92,9 +86,10 @@ func (s *StepCleanupVolumes) Cleanup(state multistep.StateBag) { // Destroy remaining volumes for k := range volList { ui.Say(fmt.Sprintf("Destroying volume (%s)...", k)) - _, _, err := oscconn.VolumeApi.DeleteVolume(context.Background(), &osc.DeleteVolumeOpts{ - DeleteVolumeRequest: optional.NewInterface(osc.DeleteVolumeRequest{VolumeId: k}), - }) + request := oscgo.DeleteVolumeRequest{ + VolumeId: k, + } + _, _, err := oscconn.VolumeApi.DeleteVolume(context.Background()).DeleteVolumeRequest(request).Execute() if err != nil { ui.Say(fmt.Sprintf("Error deleting volume: %s", err)) } diff --git a/builder/osc/common/step_create_tags.go b/builder/osc/common/step_create_tags.go index e8795ad7..18df150d 100644 --- a/builder/osc/common/step_create_tags.go +++ b/builder/osc/common/step_create_tags.go @@ -4,12 +4,11 @@ import ( "context" "fmt" - "github.com/antihax/optional" "github.com/aws/aws-sdk-go/aws/awserr" "github.com/hashicorp/packer-plugin-sdk/multistep" packersdk "github.com/hashicorp/packer-plugin-sdk/packer" "github.com/hashicorp/packer-plugin-sdk/template/interpolate" - "github.com/outscale/osc-sdk-go/osc" + oscgo "github.com/outscale/osc-sdk-go/v2" "github.com/outscale/packer-plugin-outscale/builder/osc/common/retry" ) @@ -36,14 +35,11 @@ func (s *StepCreateTags) Run(_ context.Context, state multistep.StateBag) multis // Retrieve image list for given OMI resourceIds := []string{ami} - imageResp, _, err := regionconn.ImageApi.ReadImages(context.Background(), &osc.ReadImagesOpts{ - ReadImagesRequest: optional.NewInterface(osc.ReadImagesRequest{ - Filters: osc.FiltersImage{ - ImageIds: resourceIds, - }, - }), - }) - + imageResp, _, err := regionconn.ImageApi.ReadImages(context.Background()).ReadImagesRequest(oscgo.ReadImagesRequest{ + Filters: &oscgo.FiltersImage{ + ImageIds: &resourceIds, + }, + }).Execute() if err != nil { err := fmt.Errorf("Error retrieving details for OMI (%s): %s", ami, err) state.Put("error", err) @@ -51,34 +47,29 @@ func (s *StepCreateTags) Run(_ context.Context, state multistep.StateBag) multis return multistep.ActionHalt } - if len(imageResp.Images) == 0 { + if len(imageResp.GetImages()) == 0 { err := fmt.Errorf("Error retrieving details for OMI (%s), no images found", ami) state.Put("error", err) ui.Error(err.Error()) return multistep.ActionHalt } - image := imageResp.Images[0] + image := imageResp.GetImages()[0] snapshotIds := []string{} // Add only those with a Snapshot ID, i.e. not Ephemeral - for _, device := range image.BlockDeviceMappings { - if device.Bsu.SnapshotId != "" { - ui.Say(fmt.Sprintf("Tagging snapshot: %s", device.Bsu.SnapshotId)) - resourceIds = append(resourceIds, device.Bsu.SnapshotId) - snapshotIds = append(snapshotIds, device.Bsu.SnapshotId) + for _, device := range image.GetBlockDeviceMappings() { + if device.GetBsu().SnapshotId != nil { + ui.Say(fmt.Sprintf("Tagging snapshot: %s", *device.GetBsu().SnapshotId)) + resourceIds = append(resourceIds, *device.GetBsu().SnapshotId) + snapshotIds = append(snapshotIds, *device.GetBsu().SnapshotId) } } // Convert tags to oapi.Tag format ui.Say("Creating OMI tags") - amiTags, err := s.Tags.OSCTags(s.Ctx, config.RawRegion, state) - if err != nil { - state.Put("error", err) - ui.Error(err.Error()) - return multistep.ActionHalt - } - amiTags.Report(ui) + omiTags, err := s.Tags.OSCTags(s.Ctx, config.RawRegion, state) + omiTags.Report(ui) ui.Say("Creating snapshot tags") snapshotTags, err := s.SnapshotTags.OSCTags(s.Ctx, config.RawRegion, state) @@ -88,16 +79,15 @@ func (s *StepCreateTags) Run(_ context.Context, state multistep.StateBag) multis return multistep.ActionHalt } snapshotTags.Report(ui) - // Retry creating tags for about 2.5 minutes err = retry.Run(0.2, 30, 11, func(_ uint) (bool, error) { // Tag images and snapshots - _, _, err := regionconn.TagApi.CreateTags(context.Background(), &osc.CreateTagsOpts{ - CreateTagsRequest: optional.NewInterface(osc.CreateTagsRequest{ - ResourceIds: resourceIds, - Tags: amiTags, - }), - }) + request := oscgo.CreateTagsRequest{ + ResourceIds: resourceIds, + Tags: omiTags, + } + + _, _, err := regionconn.TagApi.CreateTags(context.Background()).CreateTagsRequest(request).Execute() if awsErr, ok := err.(awserr.Error); ok { if awsErr.Code() == "InvalidOMIID.NotFound" || awsErr.Code() == "InvalidSnapshot.NotFound" { @@ -105,14 +95,13 @@ func (s *StepCreateTags) Run(_ context.Context, state multistep.StateBag) multis } } + requestSnap := oscgo.CreateTagsRequest{ + ResourceIds: snapshotIds, + Tags: snapshotTags, + } // Override tags on snapshots if len(snapshotTags) > 0 { - _, _, err = regionconn.TagApi.CreateTags(context.Background(), &osc.CreateTagsOpts{ - CreateTagsRequest: optional.NewInterface(osc.CreateTagsRequest{ - ResourceIds: snapshotIds, - Tags: snapshotTags, - }), - }) + _, _, err = regionconn.TagApi.CreateTags(context.Background()).CreateTagsRequest(requestSnap).Execute() } if err == nil { return true, nil diff --git a/builder/osc/common/step_deregister_omi.go b/builder/osc/common/step_deregister_omi.go index 525d7182..3cd4aa58 100644 --- a/builder/osc/common/step_deregister_omi.go +++ b/builder/osc/common/step_deregister_omi.go @@ -5,8 +5,7 @@ import ( "fmt" "log" - "github.com/antihax/optional" - "github.com/outscale/osc-sdk-go/osc" + oscgo "github.com/outscale/osc-sdk-go/v2" "github.com/hashicorp/packer-plugin-sdk/multistep" packersdk "github.com/hashicorp/packer-plugin-sdk/packer" @@ -36,15 +35,10 @@ func (s *StepDeregisterOMI) Run(_ context.Context, state multistep.StateBag) mul // get new connection for each region in which we need to deregister vms conn := s.AccessConfig.NewOSCClientByRegion(region) - resp, _, err := conn.ImageApi.ReadImages(context.Background(), &osc.ReadImagesOpts{ - ReadImagesRequest: optional.NewInterface(osc.ReadImagesRequest{ - Filters: osc.FiltersImage{ - ImageNames: []string{s.OMIName}, - //AccountAliases: []string{"self"}, - }, - }), - }) - + filterReq := oscgo.ReadImagesRequest{ + Filters: &oscgo.FiltersImage{ImageNames: &[]string{s.OMIName}}, + } + resp, _, err := conn.ImageApi.ReadImages(context.Background()).ReadImagesRequest(filterReq).Execute() if err != nil { err := fmt.Errorf("Error describing OMI: %s", err) state.Put("error", err) @@ -56,14 +50,11 @@ func (s *StepDeregisterOMI) Run(_ context.Context, state multistep.StateBag) mul log.Printf("LOG_ resp.Images: %#+v\n", resp.Images) // Deregister image(s) by name - for i := range resp.Images { + for i := range resp.GetImages() { //We are supposing that DeleteImage does the same action as DeregisterImage - _, _, err := conn.ImageApi.DeleteImage(context.Background(), &osc.DeleteImageOpts{ - DeleteImageRequest: optional.NewInterface(osc.DeleteImageRequest{ - ImageId: resp.Images[i].ImageId, - }), - }) - + _, _, err := conn.ImageApi.DeleteImage(context.Background()).DeleteImageRequest(oscgo.DeleteImageRequest{ + ImageId: resp.GetImages()[i].GetImageId(), + }).Execute() if err != nil { err := fmt.Errorf("Error deregistering existing OMI: %s", err) state.Put("error", err) @@ -72,19 +63,14 @@ func (s *StepDeregisterOMI) Run(_ context.Context, state multistep.StateBag) mul return multistep.ActionHalt } - ui.Say(fmt.Sprintf("Deregistered OMI %s, id: %s", s.OMIName, resp.Images[i].ImageId)) + ui.Say(fmt.Sprintf("Deregistered OMI %s, id: %s", s.OMIName, resp.GetImages()[i].GetImageId())) // Delete snapshot(s) by image if s.ForceDeleteSnapshot { - for _, b := range resp.Images[i].BlockDeviceMappings { - if b.Bsu.SnapshotId != "" { - - _, _, err := conn.SnapshotApi.DeleteSnapshot(context.Background(), &osc.DeleteSnapshotOpts{ - DeleteSnapshotRequest: optional.NewInterface(osc.DeleteSnapshotRequest{ - SnapshotId: b.Bsu.SnapshotId, - }), - }) - + for _, b := range resp.GetImages()[i].GetBlockDeviceMappings() { + if b.Bsu.SnapshotId != nil { + request := oscgo.DeleteSnapshotRequest{SnapshotId: *b.GetBsu().SnapshotId} + _, _, err := conn.SnapshotApi.DeleteSnapshot(context.Background()).DeleteSnapshotRequest(request).Execute() if err != nil { err := fmt.Errorf("Error deleting existing snapshot: %s", err) state.Put("error", err) @@ -93,7 +79,7 @@ func (s *StepDeregisterOMI) Run(_ context.Context, state multistep.StateBag) mul return multistep.ActionHalt } - ui.Say(fmt.Sprintf("Deleted snapshot: %s", b.Bsu.SnapshotId)) + ui.Say(fmt.Sprintf("Deleted snapshot: %s", *b.GetBsu().SnapshotId)) } } } diff --git a/builder/osc/common/step_get_password.go b/builder/osc/common/step_get_password.go index c19f80b8..9c566091 100644 --- a/builder/osc/common/step_get_password.go +++ b/builder/osc/common/step_get_password.go @@ -11,11 +11,10 @@ import ( "log" "time" - "github.com/antihax/optional" "github.com/hashicorp/packer-plugin-sdk/communicator" "github.com/hashicorp/packer-plugin-sdk/multistep" packersdk "github.com/hashicorp/packer-plugin-sdk/packer" - "github.com/outscale/osc-sdk-go/osc" + oscgo "github.com/outscale/osc-sdk-go/v2" ) // StepGetPassword reads the password from a Windows server and sets it @@ -103,8 +102,8 @@ WaitLoop: func (s *StepGetPassword) Cleanup(multistep.StateBag) {} func (s *StepGetPassword) waitForPassword(state multistep.StateBag, cancel <-chan struct{}) (string, error) { - oscconn := state.Get("osc").(*osc.APIClient) - vm := state.Get("vm").(osc.Vm) + oscconn := state.Get("osc").(*oscgo.APIClient) + vm := state.Get("vm").(oscgo.Vm) privateKey := s.Comm.SSHPrivateKey for { @@ -115,19 +114,15 @@ func (s *StepGetPassword) waitForPassword(state multistep.StateBag, cancel <-cha case <-time.After(5 * time.Second): } - resp, _, err := oscconn.VmApi.ReadAdminPassword(context.Background(), &osc.ReadAdminPasswordOpts{ - ReadAdminPasswordRequest: optional.NewInterface(osc.ReadAdminPasswordRequest{ - VmId: vm.VmId, - }), - }) + resp, _, err := oscconn.VmApi.ReadAdminPassword(context.Background()).ReadAdminPasswordRequest(oscgo.ReadAdminPasswordRequest{VmId: *vm.VmId}).Execute() if err != nil { err := fmt.Errorf("Error retrieving auto-generated vm password: %s", err) return "", err } - if resp.AdminPassword != "" { + if resp.AdminPassword != nil { decryptedPassword, err := decryptPasswordDataWithPrivateKey( - resp.AdminPassword, privateKey) + *resp.AdminPassword, privateKey) if err != nil { err := fmt.Errorf("Error decrypting auto-generated vm password: %s", err) return "", err diff --git a/builder/osc/common/step_key_pair.go b/builder/osc/common/step_key_pair.go index e6df86c1..49341c7b 100644 --- a/builder/osc/common/step_key_pair.go +++ b/builder/osc/common/step_key_pair.go @@ -6,11 +6,10 @@ import ( "os" "runtime" - "github.com/antihax/optional" "github.com/hashicorp/packer-plugin-sdk/communicator" "github.com/hashicorp/packer-plugin-sdk/multistep" packersdk "github.com/hashicorp/packer-plugin-sdk/packer" - "github.com/outscale/osc-sdk-go/osc" + oscgo "github.com/outscale/osc-sdk-go/v2" ) type StepKeyPair struct { @@ -53,15 +52,14 @@ func (s *StepKeyPair) Run(_ context.Context, state multistep.StateBag) multistep return multistep.ActionContinue } - conn := state.Get("osc").(*osc.APIClient) + conn := state.Get("osc").(*oscgo.APIClient) ui.Say(fmt.Sprintf("Creating temporary keypair: %s", s.Comm.SSHTemporaryKeyPairName)) - resp, _, err := conn.KeypairApi.CreateKeypair(context.Background(), &osc.CreateKeypairOpts{ - CreateKeypairRequest: optional.NewInterface(osc.CreateKeypairRequest{ - KeypairName: s.Comm.SSHTemporaryKeyPairName, - }), - }) + req := oscgo.CreateKeypairRequest{ + KeypairName: s.Comm.SSHTemporaryKeyPairName, + } + resp, _, err := conn.KeypairApi.CreateKeypair(context.Background()).CreateKeypairRequest(req).Execute() if err != nil { state.Put("error", fmt.Errorf("Error creating temporary keypair: %s", err)) @@ -72,7 +70,7 @@ func (s *StepKeyPair) Run(_ context.Context, state multistep.StateBag) multistep // Set some data for use in future steps s.Comm.SSHKeyPairName = s.Comm.SSHTemporaryKeyPairName - s.Comm.SSHPrivateKey = []byte(resp.Keypair.PrivateKey) + s.Comm.SSHPrivateKey = []byte(*resp.Keypair.PrivateKey) // If we're in debug mode, output the private key to the working // directory. @@ -86,7 +84,7 @@ func (s *StepKeyPair) Run(_ context.Context, state multistep.StateBag) multistep defer f.Close() // Write the key out - if _, err := f.Write([]byte(resp.Keypair.PrivateKey)); err != nil { + if _, err := f.Write([]byte(*resp.Keypair.PrivateKey)); err != nil { state.Put("error", fmt.Errorf("Error saving debug key: %s", err)) return multistep.ActionHalt } @@ -109,18 +107,16 @@ func (s *StepKeyPair) Cleanup(state multistep.StateBag) { } var ( - conn = state.Get("osc").(*osc.APIClient) + conn = state.Get("osc").(*oscgo.APIClient) ui = state.Get("ui").(packersdk.Ui) ) // Remove the keypair ui.Say("Deleting temporary keypair...") - _, _, err := conn.KeypairApi.DeleteKeypair(context.Background(), &osc.DeleteKeypairOpts{ - DeleteKeypairRequest: optional.NewInterface(osc.DeleteKeypairRequest{ - KeypairName: s.Comm.SSHTemporaryKeyPairName, - }), - }) - + request := oscgo.DeleteKeypairRequest{ + KeypairName: s.Comm.SSHTemporaryKeyPairName, + } + _, _, err := conn.KeypairApi.DeleteKeypair(context.Background()).DeleteKeypairRequest(request).Execute() if err != nil { ui.Error(fmt.Sprintf( "Error cleaning up keypair. Please delete the key manually: %s", s.Comm.SSHTemporaryKeyPairName)) diff --git a/builder/osc/common/step_network_info.go b/builder/osc/common/step_network_info.go index 7fe1236d..a5561c35 100644 --- a/builder/osc/common/step_network_info.go +++ b/builder/osc/common/step_network_info.go @@ -7,10 +7,9 @@ import ( "math/rand" "sort" - "github.com/antihax/optional" "github.com/hashicorp/packer-plugin-sdk/multistep" packersdk "github.com/hashicorp/packer-plugin-sdk/packer" - "github.com/outscale/osc-sdk-go/osc" + oscgo "github.com/outscale/osc-sdk-go/v2" ) // StepNetworkInfo queries OUTSCALE for information about @@ -31,16 +30,18 @@ type StepNetworkInfo struct { SecurityGroupFilter SecurityGroupFilterOptions } -type subnetsOscSort []osc.Subnet +type subnetsOscSort []oscgo.Subnet func (a subnetsOscSort) Len() int { return len(a) } func (a subnetsOscSort) Swap(i, j int) { a[i], a[j] = a[j], a[i] } func (a subnetsOscSort) Less(i, j int) bool { - return a[i].AvailableIpsCount < a[j].AvailableIpsCount + availableIpCount := int32(*a[i].AvailableIpsCount) + availableIpsCount := int32(*a[j].AvailableIpsCount) + return availableIpCount < availableIpsCount } // Returns the most recent OMI out of a slice of images. -func mostFreeOscSubnet(subnets []osc.Subnet) osc.Subnet { +func mostFreeOscSubnet(subnets []oscgo.Subnet) oscgo.Subnet { sortedSubnets := subnets sort.Sort(subnetsOscSort(sortedSubnets)) return sortedSubnets[len(sortedSubnets)-1] @@ -48,20 +49,19 @@ func mostFreeOscSubnet(subnets []osc.Subnet) osc.Subnet { // Run ... func (s *StepNetworkInfo) Run(_ context.Context, state multistep.StateBag) multistep.StepAction { - oscconn := state.Get("osc").(*osc.APIClient) + oscconn := state.Get("osc").(*oscgo.APIClient) ui := state.Get("ui").(packersdk.Ui) // NET if s.NetId == "" && !s.NetFilter.Empty() { - params := osc.ReadNetsRequest{} - params.Filters = buildOscNetFilters(s.NetFilter.Filters) + params := oscgo.ReadNetsRequest{} + netFilter := buildOscNetFilters(s.NetFilter.Filters) + params.Filters = &netFilter s.NetFilter.Filters["state"] = "available" log.Printf("Using NET Filters %v", params) - vpcResp, _, err := oscconn.NetApi.ReadNets(context.Background(), &osc.ReadNetsOpts{ - ReadNetsRequest: optional.NewInterface(params), - }) + vpcResp, _, err := oscconn.NetApi.ReadNets(context.Background()).ReadNetsRequest(params).Execute() if err != nil { err := fmt.Errorf("Error querying NETs: %s", err) state.Put("error", err) @@ -69,20 +69,20 @@ func (s *StepNetworkInfo) Run(_ context.Context, state multistep.StateBag) multi return multistep.ActionHalt } - if len(vpcResp.Nets) != 1 { - err := fmt.Errorf("Exactly one NET should match the filter, but %d NET's was found matching filters: %v", len(vpcResp.Nets), params) + if len(*vpcResp.Nets) != 1 { + err := fmt.Errorf("Exactly one NET should match the filter, but %d NET's was found matching filters: %v", len(*vpcResp.Nets), params) state.Put("error", err) ui.Error(err.Error()) return multistep.ActionHalt } - s.NetId = vpcResp.Nets[0].NetId + s.NetId = *vpcResp.GetNets()[0].NetId ui.Message(fmt.Sprintf("Found NET ID: %s", s.NetId)) } // Subnet if s.SubnetId == "" && !s.SubnetFilter.Empty() { - params := osc.ReadSubnetsRequest{} + params := oscgo.ReadSubnetsRequest{} s.SubnetFilter.Filters["state"] = "available" if s.NetId != "" { @@ -91,12 +91,11 @@ func (s *StepNetworkInfo) Run(_ context.Context, state multistep.StateBag) multi if s.SubregionName != "" { s.SubnetFilter.Filters["availability-zone"] = s.SubregionName } - params.Filters = buildOscSubnetFilters(s.SubnetFilter.Filters) + subnetFilter := buildOscSubnetFilters(s.SubnetFilter.Filters) + params.Filters = &subnetFilter log.Printf("Using Subnet Filters %v", params) - subnetsResp, _, err := oscconn.SubnetApi.ReadSubnets(context.Background(), &osc.ReadSubnetsOpts{ - ReadSubnetsRequest: optional.NewInterface(params), - }) + subnetsResp, _, err := oscconn.SubnetApi.ReadSubnets(context.Background()).ReadSubnetsRequest(params).Execute() if err != nil { err := fmt.Errorf("error querying Subnets: %s", err) state.Put("error", err) @@ -104,43 +103,41 @@ func (s *StepNetworkInfo) Run(_ context.Context, state multistep.StateBag) multi return multistep.ActionHalt } - if len(subnetsResp.Subnets) == 0 { + if len(*subnetsResp.Subnets) == 0 { err := fmt.Errorf("No Subnets was found matching filters: %v", params) state.Put("error", err) ui.Error(err.Error()) return multistep.ActionHalt } - if len(subnetsResp.Subnets) > 1 && !s.SubnetFilter.Random && !s.SubnetFilter.MostFree { - err := fmt.Errorf("your filter matched %d Subnets. Please try a more specific search, or set random or most_free to true", len(subnetsResp.Subnets)) + if len(*subnetsResp.Subnets) > 1 && !s.SubnetFilter.Random && !s.SubnetFilter.MostFree { + err := fmt.Errorf("your filter matched %d Subnets. Please try a more specific search, or set random or most_free to true", len(*subnetsResp.Subnets)) state.Put("error", err) ui.Error(err.Error()) return multistep.ActionHalt } - var subnet osc.Subnet + var subnet oscgo.Subnet switch { case s.SubnetFilter.MostFree: - subnet = mostFreeOscSubnet(subnetsResp.Subnets) + subnet = mostFreeOscSubnet(*subnetsResp.Subnets) case s.SubnetFilter.Random: - subnet = subnetsResp.Subnets[rand.Intn(len(subnetsResp.Subnets))] + subnet = subnetsResp.GetSubnets()[rand.Intn(len(subnetsResp.GetSubnets()))] default: - subnet = subnetsResp.Subnets[0] + subnet = subnetsResp.GetSubnets()[0] } - s.SubnetId = subnet.SubnetId + s.SubnetId = subnet.GetSubnetId() ui.Message(fmt.Sprintf("Found Subnet ID: %s", s.SubnetId)) } // Try to find Subregion and NET Id from Subnet if they are not yet found/given if s.SubnetId != "" && (s.SubregionName == "" || s.NetId == "") { log.Printf("[INFO] Finding Subregion and NetId for the given subnet '%s'", s.SubnetId) - resp, _, err := oscconn.SubnetApi.ReadSubnets(context.Background(), &osc.ReadSubnetsOpts{ - ReadSubnetsRequest: optional.NewInterface(osc.ReadSubnetsRequest{ - Filters: osc.FiltersSubnet{ - SubnetIds: []string{s.SubnetId}, - }, - }), - }) + resp, _, err := oscconn.SubnetApi.ReadSubnets(context.Background()).ReadSubnetsRequest(oscgo.ReadSubnetsRequest{ + Filters: &oscgo.FiltersSubnet{ + SubnetIds: &[]string{s.SubnetId}, + }, + }).Execute() if err != nil { err := fmt.Errorf("describing the subnet: %s returned error: %s", s.SubnetId, err) state.Put("error", err) @@ -148,11 +145,11 @@ func (s *StepNetworkInfo) Run(_ context.Context, state multistep.StateBag) multi return multistep.ActionHalt } if s.SubregionName == "" { - s.SubregionName = resp.Subnets[0].SubregionName + s.SubregionName = resp.GetSubnets()[0].GetSubregionName() log.Printf("[INFO] SubregionName found: '%s'", s.SubregionName) } if s.NetId == "" { - s.NetId = resp.Subnets[0].NetId + s.NetId = resp.GetSubnets()[0].GetNetId() log.Printf("[INFO] NetId found: '%s'", s.NetId) } } diff --git a/builder/osc/common/step_pre_validate.go b/builder/osc/common/step_pre_validate.go index 548e9189..d239dc61 100644 --- a/builder/osc/common/step_pre_validate.go +++ b/builder/osc/common/step_pre_validate.go @@ -4,10 +4,9 @@ import ( "context" "fmt" - "github.com/antihax/optional" "github.com/hashicorp/packer-plugin-sdk/multistep" packersdk "github.com/hashicorp/packer-plugin-sdk/packer" - "github.com/outscale/osc-sdk-go/osc" + oscgo "github.com/outscale/osc-sdk-go/v2" ) // StepPreValidate provides an opportunity to pre-validate any configuration for @@ -26,20 +25,17 @@ func (s *StepPreValidate) Run(_ context.Context, state multistep.StateBag) multi } var ( - conn = state.Get("osc").(*osc.APIClient) + conn = state.Get("osc").(*oscgo.APIClient) images []interface{} ) ui.Say(fmt.Sprintf("Prevalidating OMI Name: %s", s.DestOmiName)) - resp, _, err := conn.ImageApi.ReadImages(context.Background(), &osc.ReadImagesOpts{ - ReadImagesRequest: optional.NewInterface(osc.ReadImagesRequest{ - Filters: osc.FiltersImage{ - ImageNames: []string{s.DestOmiName}, - }, - }), - }) - + resp, _, err := conn.ImageApi.ReadImages(context.Background()).ReadImagesRequest(oscgo.ReadImagesRequest{ + Filters: &oscgo.FiltersImage{ + ImageIds: &[]string{s.DestOmiName}, + }, + }).Execute() if err != nil { err := fmt.Errorf("Error querying OMI: %s", err) state.Put("error", err) @@ -47,8 +43,8 @@ func (s *StepPreValidate) Run(_ context.Context, state multistep.StateBag) multi return multistep.ActionHalt } - for _, omi := range resp.Images { - if omi.ImageName == s.DestOmiName { + for _, omi := range resp.GetImages() { + if omi.GetImageName() == s.DestOmiName { images = append(images, omi) } } diff --git a/builder/osc/common/step_public_ip.go b/builder/osc/common/step_public_ip.go index 0d9da714..2389772f 100644 --- a/builder/osc/common/step_public_ip.go +++ b/builder/osc/common/step_public_ip.go @@ -4,11 +4,10 @@ import ( "context" "fmt" - "github.com/antihax/optional" "github.com/hashicorp/packer-plugin-sdk/communicator" "github.com/hashicorp/packer-plugin-sdk/multistep" packersdk "github.com/hashicorp/packer-plugin-sdk/packer" - "github.com/outscale/osc-sdk-go/osc" + oscgo "github.com/outscale/osc-sdk-go/v2" ) type StepPublicIp struct { @@ -23,7 +22,7 @@ type StepPublicIp struct { func (s *StepPublicIp) Run(_ context.Context, state multistep.StateBag) multistep.StepAction { var ( ui = state.Get("ui").(packersdk.Ui) - conn = state.Get("osc").(*osc.APIClient) + conn = state.Get("osc").(*oscgo.APIClient) ) if !s.AssociatePublicIpAddress { @@ -34,10 +33,8 @@ func (s *StepPublicIp) Run(_ context.Context, state multistep.StateBag) multiste } ui.Say("Creating temporary PublicIp for instance ") - - resp, _, err := conn.PublicIpApi.CreatePublicIp(context.Background(), &osc.CreatePublicIpOpts{ - CreatePublicIpRequest: optional.NewInterface(osc.CreatePublicIpRequest{}), - }) + allocOpts := oscgo.CreatePublicIpRequest{} + resp, _, err := conn.PublicIpApi.CreatePublicIp(context.Background()).CreatePublicIpRequest(allocOpts).Execute() if err != nil { state.Put("error", fmt.Errorf("Error creating temporary PublicIp: %s", err)) @@ -48,7 +45,7 @@ func (s *StepPublicIp) Run(_ context.Context, state multistep.StateBag) multiste s.doCleanup = true // Set some data for use in future steps - s.publicIpId = resp.PublicIp.PublicIpId + s.publicIpId = *resp.GetPublicIp().PublicIpId state.Put("publicip_id", resp.PublicIp.PublicIpId) return multistep.ActionContinue @@ -60,17 +57,15 @@ func (s *StepPublicIp) Cleanup(state multistep.StateBag) { } var ( - conn = state.Get("osc").(*osc.APIClient) + conn = state.Get("osc").(*oscgo.APIClient) ui = state.Get("ui").(packersdk.Ui) ) // Remove the Public IP ui.Say("Deleting temporary PublicIp...") - _, _, err := conn.PublicIpApi.DeletePublicIp(context.Background(), &osc.DeletePublicIpOpts{ - DeletePublicIpRequest: optional.NewInterface(osc.DeletePublicIpRequest{ - PublicIpId: s.publicIpId, - }), - }) + _, _, err := conn.PublicIpApi.DeletePublicIp(context.Background()).DeletePublicIpRequest(oscgo.DeletePublicIpRequest{ + PublicIpId: &s.publicIpId, + }).Execute() if err != nil { ui.Error(fmt.Sprintf("Error cleaning up PublicIp. Please delete the PublicIp manually: %s", s.publicIpId)) diff --git a/builder/osc/common/step_run_source_vm.go b/builder/osc/common/step_run_source_vm.go index 4e264c05..3f227378 100644 --- a/builder/osc/common/step_run_source_vm.go +++ b/builder/osc/common/step_run_source_vm.go @@ -8,9 +8,9 @@ import ( "log" "reflect" - "github.com/antihax/optional" "github.com/aws/aws-sdk-go/aws/awserr" - "github.com/outscale/osc-sdk-go/osc" + "github.com/outscale/osc-sdk-go/v2" + oscgo "github.com/outscale/osc-sdk-go/v2" "github.com/hashicorp/packer-plugin-sdk/communicator" "github.com/hashicorp/packer-plugin-sdk/multistep" @@ -46,7 +46,7 @@ type StepRunSourceVm struct { } func (s *StepRunSourceVm) Run(ctx context.Context, state multistep.StateBag) multistep.StepAction { - oscconn := state.Get("osc").(*osc.APIClient) + oscconn := state.Get("osc").(*oscgo.APIClient) securityGroupIds := state.Get("securityGroupIds").([]string) ui := state.Get("ui").(packersdk.Ui) @@ -68,18 +68,18 @@ func (s *StepRunSourceVm) Run(ctx context.Context, state multistep.StateBag) mul } ui.Say("Launching a source OUTSCALE vm...") - image, ok := state.Get("source_image").(osc.Image) + image, ok := state.Get("source_image").(oscgo.Image) if !ok { state.Put("error", fmt.Errorf("source_image type assertion failed")) return multistep.ActionHalt } - s.SourceOMI = image.ImageId + s.SourceOMI = *image.ImageId - if s.ExpectedRootDevice != "" && image.RootDeviceType != s.ExpectedRootDevice { + if s.ExpectedRootDevice != "" && *image.RootDeviceType != s.ExpectedRootDevice { state.Put("error", fmt.Errorf( "The provided source OMI has an invalid root device type.\n"+ "Expected '%s', got '%s'.", - s.ExpectedRootDevice, image.RootDeviceType)) + s.ExpectedRootDevice, image.GetRootDeviceType())) return multistep.ActionHalt } @@ -109,33 +109,32 @@ func (s *StepRunSourceVm) Run(ctx context.Context, state multistep.StateBag) mul } subregion := state.Get("subregion_name").(string) - runOpts := osc.CreateVmsRequest{ - ImageId: s.SourceOMI, - VmType: s.VmType, - UserData: userData, - MaxVmsCount: 1, - MinVmsCount: 1, - Placement: osc.Placement{SubregionName: subregion}, - BsuOptimized: s.BsuOptimized, - BlockDeviceMappings: s.BlockDevices.BuildOSCLaunchDevices(), + vmcount := int32(1) + runOpts := oscgo.CreateVmsRequest{ + ImageId: s.SourceOMI, + VmType: &s.VmType, + UserData: &userData, + MaxVmsCount: &vmcount, + MinVmsCount: &vmcount, + Placement: &oscgo.Placement{SubregionName: &subregion}, + BsuOptimized: &s.BsuOptimized, + //BlockDeviceMappings: s.BlockDevices.BuildOSCLaunchDevices(), } if s.Comm.SSHKeyPairName != "" { - runOpts.KeypairName = s.Comm.SSHKeyPairName + runOpts.KeypairName = &s.Comm.SSHKeyPairName } subnetID := state.Get("subnet_id").(string) - runOpts.SubnetId = subnetID - runOpts.SecurityGroupIds = securityGroupIds + runOpts.SubnetId = &subnetID + runOpts.SecurityGroupIds = &securityGroupIds if s.ExpectedRootDevice == "bsu" { - runOpts.VmInitiatedShutdownBehavior = s.VmInitiatedShutdownBehavior + runOpts.VmInitiatedShutdownBehavior = &s.VmInitiatedShutdownBehavior } - runResp, _, err := oscconn.VmApi.CreateVms(context.Background(), &osc.CreateVmsOpts{ - CreateVmsRequest: optional.NewInterface(runOpts), - }) + runResp, _, err := oscconn.VmApi.CreateVms(context.Background()).CreateVmsRequest(runOpts).Execute() if err != nil { err := fmt.Errorf("Error launching source vm: %s", err) @@ -143,8 +142,8 @@ func (s *StepRunSourceVm) Run(ctx context.Context, state multistep.StateBag) mul ui.Error(err.Error()) return multistep.ActionHalt } - vmId = runResp.Vms[0].VmId - volumeId := runResp.Vms[0].BlockDeviceMappings[0].Bsu.VolumeId + vmId = *runResp.GetVms()[0].VmId + volumeId := *runResp.GetVms()[0].GetBlockDeviceMappings()[0].Bsu.VolumeId // Set the vm ID so that the cleanup works properly s.vmId = vmId @@ -152,9 +151,9 @@ func (s *StepRunSourceVm) Run(ctx context.Context, state multistep.StateBag) mul ui.Message(fmt.Sprintf("Vm ID: %s", vmId)) ui.Say(fmt.Sprintf("Waiting for vm (%v) to become ready...", vmId)) - request := osc.ReadVmsRequest{ - Filters: osc.FiltersVm{ - VmIds: []string{vmId}, + request := oscgo.ReadVmsRequest{ + Filters: &oscgo.FiltersVm{ + VmIds: &[]string{vmId}, }, } if err := waitUntilForOscVmRunning(oscconn, vmId); err != nil { @@ -185,9 +184,8 @@ func (s *StepRunSourceVm) Run(ctx context.Context, state multistep.StateBag) mul if publicip_id, ok := state.Get("publicip_id").(string); ok { ui.Say(fmt.Sprintf("Linking temporary PublicIp %s to instance %s", publicip_id, vmId)) - _, _, err := oscconn.PublicIpApi.LinkPublicIp(context.Background(), &osc.LinkPublicIpOpts{ - LinkPublicIpRequest: optional.NewInterface(osc.LinkPublicIpRequest{PublicIpId: publicip_id, VmId: vmId}), - }) + request := oscgo.LinkPublicIpRequest{PublicIpId: &publicip_id, VmId: &vmId} + _, _, err := oscconn.PublicIpApi.LinkPublicIp(context.Background()).LinkPublicIpRequest(request).Execute() if err != nil { state.Put("error", fmt.Errorf("Error linking PublicIp to VM: %s", err)) ui.Error(err.Error()) @@ -195,31 +193,28 @@ func (s *StepRunSourceVm) Run(ctx context.Context, state multistep.StateBag) mul } } - resp, _, err := oscconn.VmApi.ReadVms(context.Background(), &osc.ReadVmsOpts{ - ReadVmsRequest: optional.NewInterface(request), - }) - + resp, _, err := oscconn.VmApi.ReadVms(context.Background()).ReadVmsRequest(request).Execute() r := resp - if err != nil || len(r.Vms) == 0 { + if err != nil || len(r.GetVms()) == 0 { err := fmt.Errorf("Error finding source vm.") state.Put("error", err) ui.Error(err.Error()) return multistep.ActionHalt } - vm := r.Vms[0] + vm := r.GetVms()[0] if s.Debug { - if vm.PublicDnsName != "" { - ui.Message(fmt.Sprintf("Public DNS: %s", vm.PublicDnsName)) + if vm.PublicDnsName != nil { + ui.Message(fmt.Sprintf("Public DNS: %s", vm.GetPublicDnsName())) } - if vm.PublicIp != "" { - ui.Message(fmt.Sprintf("Public IP: %s", vm.PublicIp)) + if vm.PublicIp != nil { + ui.Message(fmt.Sprintf("Public IP: %s", vm.GetPublicIp())) } - if vm.PrivateIp != "" { - ui.Message(fmt.Sprintf("Private IP: %s", vm.PrivateIp)) + if vm.PrivateIp != nil { + ui.Message(fmt.Sprintf("Private IP: %s", vm.GetPrivateIp())) } } @@ -235,12 +230,11 @@ func (s *StepRunSourceVm) Run(ctx context.Context, state multistep.StateBag) mul oscTags.Report(ui) // Retry creating tags for about 2.5 minutes err = retry.Run(0.2, 30, 11, func(_ uint) (bool, error) { - _, _, err := oscconn.TagApi.CreateTags(context.Background(), &osc.CreateTagsOpts{ - CreateTagsRequest: optional.NewInterface(osc.CreateTagsRequest{ - Tags: oscTags, - ResourceIds: []string{vmId}, - }), - }) + request := oscgo.CreateTagsRequest{ + Tags: oscTags, + ResourceIds: []string{vmId}, + } + _, _, err := oscconn.TagApi.CreateTags(context.Background()).CreateTagsRequest(request).Execute() if err == nil { return true, nil } @@ -263,9 +257,9 @@ func (s *StepRunSourceVm) Run(ctx context.Context, state multistep.StateBag) mul // Now tag volumes volumeIds := make([]string, 0) - for _, v := range vm.BlockDeviceMappings { + for _, v := range *vm.BlockDeviceMappings { if bsu := v.Bsu; !reflect.DeepEqual(bsu, osc.BsuCreated{}) { - volumeIds = append(volumeIds, bsu.VolumeId) + volumeIds = append(volumeIds, *bsu.VolumeId) } } @@ -274,22 +268,20 @@ func (s *StepRunSourceVm) Run(ctx context.Context, state multistep.StateBag) mul volumeTags, err := s.VolumeTags.OSCTags(s.Ctx, rawRegion, state) if err != nil { - err := fmt.Errorf("Error tagging source BSU Volumes on %s: %s", vm.VmId, err) + err := fmt.Errorf("Error tagging source BSU Volumes on %s: %s", vm.GetVmId(), err) state.Put("error", err) ui.Error(err.Error()) return multistep.ActionHalt } volumeTags.Report(ui) - - _, _, err = oscconn.TagApi.CreateTags(context.Background(), &osc.CreateTagsOpts{ - CreateTagsRequest: optional.NewInterface(osc.CreateTagsRequest{ - ResourceIds: volumeIds, - Tags: volumeTags, - }), - }) + request := oscgo.CreateTagsRequest{ + ResourceIds: volumeIds, + Tags: volumeTags, + } + _, _, err = oscconn.TagApi.CreateTags(context.Background()).CreateTagsRequest(request).Execute() if err != nil { - err := fmt.Errorf("Error tagging source BSU Volumes on %s: %s", vm.VmId, err) + err := fmt.Errorf("Error tagging source BSU Volumes on %s: %s", vm.GetVmId(), err) state.Put("error", err) ui.Error(err.Error()) return multistep.ActionHalt @@ -301,15 +293,16 @@ func (s *StepRunSourceVm) Run(ctx context.Context, state multistep.StateBag) mul } func (s *StepRunSourceVm) Cleanup(state multistep.StateBag) { - oscconn := state.Get("osc").(*osc.APIClient) + oscconn := state.Get("osc").(*oscgo.APIClient) ui := state.Get("ui").(packersdk.Ui) // Terminate the source vm if it exists if s.vmId != "" { ui.Say("Terminating the source OUTSCALE vm...") - if _, _, err := oscconn.VmApi.DeleteVms(context.Background(), &osc.DeleteVmsOpts{ - DeleteVmsRequest: optional.NewInterface(osc.DeleteVmsRequest{VmIds: []string{s.vmId}}), - }); err != nil { + _, _, err := oscconn.VmApi.DeleteVms(context.Background()).DeleteVmsRequest(oscgo.DeleteVmsRequest{ + VmIds: []string{s.vmId}, + }).Execute() + if err != nil { ui.Error(fmt.Sprintf("Error terminating vm, may still be around: %s", err)) return } diff --git a/builder/osc/common/step_security_group.go b/builder/osc/common/step_security_group.go index ba70bf75..b422909e 100644 --- a/builder/osc/common/step_security_group.go +++ b/builder/osc/common/step_security_group.go @@ -6,12 +6,11 @@ import ( "log" "strings" - "github.com/antihax/optional" "github.com/hashicorp/packer-plugin-sdk/communicator" "github.com/hashicorp/packer-plugin-sdk/multistep" packersdk "github.com/hashicorp/packer-plugin-sdk/packer" "github.com/hashicorp/packer-plugin-sdk/uuid" - "github.com/outscale/osc-sdk-go/osc" + oscgo "github.com/outscale/osc-sdk-go/v2" ) type StepSecurityGroup struct { @@ -26,20 +25,19 @@ type StepSecurityGroup struct { func (s *StepSecurityGroup) Run(_ context.Context, state multistep.StateBag) multistep.StepAction { var ( ui = state.Get("ui").(packersdk.Ui) - conn = state.Get("osc").(*osc.APIClient) + conn = state.Get("osc").(*oscgo.APIClient) netID = state.Get("net_id").(string) ) if len(s.SecurityGroupIds) > 0 { - resp, _, err := conn.SecurityGroupApi.ReadSecurityGroups(context.Background(), &osc.ReadSecurityGroupsOpts{ - ReadSecurityGroupsRequest: optional.NewInterface(osc.ReadSecurityGroupsRequest{ - Filters: osc.FiltersSecurityGroup{ - SecurityGroupIds: s.SecurityGroupIds, - }, - }), - }) - - if err != nil || len(resp.SecurityGroups) == 0 { + req := oscgo.ReadSecurityGroupsRequest{ + Filters: &oscgo.FiltersSecurityGroup{ + SecurityGroupIds: &s.SecurityGroupIds, + }, + } + resp, _, err := conn.SecurityGroupApi.ReadSecurityGroups(context.Background()).ReadSecurityGroupsRequest(req).Execute() + + if err != nil || len(*resp.SecurityGroups) == 0 { err := fmt.Errorf("Couldn't find specified security group: %s", err) log.Printf("[DEBUG] %s", err.Error()) state.Put("error", err) @@ -57,14 +55,11 @@ func (s *StepSecurityGroup) Run(_ context.Context, state multistep.StateBag) mul filterReq := buildSecurityGroupFilters(s.SecurityGroupFilter.Filters) log.Printf("Using SecurityGroup Filters %v", filterReq) - - resp, _, err := conn.SecurityGroupApi.ReadSecurityGroups(context.Background(), &osc.ReadSecurityGroupsOpts{ - ReadSecurityGroupsRequest: optional.NewInterface(osc.ReadSecurityGroupsRequest{ - Filters: filterReq, - }), - }) - - if err != nil || len(resp.SecurityGroups) == 0 { + req := oscgo.ReadSecurityGroupsRequest{ + Filters: &filterReq, + } + resp, _, err := conn.SecurityGroupApi.ReadSecurityGroups(context.Background()).ReadSecurityGroupsRequest(req).Execute() + if err != nil || len(*resp.SecurityGroups) == 0 { err := fmt.Errorf("Couldn't find security groups for filter: %s", err) log.Printf("[DEBUG] %s", err.Error()) state.Put("error", err) @@ -73,8 +68,8 @@ func (s *StepSecurityGroup) Run(_ context.Context, state multistep.StateBag) mul } securityGroupIds := []string{} - for _, sg := range resp.SecurityGroups { - securityGroupIds = append(securityGroupIds, sg.SecurityGroupId) + for _, sg := range *resp.SecurityGroups { + securityGroupIds = append(securityGroupIds, *sg.SecurityGroupId) } ui.Message(fmt.Sprintf("Found Security Group(s): %s", strings.Join(securityGroupIds, ", "))) @@ -87,15 +82,13 @@ func (s *StepSecurityGroup) Run(_ context.Context, state multistep.StateBag) mul groupName := fmt.Sprintf("packer_osc_%s", uuid.TimeOrderedUUID()) ui.Say(fmt.Sprintf("Creating temporary security group for this instance: %s", groupName)) - createSGReq := osc.CreateSecurityGroupRequest{ + createSGReq := oscgo.CreateSecurityGroupRequest{ SecurityGroupName: groupName, - NetId: netID, + NetId: &netID, Description: "Temporary group for Packer", } - resp, _, err := conn.SecurityGroupApi.CreateSecurityGroup(context.Background(), &osc.CreateSecurityGroupOpts{ - CreateSecurityGroupRequest: optional.NewInterface(createSGReq), - }) + resp, _, err := conn.SecurityGroupApi.CreateSecurityGroup(context.Background()).CreateSecurityGroupRequest(createSGReq).Execute() if err != nil { ui.Error(err.Error()) @@ -104,36 +97,33 @@ func (s *StepSecurityGroup) Run(_ context.Context, state multistep.StateBag) mul } // Set the group ID so we can delete it later - s.createdGroupId = resp.SecurityGroup.SecurityGroupId + s.createdGroupId = *resp.SecurityGroup.SecurityGroupId - port := s.CommConfig.Port() + port := int32(s.CommConfig.Port()) if port == 0 { if s.CommConfig.Type != "none" { state.Put("error", "port must be set to a non-zero value.") return multistep.ActionHalt } } - + ipProtocol := "tcp" // Authorize the SSH access for the security group - createSGRReq := osc.CreateSecurityGroupRuleRequest{ - SecurityGroupId: resp.SecurityGroup.SecurityGroupId, + createSGRReq := oscgo.CreateSecurityGroupRuleRequest{ + SecurityGroupId: *resp.SecurityGroup.SecurityGroupId, Flow: "Inbound", - Rules: []osc.SecurityGroupRule{ + Rules: &[]oscgo.SecurityGroupRule{ { - FromPortRange: int32(port), - ToPortRange: int32(port), - IpRanges: []string{s.TemporarySGSourceCidr}, - IpProtocol: "tcp", + FromPortRange: &port, + ToPortRange: &port, + IpRanges: &[]string{s.TemporarySGSourceCidr}, + IpProtocol: &ipProtocol, }, }, } ui.Say(fmt.Sprintf("Authorizing access to port %d from %s in the temporary security group...", port, s.TemporarySGSourceCidr)) - _, _, err = conn.SecurityGroupRuleApi.CreateSecurityGroupRule(context.Background(), &osc.CreateSecurityGroupRuleOpts{ - CreateSecurityGroupRuleRequest: optional.NewInterface(createSGRReq), - }) - + _, _, err = conn.SecurityGroupRuleApi.CreateSecurityGroupRule(context.Background()).CreateSecurityGroupRuleRequest(createSGRReq).Execute() if err != nil { err := fmt.Errorf("Error authorizing temporary security group: %s", err) state.Put("error", err) @@ -154,42 +144,39 @@ func (s *StepSecurityGroup) Cleanup(state multistep.StateBag) { var ( ui = state.Get("ui").(packersdk.Ui) - conn = state.Get("osc").(*osc.APIClient) + conn = state.Get("osc").(*oscgo.APIClient) ) ui.Say("Deleting temporary security group...") - _, _, err := conn.SecurityGroupApi.DeleteSecurityGroup(context.Background(), &osc.DeleteSecurityGroupOpts{ - DeleteSecurityGroupRequest: optional.NewInterface(osc.DeleteSecurityGroupRequest{ - SecurityGroupId: s.createdGroupId, - }), - }) - + _, _, err := conn.SecurityGroupApi.DeleteSecurityGroup(context.Background()).DeleteSecurityGroupRequest(oscgo.DeleteSecurityGroupRequest{ + SecurityGroupId: &s.createdGroupId, + }).Execute() if err != nil { ui.Error(fmt.Sprintf( "Error cleaning up security group. Please delete the group manually: %s", s.createdGroupId)) } } -func buildSecurityGroupFilters(input map[string]string) osc.FiltersSecurityGroup { - var filters osc.FiltersSecurityGroup +func buildSecurityGroupFilters(input map[string]string) oscgo.FiltersSecurityGroup { + var filters oscgo.FiltersSecurityGroup for k, v := range input { filterValue := []string{v} switch name := k; name { case "account_ids": - filters.AccountIds = filterValue + filters.AccountIds = &filterValue case "security_group_ids": - filters.SecurityGroupIds = filterValue + filters.SecurityGroupIds = &filterValue case "security_group_names": - filters.SecurityGroupNames = filterValue + filters.SecurityGroupNames = &filterValue case "tag_keys": - filters.TagKeys = filterValue + filters.TagKeys = &filterValue case "tag_values": - filters.TagValues = filterValue + filters.TagValues = &filterValue case "tags": - filters.Tags = filterValue + filters.Tags = &filterValue default: log.Printf("[Debug] Unknown Filter Name: %s.", name) } diff --git a/builder/osc/common/step_source_omi_info.go b/builder/osc/common/step_source_omi_info.go index 091bcadc..63569090 100644 --- a/builder/osc/common/step_source_omi_info.go +++ b/builder/osc/common/step_source_omi_info.go @@ -8,10 +8,9 @@ import ( "strconv" "time" - "github.com/antihax/optional" "github.com/hashicorp/packer-plugin-sdk/multistep" packersdk "github.com/hashicorp/packer-plugin-sdk/packer" - "github.com/outscale/osc-sdk-go/osc" + oscgo "github.com/outscale/osc-sdk-go/v2" ) // StepSourceOMIInfo extracts critical information from the source OMI @@ -25,18 +24,18 @@ type StepSourceOMIInfo struct { OmiFilters OmiFilterOptions } -type imageOscSort []osc.Image +type imageOscSort []oscgo.Image func (a imageOscSort) Len() int { return len(a) } func (a imageOscSort) Swap(i, j int) { a[i], a[j] = a[j], a[i] } func (a imageOscSort) Less(i, j int) bool { - itime, _ := time.Parse(time.RFC3339, a[i].CreationDate) - jtime, _ := time.Parse(time.RFC3339, a[j].CreationDate) + itime, _ := time.Parse(time.RFC3339, *a[i].CreationDate) + jtime, _ := time.Parse(time.RFC3339, *a[j].CreationDate) return itime.Unix() < jtime.Unix() } // Returns the most recent OMI out of a slice of images. -func mostRecentOscOmi(images []osc.Image) osc.Image { +func mostRecentOscOmi(images []oscgo.Image) oscgo.Image { sortedImages := images sort.Sort(imageOscSort(sortedImages)) return sortedImages[len(sortedImages)-1] @@ -48,20 +47,20 @@ func isNumeric(s string) bool { } func (s *StepSourceOMIInfo) Run(_ context.Context, state multistep.StateBag) multistep.StepAction { - oscconn := state.Get("osc").(*osc.APIClient) + oscconn := state.Get("osc").(*oscgo.APIClient) ui := state.Get("ui").(packersdk.Ui) - params := osc.ReadImagesRequest{ - Filters: osc.FiltersImage{}, + params := oscgo.ReadImagesRequest{ + Filters: &oscgo.FiltersImage{}, } - if s.SourceOmi != "" { - params.Filters.ImageIds = []string{s.SourceOmi} + params.Filters.SetImageIds([]string{s.SourceOmi}) } // We have filters to apply if len(s.OmiFilters.Filters) > 0 { - params.Filters = buildOSCOMIFilters(s.OmiFilters.Filters) + omiFilter := buildOSCOMIFilters(s.OmiFilters.Filters) + params.Filters = &omiFilter } //TODO:Check if AccountIds correspond to Owners. if len(s.OmiFilters.Owners) > 0 { @@ -75,14 +74,15 @@ func (s *StepSourceOMIInfo) Run(_ context.Context, state multistep.StateBag) mul oali = append(oali, o) } } - params.Filters.AccountIds = oid - params.Filters.AccountAliases = oali + //params.Filters.SetAccountIds(oid) + //params.Filters.SetAccountAliases(oali) + params.Filters.AccountIds = &oid + params.Filters.AccountAliases = &oali } - + log.Printf("filters to pass to API are %#v", params.GetFilters().ImageIds) log.Printf("Using OMI Filters %#v", params) - imageResp, _, err := oscconn.ImageApi.ReadImages(context.Background(), &osc.ReadImagesOpts{ - ReadImagesRequest: optional.NewInterface(params), - }) + + imageResp, _, err := oscconn.ImageApi.ReadImages(context.Background()).ReadImagesRequest(params).Execute() if err != nil { err := fmt.Errorf("Error querying OMI: %s", err) state.Put("error", err) @@ -90,28 +90,28 @@ func (s *StepSourceOMIInfo) Run(_ context.Context, state multistep.StateBag) mul return multistep.ActionHalt } - if len(imageResp.Images) == 0 { + if len(*imageResp.Images) == 0 { err := fmt.Errorf("No OMI was found matching filters: %#v", params) state.Put("error", err) ui.Error(err.Error()) return multistep.ActionHalt } - if len(imageResp.Images) > 1 && !s.OmiFilters.MostRecent { + if len(*imageResp.Images) > 1 && !s.OmiFilters.MostRecent { err := fmt.Errorf("your query returned more than one result. Please try a more specific search, or set most_recent to true") state.Put("error", err) ui.Error(err.Error()) return multistep.ActionHalt } - var image osc.Image + var image oscgo.Image if s.OmiFilters.MostRecent { - image = mostRecentOscOmi(imageResp.Images) + image = mostRecentOscOmi(*imageResp.Images) } else { - image = imageResp.Images[0] + image = imageResp.GetImages()[0] } - ui.Message(fmt.Sprintf("Found Image ID: %s", image.ImageId)) + ui.Message(fmt.Sprintf("Found Image ID: %s", image.GetImageId())) state.Put("source_image", image) return multistep.ActionContinue diff --git a/builder/osc/common/step_source_omi_info_test.go b/builder/osc/common/step_source_omi_info_test.go index 14453998..3ad1f883 100644 --- a/builder/osc/common/step_source_omi_info_test.go +++ b/builder/osc/common/step_source_omi_info_test.go @@ -1,12 +1,12 @@ package common import ( + "bytes" "testing" "github.com/hashicorp/packer-plugin-sdk/multistep" - "github.com/outscale/osc-sdk-go/osc" + oscgo "github.com/outscale/osc-sdk-go/v2" - "bytes" "context" packersdk "github.com/hashicorp/packer-plugin-sdk/packer" @@ -17,7 +17,7 @@ func getState() multistep.StateBag { state := new(multistep.BasicStateBag) accessConfig := &AccessConfig{} accessConfig.RawRegion = "eu-west-2" - var oscConn *osc.APIClient + var oscConn *oscgo.APIClient var err error if oscConn, err = accessConfig.NewOSCClient(); err != nil { return nil diff --git a/builder/osc/common/step_stop_bsu_backed_vm.go b/builder/osc/common/step_stop_bsu_backed_vm.go index 99e0c7fa..b2507b1f 100644 --- a/builder/osc/common/step_stop_bsu_backed_vm.go +++ b/builder/osc/common/step_stop_bsu_backed_vm.go @@ -4,11 +4,10 @@ import ( "context" "fmt" - "github.com/antihax/optional" "github.com/aws/aws-sdk-go/aws/awserr" "github.com/hashicorp/packer-plugin-sdk/multistep" packersdk "github.com/hashicorp/packer-plugin-sdk/packer" - "github.com/outscale/osc-sdk-go/osc" + oscgo "github.com/outscale/osc-sdk-go/v2" "github.com/outscale/packer-plugin-outscale/builder/osc/common/retry" ) @@ -18,8 +17,8 @@ type StepStopBSUBackedVm struct { } func (s *StepStopBSUBackedVm) Run(ctx context.Context, state multistep.StateBag) multistep.StepAction { - oscconn := state.Get("osc").(*osc.APIClient) - vm := state.Get("vm").(osc.Vm) + oscconn := state.Get("osc").(*oscgo.APIClient) + vm := state.Get("vm").(oscgo.Vm) ui := state.Get("ui").(packersdk.Ui) // Skip when it is a spot vm @@ -44,12 +43,9 @@ func (s *StepStopBSUBackedVm) Run(ctx context.Context, state multistep.StateBag) err := retry.Run(10, 60, 6, func(i uint) (bool, error) { ui.Message(fmt.Sprintf("Stopping vm, attempt %d", i+1)) - _, _, err = oscconn.VmApi.StopVms(context.Background(), &osc.StopVmsOpts{ - StopVmsRequest: optional.NewInterface(osc.StopVmsRequest{ - VmIds: []string{vm.VmId}, - }), - }) - + _, _, err = oscconn.VmApi.StopVms(context.Background()).StopVmsRequest(oscgo.StopVmsRequest{ + VmIds: []string{*vm.VmId}, + }).Execute() if err == nil { // success return true, nil @@ -82,10 +78,10 @@ func (s *StepStopBSUBackedVm) Run(ctx context.Context, state multistep.StateBag) // Wait for the vm to actually stop ui.Say("Waiting for the vm to stop...") switch vm.VmInitiatedShutdownBehavior { - case StopShutdownBehavior: - err = waitUntilOscVmStopped(oscconn, vm.VmId) - case TerminateShutdownBehavior: - err = waitUntilOscVmDeleted(oscconn, vm.VmId) + case &StopShutdownBehavior: + err = waitUntilOscVmStopped(oscconn, *vm.VmId) + case &TerminateShutdownBehavior: + err = waitUntilOscVmDeleted(oscconn, *vm.VmId) default: err := fmt.Errorf("Wrong value for the shutdown behavior") state.Put("error", err) diff --git a/builder/osc/common/step_update_omi.go b/builder/osc/common/step_update_omi.go index 99a9c31c..25b2490b 100644 --- a/builder/osc/common/step_update_omi.go +++ b/builder/osc/common/step_update_omi.go @@ -4,12 +4,10 @@ import ( "context" "fmt" - "github.com/antihax/optional" "github.com/hashicorp/packer-plugin-sdk/multistep" packersdk "github.com/hashicorp/packer-plugin-sdk/packer" "github.com/hashicorp/packer-plugin-sdk/template/interpolate" - - osc "github.com/outscale/osc-sdk-go/osc" + oscgo "github.com/outscale/osc-sdk-go/v2" ) type StepUpdateOMIAttributes struct { @@ -43,20 +41,20 @@ func (s *StepUpdateOMIAttributes) Run(_ context.Context, state multistep.StateBa s.Ctx.Data = extractBuildInfo(s.RawRegion, state) - updateSnapshoptRequest := osc.UpdateSnapshotRequest{ - PermissionsToCreateVolume: osc.PermissionsOnResourceCreation{ - Additions: osc.PermissionsOnResource{ - AccountIds: s.AccountIds, - GlobalPermission: s.GlobalPermission, + updateSnapshoptRequest := oscgo.UpdateSnapshotRequest{ + PermissionsToCreateVolume: oscgo.PermissionsOnResourceCreation{ + Additions: &oscgo.PermissionsOnResource{ + AccountIds: &s.AccountIds, + GlobalPermission: &s.GlobalPermission, }, }, } - updateImageRequest := osc.UpdateImageRequest{ - PermissionsToLaunch: osc.PermissionsOnResourceCreation{ - Additions: osc.PermissionsOnResource{ - AccountIds: s.AccountIds, - GlobalPermission: s.GlobalPermission, + updateImageRequest := oscgo.UpdateImageRequest{ + PermissionsToLaunch: oscgo.PermissionsOnResourceCreation{ + Additions: &oscgo.PermissionsOnResource{ + AccountIds: &s.AccountIds, + GlobalPermission: &s.GlobalPermission, }, }, } @@ -68,10 +66,10 @@ func (s *StepUpdateOMIAttributes) Run(_ context.Context, state multistep.StateBa ui.Message(fmt.Sprintf("Updating: %s", omi)) updateImageRequest.ImageId = omi - _, _, err := regionconn.ImageApi.UpdateImage(context.Background(), &osc.UpdateImageOpts{ - UpdateImageRequest: optional.NewInterface(updateImageRequest), - }) - + request := oscgo.UpdateImageRequest{ + ImageId: omi, + } + _, _, err := regionconn.ImageApi.UpdateImage(context.Background()).UpdateImageRequest(request).Execute() if err != nil { err := fmt.Errorf("Error updating OMI: %s", err) state.Put("error", err) @@ -88,9 +86,7 @@ func (s *StepUpdateOMIAttributes) Run(_ context.Context, state multistep.StateBa ui.Message(fmt.Sprintf("Updating: %s", snapshot)) updateSnapshoptRequest.SnapshotId = snapshot - _, _, err := regionconn.SnapshotApi.UpdateSnapshot(context.Background(), &osc.UpdateSnapshotOpts{ - UpdateSnapshotRequest: optional.NewInterface(updateSnapshoptRequest), - }) + _, _, err := regionconn.SnapshotApi.UpdateSnapshot(context.Background()).UpdateSnapshotRequest(updateSnapshoptRequest).Execute() if err != nil { err := fmt.Errorf("Error updating snapshot: %s", err) state.Put("error", err) diff --git a/builder/osc/common/tags.go b/builder/osc/common/tags.go index 7bbbcbc3..7160c660 100644 --- a/builder/osc/common/tags.go +++ b/builder/osc/common/tags.go @@ -4,15 +4,14 @@ import ( "context" "fmt" - "github.com/antihax/optional" "github.com/hashicorp/packer-plugin-sdk/multistep" packersdk "github.com/hashicorp/packer-plugin-sdk/packer" "github.com/hashicorp/packer-plugin-sdk/template/interpolate" - "github.com/outscale/osc-sdk-go/osc" + oscgo "github.com/outscale/osc-sdk-go/v2" ) type TagMap map[string]string -type OSCTags []osc.ResourceTag +type OSCTags []oscgo.ResourceTag func (t OSCTags) Report(ui packersdk.Ui) { for _, tag := range t { @@ -26,7 +25,7 @@ func (t TagMap) IsSet() bool { } func (t TagMap) OSCTags(ctx interpolate.Context, region string, state multistep.StateBag) (OSCTags, error) { - var oscTags []osc.ResourceTag + var oscTags []oscgo.ResourceTag ctx.Data = extractBuildInfo(region, state) for key, value := range t { @@ -38,7 +37,7 @@ func (t TagMap) OSCTags(ctx interpolate.Context, region string, state multistep. if err != nil { return nil, fmt.Errorf("Error processing tag: %s:%s - %s", key, value, err) } - oscTags = append(oscTags, osc.ResourceTag{ + oscTags = append(oscTags, oscgo.ResourceTag{ Key: interpolatedKey, Value: interpolatedValue, }) @@ -46,15 +45,12 @@ func (t TagMap) OSCTags(ctx interpolate.Context, region string, state multistep. return oscTags, nil } -func CreateOSCTags(conn *osc.APIClient, resourceID string, ui packersdk.Ui, tags OSCTags) error { +func CreateOSCTags(conn *oscgo.APIClient, resourceID string, ui packersdk.Ui, tags OSCTags) error { tags.Report(ui) - - _, _, err := conn.TagApi.CreateTags(context.Background(), &osc.CreateTagsOpts{ - CreateTagsRequest: optional.NewInterface(osc.CreateTagsRequest{ - ResourceIds: []string{resourceID}, - Tags: tags, - }), - }) - + request := oscgo.CreateTagsRequest{ + ResourceIds: []string{resourceID}, + Tags: tags, + } + _, _, err := conn.TagApi.CreateTags(context.Background()).CreateTagsRequest(request).Execute() return err } diff --git a/example/most_recent_test.pkr.hcl b/example/most_recent_test.pkr.hcl index 6353b9ce..13553100 100644 --- a/example/most_recent_test.pkr.hcl +++ b/example/most_recent_test.pkr.hcl @@ -32,15 +32,15 @@ source "outscale-bsusurrogate" "test" { volume_size = "${var.volsize}" volume_type = "io1" } - omi_name = "${var.omi_name}" + omi_name = "${var.omi_name}" source_omi_filter { filters = { name = "ubuntu/images/*ubuntu-xenial-16.04-amd64-server-*" root-device-type = "ebs" virtualization-type = "hvm" } + owners = ["099720109477"] most_recent = true - owners = ["099720109477"] } omi_root_device { delete_on_vm_deletion = true @@ -57,4 +57,4 @@ source "outscale-bsusurrogate" "test" { build { sources = [ "source.outscale-bsusurrogate.test" ] -} \ No newline at end of file +} diff --git a/go.mod b/go.mod index df5c59ed..cd7c8852 100644 --- a/go.mod +++ b/go.mod @@ -4,97 +4,41 @@ go 1.19 require ( github.com/antihax/optional v1.0.0 - github.com/aws/aws-sdk-go v1.40.54 + github.com/aws/aws-sdk-go v1.44.103 github.com/hashicorp/go-multierror v1.1.1 github.com/hashicorp/hcl/v2 v2.14.0 github.com/hashicorp/packer-plugin-sdk v0.3.1 github.com/mitchellh/mapstructure v1.5.0 - github.com/outscale/osc-sdk-go v1.11.2 + github.com/outscale/osc-sdk-go/v2 v2.12.0 github.com/zclconf/go-cty v1.10.0 golang.org/x/sys v0.0.0-20220811171246-fbc7d0a398ab ) require ( - 4d63.com/gochecknoglobals v0.1.0 // indirect cloud.google.com/go v0.104.0 // indirect cloud.google.com/go/compute v1.7.0 // indirect cloud.google.com/go/iam v0.5.0 // indirect cloud.google.com/go/storage v1.23.0 // indirect - github.com/Antonboom/errname v0.1.7 // indirect - github.com/Antonboom/nilnil v0.1.1 // indirect github.com/Azure/go-ntlmssp v0.0.0-20200615164410-66371956d46c // indirect - github.com/BurntSushi/toml v1.2.0 // indirect github.com/ChrisTrenkamp/goxpath v0.0.0-20210404020558-97928f7e12b6 // indirect - github.com/Djarvur/go-err113 v0.0.0-20210108212216-aea10b59be24 // indirect - github.com/GaijinEntertainment/go-exhaustruct/v2 v2.3.0 // indirect - github.com/Masterminds/semver v1.5.0 // indirect - github.com/OpenPeeDeeP/depguard v1.1.0 // indirect github.com/agext/levenshtein v1.2.3 // indirect - github.com/alexkohler/prealloc v1.0.0 // indirect - github.com/alingse/asasalint v0.0.11 // indirect github.com/apparentlymart/go-textseg/v13 v13.0.0 // indirect github.com/armon/go-metrics v0.3.10 // indirect - github.com/ashanbrown/forbidigo v1.3.0 // indirect - github.com/ashanbrown/makezero v1.1.1 // indirect - github.com/beorn7/perks v1.0.1 // indirect github.com/bgentry/go-netrc v0.0.0-20140422174119-9fd32a8b3d3d // indirect - github.com/bkielbasa/cyclop v1.2.0 // indirect - github.com/blizzy78/varnamelen v0.8.0 // indirect - github.com/bombsimon/wsl/v3 v3.3.0 // indirect - github.com/breml/bidichk v0.2.3 // indirect - github.com/breml/errchkjson v0.3.0 // indirect - github.com/butuzov/ireturn v0.1.1 // indirect github.com/cenkalti/backoff/v3 v3.2.2 // indirect - github.com/cespare/xxhash/v2 v2.1.2 // indirect - github.com/charithe/durationcheck v0.0.9 // indirect - github.com/chavacava/garif v0.0.0-20220630083739-93517212f375 // indirect - github.com/curioswitch/go-reassign v0.1.2 // indirect - github.com/daixiang0/gci v0.6.3 // indirect - github.com/davecgh/go-spew v1.1.1 // indirect - github.com/denis-tingaikin/go-header v0.4.3 // indirect github.com/dylanmei/iso8601 v0.1.0 // indirect - github.com/esimonov/ifshort v1.0.4 // indirect - github.com/ettle/strcase v0.1.1 // indirect github.com/fatih/color v1.13.0 // indirect - github.com/fatih/structtag v1.2.0 // indirect - github.com/firefart/nonamedreturns v1.0.4 // indirect - github.com/fsnotify/fsnotify v1.5.4 // indirect - github.com/fzipp/gocyclo v0.6.0 // indirect - github.com/go-critic/go-critic v0.6.4 // indirect - github.com/go-toolsmith/astcast v1.0.0 // indirect - github.com/go-toolsmith/astcopy v1.0.1 // indirect - github.com/go-toolsmith/astequal v1.0.2 // indirect - github.com/go-toolsmith/astfmt v1.0.0 // indirect - github.com/go-toolsmith/astp v1.0.0 // indirect - github.com/go-toolsmith/strparse v1.0.0 // indirect - github.com/go-toolsmith/typep v1.0.2 // indirect - github.com/go-xmlfmt/xmlfmt v0.0.0-20191208150333-d5b6f63a941b // indirect - github.com/gobwas/glob v0.2.3 // indirect + github.com/frankban/quicktest v1.14.3 // indirect github.com/gofrs/flock v0.8.1 // indirect github.com/gofrs/uuid v4.0.0+incompatible // indirect github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da // indirect github.com/golang/protobuf v1.5.2 // indirect github.com/golang/snappy v0.0.4 // indirect - github.com/golangci/check v0.0.0-20180506172741-cfe4005ccda2 // indirect - github.com/golangci/dupl v0.0.0-20180902072040-3e9179ac440a // indirect - github.com/golangci/go-misc v0.0.0-20220329215616-d24fe342adfe // indirect - github.com/golangci/gofmt v0.0.0-20190930125516-244bba706f1a // indirect - github.com/golangci/golangci-lint v1.49.0 // indirect - github.com/golangci/lint-1 v0.0.0-20191013205115-297bf364a8e0 // indirect - github.com/golangci/maligned v0.0.0-20180506175553-b1d89398deca // indirect - github.com/golangci/misspell v0.3.5 // indirect - github.com/golangci/revgrep v0.0.0-20220804021717-745bb2f7c2e6 // indirect - github.com/golangci/unconvert v0.0.0-20180507085042-28b1c447d1f4 // indirect github.com/google/go-cmp v0.5.8 // indirect github.com/google/uuid v1.3.0 // indirect github.com/googleapis/enterprise-certificate-proxy v0.1.0 // indirect github.com/googleapis/gax-go/v2 v2.5.1 // indirect github.com/googleapis/go-type-adapters v1.0.0 // indirect - github.com/gordonklaus/ineffassign v0.0.0-20210914165742-4cc7213b9bc8 // indirect - github.com/gostaticanalysis/analysisutil v0.7.1 // indirect - github.com/gostaticanalysis/comment v1.4.2 // indirect - github.com/gostaticanalysis/forcetypeassert v0.1.0 // indirect - github.com/gostaticanalysis/nilerr v0.1.1 // indirect github.com/hashicorp/consul/api v1.12.0 // indirect github.com/hashicorp/errwrap v1.1.0 // indirect github.com/hashicorp/go-cleanhttp v0.5.2 // indirect @@ -114,133 +58,44 @@ require ( github.com/hashicorp/vault/api v1.1.1 // indirect github.com/hashicorp/vault/sdk v0.2.1 // indirect github.com/hashicorp/yamux v0.0.0-20210826001029-26ff87cf9493 // indirect - github.com/hexops/gotextdiff v1.0.3 // indirect - github.com/inconshreveable/mousetrap v1.0.0 // indirect github.com/jehiah/go-strftime v0.0.0-20171201141054-1d33003b3869 // indirect - github.com/jgautheron/goconst v1.5.1 // indirect - github.com/jingyugao/rowserrcheck v1.1.1 // indirect - github.com/jirfag/go-printf-func-name v0.0.0-20200119135958-7558a9eaa5af // indirect github.com/jmespath/go-jmespath v0.4.0 // indirect - github.com/julz/importas v0.1.0 // indirect - github.com/kisielk/errcheck v1.6.2 // indirect - github.com/kisielk/gotool v1.0.0 // indirect github.com/kr/fs v0.1.0 // indirect - github.com/kulti/thelper v0.6.3 // indirect - github.com/kunwardeep/paralleltest v1.0.6 // indirect - github.com/kyoh86/exportloopref v0.1.8 // indirect - github.com/ldez/gomoddirectives v0.2.3 // indirect - github.com/ldez/tagliatelle v0.3.1 // indirect - github.com/leonklingele/grouper v1.1.0 // indirect - github.com/lufeee/execinquery v1.2.1 // indirect - github.com/magiconair/properties v1.8.6 // indirect - github.com/maratori/testpackage v1.1.0 // indirect github.com/masterzen/simplexml v0.0.0-20190410153822-31eea3082786 // indirect github.com/masterzen/winrm v0.0.0-20210623064412-3b76017826b0 // indirect - github.com/matoous/godox v0.0.0-20210227103229-6504466cf951 // indirect github.com/mattn/go-colorable v0.1.13 // indirect github.com/mattn/go-isatty v0.0.16 // indirect - github.com/mattn/go-runewidth v0.0.9 // indirect - github.com/matttproud/golang_protobuf_extensions v1.0.1 // indirect - github.com/mbilski/exhaustivestruct v1.2.0 // indirect - github.com/mgechev/revive v1.2.3 // indirect github.com/mitchellh/go-fs v0.0.0-20180402235330-b7b9ca407fff // indirect github.com/mitchellh/go-homedir v1.1.0 // indirect github.com/mitchellh/go-testing-interface v1.14.1 // indirect github.com/mitchellh/go-wordwrap v1.0.1 // indirect github.com/mitchellh/iochan v1.0.0 // indirect github.com/mitchellh/reflectwalk v1.0.0 // indirect - github.com/moricho/tparallel v0.2.1 // indirect - github.com/nakabonne/nestif v0.3.1 // indirect - github.com/nbutton23/zxcvbn-go v0.0.0-20210217022336-fa2cb2858354 // indirect - github.com/nishanths/exhaustive v0.8.1 // indirect - github.com/nishanths/predeclared v0.2.2 // indirect + github.com/niemeyer/pretty v0.0.0-20200227124842-a10e7caefd8e // indirect github.com/nu7hatch/gouuid v0.0.0-20131221200532-179d4d0c4d8d // indirect - github.com/olekukonko/tablewriter v0.0.5 // indirect github.com/packer-community/winrmcp v0.0.0-20180921211025-c76d91c1e7db // indirect - github.com/pelletier/go-toml v1.9.5 // indirect - github.com/pelletier/go-toml/v2 v2.0.2 // indirect - github.com/phayes/checkstyle v0.0.0-20170904204023-bfd46e6a821d // indirect github.com/pierrec/lz4 v2.6.1+incompatible // indirect - github.com/pkg/errors v0.9.1 // indirect github.com/pkg/sftp v1.13.2 // indirect - github.com/pmezard/go-difflib v1.0.0 // indirect - github.com/polyfloyd/go-errorlint v1.0.2 // indirect - github.com/prometheus/client_golang v1.12.1 // indirect - github.com/prometheus/client_model v0.2.0 // indirect - github.com/prometheus/common v0.32.1 // indirect - github.com/prometheus/procfs v0.7.3 // indirect - github.com/quasilyte/go-ruleguard v0.3.17 // indirect - github.com/quasilyte/gogrep v0.0.0-20220120141003-628d8b3623b5 // indirect - github.com/quasilyte/regex/syntax v0.0.0-20200407221936-30656e2c4a95 // indirect - github.com/quasilyte/stdinfo v0.0.0-20220114132959-f7386bf02567 // indirect - github.com/ryancurrah/gomodguard v1.2.4 // indirect - github.com/ryanrolds/sqlclosecheck v0.3.0 // indirect + github.com/rogpeppe/go-internal v1.8.1 // indirect github.com/ryanuber/go-glob v1.0.0 // indirect - github.com/sanposhiho/wastedassign/v2 v2.0.6 // indirect - github.com/sashamelentyev/interfacebloat v1.1.0 // indirect - github.com/sashamelentyev/usestdlibvars v1.13.0 // indirect - github.com/securego/gosec/v2 v2.13.1 // indirect - github.com/shazow/go-diff v0.0.0-20160112020656-b6b7b6733b8c // indirect - github.com/sirupsen/logrus v1.9.0 // indirect - github.com/sivchari/containedctx v1.0.2 // indirect - github.com/sivchari/nosnakecase v1.7.0 // indirect - github.com/sivchari/tenv v1.7.0 // indirect - github.com/sonatard/noctx v0.0.1 // indirect - github.com/sourcegraph/go-diff v0.6.1 // indirect - github.com/spf13/afero v1.8.2 // indirect - github.com/spf13/cast v1.5.0 // indirect - github.com/spf13/cobra v1.5.0 // indirect - github.com/spf13/jwalterweatherman v1.1.0 // indirect - github.com/spf13/pflag v1.0.5 // indirect - github.com/spf13/viper v1.12.0 // indirect - github.com/ssgreg/nlreturn/v2 v2.2.1 // indirect - github.com/stbenjam/no-sprintf-host-port v0.1.1 // indirect - github.com/stretchr/objx v0.4.0 // indirect github.com/stretchr/testify v1.8.0 // indirect - github.com/subosito/gotenv v1.4.0 // indirect - github.com/sylvia7788/contextcheck v1.0.6 // indirect - github.com/tdakkota/asciicheck v0.1.1 // indirect - github.com/tetafro/godot v1.4.11 // indirect - github.com/timakin/bodyclose v0.0.0-20210704033933-f49887972144 // indirect - github.com/timonwong/logrlint v0.1.0 // indirect - github.com/tomarrell/wrapcheck/v2 v2.6.2 // indirect - github.com/tommy-muehle/go-mnd/v2 v2.5.0 // indirect github.com/ugorji/go/codec v1.2.6 // indirect github.com/ulikunitz/xz v0.5.10 // indirect - github.com/ultraware/funlen v0.0.3 // indirect - github.com/ultraware/whitespace v0.0.5 // indirect - github.com/uudashr/gocognit v1.0.6 // indirect - github.com/yagipy/maintidx v1.0.0 // indirect - github.com/yeya24/promlinter v0.2.0 // indirect - gitlab.com/bosi/decorder v0.2.3 // indirect go.opencensus.io v0.23.0 // indirect - go.uber.org/atomic v1.7.0 // indirect - go.uber.org/multierr v1.6.0 // indirect - go.uber.org/zap v1.17.0 // indirect golang.org/x/crypto v0.0.0-20220722155217-630584e8d5aa // indirect - golang.org/x/exp v0.0.0-20220722155223-a9213eeb770e // indirect - golang.org/x/exp/typeparams v0.0.0-20220613132600-b0d781184e0d // indirect - golang.org/x/mod v0.6.0-dev.0.20220419223038-86c51ed26bb4 // indirect golang.org/x/net v0.0.0-20220909164309-bea034e7d591 // indirect golang.org/x/oauth2 v0.0.0-20220909003341-f21342109be1 // indirect golang.org/x/sync v0.0.0-20220722155255-886fb9371eb4 // indirect golang.org/x/term v0.0.0-20210927222741-03fcf44c2211 // indirect golang.org/x/text v0.3.7 // indirect golang.org/x/time v0.0.0-20210723032227-1f47c861a9ac // indirect - golang.org/x/tools v0.1.12 // indirect golang.org/x/xerrors v0.0.0-20220609144429-65e65417b02f // indirect google.golang.org/api v0.97.0 // indirect google.golang.org/appengine v1.6.7 // indirect google.golang.org/genproto v0.0.0-20220926220553-6981cbe3cfce // indirect google.golang.org/grpc v1.49.0 // indirect google.golang.org/protobuf v1.28.1 // indirect - gopkg.in/ini.v1 v1.66.6 // indirect + gopkg.in/check.v1 v1.0.0-20200227125254-8fa46927fb4f // indirect gopkg.in/square/go-jose.v2 v2.6.0 // indirect gopkg.in/yaml.v2 v2.4.0 // indirect - gopkg.in/yaml.v3 v3.0.1 // indirect - honnef.co/go/tools v0.3.3 // indirect - mvdan.cc/gofumpt v0.3.1 // indirect - mvdan.cc/interfacer v0.0.0-20180901003855-c20040233aed // indirect - mvdan.cc/lint v0.0.0-20170908181259-adc824a0674b // indirect - mvdan.cc/unparam v0.0.0-20220706161116-678bad134442 // indirect ) diff --git a/go.sum b/go.sum index 0893da76..863ce5b7 100644 --- a/go.sum +++ b/go.sum @@ -1,12 +1,9 @@ -4d63.com/gochecknoglobals v0.1.0 h1:zeZSRqj5yCg28tCkIV/z/lWbwvNm5qnKVS15PI8nhD0= -4d63.com/gochecknoglobals v0.1.0/go.mod h1:wfdC5ZjKSPr7CybKEcgJhUOgeAQW1+7WcyK8OvUilfo= bazil.org/fuse v0.0.0-20160811212531-371fbbdaa898/go.mod h1:Xbm+BRKSBEpa4q4hTSxohYNQpsxXPbPry4JJWOB3LB8= cloud.google.com/go v0.26.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw= cloud.google.com/go v0.34.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw= cloud.google.com/go v0.38.0/go.mod h1:990N+gfupTy94rShfmMCWGDn0LpTmnzTp2qbd1dvSRU= cloud.google.com/go v0.44.1/go.mod h1:iSa0KzasP4Uvy3f1mN/7PiObzGgflwredwwASm/v6AU= cloud.google.com/go v0.44.2/go.mod h1:60680Gw3Yr4ikxnPRS/oxxkBccT6SA1yMk63TGekxKY= -cloud.google.com/go v0.44.3/go.mod h1:60680Gw3Yr4ikxnPRS/oxxkBccT6SA1yMk63TGekxKY= cloud.google.com/go v0.45.1/go.mod h1:RpBamKRgapWJb87xiFSdk4g1CME7QZg3uwTez+TSTjc= cloud.google.com/go v0.46.3/go.mod h1:a6bKKbmY7er1mI7TEI4lsAkts/mkhTSZK8w33B4RAg0= cloud.google.com/go v0.50.0/go.mod h1:r9sluTvynVuxRIOHXQEHMFffphuXHOMZMycpNR5e6To= @@ -19,7 +16,6 @@ cloud.google.com/go v0.62.0/go.mod h1:jmCYTdRCQuc1PHIIJ/maLInMho30T/Y0M4hTdTShOY cloud.google.com/go v0.65.0/go.mod h1:O5N8zS7uWy9vkA9vayVHs65eM1ubvY4h553ofrNHObY= cloud.google.com/go v0.72.0/go.mod h1:M+5Vjvlc2wnp6tjzE102Dw08nGShTscUx2nZMufOKPI= cloud.google.com/go v0.74.0/go.mod h1:VV1xSbzvo+9QJOxLDaJfTjx5e+MePCpCWwvftOeQmWk= -cloud.google.com/go v0.75.0/go.mod h1:VGuuCn7PG0dwsd5XPVm2Mm3wlh3EL55/79EKB6hlPTY= cloud.google.com/go v0.78.0/go.mod h1:QjdrLG0uq+YwhjoVOLsS1t7TW8fs36kLs4XO5R5ECHg= cloud.google.com/go v0.79.0/go.mod h1:3bzgcEeQlzbuEAYu4mrWhKqWjmpprinYgKJLgKHnbb8= cloud.google.com/go v0.81.0/go.mod h1:mk/AM35KwGk/Nm2YSeZbxXdrNK3KZOYHmLkOqC2V6E0= @@ -28,8 +24,6 @@ cloud.google.com/go v0.84.0/go.mod h1:RazrYuxIK6Kb7YrzzhPoLmCVzl7Sup4NrbKPg8KHSU cloud.google.com/go v0.87.0/go.mod h1:TpDYlFy7vuLzZMMZ+B6iRiELaY7z/gJPaqbMx6mlWcY= cloud.google.com/go v0.90.0/go.mod h1:kRX0mNRHe0e2rC6oNakvwQqzyDmg57xJ+SZU1eT2aDQ= cloud.google.com/go v0.93.3/go.mod h1:8utlLll2EF5XMAV15woO4lSbWQlk8rer9aLOfLh7+YI= -cloud.google.com/go v0.94.0 h1:QDB2MZHqjTt0hGKnoEWyG/iWykue/lvkLdogLgrg10U= -cloud.google.com/go v0.94.0/go.mod h1:qAlAugsXlC+JWO+Bke5vCtc9ONxjQT3drlTTnAplMW4= cloud.google.com/go v0.94.1/go.mod h1:qAlAugsXlC+JWO+Bke5vCtc9ONxjQT3drlTTnAplMW4= cloud.google.com/go v0.97.0/go.mod h1:GF7l59pYBVlXQIBLx3a761cZ41F9bBH3JUlihCt2Udc= cloud.google.com/go v0.99.0/go.mod h1:w0Xx2nLzqWJPuozYQX+hFfCSI8WioryfRDzkoI/Y2ZA= @@ -65,119 +59,61 @@ cloud.google.com/go/storage v1.5.0/go.mod h1:tpKbwo567HUNpVclU5sGELwQWBDZ8gh0Zeo cloud.google.com/go/storage v1.6.0/go.mod h1:N7U0C8pVQ/+NIKOBQyamJIeKQKkZ+mxpohlUTyfDhBk= cloud.google.com/go/storage v1.8.0/go.mod h1:Wv1Oy7z6Yz3DshWRJFhqM/UCfaWIRTdp0RXyy7KQOVs= cloud.google.com/go/storage v1.10.0/go.mod h1:FLPqc6j+Ki4BU591ie1oL6qBQGu2Bl/tZ9ullr3+Kg0= -cloud.google.com/go/storage v1.14.0/go.mod h1:GrKmX003DSIwi9o29oFT7YDnHYwZoctc3fOKtUw0Xmo= -cloud.google.com/go/storage v1.16.1 h1:sMEIc4wxvoY3NXG7Rn9iP7jb/2buJgWR1vNXCR/UPfs= -cloud.google.com/go/storage v1.16.1/go.mod h1:LaNorbty3ehnU3rEjXSNV/NRgQA0O8Y+uh6bPe5UOk4= cloud.google.com/go/storage v1.22.1/go.mod h1:S8N1cAStu7BOeFfE8KAQzmyyLkK8p/vmRq6kuBTW58Y= cloud.google.com/go/storage v1.23.0 h1:wWRIaDURQA8xxHguFCshYepGlrWIrbBnAmc7wfg07qY= cloud.google.com/go/storage v1.23.0/go.mod h1:vOEEDNFnciUMhBeT6hsJIn3ieU5cFRmzeLgDvXzfIXc= dmitri.shuralyov.com/gpu/mtl v0.0.0-20190408044501-666a987793e9/go.mod h1:H6x//7gZCb22OMCxBHrMx7a5I7Hp++hsVxbQ4BYO7hU= -github.com/Antonboom/errname v0.1.7 h1:mBBDKvEYwPl4WFFNwec1CZO096G6vzK9vvDQzAwkako= -github.com/Antonboom/errname v0.1.7/go.mod h1:g0ONh16msHIPgJSGsecu1G/dcF2hlYR/0SddnIAGavU= -github.com/Antonboom/nilnil v0.1.1 h1:PHhrh5ANKFWRBh7TdYmyyq2gyT2lotnvFvvFbylF81Q= -github.com/Antonboom/nilnil v0.1.1/go.mod h1:L1jBqoWM7AOeTD+tSquifKSesRHs4ZdaxvZR+xdJEaI= github.com/Azure/go-ansiterm v0.0.0-20170929234023-d6e3b3328b78/go.mod h1:LmzpDX56iTiv29bbRTIsUNlaFfuhWRQBWjQdVyAevI8= github.com/Azure/go-ntlmssp v0.0.0-20180810175552-4a21cbd618b4/go.mod h1:chxPXzSsl7ZWRAuOIE23GDNzjWuZquvFlgA8xmpunjU= github.com/Azure/go-ntlmssp v0.0.0-20200615164410-66371956d46c h1:/IBSNwUN8+eKzUzbJPqhK839ygXJ82sde8x3ogr6R28= github.com/Azure/go-ntlmssp v0.0.0-20200615164410-66371956d46c/go.mod h1:chxPXzSsl7ZWRAuOIE23GDNzjWuZquvFlgA8xmpunjU= github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU= -github.com/BurntSushi/toml v1.2.0 h1:Rt8g24XnyGTyglgET/PRUNlrUeu9F5L+7FilkXfZgs0= -github.com/BurntSushi/toml v1.2.0/go.mod h1:CxXYINrC8qIiEnFrOxCa7Jy5BFHlXnUU2pbicEuybxQ= github.com/BurntSushi/xgb v0.0.0-20160522181843-27f122750802/go.mod h1:IVnqGOEym/WlBOVXweHU+Q+/VP0lqqI8lqeDx9IjBqo= github.com/ChrisTrenkamp/goxpath v0.0.0-20170922090931-c385f95c6022/go.mod h1:nuWgzSkT5PnyOd+272uUmV0dnAnAn42Mk7PiQC5VzN4= github.com/ChrisTrenkamp/goxpath v0.0.0-20210404020558-97928f7e12b6 h1:w0E0fgc1YafGEh5cROhlROMWXiNoZqApk2PDN0M1+Ns= github.com/ChrisTrenkamp/goxpath v0.0.0-20210404020558-97928f7e12b6/go.mod h1:nuWgzSkT5PnyOd+272uUmV0dnAnAn42Mk7PiQC5VzN4= github.com/DataDog/datadog-go v3.2.0+incompatible/go.mod h1:LButxg5PwREeZtORoXG3tL4fMGNddJ+vMq1mwgfaqoQ= -github.com/Djarvur/go-err113 v0.0.0-20210108212216-aea10b59be24 h1:sHglBQTwgx+rWPdisA5ynNEsoARbiCBOyGcJM4/OzsM= -github.com/Djarvur/go-err113 v0.0.0-20210108212216-aea10b59be24/go.mod h1:4UJr5HIiMZrwgkSPdsjy2uOQExX/WEILpIrO9UPGuXs= -github.com/GaijinEntertainment/go-exhaustruct/v2 v2.3.0 h1:+r1rSv4gvYn0wmRjC8X7IAzX8QezqtFV9m0MUHFJgts= -github.com/GaijinEntertainment/go-exhaustruct/v2 v2.3.0/go.mod h1:b3g59n2Y+T5xmcxJL+UEG2f8cQploZm1mR/v6BW0mU0= -github.com/Masterminds/goutils v1.1.0/go.mod h1:8cTjp+g8YejhMuvIA5y2vz3BpJxksy863GQaJW2MFNU= -github.com/Masterminds/goutils v1.1.1/go.mod h1:8cTjp+g8YejhMuvIA5y2vz3BpJxksy863GQaJW2MFNU= -github.com/Masterminds/semver v1.5.0 h1:H65muMkzWKEuNDnfl9d70GUjFniHKHRbFPGBuZ3QEww= -github.com/Masterminds/semver v1.5.0/go.mod h1:MB6lktGJrhw8PrUyiEoblNEGEQ+RzHPF078ddwwvV3Y= -github.com/Masterminds/sprig v2.22.0+incompatible/go.mod h1:y6hNFY5UBTIWBxnzTeuNhlNS5hqE0NB0E6fgfo2Br3o= github.com/Microsoft/go-winio v0.4.15-0.20190919025122-fc70bd9a86b5/go.mod h1:tTuCMEN+UleMWgg9dVx4Hu52b1bJo+59jBh3ajtinzw= github.com/Microsoft/hcsshim v0.8.9/go.mod h1:5692vkUqntj1idxauYlpoINNKeqCiG6Sg38RRsjT5y8= github.com/OneOfOne/xxhash v1.2.2/go.mod h1:HSdplMjZKSmBqAxg5vPj2TmRDmfkzw+cTzAElWljhcU= -github.com/OpenPeeDeeP/depguard v1.1.0 h1:pjK9nLPS1FwQYGGpPxoMYpe7qACHOhAWQMQzV71i49o= -github.com/OpenPeeDeeP/depguard v1.1.0/go.mod h1:JtAMzWkmFEzDPyAd+W0NHl1lvpQKTvT9jnRVsohBKpc= -github.com/agext/levenshtein v1.2.1/go.mod h1:JEDfjyjHDjOF/1e4FlBE/PkbqA9OfWu2ki2W0IB5558= github.com/agext/levenshtein v1.2.3 h1:YB2fHEn0UJagG8T1rrWknE3ZQzWM06O8AMAatNn7lmo= github.com/agext/levenshtein v1.2.3/go.mod h1:JEDfjyjHDjOF/1e4FlBE/PkbqA9OfWu2ki2W0IB5558= github.com/alecthomas/template v0.0.0-20160405071501-a0175ee3bccc/go.mod h1:LOuyumcjzFXgccqObfd/Ljyb9UuFJ6TxHnclSeseNhc= github.com/alecthomas/template v0.0.0-20190718012654-fb15b899a751/go.mod h1:LOuyumcjzFXgccqObfd/Ljyb9UuFJ6TxHnclSeseNhc= github.com/alecthomas/units v0.0.0-20151022065526-2efee857e7cf/go.mod h1:ybxpYRFXyAe+OPACYpWeL0wqObRcbAqCMya13uyzqw0= github.com/alecthomas/units v0.0.0-20190717042225-c3de453c63f4/go.mod h1:ybxpYRFXyAe+OPACYpWeL0wqObRcbAqCMya13uyzqw0= -github.com/alecthomas/units v0.0.0-20190924025748-f65c72e2690d/go.mod h1:rBZYJk541a8SKzHPHnH3zbiI+7dagKZ0cgpgrD7Fyho= -github.com/alexkohler/prealloc v1.0.0 h1:Hbq0/3fJPQhNkN0dR95AVrr6R7tou91y0uHG5pOcUuw= -github.com/alexkohler/prealloc v1.0.0/go.mod h1:VetnK3dIgFBBKmg0YnD9F9x6Icjd+9cvfHR56wJVlKE= -github.com/alingse/asasalint v0.0.11 h1:SFwnQXJ49Kx/1GghOFz1XGqHYKp21Kq1nHad/0WQRnw= -github.com/alingse/asasalint v0.0.11/go.mod h1:nCaoMhw7a9kSJObvQyVzNTPBDbNpdocqrSP7t/cW5+I= github.com/antchfx/xpath v1.1.11 h1:WOFtK8TVAjLm3lbgqeP0arlHpvCEeTANeWZ/csPpJkQ= -github.com/antchfx/xpath v1.1.11/go.mod h1:i54GszH55fYfBmoZXapTHN8T8tkcHfRgLyVwwqzXNcs= github.com/antchfx/xquery v0.0.0-20180515051857-ad5b8c7a47b0 h1:JaCC8jz0zdMLk2m+qCCVLLLM/PL93p84w4pK3aJWj60= -github.com/antchfx/xquery v0.0.0-20180515051857-ad5b8c7a47b0/go.mod h1:LzD22aAzDP8/dyiCKFp31He4m2GPjl0AFyzDtZzUu9M= github.com/antihax/optional v1.0.0 h1:xK2lYat7ZLaVVcIuj82J8kIro4V6kDe0AUDFboUCwcg= github.com/antihax/optional v1.0.0/go.mod h1:uupD/76wgC+ih3iEmQUL+0Ugr19nfwCT1kdvxnR2qWY= github.com/apparentlymart/go-dump v0.0.0-20180507223929-23540a00eaa3 h1:ZSTrOEhiM5J5RFxEaFvMZVEAM1KvT1YzbEOwB2EAGjA= -github.com/apparentlymart/go-dump v0.0.0-20180507223929-23540a00eaa3/go.mod h1:oL81AME2rN47vu18xqj1S1jPIPuN7afo62yKTNn3XMM= -github.com/apparentlymart/go-textseg v1.0.0 h1:rRmlIsPEEhUTIKQb7T++Nz/A5Q6C9IuX2wFoYVvnCs0= -github.com/apparentlymart/go-textseg v1.0.0/go.mod h1:z96Txxhf3xSFMPmb5X/1W05FF/Nj9VFpLOpjS5yuumk= github.com/apparentlymart/go-textseg/v13 v13.0.0 h1:Y+KvPE1NYz0xl601PVImeQfFyEy6iT90AvPUL1NNfNw= github.com/apparentlymart/go-textseg/v13 v13.0.0/go.mod h1:ZK2fH7c4NqDTLtiYLvIkEghdlcqw7yxLeM89kiTRPUo= github.com/armon/circbuf v0.0.0-20150827004946-bbbad097214e/go.mod h1:3U/XgcO3hCbHZ8TKRvWD2dDTCfh9M9ya+I9JpbB7O8o= github.com/armon/go-metrics v0.0.0-20180917152333-f0300d1749da/go.mod h1:Q73ZrmVTwzkszR9V5SSuryQ31EELlFMUz1kKyl939pY= github.com/armon/go-metrics v0.3.0/go.mod h1:zXjbSimjXTd7vOpY8B0/2LpvNvDoXBuplAD+gJD3GYs= github.com/armon/go-metrics v0.3.3/go.mod h1:4O98XIr/9W0sxpJ8UaYkvjk10Iff7SnFrb4QAOwNTFc= -github.com/armon/go-metrics v0.3.9 h1:O2sNqxBdvq8Eq5xmzljcYzAORli6RWCvEym4cJf9m18= -github.com/armon/go-metrics v0.3.9/go.mod h1:4O98XIr/9W0sxpJ8UaYkvjk10Iff7SnFrb4QAOwNTFc= github.com/armon/go-metrics v0.3.10 h1:FR+drcQStOe+32sYyJYyZ7FIdgoGGBnwLl+flodp8Uo= github.com/armon/go-metrics v0.3.10/go.mod h1:4O98XIr/9W0sxpJ8UaYkvjk10Iff7SnFrb4QAOwNTFc= github.com/armon/go-radix v0.0.0-20180808171621-7fddfc383310/go.mod h1:ufUuZ+zHj4x4TnLV4JWEpy2hxWSpsRywHrMgIH9cCH8= github.com/armon/go-radix v1.0.0/go.mod h1:ufUuZ+zHj4x4TnLV4JWEpy2hxWSpsRywHrMgIH9cCH8= -github.com/ashanbrown/forbidigo v1.3.0 h1:VkYIwb/xxdireGAdJNZoo24O4lmnEWkactplBlWTShc= -github.com/ashanbrown/forbidigo v1.3.0/go.mod h1:vVW7PEdqEFqapJe95xHkTfB1+XvZXBFg8t0sG2FIxmI= -github.com/ashanbrown/makezero v1.1.1 h1:iCQ87C0V0vSyO+M9E/FZYbu65auqH0lnsOkf5FcB28s= -github.com/ashanbrown/makezero v1.1.1/go.mod h1:i1bJLCRSCHOcOa9Y6MyF2FTfMZMFdHvxKHxgO5Z1axI= github.com/aws/aws-sdk-go v1.25.37/go.mod h1:KmX6BPdI08NWTb3/sm4ZGu5ShLoqVDhKgpiN924inxo= github.com/aws/aws-sdk-go v1.30.8/go.mod h1:5zCpMtNQVjRREroY7sYe8lOMRSxkhG6MZveU8YkpAk0= github.com/aws/aws-sdk-go v1.30.27/go.mod h1:5zCpMtNQVjRREroY7sYe8lOMRSxkhG6MZveU8YkpAk0= -github.com/aws/aws-sdk-go v1.40.34/go.mod h1:585smgzpB/KqRA+K3y/NL/oYRqQvpNJYvLm+LY1U59Q= -github.com/aws/aws-sdk-go v1.40.54 h1:8zYzK8wI06G2+Bg2hwTUwzIYCCo6/Wd7lfS0G+GwqXU= -github.com/aws/aws-sdk-go v1.40.54/go.mod h1:585smgzpB/KqRA+K3y/NL/oYRqQvpNJYvLm+LY1U59Q= +github.com/aws/aws-sdk-go v1.44.103 h1:tbhBHKgiZSIUkG8FcHy3wYKpPVvp65Wn7ZiX0B8phpY= +github.com/aws/aws-sdk-go v1.44.103/go.mod h1:y4AeaBuwd2Lk+GepC1E9v0qOiTws0MIWAX4oIKwKHZo= github.com/beorn7/perks v0.0.0-20180321164747-3a771d992973/go.mod h1:Dwedo/Wpr24TaqPxmxbtue+5NUziq4I4S80YR8gNf3Q= github.com/beorn7/perks v1.0.0/go.mod h1:KWe93zE9D1o94FZ5RNwFwVgaQK1VOXiVxmqh+CedLV8= -github.com/beorn7/perks v1.0.1 h1:VlbKKnNfV8bJzeqoa4cOKqO6bYr3WgKZxO8Z16+hsOM= github.com/beorn7/perks v1.0.1/go.mod h1:G2ZrVWU2WbWT9wwq4/hrbKbnv/1ERSJQ0ibhJ6rlkpw= github.com/bgentry/go-netrc v0.0.0-20140422174119-9fd32a8b3d3d h1:xDfNPAt8lFiC1UJrqV3uuy861HCTo708pDMbjHHdCas= github.com/bgentry/go-netrc v0.0.0-20140422174119-9fd32a8b3d3d/go.mod h1:6QX/PXZ00z/TKoufEY6K/a0k6AhaJrQKdFe6OfVXsa4= github.com/bgentry/speakeasy v0.1.0/go.mod h1:+zsyZBPWlz7T6j88CTgSN5bM796AkVf0kBD4zp0CCIs= -github.com/bkielbasa/cyclop v1.2.0 h1:7Jmnh0yL2DjKfw28p86YTd/B4lRGcNuu12sKE35sM7A= -github.com/bkielbasa/cyclop v1.2.0/go.mod h1:qOI0yy6A7dYC4Zgsa72Ppm9kONl0RoIlPbzot9mhmeI= -github.com/blizzy78/varnamelen v0.8.0 h1:oqSblyuQvFsW1hbBHh1zfwrKe3kcSj0rnXkKzsQ089M= -github.com/blizzy78/varnamelen v0.8.0/go.mod h1:V9TzQZ4fLJ1DSrjVDfl89H7aMnTvKkApdHeyESmyR7k= -github.com/bombsimon/wsl/v3 v3.3.0 h1:Mka/+kRLoQJq7g2rggtgQsjuI/K5Efd87WX96EWFxjM= -github.com/bombsimon/wsl/v3 v3.3.0/go.mod h1:st10JtZYLE4D5sC7b8xV4zTKZwAQjCH/Hy2Pm1FNZIc= -github.com/breml/bidichk v0.2.3 h1:qe6ggxpTfA8E75hdjWPZ581sY3a2lnl0IRxLQFelECI= -github.com/breml/bidichk v0.2.3/go.mod h1:8u2C6DnAy0g2cEq+k/A2+tr9O1s+vHGxWn0LTc70T2A= -github.com/breml/errchkjson v0.3.0 h1:YdDqhfqMT+I1vIxPSas44P+9Z9HzJwCeAzjB8PxP1xw= -github.com/breml/errchkjson v0.3.0/go.mod h1:9Cogkyv9gcT8HREpzi3TiqBxCqDzo8awa92zSDFcofU= -github.com/butuzov/ireturn v0.1.1 h1:QvrO2QF2+/Cx1WA/vETCIYBKtRjc30vesdoPUNo1EbY= -github.com/butuzov/ireturn v0.1.1/go.mod h1:Wh6Zl3IMtTpaIKbmwzqi6olnM9ptYQxxVacMsOEFPoc= github.com/cenkalti/backoff/v3 v3.0.0/go.mod h1:cIeZDE3IrqwwJl6VUwCN6trj1oXrTS4rc0ij+ULvLYs= github.com/cenkalti/backoff/v3 v3.2.2 h1:cfUAAO3yvKMYKPrvhDuHSwQnhZNk/RMHKdZqKTxfm6M= github.com/cenkalti/backoff/v3 v3.2.2/go.mod h1:cIeZDE3IrqwwJl6VUwCN6trj1oXrTS4rc0ij+ULvLYs= github.com/census-instrumentation/opencensus-proto v0.2.1/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU= -github.com/cespare/xxhash v1.1.0 h1:a6HrQnmkObjyL+Gs60czilIUGqrzKutQD6XZog3p+ko= github.com/cespare/xxhash v1.1.0/go.mod h1:XrSqR1VqqWfGrhpAt58auRo0WTKS1nRRg3ghfAqPWnc= github.com/cespare/xxhash/v2 v2.1.1/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs= -github.com/cespare/xxhash/v2 v2.1.2 h1:YRXhKfTDauu4ajMg1TPgFO5jnlC2HCbmLXMcTG5cbYE= -github.com/cespare/xxhash/v2 v2.1.2/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs= -github.com/charithe/durationcheck v0.0.9 h1:mPP4ucLrf/rKZiIG/a9IPXHGlh8p4CzgpyTy6EEutYk= -github.com/charithe/durationcheck v0.0.9/go.mod h1:SSbRIBVfMjCi/kEB6K65XEA83D6prSM8ap1UCpNKtgg= -github.com/chavacava/garif v0.0.0-20220630083739-93517212f375 h1:E7LT642ysztPWE0dfz43cWOvMiF42DyTRC+eZIaO4yI= -github.com/chavacava/garif v0.0.0-20220630083739-93517212f375/go.mod h1:4m1Rv7xfuwWPNKXlThldNuJvutYM6J95wNuuVmn55To= github.com/chzyer/logex v1.1.10/go.mod h1:+Ywpsq7O8HXn0nuIou7OrIPyXbp3wmkHB+jjWRnGsAI= github.com/chzyer/readline v0.0.0-20180603132655-2972be24d48e/go.mod h1:nSuG5e5PlCu98SY8svDHJxuZscDgtXS6KTTbou5AhLI= github.com/chzyer/test v0.0.0-20180213035817-a1ea475d72b1/go.mod h1:Q3SI9o4m/ZMnBNeIyt5eFwwo7qiLfzFZmjNmxjkiQlU= @@ -204,18 +140,10 @@ github.com/containerd/go-runc v0.0.0-20180907222934-5a6d9f37cfa3/go.mod h1:IV7qH github.com/containerd/ttrpc v0.0.0-20190828154514-0e0f228740de/go.mod h1:PvCDdDGpgqzQIzDW1TphrGLssLDZp2GuS+X5DkEJB8o= github.com/containerd/typeurl v0.0.0-20180627222232-a93fcdb778cd/go.mod h1:Cm3kwCdlkCfMSHURc+r6fwoGH6/F1hH3S4sg0rLFWPc= github.com/coreos/go-systemd v0.0.0-20190321100706-95778dfbb74e/go.mod h1:F5haX7vjVVG0kc13fIWeqUViNPyEJxv/OmvnBo0Yme4= -github.com/cpuguy83/go-md2man/v2 v2.0.2/go.mod h1:tgQtvFlXSQOSOSIRvRPT7W67SCa46tRHOmNcaadrF8o= github.com/creack/pty v1.1.9/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ33E= -github.com/cristalhq/acmd v0.7.0/go.mod h1:LG5oa43pE/BbxtfMoImHCQN++0Su7dzipdgBjMCBVDQ= -github.com/curioswitch/go-reassign v0.1.2 h1:ekM07+z+VFT560Exz4mTv0/s1yU9gem6CJc/tlYpkmI= -github.com/curioswitch/go-reassign v0.1.2/go.mod h1:bFJIHgtTM3hRm2sKXSPkbwNjSFyGURQXyn4IXD2qwfQ= -github.com/daixiang0/gci v0.6.3 h1:wUAqXChk8HbwXn8AfxD9DYSCp9Bpz1L3e6Q4Roe+q9E= -github.com/daixiang0/gci v0.6.3/go.mod h1:EpVfrztufwVgQRXjnX4zuNinEpLj5OmMjtu/+MB0V0c= github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c= github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= -github.com/denis-tingaikin/go-header v0.4.3 h1:tEaZKAlqql6SKCY++utLmkPLd6K8IBM20Ha7UVm+mtU= -github.com/denis-tingaikin/go-header v0.4.3/go.mod h1:0wOCWuN71D5qIgE2nz9KrKmuYBAC2Mra5RassOIQ2/c= github.com/docker/distribution v2.7.1+incompatible/go.mod h1:J2gT2udsDAN96Uj4KfcMRqY0/ypR+oyYUYmja8H+y+w= github.com/docker/docker v1.4.2-0.20200319182547-c7ad2b866182/go.mod h1:eEKB0N0r5NX/I1kEveEz05bcu8tLC/8azJZsviup8Sk= github.com/docker/go-connections v0.4.0/go.mod h1:Gbd7IOopHjR8Iph03tsViu4nIes5XhDvyHbTtUxmeec= @@ -224,7 +152,6 @@ github.com/dustin/go-humanize v0.0.0-20171111073723-bb3d318650d4/go.mod h1:Htrtb github.com/dylanmei/iso8601 v0.1.0 h1:812NGQDBcqquTfH5Yeo7lwR0nzx/cKdsmf3qMjPURUI= github.com/dylanmei/iso8601 v0.1.0/go.mod h1:w9KhXSgIyROl1DefbMYIE7UVSIvELTbMrCfx+QkYnoQ= github.com/dylanmei/winrmtest v0.0.0-20170819153634-c2fbb09e6c08 h1:0bp6/GrNOrTDtSXe9YYGCwf8jp5Fb/b+4a6MTRm4qzY= -github.com/dylanmei/winrmtest v0.0.0-20170819153634-c2fbb09e6c08/go.mod h1:VBVDFSBXCIW8JaHQpI8lldSKfYaLMzP9oyq6IJ4fhzY= github.com/envoyproxy/go-control-plane v0.9.0/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4= github.com/envoyproxy/go-control-plane v0.9.1-0.20191026205805-5f8ba28d4473/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4= github.com/envoyproxy/go-control-plane v0.9.4/go.mod h1:6rpuAdCZL397s3pYoYcLgu1mIlRU8Am5FuJP05cCM98= @@ -235,73 +162,31 @@ github.com/envoyproxy/go-control-plane v0.9.9-0.20210512163311-63b5d3c536b0/go.m github.com/envoyproxy/go-control-plane v0.9.10-0.20210907150352-cf90f659a021/go.mod h1:AFq3mo9L8Lqqiid3OhADV3RfLJnjiw63cSpi+fDTRC0= github.com/envoyproxy/go-control-plane v0.10.2-0.20220325020618-49ff273808a1/go.mod h1:KJwIaB5Mv44NWtYuAOFCVOjcI94vtpEz2JU/D2v6IjE= github.com/envoyproxy/protoc-gen-validate v0.1.0/go.mod h1:iSmxcyjqTsJpI2R4NaDN7+kN2VEUnK/pcBlmesArF7c= -github.com/esimonov/ifshort v1.0.4 h1:6SID4yGWfRae/M7hkVDVVyppy8q/v9OuxNdmjLQStBA= -github.com/esimonov/ifshort v1.0.4/go.mod h1:Pe8zjlRrJ80+q2CxHLfEOfTwxCZ4O+MuhcHcfgNWTk0= -github.com/ettle/strcase v0.1.1 h1:htFueZyVeE1XNnMEfbqp5r67qAN/4r6ya1ysq8Q+Zcw= -github.com/ettle/strcase v0.1.1/go.mod h1:hzDLsPC7/lwKyBOywSHEP89nt2pDgdy+No1NBA9o9VY= -github.com/fatih/camelcase v1.0.0/go.mod h1:yN2Sb0lFhZJUdVvtELVWefmrXpuZESvPmqwoZc+/fpc= github.com/fatih/color v1.7.0/go.mod h1:Zm6kSWBoL9eyXnKyktHP6abPY2pDugNf5KwzbycvMj4= github.com/fatih/color v1.9.0/go.mod h1:eQcE1qtQxscV5RaZvpXrrb8Drkc3/DdQ+uUYCNjL+zU= -github.com/fatih/color v1.12.0 h1:mRhaKNwANqRgUBGKmnI5ZxEk7QXmjQeCcuYFMX2bfcc= -github.com/fatih/color v1.12.0/go.mod h1:ELkj/draVOlAH/xkhN6mQ50Qd0MPOk5AAr3maGEBuJM= github.com/fatih/color v1.13.0 h1:8LOYc1KYPPmyKMuN8QV2DNRWNbLo6LZ0iLs8+mlH53w= github.com/fatih/color v1.13.0/go.mod h1:kLAiJbzzSOZDVNGyDpeOxJ47H46qBXwg5ILebYFFOfk= github.com/fatih/structs v1.1.0/go.mod h1:9NiDSp5zOcgEDl+j00MP/WkGVPOlPRLejGD8Ga6PJ7M= -github.com/fatih/structtag v1.2.0 h1:/OdNE99OxoI/PqaW/SuSK9uxxT3f/tcSZgon/ssNSx4= -github.com/fatih/structtag v1.2.0/go.mod h1:mBJUNpUnHmRKrKlQQlmCrh5PuhftFbNv8Ys4/aAZl94= -github.com/firefart/nonamedreturns v1.0.4 h1:abzI1p7mAEPYuR4A+VLKn4eNDOycjYo2phmY9sfv40Y= -github.com/firefart/nonamedreturns v1.0.4/go.mod h1:TDhe/tjI1BXo48CmYbUduTV7BdIga8MAO/xbKdcVsGI= -github.com/frankban/quicktest v1.10.0 h1:Gfh+GAJZOAoKZsIZeZbdn2JF10kN1XHNvjsvQK8gVkE= github.com/frankban/quicktest v1.10.0/go.mod h1:ui7WezCLWMWxVWr1GETZY3smRy0G4KWq9vcPtJmFl7Y= +github.com/frankban/quicktest v1.14.3 h1:FJKSZTDHjyhriyC81FLQ0LY93eSai0ZyR/ZIkd3ZUKE= +github.com/frankban/quicktest v1.14.3/go.mod h1:mgiwOwqx65TmIk1wJ6Q7wvnVMocbUorkibMOrVTHZps= github.com/fsnotify/fsnotify v1.4.7/go.mod h1:jwhsz4b93w/PPRr/qN1Yymfu8t87LnFCMoQvtojpjFo= -github.com/fsnotify/fsnotify v1.5.4 h1:jRbGcIw6P2Meqdwuo0H1p6JVLbL5DHKAKlYndzMwVZI= -github.com/fsnotify/fsnotify v1.5.4/go.mod h1:OVB6XrOHzAwXMpEM7uPOzcehqUV2UqJxmVXmkdnm1bU= -github.com/fzipp/gocyclo v0.6.0 h1:lsblElZG7d3ALtGMx9fmxeTKZaLLpU8mET09yN4BBLo= -github.com/fzipp/gocyclo v0.6.0/go.mod h1:rXPyn8fnlpa0R2csP/31uerbiVBugk5whMdlyaLkLoA= github.com/ghodss/yaml v1.0.0/go.mod h1:4dBDuWmgqj2HViK6kFavaiC9ZROes6MMH2rRYeMEF04= github.com/go-asn1-ber/asn1-ber v1.3.1/go.mod h1:hEBeB/ic+5LoWskz+yKT7vGhhPYkProFKoKdwZRWMe0= -github.com/go-critic/go-critic v0.6.4 h1:tucuG1pvOyYgpBIrVxw0R6gwO42lNa92Aq3VaDoIs+E= -github.com/go-critic/go-critic v0.6.4/go.mod h1:qL5SOlk7NtY6sJPoVCTKDIgzNOxHkkkOCVDyi9wJe1U= github.com/go-gl/glfw v0.0.0-20190409004039-e6da0acd62b1/go.mod h1:vR7hzQXu2zJy9AVAgeJqvqgH9Q5CA+iKCZ2gyEVpxRU= github.com/go-gl/glfw/v3.3/glfw v0.0.0-20191125211704-12ad95a8df72/go.mod h1:tQ2UAYgL5IevRw8kRxooKSPJfGvJ9fJQFa0TUsXzTg8= github.com/go-gl/glfw/v3.3/glfw v0.0.0-20200222043503-6f7a984d4dc4/go.mod h1:tQ2UAYgL5IevRw8kRxooKSPJfGvJ9fJQFa0TUsXzTg8= github.com/go-kit/kit v0.8.0/go.mod h1:xBxKIO96dXMWWy0MnWVtmwkA9/13aqxPnvrjFYMA2as= github.com/go-kit/kit v0.9.0/go.mod h1:xBxKIO96dXMWWy0MnWVtmwkA9/13aqxPnvrjFYMA2as= -github.com/go-kit/log v0.1.0/go.mod h1:zbhenjAZHb184qTLMA9ZjW7ThYL0H2mk7Q6pNt4vbaY= github.com/go-ldap/ldap/v3 v3.1.3/go.mod h1:3rbOH3jRS2u6jg2rJnKAMLE/xQyCKIveG2Sa/Cohzb8= github.com/go-ldap/ldap/v3 v3.1.10/go.mod h1:5Zun81jBTabRaI8lzN7E1JjyEl1g6zI6u9pd8luAK4Q= github.com/go-logfmt/logfmt v0.3.0/go.mod h1:Qt1PoO58o5twSAckw1HlFXLmHsOX5/0LbT9GBnD5lWE= github.com/go-logfmt/logfmt v0.4.0/go.mod h1:3RMwSq7FuexP4Kalkev3ejPJsZTpXXBr9+V4qmtdjCk= -github.com/go-logfmt/logfmt v0.5.0/go.mod h1:wCYkCAKZfumFQihp8CzCvQ3paCTfi41vtzG1KdI/P7A= -github.com/go-sql-driver/mysql v1.4.0/go.mod h1:zAC/RDZ24gD3HViQzih4MyKcchzm+sOG5ZlKdlhCg5w= github.com/go-sql-driver/mysql v1.5.0/go.mod h1:DCzpHaOWr8IXmIStZouvnhqoel9Qv2LBy8hT2VhHyBg= github.com/go-stack/stack v1.8.0/go.mod h1:v0f6uXyyMGvRgIKkXu+yp6POWl0qKG85gN/melR3HDY= github.com/go-test/deep v1.0.2-0.20181118220953-042da051cf31/go.mod h1:wGDj63lr65AM2AQyKZd/NYHGb0R+1RLqB8NKt3aSFNA= github.com/go-test/deep v1.0.2/go.mod h1:wGDj63lr65AM2AQyKZd/NYHGb0R+1RLqB8NKt3aSFNA= github.com/go-test/deep v1.0.3 h1:ZrJSEWsXzPOxaZnFteGEfooLba+ju3FYIbOrS+rQd68= -github.com/go-test/deep v1.0.3/go.mod h1:wGDj63lr65AM2AQyKZd/NYHGb0R+1RLqB8NKt3aSFNA= -github.com/go-toolsmith/astcast v1.0.0 h1:JojxlmI6STnFVG9yOImLeGREv8W2ocNUM+iOhR6jE7g= -github.com/go-toolsmith/astcast v1.0.0/go.mod h1:mt2OdQTeAQcY4DQgPSArJjHCcOwlX+Wl/kwN+LbLGQ4= -github.com/go-toolsmith/astcopy v1.0.0/go.mod h1:vrgyG+5Bxrnz4MZWPF+pI4R8h3qKRjjyvV/DSez4WVQ= -github.com/go-toolsmith/astcopy v1.0.1 h1:l09oBhAPyV74kLJ3ZO31iBU8htZGTwr9LTjuMCyL8go= -github.com/go-toolsmith/astcopy v1.0.1/go.mod h1:4TcEdbElGc9twQEYpVo/aieIXfHhiuLh4aLAck6dO7Y= -github.com/go-toolsmith/astequal v1.0.0/go.mod h1:H+xSiq0+LtiDC11+h1G32h7Of5O3CYFJ99GVbS5lDKY= -github.com/go-toolsmith/astequal v1.0.1/go.mod h1:4oGA3EZXTVItV/ipGiOx7NWkY5veFfcsOJVS2YxltLw= -github.com/go-toolsmith/astequal v1.0.2 h1:+XvaV8zNxua+9+Oa4AHmgmpo4RYAbwr/qjNppLfX2yM= -github.com/go-toolsmith/astequal v1.0.2/go.mod h1:9Ai4UglvtR+4up+bAD4+hCj7iTo4m/OXVTSLnCyTAx4= -github.com/go-toolsmith/astfmt v1.0.0 h1:A0vDDXt+vsvLEdbMFJAUBI/uTbRw1ffOPnxsILnFL6k= -github.com/go-toolsmith/astfmt v1.0.0/go.mod h1:cnWmsOAuq4jJY6Ct5YWlVLmcmLMn1JUPuQIHCY7CJDw= -github.com/go-toolsmith/astp v1.0.0 h1:alXE75TXgcmupDsMK1fRAy0YUzLzqPVvBKoyWV+KPXg= -github.com/go-toolsmith/astp v1.0.0/go.mod h1:RSyrtpVlfTFGDYRbrjyWP1pYu//tSFcvdYrA8meBmLI= -github.com/go-toolsmith/pkgload v1.0.2-0.20220101231613-e814995d17c5/go.mod h1:3NAwwmD4uY/yggRxoEjk/S00MIV3A+H7rrE3i87eYxM= -github.com/go-toolsmith/strparse v1.0.0 h1:Vcw78DnpCAKlM20kSbAyO4mPfJn/lyYA4BJUDxe2Jb4= -github.com/go-toolsmith/strparse v1.0.0/go.mod h1:YI2nUKP9YGZnL/L1/DLFBfixrcjslWct4wyljWhSRy8= -github.com/go-toolsmith/typep v1.0.2 h1:8xdsa1+FSIH/RhEkgnD1j2CJOy5mNllW1Q9tRiYwvlk= -github.com/go-toolsmith/typep v1.0.2/go.mod h1:JSQCQMUPdRlMZFswiq3TGpNp1GMktqkR2Ns5AIQkATU= -github.com/go-xmlfmt/xmlfmt v0.0.0-20191208150333-d5b6f63a941b h1:khEcpUM4yFcxg4/FHQWkvVRmgijNXRfzkIDHh23ggEo= -github.com/go-xmlfmt/xmlfmt v0.0.0-20191208150333-d5b6f63a941b/go.mod h1:aUCEOzzezBEjDBbFBoSiya/gduyIiWYRP6CnSFIV8AM= -github.com/gobwas/glob v0.2.3 h1:A4xDbljILXROh+kObIiy5kIaPYD8e96x1tgBhUI5J+Y= -github.com/gobwas/glob v0.2.3/go.mod h1:d3Ez4x06l9bZtSvzIay5+Yzi0fmZzPgnTbPcKjJAkT8= github.com/godbus/dbus v0.0.0-20190422162347-ade71ed3457e/go.mod h1:bBOAhwG1umN6/6ZUMtDFBMQR8jRg9O75tm9K00oMsK4= github.com/gofrs/flock v0.8.1 h1:+gYjHKf32LDeiEEFhQaotPbLuUXjY5ZqxKgXy7n59aw= github.com/gofrs/flock v0.8.1/go.mod h1:F1TvTiK9OcQqauNUHlbJvyl9Qa1QvF/gOUDKA14jxHU= @@ -326,7 +211,6 @@ github.com/golang/mock v1.4.3/go.mod h1:UOMv5ysSaYNkG+OFQykRIcU/QvvxJf3p21QfJ2Bt github.com/golang/mock v1.4.4/go.mod h1:l3mdAwkq5BuhzHwde/uurv3sEJeZMXNpwsxVWU71h+4= github.com/golang/mock v1.5.0/go.mod h1:CWnOUgYIOo4TcNZ0wHX3YZCqsaM1I1Jvs6v3mP3KVu8= github.com/golang/mock v1.6.0/go.mod h1:p6yTPP+5HYm5mzsMV8JkE6ZKdX+/wYM6Hr+LicevLPs= -github.com/golang/protobuf v1.1.0/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= github.com/golang/protobuf v1.2.0/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= github.com/golang/protobuf v1.3.1/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= github.com/golang/protobuf v1.3.2/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= @@ -349,26 +233,6 @@ github.com/golang/snappy v0.0.1/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEW github.com/golang/snappy v0.0.3/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q= github.com/golang/snappy v0.0.4 h1:yAGX7huGHXlcLOEtBnF4w7FQwA26wojNCwOYAEhLjQM= github.com/golang/snappy v0.0.4/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q= -github.com/golangci/check v0.0.0-20180506172741-cfe4005ccda2 h1:23T5iq8rbUYlhpt5DB4XJkc6BU31uODLD1o1gKvZmD0= -github.com/golangci/check v0.0.0-20180506172741-cfe4005ccda2/go.mod h1:k9Qvh+8juN+UKMCS/3jFtGICgW8O96FVaZsaxdzDkR4= -github.com/golangci/dupl v0.0.0-20180902072040-3e9179ac440a h1:w8hkcTqaFpzKqonE9uMCefW1WDie15eSP/4MssdenaM= -github.com/golangci/dupl v0.0.0-20180902072040-3e9179ac440a/go.mod h1:ryS0uhF+x9jgbj/N71xsEqODy9BN81/GonCZiOzirOk= -github.com/golangci/go-misc v0.0.0-20220329215616-d24fe342adfe h1:6RGUuS7EGotKx6J5HIP8ZtyMdiDscjMLfRBSPuzVVeo= -github.com/golangci/go-misc v0.0.0-20220329215616-d24fe342adfe/go.mod h1:gjqyPShc/m8pEMpk0a3SeagVb0kaqvhscv+i9jI5ZhQ= -github.com/golangci/gofmt v0.0.0-20190930125516-244bba706f1a h1:iR3fYXUjHCR97qWS8ch1y9zPNsgXThGwjKPrYfqMPks= -github.com/golangci/gofmt v0.0.0-20190930125516-244bba706f1a/go.mod h1:9qCChq59u/eW8im404Q2WWTrnBUQKjpNYKMbU4M7EFU= -github.com/golangci/golangci-lint v1.49.0 h1:I8WHOavragDttlLHtSraHn/h39C+R60bEQ5NoGcHQr8= -github.com/golangci/golangci-lint v1.49.0/go.mod h1:+V/7lLv449R6w9mQ3WdV0EKh7Je/jTylMeSwBZcLeWE= -github.com/golangci/lint-1 v0.0.0-20191013205115-297bf364a8e0 h1:MfyDlzVjl1hoaPzPD4Gpb/QgoRfSBR0jdhwGyAWwMSA= -github.com/golangci/lint-1 v0.0.0-20191013205115-297bf364a8e0/go.mod h1:66R6K6P6VWk9I95jvqGxkqJxVWGFy9XlDwLwVz1RCFg= -github.com/golangci/maligned v0.0.0-20180506175553-b1d89398deca h1:kNY3/svz5T29MYHubXix4aDDuE3RWHkPvopM/EDv/MA= -github.com/golangci/maligned v0.0.0-20180506175553-b1d89398deca/go.mod h1:tvlJhZqDe4LMs4ZHD0oMUlt9G2LWuDGoisJTBzLMV9o= -github.com/golangci/misspell v0.3.5 h1:pLzmVdl3VxTOncgzHcvLOKirdvcx/TydsClUQXTehjo= -github.com/golangci/misspell v0.3.5/go.mod h1:dEbvlSfYbMQDtrpRMQU675gSDLDNa8sCPPChZ7PhiVA= -github.com/golangci/revgrep v0.0.0-20220804021717-745bb2f7c2e6 h1:DIPQnGy2Gv2FSA4B/hh8Q7xx3B7AIDk3DAMeHclH1vQ= -github.com/golangci/revgrep v0.0.0-20220804021717-745bb2f7c2e6/go.mod h1:0AKcRCkMoKvUvlf89F6O7H2LYdhr1zBh736mBItOdRs= -github.com/golangci/unconvert v0.0.0-20180507085042-28b1c447d1f4 h1:zwtduBRr5SSWhqsYNgcuWO2kFlpdOZbP0+yRjmvPGys= -github.com/golangci/unconvert v0.0.0-20180507085042-28b1c447d1f4/go.mod h1:Izgrg8RkN3rCIMLGE9CyYmU9pY2Jer6DgANEnZ/L/cQ= github.com/google/btree v0.0.0-20180813153112-4030bb1f1f0c/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ= github.com/google/btree v1.0.0 h1:0udJVsspx3VBr5FwtLhQQtuAsVc79tTq0ocGIPAU6qo= github.com/google/btree v1.0.0/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ= @@ -383,7 +247,6 @@ github.com/google/go-cmp v0.5.2/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/ github.com/google/go-cmp v0.5.3/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= github.com/google/go-cmp v0.5.4/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= github.com/google/go-cmp v0.5.5/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= -github.com/google/go-cmp v0.5.6 h1:BKbKCqvP6I+rmFHt06ZmyQtvB8xAkWdhFyr0ZUNZcxQ= github.com/google/go-cmp v0.5.6/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= github.com/google/go-cmp v0.5.7/go.mod h1:n+brtR0CgQNWTVd5ZUFpTBC8YFBDLK/h/bpaJ8/DtOE= github.com/google/go-cmp v0.5.8 h1:e6P7q2lk1O+qJJb4BtCQXlK8vWEO8V1ZeuEdJNOqZyg= @@ -404,14 +267,12 @@ github.com/google/pprof v0.0.0-20200430221834-fc25d7d30c6d/go.mod h1:ZgVRPoUq/hf github.com/google/pprof v0.0.0-20200708004538-1a94d8640e99/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM= github.com/google/pprof v0.0.0-20201023163331-3e6fc7fc9c4c/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= github.com/google/pprof v0.0.0-20201203190320-1bf35d6f28c2/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= -github.com/google/pprof v0.0.0-20201218002935-b9804c9f04c2/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= github.com/google/pprof v0.0.0-20210122040257-d980be63207e/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= github.com/google/pprof v0.0.0-20210226084205-cbba55b83ad5/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= github.com/google/pprof v0.0.0-20210601050228-01bbb1931b22/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= github.com/google/pprof v0.0.0-20210609004039-a478d1d731e9/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= github.com/google/pprof v0.0.0-20210720184732-4bb14d4b1be1/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= github.com/google/renameio v0.1.0/go.mod h1:KWCgfxg9yswjAJkECMjeO8J8rahYeXnNhOm40UhjYkI= -github.com/google/shlex v0.0.0-20191202100458-e7afc7fbc510/go.mod h1:pupxD2MaaD3pAXIBCelhxNneeOaAeabZDe5s4K6zSpQ= github.com/google/uuid v1.1.2/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= github.com/google/uuid v1.3.0 h1:t6JiXgmwXMjEs8VusXIJk2BXHsn+wx8BZdTaoZ5fu7I= github.com/google/uuid v1.3.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= @@ -420,7 +281,6 @@ github.com/googleapis/enterprise-certificate-proxy v0.1.0 h1:zO8WHNx/MYiAKJ3d5sp github.com/googleapis/enterprise-certificate-proxy v0.1.0/go.mod h1:17drOmN3MwGY7t0e+Ei9b45FFGA3fBs3x36SsCg1hq8= github.com/googleapis/gax-go/v2 v2.0.4/go.mod h1:0Wqv26UfaUD9n4G6kQubkQ+KchISgw+vpHVxEJEs9eg= github.com/googleapis/gax-go/v2 v2.0.5/go.mod h1:DWXyrwAJ9X0FpwwEdw+IPEYBICEFu5mhpdKc/us6bOk= -github.com/googleapis/gax-go/v2 v2.1.0 h1:6DWmvNpomjL1+3liNSZbVns3zsYzzCjm6pRBO1tLeso= github.com/googleapis/gax-go/v2 v2.1.0/go.mod h1:Q3nei7sK6ybPYH7twZdmQpAd1MKb7pfu6SK+H1/DsU0= github.com/googleapis/gax-go/v2 v2.1.1/go.mod h1:hddJymUZASv3XPyGkUpKj8pPO47Rmb0eJc8R6ouapiM= github.com/googleapis/gax-go/v2 v2.2.0/go.mod h1:as02EH8zWkzwUoLbBaFeQ+arQaj/OthfcblKl4IGNaM= @@ -430,27 +290,8 @@ github.com/googleapis/gax-go/v2 v2.5.1 h1:kBRZU0PSuI7PspsSb/ChWoVResUcwNVIdpB049 github.com/googleapis/gax-go/v2 v2.5.1/go.mod h1:h6B0KMMFNtI2ddbGJn3T3ZbwkeT6yqEF02fYlzkUCyo= github.com/googleapis/go-type-adapters v1.0.0 h1:9XdMn+d/G57qq1s8dNc5IesGCXHf6V2HZ2JwRxfA2tA= github.com/googleapis/go-type-adapters v1.0.0/go.mod h1:zHW75FOG2aur7gAO2B+MLby+cLsWGBF62rFAi7WjWO4= -github.com/googleapis/google-cloud-go-testing v0.0.0-20200911160855-bcd43fbb19e8/go.mod h1:dvDLG8qkwmyD9a/MJJN3XJcT3xFxOKAvTZGvuZmac9g= -github.com/gordonklaus/ineffassign v0.0.0-20210914165742-4cc7213b9bc8 h1:PVRE9d4AQKmbelZ7emNig1+NT27DUmKZn5qXxfio54U= -github.com/gordonklaus/ineffassign v0.0.0-20210914165742-4cc7213b9bc8/go.mod h1:Qcp2HIAYhR7mNUVSIxZww3Guk4it82ghYcEXIAk+QT0= github.com/gorilla/mux v1.7.4/go.mod h1:DVbg23sWSpFRCP0SfiEN6jmj59UnW/n46BH5rLB71So= -github.com/gostaticanalysis/analysisutil v0.0.0-20190318220348-4088753ea4d3/go.mod h1:eEOZF4jCKGi+aprrirO9e7WKB3beBRtWgqGunKl6pKE= -github.com/gostaticanalysis/analysisutil v0.0.3/go.mod h1:eEOZF4jCKGi+aprrirO9e7WKB3beBRtWgqGunKl6pKE= -github.com/gostaticanalysis/analysisutil v0.1.0/go.mod h1:dMhHRU9KTiDcuLGdy87/2gTR8WruwYZrKdRq9m1O6uw= -github.com/gostaticanalysis/analysisutil v0.7.1 h1:ZMCjoue3DtDWQ5WyU16YbjbQEQ3VuzwxALrpYd+HeKk= -github.com/gostaticanalysis/analysisutil v0.7.1/go.mod h1:v21E3hY37WKMGSnbsw2S/ojApNWb6C1//mXO48CXbVc= -github.com/gostaticanalysis/comment v1.3.0/go.mod h1:xMicKDx7XRXYdVwY9f9wQpDJVnqWxw9wCauCMKp+IBI= -github.com/gostaticanalysis/comment v1.4.1/go.mod h1:ih6ZxzTHLdadaiSnF5WY3dxUoXfXAlTaRzuaNDlSado= -github.com/gostaticanalysis/comment v1.4.2 h1:hlnx5+S2fY9Zo9ePo4AhgYsYHbM2+eAv8m/s1JiCd6Q= -github.com/gostaticanalysis/comment v1.4.2/go.mod h1:KLUTGDv6HOCotCH8h2erHKmpci2ZoR8VPu34YA2uzdM= -github.com/gostaticanalysis/forcetypeassert v0.1.0 h1:6eUflI3DiGusXGK6X7cCcIgVCpZ2CiZ1Q7jl6ZxNV70= -github.com/gostaticanalysis/forcetypeassert v0.1.0/go.mod h1:qZEedyP/sY1lTGV1uJ3VhWZ2mqag3IkWsDHVbplHXak= -github.com/gostaticanalysis/nilerr v0.1.1 h1:ThE+hJP0fEp4zWLkWHWcRyI2Od0p7DlgYG3Uqrmrcpk= -github.com/gostaticanalysis/nilerr v0.1.1/go.mod h1:wZYb6YI5YAxxq0i1+VJbY0s2YONW0HU0GPE3+5PWN4A= -github.com/gostaticanalysis/testutil v0.3.1-0.20210208050101-bfb5c8eec0e4/go.mod h1:D+FIZ+7OahH3ePw/izIEeH5I06eKs1IKI4Xr64/Am3M= github.com/grpc-ecosystem/grpc-gateway v1.16.0/go.mod h1:BDjrQk3hbvj6Nolgz8mAMFbcEtjT1g+wF4CSlocrBnw= -github.com/hashicorp/consul/api v1.10.1 h1:MwZJp86nlnL+6+W1Zly4JUuVn9YHhMggBirMpHGD7kw= -github.com/hashicorp/consul/api v1.10.1/go.mod h1:XjsvQN+RJGWI2TWy1/kqaE16HrR2J/FWgkYjdZQsX9M= github.com/hashicorp/consul/api v1.12.0 h1:k3y1FYv6nuKyNTqj6w9gXOx5r5CfLj/k/euUeBXj1OY= github.com/hashicorp/consul/api v1.12.0/go.mod h1:6pVBMo0ebnYdt2S3H87XhekM/HHrUoTD2XXb/VrZVy0= github.com/hashicorp/consul/sdk v0.8.0 h1:OJtKBtEjboEZvG6AOUdh4Z1Zbyu0WcxQ0qatRrZHTVU= @@ -473,8 +314,6 @@ github.com/hashicorp/go-hclog v0.9.2/go.mod h1:5CU+agLiy3J7N7QjHK5d05KxGsuXiQLrj github.com/hashicorp/go-hclog v0.12.0/go.mod h1:whpDNt7SSdeAju8AWKIWsul05p54N/39EeqMAyrmvFQ= github.com/hashicorp/go-hclog v0.14.1/go.mod h1:whpDNt7SSdeAju8AWKIWsul05p54N/39EeqMAyrmvFQ= github.com/hashicorp/go-hclog v0.16.1/go.mod h1:whpDNt7SSdeAju8AWKIWsul05p54N/39EeqMAyrmvFQ= -github.com/hashicorp/go-hclog v0.16.2 h1:K4ev2ib4LdQETX5cSZBG0DVLk1jwGqSPXBjdah3veNs= -github.com/hashicorp/go-hclog v0.16.2/go.mod h1:whpDNt7SSdeAju8AWKIWsul05p54N/39EeqMAyrmvFQ= github.com/hashicorp/go-hclog v1.2.0 h1:La19f8d7WIlm4ogzNHB0JGqs5AUDAZ2UfCY4sJXcJdM= github.com/hashicorp/go-hclog v1.2.0/go.mod h1:whpDNt7SSdeAju8AWKIWsul05p54N/39EeqMAyrmvFQ= github.com/hashicorp/go-immutable-radix v1.0.0/go.mod h1:0y9vanUI8NX6FsYoO3zeMjhV/C5i9g4Q3DwcSNZ4P60= @@ -484,7 +323,6 @@ github.com/hashicorp/go-immutable-radix v1.3.1/go.mod h1:0y9vanUI8NX6FsYoO3zeMjh github.com/hashicorp/go-kms-wrapping/entropy v0.1.0/go.mod h1:d1g9WGtAunDNpek8jUIEJnBlbgKS1N2Q61QkHiZyR1g= github.com/hashicorp/go-msgpack v0.5.3/go.mod h1:ahLV/dePpqEmjfWmKiqvPkv/twdG7iPBM1vqhUKIvfM= github.com/hashicorp/go-msgpack v0.5.5 h1:i9R9JSrqIz0QVLz3sz+i3YJdT7TTSLcfLLzJi9aZTuI= -github.com/hashicorp/go-msgpack v0.5.5/go.mod h1:ahLV/dePpqEmjfWmKiqvPkv/twdG7iPBM1vqhUKIvfM= github.com/hashicorp/go-multierror v1.0.0/go.mod h1:dHtQlpGsu+cZNNAkkCN/P3hoUDHhCYQXV3UM06sGGrk= github.com/hashicorp/go-multierror v1.1.0/go.mod h1:spPvp8C1qA32ftKqdAHm4hHTbPw+vmowP0z+KUhOZdA= github.com/hashicorp/go-multierror v1.1.1 h1:H5DkEtf6CXdFp0N0Em5UCwQpXMWke8IA0+lD48awMYo= @@ -510,9 +348,6 @@ github.com/hashicorp/go-uuid v1.0.2 h1:cfejS+Tpcp13yd5nYHWDI6qVCny6wyX2Mt5SGur2I github.com/hashicorp/go-uuid v1.0.2/go.mod h1:6SBZvOh/SIDV7/2o3Jml5SYk/TvGqwFJ/bN7x4byOro= github.com/hashicorp/go-version v1.1.0/go.mod h1:fltr4n8CU8Ke44wwGCBoEymUuxUHl09ZGVZPK5anwXA= github.com/hashicorp/go-version v1.2.0/go.mod h1:fltr4n8CU8Ke44wwGCBoEymUuxUHl09ZGVZPK5anwXA= -github.com/hashicorp/go-version v1.2.1/go.mod h1:fltr4n8CU8Ke44wwGCBoEymUuxUHl09ZGVZPK5anwXA= -github.com/hashicorp/go-version v1.3.0 h1:McDWVJIU/y+u1BRV06dPaLfLCaT7fUTJLp5r04x7iNw= -github.com/hashicorp/go-version v1.3.0/go.mod h1:fltr4n8CU8Ke44wwGCBoEymUuxUHl09ZGVZPK5anwXA= github.com/hashicorp/go-version v1.6.0 h1:feTTfFNnjP967rlCxM/I9g701jU+RN74YKx2mOkIeek= github.com/hashicorp/go-version v1.6.0/go.mod h1:fltr4n8CU8Ke44wwGCBoEymUuxUHl09ZGVZPK5anwXA= github.com/hashicorp/golang-lru v0.5.0/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8= @@ -522,21 +357,14 @@ github.com/hashicorp/golang-lru v0.5.4 h1:YDjusn29QI/Das2iO9M0BHnIbxPeyuCHsjMW+l github.com/hashicorp/golang-lru v0.5.4/go.mod h1:iADmTwqILo4mZ8BN3D2Q6+9jd8WM5uGBxy+E8yxSoD4= github.com/hashicorp/hcl v1.0.0 h1:0Anlzjpi4vEasTeNFn2mLJgTSwt0+6sfsiTG8qcWGx4= github.com/hashicorp/hcl v1.0.0/go.mod h1:E5yfLk+7swimpb2L/Alb/PJmXilQ/rhwaUYs4T20WEQ= -github.com/hashicorp/hcl/v2 v2.13.0/go.mod h1:e4z5nxYlWNPdDSNYX+ph14EvWYMFm3eP0zIUqPc2jr0= github.com/hashicorp/hcl/v2 v2.14.0 h1:jX6+Q38Ly9zaAJlAjnFVyeNSNCKKW8D0wvyg7vij5Wc= github.com/hashicorp/hcl/v2 v2.14.0/go.mod h1:e4z5nxYlWNPdDSNYX+ph14EvWYMFm3eP0zIUqPc2jr0= github.com/hashicorp/logutils v1.0.0/go.mod h1:QIAnNjmIWmVIIkWDTG1z5v++HQmx9WQRO+LraFDTW64= -github.com/hashicorp/mdns v1.0.1/go.mod h1:4gW7WsVCke5TE7EPeYliwHlRUyBtfCwuFwuMg2DmyNY= github.com/hashicorp/mdns v1.0.4/go.mod h1:mtBihi+LeNXGtG8L9dX59gAEa12BDtBQSp4v/YAJqrc= -github.com/hashicorp/memberlist v0.2.2 h1:5+RffWKwqJ71YPu9mWsF7ZOscZmwfasdA8kbdC7AO2g= -github.com/hashicorp/memberlist v0.2.2/go.mod h1:MS2lj3INKhZjWNqd3N0m3J+Jxf3DAOnAH9VT3Sh9MUE= +github.com/hashicorp/memberlist v0.3.0 h1:8+567mCcFDnS5ADl7lrpxPMWiFCElyUEeW0gtj34fMA= github.com/hashicorp/memberlist v0.3.0/go.mod h1:MS2lj3INKhZjWNqd3N0m3J+Jxf3DAOnAH9VT3Sh9MUE= github.com/hashicorp/packer-plugin-sdk v0.3.1 h1:Gr/mnihsdUcPfGiruFL93BQkiFh3EFPwyxxTWkwvRsQ= github.com/hashicorp/packer-plugin-sdk v0.3.1/go.mod h1:+GzydiXdn0CkueigqXBsX4Poz5gfmFXZ/DkxKt4fmt4= -github.com/hashicorp/packer-plugin-sdk v0.3.2 h1:4Kqq7B8CRDMbfZmkloyz11t1hfqazJuBbW8ZFo4QlN4= -github.com/hashicorp/packer-plugin-sdk v0.3.2/go.mod h1:XZRvL9kRqJJtB6rf9Lu2zWLJbf2/4ImWXDjp9O9UQGE= -github.com/hashicorp/serf v0.9.5 h1:EBWvyu9tcRszt3Bxp3KNssBMP1KuHWyO51lz9+786iM= -github.com/hashicorp/serf v0.9.5/go.mod h1:UWDWwZeL5cuWDJdl0C6wrvrUwEqtQ4ZKBKKENpqIUyk= github.com/hashicorp/serf v0.9.6/go.mod h1:TXZNMjZQijwlDvp+r0b63xZ45H7JmCmgg4gpTwn9UV4= github.com/hashicorp/serf v0.9.7 h1:hkdgbqizGQHuU5IPqYM1JdSMV8nKfpuOnZYXssk9muY= github.com/hashicorp/serf v0.9.7/go.mod h1:TXZNMjZQijwlDvp+r0b63xZ45H7JmCmgg4gpTwn9UV4= @@ -549,94 +377,46 @@ github.com/hashicorp/vault/sdk v0.2.1/go.mod h1:WfUiO1vYzfBkz1TmoE4ZGU7HD0T0Cl/r github.com/hashicorp/yamux v0.0.0-20180604194846-3520598351bb/go.mod h1:+NfK9FKeTrX5uv1uIXGdwYDTeHna2qgaIlx54MXqjAM= github.com/hashicorp/yamux v0.0.0-20210826001029-26ff87cf9493 h1:brI5vBRUlAlM34VFmnLPwjnCL/FxAJp9XvOdX6Zt+XE= github.com/hashicorp/yamux v0.0.0-20210826001029-26ff87cf9493/go.mod h1:CtWFDAQgb7dxtzFs4tWbplKIe2jSi3+5vKbgIO0SLnQ= -github.com/hexops/gotextdiff v1.0.3 h1:gitA9+qJrrTCsiCl7+kh75nPqQt1cx4ZkudSTLoUqJM= -github.com/hexops/gotextdiff v1.0.3/go.mod h1:pSWU5MAI3yDq+fZBTazCSJysOMbxWL1BSow5/V2vxeg= github.com/hpcloud/tail v1.0.0/go.mod h1:ab1qPbhIpdTxEkNHXyeSf5vhxWSCs/tWer42PpOxQnU= -github.com/huandu/xstrings v1.3.2/go.mod h1:y5/lhBue+AyNmUVz9RLU9xbLR0o4KIIExikq4ovT0aE= github.com/ianlancetaylor/demangle v0.0.0-20181102032728-5e5cf60278f6/go.mod h1:aSSvb/t6k1mPoxDqO4vJh6VOCGPwU4O0C2/Eqndh1Sc= github.com/ianlancetaylor/demangle v0.0.0-20200824232613-28f6c0f3b639/go.mod h1:aSSvb/t6k1mPoxDqO4vJh6VOCGPwU4O0C2/Eqndh1Sc= -github.com/imdario/mergo v0.3.11/go.mod h1:jmQim1M+e3UYxmgPu/WyfjB3N3VflVyUjjjwH0dnCYA= -github.com/imdario/mergo v0.3.12/go.mod h1:jmQim1M+e3UYxmgPu/WyfjB3N3VflVyUjjjwH0dnCYA= -github.com/inconshreveable/mousetrap v1.0.0 h1:Z8tu5sraLXCXIcARxBp/8cbvlwVa7Z1NHg9XEKhtSvM= github.com/inconshreveable/mousetrap v1.0.0/go.mod h1:PxqpIevigyE2G7u3NXJIT2ANytuPF1OarO4DADm73n8= github.com/jehiah/go-strftime v0.0.0-20171201141054-1d33003b3869 h1:IPJ3dvxmJ4uczJe5YQdrYB16oTJlGSC/OyZDqUk9xX4= github.com/jehiah/go-strftime v0.0.0-20171201141054-1d33003b3869/go.mod h1:cJ6Cj7dQo+O6GJNiMx+Pa94qKj+TG8ONdKHgMNIyyag= -github.com/jgautheron/goconst v1.5.1 h1:HxVbL1MhydKs8R8n/HE5NPvzfaYmQJA3o879lE4+WcM= -github.com/jgautheron/goconst v1.5.1/go.mod h1:aAosetZ5zaeC/2EfMeRswtxUFBpe2Hr7HzkgX4fanO4= -github.com/jingyugao/rowserrcheck v1.1.1 h1:zibz55j/MJtLsjP1OF4bSdgXxwL1b+Vn7Tjzq7gFzUs= -github.com/jingyugao/rowserrcheck v1.1.1/go.mod h1:4yvlZSDb3IyDTUZJUmpZfm2Hwok+Dtp+nu2qOq+er9c= -github.com/jirfag/go-printf-func-name v0.0.0-20200119135958-7558a9eaa5af h1:KA9BjwUk7KlCh6S9EAGWBt1oExIUv9WyNCiRz5amv48= -github.com/jirfag/go-printf-func-name v0.0.0-20200119135958-7558a9eaa5af/go.mod h1:HEWGJkRDzjJY2sqdDwxccsGicWEf9BQOZsq2tV+xzM0= github.com/jmespath/go-jmespath v0.0.0-20180206201540-c2b33e8439af/go.mod h1:Nht3zPeWKUH0NzdCt2Blrr5ys8VGpn0CEB0cQHVjt7k= github.com/jmespath/go-jmespath v0.3.0/go.mod h1:9QtRXoHjLGCJ5IBSaohpXITPlowMeeYCZ7fLUTSywik= github.com/jmespath/go-jmespath v0.4.0 h1:BEgLn5cpjn8UN1mAw4NjwDrS35OdebyEtFe+9YPoQUg= github.com/jmespath/go-jmespath v0.4.0/go.mod h1:T8mJZnbsbmF+m6zOOFylbeCJqk5+pHWvzYPziyZiYoo= github.com/jmespath/go-jmespath/internal/testify v1.5.1 h1:shLQSRRSCCPj3f2gpwzGwWFoC7ycTf1rcQZHOlsJ6N8= github.com/jmespath/go-jmespath/internal/testify v1.5.1/go.mod h1:L3OGu8Wl2/fWfCI6z80xFu9LTZmf1ZRjMHUOPmWr69U= -github.com/jmoiron/sqlx v1.2.0/go.mod h1:1FEQNm3xlJgrMD+FBdI9+xvCksHtbpVBBw5dYhBSsks= -github.com/jpillora/backoff v1.0.0/go.mod h1:J/6gKK9jxlEcS3zixgDgUAsiuZ7yrSoa/FX5e0EB2j4= github.com/json-iterator/go v1.1.6/go.mod h1:+SdeFBvtyEkXs7REEP0seUULqWtbJapLOCVDaaPEHmU= github.com/json-iterator/go v1.1.9/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4= -github.com/json-iterator/go v1.1.10/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4= -github.com/json-iterator/go v1.1.11/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4= -github.com/json-iterator/go v1.1.12/go.mod h1:e30LSqwooZae/UwlEbR2852Gd8hjQvJoHmT4TnhNGBo= github.com/jstemmer/go-junit-report v0.0.0-20190106144839-af01ea7f8024/go.mod h1:6v2b51hI/fHJwM22ozAgKL4VKDeJcHhJFhtBdhmNjmU= github.com/jstemmer/go-junit-report v0.9.1/go.mod h1:Brl9GWCQeLvo8nXZwPNNblvFj/XSXhF0NWZEnDohbsk= github.com/julienschmidt/httprouter v1.2.0/go.mod h1:SYymIcj16QtmaHHD7aYtjjsJG7VTCxuUUipMqKk8s4w= -github.com/julienschmidt/httprouter v1.3.0/go.mod h1:JR6WtHb+2LUe8TCKY3cZOxFyyO8IZAc4RVcycCCAKdM= -github.com/julz/importas v0.1.0 h1:F78HnrsjY3cR7j0etXy5+TU1Zuy7Xt08X/1aJnH5xXY= -github.com/julz/importas v0.1.0/go.mod h1:oSFU2R4XK/P7kNBrnL/FEQlDGN1/6WoxXEjSSXO0DV0= github.com/kisielk/errcheck v1.1.0/go.mod h1:EZBBE59ingxPouuu3KfxchcWSUPOHkagtvWXihfKN4Q= github.com/kisielk/errcheck v1.2.0/go.mod h1:/BMXB+zMLi60iA8Vv6Ksmxu/1UDYcXs4uQLJ+jE2L00= -github.com/kisielk/errcheck v1.6.2 h1:uGQ9xI8/pgc9iOoCe7kWQgRE6SBTrCGmTSf0LrEtY7c= -github.com/kisielk/errcheck v1.6.2/go.mod h1:nXw/i/MfnvRHqXa7XXmQMUB0oNFGuBrNI8d8NLy0LPw= -github.com/kisielk/gotool v1.0.0 h1:AV2c/EiW3KqPNT9ZKl07ehoAGi4C5/01Cfbblndcapg= github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck= github.com/konsorten/go-windows-terminal-sequences v1.0.1/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ= -github.com/konsorten/go-windows-terminal-sequences v1.0.3/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ= github.com/kr/fs v0.1.0 h1:Jskdu9ieNAYnjxsi0LbQp1ulIKZV1LAFgK1tWhpZgl8= github.com/kr/fs v0.1.0/go.mod h1:FFnZGqtBN9Gxj7eW1uZ42v5BccTP0vu6NEaFoC2HwRg= github.com/kr/logfmt v0.0.0-20140226030751-b84e30acd515/go.mod h1:+0opPa2QZZtGFBFZlji/RkVcI2GknAs/DXo4wKdlNEc= github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo= -github.com/kr/pretty v0.2.0 h1:s5hAObm+yFO5uHYt5dYjxi2rXrsnmRpJx4OYvIWUaQs= github.com/kr/pretty v0.2.0/go.mod h1:ipq/a2n7PKx3OHsz4KJII5eveXtPO4qwEXGdVfWzfnI= +github.com/kr/pretty v0.3.0 h1:WgNl7dwNpEZ6jJ9k1snq4pZsg7DOEN8hP9Xw0Tsjwk0= +github.com/kr/pretty v0.3.0/go.mod h1:640gp4NfQd8pI5XOwp5fnNeVWj67G7CFk/SaSQn7NBk= github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ= github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI= github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY= github.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE= -github.com/kulti/thelper v0.6.3 h1:ElhKf+AlItIu+xGnI990no4cE2+XaSu1ULymV2Yulxs= -github.com/kulti/thelper v0.6.3/go.mod h1:DsqKShOvP40epevkFrvIwkCMNYxMeTNjdWL4dqWHZ6I= -github.com/kunwardeep/paralleltest v1.0.6 h1:FCKYMF1OF2+RveWlABsdnmsvJrei5aoyZoaGS+Ugg8g= -github.com/kunwardeep/paralleltest v1.0.6/go.mod h1:Y0Y0XISdZM5IKm3TREQMZ6iteqn1YuwCsJO/0kL9Zes= -github.com/kylelemons/godebug v0.0.0-20170820004349-d65d576e9348/go.mod h1:B69LEHPfb2qLo0BaaOLcbitczOKLWTsrBG9LczfCD4k= -github.com/kyoh86/exportloopref v0.1.8 h1:5Ry/at+eFdkX9Vsdw3qU4YkvGtzuVfzT4X7S77LoN/M= -github.com/kyoh86/exportloopref v0.1.8/go.mod h1:1tUcJeiioIs7VWe5gcOObrux3lb66+sBqGZrRkMwPgg= -github.com/ldez/gomoddirectives v0.2.3 h1:y7MBaisZVDYmKvt9/l1mjNCiSA1BVn34U0ObUcJwlhA= -github.com/ldez/gomoddirectives v0.2.3/go.mod h1:cpgBogWITnCfRq2qGoDkKMEVSaarhdBr6g8G04uz6d0= -github.com/ldez/tagliatelle v0.3.1 h1:3BqVVlReVUZwafJUwQ+oxbx2BEX2vUG4Yu/NOfMiKiM= -github.com/ldez/tagliatelle v0.3.1/go.mod h1:8s6WJQwEYHbKZDsp/LjArytKOG8qaMrKQQ3mFukHs88= -github.com/leonklingele/grouper v1.1.0 h1:tC2y/ygPbMFSBOs3DcyaEMKnnwH7eYKzohOtRrf0SAg= -github.com/leonklingele/grouper v1.1.0/go.mod h1:uk3I3uDfi9B6PeUjsCKi6ndcf63Uy7snXgR4yDYQVDY= -github.com/lib/pq v1.0.0/go.mod h1:5WUZQaWbwv1U+lTReE5YruASi9Al49XbQIvNi/34Woo= -github.com/lufeee/execinquery v1.2.1 h1:hf0Ems4SHcUGBxpGN7Jz78z1ppVkP/837ZlETPCEtOM= -github.com/lufeee/execinquery v1.2.1/go.mod h1:EC7DrEKView09ocscGHC+apXMIaorh4xqSxS/dy8SbM= -github.com/magiconair/properties v1.8.6 h1:5ibWZ6iY0NctNGWo87LalDlEZ6R41TqbbDamhfG/Qzo= -github.com/magiconair/properties v1.8.6/go.mod h1:y3VJvCyxH9uVvJTWEGAELF3aiYNyPKd5NZ3oSwXrF60= -github.com/maratori/testpackage v1.1.0 h1:GJY4wlzQhuBusMF1oahQCBtUV/AQ/k69IZ68vxaac2Q= -github.com/maratori/testpackage v1.1.0/go.mod h1:PeAhzU8qkCwdGEMTEupsHJNlQu2gZopMC6RjbhmHeDc= github.com/masterzen/simplexml v0.0.0-20160608183007-4572e39b1ab9/go.mod h1:kCEbxUJlNDEBNbdQMkPSp6yaKcRXVI6f4ddk8Riv4bc= github.com/masterzen/simplexml v0.0.0-20190410153822-31eea3082786 h1:2ZKn+w/BJeL43sCxI2jhPLRv73oVVOjEKZjKkflyqxg= github.com/masterzen/simplexml v0.0.0-20190410153822-31eea3082786/go.mod h1:kCEbxUJlNDEBNbdQMkPSp6yaKcRXVI6f4ddk8Riv4bc= github.com/masterzen/winrm v0.0.0-20210623064412-3b76017826b0 h1:KqYuDbSr8I2X8H65InN8SafDEa0UaLRy6WEmxDqd0F0= github.com/masterzen/winrm v0.0.0-20210623064412-3b76017826b0/go.mod h1:l31LCh9VvG43RJ83A5JLkFPjuz48cZAxBSLQLaIn1p8= -github.com/matoous/godox v0.0.0-20210227103229-6504466cf951 h1:pWxk9e//NbPwfxat7RXkts09K+dEBJWakUWwICVqYbA= -github.com/matoous/godox v0.0.0-20210227103229-6504466cf951/go.mod h1:1BELzlh859Sh1c6+90blK8lbYy0kwQf1bYlBhBysy1s= -github.com/matryer/is v1.4.0/go.mod h1:8I/i5uYgLzgsgEloJE1U6xx5HkBQpAZvepWuujKwMRU= github.com/mattn/go-colorable v0.0.9/go.mod h1:9vuHe8Xs5qXnSaW/c/ABM9alt+Vo+STaOChaDxuIBZU= github.com/mattn/go-colorable v0.1.4/go.mod h1:U0ppj6V5qS13XJ6of8GYAs25YV2eR4EVcfRqFIhoBtE= github.com/mattn/go-colorable v0.1.6/go.mod h1:u6P/XSegPjTcexA+o6vUJrdnUu04hMope9wVRipJSqc= -github.com/mattn/go-colorable v0.1.8 h1:c1ghPdyEDarC70ftn0y+A/Ee++9zz8ljHG1b13eJ0s8= -github.com/mattn/go-colorable v0.1.8/go.mod h1:u6P/XSegPjTcexA+o6vUJrdnUu04hMope9wVRipJSqc= github.com/mattn/go-colorable v0.1.9/go.mod h1:u6P/XSegPjTcexA+o6vUJrdnUu04hMope9wVRipJSqc= github.com/mattn/go-colorable v0.1.13 h1:fFA4WZxdEF4tXPZVKMLwD8oUnCTTo08duU7wxecdEvA= github.com/mattn/go-colorable v0.1.13/go.mod h1:7S9/ev0klgBDR4GtXTXX8a3vIGJpMovkB8vQcUbaXHg= @@ -645,27 +425,15 @@ github.com/mattn/go-isatty v0.0.8/go.mod h1:Iq45c/XA43vh69/j3iqttzPXn0bhXyGjM0Hd github.com/mattn/go-isatty v0.0.10/go.mod h1:qgIWMr58cqv1PHHyhnkY9lrL7etaEgOFcMEpPG5Rm84= github.com/mattn/go-isatty v0.0.11/go.mod h1:PhnuNfih5lzO57/f3n+odYbM4JtupLOxQOAqxQCu2WE= github.com/mattn/go-isatty v0.0.12/go.mod h1:cbi8OIDigv2wuxKPP5vlRcQ1OAZbq2CE4Kysco4FUpU= -github.com/mattn/go-isatty v0.0.13 h1:qdl+GuBjcsKKDco5BsxPJlId98mSWNKqYA+Co0SC1yA= -github.com/mattn/go-isatty v0.0.13/go.mod h1:cbi8OIDigv2wuxKPP5vlRcQ1OAZbq2CE4Kysco4FUpU= github.com/mattn/go-isatty v0.0.14/go.mod h1:7GGIvUiUoEMVVmxf/4nioHXj79iQHKdU27kJ6hsGG94= github.com/mattn/go-isatty v0.0.16 h1:bq3VjFmv/sOjHtdEhmkEV4x1AJtvUvOJ2PFAZ5+peKQ= github.com/mattn/go-isatty v0.0.16/go.mod h1:kYGgaQfpe5nmfYZH+SKPsOc2e4SrIfOl2e/yFXSvRLM= -github.com/mattn/go-runewidth v0.0.9 h1:Lm995f3rfxdpd6TSmuVCHVb/QhupuXlYr8sCI/QdE+0= -github.com/mattn/go-runewidth v0.0.9/go.mod h1:H031xJmbD/WCDINGzjvQ9THkh0rPKHF+m2gUSrubnMI= -github.com/mattn/go-sqlite3 v1.9.0/go.mod h1:FPy6KqzDD04eiIsT53CuJW3U88zkxoIYsOqkbpncsNc= -github.com/matttproud/golang_protobuf_extensions v1.0.1 h1:4hp9jkHxhMHkqkrB3Ix0jegS5sx/RkqARlsWZ6pIwiU= github.com/matttproud/golang_protobuf_extensions v1.0.1/go.mod h1:D8He9yQNgCq6Z5Ld7szi9bcBfOoFv/3dc6xSMkL2PC0= -github.com/mbilski/exhaustivestruct v1.2.0 h1:wCBmUnSYufAHO6J4AVWY6ff+oxWxsVFrwgOdMUQePUo= -github.com/mbilski/exhaustivestruct v1.2.0/go.mod h1:OeTBVxQWoEmB2J2JCHmXWPJ0aksxSUOUy+nvtVEfzXc= -github.com/mgechev/revive v1.2.3 h1:NzIEEa9+WimQ6q2Ov7OcNeySS/IOcwtkQ8RAh0R5UJ4= -github.com/mgechev/revive v1.2.3/go.mod h1:iAWlQishqCuj4yhV24FTnKSXGpbAA+0SckXB8GQMX/Q= -github.com/miekg/dns v1.0.14/go.mod h1:W1PPwlIAgtquWBMBEV9nkV9Cazfe8ScdGz/Lj7v3Nrg= -github.com/miekg/dns v1.1.26 h1:gPxPSwALAeHJSjarOs00QjVdV9QoBvc1D2ujQUr5BzU= github.com/miekg/dns v1.1.26/go.mod h1:bPDLeHnStXmXAq1m/Ch/hvfNHr14JKNPMBo3VZKjuso= +github.com/miekg/dns v1.1.41 h1:WMszZWJG0XmzbK9FEmzH2TVcqYzFesusSIB41b8KHxY= github.com/miekg/dns v1.1.41/go.mod h1:p6aan82bvRIyn+zDIv9xYNUpwa73JcSh9BKwknJysuI= github.com/mitchellh/cli v1.0.0/go.mod h1:hNIlj7HEI86fIcpObd7a0FcrxTWetlwJDGcceTlRvqc= github.com/mitchellh/cli v1.1.0/go.mod h1:xcISNoH86gajksDmfB23e/pu+B+GeFRMYmoHXxx3xhI= -github.com/mitchellh/cli v1.1.2/go.mod h1:6iaV0fGdElS6dPBx0EApTxHrcWvmJphyh2n8YBLPPZ4= github.com/mitchellh/copystructure v1.0.0/go.mod h1:SNtv71yrdKgLRyLFxmLdkAbkKEFWgYaq1OVrnRcwhnw= github.com/mitchellh/go-fs v0.0.0-20180402235330-b7b9ca407fff h1:bFJ74ac7ZK/jyislqiWdzrnENesFt43sNEBRh1xk/+g= github.com/mitchellh/go-fs v0.0.0-20180402235330-b7b9ca407fff/go.mod h1:g7SZj7ABpStq3tM4zqHiVEG5un/DZ1+qJJKO7qx1EvU= @@ -676,7 +444,6 @@ github.com/mitchellh/go-testing-interface v0.0.0-20171004221916-a61a99592b77/go. github.com/mitchellh/go-testing-interface v1.0.0/go.mod h1:kRemZodwjscx+RGhAo8eIhFbs2+BFgRtFPeD/KE+zxI= github.com/mitchellh/go-testing-interface v1.14.1 h1:jrgshOhYAUVNMAJiKbEu7EqAwgJJ2JqpQmpLJOu07cU= github.com/mitchellh/go-testing-interface v1.14.1/go.mod h1:gfgS7OtZj6MA4U1UrDRp04twqAjfvlZyCfX3sDjEym8= -github.com/mitchellh/go-wordwrap v0.0.0-20150314170334-ad45545899c7/go.mod h1:ZXFpozHsX6DPmq2I0TCekCxypsnAUbP2oI0UX1GXzOo= github.com/mitchellh/go-wordwrap v1.0.0/go.mod h1:ZXFpozHsX6DPmq2I0TCekCxypsnAUbP2oI0UX1GXzOo= github.com/mitchellh/go-wordwrap v1.0.1 h1:TLuKupo69TCn6TQSyGxwI1EblZZEsQ0vMlAFQflz0v0= github.com/mitchellh/go-wordwrap v1.0.1/go.mod h1:R62XHJLzvMFRBbcrT7m7WgmE1eOyTSsCt+hzestvNj0= @@ -685,8 +452,6 @@ github.com/mitchellh/iochan v1.0.0/go.mod h1:JwYml1nuB7xOzsp52dPpHFffvOCDupsG0Qu github.com/mitchellh/mapstructure v0.0.0-20160808181253-ca63d7c062ee/go.mod h1:FVVH3fgwuzCH5S8UJGiWEs2h04kUh9fWfEaFds41c1Y= github.com/mitchellh/mapstructure v1.1.2/go.mod h1:FVVH3fgwuzCH5S8UJGiWEs2h04kUh9fWfEaFds41c1Y= github.com/mitchellh/mapstructure v1.3.2/go.mod h1:bFUtVrKA4DC2yAKiSyO/QUcy7e+RRV2QTWOzhPopBRo= -github.com/mitchellh/mapstructure v1.4.1 h1:CpVNEelQCZBooIPDn+AR3NpivK/TIKU8bDxdASFVQag= -github.com/mitchellh/mapstructure v1.4.1/go.mod h1:bFUtVrKA4DC2yAKiSyO/QUcy7e+RRV2QTWOzhPopBRo= github.com/mitchellh/mapstructure v1.5.0 h1:jeMsZIYE/09sWLaz43PL7Gy6RuMjD2eJVyuac5Z2hdY= github.com/mitchellh/mapstructure v1.5.0/go.mod h1:bFUtVrKA4DC2yAKiSyO/QUcy7e+RRV2QTWOzhPopBRo= github.com/mitchellh/reflectwalk v1.0.0 h1:9D+8oIskB4VJBN5SFlmc27fSlIBZaov1Wpk/IfikLNY= @@ -695,26 +460,13 @@ github.com/modern-go/concurrent v0.0.0-20180228061459-e0a39a4cb421/go.mod h1:6dJ github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= github.com/modern-go/reflect2 v0.0.0-20180701023420-4b7aa43c6742/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3RllmbCylyMrvgv0= github.com/modern-go/reflect2 v1.0.1/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3RllmbCylyMrvgv0= -github.com/modern-go/reflect2 v1.0.2/go.mod h1:yWuevngMOJpCy52FWWMvUC8ws7m/LJsjYzDa0/r8luk= -github.com/moricho/tparallel v0.2.1 h1:95FytivzT6rYzdJLdtfn6m1bfFJylOJK41+lgv/EHf4= -github.com/moricho/tparallel v0.2.1/go.mod h1:fXEIZxG2vdfl0ZF8b42f5a78EhjjD5mX8qUplsoSU4k= github.com/morikuni/aec v1.0.0/go.mod h1:BbKIizmSmc5MMPqRYbxO4ZU0S0+P200+tUnFx7PXmsc= github.com/mwitkow/go-conntrack v0.0.0-20161129095857-cc309e4a2223/go.mod h1:qRWi+5nqEBWmkhHvq77mSJWrCKwh8bxhgT7d/eI7P4U= -github.com/mwitkow/go-conntrack v0.0.0-20190716064945-2f068394615f/go.mod h1:qRWi+5nqEBWmkhHvq77mSJWrCKwh8bxhgT7d/eI7P4U= -github.com/nakabonne/nestif v0.3.1 h1:wm28nZjhQY5HyYPx+weN3Q65k6ilSBxDb8v5S81B81U= -github.com/nakabonne/nestif v0.3.1/go.mod h1:9EtoZochLn5iUprVDmDjqGKPofoUEBL8U4Ngq6aY7OE= -github.com/nbutton23/zxcvbn-go v0.0.0-20210217022336-fa2cb2858354 h1:4kuARK6Y6FxaNu/BnU2OAaLF86eTVhP2hjTB6iMvItA= -github.com/nbutton23/zxcvbn-go v0.0.0-20210217022336-fa2cb2858354/go.mod h1:KSVJerMDfblTH7p5MZaTt+8zaT2iEk3AkVb9PQdZuE8= +github.com/niemeyer/pretty v0.0.0-20200227124842-a10e7caefd8e h1:fD57ERR4JtEqsWbfPhv4DMiApHyliiK5xCTNVSPiaAs= github.com/niemeyer/pretty v0.0.0-20200227124842-a10e7caefd8e/go.mod h1:zD1mROLANZcx1PVRCS0qkT7pwLkGfwJo4zjcN/Tysno= -github.com/nishanths/exhaustive v0.8.1 h1:0QKNascWv9qIHY7zRoZSxeRr6kuk5aAT3YXLTiDmjTo= -github.com/nishanths/exhaustive v0.8.1/go.mod h1:qj+zJJUgJ76tR92+25+03oYUhzF4R7/2Wk7fGTfCHmg= -github.com/nishanths/predeclared v0.2.2 h1:V2EPdZPliZymNAn79T8RkNApBjMmVKh5XRpLm/w98Vk= -github.com/nishanths/predeclared v0.2.2/go.mod h1:RROzoN6TnGQupbC+lqggsOlcgysk3LMK/HI84Mp280c= github.com/nu7hatch/gouuid v0.0.0-20131221200532-179d4d0c4d8d h1:VhgPp6v9qf9Agr/56bj7Y/xa04UccTW04VP0Qed4vnQ= github.com/nu7hatch/gouuid v0.0.0-20131221200532-179d4d0c4d8d/go.mod h1:YUTz3bUH2ZwIWBy3CJBeOBEugqcmXREj14T+iG/4k4U= github.com/oklog/run v1.0.0/go.mod h1:dlhp/R75TPv97u0XWUtDeV/lRKWPKSdTuV0TZvrmrQA= -github.com/olekukonko/tablewriter v0.0.5 h1:P2Ga83D34wi1o9J6Wh1mRuqd4mF/x/lgBS7N7AbDhec= -github.com/olekukonko/tablewriter v0.0.5/go.mod h1:hPp6KlRPjbx+hW8ykQs1w3UBbZlj6HuIJcUGPhkA7kY= github.com/onsi/ginkgo v1.6.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= github.com/onsi/ginkgo v1.10.1/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= github.com/onsi/gomega v1.7.0/go.mod h1:ex+gbHU/CVuBBDIJjb2X0qEXbFg53c61hWP/1CpauHY= @@ -725,221 +477,95 @@ github.com/opencontainers/image-spec v1.0.1/go.mod h1:BtxoFyWECRxE4U/7sNtV5W15zM github.com/opencontainers/runc v0.0.0-20190115041553-12f6a991201f/go.mod h1:qT5XzbpPznkRYVz/mWwUaVBUv2rmF59PVA73FjuZG0U= github.com/opencontainers/runc v0.1.1/go.mod h1:qT5XzbpPznkRYVz/mWwUaVBUv2rmF59PVA73FjuZG0U= github.com/opencontainers/runtime-spec v0.1.2-0.20190507144316-5b71a03e2700/go.mod h1:jwyrGlmzljRJv/Fgzds9SsS/C5hL+LL3ko9hs6T5lQ0= -github.com/otiai10/copy v1.2.0/go.mod h1:rrF5dJ5F0t/EWSYODDu4j9/vEeYHMkc8jt0zJChqQWw= -github.com/otiai10/curr v0.0.0-20150429015615-9b4961190c95/go.mod h1:9qAhocn7zKJG+0mI8eUu6xqkFDYS2kb2saOteoSB3cE= -github.com/otiai10/curr v1.0.0/go.mod h1:LskTG5wDwr8Rs+nNQ+1LlxRjAtTZZjtJW4rMXl6j4vs= -github.com/otiai10/mint v1.3.0/go.mod h1:F5AjcsTsWUqX+Na9fpHb52P8pcRX2CI6A3ctIT91xUo= -github.com/otiai10/mint v1.3.1/go.mod h1:/yxELlJQ0ufhjUwhshSj+wFjZ78CnZ48/1wtmBH1OTc= -github.com/outscale/osc-sdk-go v1.11.2 h1:F/UiBhD2vDnVtRyBAeCw8z8bXP0s9ibGUsD1hc6NmnY= -github.com/outscale/osc-sdk-go v1.11.2/go.mod h1:jw8aqBPbmPozu6RNxVdQEePZ9h4tsnfJVIs5KHWxhwU= +github.com/outscale/osc-sdk-go/v2 v2.12.0 h1:N++txOT8CDR6+W6/Qc2L0kDHwdUZq62vbDVhkE8dOJo= +github.com/outscale/osc-sdk-go/v2 v2.12.0/go.mod h1:kzhtUErCzKYl87bZ+kDMphDafmnwbsyFJY9iHF7NgNE= github.com/packer-community/winrmcp v0.0.0-20180921211025-c76d91c1e7db h1:9uViuKtx1jrlXLBW/pMnhOfzn3iSEdLase/But/IZRU= github.com/packer-community/winrmcp v0.0.0-20180921211025-c76d91c1e7db/go.mod h1:f6Izs6JvFTdnRbziASagjZ2vmf55NSIkC/weStxCHqk= github.com/pascaldekloe/goe v0.0.0-20180627143212-57f6aae5913c/go.mod h1:lzWF7FIEvWOWxwDKqyGYQf6ZUaNfKdP144TG7ZOy1lc= github.com/pascaldekloe/goe v0.1.0 h1:cBOtyMzM9HTpWjXfbbunk26uA6nG3a8n06Wieeh0MwY= github.com/pascaldekloe/goe v0.1.0/go.mod h1:lzWF7FIEvWOWxwDKqyGYQf6ZUaNfKdP144TG7ZOy1lc= -github.com/pelletier/go-toml v1.9.5 h1:4yBQzkHv+7BHq2PQUZF3Mx0IYxG7LsP222s7Agd3ve8= -github.com/pelletier/go-toml v1.9.5/go.mod h1:u1nR/EPcESfeI/szUZKdtJ0xRNbUoANCkoOuaOx1Y+c= -github.com/pelletier/go-toml/v2 v2.0.2 h1:+jQXlF3scKIcSEKkdHzXhCTDLPFi5r1wnK6yPS+49Gw= -github.com/pelletier/go-toml/v2 v2.0.2/go.mod h1:MovirKjgVRESsAvNZlAjtFwV867yGuwRkXbG66OzopI= -github.com/phayes/checkstyle v0.0.0-20170904204023-bfd46e6a821d h1:CdDQnGF8Nq9ocOS/xlSptM1N3BbrA6/kmaep5ggwaIA= -github.com/phayes/checkstyle v0.0.0-20170904204023-bfd46e6a821d/go.mod h1:3OzsM7FXDQlpCiw2j81fOmAwQLnZnLGXVKUzeKQXIAw= github.com/pierrec/lz4 v2.0.5+incompatible/go.mod h1:pdkljMzZIN41W+lC3N2tnIh5sFi+IEE17M5jbnwPHcY= github.com/pierrec/lz4 v2.5.2+incompatible/go.mod h1:pdkljMzZIN41W+lC3N2tnIh5sFi+IEE17M5jbnwPHcY= github.com/pierrec/lz4 v2.6.1+incompatible h1:9UY3+iC23yxF0UfGaYrGplQ+79Rg+h/q9FV9ix19jjM= github.com/pierrec/lz4 v2.6.1+incompatible/go.mod h1:pdkljMzZIN41W+lC3N2tnIh5sFi+IEE17M5jbnwPHcY= +github.com/pkg/diff v0.0.0-20210226163009-20ebb0f2a09e/go.mod h1:pJLUxLENpZxwdsKMEsNbx1VGcRFpLqf3715MtcvvzbA= github.com/pkg/errors v0.8.0/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= github.com/pkg/errors v0.8.1-0.20171018195549-f15c970de5b7/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= github.com/pkg/errors v0.8.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= github.com/pkg/errors v0.9.1 h1:FEBLx1zS214owpjy7qsBeixbURkuhQAwrK5UwLGTwt4= github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= -github.com/pkg/sftp v1.13.1/go.mod h1:3HaPG6Dq1ILlpPZRO0HVMrsydcdLt6HRDccSgb87qRg= github.com/pkg/sftp v1.13.2 h1:taJnKntsWgU+qae21Rx52lIwndAdKrj0mfUNQsz1z4Q= github.com/pkg/sftp v1.13.2/go.mod h1:LzqnAvaD5TWeNBsZpfKxSYn1MbjWwOsCIAFFJbpIsK8= github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= -github.com/polyfloyd/go-errorlint v1.0.2 h1:kp1yvHflYhTmw5m3MmBy8SCyQkKPjwDthVuMH0ug6Yk= -github.com/polyfloyd/go-errorlint v1.0.2/go.mod h1:APVvOesVSAnne5SClsPxPdfvZTVDojXh1/G3qb5wjGI= github.com/posener/complete v1.1.1/go.mod h1:em0nMJCgc9GFtwrmVmEMR/ZL6WyhyjMBndrE9hABlRI= github.com/posener/complete v1.2.3/go.mod h1:WZIdtGGp+qx0sLrYKtIRAruyNpv6hFCicSgv7Sy7s/s= github.com/prometheus/client_golang v0.9.1/go.mod h1:7SWBe2y4D6OKWSNQJUaRYU/AaXPKyh/dDVn+NZz0KFw= github.com/prometheus/client_golang v0.9.2/go.mod h1:OsXs2jCmiKlQ1lTBmv21f2mNfw4xf/QclQDMrYNZzcM= github.com/prometheus/client_golang v1.0.0/go.mod h1:db9x61etRT2tGnBNRi70OPL5FsnadC4Ky3P0J6CfImo= github.com/prometheus/client_golang v1.4.0/go.mod h1:e9GMxYsXl05ICDXkRhurwBS4Q3OK1iX/F2sw+iXX5zU= -github.com/prometheus/client_golang v1.7.1/go.mod h1:PY5Wy2awLA44sXw4AOSfFBetzPP4j5+D6mVACh+pe2M= -github.com/prometheus/client_golang v1.11.0/go.mod h1:Z6t4BnS23TR94PD6BsDNk8yVqroYurpAkEiz0P2BEV0= -github.com/prometheus/client_golang v1.12.1 h1:ZiaPsmm9uiBeaSMRznKsCDNtPCS0T3JVDGF+06gjBzk= -github.com/prometheus/client_golang v1.12.1/go.mod h1:3Z9XVyYiZYEO+YQWt3RD2R3jrbd179Rt297l4aS6nDY= github.com/prometheus/client_model v0.0.0-20180712105110-5c3871d89910/go.mod h1:MbSGuTsp3dbXC40dX6PRTWyKYBIrTGTE9sqQNg2J8bo= github.com/prometheus/client_model v0.0.0-20190129233127-fd36f4220a90/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= github.com/prometheus/client_model v0.0.0-20190812154241-14fe0d1b01d4/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= -github.com/prometheus/client_model v0.2.0 h1:uq5h0d+GuxiXLJLNABMgp2qUWDPiLvgCzz2dUR+/W/M= github.com/prometheus/client_model v0.2.0/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= github.com/prometheus/common v0.0.0-20181126121408-4724e9255275/go.mod h1:daVV7qP5qjZbuso7PdcryaAu0sAZbrN9i7WWcTMWvro= github.com/prometheus/common v0.4.1/go.mod h1:TNfzLD0ON7rHzMJeJkieUDPYmFC7Snx/y86RQel1bk4= github.com/prometheus/common v0.9.1/go.mod h1:yhUN8i9wzaXS3w1O07YhxHEBxD+W35wd8bs7vj7HSQ4= -github.com/prometheus/common v0.10.0/go.mod h1:Tlit/dnDKsSWFlCLTWaA1cyBgKHSMdTB80sz/V91rCo= -github.com/prometheus/common v0.26.0/go.mod h1:M7rCNAaPfAosfx8veZJCuw84e35h3Cfd9VFqTh1DIvc= -github.com/prometheus/common v0.32.1 h1:hWIdL3N2HoUx3B8j3YN9mWor0qhY/NlEKZEaXxuIRh4= -github.com/prometheus/common v0.32.1/go.mod h1:vu+V0TpY+O6vW9J44gczi3Ap/oXXR10b+M/gUGO4Hls= github.com/prometheus/procfs v0.0.0-20180125133057-cb4147076ac7/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk= github.com/prometheus/procfs v0.0.0-20181005140218-185b4288413d/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk= github.com/prometheus/procfs v0.0.0-20181204211112-1dc9a6cbc91a/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk= github.com/prometheus/procfs v0.0.2/go.mod h1:TjEm7ze935MbeOT/UhFTIMYKhuLP4wbCsTZCD3I8kEA= github.com/prometheus/procfs v0.0.8/go.mod h1:7Qr8sr6344vo1JqZ6HhLceV9o3AJ1Ff+GxbHq6oeK9A= -github.com/prometheus/procfs v0.1.3/go.mod h1:lV6e/gmhEcM9IjHGsFOCxxuZ+z1YqCvr4OA4YeYWdaU= -github.com/prometheus/procfs v0.6.0/go.mod h1:cz+aTbrPOrUb4q7XlbU9ygM+/jj0fzG6c1xBZuNvfVA= -github.com/prometheus/procfs v0.7.3 h1:4jVXhlkAyzOScmCkXBTOLRLTz8EeU+eyjrwB/EPq0VU= -github.com/prometheus/procfs v0.7.3/go.mod h1:cz+aTbrPOrUb4q7XlbU9ygM+/jj0fzG6c1xBZuNvfVA= -github.com/quasilyte/go-ruleguard v0.3.1-0.20210203134552-1b5a410e1cc8/go.mod h1:KsAh3x0e7Fkpgs+Q9pNLS5XpFSvYCEVl5gP9Pp1xp30= -github.com/quasilyte/go-ruleguard v0.3.17 h1:cDdoaSbQg11LXPDQqiCK54QmQXsEQQCTIgdcpeULGSI= -github.com/quasilyte/go-ruleguard v0.3.17/go.mod h1:sST5PvaR7yb/Az5ksX8oc88usJ4EGjmJv7cK7y3jyig= -github.com/quasilyte/go-ruleguard/dsl v0.3.0/go.mod h1:KeCP03KrjuSO0H1kTuZQCWlQPulDV6YMIXmpQss17rU= -github.com/quasilyte/go-ruleguard/dsl v0.3.21/go.mod h1:KeCP03KrjuSO0H1kTuZQCWlQPulDV6YMIXmpQss17rU= -github.com/quasilyte/go-ruleguard/rules v0.0.0-20201231183845-9e62ed36efe1/go.mod h1:7JTjp89EGyU1d6XfBiXihJNG37wB2VRkd125Q1u7Plc= -github.com/quasilyte/go-ruleguard/rules v0.0.0-20211022131956-028d6511ab71/go.mod h1:4cgAphtvu7Ftv7vOT2ZOYhC6CvBxZixcasr8qIOTA50= -github.com/quasilyte/gogrep v0.0.0-20220120141003-628d8b3623b5 h1:PDWGei+Rf2bBiuZIbZmM20J2ftEy9IeUCHA8HbQqed8= -github.com/quasilyte/gogrep v0.0.0-20220120141003-628d8b3623b5/go.mod h1:wSEyW6O61xRV6zb6My3HxrQ5/8ke7NE2OayqCHa3xRM= -github.com/quasilyte/regex/syntax v0.0.0-20200407221936-30656e2c4a95 h1:L8QM9bvf68pVdQ3bCFZMDmnt9yqcMBro1pC7F+IPYMY= -github.com/quasilyte/regex/syntax v0.0.0-20200407221936-30656e2c4a95/go.mod h1:rlzQ04UMyJXu/aOvhd8qT+hvDrFpiwqp8MRXDY9szc0= -github.com/quasilyte/stdinfo v0.0.0-20220114132959-f7386bf02567 h1:M8mH9eK4OUR4lu7Gd+PU1fV2/qnDNfzT635KRSObncs= -github.com/quasilyte/stdinfo v0.0.0-20220114132959-f7386bf02567/go.mod h1:DWNGW8A4Y+GyBgPuaQJuWiy0XYftx4Xm/y5Jqk9I6VQ= github.com/rogpeppe/fastuuid v1.2.0/go.mod h1:jVj6XXZzXRy/MSR5jhDC/2q6DgLz+nrA6LYCDYWNEvQ= github.com/rogpeppe/go-internal v1.3.0/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFRclV5y23lUDJ4= -github.com/russross/blackfriday/v2 v2.1.0/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM= -github.com/ryancurrah/gomodguard v1.2.4 h1:CpMSDKan0LtNGGhPrvupAoLeObRFjND8/tU1rEOtBp4= -github.com/ryancurrah/gomodguard v1.2.4/go.mod h1:+Kem4VjWwvFpUJRJSwa16s1tBJe+vbv02+naTow2f6M= -github.com/ryanrolds/sqlclosecheck v0.3.0 h1:AZx+Bixh8zdUBxUA1NxbxVAS78vTPq4rCb8OUZI9xFw= -github.com/ryanrolds/sqlclosecheck v0.3.0/go.mod h1:1gREqxyTGR3lVtpngyFo3hZAgk0KCtEdgEkHwDbigdA= +github.com/rogpeppe/go-internal v1.6.1/go.mod h1:xXDCJY+GAPziupqXw64V24skbSoqbTEfhy4qGm1nDQc= +github.com/rogpeppe/go-internal v1.8.1 h1:geMPLpDpQOgVyCg5z5GoRwLHepNdb71NXb67XFkP+Eg= +github.com/rogpeppe/go-internal v1.8.1/go.mod h1:JeRgkft04UBgHMgCIwADu4Pn6Mtm5d4nPKWu0nJ5d+o= github.com/ryanuber/columnize v0.0.0-20160712163229-9b3edd62028f/go.mod h1:sm1tb6uqfes/u+d4ooFouqFdy9/2g9QGwK3SQygK0Ts= github.com/ryanuber/columnize v2.1.0+incompatible/go.mod h1:sm1tb6uqfes/u+d4ooFouqFdy9/2g9QGwK3SQygK0Ts= github.com/ryanuber/go-glob v1.0.0 h1:iQh3xXAumdQ+4Ufa5b25cRpC5TYKlno6hsv6Cb3pkBk= github.com/ryanuber/go-glob v1.0.0/go.mod h1:807d1WSdnB0XRJzKNil9Om6lcp/3a0v4qIHxIXzX/Yc= -github.com/sanposhiho/wastedassign/v2 v2.0.6 h1:+6/hQIHKNJAUixEj6EmOngGIisyeI+T3335lYTyxRoA= -github.com/sanposhiho/wastedassign/v2 v2.0.6/go.mod h1:KyZ0MWTwxxBmfwn33zh3k1dmsbF2ud9pAAGfoLfjhtI= -github.com/sashamelentyev/interfacebloat v1.1.0 h1:xdRdJp0irL086OyW1H/RTZTr1h/tMEOsumirXcOJqAw= -github.com/sashamelentyev/interfacebloat v1.1.0/go.mod h1:+Y9yU5YdTkrNvoX0xHc84dxiN1iBi9+G8zZIhPVoNjQ= -github.com/sashamelentyev/usestdlibvars v1.13.0 h1:uObNudVEEHf6JbOJy5bgKJloA1bWjxR9fwgNFpPzKnI= -github.com/sashamelentyev/usestdlibvars v1.13.0/go.mod h1:D2Wb7niIYmTB+gB8z7kh8tyP5ccof1dQ+SFk+WW5NtY= github.com/satori/go.uuid v1.2.0 h1:0uYX9dsZ2yD7q2RtLRtPSdGDWzjeM3TbMJP9utgA0ww= -github.com/satori/go.uuid v1.2.0/go.mod h1:dA0hQrYB0VpLJoorglMZABFdXlWrHn1NEOzdhQKdks0= github.com/sean-/seed v0.0.0-20170313163322-e2103e2c3529 h1:nn5Wsu0esKSJiIVhscUtVbo7ada43DJhG55ua/hjS5I= github.com/sean-/seed v0.0.0-20170313163322-e2103e2c3529/go.mod h1:DxrIzT+xaE7yg65j358z/aeFdxmN0P9QXhEzd20vsDc= -github.com/securego/gosec/v2 v2.13.1 h1:7mU32qn2dyC81MH9L2kefnQyRMUarfDER3iQyMHcjYM= -github.com/securego/gosec/v2 v2.13.1/go.mod h1:EO1sImBMBWFjOTFzMWfTRrZW6M15gm60ljzrmy/wtHo= -github.com/sergi/go-diff v1.0.0/go.mod h1:0CfEIISq7TuYL3j771MWULgwwjU+GofnZX9QAmXWZgo= -github.com/shazow/go-diff v0.0.0-20160112020656-b6b7b6733b8c h1:W65qqJCIOVP4jpqPQ0YvHYKwcMEMVWIzWC5iNQQfBTU= -github.com/shazow/go-diff v0.0.0-20160112020656-b6b7b6733b8c/go.mod h1:/PevMnwAxekIXwN8qQyfc5gl2NlkB3CQlkizAbOkeBs= -github.com/shurcooL/go v0.0.0-20180423040247-9e1955d9fb6e/go.mod h1:TDJrrUr11Vxrven61rcy3hJMUqaf/CLWYhHNPmT14Lk= -github.com/shurcooL/go-goon v0.0.0-20170922171312-37c2f522c041/go.mod h1:N5mDOmsrJOB+vfqUK+7DmDyjhSLIIBnXo9lvZJj3MWQ= github.com/sirupsen/logrus v1.0.4-0.20170822132746-89742aefa4b2/go.mod h1:pMByvHTf9Beacp5x1UXfOR9xyW/9antXMhjMPG0dEzc= github.com/sirupsen/logrus v1.2.0/go.mod h1:LxeOpSwHxABJmUn/MG1IvRgCAasNZTLOkJPxbbu5VWo= github.com/sirupsen/logrus v1.4.1/go.mod h1:ni0Sbl8bgC9z8RoU9G6nDWqqs/fq4eDPysMBDgk/93Q= github.com/sirupsen/logrus v1.4.2/go.mod h1:tLMulIdttU9McNUspp0xgXVQah82FyeX6MwdIuYE2rE= -github.com/sirupsen/logrus v1.6.0/go.mod h1:7uNnSEd1DgxDLC74fIahvMZmmYsHGZGEOFrfsX/uA88= -github.com/sirupsen/logrus v1.9.0 h1:trlNQbNUG3OdDrDil03MCb1H2o9nJ1x4/5LYw7byDE0= -github.com/sirupsen/logrus v1.9.0/go.mod h1:naHLuLoDiP4jHNo9R0sCBMtWGeIprob74mVsIT4qYEQ= -github.com/sivchari/containedctx v1.0.2 h1:0hLQKpgC53OVF1VT7CeoFHk9YKstur1XOgfYIc1yrHI= -github.com/sivchari/containedctx v1.0.2/go.mod h1:PwZOeqm4/DLoJOqMSIJs3aKqXRX4YO+uXww087KZ7Bw= -github.com/sivchari/nosnakecase v1.7.0 h1:7QkpWIRMe8x25gckkFd2A5Pi6Ymo0qgr4JrhGt95do8= -github.com/sivchari/nosnakecase v1.7.0/go.mod h1:CwDzrzPea40/GB6uynrNLiorAlgFRvRbFSgJx2Gs+QY= -github.com/sivchari/tenv v1.7.0 h1:d4laZMBK6jpe5PWepxlV9S+LC0yXqvYHiq8E6ceoVVE= -github.com/sivchari/tenv v1.7.0/go.mod h1:64yStXKSOxDfX47NlhVwND4dHwfZDdbp2Lyl018Icvg= -github.com/sonatard/noctx v0.0.1 h1:VC1Qhl6Oxx9vvWo3UDgrGXYCeKCe3Wbw7qAWL6FrmTY= -github.com/sonatard/noctx v0.0.1/go.mod h1:9D2D/EoULe8Yy2joDHJj7bv3sZoq9AaSb8B4lqBjiZI= -github.com/sourcegraph/go-diff v0.6.1 h1:hmA1LzxW0n1c3Q4YbrFgg4P99GSnebYa3x8gr0HZqLQ= -github.com/sourcegraph/go-diff v0.6.1/go.mod h1:iBszgVvyxdc8SFZ7gm69go2KDdt3ag071iBaWPF6cjs= github.com/spaolacci/murmur3 v0.0.0-20180118202830-f09979ecbc72/go.mod h1:JwIasOWyU6f++ZhiEuf87xNszmSA2myDM2Kzu9HwQUA= -github.com/spf13/afero v1.8.2 h1:xehSyVa0YnHWsJ49JFljMpg1HX19V6NDZ1fkm1Xznbo= -github.com/spf13/afero v1.8.2/go.mod h1:CtAatgMJh6bJEIs48Ay/FOnkljP3WeGUG0MC1RfAqwo= -github.com/spf13/cast v1.5.0 h1:rj3WzYc11XZaIZMPKmwP96zkFEnnAmV8s6XbB2aY32w= -github.com/spf13/cast v1.5.0/go.mod h1:SpXXQ5YoyJw6s3/6cMTQuxvgRl3PCJiyaX9p6b155UU= github.com/spf13/cobra v0.0.2-0.20171109065643-2da4a54c5cee/go.mod h1:1l0Ry5zgKvJasoi3XT1TypsSe7PqH0Sj9dhYf7v3XqQ= -github.com/spf13/cobra v1.5.0 h1:X+jTBEBqF0bHN+9cSMgmfuvv2VHJ9ezmFNf9Y/XstYU= -github.com/spf13/cobra v1.5.0/go.mod h1:dWXEIy2H428czQCjInthrTRUg7yKbok+2Qi/yBIJoUM= -github.com/spf13/jwalterweatherman v1.1.0 h1:ue6voC5bR5F8YxI5S67j9i582FU4Qvo2bmqnqMYADFk= -github.com/spf13/jwalterweatherman v1.1.0/go.mod h1:aNWZUN0dPAAO/Ljvb5BEdw96iTZ0EXowPYD95IqWIGo= github.com/spf13/pflag v1.0.1-0.20171106142849-4c012f6dcd95/go.mod h1:DYY7MBk1bdzusC3SYhjObp+wFpr4gzcvqqNjLnInEg4= -github.com/spf13/pflag v1.0.2/go.mod h1:DYY7MBk1bdzusC3SYhjObp+wFpr4gzcvqqNjLnInEg4= github.com/spf13/pflag v1.0.3/go.mod h1:DYY7MBk1bdzusC3SYhjObp+wFpr4gzcvqqNjLnInEg4= -github.com/spf13/pflag v1.0.5 h1:iy+VFUOCP1a+8yFto/drg2CJ5u0yRoB7fZw3DKv/JXA= -github.com/spf13/pflag v1.0.5/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg= -github.com/spf13/viper v1.12.0 h1:CZ7eSOd3kZoaYDLbXnmzgQI5RlciuXBMA+18HwHRfZQ= -github.com/spf13/viper v1.12.0/go.mod h1:b6COn30jlNxbm/V2IqWiNWkJ+vZNiMNksliPCiuKtSI= -github.com/ssgreg/nlreturn/v2 v2.2.1 h1:X4XDI7jstt3ySqGU86YGAURbxw3oTDPK9sPEi6YEwQ0= -github.com/ssgreg/nlreturn/v2 v2.2.1/go.mod h1:E/iiPB78hV7Szg2YfRgyIrk1AD6JVMTRkkxBiELzh2I= -github.com/stbenjam/no-sprintf-host-port v0.1.1 h1:tYugd/yrm1O0dV+ThCbaKZh195Dfm07ysF0U6JQXczc= -github.com/stbenjam/no-sprintf-host-port v0.1.1/go.mod h1:TLhvtIvONRzdmkFiio4O8LHsN9N74I+PhRquPsxpL0I= github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= -github.com/stretchr/objx v0.1.1 h1:2vfRuCMp5sSVIDSqO8oNnWJq7mPa6KVP3iPIwFBuy8A= github.com/stretchr/objx v0.1.1/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= github.com/stretchr/objx v0.4.0 h1:M2gUjqZET1qApGOWNSnZ49BAIMX4F/1plDv3+l31EJ4= github.com/stretchr/objx v0.4.0/go.mod h1:YvHI0jy2hoMjB+UWwv71VJQ9isScKT/TqJzVSSt89Yw= -github.com/stretchr/testify v1.1.4/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs= github.com/stretchr/testify v1.2.2/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs= github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI= github.com/stretchr/testify v1.4.0/go.mod h1:j7eGeouHqKxXV5pUuKE4zz7dFj8WfuZ+81PSLYec5m4= github.com/stretchr/testify v1.5.1/go.mod h1:5W2xD1RspED5o8YsWQXVCued0rvSQ+mT+I5cxcmMvtA= github.com/stretchr/testify v1.6.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= -github.com/stretchr/testify v1.7.0 h1:nwc3DEeHmmLAfoZucVR881uASk0Mfjw8xYJ99tb5CcY= github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= github.com/stretchr/testify v1.7.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= -github.com/stretchr/testify v1.7.2/go.mod h1:R6va5+xMeoiuVRoj+gSkQ7d3FALtqAAGI1FQKckRals= github.com/stretchr/testify v1.8.0 h1:pSgiaMZlXftHpm5L7V1+rVB+AZJydKsMxsQBIJw4PKk= github.com/stretchr/testify v1.8.0/go.mod h1:yNjHg4UonilssWZ8iaSj1OCr/vHnekPRkoO+kdMU+MU= -github.com/subosito/gotenv v1.4.0 h1:yAzM1+SmVcz5R4tXGsNMu1jUl2aOJXoiWUCEwwnGrvs= -github.com/subosito/gotenv v1.4.0/go.mod h1:mZd6rFysKEcUhUHXJk0C/08wAgyDBFuwEYL7vWWGaGo= -github.com/sylvia7788/contextcheck v1.0.6 h1:o2EZgVPyMKE/Mtoqym61DInKEjwEbsmyoxg3VrmjNO4= -github.com/sylvia7788/contextcheck v1.0.6/go.mod h1:9XDxwvxyuKD+8N+a7Gs7bfWLityh5t70g/GjdEt2N2M= -github.com/tdakkota/asciicheck v0.1.1 h1:PKzG7JUTUmVspQTDqtkX9eSiLGossXTybutHwTXuO0A= -github.com/tdakkota/asciicheck v0.1.1/go.mod h1:yHp0ai0Z9gUljN3o0xMhYJnH/IcvkdTBOX2fmJ93JEM= -github.com/tenntenn/modver v1.0.1/go.mod h1:bePIyQPb7UeioSRkw3Q0XeMhYZSMx9B8ePqg6SAMGH0= -github.com/tenntenn/text/transform v0.0.0-20200319021203-7eef512accb3/go.mod h1:ON8b8w4BN/kE1EOhwT0o+d62W65a6aPw1nouo9LMgyY= -github.com/tetafro/godot v1.4.11 h1:BVoBIqAf/2QdbFmSwAWnaIqDivZdOV0ZRwEm6jivLKw= -github.com/tetafro/godot v1.4.11/go.mod h1:LR3CJpxDVGlYOWn3ZZg1PgNZdTUvzsZWu8xaEohUpn8= -github.com/timakin/bodyclose v0.0.0-20210704033933-f49887972144 h1:kl4KhGNsJIbDHS9/4U9yQo1UcPQM0kOMJHn29EoH/Ro= -github.com/timakin/bodyclose v0.0.0-20210704033933-f49887972144/go.mod h1:Qimiffbc6q9tBWlVV6x0P9sat/ao1xEkREYPPj9hphk= -github.com/timonwong/logrlint v0.1.0 h1:phZCcypL/vtx6cGxObJgWZ5wexZF5SXFPLOM+ru0e/M= -github.com/timonwong/logrlint v0.1.0/go.mod h1:Zleg4Gw+kRxNej+Ra7o+tEaW5k1qthTaYKU7rSD39LU= -github.com/tomarrell/wrapcheck/v2 v2.6.2 h1:3dI6YNcrJTQ/CJQ6M/DUkc0gnqYSIk6o0rChn9E/D0M= -github.com/tomarrell/wrapcheck/v2 v2.6.2/go.mod h1:ao7l5p0aOlUNJKI0qVwB4Yjlqutd0IvAB9Rdwyilxvg= -github.com/tommy-muehle/go-mnd/v2 v2.5.0 h1:iAj0a8e6+dXSL7Liq0aXPox36FiN1dBbjA6lt9fl65s= -github.com/tommy-muehle/go-mnd/v2 v2.5.0/go.mod h1:WsUAkMJMYww6l/ufffCD3m+P7LEvr8TnZn9lwVDlgzw= github.com/tv42/httpunix v0.0.0-20150427012821-b75d8614f926/go.mod h1:9ESjWnEqriFuLhtthL60Sar/7RFoluCcXsuvEwTV5KM= -github.com/ugorji/go v1.2.6 h1:tGiWC9HENWE2tqYycIqFTNorMmFRVhNwCpDOpWqnk8E= github.com/ugorji/go v1.2.6/go.mod h1:anCg0y61KIhDlPZmnH+so+RQbysYVyDko0IMgJv0Nn0= github.com/ugorji/go/codec v1.2.6 h1:7kbGefxLoDBuYXOms4yD7223OpNMMPNPZxXk5TvFcyQ= github.com/ugorji/go/codec v1.2.6/go.mod h1:V6TCNZ4PHqoHGFZuSG1W8nrCzzdgA2DozYxWFFpvxTw= github.com/ulikunitz/xz v0.5.8/go.mod h1:nbz6k7qbPmH4IRqmfOplQw/tblSgqTqBwxkY0oWt/14= github.com/ulikunitz/xz v0.5.10 h1:t92gobL9l3HE202wg3rlk19F6X+JOxl9BBrCCMYEYd8= github.com/ulikunitz/xz v0.5.10/go.mod h1:nbz6k7qbPmH4IRqmfOplQw/tblSgqTqBwxkY0oWt/14= -github.com/ultraware/funlen v0.0.3 h1:5ylVWm8wsNwH5aWo9438pwvsK0QiqVuUrt9bn7S/iLA= -github.com/ultraware/funlen v0.0.3/go.mod h1:Dp4UiAus7Wdb9KUZsYWZEWiRzGuM2kXM1lPbfaF6xhA= -github.com/ultraware/whitespace v0.0.5 h1:hh+/cpIcopyMYbZNVov9iSxvJU3OYQg78Sfaqzi/CzI= -github.com/ultraware/whitespace v0.0.5/go.mod h1:aVMh/gQve5Maj9hQ/hg+F75lr/X5A89uZnzAmWSineA= github.com/urfave/cli v0.0.0-20171014202726-7bc6a0acffa5/go.mod h1:70zkFmudgCuE/ngEzBv17Jvp/497gISqfk5gWijbERA= -github.com/uudashr/gocognit v1.0.6 h1:2Cgi6MweCsdB6kpcVQp7EW4U23iBFQWfTXiWlyp842Y= -github.com/uudashr/gocognit v1.0.6/go.mod h1:nAIUuVBnYU7pcninia3BHOvQkpQCeO76Uscky5BOwcY= -github.com/vmihailenco/msgpack v3.3.3+incompatible/go.mod h1:fy3FlTQTDXWkZ7Bh6AcGMlsjHatGryHQYUTf1ShIgkk= github.com/vmihailenco/msgpack/v4 v4.3.12/go.mod h1:gborTTJjAo/GWTqqRjrLCn9pgNN+NXzzngzBKDPIqw4= github.com/vmihailenco/tagparser v0.1.1/go.mod h1:OeAg3pn3UbLjkWt+rN9oFYB6u/cQgqMEUPoW2WPyhdI= -github.com/yagipy/maintidx v1.0.0 h1:h5NvIsCz+nRDapQ0exNv4aJ0yXSI0420omVANTv3GJM= -github.com/yagipy/maintidx v1.0.0/go.mod h1:0qNf/I/CCZXSMhsRsrEPDZ+DkekpKLXAJfsTACwgXLk= -github.com/yeya24/promlinter v0.2.0 h1:xFKDQ82orCU5jQujdaD8stOHiv8UN68BSdn2a8u8Y3o= -github.com/yeya24/promlinter v0.2.0/go.mod h1:u54lkmBOZrpEbQQ6gox2zWKKLKu2SGe+2KOiextY+IA= github.com/yuin/goldmark v1.1.25/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= github.com/yuin/goldmark v1.1.27/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= github.com/yuin/goldmark v1.1.32/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= github.com/yuin/goldmark v1.2.1/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= github.com/yuin/goldmark v1.3.5/go.mod h1:mwnBkeHKe2W/ZEtQ+71ViKU8L12m81fl3OWwC1Zlc8k= -github.com/yuin/goldmark v1.4.1/go.mod h1:mwnBkeHKe2W/ZEtQ+71ViKU8L12m81fl3OWwC1Zlc8k= -github.com/yuin/goldmark v1.4.13/go.mod h1:6yULJ656Px+3vBD8DxQVa3kxgyrAnzto9xy5taEt/CY= -github.com/zclconf/go-cty v1.2.0/go.mod h1:hOPWgoHbaTUnI5k4D2ld+GRpFJSCe6bCM7m1q/N4PQ8= -github.com/zclconf/go-cty v1.8.0/go.mod h1:vVKLxnk3puL4qRAv72AO+W99LUD4da90g3uUAzyuvAk= github.com/zclconf/go-cty v1.10.0 h1:mp9ZXQeIcN8kAwuqorjH+Q+njbJKjLrvB2yIh4q7U+0= github.com/zclconf/go-cty v1.10.0/go.mod h1:vVKLxnk3puL4qRAv72AO+W99LUD4da90g3uUAzyuvAk= -github.com/zclconf/go-cty-debug v0.0.0-20191215020915-b22d67c1ba0b/go.mod h1:ZRKQfBXbGkpdV6QMzT3rU1kSTAnfu1dO8dPKjYprgj8= -gitlab.com/bosi/decorder v0.2.3 h1:gX4/RgK16ijY8V+BRQHAySfQAb354T7/xQpDB2n10P0= -gitlab.com/bosi/decorder v0.2.3/go.mod h1:9K1RB5+VPNQYtXtTDAzd2OEftsZb1oV0IrJrzChSdGE= go.opencensus.io v0.21.0/go.mod h1:mSImk1erAIZhrmZN+AvHh14ztQfjbGwt4TtuofqLduU= go.opencensus.io v0.22.0/go.mod h1:+kGneAE2xo2IficOXnaByMWTGM9T73dGwxeWcUqIpI8= go.opencensus.io v0.22.2/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw= @@ -950,15 +576,8 @@ go.opencensus.io v0.23.0 h1:gqCw0LfLxScz8irSi8exQc7fyQ0fKQU/qnC/X8+V/1M= go.opencensus.io v0.23.0/go.mod h1:XItmlyltB5F7CS4xOC1DcqMoFqwtC6OG2xF7mCv7P7E= go.opentelemetry.io/proto/otlp v0.7.0/go.mod h1:PqfVotwruBrMGOCsRd/89rSnXhoiJIqeYNgFYFoEGnI= go.uber.org/atomic v1.6.0/go.mod h1:sABNBOSYdrvTF6hTgEIbc7YasKWGhgEQZyfxyTvoXHQ= -go.uber.org/atomic v1.7.0 h1:ADUqmZGgLDDfbSL9ZmPxKTybcoEYHgpYfELNoN+7hsw= -go.uber.org/atomic v1.7.0/go.mod h1:fEN4uk6kAWBTFdckzkM89CLk9XfWZrxpCo0nPH17wJc= -go.uber.org/multierr v1.6.0 h1:y6IPFStTAIT5Ytl7/XYmHvzXQ7S3g/IeZW9hyZ5thw4= -go.uber.org/multierr v1.6.0/go.mod h1:cdWPpRnG4AhwMwsgIHip0KRBQjJy5kYEpYjJxpXp9iU= -go.uber.org/zap v1.17.0 h1:MTjgFu6ZLKvY6Pvaqk97GlxNBuMpV4Hy/3P6tRGlI2U= -go.uber.org/zap v1.17.0/go.mod h1:MXVU+bhUf/A7Xi2HNOnopQOrmycQ5Ih87HtOu4q5SSo= golang.org/x/crypto v0.0.0-20171113213409-9f005a07e0d3/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= golang.org/x/crypto v0.0.0-20180904163835-0709b304e793/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= -golang.org/x/crypto v0.0.0-20181029021203-45a5f77698d3/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= golang.org/x/crypto v0.0.0-20190222235706-ffb98f73852f/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= golang.org/x/crypto v0.0.0-20190418165655-df01cb2cc480/go.mod h1:WFFai1msRO1wXaEeE5yQxYXgSfI8pQAWXbQop6sCtWE= @@ -968,18 +587,12 @@ golang.org/x/crypto v0.0.0-20190923035154-9ee001bba392/go.mod h1:/lpIB1dKB+9EgE3 golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20200604202706-70a84ac30bf9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= -golang.org/x/crypto v0.0.0-20200820211705-5c72a883971a/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= golang.org/x/crypto v0.0.0-20210421170649-83a5a9bb288b/go.mod h1:T9bdIzuCu7OtxOm1hfPfRQxPLYneinmdGuTeoZ9dtd4= -golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= -golang.org/x/crypto v0.0.0-20211108221036-ceb1ce70b4fa/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= -golang.org/x/crypto v0.0.0-20220517005047-85d78b3ac167 h1:O8uGbHCqlTp2P6QJSLmCojM4mN6UemYv8K+dCnmHmu0= -golang.org/x/crypto v0.0.0-20220517005047-85d78b3ac167/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4= golang.org/x/crypto v0.0.0-20220722155217-630584e8d5aa h1:zuSxTR4o9y82ebqCUJYNGJbGPo6sKVl54f/TVDObg1c= golang.org/x/crypto v0.0.0-20220722155217-630584e8d5aa/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4= golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20190306152737-a1d7652674e8/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20190510132918-efd6b22b2522/go.mod h1:ZjyILWgesfNpC6sMxTJOJm9Kp84zZh5NQWvqDGG3Qr8= -golang.org/x/exp v0.0.0-20190731235908-ec7cb31e5a56/go.mod h1:JhuoJpWY28nO4Vef9tZUw9qufEGTyX1+7lmHxV5q5G4= golang.org/x/exp v0.0.0-20190829153037-c13cbed26979/go.mod h1:86+5VVa7VpoJ4kLfm080zCjGlMRFzhUhsZKEZO7MGek= golang.org/x/exp v0.0.0-20191030013958-a1ab85dbe136/go.mod h1:JXzH8nQsPlswgeRAPE3MuO9GYsAcnJvJ4vnMwN/5qkY= golang.org/x/exp v0.0.0-20191129062945-2f5052295587/go.mod h1:2RIsYlXP63K8oxa1u096TMicItID8zy7Y6sNkU49FU4= @@ -987,11 +600,6 @@ golang.org/x/exp v0.0.0-20191227195350-da58074b4299/go.mod h1:2RIsYlXP63K8oxa1u0 golang.org/x/exp v0.0.0-20200119233911-0405dc783f0a/go.mod h1:2RIsYlXP63K8oxa1u096TMicItID8zy7Y6sNkU49FU4= golang.org/x/exp v0.0.0-20200207192155-f17229e696bd/go.mod h1:J/WKrq2StrnmMY6+EHIKF9dgMWnmCNThgcyBT1FY9mM= golang.org/x/exp v0.0.0-20200224162631-6cc2880d07d6/go.mod h1:3jZMyOhIsHpP37uCMkUooju7aAi5cS1Q23tOzKc+0MU= -golang.org/x/exp v0.0.0-20220722155223-a9213eeb770e h1:+WEEuIdZHnUeJJmEUjyYC2gfUMj69yZXw17EnHg/otA= -golang.org/x/exp v0.0.0-20220722155223-a9213eeb770e/go.mod h1:Kr81I6Kryrl9sr8s2FK3vxD90NdsKWRuOIl2O4CvYbA= -golang.org/x/exp/typeparams v0.0.0-20220428152302-39d4317da171/go.mod h1:AbB0pIl9nAr9wVwH+Z2ZpaocVmF5I4GyWCDIsVjR0bk= -golang.org/x/exp/typeparams v0.0.0-20220613132600-b0d781184e0d h1:+W8Qf4iJtMGKkyAygcKohjxTk4JPsL9DpzApJ22m5Ic= -golang.org/x/exp/typeparams v0.0.0-20220613132600-b0d781184e0d/go.mod h1:AbB0pIl9nAr9wVwH+Z2ZpaocVmF5I4GyWCDIsVjR0bk= golang.org/x/image v0.0.0-20190227222117-0694c2d4d067/go.mod h1:kZ7UVZpmo3dzQBMxlp+ypCbDeSB+sBbTgSJuh5dn5js= golang.org/x/image v0.0.0-20190802002840-cff245a6509b/go.mod h1:FeLwcggjj3mMvU+oOTbSwawSJRM1uh48EjtB4UJZlP0= golang.org/x/lint v0.0.0-20181026193005-c67002cb31c3/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE= @@ -1008,7 +616,6 @@ golang.org/x/lint v0.0.0-20201208152925-83fdc39ff7b5/go.mod h1:3xt1FjdF8hUf6vQPI golang.org/x/lint v0.0.0-20210508222113-6edffad5e616/go.mod h1:3xt1FjdF8hUf6vQPIChWIBhFzV8gjjsPE/fR3IyQdNY= golang.org/x/mobile v0.0.0-20190312151609-d3739f865fa6/go.mod h1:z+o9i4GpDbdi3rU15maQ/Ox0txvL9dWGYEHz965HBQE= golang.org/x/mobile v0.0.0-20190719004257-d2bd2a29d028/go.mod h1:E/iHnbuqvinMTCcRqshq8CkpyQDoeVncDDYHnLhea+o= -golang.org/x/mobile v0.0.0-20210901025245-1fde1d6c3ca1/go.mod h1:jFTmtFYCV0MFtXBU+J5V/+5AUeVS0ON/0WkE/KSrl6E= golang.org/x/mod v0.0.0-20190513183733-4bf6d317e70e/go.mod h1:mXi4GBBbnImb6dmsKGUJ2LatrhH/nqhxcFungHvyanc= golang.org/x/mod v0.1.0/go.mod h1:0QHyrYULN0/3qlju5TqG8bIK38QM8yzMo5ekMj3DlcY= golang.org/x/mod v0.1.1-0.20191105210325-c90efee705ee/go.mod h1:QqPTAvyqsEbceGzBzNggFXnrqF1CaUcvgkdR5Ot7KZg= @@ -1018,15 +625,9 @@ golang.org/x/mod v0.3.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.4.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.4.1/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.4.2/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= -golang.org/x/mod v0.5.1/go.mod h1:5OXOZSfqPIIbmVBIIKWRFfZjPR0E5r58TLhUjH0a2Ro= -golang.org/x/mod v0.6.0-dev.0.20220106191415-9b9b3d81d5e3/go.mod h1:3p9vT2HGsQu2K1YbXdKPJLVgG5VJdoTa1poYQBtP1AY= -golang.org/x/mod v0.6.0-dev.0.20220419223038-86c51ed26bb4 h1:6zppjxzCulZykYSLyVDYbneBfbaBIQPYMevg0bEwv2s= -golang.org/x/mod v0.6.0-dev.0.20220419223038-86c51ed26bb4/go.mod h1:jJ57K6gSWd91VN4djpZkiMVwK6gcyfeH4XE8wZrZaV4= golang.org/x/net v0.0.0-20180724234803-3673e40ba225/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= -golang.org/x/net v0.0.0-20180811021610-c39426892332/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20180826012351-8a410e7b638d/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20180906233101-161cd47e91fd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= -golang.org/x/net v0.0.0-20181023162649-9b4f9f5ad519/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20181114220301-adae6a3d119a/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20181201002055-351d144fa1fc/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20190108225652-1e06a53dbb7e/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= @@ -1062,28 +663,20 @@ golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwY golang.org/x/net v0.0.0-20201031054903-ff519b6c9102/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= golang.org/x/net v0.0.0-20201110031124-69a78807bb2b/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= golang.org/x/net v0.0.0-20201209123823-ac852fbbde11/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= -golang.org/x/net v0.0.0-20201224014010-6772e930b67b/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= golang.org/x/net v0.0.0-20210119194325-5f4716e94777/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= golang.org/x/net v0.0.0-20210226172049-e18ecbb05110/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= golang.org/x/net v0.0.0-20210316092652-d523dce5a7f4/go.mod h1:RBQZq4jEuRlivfhVLdyRGr576XBO4/greRjx4P4O3yc= golang.org/x/net v0.0.0-20210405180319-a5a99cb37ef4/go.mod h1:p54w0d4576C0XHj96bSt6lcn1PtDYWL6XObtHCRCNQM= golang.org/x/net v0.0.0-20210410081132-afb366fc7cd1/go.mod h1:9tjilg8BloeKEkVJvy7fQ90B1CfIiPueXVOjqfkSzI8= golang.org/x/net v0.0.0-20210503060351-7fd8e65b6420/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= -golang.org/x/net v0.0.0-20210525063256-abc453219eb5/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= -golang.org/x/net v0.0.0-20210614182718-04defd469f4e/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= -golang.org/x/net v0.0.0-20211015210444-4f30a5c0130f/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= -golang.org/x/net v0.0.0-20211112202133-69e39bad7dc2 h1:CIJ76btIcR3eFI5EgSo6k1qKw9KJexJuRLI9G7Hp5wE= -golang.org/x/net v0.0.0-20211112202133-69e39bad7dc2/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= golang.org/x/net v0.0.0-20220127200216-cd36cc0744dd/go.mod h1:CfG3xpIq0wQ8r1q4Su4UZFWDARRcnwPjda9FqA0JpMk= golang.org/x/net v0.0.0-20220225172249-27dd8689420f/go.mod h1:CfG3xpIq0wQ8r1q4Su4UZFWDARRcnwPjda9FqA0JpMk= golang.org/x/net v0.0.0-20220325170049-de3da57026de/go.mod h1:CfG3xpIq0wQ8r1q4Su4UZFWDARRcnwPjda9FqA0JpMk= golang.org/x/net v0.0.0-20220412020605-290c469a71a5/go.mod h1:CfG3xpIq0wQ8r1q4Su4UZFWDARRcnwPjda9FqA0JpMk= golang.org/x/net v0.0.0-20220425223048-2871e0cb64e4/go.mod h1:CfG3xpIq0wQ8r1q4Su4UZFWDARRcnwPjda9FqA0JpMk= -golang.org/x/net v0.0.0-20220520000938-2e3eb7b945c2/go.mod h1:CfG3xpIq0wQ8r1q4Su4UZFWDARRcnwPjda9FqA0JpMk= golang.org/x/net v0.0.0-20220607020251-c690dde0001d/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c= golang.org/x/net v0.0.0-20220617184016-355a448f1bc9/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c= golang.org/x/net v0.0.0-20220624214902-1bab6f366d9e/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c= -golang.org/x/net v0.0.0-20220722155237-a158d28d115b/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c= golang.org/x/net v0.0.0-20220909164309-bea034e7d591 h1:D0B/7al0LLrVC8aWF4+oxpv/m8bc7ViFfVS8/gXGdqI= golang.org/x/net v0.0.0-20220909164309-bea034e7d591/go.mod h1:YDH+HFinaLZZlnHAfSS6ZXJJ9M9t4Dl22yv3iI2vPwk= golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= @@ -1100,7 +693,6 @@ golang.org/x/oauth2 v0.0.0-20210313182246-cd4f82c27b84/go.mod h1:KelEdhl1UZF7XfJ golang.org/x/oauth2 v0.0.0-20210514164344-f6687ab2804c/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= golang.org/x/oauth2 v0.0.0-20210628180205-a41e5a781914/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= golang.org/x/oauth2 v0.0.0-20210805134026-6f1e6394065a/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= -golang.org/x/oauth2 v0.0.0-20210819190943-2bc19b11175f h1:Qmd2pbz05z7z6lm0DrgQVVPuBm92jqujBKMHMOlOQEw= golang.org/x/oauth2 v0.0.0-20210819190943-2bc19b11175f/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= golang.org/x/oauth2 v0.0.0-20211104180415-d3ed0bb246c8/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= golang.org/x/oauth2 v0.0.0-20220223155221-ee480838109b/go.mod h1:DAh4E804XQdzx2j+YRIaUnCqCV2RuMz24cGBJ5QYIrc= @@ -1120,9 +712,7 @@ golang.org/x/sync v0.0.0-20200317015054-43a5402ce75a/go.mod h1:RxMgew5VJxzue5/jJ golang.org/x/sync v0.0.0-20200625203802-6e8e738ad208/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20201207232520-09787c993a3a/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.0.0-20210220032951-036812b2e83c h1:5KslGYwFpkhGh+Q16bwMP3cOontH8FOep7tGV86Y7SQ= golang.org/x/sync v0.0.0-20210220032951-036812b2e83c/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.0.0-20220513210516-0976fa681c29/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20220601150217-0de741cfad7f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20220722155255-886fb9371eb4 h1:uVc8UZUe6tr40fFVnUP5Oj+veunVezqYl9z7DYw9xzw= golang.org/x/sync v0.0.0-20220722155255-886fb9371eb4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= @@ -1130,7 +720,6 @@ golang.org/x/sys v0.0.0-20180823144017-11551d06cbcc/go.mod h1:STP8DvDyc/dI5b8T5h golang.org/x/sys v0.0.0-20180830151530-49385e6e1522/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20180905080454-ebe1bf3edb33/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20180909124046-d0be0721c37e/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= -golang.org/x/sys v0.0.0-20181026203630-95b1ffbd15a5/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20181116152217-5ac8a444bdc5/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190129075346-302c3dd5f1cc/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= @@ -1153,7 +742,6 @@ golang.org/x/sys v0.0.0-20191008105621-543471e840be/go.mod h1:h1NjWce9XRLGQEsW7w golang.org/x/sys v0.0.0-20191026070338-33540a1f6037/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20191204072324-ce4227a45e2e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20191228213918-04cbcbbfeed8/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200106162015-b016eb3dc98e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200113162924-86b910548bc1/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200116001909-b77594299b42/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200122134326-e047566fdf82/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= @@ -1169,8 +757,6 @@ golang.org/x/sys v0.0.0-20200511232937-7e40ca221e25/go.mod h1:h1NjWce9XRLGQEsW7w golang.org/x/sys v0.0.0-20200515095857-1151b9dac4a9/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200523222454-059865788121/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200602225109-6fdc65e7d980/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200615200032-f1bc736245b1/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200625212154-ddb9806d33ae/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200803210538-64077c9b5642/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200905004654-be1d3432aa8f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= @@ -1178,9 +764,7 @@ golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7w golang.org/x/sys v0.0.0-20201201145000-ef89a241ccb3/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210104204734-6f8348627aad/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210119212857-b64e53b001e4/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20210124154548-22da62e12c0c/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210220050731-9a76102bfb43/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20210225134936-a50acf3fe073/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210303074136-134d130e1a04/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210305230114-8fe3ee5dd75b/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210315160823-c6e025ad8005/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= @@ -1190,7 +774,6 @@ golang.org/x/sys v0.0.0-20210423082822-04245dca01da/go.mod h1:h1NjWce9XRLGQEsW7w golang.org/x/sys v0.0.0-20210423185535-09eb48e85fd7/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210510120138-977fb7262007/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20210514084401-e8d321eab015/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20210603081109-ebe580a85c40/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20210603125802-9665404d3644/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20210615035016-665e8c7367d1/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20210616094352-59db8d763f22/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= @@ -1198,13 +781,9 @@ golang.org/x/sys v0.0.0-20210630005230-0f9fa26af87c/go.mod h1:oPkhp1MJrh7nUepCBc golang.org/x/sys v0.0.0-20210806184541-e5e7981a1069/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20210823070655-63515b42dcdf/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20210908233432-aa78b53d3365/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20211019181941-9d821ace8654 h1:id054HUawV2/6IGm2IV8KZQjqtwAOo2CYlOToYqa0d0= -golang.org/x/sys v0.0.0-20211019181941-9d821ace8654/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20211105183446-c75c47738b0c/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20211124211545-fe61309f8881/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20211210111614-af8b64212486/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20211216021012-1d35b9e2eb4e/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20220114195835-da31bd327af9/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220128215802-99c3d69c2c27/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220209214540-3681064d5158/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220227234510-4e6760a101f9/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= @@ -1215,15 +794,10 @@ golang.org/x/sys v0.0.0-20220503163025-988cb79eb6c6/go.mod h1:oPkhp1MJrh7nUepCBc golang.org/x/sys v0.0.0-20220520151302-bc2c85ada10a/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220610221304-9f5ed59c137d/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220615213510-4f61da869c0c/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20220702020025-31831981b65f/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20220715151400-c0bba94af5f8/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20220722155257-8c9f86f7a55f/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220728004956-3c1f35247d10/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220811171246-fbc7d0a398ab h1:2QkjZIsXupsJbJIdSjjUOgWK3aEtzyuh2mPt3l/CkeU= golang.org/x/sys v0.0.0-20220811171246-fbc7d0a398ab/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= -golang.org/x/term v0.0.0-20210615171337-6886f2dfbf5b h1:9zKuko04nR4gjZ4+DNjHqRlAJqbJETHwiNKDqTfOjfE= -golang.org/x/term v0.0.0-20210615171337-6886f2dfbf5b/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= golang.org/x/term v0.0.0-20210927222741-03fcf44c2211 h1:JGgROgKl9N8DuW20oFS5gxc+lE67/N3FcwmBPMe7ArY= golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= golang.org/x/text v0.0.0-20170915032832-14c0d48ead0c/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= @@ -1243,18 +817,13 @@ golang.org/x/time v0.0.0-20200416051211-89c76fbcd5d1/go.mod h1:tRJNPiyCQ0inRvYxb golang.org/x/time v0.0.0-20210723032227-1f47c861a9ac h1:7zkz7BUtwNFFqcowJ+RIgu2MaV/MapERkDIy+mwPyjs= golang.org/x/time v0.0.0-20210723032227-1f47c861a9ac/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/tools v0.0.0-20180221164845-07fd8470d635/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= -golang.org/x/tools v0.0.0-20180525024113-a5b4c53f6e8b/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20181030221726-6c7e314b6563/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20190114222345-bf090417da8b/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20190226205152-f727befe758c/go.mod h1:9Yl7xja0Znq3iFh3HoIrodX9oNMXvdceNzlUR8zjMvY= -golang.org/x/tools v0.0.0-20190307163923-6a08e3108db3/go.mod h1:25r3+/G6/xytQM8iWZKq3Hn0kr0rgFKPUNVEL/dr3z4= golang.org/x/tools v0.0.0-20190311212946-11955173bddd/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= -golang.org/x/tools v0.0.0-20190311215038-5c2858a9cfe5/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= golang.org/x/tools v0.0.0-20190312151545-0bb0c0a6e846/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= golang.org/x/tools v0.0.0-20190312170243-e65039ee4138/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= -golang.org/x/tools v0.0.0-20190321232350-e250d351ecad/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= -golang.org/x/tools v0.0.0-20190322203728-c1a832b0ad89/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= golang.org/x/tools v0.0.0-20190425150028-36563e24a262/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q= golang.org/x/tools v0.0.0-20190506145303-2d16b83fe98c/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q= golang.org/x/tools v0.0.0-20190524140312-2c0ae7006135/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q= @@ -1264,12 +833,9 @@ golang.org/x/tools v0.0.0-20190624222133-a101b041ded4/go.mod h1:/rFqwRUd4F7ZHNgw golang.org/x/tools v0.0.0-20190628153133-6cdbf07be9d0/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc= golang.org/x/tools v0.0.0-20190816200558-6889da9d5479/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20190907020128-2ca718005c18/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= -golang.org/x/tools v0.0.0-20190910044552-dd2b5c81c578/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20190911174233-4f2ddba30aff/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= -golang.org/x/tools v0.0.0-20190916130336-e45ffcd953cc/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20191012152004-8de300cfc20a/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20191029041327-9cc4af7d6b2c/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= -golang.org/x/tools v0.0.0-20191108193012-7d206e10da11/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20191113191852-77e3bb0ad9e7/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20191115202509-3a792d9c32b2/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= @@ -1278,7 +844,6 @@ golang.org/x/tools v0.0.0-20191130070609-6e064ea0cf2d/go.mod h1:b+2E5dAYhXwXZwtn golang.org/x/tools v0.0.0-20191216173652-a0e659d51361/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= golang.org/x/tools v0.0.0-20191227053925-7b8e75db28f4/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= golang.org/x/tools v0.0.0-20200117161641-43d50277825c/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= -golang.org/x/tools v0.0.0-20200117220505-0cba7a3a9ee9/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= golang.org/x/tools v0.0.0-20200122220014-bf1340f18c4a/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= golang.org/x/tools v0.0.0-20200130002326-2f3ba24bd6e7/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= golang.org/x/tools v0.0.0-20200204074204-1cc6d1ef6c74/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= @@ -1288,52 +853,28 @@ golang.org/x/tools v0.0.0-20200224181240-023911ca70b2/go.mod h1:TB2adYChydJhpapK golang.org/x/tools v0.0.0-20200227222343-706bc42d1f0d/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= golang.org/x/tools v0.0.0-20200304193943-95d2e580d8eb/go.mod h1:o4KQGtdN14AW+yjsvvwRTJJuXz8XRtIHtEnmAXLyFUw= golang.org/x/tools v0.0.0-20200312045724-11d5b4c81c7d/go.mod h1:o4KQGtdN14AW+yjsvvwRTJJuXz8XRtIHtEnmAXLyFUw= -golang.org/x/tools v0.0.0-20200324003944-a576cf524670/go.mod h1:Sl4aGygMT6LrqrWclx+PTx3U+LnKx/seiNR+3G19Ar8= -golang.org/x/tools v0.0.0-20200329025819-fd4102a86c65/go.mod h1:Sl4aGygMT6LrqrWclx+PTx3U+LnKx/seiNR+3G19Ar8= golang.org/x/tools v0.0.0-20200331025713-a30bf2db82d4/go.mod h1:Sl4aGygMT6LrqrWclx+PTx3U+LnKx/seiNR+3G19Ar8= -golang.org/x/tools v0.0.0-20200414032229-332987a829c3/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= golang.org/x/tools v0.0.0-20200501065659-ab2804fb9c9d/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= golang.org/x/tools v0.0.0-20200512131952-2bc93b1c0c88/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= golang.org/x/tools v0.0.0-20200515010526-7d3b6ebf133d/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= golang.org/x/tools v0.0.0-20200618134242-20370b0cb4b2/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= -golang.org/x/tools v0.0.0-20200622203043-20e05c1c8ffa/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= -golang.org/x/tools v0.0.0-20200624225443-88f3c62a19ff/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= -golang.org/x/tools v0.0.0-20200625211823-6506e20df31f/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= -golang.org/x/tools v0.0.0-20200724022722-7017fd6b1305/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA= golang.org/x/tools v0.0.0-20200729194436-6467de6f59a7/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA= golang.org/x/tools v0.0.0-20200804011535-6c149bb5ef0d/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA= -golang.org/x/tools v0.0.0-20200812195022-5ae4c3c160a0/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA= -golang.org/x/tools v0.0.0-20200820010801-b793a1359eac/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA= golang.org/x/tools v0.0.0-20200825202427-b303f430e36d/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA= -golang.org/x/tools v0.0.0-20200831203904-5a2aa26beb65/go.mod h1:Cj7w3i3Rnn0Xh82ur9kSqwfTHTeVxaDqrfMjpcNT6bE= golang.org/x/tools v0.0.0-20200904185747-39188db58858/go.mod h1:Cj7w3i3Rnn0Xh82ur9kSqwfTHTeVxaDqrfMjpcNT6bE= -golang.org/x/tools v0.0.0-20201001104356-43ebab892c4c/go.mod h1:z6u4i615ZeAfBE4XtMziQW1fSVJXACjjbWkB/mvPzlU= -golang.org/x/tools v0.0.0-20201002184944-ecd9fd270d5d/go.mod h1:z6u4i615ZeAfBE4XtMziQW1fSVJXACjjbWkB/mvPzlU= -golang.org/x/tools v0.0.0-20201023174141-c8cfbd0f21e6/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= golang.org/x/tools v0.0.0-20201110124207-079ba7bd75cd/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= golang.org/x/tools v0.0.0-20201201161351-ac6f37ff4c2a/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= golang.org/x/tools v0.0.0-20201208233053-a543418bbed2/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= -golang.org/x/tools v0.0.0-20201230224404-63754364767c/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= golang.org/x/tools v0.0.0-20210105154028-b0ab187a4818/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= -golang.org/x/tools v0.0.0-20210108195828-e2f9c7f1fc8e/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= golang.org/x/tools v0.1.0/go.mod h1:xkSsbof2nBLbhDlRMhhhyNLN/zl3eTqcnHD5viDpcZ0= -golang.org/x/tools v0.1.1-0.20210205202024-ef80cdb6ec6d/go.mod h1:9bzcO0MWcOuT0tm1iBGzDVPshzfwoVvREIui8C+MHqU= -golang.org/x/tools v0.1.1-0.20210302220138-2ac05c832e1a/go.mod h1:9bzcO0MWcOuT0tm1iBGzDVPshzfwoVvREIui8C+MHqU= golang.org/x/tools v0.1.1/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= golang.org/x/tools v0.1.2/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= golang.org/x/tools v0.1.3/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= golang.org/x/tools v0.1.4/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= golang.org/x/tools v0.1.5/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= -golang.org/x/tools v0.1.9-0.20211228192929-ee1ca4ffc4da/go.mod h1:nABZi5QlRsZVlzPpHl034qft6wpY4eDcsTt5AaioBiU= -golang.org/x/tools v0.1.9/go.mod h1:nABZi5QlRsZVlzPpHl034qft6wpY4eDcsTt5AaioBiU= -golang.org/x/tools v0.1.10/go.mod h1:Uh6Zz+xoGYZom868N8YTex3t7RhtHDBrE8Gzo9bV56E= -golang.org/x/tools v0.1.11/go.mod h1:SgwaegtQh8clINPpECJMqnxLv9I09HLqnW3RMqW0CA4= -golang.org/x/tools v0.1.12 h1:VveCTK38A2rkS8ZqFY25HIDFscX5X9OoEhJd3quQmXU= -golang.org/x/tools v0.1.12/go.mod h1:hNGJHUnrk76NpqgfD5Aqm5Crs+Hm0VOH/i9J2+nxYbc= golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= -golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1 h1:go1bK/D/BFZV2I8cIQd1NKEZ+0owSTG1fDTci4IqFcE= golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20220411194840-2f41105eb62f/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20220517211312-f3a8303e98df/go.mod h1:K8+ghG5WaK9qNqU5K3HdILfMLy1f3aNYFI/wnl100a8= @@ -1367,7 +908,6 @@ google.golang.org/api v0.50.0/go.mod h1:4bNT5pAuq5ji4SRZm+5QIkjny9JAyVD/3gaSihNe google.golang.org/api v0.51.0/go.mod h1:t4HdrdoNgyN5cbEfm7Lum0lcLDLiise1F8qDKX00sOU= google.golang.org/api v0.54.0/go.mod h1:7C4bFFOvVDGXjfDTAsgGwDgAxRDeQ4X8NvUedIt6z3k= google.golang.org/api v0.55.0/go.mod h1:38yMfeP1kfjsl8isn0tliTjIb1rJXcQi4UXlbqivdVE= -google.golang.org/api v0.56.0 h1:08F9XVYTLOGeSQb3xI9C0gXMuQanhdGed0cWFhDozbI= google.golang.org/api v0.56.0/go.mod h1:38yMfeP1kfjsl8isn0tliTjIb1rJXcQi4UXlbqivdVE= google.golang.org/api v0.57.0/go.mod h1:dVPlbZyBo2/OjBpmvNdpn2GRm6rPy75jyU7bmhdrMgI= google.golang.org/api v0.61.0/go.mod h1:xQRti5UdCmoCEqFxcz93fTl338AVqDgyaDRuOZ3hg9I= @@ -1379,7 +919,6 @@ google.golang.org/api v0.74.0/go.mod h1:ZpfMZOVRMywNyvJFeqL9HRWBgAuRfSjJFpe9QtRR google.golang.org/api v0.75.0/go.mod h1:pU9QmyHLnzlpar1Mjt4IbapUCy8J+6HD6GeELN69ljA= google.golang.org/api v0.78.0/go.mod h1:1Sg78yoMLOhlQTeF+ARBoytAcH1NNyyl390YMy6rKmw= google.golang.org/api v0.80.0/go.mod h1:xY3nI94gbvBrE0J6NHXhxOmW97HG7Khjkku6AFB3Hyg= -google.golang.org/api v0.81.0/go.mod h1:FA6Mb/bZxj706H2j+j2d6mHEEaHBmbbWnkfvmorOCko= google.golang.org/api v0.84.0/go.mod h1:NTsGnUFJMYROtiquksZHBWtHfeMC7iYthki7Eq3pa8o= google.golang.org/api v0.85.0/go.mod h1:AqZf8Ep9uZ2pyTvgL+x0D3Zt0eoT9b5E8fmzfu6FO2g= google.golang.org/api v0.97.0 h1:x/vEL1XDF/2V4xzdNgFPaKHluRESo2aTsL7QzHnBtGQ= @@ -1427,9 +966,7 @@ google.golang.org/genproto v0.0.0-20201109203340-2640f1f9cdfb/go.mod h1:FWY/as6D google.golang.org/genproto v0.0.0-20201201144952-b05cb90ed32e/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= google.golang.org/genproto v0.0.0-20201210142538-e3217bee35cc/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= google.golang.org/genproto v0.0.0-20201214200347-8c77b98c765d/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= -google.golang.org/genproto v0.0.0-20210108203827-ffc7fda8c3d7/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= google.golang.org/genproto v0.0.0-20210222152913-aa3ee6e6a81c/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= -google.golang.org/genproto v0.0.0-20210226172003-ab064af71705/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= google.golang.org/genproto v0.0.0-20210303154014-9728d6b83eeb/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= google.golang.org/genproto v0.0.0-20210310155132-4ce2db91004e/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= google.golang.org/genproto v0.0.0-20210319143718-93e7006c17a6/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= @@ -1446,9 +983,7 @@ google.golang.org/genproto v0.0.0-20210728212813-7823e685a01f/go.mod h1:ob2IJxKr google.golang.org/genproto v0.0.0-20210805201207-89edb61ffb67/go.mod h1:ob2IJxKrgPT52GcgX759i1sleT07tiKowYBGbczaW48= google.golang.org/genproto v0.0.0-20210813162853-db860fec028c/go.mod h1:cFeNkxwySK631ADgubI+/XFU/xp8FD5KIVV4rj8UC5w= google.golang.org/genproto v0.0.0-20210821163610-241b8fcbd6c8/go.mod h1:eFjDcFEctNawg4eG61bRv87N7iHBWyVhJu7u1kqDUXY= -google.golang.org/genproto v0.0.0-20210825212027-de86158e7fda/go.mod h1:eFjDcFEctNawg4eG61bRv87N7iHBWyVhJu7u1kqDUXY= google.golang.org/genproto v0.0.0-20210828152312-66f60bf46e71/go.mod h1:eFjDcFEctNawg4eG61bRv87N7iHBWyVhJu7u1kqDUXY= -google.golang.org/genproto v0.0.0-20210831024726-fe130286e0e2 h1:NHN4wOCScVzKhPenJ2dt+BTs3X/XkBVI/Rh4iDt55T8= google.golang.org/genproto v0.0.0-20210831024726-fe130286e0e2/go.mod h1:eFjDcFEctNawg4eG61bRv87N7iHBWyVhJu7u1kqDUXY= google.golang.org/genproto v0.0.0-20210903162649-d08c68adba83/go.mod h1:eFjDcFEctNawg4eG61bRv87N7iHBWyVhJu7u1kqDUXY= google.golang.org/genproto v0.0.0-20210909211513-a8c4777a87af/go.mod h1:eFjDcFEctNawg4eG61bRv87N7iHBWyVhJu7u1kqDUXY= @@ -1471,7 +1006,6 @@ google.golang.org/genproto v0.0.0-20220421151946-72621c1f0bd3/go.mod h1:8w6bsBMX google.golang.org/genproto v0.0.0-20220429170224-98d788798c3e/go.mod h1:8w6bsBMX6yCPbAVTeqQHvzxW0EIFigd5lZyahWgyfDo= google.golang.org/genproto v0.0.0-20220505152158-f39f71e6c8f3/go.mod h1:RAyBrSAP7Fh3Nc84ghnVLDPuV51xc9agzmm4Ph6i0Q4= google.golang.org/genproto v0.0.0-20220518221133-4f43b3371335/go.mod h1:RAyBrSAP7Fh3Nc84ghnVLDPuV51xc9agzmm4Ph6i0Q4= -google.golang.org/genproto v0.0.0-20220519153652-3a47de7e79bd/go.mod h1:RAyBrSAP7Fh3Nc84ghnVLDPuV51xc9agzmm4Ph6i0Q4= google.golang.org/genproto v0.0.0-20220523171625-347a074981d8/go.mod h1:RAyBrSAP7Fh3Nc84ghnVLDPuV51xc9agzmm4Ph6i0Q4= google.golang.org/genproto v0.0.0-20220608133413-ed9918b62aac/go.mod h1:KEWEmljWE5zPzLBa/oHl6DaEt9LmfH6WtH1OHIvleBA= google.golang.org/genproto v0.0.0-20220616135557-88e70c0c3a90/go.mod h1:KEWEmljWE5zPzLBa/oHl6DaEt9LmfH6WtH1OHIvleBA= @@ -1506,7 +1040,6 @@ google.golang.org/grpc v1.37.1/go.mod h1:NREThFqKR1f3iQ6oBuvc5LadQuXVGo9rkm5ZGrQ google.golang.org/grpc v1.38.0/go.mod h1:NREThFqKR1f3iQ6oBuvc5LadQuXVGo9rkm5ZGrQdJfM= google.golang.org/grpc v1.39.0/go.mod h1:PImNr+rS9TWYb2O4/emRugxiyHZ5JyHW5F+RPnDzfrE= google.golang.org/grpc v1.39.1/go.mod h1:PImNr+rS9TWYb2O4/emRugxiyHZ5JyHW5F+RPnDzfrE= -google.golang.org/grpc v1.40.0 h1:AGJ0Ih4mHjSeibYkFGh1dD9KJ/eOtZ93I6hoHhukQ5Q= google.golang.org/grpc v1.40.0/go.mod h1:ogyxbiOoUXAkP+4+xa6PZSE9DZgIHtSpzjDTB9KAK34= google.golang.org/grpc v1.40.1/go.mod h1:ogyxbiOoUXAkP+4+xa6PZSE9DZgIHtSpzjDTB9KAK34= google.golang.org/grpc v1.44.0/go.mod h1:k+4IHHFw41K8+bbowsex27ge2rCb65oeWqe4jJ590SU= @@ -1529,9 +1062,7 @@ google.golang.org/protobuf v1.24.0/go.mod h1:r/3tXBNzIEhYS9I1OUVjXDlt8tc493IdKGj google.golang.org/protobuf v1.25.0/go.mod h1:9JNX74DMeImyA3h4bdi1ymwjUzf21/xIlbajtzgsN7c= google.golang.org/protobuf v1.26.0-rc.1/go.mod h1:jlhhOSvTdKEhbULTjvd4ARK9grFBp09yW+WbY/TyQbw= google.golang.org/protobuf v1.26.0/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc= -google.golang.org/protobuf v1.27.1 h1:SnqbnDw1V7RiZcXPx5MEeqPv2s79L9i7BJUlG/+RurQ= google.golang.org/protobuf v1.27.1/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc= -google.golang.org/protobuf v1.28.0 h1:w43yiav+6bVFTBQFZX0r7ipe9JQ1QsbMgHwbBziscLw= google.golang.org/protobuf v1.28.0/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I= google.golang.org/protobuf v1.28.1 h1:d0NfwRgPtno5B1Wa6L2DAG+KivqkdutMf1UhdNx175w= google.golang.org/protobuf v1.28.1/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I= @@ -1539,14 +1070,12 @@ gopkg.in/airbrake/gobrake.v2 v2.0.9/go.mod h1:/h5ZAUhDkGaJfjzjKLSjv6zCL6O0LLBxU4 gopkg.in/alecthomas/kingpin.v2 v2.2.6/go.mod h1:FMv+mEhP44yOT+4EoQTLFTRgOQ1FBLkstjWtayDeSgw= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= -gopkg.in/check.v1 v1.0.0-20190902080502-41f04d3bba15 h1:YR8cESwS4TdDjEe65xsg0ogRM/Nc3DYOhEAlW+xobZo= gopkg.in/check.v1 v1.0.0-20190902080502-41f04d3bba15/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= +gopkg.in/check.v1 v1.0.0-20200227125254-8fa46927fb4f h1:BLraFXnmrev5lT+xlilqcH8XK9/i0At2xKjWk4p6zsU= gopkg.in/check.v1 v1.0.0-20200227125254-8fa46927fb4f/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/errgo.v2 v2.1.0/go.mod h1:hNsd1EY+bozCKY1Ytp96fpM3vjJbqLJn88ws8XvfDNI= gopkg.in/fsnotify.v1 v1.4.7/go.mod h1:Tz8NjZHkW78fSQdbUxIjBTcgA1z1m8ZHf0WmKUhAMys= gopkg.in/gemnasium/logrus-airbrake-hook.v2 v2.1.2/go.mod h1:Xk6kEKp8OKb+X14hQBKWaSkCsqBpgog8nAV2xsGOxlo= -gopkg.in/ini.v1 v1.66.6 h1:LATuAqN/shcYAOkv3wl2L4rkaKqkcgTBQjOyYDvcPKI= -gopkg.in/ini.v1 v1.66.6/go.mod h1:pNLf8WUiyNEtQjuu5G5vTm06TEv9tsIgeAvK8hOrP4k= gopkg.in/square/go-jose.v2 v2.3.1/go.mod h1:M9dMgbHiYLoDGQrXy7OpJDJWiKiU//h+vD76mk0e1AI= gopkg.in/square/go-jose.v2 v2.5.1/go.mod h1:M9dMgbHiYLoDGQrXy7OpJDJWiKiU//h+vD76mk0e1AI= gopkg.in/square/go-jose.v2 v2.6.0 h1:NGk74WTnPKBNUhNzQX7PYcTLUjoq7mzKk2OKbvwk2iI= @@ -1557,15 +1086,10 @@ gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= gopkg.in/yaml.v2 v2.2.3/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= gopkg.in/yaml.v2 v2.2.4/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= gopkg.in/yaml.v2 v2.2.5/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= -gopkg.in/yaml.v2 v2.2.8 h1:obN1ZagJSUGI0Ek/LBmuj4SNLPfIny3KsKFopxRdj10= gopkg.in/yaml.v2 v2.2.8/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= -gopkg.in/yaml.v2 v2.3.0 h1:clyUAQHOM3G0M3f5vQj7LuJrETvjVot3Z5el9nffUtU= -gopkg.in/yaml.v2 v2.3.0/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= gopkg.in/yaml.v2 v2.4.0 h1:D8xgwECY7CYvx+Y2n4sBz93Jn9JRvxdiyyo8CTfuKaY= gopkg.in/yaml.v2 v2.4.0/go.mod h1:RDklbk79AGWmwhnvt/jBztapEOGDOx6ZbXqjP6csGnQ= gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= -gopkg.in/yaml.v3 v3.0.0-20210107192922-496545a6307b h1:h8qDotaEPuJATrMmW04NCwg7v22aHH28wwpauUhK9Oo= -gopkg.in/yaml.v3 v3.0.0-20210107192922-496545a6307b/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA= gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= gotest.tools v2.2.0+incompatible/go.mod h1:DsYFclhRJ6vuDpmuTbkuFWG+y2sxOXAzmJt81HFBacw= @@ -1577,16 +1101,6 @@ honnef.co/go/tools v0.0.0-20190523083050-ea95bdfd59fc/go.mod h1:rf3lG4BRIbNafJWh honnef.co/go/tools v0.0.1-2019.2.3/go.mod h1:a3bituU0lyd329TUQxRnasdCoJDkEUEAqEt0JzvZhAg= honnef.co/go/tools v0.0.1-2020.1.3/go.mod h1:X/FiERA/W4tHapMX5mGpAtMSVEeEUOyHaw9vFzvIQ3k= honnef.co/go/tools v0.0.1-2020.1.4/go.mod h1:X/FiERA/W4tHapMX5mGpAtMSVEeEUOyHaw9vFzvIQ3k= -honnef.co/go/tools v0.3.3 h1:oDx7VAwstgpYpb3wv0oxiZlxY+foCpRAwY7Vk6XpAgA= -honnef.co/go/tools v0.3.3/go.mod h1:jzwdWgg7Jdq75wlfblQxO4neNaFFSvgc1tD5Wv8U0Yw= -mvdan.cc/gofumpt v0.3.1 h1:avhhrOmv0IuvQVK7fvwV91oFSGAk5/6Po8GXTzICeu8= -mvdan.cc/gofumpt v0.3.1/go.mod h1:w3ymliuxvzVx8DAutBnVyDqYb1Niy/yCJt/lk821YCE= -mvdan.cc/interfacer v0.0.0-20180901003855-c20040233aed h1:WX1yoOaKQfddO/mLzdV4wptyWgoH/6hwLs7QHTixo0I= -mvdan.cc/interfacer v0.0.0-20180901003855-c20040233aed/go.mod h1:Xkxe497xwlCKkIaQYRfC7CSLworTXY9RMqwhhCm+8Nc= -mvdan.cc/lint v0.0.0-20170908181259-adc824a0674b h1:DxJ5nJdkhDlLok9K6qO+5290kphDJbHOQO1DFFFTeBo= -mvdan.cc/lint v0.0.0-20170908181259-adc824a0674b/go.mod h1:2odslEg/xrtNQqCYg2/jCoyKnw3vv5biOc3JnIcYfL4= -mvdan.cc/unparam v0.0.0-20220706161116-678bad134442 h1:seuXWbRB1qPrS3NQnHmFKLJLtskWyueeIzmLXghMGgk= -mvdan.cc/unparam v0.0.0-20220706161116-678bad134442/go.mod h1:F/Cxw/6mVrNKqrR2YjFf5CaW0Bw4RL8RfbEf4GRggJk= rsc.io/binaryregexp v0.2.0/go.mod h1:qTv7/COck+e2FymRvadv62gMdZztPaShugOCi3I+8D8= rsc.io/quote/v3 v3.1.0/go.mod h1:yEA65RcK8LyAZtP9Kv3t0HmxON59tX3rD+tICJqUlj0= rsc.io/sampler v1.3.0/go.mod h1:T1hPZKmBbMNahiBKFy5HrXp6adAjACjK9JXDnKaTXpA=