##// END OF EJS Templates
refactor(ssh-wrapper): changed SSHVcsServer to SshVcsServer, updated call_service_api method.
ilin.s -
r5326:cede61e3 default
parent child Browse files
Show More
@@ -24,7 +24,6 b' from sqlalchemy import Table'
24 24
25 25 from rhodecode.lib.api_utils import call_service_api
26 26 from rhodecode.lib.utils2 import AttributeDict
27 from rhodecode.lib.vcs.exceptions import ImproperlyConfiguredError
28 27
29 28 from .hg import MercurialServer
30 29 from .git import GitServer
@@ -265,35 +264,6 b' class SshWrapperStandalone(SshWrapper):'
265 264 New version of SshWrapper designed to be depended only on service API
266 265 """
267 266 repos_path = None
268 service_api_host: str
269 service_api_token: str
270 api_url: str
271
272 def __init__(self, command, connection_info, mode,
273 user, user_id, key_id: int, shell, ini_path: str, settings, env):
274
275 # validate our settings for making a standalone calls
276 try:
277 self.service_api_host = settings['app.service_api.host']
278 self.service_api_token = settings['app.service_api.token']
279 except KeyError:
280 raise ImproperlyConfiguredError(
281 "app.service_api.host or app.service_api.token are missing. "
282 "Please ensure that app.service_api.host and app.service_api.token are "
283 "defined inside of .ini configuration file."
284 )
285
286 try:
287 self.api_url = settings['rhodecode.api.url']
288 except KeyError:
289 raise ImproperlyConfiguredError(
290 "rhodecode.api.url is missing. "
291 "Please ensure that rhodecode.api.url is "
292 "defined inside of .ini configuration file."
293 )
294
295 super(SshWrapperStandalone, self).__init__(
296 command, connection_info, mode, user, user_id, key_id, shell, ini_path, settings, env)
297 267
298 268 @staticmethod
299 269 def parse_user_related_data(user_data):
@@ -326,7 +296,7 b' class SshWrapperStandalone(SshWrapper):'
326 296 exit_code = 1
327 297
328 298 elif scm_detected:
329 data = call_service_api(self.service_api_host, self.service_api_token, self.api_url, {
299 data = call_service_api(self.settings, {
330 300 "method": "service_get_data_for_ssh_wrapper",
331 301 "args": {"user_id": user_id, "repo_name": scm_repo, "key_id": self.key_id}
332 302 })
@@ -364,7 +334,7 b' class SshWrapperStandalone(SshWrapper):'
364 334 if repo_name.startswith('_'):
365 335 org_repo_name = repo_name
366 336 log.debug('translating UID repo %s', org_repo_name)
367 by_id_match = call_service_api(self.service_api_host, self.service_api_token, self.api_url, {
337 by_id_match = call_service_api(self.settings, {
368 338 'method': 'service_get_repo_name_by_id',
369 339 "args": {"repo_id": repo_name}
370 340 })
@@ -28,7 +28,7 b' from rhodecode.lib.api_utils import call'
28 28 log = logging.getLogger(__name__)
29 29
30 30
31 class SSHVcsServer(object):
31 class SshVcsServer(object):
32 32 repo_user_agent = None # set in child classes
33 33 _path = None # set executable path for hg/git/svn binary
34 34 backend = None # set in child classes
@@ -62,11 +62,7 b' class SSHVcsServer(object):'
62 62 from rhodecode.model.scm import ScmModel
63 63 ScmModel().mark_for_invalidation(repo_name)
64 64 case 'celery':
65 service_api_host = self.settings['app.service_api.host']
66 service_api_token = self.settings['app.service_api.token']
67 api_url = self.settings['rhodecode.api.url']
68
69 call_service_api(service_api_host, service_api_token, api_url, {
65 call_service_api(self.settings, {
70 66 "method": "service_mark_for_invalidation",
71 67 "args": {"repo_name": repo_name}
72 68 })
@@ -21,7 +21,7 b' import logging'
21 21 import subprocess
22 22
23 23 from vcsserver import hooks
24 from .base import SSHVcsServer
24 from .base import SshVcsServer
25 25
26 26 log = logging.getLogger(__name__)
27 27
@@ -70,7 +70,7 b' class GitTunnelWrapper(object):'
70 70 return result
71 71
72 72
73 class GitServer(SSHVcsServer):
73 class GitServer(SshVcsServer):
74 74 backend = 'git'
75 75 repo_user_agent = 'git'
76 76
@@ -23,7 +23,7 b' import tempfile'
23 23 import textwrap
24 24 import collections
25 25
26 from .base import SSHVcsServer
26 from .base import SshVcsServer
27 27
28 28 from rhodecode.lib.api_utils import call_service_api
29 29
@@ -94,7 +94,7 b' class MercurialTunnelWrapper(object):'
94 94 self.remove_configs()
95 95
96 96
97 class MercurialServer(SSHVcsServer):
97 class MercurialServer(SshVcsServer):
98 98 backend = 'hg'
99 99 repo_user_agent = 'mercurial'
100 100 cli_flags = ['phases', 'largefiles', 'extensions', 'experimental', 'hooks']
@@ -111,10 +111,7 b' class MercurialServer(SSHVcsServer):'
111 111 def config_to_hgrc(self, repo_name):
112 112 # Todo: once transition is done only call to service api should exist
113 113 if self.hooks_protocol == 'celery':
114 service_api_host = self.settings['app.service_api.host']
115 service_api_token = self.settings['app.service_api.token']
116 api_url = self.settings['rhodecode.api.url']
117 data = call_service_api(service_api_host, service_api_token, api_url, {
114 data = call_service_api(self.settings, {
118 115 "method": "service_config_to_hgrc",
119 116 "args": {"cli_flags": self.cli_flags, "repo_name": repo_name}
120 117 })
@@ -25,7 +25,7 b' import tempfile'
25 25 from subprocess import Popen, PIPE
26 26 import urllib.parse
27 27
28 from .base import SSHVcsServer
28 from .base import SshVcsServer
29 29
30 30 log = logging.getLogger(__name__)
31 31
@@ -218,7 +218,7 b' class SubversionTunnelWrapper(object):'
218 218 return self.return_code
219 219
220 220
221 class SubversionServer(SSHVcsServer):
221 class SubversionServer(SshVcsServer):
222 222 backend = 'svn'
223 223 repo_user_agent = 'svn'
224 224
@@ -20,16 +20,25 b' import urllib.parse'
20 20
21 21 from rhodecode.lib.vcs import CurlSession
22 22 from rhodecode.lib.ext_json import json
23 from rhodecode.lib.vcs.exceptions import ImproperlyConfiguredError
23 24
24 25
25 def call_service_api(service_api_host, service_api_token, api_url, payload):
26
26 def call_service_api(settings, payload):
27 try:
28 api_host = settings['app.service_api.host']
29 api_token = settings['app.service_api.token']
30 api_url = settings['rhodecode.api.url']
31 except KeyError as exc:
32 raise ImproperlyConfiguredError(
33 f"{str(exc)} is missing. "
34 "Please ensure that app.service_api.host, app.service_api.token and rhodecode.api.url are "
35 "defined inside of .ini configuration file."
36 )
27 37 payload.update({
28 38 'id': 'service',
29 'auth_token': service_api_token
39 'auth_token': api_token
30 40 })
31
32 service_api_url = urllib.parse.urljoin(service_api_host, api_url)
41 service_api_url = urllib.parse.urljoin(api_host, api_url)
33 42 response = CurlSession().post(service_api_url, json.dumps(payload))
34 43
35 44 if response.status_code != 200:
General Comments 0
You need to be logged in to leave comments. Login now