foreman_remote_execution 16.0.2 → 16.0.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 40f170b56effb3a3f7f415ac040d45242641bc3210266bf723d957a4337e8aa2
|
4
|
+
data.tar.gz: c6a8e5a792629049aa8e40fdc2a3b6b20cc182af3e0e3d1578e5e3614525e7d0
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 7b47defe2e23b8ce3ac1ebc08164749d7c2a03a133f78dfcb702c76cd4f434786b0dbeceb72c2d7ca47cedbd5d1f688175b9e0680245eac4e1064f9739d2b68c
|
7
|
+
data.tar.gz: c0d069ef4dde5b1a07cb38b60f0dcc7218487cc58a5a2961039f2603517a2fdc5060b603b4a13b5ff4c659a13b9b25eb836b59e5e3d6efbe1e69202364cc0f87
|
@@ -105,7 +105,11 @@ handle_zypp_res_codes () {
|
|
105
105
|
|
106
106
|
# Action
|
107
107
|
<% if package_manager == 'yum' -%>
|
108
|
-
|
108
|
+
<% if @host.respond_to?(:yum_or_yum_transient) -%>
|
109
|
+
<%= @host.yum_or_yum_transient %> -y <%= input("options") %> <%= action %> <%= input("package") %>
|
110
|
+
<% else -%>
|
111
|
+
yum -y <%= input("options") %> <%= action %> <%= input("package") %>
|
112
|
+
<% end -%>
|
109
113
|
<% elsif package_manager == 'apt' -%>
|
110
114
|
<%-
|
111
115
|
action = 'install' if action == 'group install'
|
@@ -1,4 +1,9 @@
|
|
1
|
-
import React
|
1
|
+
import React, {
|
2
|
+
useEffect,
|
3
|
+
useLayoutEffect,
|
4
|
+
useState,
|
5
|
+
useCallback,
|
6
|
+
} from 'react';
|
2
7
|
import PropTypes from 'prop-types';
|
3
8
|
import { Button } from '@patternfly/react-core';
|
4
9
|
import { translate as __ } from 'foremanReact/common/I18n';
|
@@ -55,6 +60,48 @@ export const OutputCodeBlock = ({ code, showOutputType, scrollElement }) => {
|
|
55
60
|
const filteredCode = code.filter(
|
56
61
|
({ output_type: outputType }) => showOutputType[outputType]
|
57
62
|
);
|
63
|
+
|
64
|
+
const scrollElementSelected = useCallback(
|
65
|
+
() => document.querySelector(scrollElement),
|
66
|
+
[scrollElement]
|
67
|
+
);
|
68
|
+
const onClickScrollToTop = useCallback(() => {
|
69
|
+
if (scrollElementSelected()) scrollElementSelected().scrollTo(0, 0);
|
70
|
+
}, [scrollElementSelected]);
|
71
|
+
|
72
|
+
const onClickScrollToBottom = useCallback(() => {
|
73
|
+
if (scrollElementSelected())
|
74
|
+
scrollElementSelected().scrollTo(0, scrollElementSelected().scrollHeight);
|
75
|
+
}, [scrollElementSelected]);
|
76
|
+
|
77
|
+
const [isScrolledBottom, setIsScrolledBottom] = useState(true);
|
78
|
+
useEffect(() => {
|
79
|
+
const element = scrollElementSelected();
|
80
|
+
const onScroll = () => {
|
81
|
+
if (
|
82
|
+
Math.abs(
|
83
|
+
element.scrollHeight - element.scrollTop - element.clientHeight
|
84
|
+
) < 1
|
85
|
+
)
|
86
|
+
setIsScrolledBottom(true);
|
87
|
+
else setIsScrolledBottom(false);
|
88
|
+
};
|
89
|
+
if (element) {
|
90
|
+
element.addEventListener('scroll', onScroll);
|
91
|
+
}
|
92
|
+
return () => {
|
93
|
+
if (element) {
|
94
|
+
element.removeEventListener('scroll', onScroll);
|
95
|
+
}
|
96
|
+
};
|
97
|
+
}, [scrollElementSelected]);
|
98
|
+
|
99
|
+
useLayoutEffect(() => {
|
100
|
+
if (isScrolledBottom) {
|
101
|
+
onClickScrollToBottom();
|
102
|
+
}
|
103
|
+
}, [code.length, isScrolledBottom, onClickScrollToBottom]);
|
104
|
+
|
58
105
|
if (!filteredCode.length) {
|
59
106
|
return <div>{__('No output for the selected filters')}</div>;
|
60
107
|
}
|
@@ -81,13 +128,7 @@ export const OutputCodeBlock = ({ code, showOutputType, scrollElement }) => {
|
|
81
128
|
);
|
82
129
|
});
|
83
130
|
});
|
84
|
-
|
85
|
-
const onClickScrollToTop = () => {
|
86
|
-
scrollElementSeleceted().scrollTo(0, 0);
|
87
|
-
};
|
88
|
-
const onClickScrollToBottom = () => {
|
89
|
-
scrollElementSeleceted().scrollTo(0, scrollElementSeleceted().scrollHeight);
|
90
|
-
};
|
131
|
+
|
91
132
|
return (
|
92
133
|
<div className="invocation-output">
|
93
134
|
<Button
|
metadata
CHANGED
@@ -1,13 +1,13 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: foreman_remote_execution
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 16.0.
|
4
|
+
version: 16.0.3
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Foreman Remote Execution team
|
8
8
|
bindir: bin
|
9
9
|
cert_chain: []
|
10
|
-
date: 2025-
|
10
|
+
date: 2025-05-13 00:00:00.000000000 Z
|
11
11
|
dependencies:
|
12
12
|
- !ruby/object:Gem::Dependency
|
13
13
|
name: deface
|
@@ -92,8 +92,8 @@ email:
|
|
92
92
|
executables: []
|
93
93
|
extensions: []
|
94
94
|
extra_rdoc_files:
|
95
|
-
- README.md
|
96
95
|
- LICENSE
|
96
|
+
- README.md
|
97
97
|
files:
|
98
98
|
- LICENSE
|
99
99
|
- README.md
|
@@ -605,7 +605,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
605
605
|
- !ruby/object:Gem::Version
|
606
606
|
version: '0'
|
607
607
|
requirements: []
|
608
|
-
rubygems_version: 3.6.
|
608
|
+
rubygems_version: 3.6.7
|
609
609
|
specification_version: 4
|
610
610
|
summary: A plugin bringing remote execution to the Foreman, completing the config
|
611
611
|
management functionality with remote management functionality.
|