- {sortedVms.map(vm =>
)}
+ {sortedVms.map(vm =>
+
this.checkVm(vm.get('id'))}
+ />
+ )}
{sortedPools.map(pool => )}
diff --git a/src/components/VmsList/style.css b/src/components/VmsList/style.css
index 7fc9f83db3..bcc2331be9 100644
--- a/src/components/VmsList/style.css
+++ b/src/components/VmsList/style.css
@@ -57,3 +57,9 @@
.status-height {
margin-top: 5px !important;
}
+
+.vm-checkbox {
+ margin-left: 30px;
+ position: absolute;
+ margin-top: 20px;
+}
diff --git a/src/components/VmsPageHeader/UserMenu.js b/src/components/VmsPageHeader/UserMenu.js
index abf500211a..7448f1c69e 100644
--- a/src/components/VmsPageHeader/UserMenu.js
+++ b/src/components/VmsPageHeader/UserMenu.js
@@ -1,7 +1,6 @@
import React from 'react'
import PropTypes from 'prop-types'
import { connect } from 'react-redux'
-import { Link } from 'react-router-dom'
import { logout } from '_/actions'
@@ -19,9 +18,6 @@ const UserMenu = ({ config, onLogout }) => {
- -
- Settings
-
-
diff --git a/src/components/VmsPageHeader/index.js b/src/components/VmsPageHeader/index.js
index 65fba45ad0..df7274d0e0 100644
--- a/src/components/VmsPageHeader/index.js
+++ b/src/components/VmsPageHeader/index.js
@@ -2,6 +2,8 @@ import React from 'react'
import PropTypes from 'prop-types'
import { connect } from 'react-redux'
+import { Link } from 'react-router-dom'
+import { Icon } from 'patternfly-react'
import VmUserMessages from '../VmUserMessages'
import UserMenu from './UserMenu'
@@ -33,6 +35,16 @@ const VmsPageHeader = ({ page, onRefresh }) => {
+ -
+
+
+
+
+
+
diff --git a/src/components/sharedStyle.css b/src/components/sharedStyle.css
index b3d5b8140b..7a67b802fc 100644
--- a/src/components/sharedStyle.css
+++ b/src/components/sharedStyle.css
@@ -93,3 +93,11 @@
0% { transform: rotate(0deg); }
100% { transform: rotate(360deg); }
}
+
+:global(.toolbar-pf .form-group) .color-blue {
+ color: #0088ce;
+}
+
+.settings-icon span {
+ margin-right: 5px;
+}
diff --git a/src/constants/index.js b/src/constants/index.js
index 884eec346e..379ee15a83 100644
--- a/src/constants/index.js
+++ b/src/constants/index.js
@@ -68,16 +68,12 @@ export const REMOVE_SNAPSHOT_REMOVAL_PENDING_TASK = 'REMOVE_SNAPSHOT_REMOVAL_PEN
export const REMOVE_SNAPSHOT_RESTORE_PENDING_TASK = 'REMOVE_SNAPSHOT_RESTORE_PENDING_TASK'
export const REMOVE_VM = 'REMOVE_VM'
export const REMOVE_VMS = 'REMOVE_VMS'
-export const RESET_GLOBAL_SETTINGS = 'RESET_GLOBAL_SETTINGS'
-export const RESET_OPTIONS = 'RESET_OPTIONS'
-export const RESET_VM_SETTINGS = 'RESET_VM_SETTINGS'
export const RESTART_VM = 'RESTART_VM'
export const SAVE_FILTERS = 'SAVE_FILTERS'
export const SAVE_GLOBAL_OPTIONS = 'SAVE_GLOBAL_OPTIONS'
export const SAVE_OPTION = 'SAVE_OPTION'
-export const SAVE_OPTION_TO_VMS = 'SAVE_OPTION_TO_VMS'
export const SAVE_SSH_KEY = 'SAVE_SSH_KEY'
-export const SAVE_VM_OPTIONS = 'SAVE_VM_OPTIONS'
+export const SAVE_VMS_OPTIONS = 'SAVE_VMS_OPTIONS'
export const SELECT_POOL_DETAIL = 'SELECT_POOL_DETAIL'
export const SELECT_VM_DETAIL = 'SELECT_VM_DETAIL'
export const SET_ADMINISTRATOR = 'SET_ADMINISTRATOR'
diff --git a/src/index-nomodules.css b/src/index-nomodules.css
index 94d156e4ae..fad13b7c74 100644
--- a/src/index-nomodules.css
+++ b/src/index-nomodules.css
@@ -226,3 +226,8 @@ a.disabled {
textarea {
resize: vertical;
}
+
+.toolbar-pf-action-right > div {
+ display: inline-block;
+ margin-left: 5px;
+}
diff --git a/src/intl/index.js b/src/intl/index.js
index fc0301bfe4..0f6bb0f93b 100644
--- a/src/intl/index.js
+++ b/src/intl/index.js
@@ -29,7 +29,7 @@ const options = JSON.parse(loadFromLocalStorage('options')) || {}
/**
* Currently selected locale
*/
-export const locale: string = getLocaleFromUrl() || options.options.language || getBrowserLocale() || DEFAULT_LOCALE
+export const locale: string = getLocaleFromUrl() || (options.options && options.options.language) || getBrowserLocale() || DEFAULT_LOCALE
function getBrowserLocale (): ?string {
if (window.navigator.language) {
diff --git a/src/intl/messages.js b/src/intl/messages.js
index 3080ec2c7f..6cb78aae3a 100644
--- a/src/intl/messages.js
+++ b/src/intl/messages.js
@@ -37,7 +37,7 @@ export const messages: { [messageId: string]: MessageType } = {
areYouSureYouWantToDeleteDisk: 'Are you sure you want to delete disk {diskName}?',
areYouSureYouWantToDeleteNic: 'Are you sure you want to delete NIC {nicName}?',
areYouSureYouWantToDeleteSnapshot: 'Are you sure you want to delete snapshot {snapshotName}?',
- areYouSureYouWantToMakeSettingsChanges: 'Are you sure you want to make changes to your account settings?',
+ areYouSureYouWantToMakeSettingsChanges: 'Are you sure you want to make changes to your VM settings?',
areYouSureYouWantToResetSettings: 'Are you sure you want to reset your account settings?',
areYouSureYouWantToRestoreSnapshot: 'Are you sure you want to restore snapshot {snapshotName}?',
authorizationExpired: 'Authorization expired. The page is going to be reloaded to re-login.',
@@ -59,6 +59,7 @@ export const messages: { [messageId: string]: MessageType } = {
cdromBoot: 'CD-ROM',
changeCd: 'Change CD',
changesWasSavedSuccesfully: 'Changes was saved succesfully!',
+ changesWillBeMadeToFollowingVm: 'Settings changes will be made to the following VMs:',
clear: 'Clear',
clearAll: 'Clear all',
clearAllFilters: 'Clear All Filters',
@@ -94,6 +95,7 @@ export const messages: { [messageId: string]: MessageType } = {
console: 'Console',
consoleInstructions: 'Console Instructions',
consoleInUseContinue: 'Console in use, continue?',
+ consoleSettings: 'Console Settings',
containsConfigurationAndDisksWhichWillBeUsedToCreateThisVm: 'Contains the configuration and disks which will be used to create this virtual machine. Please customize as needed.',
continueSessionSecondary: {
message: 'To continue with your session, click on the \'Continue\' button.',
@@ -120,7 +122,6 @@ export const messages: { [messageId: string]: MessageType } = {
dataCenterChangesWithCluster: 'Data Center cannot be changed directly. It correlates with the Cluster.',
daysShort: 'd',
defaultButton: 'Default',
- defaultSettingsWillBeApplied: 'These will be the default settings that will be applied to all VMs that do not have custom settings set. The following selected VMs will have their settings updated based off of the changes you have made to your account settings. Please, confirm these changes before saving.',
definedMemory: 'Defined Memory',
delete: 'Delete',
description: 'Description',
@@ -419,6 +420,8 @@ export const messages: { [messageId: string]: MessageType } = {
},
notEditableForPoolsOrPoolVms: 'Not editable for Pools or pool VMs.',
notifications: 'Notifications',
+ notificationSettingsAffectAllNotifications: 'Notification settings applied here affect all notifications.',
+ notificationSettingsAffectAllMetricsNotifications: 'Notification settings applied here affect all of float-metrics’s notifications.',
noVmAvailable: 'No VM available.',
noVmAvailableForLoggedUser: 'No VM is available for the logged user.',
numberOfMinutes: '{minute} minutes',
@@ -440,6 +443,7 @@ export const messages: { [messageId: string]: MessageType } = {
pleaseEnterValidDiskName: 'Please enter a valid disk name. Only lower-case and upper-case letters, numbers, and \'_\',\'-\',\'.\' are allowed.',
pleaseEnterValidVmName: 'Please enter a valid virtual machine name. Only lower-case and upper-case letters, numbers, and \'_\',\'-\',\'.\' are allowed.',
preserveDisks: 'Preserve disks',
+ pressYesToConfirm: 'Press \'Yes\' to confirm these changes.',
publicSSHKey: 'Specify public key for access to guest serial console via SSH authentication.',
rdpConsole: 'RDP Console',
rdpConsoleOpen: 'Open RDP Console',
@@ -455,6 +459,7 @@ export const messages: { [messageId: string]: MessageType } = {
message: 'Refresh',
description: 'Reload data from server',
},
+ refreshInterval: 'Refresh Interval',
remoteViewerConnection: 'Remote Viewer Connection',
remoteViewerAvailable: 'Remote Viewer is available for most operating systems. To install it, search for it in GNOME Software or run the following:',
remove: 'Remove',
@@ -481,11 +486,12 @@ export const messages: { [messageId: string]: MessageType } = {
secondsShort: 's',
sendShortcutKey: 'Send Key',
sendCtrlAltDel: 'Ctrl+Alt+Del',
+ selectedVirtualMachines: 'Selected Virtual Machines',
+ selectAllVirtualMachines: 'Select all virtual machines',
sessionExpired: {
message: 'Your session is about to timeout due to inactivity.',
description: 'Primary message for SessionTimeout modal component',
},
- settingsWillBeAppliedToVm: 'This settings will be applied only to {name}.',
shutdown: 'Shutdown',
shutdownVm: 'Shutdown the VM',
shutdownVmQuestion: 'Are you sure you want to Shutdown the VM?',
@@ -593,6 +599,7 @@ export const messages: { [messageId: string]: MessageType } = {
useBrowserBelow: 'Please use one of the browsers below.',
useCtrlAltEnd: 'Use Ctrl+Alt+End',
username: 'Username',
+ userSettings: 'User Settings',
usingRemoteViewer: 'Using a remote viewer relies on a downloaded .vv file.',
vcpuTopology: 'VCPU Topology',
virtualMachine: 'Virtual Machine',
@@ -601,6 +608,7 @@ export const messages: { [messageId: string]: MessageType } = {
vmHasPendingConfigurationChanges: 'This VM has pending configurations changes that will be applied once the VM is shutdown (or rebooted).',
vmMemory: 'VM Memory',
vmPortal: 'VM Portal',
+ vmSettings: 'VM Settings',
vmType_desktop: 'Desktop',
vmType_highPerformance: 'High Performance',
vmType_server: 'Server',
diff --git a/src/ovirtapi/index.js b/src/ovirtapi/index.js
index 39a7fb2fb7..ab81375df8 100644
--- a/src/ovirtapi/index.js
+++ b/src/ovirtapi/index.js
@@ -17,7 +17,6 @@ import {
httpPost,
httpPut,
httpDelete,
- httpHead,
} from './transport'
import * as Transforms from './transform'
@@ -104,11 +103,6 @@ const OvirtApi = {
}
return httpGet({ url })
},
- isVmExist ({ vmId }: { vmId: string }): Promise