Skip to content

Commit a7ac3f2

Browse files
committed
fix: don't return error in hierarchy discovery when API returns 404/precondition failed
commit_hash:67b3c6361814ba103cb7e1362a23ea44f2a5b937
1 parent 0f00522 commit a7ac3f2

File tree

1 file changed

+14
-0
lines changed

1 file changed

+14
-0
lines changed

client/resourcehierarchy.go

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,8 @@ import (
1313
"github.com/yandex-cloud/go-genproto/yandex/cloud/resourcemanager/v1"
1414
ycsdk "github.com/yandex-cloud/go-sdk"
1515
"google.golang.org/grpc"
16+
"google.golang.org/grpc/codes"
17+
"google.golang.org/grpc/status"
1618
)
1719

1820
// Self-made name for struct holding info about resource model hierarchy.
@@ -134,6 +136,12 @@ func bfs(ctx context.Context, sdk *ycsdk.SDK, logger zerolog.Logger, init []Reso
134136
}
135137
}
136138
if err := it.Error(); err != nil {
139+
switch status.Code(err) {
140+
case codes.FailedPrecondition:
141+
logger.Warn().Str("id", item.Cloud).Err(err).Msg("Failed to list folders in cloud")
142+
continue
143+
default: // do not ignore other errors
144+
}
137145
return nil, err
138146
}
139147
} else if item.Organization != "" && services[serviceResourceManager] {
@@ -149,6 +157,12 @@ func bfs(ctx context.Context, sdk *ycsdk.SDK, logger zerolog.Logger, init []Reso
149157
}
150158
}
151159
if err := it.Error(); err != nil {
160+
switch status.Code(err) {
161+
case codes.FailedPrecondition:
162+
logger.Warn().Str("id", item.Cloud).Err(err).Msg("Failed to list clouds in organization")
163+
continue
164+
default: // do not ignore other errors
165+
}
152166
return nil, err
153167
}
154168
} else if services[serviceOrganizationManager] {

0 commit comments

Comments
 (0)