foreman_fog_proxmox 0.18.1 → 0.19.1
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 +4 -4
- data/app/models/foreman_fog_proxmox/proxmox.rb +4 -4
- data/app/models/foreman_fog_proxmox/proxmox_version.rb +1 -0
- data/app/views/compute_resources_vms/form/proxmox/_base.html.erb +1 -1
- data/app/views/compute_resources_vms/form/proxmox/container/_network.html.erb +2 -2
- data/lib/foreman_fog_proxmox/engine.rb +1 -1
- data/lib/foreman_fog_proxmox/version.rb +1 -1
- data/package.json +7 -7
- data/webpack/components/ProxmoxContainer/ProxmoxContainerHardware.js +6 -2
- data/webpack/components/ProxmoxContainer/ProxmoxContainerNetwork.js +6 -2
- data/webpack/components/ProxmoxContainer/ProxmoxContainerStorage.js +15 -4
- data/webpack/components/ProxmoxServer/ProxmoxServerHardware.js +11 -3
- data/webpack/components/ProxmoxServer/ProxmoxServerNetwork.js +6 -2
- data/webpack/components/ProxmoxServer/ProxmoxServerStorage.js +12 -3
- data/webpack/components/ProxmoxServer/components/CDRom.js +15 -6
- data/webpack/components/ProxmoxServer/components/CPUFlagsModal.js +21 -6
- data/webpack/components/ProxmoxVmType.js +6 -0
- metadata +22 -25
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: d33ba66a9b7acebd9d90dcb30dd674ce56b6dc9f163be3058e0638afdcb9d469
|
4
|
+
data.tar.gz: 0dd4eea9468557e5d88f1b30acab223e17a900657a5a3e7ab609fabc4265ae8b
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 879a29517ecaa8129d2253959819fae1b4e203c85b1e28fce114e08a8c248d991ccd125bbb9b9ac49c8e07621b9754dbf5ffdfdcf320edb7019074bddca65b4c
|
7
|
+
data.tar.gz: 4f2a0640189b83fe993d46ded2eb8106fdc86ec69a1e9693bf0830b7cd9486f2d997adcb8265d1f70933cc1d2378831389f50d8ff853914f45ef083380cda32e
|
@@ -151,7 +151,7 @@ module ForemanFogProxmox
|
|
151
151
|
def client
|
152
152
|
@client ||= ::Fog::Proxmox::Compute.new(fog_credentials)
|
153
153
|
rescue Excon::Errors::Unauthorized => e
|
154
|
-
raise ::Foreman::Exception, 'User token expired'
|
154
|
+
raise ::Foreman::Exception, token_expired?(e) ? 'User token expired' : "Authentication Failure: #{error_message(e)}"
|
155
155
|
rescue StandardError => e
|
156
156
|
logger.warn("failed to create compute client: #{e}")
|
157
157
|
raise ::Foreman::Exception, error_message(e)
|
@@ -160,7 +160,7 @@ module ForemanFogProxmox
|
|
160
160
|
def identity_client
|
161
161
|
@identity_client ||= ::Fog::Proxmox::Identity.new(fog_credentials)
|
162
162
|
rescue Excon::Errors::Unauthorized => e
|
163
|
-
raise ::Foreman::Exception, 'User token expired'
|
163
|
+
raise ::Foreman::Exception, token_expired?(e) ? 'User token expired' : "Authentication Failure: #{error_message(e)}"
|
164
164
|
rescue StandardError => e
|
165
165
|
logger.warn("failed to create identity client: #{e}")
|
166
166
|
raise ::Foreman::Exception, error_message(e)
|
@@ -169,14 +169,14 @@ module ForemanFogProxmox
|
|
169
169
|
def network_client
|
170
170
|
@network_client ||= ::Fog::Proxmox::Network.new(fog_credentials)
|
171
171
|
rescue Excon::Errors::Unauthorized => e
|
172
|
-
raise ::Foreman::Exception, 'User token expired'
|
172
|
+
raise ::Foreman::Exception, token_expired?(e) ? 'User token expired' : "Authentication Failure: #{error_message(e)}"
|
173
173
|
rescue StandardError => e
|
174
174
|
logger.warn("failed to create network client: #{e}")
|
175
175
|
raise ::Foreman::Exception, error_message(e)
|
176
176
|
end
|
177
177
|
|
178
178
|
def error_message(e)
|
179
|
-
"Failed to create Proxmox compute resource: #{e.
|
179
|
+
"Failed to create Proxmox compute resource: #{e.response.reason_phrase}.
|
180
180
|
Either provided credentials or FQDN is wrong or
|
181
181
|
your server cannot connect to Proxmox due to network issues."
|
182
182
|
end
|
@@ -36,6 +36,7 @@ module ForemanFogProxmox
|
|
36
36
|
v = identity_client.read_version if identity_client
|
37
37
|
v ? v['version'] : 'Unknown'
|
38
38
|
rescue ::Foreman::Exception => e
|
39
|
+
logger.warn("Foreman::Exception => failed to fetch identity client version: #{e}")
|
39
40
|
'Unkown' if e.message == 'User token expired'
|
40
41
|
rescue StandardError => e
|
41
42
|
logger.warn("failed to get identity client version: #{e}")
|
@@ -24,7 +24,7 @@ along with ForemanFogProxmox. If not, see <http://www.gnu.org/licenses/>. %>
|
|
24
24
|
<%= select_f f, :image_id, images, :uuid, :name, { :include_blank => true },
|
25
25
|
:disabled => true,
|
26
26
|
:help_inline => :indicator,
|
27
|
-
:class => ('hide' if from_profile),
|
27
|
+
:class => ("without_select2 #{'hide' if from_profile}"),
|
28
28
|
:label => _('Image'),
|
29
29
|
:no_label => from_profile,
|
30
30
|
:label_size => "col-md-2" %>
|
@@ -30,5 +30,5 @@ along with ForemanFogProxmox. If not, see <http://www.gnu.org/licenses/>. %>
|
|
30
30
|
<%= text_f f, :tag, :class => "input-mini", :label => _('VLAN tag'), :label_size => "col-md-2" %>
|
31
31
|
<%= text_f f, :rate, :class => "input-mini", :label => _('Rate limit'), :label_size => "col-md-2" %>
|
32
32
|
<%= checkbox_f f, :firewall, :label => _('Firewall') %>
|
33
|
-
<%= select_f f, :bridge, compute_resource.bridges(node_id), :iface, :iface, { }, :label => _('Bridge'), :label_size => "col-md-2" %>
|
34
|
-
<% end %>
|
33
|
+
<%= select_f f, :bridge, compute_resource.bridges(node_id), :iface, :iface, { }, :label => _('Bridge'), :label_size => "col-md-2", :id => "host_interfaces_attributes_0_compute_attributes_bridge_1" %>
|
34
|
+
<% end %>
|
@@ -33,7 +33,7 @@ module ForemanFogProxmox
|
|
33
33
|
initializer 'foreman_fog_proxmox.register_plugin', :before => :finisher_hook do |app|
|
34
34
|
app.reloader.to_prepare do
|
35
35
|
Foreman::Plugin.register :foreman_fog_proxmox do
|
36
|
-
requires_foreman '>=
|
36
|
+
requires_foreman '>= 3.15'
|
37
37
|
# Add Global files for extending foreman-core components and routes
|
38
38
|
register_global_js_file 'global'
|
39
39
|
# Register Proxmox VE compute resource in foreman
|
data/package.json
CHANGED
@@ -5,7 +5,7 @@
|
|
5
5
|
"main": "index.js",
|
6
6
|
"scripts": {
|
7
7
|
"lint": "tfm-lint --plugin -d webpack",
|
8
|
-
"test": "tfm-test --
|
8
|
+
"test": "tfm-test --plugin --passWithNoTests",
|
9
9
|
"test:watch": "tfm-test --plugin --watchAll",
|
10
10
|
"test:current": "tfm-test --plugin --watch",
|
11
11
|
"publish-coverage": "tfm-publish-coverage",
|
@@ -21,18 +21,18 @@
|
|
21
21
|
"url": "http://projects.theforeman.org/projects/foreman_fog_proxmox/issues"
|
22
22
|
},
|
23
23
|
"peerDependencies": {
|
24
|
-
"@theforeman/vendor": "^
|
24
|
+
"@theforeman/vendor": "^15.0.1"
|
25
25
|
},
|
26
26
|
"dependencies": {
|
27
27
|
"react-intl": "^2.8.0"
|
28
28
|
},
|
29
29
|
"devDependencies": {
|
30
30
|
"@babel/core": "^7.7.0",
|
31
|
-
"@theforeman/builder": ">=
|
32
|
-
"@theforeman/eslint-plugin-foreman": ">=
|
33
|
-
"@theforeman/find-foreman": ">=
|
34
|
-
"@theforeman/test": ">=
|
35
|
-
"@theforeman/vendor-dev": ">=
|
31
|
+
"@theforeman/builder": ">= 15.0.1",
|
32
|
+
"@theforeman/eslint-plugin-foreman": ">= 15.0.1",
|
33
|
+
"@theforeman/find-foreman": ">= 15.0.1",
|
34
|
+
"@theforeman/test": ">= 15.0.1",
|
35
|
+
"@theforeman/vendor-dev": ">= 15.0.1",
|
36
36
|
"babel-eslint": "^10.0.3",
|
37
37
|
"eslint": "^6.7.2",
|
38
38
|
"prettier": "^1.19.1",
|
@@ -20,7 +20,9 @@ const ProxmoxContainerHardware = ({ hardware }) => {
|
|
20
20
|
return (
|
21
21
|
<div>
|
22
22
|
<PageSection padding={{ default: 'noPadding' }}>
|
23
|
-
<Title headingLevel="h3">
|
23
|
+
<Title ouiaId="proxmox-container-hardware-cpu" headingLevel="h3">
|
24
|
+
{__('CPU')}
|
25
|
+
</Title>
|
24
26
|
<Divider component="li" style={{ marginBottom: '2rem' }} />
|
25
27
|
<InputField
|
26
28
|
name={hw?.arch?.name}
|
@@ -53,7 +55,9 @@ const ProxmoxContainerHardware = ({ hardware }) => {
|
|
53
55
|
/>
|
54
56
|
</PageSection>
|
55
57
|
<PageSection padding={{ default: 'noPadding' }}>
|
56
|
-
<Title headingLevel="h3">
|
58
|
+
<Title ouiaId="proxmox-container-hardware-memory" headingLevel="h3">
|
59
|
+
{__('Memory')}
|
60
|
+
</Title>
|
57
61
|
<Divider component="li" style={{ marginBottom: '2rem' }} />
|
58
62
|
<InputField
|
59
63
|
name={hw?.memory?.name}
|
@@ -129,7 +129,11 @@ const ProxmoxContainerNetwork = ({ network, bridges, paramScope }) => {
|
|
129
129
|
return (
|
130
130
|
<div>
|
131
131
|
<PageSection padding={{ default: 'noPadding' }}>
|
132
|
-
<Button
|
132
|
+
<Button
|
133
|
+
ouiaId="proxmox-container-network-interface"
|
134
|
+
onClick={addInterface}
|
135
|
+
variant="secondary"
|
136
|
+
>
|
133
137
|
{__('Add Interface')}
|
134
138
|
</Button>
|
135
139
|
{interfaces.map(nic => (
|
@@ -142,7 +146,7 @@ const ProxmoxContainerNetwork = ({ network, bridges, paramScope }) => {
|
|
142
146
|
alignItems: 'center',
|
143
147
|
}}
|
144
148
|
>
|
145
|
-
<Title headingLevel="h4">
|
149
|
+
<Title ouiaId="proxmox-container-network-nic" headingLevel="h4">
|
146
150
|
{sprintf(__('Nic %(nicId)s'), { nicId: nic.id })}
|
147
151
|
</Title>
|
148
152
|
<button onClick={() => removeInterface(nic.id)} type="button">
|
@@ -112,7 +112,9 @@ const ProxmoxContainerStorage = ({ storage, storages, nodeId, paramScope }) => {
|
|
112
112
|
return (
|
113
113
|
<div>
|
114
114
|
<PageSection padding={{ default: 'noPadding' }}>
|
115
|
-
<Title headingLevel="h3">
|
115
|
+
<Title ouiaId="proxmox-container-storage-rootfs" headingLevel="h3">
|
116
|
+
{__('Rootfs')}
|
117
|
+
</Title>
|
116
118
|
<Divider component="li" style={{ marginBottom: '2rem' }} />
|
117
119
|
<InputField
|
118
120
|
name={rootfs?.storage?.name}
|
@@ -142,9 +144,15 @@ const ProxmoxContainerStorage = ({ storage, storages, nodeId, paramScope }) => {
|
|
142
144
|
/>
|
143
145
|
</PageSection>
|
144
146
|
<PageSection padding={{ default: 'noPadding' }}>
|
145
|
-
<Title headingLevel="h3">
|
147
|
+
<Title ouiaId="proxmox-container-storage-title" headingLevel="h3">
|
148
|
+
Storage
|
149
|
+
</Title>
|
146
150
|
<Divider component="li" style={{ marginBottom: '2rem' }} />
|
147
|
-
<Button
|
151
|
+
<Button
|
152
|
+
ouiaId="proxmox-container-storage-mountpoint-button"
|
153
|
+
onClick={addMountPoint}
|
154
|
+
variant="secondary"
|
155
|
+
>
|
148
156
|
{__('Add MountPoint')}
|
149
157
|
</Button>
|
150
158
|
{mountPoints.map(mountPoint => (
|
@@ -157,7 +165,10 @@ const ProxmoxContainerStorage = ({ storage, storages, nodeId, paramScope }) => {
|
|
157
165
|
alignItems: 'center',
|
158
166
|
}}
|
159
167
|
>
|
160
|
-
<Title
|
168
|
+
<Title
|
169
|
+
ouiaId="proxmox-container-storage-mountpoint-title"
|
170
|
+
headingLevel="h4"
|
171
|
+
>
|
161
172
|
{sprintf(__('Mount Point %(mp)s'), { mp: mountPoint.id })}
|
162
173
|
</Title>
|
163
174
|
<button onClick={() => removeMountPoint(mountPoint.id)}>
|
@@ -91,7 +91,9 @@ const ProxmoxServerHardware = ({ hardware }) => {
|
|
91
91
|
return (
|
92
92
|
<div>
|
93
93
|
<PageSection padding={{ default: 'noPadding' }}>
|
94
|
-
<Title headingLevel="h3">
|
94
|
+
<Title ouiaId="proxmox-server-hardware-cpu" headingLevel="h3">
|
95
|
+
{__('CPU')}
|
96
|
+
</Title>
|
95
97
|
<Divider component="li" style={{ marginBottom: '2rem' }} />
|
96
98
|
<InputField
|
97
99
|
name={hw?.cpuType?.name}
|
@@ -145,7 +147,11 @@ const ProxmoxServerHardware = ({ hardware }) => {
|
|
145
147
|
onChange={handleChange}
|
146
148
|
/>
|
147
149
|
<div style={{ marginLeft: '5%', display: 'inline-block' }}>
|
148
|
-
<Button
|
150
|
+
<Button
|
151
|
+
ouiaId="proxmox-server-hardware-cpu-flags"
|
152
|
+
variant="link"
|
153
|
+
onClick={handleModalToggle}
|
154
|
+
>
|
149
155
|
{__('Extra CPU Flags')}
|
150
156
|
</Button>
|
151
157
|
</div>
|
@@ -165,7 +171,9 @@ const ProxmoxServerHardware = ({ hardware }) => {
|
|
165
171
|
))}
|
166
172
|
</PageSection>
|
167
173
|
<PageSection padding={{ default: 'noPadding' }}>
|
168
|
-
<Title headingLevel="h3">
|
174
|
+
<Title ouiaId="proxmox-server-hardware-memory" headingLevel="h3">
|
175
|
+
{__('Memory')}
|
176
|
+
</Title>
|
169
177
|
<Divider component="li" style={{ marginBottom: '2rem' }} />
|
170
178
|
<InputField
|
171
179
|
name={hw?.memory?.name}
|
@@ -111,7 +111,11 @@ const ProxmoxServerNetwork = ({ network, bridges, paramScope }) => {
|
|
111
111
|
return (
|
112
112
|
<div>
|
113
113
|
<PageSection padding={{ default: 'noPadding' }}>
|
114
|
-
<Button
|
114
|
+
<Button
|
115
|
+
ouiaId="proxmox-server-network-interface"
|
116
|
+
onClick={addInterface}
|
117
|
+
variant="secondary"
|
118
|
+
>
|
115
119
|
{__('Add Interface')}
|
116
120
|
</Button>
|
117
121
|
{interfaces.map(nic => (
|
@@ -124,7 +128,7 @@ const ProxmoxServerNetwork = ({ network, bridges, paramScope }) => {
|
|
124
128
|
alignItems: 'center',
|
125
129
|
}}
|
126
130
|
>
|
127
|
-
<Title headingLevel="h4">
|
131
|
+
<Title ouiaId="proxmox-server-network-nic" headingLevel="h4">
|
128
132
|
{sprintf(__('Nic %(nicId)s'), { nicId: nic.id })}
|
129
133
|
</Title>
|
130
134
|
<button onClick={() => removeInterface(nic.id)} type="button">
|
@@ -210,12 +210,21 @@ const ProxmoxServerStorage = ({ storage, storages, paramScope, nodeId }) => {
|
|
210
210
|
return (
|
211
211
|
<div>
|
212
212
|
<PageSection padding={{ default: 'noPadding' }}>
|
213
|
-
<Button
|
213
|
+
<Button
|
214
|
+
ouiaId="proxmox-server-storage-cdrom"
|
215
|
+
onClick={addCDRom}
|
216
|
+
variant="secondary"
|
217
|
+
isDisabled={cdRom}
|
218
|
+
>
|
214
219
|
{' '}
|
215
220
|
{__('Add CD-ROM')}
|
216
221
|
</Button>
|
217
222
|
{' '}
|
218
|
-
<Button
|
223
|
+
<Button
|
224
|
+
ouiaId="proxmox-server-storage-harddisk"
|
225
|
+
onClick={addHardDisk}
|
226
|
+
variant="secondary"
|
227
|
+
>
|
219
228
|
{__('Add HardDisk')}
|
220
229
|
</Button>
|
221
230
|
{cdRom && cdRomData && (
|
@@ -242,7 +251,7 @@ const ProxmoxServerStorage = ({ storage, storages, paramScope, nodeId }) => {
|
|
242
251
|
alignItems: 'center',
|
243
252
|
}}
|
244
253
|
>
|
245
|
-
<Title headingLevel="h4">
|
254
|
+
<Title ouiaId="proxmox-server-storage-harddisk" headingLevel="h4">
|
246
255
|
{sprintf(__('Hard Disk %(hddId)s'), { hddId: hardDisk.id })}
|
247
256
|
</Title>
|
248
257
|
<button onClick={() => removeHardDisk(hardDisk.id)} type="button">
|
@@ -51,7 +51,9 @@ const CDRom = ({ onRemove, data, storages, nodeId }) => {
|
|
51
51
|
alignItems: 'center',
|
52
52
|
}}
|
53
53
|
>
|
54
|
-
<Title headingLevel="h4">
|
54
|
+
<Title ouiaId="proxmox-server-cdrom-title" headingLevel="h4">
|
55
|
+
{__('CD-ROM')}
|
56
|
+
</Title>
|
55
57
|
<button onClick={onRemove}>
|
56
58
|
<TimesIcon />
|
57
59
|
</button>
|
@@ -64,38 +66,45 @@ const CDRom = ({ onRemove, data, storages, nodeId }) => {
|
|
64
66
|
alignItems: 'center',
|
65
67
|
}}
|
66
68
|
>
|
67
|
-
<Title headingLevel="h5">
|
69
|
+
<Title ouiaId="proxmox-server-cdrom-media-title" headingLevel="h5">
|
70
|
+
{__('Media')}
|
71
|
+
</Title>
|
68
72
|
</div>
|
69
73
|
<Divider component="li" style={{ marginBottom: '1rem' }} />
|
70
74
|
<div style={{ display: 'flex', gap: '1rem' }}>
|
71
75
|
<Radio
|
76
|
+
ouiaId="proxmox-server-cdrom-media-none"
|
72
77
|
id="radio-none"
|
73
78
|
name={cdrom?.cdrom?.name}
|
74
79
|
label={__('None')}
|
75
80
|
value="none"
|
76
81
|
isChecked={cdrom?.cdrom?.value === 'none'}
|
77
|
-
onChange={handleMediaChange}
|
82
|
+
onChange={(e, _) => handleMediaChange(_, e)}
|
78
83
|
/>
|
79
84
|
<Radio
|
85
|
+
ouiaId="proxmox-server-cdrom-media-physical"
|
80
86
|
id="radio-physical"
|
81
87
|
name={cdrom?.cdrom?.name}
|
82
88
|
label={__('Physical')}
|
83
89
|
value="physical"
|
84
90
|
isChecked={cdrom?.cdrom?.value === 'physical'}
|
85
|
-
onChange={handleMediaChange}
|
91
|
+
onChange={(e, _) => handleMediaChange(_, e)}
|
86
92
|
/>
|
87
93
|
<Radio
|
94
|
+
ouiaId="proxmox-server-cdrom-media-image"
|
88
95
|
id="radio-image"
|
89
96
|
name={cdrom?.cdrom?.name}
|
90
97
|
label={__('Image')}
|
91
98
|
value="image"
|
92
99
|
isChecked={cdrom?.cdrom?.value === 'image'}
|
93
|
-
onChange={handleMediaChange}
|
100
|
+
onChange={(e, _) => handleMediaChange(_, e)}
|
94
101
|
/>
|
95
102
|
</div>
|
96
103
|
{cdrom?.cdrom?.value === 'image' && (
|
97
104
|
<PageSection padding={{ default: 'noPadding' }}>
|
98
|
-
<Title headingLevel="h5">
|
105
|
+
<Title ouiaId="proxmox-server-cdrom-image-title" headingLevel="h5">
|
106
|
+
{__('Image')}
|
107
|
+
</Title>
|
99
108
|
<Divider component="li" style={{ marginBottom: '2rem' }} />
|
100
109
|
<InputField
|
101
110
|
label={__('Storage')}
|
@@ -1,7 +1,7 @@
|
|
1
1
|
import React from 'react';
|
2
2
|
import { Modal, Button } from '@patternfly/react-core';
|
3
3
|
import { translate as __ } from 'foremanReact/common/I18n';
|
4
|
-
import {
|
4
|
+
import { Thead, Tr, Th, Tbody, Td, Table } from '@patternfly/react-table';
|
5
5
|
import PropTypes from 'prop-types';
|
6
6
|
import ProxmoxComputeSelectors from '../../ProxmoxComputeSelectors';
|
7
7
|
|
@@ -20,6 +20,7 @@ const CPUFlagsModal = ({ isOpen, onClose, flags, handleChange }) => {
|
|
20
20
|
return (
|
21
21
|
<div>
|
22
22
|
<Modal
|
23
|
+
ouiaId="proxmox-server-cpu-flags"
|
23
24
|
bodyAriaLabel="Scrollable modal content"
|
24
25
|
width="60%"
|
25
26
|
tabIndex={0}
|
@@ -27,17 +28,31 @@ const CPUFlagsModal = ({ isOpen, onClose, flags, handleChange }) => {
|
|
27
28
|
isOpen={isOpen}
|
28
29
|
onClose={onClose}
|
29
30
|
actions={[
|
30
|
-
<Button
|
31
|
+
<Button
|
32
|
+
ouiaId="proxmox-server-cpu-flags-confirm"
|
33
|
+
key="confirm"
|
34
|
+
variant="primary"
|
35
|
+
onClick={onClose}
|
36
|
+
>
|
31
37
|
{__('Confirm')}
|
32
38
|
</Button>,
|
33
|
-
<Button
|
39
|
+
<Button
|
40
|
+
ouiaId="proxmox-server-cpu-flags-reset"
|
41
|
+
key="reset"
|
42
|
+
variant="secondary"
|
43
|
+
onClick={resetFlags}
|
44
|
+
>
|
34
45
|
{__('Reset')}
|
35
46
|
</Button>,
|
36
47
|
]}
|
37
48
|
>
|
38
|
-
<Table
|
49
|
+
<Table
|
50
|
+
ouiaId="proxmox-server-cpu-flags-table"
|
51
|
+
aria-label="Simple table"
|
52
|
+
variant="compact"
|
53
|
+
>
|
39
54
|
<Thead>
|
40
|
-
<Tr>
|
55
|
+
<Tr ouiaId="proxmox-server-cpu-flags-tr1">
|
41
56
|
<Th>Name</Th>
|
42
57
|
<Th />
|
43
58
|
<Th>Description</Th>
|
@@ -47,7 +62,7 @@ const CPUFlagsModal = ({ isOpen, onClose, flags, handleChange }) => {
|
|
47
62
|
{Object.keys(flags).map(key => {
|
48
63
|
const item = flags[key];
|
49
64
|
return (
|
50
|
-
<Tr key={item.label}>
|
65
|
+
<Tr ouiaId="proxmox-server-cpu-flags-tr2" key={item.label}>
|
51
66
|
<Td>{item.label}</Td>
|
52
67
|
<Td>
|
53
68
|
<select
|
@@ -162,12 +162,14 @@ const ProxmoxVmType = ({
|
|
162
162
|
type="select"
|
163
163
|
/>
|
164
164
|
<Tabs
|
165
|
+
ouiaId="proxmox-vm-type-tabs-options"
|
165
166
|
activeKey={activeTabKey}
|
166
167
|
onSelect={handleTabClick}
|
167
168
|
aria-label="Options tabs"
|
168
169
|
role="region"
|
169
170
|
>
|
170
171
|
<Tab
|
172
|
+
ouiaId="proxmox-vm-type-tab-general"
|
171
173
|
eventKey={0}
|
172
174
|
title={<TabTitleText>{__('General')}</TabTitleText>}
|
173
175
|
aria-label="Default content - general"
|
@@ -184,6 +186,7 @@ const ProxmoxVmType = ({
|
|
184
186
|
/>
|
185
187
|
</Tab>
|
186
188
|
<Tab
|
189
|
+
ouiaId="proxmox-vm-type-tab-advanced"
|
187
190
|
eventKey={1}
|
188
191
|
title={<TabTitleText>{__('Advanced Options')}</TabTitleText>}
|
189
192
|
aria-label="advanced options"
|
@@ -194,6 +197,7 @@ const ProxmoxVmType = ({
|
|
194
197
|
</PageSection>
|
195
198
|
</Tab>
|
196
199
|
<Tab
|
200
|
+
ouiaId="proxmox-vm-type-tab-hardware"
|
197
201
|
eventKey={2}
|
198
202
|
title={<TabTitleText>{__('Hardware')}</TabTitleText>}
|
199
203
|
aria-label="hardware"
|
@@ -205,6 +209,7 @@ const ProxmoxVmType = ({
|
|
205
209
|
</Tab>
|
206
210
|
{fromProfile && (
|
207
211
|
<Tab
|
212
|
+
ouiaId="proxmox-vm-type-tab-network"
|
208
213
|
eventKey={3}
|
209
214
|
title={<TabTitleText>{__('Network Interfaces')}</TabTitleText>}
|
210
215
|
aria-label="Network interface"
|
@@ -216,6 +221,7 @@ const ProxmoxVmType = ({
|
|
216
221
|
</Tab>
|
217
222
|
)}
|
218
223
|
<Tab
|
224
|
+
ouiaId="proxmox-vm-type-tab-storage"
|
219
225
|
eventKey={4}
|
220
226
|
title={<TabTitleText>{__('Storage')}</TabTitleText>}
|
221
227
|
aria-label="storage"
|
metadata
CHANGED
@@ -1,15 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: foreman_fog_proxmox
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.19.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Tristan Robert
|
8
8
|
- The Foreman Team
|
9
|
-
autorequire:
|
10
9
|
bindir: bin
|
11
10
|
cert_chain: []
|
12
|
-
date:
|
11
|
+
date: 1980-01-02 00:00:00.000000000 Z
|
13
12
|
dependencies:
|
14
13
|
- !ruby/object:Gem::Dependency
|
15
14
|
name: deface
|
@@ -273,7 +272,6 @@ homepage: https://github.com/theforeman/foreman_fog_proxmox
|
|
273
272
|
licenses:
|
274
273
|
- GPL-3.0
|
275
274
|
metadata: {}
|
276
|
-
post_install_message:
|
277
275
|
rdoc_options: []
|
278
276
|
require_paths:
|
279
277
|
- lib
|
@@ -288,34 +286,33 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
288
286
|
- !ruby/object:Gem::Version
|
289
287
|
version: '0'
|
290
288
|
requirements: []
|
291
|
-
rubygems_version: 3.
|
292
|
-
signing_key:
|
289
|
+
rubygems_version: 3.6.9
|
293
290
|
specification_version: 4
|
294
291
|
summary: Foreman plugin that adds Proxmox VE compute resource using fog-proxmox
|
295
292
|
test_files:
|
296
|
-
- test/test_plugin_helper.rb
|
297
|
-
- test/factories/foreman_fog_proxmox/proxmox_server_mock_factory.rb
|
298
|
-
- test/factories/foreman_fog_proxmox/proxmox_node_mock_factory.rb
|
299
293
|
- test/factories/foreman_fog_proxmox/proxmox_container_mock_factory.rb
|
294
|
+
- test/factories/foreman_fog_proxmox/proxmox_node_mock_factory.rb
|
295
|
+
- test/factories/foreman_fog_proxmox/proxmox_server_mock_factory.rb
|
300
296
|
- test/factories/proxmox_factory.rb
|
301
|
-
- test/
|
302
|
-
- test/
|
303
|
-
- test/unit/foreman_fog_proxmox/proxmox_interfaces_test.rb
|
304
|
-
- test/unit/foreman_fog_proxmox/proxmox_vm_commands_server_create_test.rb
|
305
|
-
- test/unit/foreman_fog_proxmox/proxmox_version_test.rb
|
306
|
-
- test/unit/foreman_fog_proxmox/proxmox_vm_new_test.rb
|
307
|
-
- test/unit/foreman_fog_proxmox/proxmox_vm_commands_test.rb
|
308
|
-
- test/unit/foreman_fog_proxmox/proxmox_vm_commands_server_update_hard_disk_test.rb
|
309
|
-
- test/unit/foreman_fog_proxmox/proxmox_test.rb
|
310
|
-
- test/unit/foreman_fog_proxmox/proxmox_vm_commands_server_update_test.rb
|
311
|
-
- test/unit/foreman_fog_proxmox/proxmox_images_test.rb
|
312
|
-
- test/unit/foreman_fog_proxmox/semver_test.rb
|
313
|
-
- test/unit/foreman_fog_proxmox/helpers/proxmox_vm_volumes_helper_test.rb
|
297
|
+
- test/functional/compute_resources_controller_test.rb
|
298
|
+
- test/test_plugin_helper.rb
|
314
299
|
- test/unit/foreman_fog_proxmox/helpers/proxmox_container_helper_test.rb
|
315
300
|
- test/unit/foreman_fog_proxmox/helpers/proxmox_server_helper_test.rb
|
316
|
-
- test/unit/foreman_fog_proxmox/helpers/proxmox_vm_uuid_helper_test.rb
|
317
301
|
- test/unit/foreman_fog_proxmox/helpers/proxmox_vm_helper_test.rb
|
302
|
+
- test/unit/foreman_fog_proxmox/helpers/proxmox_vm_uuid_helper_test.rb
|
303
|
+
- test/unit/foreman_fog_proxmox/helpers/proxmox_vm_volumes_helper_test.rb
|
318
304
|
- test/unit/foreman_fog_proxmox/proxmox_compute_attributes_test.rb
|
319
|
-
- test/unit/foreman_fog_proxmox/
|
305
|
+
- test/unit/foreman_fog_proxmox/proxmox_images_test.rb
|
306
|
+
- test/unit/foreman_fog_proxmox/proxmox_interfaces_test.rb
|
307
|
+
- test/unit/foreman_fog_proxmox/proxmox_test.rb
|
308
|
+
- test/unit/foreman_fog_proxmox/proxmox_version_test.rb
|
309
|
+
- test/unit/foreman_fog_proxmox/proxmox_vm_commands_container_test.rb
|
310
|
+
- test/unit/foreman_fog_proxmox/proxmox_vm_commands_server_create_test.rb
|
311
|
+
- test/unit/foreman_fog_proxmox/proxmox_vm_commands_server_update_cdrom_test.rb
|
320
312
|
- test/unit/foreman_fog_proxmox/proxmox_vm_commands_server_update_cloudinit_test.rb
|
321
|
-
- test/
|
313
|
+
- test/unit/foreman_fog_proxmox/proxmox_vm_commands_server_update_hard_disk_test.rb
|
314
|
+
- test/unit/foreman_fog_proxmox/proxmox_vm_commands_server_update_test.rb
|
315
|
+
- test/unit/foreman_fog_proxmox/proxmox_vm_commands_test.rb
|
316
|
+
- test/unit/foreman_fog_proxmox/proxmox_vm_new_test.rb
|
317
|
+
- test/unit/foreman_fog_proxmox/proxmox_vm_queries_test.rb
|
318
|
+
- test/unit/foreman_fog_proxmox/semver_test.rb
|