Skip to content

Automated cherry pick of #1092: Separate user errors from internal errors #1219

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
10 changes: 5 additions & 5 deletions cmd/gce-pd-csi-driver/main.go
Original file line number Diff line number Diff line change
Expand Up @@ -102,7 +102,7 @@ func handle() {
}
extraVolumeLabels, err := common.ConvertLabelsStringToMap(*extraVolumeLabelsStr)
if err != nil {
klog.Fatalf("Bad extra volume labels: %w", err)
klog.Fatalf("Bad extra volume labels: %v", err.Error())
}

gceDriver := driver.GetGCEDriver()
Expand All @@ -119,7 +119,7 @@ func handle() {
if *runControllerService {
cloudProvider, err := gce.CreateCloudProvider(ctx, version, *cloudConfigFilePath)
if err != nil {
klog.Fatalf("Failed to get cloud provider: %w", err)
klog.Fatalf("Failed to get cloud provider: %v", err.Error())
}
controllerServer = driver.NewControllerServer(gceDriver, cloudProvider)
} else if *cloudConfigFilePath != "" {
Expand All @@ -131,20 +131,20 @@ func handle() {
if *runNodeService {
mounter, err := mountmanager.NewSafeMounter()
if err != nil {
klog.Fatalf("Failed to get safe mounter: %w", err)
klog.Fatalf("Failed to get safe mounter: %v", err.Error())
}
deviceUtils := mountmanager.NewDeviceUtils()
statter := mountmanager.NewStatter(mounter)
meta, err := metadataservice.NewMetadataService()
if err != nil {
klog.Fatalf("Failed to set up metadata service: %w", err)
klog.Fatalf("Failed to set up metadata service: %v", err.Error())
}
nodeServer = driver.NewNodeServer(gceDriver, mounter, deviceUtils, meta, statter)
}

err = gceDriver.SetupGCEDriver(driverName, version, extraVolumeLabels, identityServer, controllerServer, nodeServer)
if err != nil {
klog.Fatalf("Failed to initialize GCE CSI Driver: %w", err)
klog.Fatalf("Failed to initialize GCE CSI Driver: %v", err.Error())
}

gce.AttachDiskBackoff.Duration = *attachDiskBackoffDuration
Expand Down
2 changes: 1 addition & 1 deletion pkg/gce-cloud-provider/compute/fake-gce.go
Original file line number Diff line number Diff line change
Expand Up @@ -103,7 +103,7 @@ func (cloud *FakeCloudProvider) RepairUnderspecifiedVolumeKey(ctx context.Contex
}
r, err := common.GetRegionFromZones([]string{cloud.zone})
if err != nil {
return "", nil, fmt.Errorf("failed to get region from zones: %v", err)
return "", nil, fmt.Errorf("failed to get region from zones: %w", err)
}
volumeKey.Region = r
return project, volumeKey, nil
Expand Down
38 changes: 19 additions & 19 deletions pkg/gce-cloud-provider/compute/gce-compute.go
Original file line number Diff line number Diff line change
Expand Up @@ -115,7 +115,7 @@ func (cloud *CloudProvider) GetDefaultZone() string {
func (cloud *CloudProvider) ListDisks(ctx context.Context) ([]*computev1.Disk, string, error) {
region, err := common.GetRegionFromZones([]string{cloud.zone})
if err != nil {
return nil, "", fmt.Errorf("failed to get region from zones: %v", err)
return nil, "", fmt.Errorf("failed to get region from zones: %w", err)
}
zones, err := cloud.ListZones(ctx, region)
if err != nil {
Expand Down Expand Up @@ -162,7 +162,7 @@ func (cloud *CloudProvider) RepairUnderspecifiedVolumeKey(ctx context.Context, p
}
region, err := common.GetRegionFromZones([]string{cloud.zone})
if err != nil {
return "", nil, fmt.Errorf("failed to get region from zones: %v", err)
return "", nil, fmt.Errorf("failed to get region from zones: %w", err)
}
switch volumeKey.Type() {
case meta.Zonal:
Expand Down Expand Up @@ -216,7 +216,7 @@ func (cloud *CloudProvider) ListZones(ctx context.Context, region string) ([]str
zones := []string{}
zoneList, err := cloud.service.Zones.List(cloud.project).Filter(fmt.Sprintf("region eq .*%s$", region)).Do()
if err != nil {
return nil, fmt.Errorf("failed to list zones in region %s: %v", region, err)
return nil, fmt.Errorf("failed to list zones in region %s: %w", region, err)
}
for _, zone := range zoneList.Items {
zones = append(zones, zone.Name)
Expand Down Expand Up @@ -493,7 +493,7 @@ func (cloud *CloudProvider) insertRegionalDisk(
klog.Warningf("GCE PD %s already exists, reusing", volKey.Name)
return nil
}
return status.Error(codes.Internal, fmt.Sprintf("unknown Insert disk error: %v", err))
return status.Error(codes.Internal, fmt.Sprintf("unknown Insert disk error: %v", err.Error()))
}
klog.V(5).Infof("InsertDisk operation %s for disk %s", opName, diskToCreate.Name)

Expand All @@ -514,7 +514,7 @@ func (cloud *CloudProvider) insertRegionalDisk(
klog.Warningf("GCE PD %s already exists after wait, reusing", volKey.Name)
return nil
}
return fmt.Errorf("unknown Insert disk operation error: %v", err)
return fmt.Errorf("unknown Insert disk operation error: %w", err)
}
return nil
}
Expand Down Expand Up @@ -604,7 +604,7 @@ func (cloud *CloudProvider) insertZonalDisk(
klog.Warningf("GCE PD %s already exists, reusing", volKey.Name)
return nil
}
return fmt.Errorf("unknown Insert disk error: %v", err)
return fmt.Errorf("unknown Insert disk error: %w", err)
}
klog.V(5).Infof("InsertDisk operation %s for disk %s", opName, diskToCreate.Name)

Expand All @@ -626,7 +626,7 @@ func (cloud *CloudProvider) insertZonalDisk(
klog.Warningf("GCE PD %s already exists after wait, reusing", volKey.Name)
return nil
}
return fmt.Errorf("unknown Insert disk operation error: %v", err)
return fmt.Errorf("unknown Insert disk operation error: %w", err)
}
return nil
}
Expand Down Expand Up @@ -685,7 +685,7 @@ func (cloud *CloudProvider) AttachDisk(ctx context.Context, project string, volK

deviceName, err := common.GetDeviceName(volKey)
if err != nil {
return fmt.Errorf("failed to get device name: %v", err)
return fmt.Errorf("failed to get device name: %w", err)
}
attachedDiskV1 := &computev1.AttachedDisk{
DeviceName: deviceName,
Expand All @@ -697,13 +697,13 @@ func (cloud *CloudProvider) AttachDisk(ctx context.Context, project string, volK

op, err := cloud.service.Instances.AttachDisk(project, instanceZone, instanceName, attachedDiskV1).Context(ctx).Do()
if err != nil {
return fmt.Errorf("failed cloud service attach disk call: %v", err)
return fmt.Errorf("failed cloud service attach disk call: %w", err)
}
klog.V(5).Infof("AttachDisk operation %s for disk %s", op.Name, attachedDiskV1.DeviceName)

err = cloud.waitForZonalOp(ctx, project, op.Name, instanceZone)
if err != nil {
return fmt.Errorf("failed when waiting for zonal op: %v", err)
return fmt.Errorf("failed when waiting for zonal op: %w", err)
}
return nil
}
Expand Down Expand Up @@ -814,7 +814,7 @@ func (cloud *CloudProvider) WaitForAttach(ctx context.Context, project string, v
klog.V(6).Infof("Polling for attach of disk %v to instance %v to complete for %v", volKey.Name, instanceName, time.Since(start))
disk, err := cloud.GetDisk(ctx, project, volKey, GCEAPIVersionV1)
if err != nil {
return false, fmt.Errorf("GetDisk failed to get disk: %v", err)
return false, fmt.Errorf("GetDisk failed to get disk: %w", err)
}

if disk == nil {
Expand Down Expand Up @@ -946,7 +946,7 @@ func (cloud *CloudProvider) waitForImageCreation(ctx context.Context, project, i
klog.V(6).Infof("Checking GCE Image %s.", imageName)
image, err := cloud.GetImage(ctx, project, imageName)
if err != nil {
klog.Warningf("Error in getting image %s, %w", imageName, err)
klog.Warningf("Error in getting image %s, %v", imageName, err.Error())
} else if image != nil {
if image.Status != "PENDING" {
klog.V(6).Infof("Image %s status is %s", imageName, image.Status)
Expand Down Expand Up @@ -1009,7 +1009,7 @@ func (cloud *CloudProvider) ResizeDisk(ctx context.Context, project string, volK
klog.V(5).Infof("Resizing disk %v to size %v", volKey, requestBytes)
cloudDisk, err := cloud.GetDisk(ctx, project, volKey, GCEAPIVersionV1)
if err != nil {
return -1, fmt.Errorf("failed to get disk: %v", err)
return -1, fmt.Errorf("failed to get disk: %w", err)
}

sizeGb := cloudDisk.GetSizeGb()
Expand Down Expand Up @@ -1037,13 +1037,13 @@ func (cloud *CloudProvider) resizeZonalDisk(ctx context.Context, project string,
}
op, err := cloud.service.Disks.Resize(project, volKey.Zone, volKey.Name, resizeReq).Context(ctx).Do()
if err != nil {
return -1, fmt.Errorf("failed to resize zonal volume %v: %v", volKey.String(), err)
return -1, fmt.Errorf("failed to resize zonal volume %v: %w", volKey.String(), err)
}
klog.V(5).Infof("ResizeDisk operation %s for disk %s", op.Name, volKey.Name)

err = cloud.waitForZonalOp(ctx, project, op.Name, volKey.Zone)
if err != nil {
return -1, fmt.Errorf("failed waiting for op for zonal resize for %s: %v", volKey.String(), err)
return -1, fmt.Errorf("failed waiting for op for zonal resize for %s: %w", volKey.String(), err)
}

return requestGb, nil
Expand All @@ -1056,13 +1056,13 @@ func (cloud *CloudProvider) resizeRegionalDisk(ctx context.Context, project stri

op, err := cloud.service.RegionDisks.Resize(project, volKey.Region, volKey.Name, resizeReq).Context(ctx).Do()
if err != nil {
return -1, fmt.Errorf("failed to resize regional volume %v: %v", volKey.String(), err)
return -1, fmt.Errorf("failed to resize regional volume %v: %w", volKey.String(), err)
}
klog.V(5).Infof("ResizeDisk operation %s for disk %s", op.Name, volKey.Name)

err = cloud.waitForRegionalOp(ctx, project, op.Name, volKey.Region)
if err != nil {
return -1, fmt.Errorf("failed waiting for op for regional resize for %s: %v", volKey.String(), err)
return -1, fmt.Errorf("failed waiting for op for regional resize for %s: %w", volKey.String(), err)
}

return requestGb, nil
Expand Down Expand Up @@ -1112,7 +1112,7 @@ func (cloud *CloudProvider) waitForSnapshotCreation(ctx context.Context, project
klog.V(6).Infof("Checking GCE Snapshot %s.", snapshotName)
snapshot, err := cloud.GetSnapshot(ctx, project, snapshotName)
if err != nil {
klog.Warningf("Error in getting snapshot %s, %w", snapshotName, err)
klog.Warningf("Error in getting snapshot %s, %v", snapshotName, err.Error())
} else if snapshot != nil {
if snapshot.Status != "CREATING" {
klog.V(6).Infof("Snapshot %s status is %s", snapshotName, snapshot.Status)
Expand Down Expand Up @@ -1159,7 +1159,7 @@ func encodeTags(tags map[string]string) (string, error) {

enc, err := json.Marshal(tags)
if err != nil {
return "", fmt.Errorf("failed to encodeTags %v: %v", tags, err)
return "", fmt.Errorf("failed to encodeTags %v: %w", tags, err)
}
return string(enc), nil
}
8 changes: 4 additions & 4 deletions pkg/gce-cloud-provider/compute/gce.go
Original file line number Diff line number Diff line change
Expand Up @@ -100,7 +100,7 @@ func CreateCloudProvider(ctx context.Context, vendorVersion string, configPath s

project, zone, err := getProjectAndZone(configFile)
if err != nil {
return nil, fmt.Errorf("Failed getting Project and Zone: %v", err)
return nil, fmt.Errorf("Failed getting Project and Zone: %w", err)
}

return &CloudProvider{
Expand Down Expand Up @@ -148,13 +148,13 @@ func readConfig(configPath string) (*ConfigFile, error) {

reader, err := os.Open(configPath)
if err != nil {
return nil, fmt.Errorf("couldn't open cloud provider configuration at %s: %v", configPath, err)
return nil, fmt.Errorf("couldn't open cloud provider configuration at %s: %w", configPath, err)
}
defer reader.Close()

cfg := &ConfigFile{}
if err := gcfg.FatalOnly(gcfg.ReadInto(cfg, reader)); err != nil {
return nil, fmt.Errorf("couldn't read cloud provider configuration at %s: %v", configPath, err)
return nil, fmt.Errorf("couldn't read cloud provider configuration at %s: %w", configPath, err)
}
return cfg, nil
}
Expand Down Expand Up @@ -193,7 +193,7 @@ func createCloudServiceWithDefaultServiceAccount(ctx context.Context, vendorVers
func newOauthClient(ctx context.Context, tokenSource oauth2.TokenSource) (*http.Client, error) {
if err := wait.PollImmediate(5*time.Second, 30*time.Second, func() (bool, error) {
if _, err := tokenSource.Token(); err != nil {
klog.Errorf("error fetching initial token: %w", err)
klog.Errorf("error fetching initial token: %v", err.Error())
return false, nil
}
return true, nil
Expand Down
8 changes: 4 additions & 4 deletions pkg/gce-cloud-provider/metadata/metadata.go
Original file line number Diff line number Diff line change
Expand Up @@ -45,19 +45,19 @@ var _ MetadataService = &metadataServiceManager{}
func NewMetadataService() (MetadataService, error) {
zone, err := metadata.Zone()
if err != nil {
return nil, fmt.Errorf("failed to get current zone: %v", err)
return nil, fmt.Errorf("failed to get current zone: %w", err)
}
projectID, err := metadata.ProjectID()
if err != nil {
return nil, fmt.Errorf("failed to get project: %v", err)
return nil, fmt.Errorf("failed to get project: %w", err)
}
name, err := metadata.InstanceName()
if err != nil {
return nil, fmt.Errorf("failed to get instance name: %v", err)
return nil, fmt.Errorf("failed to get instance name: %w", err)
}
fullMachineType, err := metadata.Get("instance/machine-type")
if err != nil {
return nil, fmt.Errorf("failed to get machine-type: %v", err)
return nil, fmt.Errorf("failed to get machine-type: %w", err)
}
// Response format: "projects/[NUMERIC_PROJECT_ID]/machineTypes/[MACHINE_TYPE]"
splits := strings.Split(fullMachineType, "/")
Expand Down
Loading