foreman_openscap 5.2.3 → 7.0.0

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.
Files changed (87) hide show
  1. checksums.yaml +4 -4
  2. data/app/assets/javascripts/foreman_openscap/locale/cs_CZ/foreman_openscap.js +1302 -0
  3. data/app/assets/javascripts/foreman_openscap/locale/de/foreman_openscap.js +1302 -0
  4. data/app/assets/javascripts/foreman_openscap/locale/en/foreman_openscap.js +1302 -0
  5. data/app/assets/javascripts/foreman_openscap/locale/en_GB/foreman_openscap.js +1302 -0
  6. data/app/assets/javascripts/foreman_openscap/locale/es/foreman_openscap.js +1304 -0
  7. data/app/assets/javascripts/foreman_openscap/locale/fr/foreman_openscap.js +1304 -0
  8. data/app/assets/javascripts/foreman_openscap/locale/gl/foreman_openscap.js +1302 -0
  9. data/app/assets/javascripts/foreman_openscap/locale/it/foreman_openscap.js +1302 -0
  10. data/app/assets/javascripts/foreman_openscap/locale/ja/foreman_openscap.js +1300 -0
  11. data/app/assets/javascripts/foreman_openscap/locale/ko/foreman_openscap.js +1302 -0
  12. data/app/assets/javascripts/foreman_openscap/locale/pt_BR/foreman_openscap.js +1304 -0
  13. data/app/assets/javascripts/foreman_openscap/locale/ru/foreman_openscap.js +1302 -0
  14. data/app/assets/javascripts/foreman_openscap/locale/sv_SE/foreman_openscap.js +1302 -0
  15. data/app/assets/javascripts/foreman_openscap/locale/zh_CN/foreman_openscap.js +1300 -0
  16. data/app/assets/javascripts/foreman_openscap/locale/zh_TW/foreman_openscap.js +1302 -0
  17. data/app/controllers/concerns/foreman_openscap/hosts_and_hostgroups_controller_extensions.rb +1 -1
  18. data/app/helpers/compliance_hosts_helper.rb +2 -0
  19. data/app/services/foreman_openscap/client_config/ansible.rb +4 -1
  20. data/app/services/foreman_openscap/client_config/manual.rb +1 -1
  21. data/app/services/foreman_openscap/client_config/puppet.rb +4 -1
  22. data/app/services/foreman_openscap/oval/sync_oval_contents.rb +2 -2
  23. data/app/views/arf_reports/_list.html.erb +1 -1
  24. data/app/views/policies/_list.html.erb +3 -3
  25. data/app/views/scap_contents/_list.html.erb +3 -3
  26. data/app/views/tailoring_files/_list.html.erb +3 -3
  27. data/lib/foreman_openscap/bulk_upload.rb +7 -7
  28. data/lib/foreman_openscap/engine.rb +2 -7
  29. data/lib/foreman_openscap/version.rb +1 -1
  30. data/locale/Makefile +6 -3
  31. data/locale/cs_CZ/LC_MESSAGES/foreman_openscap.mo +0 -0
  32. data/locale/cs_CZ/foreman_openscap.edit.po +1735 -0
  33. data/locale/cs_CZ/foreman_openscap.po +1309 -0
  34. data/locale/cs_CZ/foreman_openscap.po.time_stamp +0 -0
  35. data/locale/de/foreman_openscap.edit.po +1745 -0
  36. data/locale/de/foreman_openscap.po +195 -0
  37. data/locale/de/foreman_openscap.po.time_stamp +0 -0
  38. data/locale/en/LC_MESSAGES/foreman_openscap.mo +0 -0
  39. data/locale/en/foreman_openscap.edit.po +1735 -0
  40. data/locale/en/foreman_openscap.po +1309 -0
  41. data/locale/en/foreman_openscap.po.time_stamp +0 -0
  42. data/locale/en_GB/foreman_openscap.edit.po +1735 -0
  43. data/locale/en_GB/foreman_openscap.po +195 -0
  44. data/locale/en_GB/foreman_openscap.po.time_stamp +0 -0
  45. data/locale/es/foreman_openscap.edit.po +1740 -0
  46. data/locale/es/foreman_openscap.po +195 -0
  47. data/locale/es/foreman_openscap.po.time_stamp +0 -0
  48. data/locale/foreman_openscap.pot +361 -49
  49. data/locale/fr/foreman_openscap.edit.po +1746 -0
  50. data/locale/fr/foreman_openscap.po +195 -0
  51. data/locale/fr/foreman_openscap.po.time_stamp +0 -0
  52. data/locale/gl/foreman_openscap.edit.po +1735 -0
  53. data/locale/gl/foreman_openscap.po +195 -0
  54. data/locale/gl/foreman_openscap.po.time_stamp +0 -0
  55. data/locale/it/foreman_openscap.edit.po +1737 -0
  56. data/locale/it/foreman_openscap.po +195 -0
  57. data/locale/it/foreman_openscap.po.time_stamp +0 -0
  58. data/locale/ja/foreman_openscap.edit.po +1741 -0
  59. data/locale/ja/foreman_openscap.po +195 -0
  60. data/locale/ja/foreman_openscap.po.time_stamp +0 -0
  61. data/locale/ko/foreman_openscap.edit.po +1735 -0
  62. data/locale/ko/foreman_openscap.po +195 -0
  63. data/locale/ko/foreman_openscap.po.time_stamp +0 -0
  64. data/locale/pt_BR/foreman_openscap.edit.po +1745 -0
  65. data/locale/pt_BR/foreman_openscap.po +195 -0
  66. data/locale/pt_BR/foreman_openscap.po.time_stamp +0 -0
  67. data/locale/ru/foreman_openscap.edit.po +1739 -0
  68. data/locale/ru/foreman_openscap.po +195 -0
  69. data/locale/ru/foreman_openscap.po.time_stamp +0 -0
  70. data/locale/sv_SE/foreman_openscap.edit.po +1735 -0
  71. data/locale/sv_SE/foreman_openscap.po +195 -0
  72. data/locale/sv_SE/foreman_openscap.po.time_stamp +0 -0
  73. data/locale/zh_CN/foreman_openscap.edit.po +1740 -0
  74. data/locale/zh_CN/foreman_openscap.po +195 -0
  75. data/locale/zh_CN/foreman_openscap.po.time_stamp +0 -0
  76. data/locale/zh_TW/foreman_openscap.edit.po +1736 -0
  77. data/locale/zh_TW/foreman_openscap.po +195 -0
  78. data/locale/zh_TW/foreman_openscap.po.time_stamp +0 -0
  79. data/package.json +7 -7
  80. data/webpack/components/HostExtentions/HostKebabItems.js +44 -0
  81. data/webpack/global_index.js +10 -1
  82. data/webpack/routes/OvalContents/OvalContentsNew/OvalContentsNew.js +2 -2
  83. data/webpack/routes/OvalPolicies/OvalPoliciesNew/HostgroupSelect.js +1 -1
  84. data/webpack/routes/OvalPolicies/OvalPoliciesNew/NewOvalPolicyFormHelpers.js +3 -3
  85. data/webpack/routes/OvalPolicies/OvalPoliciesShow/OvalPoliciesShowHelper.js +4 -4
  86. data/webpack/routes/OvalPolicies/OvalPoliciesShow/__tests__/OvalPoliciesShow.test.js +1 -1
  87. metadata +53 -3
@@ -32,6 +32,15 @@ msgid_plural "%s compliance reports by policy"
32
32
  msgstr[0] ""
33
33
  msgstr[1] ""
34
34
 
35
+ msgid "%s content"
36
+ msgstr ""
37
+
38
+ msgid "%s does not exist, skipping."
39
+ msgstr ""
40
+
41
+ msgid "%s is a directory, expecting file."
42
+ msgstr ""
43
+
35
44
  msgid "%s latest report"
36
45
  msgstr "%s 最新報告"
37
46
 
@@ -80,6 +89,9 @@ msgstr ""
80
89
  msgid "Are required variables for theforeman.foreman_scap_client present?"
81
90
  msgstr ""
82
91
 
92
+ msgid "Are you sure you want to delete %s?"
93
+ msgstr ""
94
+
83
95
  msgid "Array of host IDs"
84
96
  msgstr ""
85
97
 
@@ -101,6 +113,12 @@ msgstr ""
101
113
  msgid "Back"
102
114
  msgstr "上一頁"
103
115
 
116
+ msgid "CVEs"
117
+ msgstr ""
118
+
119
+ msgid "Can't find scap-security-guide RPM, are you sure it is installed on your server?"
120
+ msgstr ""
121
+
104
122
  msgid "Cancel"
105
123
  msgstr "取消"
106
124
 
@@ -122,6 +140,9 @@ msgstr ""
122
140
  msgid "Changed?"
123
141
  msgstr "已改變?"
124
142
 
143
+ msgid "Choose OVAL Content"
144
+ msgstr ""
145
+
125
146
  msgid "Choose Tailoring File"
126
147
  msgstr ""
127
148
 
@@ -164,6 +185,12 @@ msgstr "合規主機"
164
185
  msgid "Compliant with the policy"
165
186
  msgstr "合於政策"
166
187
 
188
+ msgid "Confirm"
189
+ msgstr ""
190
+
191
+ msgid "Content"
192
+ msgstr ""
193
+
167
194
  msgid "Could not find host identified by: %s"
168
195
  msgstr ""
169
196
 
@@ -176,6 +203,12 @@ msgstr ""
176
203
  msgid "Could not validate %{file_type}. Error %{error}"
177
204
  msgstr ""
178
205
 
206
+ msgid "Create OVAL Content"
207
+ msgstr ""
208
+
209
+ msgid "Create OVAL Policy"
210
+ msgstr ""
211
+
179
212
  msgid "Create OVAL content"
180
213
  msgstr ""
181
214
 
@@ -191,6 +224,12 @@ msgstr ""
191
224
  msgid "Create an OVAL Policy"
192
225
  msgstr ""
193
226
 
227
+ msgid "Created at"
228
+ msgstr ""
229
+
230
+ msgid "Custom cron: %s"
231
+ msgstr ""
232
+
194
233
  msgid "Dashboard"
195
234
  msgstr "控制面板"
196
235
 
@@ -206,6 +245,12 @@ msgstr "預設 XCCDF 設定檔"
206
245
  msgid "Delete"
207
246
  msgstr "刪除"
208
247
 
248
+ msgid "Delete OVAL Content"
249
+ msgstr ""
250
+
251
+ msgid "Delete OVAL Policy"
252
+ msgstr ""
253
+
209
254
  msgid "Delete a Policy"
210
255
  msgstr ""
211
256
 
@@ -248,6 +293,9 @@ msgstr ""
248
293
  msgid "Description"
249
294
  msgstr "說明"
250
295
 
296
+ msgid "Details"
297
+ msgstr ""
298
+
251
299
  msgid "Details for Compliance Policy %s"
252
300
  msgstr ""
253
301
 
@@ -287,6 +335,12 @@ msgstr ""
287
335
  msgid "Error!"
288
336
  msgstr ""
289
337
 
338
+ msgid "Every puppet run ensures the foreman_scap_client is configured according to the policy."
339
+ msgstr ""
340
+
341
+ msgid "Expected an array of files to upload, got: %s."
342
+ msgstr ""
343
+
290
344
  msgid "Failed"
291
345
  msgstr "已失敗"
292
346
 
@@ -296,6 +350,12 @@ msgstr "失敗與其它"
296
350
  msgid "Failed only"
297
351
  msgstr "只有失敗"
298
352
 
353
+ msgid "Failed saving %s:"
354
+ msgstr ""
355
+
356
+ msgid "Failed to create OVAL Policy: %s"
357
+ msgstr ""
358
+
299
359
  msgid "Failed to delete %s compliance reports"
300
360
  msgstr "刪除 %s 合規報告失敗"
301
361
 
@@ -308,6 +368,9 @@ msgstr ""
308
368
  msgid "Failed to downloaded ARF report in HTML: %s"
309
369
  msgstr ""
310
370
 
371
+ msgid "Failed to fetch content file from %s"
372
+ msgstr ""
373
+
311
374
  msgid "Failed to fetch spool status from proxy"
312
375
  msgstr ""
313
376
 
@@ -321,9 +384,15 @@ msgstr ""
321
384
  msgid "Failed|F"
322
385
  msgstr "F"
323
386
 
387
+ msgid "File"
388
+ msgstr ""
389
+
324
390
  msgid "File Upload"
325
391
  msgstr "檔案上傳"
326
392
 
393
+ msgid "File name"
394
+ msgstr ""
395
+
327
396
  msgid "File paths to upload when using \"files\" upload type"
328
397
  msgstr ""
329
398
 
@@ -472,6 +541,9 @@ msgstr "位置"
472
541
  msgid "Message"
473
542
  msgstr "訊息"
474
543
 
544
+ msgid "Monthly, day of month: %s"
545
+ msgstr ""
546
+
475
547
  msgid "More details"
476
548
  msgstr "更多詳細資訊"
477
549
 
@@ -484,6 +556,9 @@ msgstr "未曾稽核"
484
556
  msgid "New Compliance Policy"
485
557
  msgstr "新合規政策"
486
558
 
559
+ msgid "New OVAL Content"
560
+ msgstr ""
561
+
487
562
  msgid "New Policy"
488
563
  msgstr ""
489
564
 
@@ -505,6 +580,12 @@ msgstr "此政策沒有 ARF 報告"
505
580
  msgid "No CVEs found."
506
581
  msgstr ""
507
582
 
583
+ msgid "No Hostgroups found."
584
+ msgstr ""
585
+
586
+ msgid "No OVAL Content found"
587
+ msgstr ""
588
+
508
589
  msgid "No OVAL Contents found."
509
590
  msgstr ""
510
591
 
@@ -562,6 +643,9 @@ msgstr "此政策沒有報告"
562
643
  msgid "No reports available"
563
644
  msgstr "無報告可用"
564
645
 
646
+ msgid "No such directory: %s. Please check the path you have provided."
647
+ msgstr ""
648
+
565
649
  msgid "No valid policy ID provided"
566
650
  msgstr ""
567
651
 
@@ -571,6 +655,9 @@ msgstr "無"
571
655
  msgid "None found"
572
656
  msgstr "未找到"
573
657
 
658
+ msgid "None provided"
659
+ msgstr ""
660
+
574
661
  msgid "None!"
575
662
  msgstr "無!"
576
663
 
@@ -592,6 +679,24 @@ msgstr "月份中的日子,請注意並不是所有月份都有同樣的天數
592
679
  msgid "OVAL Content"
593
680
  msgstr ""
594
681
 
682
+ msgid "OVAL Content %s successfully created"
683
+ msgstr ""
684
+
685
+ msgid "OVAL Content Source"
686
+ msgstr ""
687
+
688
+ msgid "OVAL Content from URL"
689
+ msgstr ""
690
+
691
+ msgid "OVAL Content from file"
692
+ msgstr ""
693
+
694
+ msgid "OVAL Content is required to create OVAL Policy. Please create one before proceeding."
695
+ msgstr ""
696
+
697
+ msgid "OVAL Content successfully deleted."
698
+ msgstr ""
699
+
595
700
  msgid "OVAL Contents"
596
701
  msgstr ""
597
702
 
@@ -622,12 +727,24 @@ msgstr ""
622
727
  msgid "OVAL Policy schedule weekday (only if period == \"weekly\")"
623
728
  msgstr ""
624
729
 
730
+ msgid "OVAL Policy succesfully created."
731
+ msgstr ""
732
+
625
733
  msgid "OVAL content name"
626
734
  msgstr ""
627
735
 
736
+ msgid "OVAL policy"
737
+ msgstr ""
738
+
628
739
  msgid "OVAL policy successfully configured with %s."
629
740
  msgstr ""
630
741
 
742
+ msgid "OVAL policy was successfully deleted."
743
+ msgstr ""
744
+
745
+ msgid "OVAL policy was successfully updated."
746
+ msgstr ""
747
+
631
748
  msgid "OVAL scan"
632
749
  msgstr ""
633
750
 
@@ -646,6 +763,9 @@ msgstr ""
646
763
  msgid "Organizations"
647
764
  msgstr "組織"
648
765
 
766
+ msgid "Original File Name"
767
+ msgstr ""
768
+
649
769
  msgid "Original file name of the OVAL content file"
650
770
  msgstr ""
651
771
 
@@ -669,6 +789,12 @@ msgstr "已通過"
669
789
  msgid "Passed|P"
670
790
  msgstr "Passed|P"
671
791
 
792
+ msgid "Period"
793
+ msgstr ""
794
+
795
+ msgid "Permission denied"
796
+ msgstr ""
797
+
672
798
  msgid "Please Confirm"
673
799
  msgstr "請確認"
674
800
 
@@ -729,6 +855,9 @@ msgstr ""
729
855
  msgid "Policy with id %s not found."
730
856
  msgstr ""
731
857
 
858
+ msgid "Profile"
859
+ msgstr ""
860
+
732
861
  msgid "Proxy failed to send a report from spool to Foreman. This indicates a corrupted report format. Report has been moved to directory for storing corrupted files on proxy for later inspection."
733
862
  msgstr ""
734
863
 
@@ -738,6 +867,9 @@ msgstr "Puppet 類別"
738
867
  msgid "Rationale"
739
868
  msgstr "理由"
740
869
 
870
+ msgid "Red Hat %s default content"
871
+ msgstr ""
872
+
741
873
  msgid "Ref Id"
742
874
  msgstr ""
743
875
 
@@ -762,12 +894,21 @@ msgstr ""
762
894
  msgid "Reports"
763
895
  msgstr "報告"
764
896
 
897
+ msgid "Request the following permissions from administrator: %s."
898
+ msgstr ""
899
+
765
900
  msgid "Request timed out. Please try increasing Settings -> proxy_request_timeout"
766
901
  msgstr ""
767
902
 
768
903
  msgid "Required %{msg_name} %{class} was not found, please ensure it is imported first."
769
904
  msgstr ""
770
905
 
906
+ msgid "Requires %s Puppet class. This will assign the class to the hosts or selected hostgroups."
907
+ msgstr ""
908
+
909
+ msgid "Requires Ansible plugin, %s Ansible role and variables. This will assign the role to the hosts or selected hostgroups."
910
+ msgstr ""
911
+
771
912
  msgid "Resource"
772
913
  msgstr "資源"
773
914
 
@@ -834,6 +975,9 @@ msgstr ""
834
975
  msgid "Show a Tailoring file"
835
976
  msgstr ""
836
977
 
978
+ msgid "Show a policy's OVAL content"
979
+ msgstr ""
980
+
837
981
  msgid "Show a policy's SCAP content"
838
982
  msgstr "顯示政策的 SCAP 內容"
839
983
 
@@ -900,6 +1044,9 @@ msgstr ""
900
1044
  msgid "Table of CVEs for OVAL policy"
901
1045
  msgstr ""
902
1046
 
1047
+ msgid "Table of hostgroups for OVAL policy"
1048
+ msgstr ""
1049
+
903
1050
  msgid "Tailoring File"
904
1051
  msgstr ""
905
1052
 
@@ -915,6 +1062,9 @@ msgstr ""
915
1062
  msgid "Tailoring file profile ID"
916
1063
  msgstr ""
917
1064
 
1065
+ msgid "The %s proxy does not have Openscap feature enabled. Either set correct OpenSCAP Proxy or unset it."
1066
+ msgstr ""
1067
+
918
1068
  msgid ""
919
1069
  "The Security Content Automation Protocol (SCAP), combines a number of open standards that are used to enumerate software flaws and\n"
920
1070
  " configuration issues related to security. "
@@ -938,12 +1088,30 @@ msgstr ""
938
1088
  msgid "There are significant differences in deployment options."
939
1089
  msgstr ""
940
1090
 
1091
+ msgid "There was a following error when deleting %(name)s: %(error)s"
1092
+ msgstr ""
1093
+
1094
+ msgid "There was a following error when updating OVAL policy: %s"
1095
+ msgstr ""
1096
+
1097
+ msgid "There's no available report for this host"
1098
+ msgstr ""
1099
+
941
1100
  msgid "This feature is temporarily disabled. "
942
1101
  msgstr ""
943
1102
 
1103
+ msgid "This leaves the setup of the foreman_scap_client solely on the user. The policy still needs to be defined in order to link incoming ARF reports."
1104
+ msgstr ""
1105
+
944
1106
  msgid "This profile will be used to override the one from scap content"
945
1107
  msgstr ""
946
1108
 
1109
+ msgid "Title"
1110
+ msgstr ""
1111
+
1112
+ msgid "To deploy foreman_scap_client, ansible roles run needs to be triggered manually. Manual run is also required after any change to this policy."
1113
+ msgstr ""
1114
+
947
1115
  msgid "Total"
948
1116
  msgstr "總數"
949
1117
 
@@ -958,9 +1126,15 @@ msgid_plural "Total of %{hosts} hosts"
958
1126
  msgstr[0] ""
959
1127
  msgstr[1] ""
960
1128
 
1129
+ msgid "Type a hostgroup name..."
1130
+ msgstr ""
1131
+
961
1132
  msgid "Type of the upload"
962
1133
  msgstr ""
963
1134
 
1135
+ msgid "URL"
1136
+ msgstr ""
1137
+
964
1138
  msgid "URL of the OVAL content file"
965
1139
  msgstr ""
966
1140
 
@@ -979,6 +1153,12 @@ msgstr "未知的合規狀態"
979
1153
  msgid "Unknown OVAL status"
980
1154
  msgstr ""
981
1155
 
1156
+ msgid "Unknown error when submitting data, please try again later."
1157
+ msgstr ""
1158
+
1159
+ msgid "Unknown schedule"
1160
+ msgstr ""
1161
+
982
1162
  msgid "Update a Policy"
983
1163
  msgstr ""
984
1164
 
@@ -1036,6 +1216,9 @@ msgstr ""
1036
1216
  msgid "Was %{model_name} %{name} configured successfully?"
1037
1217
  msgstr ""
1038
1218
 
1219
+ msgid "Weekly, on %s"
1220
+ msgstr ""
1221
+
1039
1222
  msgid "XCCDF Profile"
1040
1223
  msgstr "XCCDF 設定檔"
1041
1224
 
@@ -1054,15 +1237,24 @@ msgstr ""
1054
1237
  msgid "Yes"
1055
1238
  msgstr "是"
1056
1239
 
1240
+ msgid "You are not authorized to view the page. "
1241
+ msgstr ""
1242
+
1057
1243
  msgid "You can specify custom cron line, e.g. \"0 3 * * *\", separate each of 5 values by space"
1058
1244
  msgstr "您可指定自訂的 cron 行,例如\"0 3 * * *\",五個數值均由空格隔開"
1059
1245
 
1060
1246
  msgid "You don't seem to have any ARF report. ARF report is a summary of a single scan occurrence on a particular host for a given Compliance Policy."
1061
1247
  msgstr ""
1062
1248
 
1249
+ msgid "can't be blank"
1250
+ msgstr ""
1251
+
1063
1252
  msgid "cannot assign to %s, all assigned policies must be deployed in the same way, check 'deploy by' for each assigned policy"
1064
1253
  msgstr ""
1065
1254
 
1255
+ msgid "cause: "
1256
+ msgstr ""
1257
+
1066
1258
  msgid "documentation"
1067
1259
  msgstr ""
1068
1260
 
@@ -1087,6 +1279,9 @@ msgstr "主機"
1087
1279
  msgid "invalid type %s"
1088
1280
  msgstr "無效的類型 %s"
1089
1281
 
1282
+ msgid "is not a valid cronline"
1283
+ msgstr ""
1284
+
1090
1285
  msgid "is not a valid value"
1091
1286
  msgstr ""
1092
1287
 
File without changes
data/package.json CHANGED
@@ -21,19 +21,19 @@
21
21
  "url": "https://projects.theforeman.org/projects/foreman_openscap/issues"
22
22
  },
23
23
  "peerDependencies": {
24
- "@theforeman/vendor": ">= 4.13.2"
24
+ "@theforeman/vendor": ">= 10.1.0"
25
25
  },
26
26
  "devDependencies": {
27
27
  "@babel/core": "^7.7.0",
28
28
  "@testing-library/dom": "^8.9.1",
29
29
  "@testing-library/jest-dom": "^5.11.9",
30
30
  "@testing-library/user-event": "^13.2.1",
31
- "@theforeman/builder": "^8.4.1",
32
- "@theforeman/eslint-plugin-foreman": "8.4.1",
33
- "@theforeman/find-foreman": "^8.4.1",
34
- "@theforeman/stories": "^8.4.1",
35
- "@theforeman/test": "^8.9.0",
36
- "@theforeman/vendor-dev": "^8.4.1",
31
+ "@theforeman/builder": ">= 10.1.0",
32
+ "@theforeman/eslint-plugin-foreman": ">= 10.1.0",
33
+ "@theforeman/find-foreman": ">= 10.1.0",
34
+ "@theforeman/stories": ">= 10.1.0",
35
+ "@theforeman/test": ">= 10.1.0",
36
+ "@theforeman/vendor-dev": ">= 10.1.0",
37
37
  "babel-eslint": "^10.0.3",
38
38
  "eslint": "^6.7.2",
39
39
  "jed": "^1.1.1",
@@ -0,0 +1,44 @@
1
+ import React from 'react';
2
+ import { useSelector } from 'react-redux';
3
+ import { DropdownItem } from '@patternfly/react-core';
4
+ import { SecurityIcon } from '@patternfly/react-icons';
5
+ import { selectAPIResponse } from 'foremanReact/redux/API/APISelectors';
6
+ import { useAPI } from 'foremanReact/common/hooks/API/APIHooks';
7
+ import { translate as __ } from 'foremanReact/common/I18n';
8
+ import { HOST_DETAILS_KEY } from 'foremanReact/components/HostDetails/consts';
9
+ import { foremanUrl } from 'foremanReact/common/helpers';
10
+
11
+ const HostKebabItems = () => {
12
+ const { name, id } = useSelector(state =>
13
+ selectAPIResponse(state, HOST_DETAILS_KEY)
14
+ );
15
+
16
+ const ARFReportsAPIPath = name
17
+ ? `/api/v2/compliance/arf_reports?search=host+%3D+${name}`
18
+ : null;
19
+
20
+ const {
21
+ response: { results = [] },
22
+ } = useAPI('get', ARFReportsAPIPath);
23
+
24
+ const compliancePath = foremanUrl(`/compliance/hosts/${id}`);
25
+
26
+ const isDisabled = results.length === 0;
27
+
28
+ return (
29
+ <DropdownItem
30
+ ouiaId="compliance-dropdown-item"
31
+ key="compliance-report"
32
+ icon={<SecurityIcon />}
33
+ href={compliancePath}
34
+ target="_blank"
35
+ rel="noreferrer"
36
+ isAriaDisabled={isDisabled}
37
+ tooltip={isDisabled && __("There's no available report for this host")}
38
+ >
39
+ {__('Compliance')}
40
+ </DropdownItem>
41
+ );
42
+ };
43
+
44
+ export default HostKebabItems;
@@ -1,5 +1,14 @@
1
+ import React from 'react';
1
2
  import { registerRoutes } from 'foremanReact/routes/RoutingService';
2
-
3
+ import { addGlobalFill } from 'foremanReact/components/common/Fill/GlobalFill';
4
+ import HostKebabItems from './components/HostExtentions/HostKebabItems';
3
5
  import routes from './routes/routes';
4
6
 
5
7
  registerRoutes('foreman_openscap', routes);
8
+
9
+ addGlobalFill(
10
+ 'host-details-kebab',
11
+ `openscap-kebab-items`,
12
+ <HostKebabItems key="openscap-host-kebab" />,
13
+ 400
14
+ );
@@ -54,7 +54,7 @@ const OvalContentsNew = props => {
54
54
  {formProps => (
55
55
  <PfForm>
56
56
  <FormikField
57
- label="Name"
57
+ label={__('Name')}
58
58
  name="name"
59
59
  component={TextField}
60
60
  isRequired
@@ -89,7 +89,7 @@ const OvalContentsNew = props => {
89
89
  />
90
90
  </FormGroup>
91
91
  {!fileFromUrl ? (
92
- <FormGroup label="File" isRequired>
92
+ <FormGroup label={__('File')} isRequired>
93
93
  <FileUpload
94
94
  value={file}
95
95
  filename={file ? file.name : ''}
@@ -104,7 +104,7 @@ const HostgroupSelect = ({
104
104
  <Select
105
105
  variant={SelectVariant.typeaheadMulti}
106
106
  typeAheadAriaLabel="Select a hostgroup"
107
- placeholderText="Type a hostroup name..."
107
+ placeholderText={__('Type a hostgroup name...')}
108
108
  onToggle={() => setIsOpen(!isOpen)}
109
109
  onSelect={onSelect}
110
110
  onClear={onClear}
@@ -1,5 +1,5 @@
1
1
  import * as Yup from 'yup';
2
- import { translate as __ } from 'foremanReact/common/I18n';
2
+ import { translate as __, sprintf } from 'foremanReact/common/I18n';
3
3
 
4
4
  import { ovalPoliciesPath } from '../../../helpers/pathsHelper';
5
5
  import { decodeId, decodeModelId } from '../../../helpers/globalIdHelper';
@@ -51,7 +51,7 @@ export const onSubmit = (
51
51
  history.push(ovalPoliciesPath);
52
52
  showToast({
53
53
  type: 'success',
54
- message: 'OVAL Policy succesfully created.',
54
+ message: __('OVAL Policy succesfully created.'),
55
55
  });
56
56
  } else {
57
57
  actions.setSubmitting(false);
@@ -83,7 +83,7 @@ export const onSubmit = (
83
83
  const onError = response => {
84
84
  showToast({
85
85
  type: 'error',
86
- message: `Failed to create OVAL Policy: ${response.error}`,
86
+ message: sprintf(__('Failed to create OVAL Policy: %s'), response.error),
87
87
  });
88
88
  actions.setSubmitting(false);
89
89
  };
@@ -6,13 +6,13 @@ import { newJobPath } from '../../../helpers/pathsHelper';
6
6
  export const policySchedule = policy => {
7
7
  switch (policy.period) {
8
8
  case 'weekly':
9
- return `Weekly, on ${policy.weekday}`;
9
+ return sprintf(__('Weekly, on %s'), policy.weekday);
10
10
  case 'monthly':
11
- return `Monthly, day of month: ${policy.dayOfMonth}`;
11
+ return sprintf(__('Monthly, day of month: %s'), policy.dayOfMonth);
12
12
  case 'custom':
13
- return `Custom cron: ${policy.cronLine}`;
13
+ return sprintf(__('Custom cron: %s'), policy.cronLine);
14
14
  default:
15
- return 'Unknown schedule';
15
+ return __('Unknown schedule');
16
16
  }
17
17
  };
18
18
 
@@ -53,7 +53,7 @@ describe('OvalPoliciesShow', () => {
53
53
  '.pf-c-tabs__item.pf-m-current'
54
54
  );
55
55
  expect(within(activeTabHeader).getByText('Details')).toBeInTheDocument();
56
- userEvent.click(screen.getByRole('button', { name: 'CVEs' }));
56
+ userEvent.click(screen.getByRole('tab', { name: 'CVEs' }));
57
57
  expect(pushMock).toHaveBeenCalledWith(
58
58
  resolvePath(ovalPoliciesShowPath, {
59
59
  ':id': ovalPolicyId,