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.se |
|
|
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.se |
|
|
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 S |
|
|
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 |
|
|
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 S |
|
|
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(S |
|
|
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 S |
|
|
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(S |
|
|
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 |
|
|
|
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 S |
|
|
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(S |
|
|
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(se |
|
|
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': |
|
|
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