Skip to content

Commit bcdaf2a

Browse files
1.7.3
Changelog: * Add Popen args and kwargs to `on_execute` hook message. * Fix doc styles static. See merge request polemarch/ce!193
2 parents 30e5981 + 471dbb0 commit bcdaf2a

File tree

11 files changed

+69
-35
lines changed

11 files changed

+69
-35
lines changed

.pylintrc

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -65,7 +65,7 @@ confidence=
6565
# --enable=similarities". If you want to run only the classes checker, but have
6666
# no Warning level messages displayed, use"--disable=all --enable=classes
6767
# --disable=W"
68-
disable=unexpected-keyword-arg,no-name-in-module,useless-super-delegation,len-as-condition,super-init-not-called,keyword-arg-before-vararg,no-else-return,no-self-argument,inconsistent-return-statements,unsubscriptable-object,too-many-branches,deprecated-lambda,old-style-class,no-init,expression-not-assigned,broad-except,logging-format-interpolation,model-no-explicit-unicode,too-many-ancestors,bad-continuation,bad-whitespace,redefined-builtin,missing-docstring,redefined-variable-type,no-self-use,line-too-long,suppressed-message,cmp-method,no-absolute-import,xrange-builtin,using-cmp-argument,basestring-builtin,backtick,unpacking-in-except,old-raise-syntax,getslice-method,long-builtin,print-statement,reduce-builtin,filter-builtin-not-iterating,import-star-module-level,unichr-builtin,dict-iter-method,range-builtin-not-iterating,file-builtin,old-division,standarderror-builtin,coerce-builtin,setslice-method,old-ne-operator,long-suffix,execfile-builtin,oct-method,metaclass-assignment,intern-builtin,apply-builtin,dict-view-method,raw_input-builtin,raising-string,coerce-method,unicode-builtin,next-method-called,hex-method,nonzero-method,round-builtin,cmp-builtin,reload-builtin,buffer-builtin,useless-suppression,zip-builtin-not-iterating,indexing-exception,map-builtin-not-iterating,delslice-method,old-octal-literal,input-builtin,parameter-unpacking,model-has-unicode,bare-except,too-few-public-methods,fixme,dangerous-default-value,attribute-defined-outside-init,pointless-string-statement,too-many-instance-attributes,arguments-differ,binary-op-exception,bad-classmethod-argument,locally-disabled,file-ignored,multiple-statements,superfluous-parens,bad-mcs-classmethod-argument,useless-object-inheritance
68+
disable=logging-fstring-interpolation,unexpected-keyword-arg,no-name-in-module,useless-super-delegation,len-as-condition,super-init-not-called,keyword-arg-before-vararg,no-else-return,no-self-argument,inconsistent-return-statements,unsubscriptable-object,too-many-branches,deprecated-lambda,old-style-class,no-init,expression-not-assigned,broad-except,logging-format-interpolation,model-no-explicit-unicode,too-many-ancestors,bad-continuation,bad-whitespace,redefined-builtin,missing-docstring,redefined-variable-type,no-self-use,line-too-long,suppressed-message,cmp-method,no-absolute-import,xrange-builtin,using-cmp-argument,basestring-builtin,backtick,unpacking-in-except,old-raise-syntax,getslice-method,long-builtin,print-statement,reduce-builtin,filter-builtin-not-iterating,import-star-module-level,unichr-builtin,dict-iter-method,range-builtin-not-iterating,file-builtin,old-division,standarderror-builtin,coerce-builtin,setslice-method,old-ne-operator,long-suffix,execfile-builtin,oct-method,metaclass-assignment,intern-builtin,apply-builtin,dict-view-method,raw_input-builtin,raising-string,coerce-method,unicode-builtin,next-method-called,hex-method,nonzero-method,round-builtin,cmp-builtin,reload-builtin,buffer-builtin,useless-suppression,zip-builtin-not-iterating,indexing-exception,map-builtin-not-iterating,delslice-method,old-octal-literal,input-builtin,parameter-unpacking,model-has-unicode,bare-except,too-few-public-methods,fixme,dangerous-default-value,attribute-defined-outside-init,pointless-string-statement,too-many-instance-attributes,arguments-differ,binary-op-exception,bad-classmethod-argument,locally-disabled,file-ignored,multiple-statements,superfluous-parens,bad-mcs-classmethod-argument,useless-object-inheritance
6969

7070

7171
[REPORTS]

doc/_static/ce-docs.css

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
.text-logo {
2+
margin-left: auto;
3+
width: 165px;
4+
float: inherit;
5+
}
6+
7+
.sidebar-collapse .text-logo {
8+
display: none;
9+
}
10+
11+
.sidebar-collapse .main-sidebar:hover .text-logo {
12+
display: inline-block;
13+
}
14+
15+
#indices-and-tables > h1 {
16+
font-size: 140%;
17+
}
18+
.post {
19+
border-bottom: none;
20+
}
21+
22+
.main-footer {
23+
display: flex;
24+
justify-content: space-between;
25+
}
26+
27+
.social {
28+
font-size: 20px;
29+
}

doc/polemarch-sphinx-theme/layout.html

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
11
{% extends "vst-sphinx-theme/layout.html" %}
22

3-
{%- block scripts %}
4-
{{- super() }}
5-
<script src="{{ pathto('_static/polemarch/doc.js', 1) }}"></script>
3+
{%- block css %}
4+
{{- super() }}
5+
<link rel="stylesheet" href="{{ pathto('_static/ce-docs.css', 1) }}" type="text/css" />
66
{%- endblock %}
77

88
{% block logo %}

frontend_src/doc.css

Lines changed: 0 additions & 16 deletions
This file was deleted.

frontend_src/doc.js

Lines changed: 0 additions & 2 deletions
This file was deleted.

polemarch/__init__.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,6 @@
3131
"VST_ROOT_URLCONF": os.getenv("VST_ROOT_URLCONF", 'vstutils.urls'),
3232
}
3333

34-
__version__ = "1.7.2"
34+
__version__ = "1.7.3"
3535

3636
prepare_environment(**default_settings)

polemarch/main/hooks/script.py

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -23,9 +23,13 @@ def execute(self, script, when, file) -> str:
2323
)
2424
except BaseException as err:
2525
logger.error(traceback.format_exc())
26-
logger.error("Details:\nSCRIPT:{}\nWHEN:{}\nCWD:{}\n".format(
27-
script, when, self.conf['HOOKS_DIR']
28-
))
26+
logger.error(
27+
f'Details:\n'
28+
f'SCRIPT:{script}\n'
29+
f'WHEN:{when}\n'
30+
f'CWD:{self.conf["HOOKS_DIR"]}\n'
31+
f'ERR:{str(err)}\n'
32+
)
2933
return str(err)
3034

3135
def setup(self, **kwargs):

polemarch/main/models/utils.py

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -208,7 +208,7 @@ def _verbose_output(self, value: Text, level: int = 3) -> NoReturn:
208208
def _get_tmp_name(self) -> Text:
209209
return os.path.join(self.cwd, 'project_sources')
210210

211-
def _send_hook(self, when: Text) -> NoReturn:
211+
def _send_hook(self, when: Text, **kwargs) -> NoReturn:
212212
msg = OrderedDict()
213213
msg['execution_type'] = self.history.kind
214214
msg['when'] = when
@@ -220,6 +220,7 @@ def _send_hook(self, when: Text) -> NoReturn:
220220
msg['target']['inventory'] = inventory
221221
msg['target']['project'] = self.project.get_hook_data(when)
222222
msg['history'] = self.history.get_hook_data(when)
223+
msg['extra'] = kwargs
223224
self.project.hook(when, msg)
224225

225226
def __generate_arg_file(self, value: Text) -> Tuple[Text, List[tmp_file]]:
@@ -391,11 +392,12 @@ def error_handler(self, exception: BaseException) -> NoReturn:
391392
def execute(self, target: Text, inventory: Any, history: History, project: Project, **extra_args) -> NoReturn:
392393
try:
393394
self.prepare(target, inventory, history, project)
394-
self._send_hook('on_execution')
395395
self.history.status = "OK"
396396
extra = self.__parse_extra_args(**extra_args)
397397
args = self.get_args(self.target, extra.args)
398-
self.executor.execute(args, **self.get_kwargs(self.target, extra.args))
398+
kwargs = self.get_kwargs(self.target, extra.args)
399+
self._send_hook('on_execution', args=args, kwargs=kwargs)
400+
self.executor.execute(args, **kwargs)
399401
except Exception as exception:
400402
logger.error(traceback.format_exc())
401403
self.error_handler(exception)

polemarch/main/tests/_base.py

Lines changed: 10 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,16 @@
11
import json # noqa: F401
22

33
import os
4+
import stat
5+
from pathlib import Path
46
from vstutils.tests import BaseTestCase as VSTBaseTestCase
57
from ...main import models
68

7-
hook_data = '''
8-
echo "OK"
9+
hook_data = '''#!/bin/bash
10+
11+
echo "OK";
12+
echo $(cat -);
13+
# exit 1;
914
'''
1015

1116

@@ -32,8 +37,10 @@ def tearDown(self):
3237
pass
3338

3439
def create_hook(self, hook):
35-
with open(self.get_hook_path(hook), 'w') as hook_fd:
40+
hook_path = Path(self.get_hook_path(hook))
41+
with hook_path.open('w') as hook_fd:
3642
hook_fd.write(hook_data)
43+
hook_path.chmod(hook_path.stat().st_mode | stat.S_IEXEC)
3744
self.hooks.append(hook)
3845

3946
def generate_hooks(self, hooks):

polemarch/main/tests/hosts.py

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,11 @@
1+
import logging
2+
from subprocess import check_output
13
from ._base import BaseTestCase, json
24

35

6+
logger = logging.getLogger('polemarch')
7+
8+
49
class InvBaseTestCase(BaseTestCase):
510
def setUp(self):
611
super(InvBaseTestCase, self).setUp()
@@ -155,9 +160,15 @@ def test_hosts(self):
155160
self.generate_hooks(scripts)
156161
self.mass_create_bulk('hook', data)
157162
##
163+
164+
def side_effect_for_hooks(*args, **kwargs):
165+
result = check_output(*args, **kwargs)
166+
logger.debug(result)
167+
return result
168+
158169
with self.patch('subprocess.check_output') as mock:
159170
iterations = 3 * len(scripts)
160-
mock.side_effect = [''] * iterations
171+
mock.side_effect = side_effect_for_hooks
161172
results = self.make_bulk(bulk_data, 'put')
162173
self.assertEqual(mock.call_count, iterations)
163174
self.assertEqual(results[0]['status'], 201)

0 commit comments

Comments
 (0)