From 982180dffd9eca0803f1481c89278c009366427c Mon Sep 17 00:00:00 2001 From: Bulat Gayazov Date: Wed, 13 Nov 2024 17:51:22 +0000 Subject: [PATCH 1/4] Remove grpc dependency leak through iam headers --- include/ydb-cpp-sdk/client/iam/iam.h | 17 ++- include/ydb-cpp-sdk/client/iam/types.h | 53 ++++++++ include/ydb-cpp-sdk/client/iam_private/iam.h | 2 +- src/client/helpers/CMakeLists.txt | 2 +- src/client/helpers/helpers.cpp | 2 +- src/client/iam/CMakeLists.txt | 18 ++- src/client/iam/common/CMakeLists.txt | 23 ++-- src/client/iam/common/iam.cpp | 114 ------------------ .../client/iam/common/iam.h | 59 +-------- src/client/iam/iam.cpp | 84 ++++++++++++- src/client/iam_private/CMakeLists.txt | 17 ++- src/client/iam_private/iam.cpp | 2 +- 12 files changed, 191 insertions(+), 202 deletions(-) create mode 100644 include/ydb-cpp-sdk/client/iam/types.h delete mode 100644 src/client/iam/common/iam.cpp rename {include/ydb-cpp-sdk => src}/client/iam/common/iam.h (79%) diff --git a/include/ydb-cpp-sdk/client/iam/iam.h b/include/ydb-cpp-sdk/client/iam/iam.h index c2e7d53bc4f..6a684cbc4a7 100644 --- a/include/ydb-cpp-sdk/client/iam/iam.h +++ b/include/ydb-cpp-sdk/client/iam/iam.h @@ -1,3 +1,18 @@ #pragma once -#include "common/iam.h" +#include "types.h" +namespace NYdb { + +/// Acquire an IAM token using a local metadata service on a virtual machine. +TCredentialsProviderFactoryPtr CreateIamCredentialsProviderFactory(const TIamHost& params = {}); + +/// Acquire an IAM token using a JSON Web Token (JWT) file name. +TCredentialsProviderFactoryPtr CreateIamJwtFileCredentialsProviderFactory(const TIamJwtFilename& params); + +/// Acquire an IAM token using JSON Web Token (JWT) contents. +TCredentialsProviderFactoryPtr CreateIamJwtParamsCredentialsProviderFactory(const TIamJwtContent& param); + +// Acquire an IAM token using a user OAuth token. +TCredentialsProviderFactoryPtr CreateIamOAuthCredentialsProviderFactory(const TIamOAuth& params); + +} diff --git a/include/ydb-cpp-sdk/client/iam/types.h b/include/ydb-cpp-sdk/client/iam/types.h new file mode 100644 index 00000000000..0f1cc384d94 --- /dev/null +++ b/include/ydb-cpp-sdk/client/iam/types.h @@ -0,0 +1,53 @@ +#pragma once + +#include +#include + +#include + +#include +#include + +namespace NYdb { + +namespace NIam { + +constexpr std::string_view DEFAULT_ENDPOINT = "iam.api.cloud.yandex.net"; +constexpr bool DEFAULT_ENABLE_SSL = true; + +constexpr std::string_view DEFAULT_HOST = "169.254.169.254"; +constexpr uint32_t DEFAULT_PORT = 80; + +constexpr TDuration DEFAULT_REFRESH_PERIOD = TDuration::Hours(1); +constexpr TDuration DEFAULT_REQUEST_TIMEOUT = TDuration::Seconds(10); + +} + +struct TIamHost { + std::string Host = std::string(NIam::DEFAULT_HOST); + uint32_t Port = NIam::DEFAULT_PORT; + TDuration RefreshPeriod = NIam::DEFAULT_REFRESH_PERIOD; +}; + +struct TIamEndpoint { + std::string Endpoint = std::string(NIam::DEFAULT_ENDPOINT); + TDuration RefreshPeriod = NIam::DEFAULT_REFRESH_PERIOD; + TDuration RequestTimeout = NIam::DEFAULT_REQUEST_TIMEOUT; + bool EnableSsl = NIam::DEFAULT_ENABLE_SSL; +}; + +struct TIamJwtFilename : TIamEndpoint { std::string JwtFilename; }; + +struct TIamJwtContent : TIamEndpoint { std::string JwtContent; }; + +struct TIamJwtParams : TIamEndpoint { TJwtParams JwtParams; }; + +struct TIamOAuth : TIamEndpoint { std::string OAuthToken; }; + + +inline TJwtParams ReadJwtKeyFile(const std::string& filename) { + std::ifstream input(filename, std::ios::in); + return ParseJwtParams({std::istreambuf_iterator(input), std::istreambuf_iterator()}); +} + +} diff --git a/include/ydb-cpp-sdk/client/iam_private/iam.h b/include/ydb-cpp-sdk/client/iam_private/iam.h index 3bdc3038cbe..fe5ac9571e2 100644 --- a/include/ydb-cpp-sdk/client/iam_private/iam.h +++ b/include/ydb-cpp-sdk/client/iam_private/iam.h @@ -1,6 +1,6 @@ #pragma once -#include +#include namespace NYdb { diff --git a/src/client/helpers/CMakeLists.txt b/src/client/helpers/CMakeLists.txt index cb1ad203935..dc47a456af9 100644 --- a/src/client/helpers/CMakeLists.txt +++ b/src/client/helpers/CMakeLists.txt @@ -4,7 +4,7 @@ target_link_libraries(client-helpers PUBLIC yutil client-ydb_types-credentials-oauth2 - client-iam-common + client-iam client-ydb_types-credentials ) diff --git a/src/client/helpers/helpers.cpp b/src/client/helpers/helpers.cpp index 325e04390ba..10fcb366edc 100644 --- a/src/client/helpers/helpers.cpp +++ b/src/client/helpers/helpers.cpp @@ -1,6 +1,6 @@ #include -#include +#include #include #include diff --git a/src/client/iam/CMakeLists.txt b/src/client/iam/CMakeLists.txt index 98e6fa5e6f6..9f3fa7ec503 100644 --- a/src/client/iam/CMakeLists.txt +++ b/src/client/iam/CMakeLists.txt @@ -2,14 +2,20 @@ add_subdirectory(common) _ydb_sdk_add_library(client-iam) -target_link_libraries(client-iam PUBLIC - yutil - api-client-yc_public - client-iam-common +target_link_libraries(client-iam + PUBLIC + client-ydb_types-credentials + http-simple + json + library-jwt + yutil + PRIVATE + api-client-yc_public + client-iam-common ) -_ydb_sdk_install_targets(TARGETS client-iam) - target_sources(client-iam PRIVATE iam.cpp ) + +_ydb_sdk_make_client_component(Iam client-iam) diff --git a/src/client/iam/common/CMakeLists.txt b/src/client/iam/common/CMakeLists.txt index 095c45f9ede..8a62beb2851 100644 --- a/src/client/iam/common/CMakeLists.txt +++ b/src/client/iam/common/CMakeLists.txt @@ -1,17 +1,12 @@ -_ydb_sdk_add_library(client-iam-common) +_ydb_sdk_add_library(client-iam-common INTERFACE) -target_link_libraries(client-iam-common PUBLIC - yutil - grpc-client - http-simple - json - library-jwt - client-ydb_types-credentials - api-client-yc_public +target_link_libraries(client-iam-common + INTERFACE + client-ydb_types-credentials + grpc-client + library-jwt + threading-future + yutil ) -target_sources(client-iam-common PRIVATE - iam.cpp -) - -_ydb_sdk_make_client_component(Iam client-iam-common) +_ydb_sdk_install_targets(client-iam-common) diff --git a/src/client/iam/common/iam.cpp b/src/client/iam/common/iam.cpp deleted file mode 100644 index 4b423545959..00000000000 --- a/src/client/iam/common/iam.cpp +++ /dev/null @@ -1,114 +0,0 @@ -#include - -#include - -#include -#include -#include - -using namespace NYdbGrpc; -using namespace yandex::cloud::iam::v1; - -namespace NYdb { - -class TIAMCredentialsProvider : public ICredentialsProvider { -public: - TIAMCredentialsProvider(const TIamHost& params) - : HttpClient_(TSimpleHttpClient(TString(params.Host), params.Port)) - , Request_("/computeMetadata/v1/instance/service-accounts/default/token") - , NextTicketUpdate_(TInstant::Zero()) - , RefreshPeriod_(params.RefreshPeriod) - { - GetTicket(); - } - - std::string GetAuthInfo() const override { - if (TInstant::Now() >= NextTicketUpdate_) { - GetTicket(); - } - return Ticket_; - } - - bool IsValid() const override { - return true; - } - -private: - TSimpleHttpClient HttpClient_; - std::string Request_; - mutable std::string Ticket_; - mutable TInstant NextTicketUpdate_; - TDuration RefreshPeriod_; - - void GetTicket() const { - try { - TStringStream out; - TSimpleHttpClient::THeaders headers; - headers["Metadata-Flavor"] = "Google"; - HttpClient_.DoGet(Request_, &out, headers); - NJson::TJsonValue resp; - NJson::ReadJsonTree(&out, &resp, true); - - auto respMap = resp.GetMap(); - - if (auto it = respMap.find("access_token"); it == respMap.end()) - ythrow yexception() << "Result doesn't contain access_token"; - else if (std::string ticket = it->second.GetStringSafe(); ticket.empty()) - ythrow yexception() << "Got empty ticket"; - else - Ticket_ = std::move(ticket); - - if (auto it = respMap.find("expires_in"); it == respMap.end()) - ythrow yexception() << "Result doesn't contain expires_in"; - else { - const TDuration expiresIn = TDuration::Seconds(it->second.GetUInteger()) / 2; - - const auto interval = std::max(std::min(expiresIn, RefreshPeriod_), TDuration::MilliSeconds(100)); - - NextTicketUpdate_ = TInstant::Now() + interval; - } - } catch (...) { - } - } -}; - - -class TIamCredentialsProviderFactory : public ICredentialsProviderFactory { -public: - TIamCredentialsProviderFactory(const TIamHost& params): Params_(params) {} - - TCredentialsProviderPtr CreateProvider() const final { - return std::make_shared(Params_); - } - -private: - TIamHost Params_; -}; - -/// Acquire an IAM token using a local metadata service on a virtual machine. -TCredentialsProviderFactoryPtr CreateIamCredentialsProviderFactory(const TIamHost& params ) { - return std::make_shared(params); -} - -TCredentialsProviderFactoryPtr CreateIamJwtFileCredentialsProviderFactory(const TIamJwtFilename& params) { - TIamJwtParams jwtParams = { params, ReadJwtKeyFile(params.JwtFilename) }; - return std::make_shared>(std::move(jwtParams)); -} - -TCredentialsProviderFactoryPtr CreateIamJwtParamsCredentialsProviderFactory(const TIamJwtContent& params) { - TIamJwtParams jwtParams = { params, ParseJwtParams(params.JwtContent) }; - return std::make_shared>(std::move(jwtParams)); -} - -TCredentialsProviderFactoryPtr CreateIamOAuthCredentialsProviderFactory(const TIamOAuth& params) { - return std::make_shared>(params); - -} - -} diff --git a/include/ydb-cpp-sdk/client/iam/common/iam.h b/src/client/iam/common/iam.h similarity index 79% rename from include/ydb-cpp-sdk/client/iam/common/iam.h rename to src/client/iam/common/iam.h index ecc7e6462b4..7ab476fc5f4 100644 --- a/include/ydb-cpp-sdk/client/iam/common/iam.h +++ b/src/client/iam/common/iam.h @@ -1,69 +1,16 @@ #pragma once +#include #include - #include -#include -#include -#include +#include -#include #include - -#include +#include namespace NYdb { -namespace NIam { -constexpr std::string_view DEFAULT_ENDPOINT = "iam.api.cloud.yandex.net"; -constexpr bool DEFAULT_ENABLE_SSL = true; - -constexpr std::string_view DEFAULT_HOST = "169.254.169.254"; -constexpr uint32_t DEFAULT_PORT = 80; - -constexpr TDuration DEFAULT_REFRESH_PERIOD = TDuration::Hours(1); -constexpr TDuration DEFAULT_REQUEST_TIMEOUT = TDuration::Seconds(10); -} - -struct TIamHost { - std::string Host = std::string(NIam::DEFAULT_HOST); - uint32_t Port = NIam::DEFAULT_PORT; - TDuration RefreshPeriod = NIam::DEFAULT_REFRESH_PERIOD; -}; - -struct TIamEndpoint { - std::string Endpoint = std::string(NIam::DEFAULT_ENDPOINT); - TDuration RefreshPeriod = NIam::DEFAULT_REFRESH_PERIOD; - TDuration RequestTimeout = NIam::DEFAULT_REQUEST_TIMEOUT; - bool EnableSsl = NIam::DEFAULT_ENABLE_SSL; -}; - -struct TIamJwtFilename : TIamEndpoint { std::string JwtFilename; }; - -struct TIamJwtContent : TIamEndpoint { std::string JwtContent; }; - -struct TIamJwtParams : TIamEndpoint { TJwtParams JwtParams; }; - -inline TJwtParams ReadJwtKeyFile(const std::string& filename) { - std::ifstream input(filename, std::ios::in); - return ParseJwtParams({std::istreambuf_iterator(input), std::istreambuf_iterator()}); -} - -struct TIamOAuth : TIamEndpoint { std::string OAuthToken; }; - -/// Acquire an IAM token using a local metadata service on a virtual machine. -TCredentialsProviderFactoryPtr CreateIamCredentialsProviderFactory(const TIamHost& params = {}); - -/// Acquire an IAM token using a JSON Web Token (JWT) file name. -TCredentialsProviderFactoryPtr CreateIamJwtFileCredentialsProviderFactory(const TIamJwtFilename& params); - -/// Acquire an IAM token using JSON Web Token (JWT) contents. -TCredentialsProviderFactoryPtr CreateIamJwtParamsCredentialsProviderFactory(const TIamJwtContent& param); - -// Acquire an IAM token using a user OAuth token. -TCredentialsProviderFactoryPtr CreateIamOAuthCredentialsProviderFactory(const TIamOAuth& params); - constexpr TDuration BACKOFF_START = TDuration::MilliSeconds(50); constexpr TDuration BACKOFF_MAX = TDuration::Seconds(10); diff --git a/src/client/iam/iam.cpp b/src/client/iam/iam.cpp index 927add7057b..402b6555d3e 100644 --- a/src/client/iam/iam.cpp +++ b/src/client/iam/iam.cpp @@ -1,12 +1,94 @@ -#include +#include +#include "common/iam.h" #include #include +#include +#include + using namespace yandex::cloud::iam::v1; namespace NYdb { +class TIAMCredentialsProvider : public ICredentialsProvider { +public: + TIAMCredentialsProvider(const TIamHost& params) + : HttpClient_(TSimpleHttpClient(TString(params.Host), params.Port)) + , Request_("/computeMetadata/v1/instance/service-accounts/default/token") + , NextTicketUpdate_(TInstant::Zero()) + , RefreshPeriod_(params.RefreshPeriod) + { + GetTicket(); + } + + std::string GetAuthInfo() const override { + if (TInstant::Now() >= NextTicketUpdate_) { + GetTicket(); + } + return Ticket_; + } + + bool IsValid() const override { + return true; + } + +private: + TSimpleHttpClient HttpClient_; + std::string Request_; + mutable std::string Ticket_; + mutable TInstant NextTicketUpdate_; + TDuration RefreshPeriod_; + + void GetTicket() const { + try { + TStringStream out; + TSimpleHttpClient::THeaders headers; + headers["Metadata-Flavor"] = "Google"; + HttpClient_.DoGet(Request_, &out, headers); + NJson::TJsonValue resp; + NJson::ReadJsonTree(&out, &resp, true); + + auto respMap = resp.GetMap(); + + if (auto it = respMap.find("access_token"); it == respMap.end()) + ythrow yexception() << "Result doesn't contain access_token"; + else if (std::string ticket = it->second.GetStringSafe(); ticket.empty()) + ythrow yexception() << "Got empty ticket"; + else + Ticket_ = std::move(ticket); + + if (auto it = respMap.find("expires_in"); it == respMap.end()) + ythrow yexception() << "Result doesn't contain expires_in"; + else { + const TDuration expiresIn = TDuration::Seconds(it->second.GetUInteger()) / 2; + + const auto interval = std::max(std::min(expiresIn, RefreshPeriod_), TDuration::MilliSeconds(100)); + + NextTicketUpdate_ = TInstant::Now() + interval; + } + } catch (...) { + } + } +}; + +class TIamCredentialsProviderFactory : public ICredentialsProviderFactory { +public: + TIamCredentialsProviderFactory(const TIamHost& params): Params_(params) {} + + TCredentialsProviderPtr CreateProvider() const final { + return std::make_shared(Params_); + } + +private: + TIamHost Params_; +}; + +/// Acquire an IAM token using a local metadata service on a virtual machine. +TCredentialsProviderFactoryPtr CreateIamCredentialsProviderFactory(const TIamHost& params ) { + return std::make_shared(params); +} + TCredentialsProviderFactoryPtr CreateIamJwtFileCredentialsProviderFactory(const TIamJwtFilename& params) { TIamJwtParams jwtParams = { params, ReadJwtKeyFile(params.JwtFilename) }; return std::make_shared -#include +#include #include #include From 35ca31b716b02dd5f656b67c5e6eae21b4a353b2 Mon Sep 17 00:00:00 2001 From: Bulat Gayazov Date: Wed, 13 Nov 2024 18:36:12 +0000 Subject: [PATCH 2/4] Moved grpc_client headers --- src/library/grpc/client/grpc_client_low.cpp | 3 ++- .../ydb-cpp-sdk => src}/library/grpc/client/grpc_client_low.h | 0 {include/ydb-cpp-sdk => src}/library/grpc/client/grpc_common.h | 2 +- {include/ydb-cpp-sdk => src}/library/grpc/common/constants.h | 0 tests/unit/library/grpc_client/grpc_client_low_ut.cpp | 2 +- 5 files changed, 4 insertions(+), 3 deletions(-) rename {include/ydb-cpp-sdk => src}/library/grpc/client/grpc_client_low.h (100%) rename {include/ydb-cpp-sdk => src}/library/grpc/client/grpc_common.h (98%) rename {include/ydb-cpp-sdk => src}/library/grpc/common/constants.h (100%) diff --git a/src/library/grpc/client/grpc_client_low.cpp b/src/library/grpc/client/grpc_client_low.cpp index ef39965dd20..452bd0b7df0 100644 --- a/src/library/grpc/client/grpc_client_low.cpp +++ b/src/library/grpc/client/grpc_client_low.cpp @@ -1,4 +1,5 @@ -#include +#include "grpc_client_low.h" + #include #include diff --git a/include/ydb-cpp-sdk/library/grpc/client/grpc_client_low.h b/src/library/grpc/client/grpc_client_low.h similarity index 100% rename from include/ydb-cpp-sdk/library/grpc/client/grpc_client_low.h rename to src/library/grpc/client/grpc_client_low.h diff --git a/include/ydb-cpp-sdk/library/grpc/client/grpc_common.h b/src/library/grpc/client/grpc_common.h similarity index 98% rename from include/ydb-cpp-sdk/library/grpc/client/grpc_common.h rename to src/library/grpc/client/grpc_common.h index 58adfeda3e3..7ae782ebc86 100644 --- a/include/ydb-cpp-sdk/library/grpc/client/grpc_common.h +++ b/src/library/grpc/client/grpc_common.h @@ -4,7 +4,7 @@ #include #include -#include +#include #include #include diff --git a/include/ydb-cpp-sdk/library/grpc/common/constants.h b/src/library/grpc/common/constants.h similarity index 100% rename from include/ydb-cpp-sdk/library/grpc/common/constants.h rename to src/library/grpc/common/constants.h diff --git a/tests/unit/library/grpc_client/grpc_client_low_ut.cpp b/tests/unit/library/grpc_client/grpc_client_low_ut.cpp index 4abbafee7ce..35a89328cb7 100644 --- a/tests/unit/library/grpc_client/grpc_client_low_ut.cpp +++ b/tests/unit/library/grpc_client/grpc_client_low_ut.cpp @@ -1,4 +1,4 @@ -#include +#include #include From 334c9689ff57fe3edb7d7a67fde03273e9edb07d Mon Sep 17 00:00:00 2001 From: Bulat Gayazov Date: Thu, 14 Nov 2024 12:36:29 +0000 Subject: [PATCH 3/4] Fixed includes --- src/client/iam/common/iam.h | 2 +- src/client/impl/ydb_internal/common/types.h | 2 +- src/client/impl/ydb_internal/db_driver_state/authenticator.h | 2 +- src/client/impl/ydb_internal/grpc_connections/actions.h | 2 +- src/client/impl/ydb_internal/plain_status/status.h | 2 +- src/client/impl/ydb_stats/stats.h | 2 +- 6 files changed, 6 insertions(+), 6 deletions(-) diff --git a/src/client/iam/common/iam.h b/src/client/iam/common/iam.h index 7ab476fc5f4..78551acbef7 100644 --- a/src/client/iam/common/iam.h +++ b/src/client/iam/common/iam.h @@ -2,7 +2,7 @@ #include #include -#include +#include #include diff --git a/src/client/impl/ydb_internal/common/types.h b/src/client/impl/ydb_internal/common/types.h index 8d7dea5e7fe..4c18d46221f 100644 --- a/src/client/impl/ydb_internal/common/types.h +++ b/src/client/impl/ydb_internal/common/types.h @@ -7,7 +7,7 @@ #include -#include +#include namespace NYdb { diff --git a/src/client/impl/ydb_internal/db_driver_state/authenticator.h b/src/client/impl/ydb_internal/db_driver_state/authenticator.h index 32a60328834..92540939307 100644 --- a/src/client/impl/ydb_internal/db_driver_state/authenticator.h +++ b/src/client/impl/ydb_internal/db_driver_state/authenticator.h @@ -4,7 +4,7 @@ #include -#include +#include namespace NYdb { diff --git a/src/client/impl/ydb_internal/grpc_connections/actions.h b/src/client/impl/ydb_internal/grpc_connections/actions.h index 948c4bac2fa..20150d7c25e 100644 --- a/src/client/impl/ydb_internal/grpc_connections/actions.h +++ b/src/client/impl/ydb_internal/grpc_connections/actions.h @@ -7,7 +7,7 @@ #include #include -#include +#include #include diff --git a/src/client/impl/ydb_internal/plain_status/status.h b/src/client/impl/ydb_internal/plain_status/status.h index 768231d012a..d0109d38e64 100644 --- a/src/client/impl/ydb_internal/plain_status/status.h +++ b/src/client/impl/ydb_internal/plain_status/status.h @@ -4,7 +4,7 @@ #include -#include +#include #include #include diff --git a/src/client/impl/ydb_stats/stats.h b/src/client/impl/ydb_stats/stats.h index 6a14b25bf0f..a4c7a610cfd 100644 --- a/src/client/impl/ydb_stats/stats.h +++ b/src/client/impl/ydb_stats/stats.h @@ -2,7 +2,7 @@ #include -#include +#include #include #include From b212686e05c782e6840024a3dceb30d3eab9c7cd Mon Sep 17 00:00:00 2001 From: Bulat Gayazov Date: Mon, 18 Nov 2024 16:54:55 +0000 Subject: [PATCH 4/4] Add client-iam-types target --- CMakeLists.txt | 1 + include/ydb-cpp-sdk/client/CMakeLists.txt | 1 + include/ydb-cpp-sdk/client/iam/common/CMakeLists.txt | 10 ++++++++++ include/ydb-cpp-sdk/client/iam/{ => common}/types.h | 0 include/ydb-cpp-sdk/client/iam/iam.h | 3 ++- include/ydb-cpp-sdk/client/iam_private/iam.h | 2 +- src/client/iam/CMakeLists.txt | 7 +++---- src/client/iam/common/CMakeLists.txt | 3 +-- src/client/iam/common/iam.h | 4 ++-- src/client/iam/iam.cpp | 1 + src/client/iam_private/CMakeLists.txt | 3 +-- 11 files changed, 23 insertions(+), 12 deletions(-) create mode 100644 include/ydb-cpp-sdk/client/CMakeLists.txt create mode 100644 include/ydb-cpp-sdk/client/iam/common/CMakeLists.txt rename include/ydb-cpp-sdk/client/iam/{ => common}/types.h (100%) diff --git a/CMakeLists.txt b/CMakeLists.txt index 686aabe9ccd..d0b25570784 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -51,6 +51,7 @@ endif() add_subdirectory(tools) add_subdirectory(contrib/libs) add_subdirectory(library/cpp) +add_subdirectory(include/ydb-cpp-sdk/client) add_subdirectory(src) add_subdirectory(util) diff --git a/include/ydb-cpp-sdk/client/CMakeLists.txt b/include/ydb-cpp-sdk/client/CMakeLists.txt new file mode 100644 index 00000000000..631efeb3ed7 --- /dev/null +++ b/include/ydb-cpp-sdk/client/CMakeLists.txt @@ -0,0 +1 @@ +add_subdirectory(iam/common) diff --git a/include/ydb-cpp-sdk/client/iam/common/CMakeLists.txt b/include/ydb-cpp-sdk/client/iam/common/CMakeLists.txt new file mode 100644 index 00000000000..667ae4bd632 --- /dev/null +++ b/include/ydb-cpp-sdk/client/iam/common/CMakeLists.txt @@ -0,0 +1,10 @@ +_ydb_sdk_add_library(client-iam-types INTERFACE) + +target_link_libraries(client-iam-types + INTERFACE + client-ydb_types-credentials + library-jwt + yutil +) + +_ydb_sdk_install_targets(client-iam-types) diff --git a/include/ydb-cpp-sdk/client/iam/types.h b/include/ydb-cpp-sdk/client/iam/common/types.h similarity index 100% rename from include/ydb-cpp-sdk/client/iam/types.h rename to include/ydb-cpp-sdk/client/iam/common/types.h diff --git a/include/ydb-cpp-sdk/client/iam/iam.h b/include/ydb-cpp-sdk/client/iam/iam.h index 6a684cbc4a7..a79c200dc74 100644 --- a/include/ydb-cpp-sdk/client/iam/iam.h +++ b/include/ydb-cpp-sdk/client/iam/iam.h @@ -1,6 +1,7 @@ #pragma once -#include "types.h" +#include "common/types.h" + namespace NYdb { /// Acquire an IAM token using a local metadata service on a virtual machine. diff --git a/include/ydb-cpp-sdk/client/iam_private/iam.h b/include/ydb-cpp-sdk/client/iam_private/iam.h index fe5ac9571e2..3b2d742d168 100644 --- a/include/ydb-cpp-sdk/client/iam_private/iam.h +++ b/include/ydb-cpp-sdk/client/iam_private/iam.h @@ -1,6 +1,6 @@ #pragma once -#include +#include namespace NYdb { diff --git a/src/client/iam/CMakeLists.txt b/src/client/iam/CMakeLists.txt index 9f3fa7ec503..4dd6d707856 100644 --- a/src/client/iam/CMakeLists.txt +++ b/src/client/iam/CMakeLists.txt @@ -4,14 +4,13 @@ _ydb_sdk_add_library(client-iam) target_link_libraries(client-iam PUBLIC - client-ydb_types-credentials - http-simple - json - library-jwt + client-iam-types yutil PRIVATE api-client-yc_public client-iam-common + json + http-simple ) target_sources(client-iam PRIVATE diff --git a/src/client/iam/common/CMakeLists.txt b/src/client/iam/common/CMakeLists.txt index 8a62beb2851..2d50e166c43 100644 --- a/src/client/iam/common/CMakeLists.txt +++ b/src/client/iam/common/CMakeLists.txt @@ -2,9 +2,8 @@ _ydb_sdk_add_library(client-iam-common INTERFACE) target_link_libraries(client-iam-common INTERFACE - client-ydb_types-credentials + client-iam-types grpc-client - library-jwt threading-future yutil ) diff --git a/src/client/iam/common/iam.h b/src/client/iam/common/iam.h index 78551acbef7..91ec93674e1 100644 --- a/src/client/iam/common/iam.h +++ b/src/client/iam/common/iam.h @@ -1,7 +1,7 @@ #pragma once -#include -#include +#include + #include #include diff --git a/src/client/iam/iam.cpp b/src/client/iam/iam.cpp index 402b6555d3e..032de620a62 100644 --- a/src/client/iam/iam.cpp +++ b/src/client/iam/iam.cpp @@ -1,4 +1,5 @@ #include + #include "common/iam.h" #include diff --git a/src/client/iam_private/CMakeLists.txt b/src/client/iam_private/CMakeLists.txt index a1917c8d8af..981a26a58c1 100644 --- a/src/client/iam_private/CMakeLists.txt +++ b/src/client/iam_private/CMakeLists.txt @@ -2,8 +2,7 @@ _ydb_sdk_add_library(client-iam_private) target_link_libraries(client-iam_private PUBLIC - client-ydb_types-credentials - library-jwt + client-iam-types yutil PRIVATE api-client-yc_private