From 1878b1ca39b4461b32ed5b197d6c4a889762a520 Mon Sep 17 00:00:00 2001 From: Timo Furrer <tfurrer@gitlab.com> Date: Fri, 5 May 2023 08:02:39 +0000 Subject: [PATCH] Upgrade `kas-grpc` gem to `0.1.0` This version contains the new gRPC method Changelog: changed MR: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/119077 --- Gemfile | 2 +- Gemfile.checksum | 2 +- Gemfile.lock | 4 ++-- lib/gitlab/kas/client.rb | 15 ++++++++++++++- spec/lib/gitlab/kas/client_spec.rb | 29 +++++++++++++++++++++++++++++ 5 files changed, 47 insertions(+), 5 deletions(-) diff --git a/Gemfile b/Gemfile index 297b302550771..b5ee4b152d61c 100644 --- a/Gemfile +++ b/Gemfile @@ -510,7 +510,7 @@ gem 'spamcheck', '~> 1.3.0' gem 'gitaly', '~> 15.9.0-rc3' # KAS GRPC protocol definitions -gem 'kas-grpc', '~> 0.0.2' +gem 'kas-grpc', '~> 0.1.0' gem 'grpc', '~> 1.42.0' diff --git a/Gemfile.checksum b/Gemfile.checksum index 29417b7a380ea..0ff91f5bfd661 100644 --- a/Gemfile.checksum +++ b/Gemfile.checksum @@ -322,7 +322,7 @@ {"name":"kaminari-actionview","version":"1.2.2","platform":"ruby","checksum":"1330f6fc8b59a4a4ef6a549ff8a224797289ebf7a3a503e8c1652535287cc909"}, {"name":"kaminari-activerecord","version":"1.2.2","platform":"ruby","checksum":"0dd3a67bab356a356f36b3b7236bcb81cef313095365befe8e98057dd2472430"}, {"name":"kaminari-core","version":"1.2.2","platform":"ruby","checksum":"3bd26fec7370645af40ca73b9426a448d09b8a8ba7afa9ba3c3e0d39cdbb83ff"}, -{"name":"kas-grpc","version":"0.0.2","platform":"ruby","checksum":"111ff7515952e939f491297ba4c69a218b72d9d0ef8e5bff80a5df6a56df9a16"}, +{"name":"kas-grpc","version":"0.1.0","platform":"ruby","checksum":"b219c79b7bddf1f3ac6a78119e25b0b52c0c29608b3a80c75929c47f32a50dda"}, {"name":"knapsack","version":"1.21.1","platform":"ruby","checksum":"82f70422adebcacec1b514f6ebff65265fc85d836e3c320718a160d8ac41cf14"}, {"name":"kramdown","version":"2.3.2","platform":"ruby","checksum":"cb4530c2e9d16481591df2c9336723683c354e5416a5dd3e447fa48215a6a71c"}, {"name":"kramdown-parser-gfm","version":"1.1.0","platform":"ruby","checksum":"fb39745516427d2988543bf01fc4cf0ab1149476382393e0e9c48592f6581729"}, diff --git a/Gemfile.lock b/Gemfile.lock index e4f49206276c4..b44f3d55445f9 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -871,7 +871,7 @@ GEM activerecord kaminari-core (= 1.2.2) kaminari-core (1.2.2) - kas-grpc (0.0.2) + kas-grpc (0.1.0) grpc (~> 1.0) knapsack (1.21.1) rake @@ -1809,7 +1809,7 @@ DEPENDENCIES json_schemer (~> 0.2.18) jwt (~> 2.5) kaminari (~> 1.2.2) - kas-grpc (~> 0.0.2) + kas-grpc (~> 0.1.0) knapsack (~> 1.21.1) kramdown (~> 2.3.1) kubeclient (~> 4.11.0) diff --git a/lib/gitlab/kas/client.rb b/lib/gitlab/kas/client.rb index 768810d5545dd..43546d04087ce 100644 --- a/lib/gitlab/kas/client.rb +++ b/lib/gitlab/kas/client.rb @@ -8,7 +8,8 @@ class Client STUB_CLASSES = { agent_tracker: Gitlab::Agent::AgentTracker::Rpc::AgentTracker::Stub, - configuration_project: Gitlab::Agent::ConfigurationProject::Rpc::ConfigurationProject::Stub + configuration_project: Gitlab::Agent::ConfigurationProject::Rpc::ConfigurationProject::Stub, + notifications: Gitlab::Agent::Notifications::Rpc::Notifications::Stub }.freeze ConfigurationError = Class.new(StandardError) @@ -39,6 +40,18 @@ def list_agent_config_files(project:) .to_a end + def send_git_push_event(project:) + request = Gitlab::Agent::Notifications::Rpc::GitPushEventRequest.new( + project: Gitlab::Agent::Notifications::Rpc::Project.new( + id: project.id, + full_path: project.full_path + ) + ) + + stub_for(:notifications) + .git_push_event(request, metadata: metadata) + end + private def stub_for(service) diff --git a/spec/lib/gitlab/kas/client_spec.rb b/spec/lib/gitlab/kas/client_spec.rb index 9a0fa6c4067a1..5668c26561180 100644 --- a/spec/lib/gitlab/kas/client_spec.rb +++ b/spec/lib/gitlab/kas/client_spec.rb @@ -109,6 +109,35 @@ it { expect(subject).to eq(agent_configurations) } end + describe '#send_git_push_event' do + let(:stub) { instance_double(Gitlab::Agent::Notifications::Rpc::Notifications::Stub) } + let(:request) { instance_double(Gitlab::Agent::Notifications::Rpc::GitPushEventRequest) } + let(:project_param) { instance_double(Gitlab::Agent::Notifications::Rpc::Project) } + let(:response) { double(Gitlab::Agent::Notifications::Rpc::GitPushEventResponse) } + + subject { described_class.new.send_git_push_event(project: project) } + + before do + expect(Gitlab::Agent::Notifications::Rpc::Notifications::Stub).to receive(:new) + .with('example.kas.internal', :this_channel_is_insecure, timeout: described_class::TIMEOUT) + .and_return(stub) + + expect(Gitlab::Agent::Notifications::Rpc::Project).to receive(:new) + .with(id: project.id, full_path: project.full_path) + .and_return(project_param) + + expect(Gitlab::Agent::Notifications::Rpc::GitPushEventRequest).to receive(:new) + .with(project: project_param) + .and_return(request) + + expect(stub).to receive(:git_push_event) + .with(request, metadata: { 'authorization' => 'bearer test-token' }) + .and_return(response) + end + + it { expect(subject).to eq(response) } + end + describe 'with grpcs' do let(:stub) { instance_double(Gitlab::Agent::ConfigurationProject::Rpc::ConfigurationProject::Stub) } let(:credentials) { instance_double(GRPC::Core::ChannelCredentials) } -- GitLab