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: 7caeb3e80948285d1309b9837215de256dbf364739b3a7e8fcbc7a2dbe25784f
4
- data.tar.gz: 45cc57f3a3ff4f53b8ca06aee5561d13ce4171b483c75052915b18c503786f6a
3
+ metadata.gz: 40f170b56effb3a3f7f415ac040d45242641bc3210266bf723d957a4337e8aa2
4
+ data.tar.gz: c6a8e5a792629049aa8e40fdc2a3b6b20cc182af3e0e3d1578e5e3614525e7d0
5
5
  SHA512:
6
- metadata.gz: e9ffb89e10d120b7599f4c0eb129d1a65735063cddddd74126b67463243118c3641cc14f82285c155c15d5e2e5fd596f71865b63b5476a8bbb2d64521b837610
7
- data.tar.gz: 1f786339afd9c4ab35dd55e8d84bb5d72c0cca491e374c2439838837c449ce26e83d583770690d88e02550bddc941be10831596a628c2e98e7e7a782661a168c
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
- yum -y <%= input("options") %> <%= action %> <%= input("package") %>
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,3 +1,3 @@
1
1
  module ForemanRemoteExecution
2
- VERSION = '16.0.2'.freeze
2
+ VERSION = '16.0.3'.freeze
3
3
  end
@@ -1,4 +1,9 @@
1
- import React from '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
- const scrollElementSeleceted = () => document.querySelector(scrollElement);
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.2
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-04-09 00:00:00.000000000 Z
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.2
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.