| Summary: | vdsClient: usage not printed for vdsClient upgradeStoragePool command | ||
|---|---|---|---|
| Product: | Red Hat Enterprise Linux 6 | Reporter: | Avi Tal <atal> |
| Component: | vdsm | Assignee: | Yotam Oron <yoron> |
| Status: | CLOSED ERRATA | QA Contact: | Yaniv Kaul <ykaul> |
| Severity: | low | Docs Contact: | |
| Priority: | unspecified | ||
| Version: | 6.1 | CC: | abaron, bazulay, danken, iheim, ilvovsky, jkt, pstehlik, sgrinber, srevivo, syeghiay, tdosek, yeylon, ykaul |
| Target Milestone: | rc | ||
| Target Release: | --- | ||
| Hardware: | x86_64 | ||
| OS: | Linux | ||
| Whiteboard: | |||
| Fixed In Version: | vdsm-4.9-72.el6 | Doc Type: | Bug Fix |
| Doc Text: | Story Points: | --- | |
| Clone Of: | Environment: | ||
| Last Closed: | 2011-12-06 07:08:11 UTC | Type: | --- |
| Regression: | --- | Mount Type: | --- |
| Documentation: | --- | CRM: | |
| Verified Versions: | Category: | --- | |
| oVirt Team: | --- | RHEL 7.3 requirements from Atomic Host: | |
| Cloudforms Team: | --- | Target Upstream Version: | |
proper usage information should be printed when validateArgTypes fails. Verified on:
vdsm-cli-4.9-42.el6.x86_64
vdsm-4.9-56.el6.x86_64
libvirt-client-0.8.7-7.el6.x86_64
libvirt-0.8.7-7.el6.x86_64
libvirt-python-0.8.7-7.el6.x86_64
Output:
[root@grey-vdse yoron]# vdsClient -s 0 upgradeStoragePool
ERROR - Unknown command
Usage: vdsClient <server> [OPTIONS] <command> [Command parameters]
Options
-h Display this help
-m List supported methods and their params (Short help)
-s [--truststore path] Connect to server with SSL.
If truststore path is not specified, use defaults.
Commands
acquireDomainLock
<spUUID> <sdUUID>
acquire storage domain lock
activateStorageDomain
<domain UUID> <pool UUID>
Activate a storage domain that is already a member in a storage pool.
addNetwork
bridge=<bridge> [vlan=<number>] [bond=<bond>] nics=nic[,nic]
Add a new network to this vds.
attachStorageDomain
<domain UUID> <pool UUID>
Attach a storage domain to a storage pool.
changeCD
<vmId> <fileName|drivespec>
Changes the iso image of the cdrom
changeFloppy
<vmId> <fileName|drivespec>
Changes the image of the floppy drive
checkDomain
<spUUID><sdUUID>...
check Image(s)
checkImage
<spUUID> <sdUUID> <imgUUID>...
check Image(s)
checkPool
<spUUID>...
check Image(s)
cleanupUnusedConnections
Clean up unused iSCSI storage connections
clearAsyncTask
<Task name> <spUUID>
Clear asynchronous task
clearTask
<TaskID>
clear async task
connectStoragePool
<spUUID> <id> <scsi-key> [masterUUID] [masterVer]
Connect a Host to specific storage pool
connectStorageServer
<server type> <spUUID> <conList (id=...,connection=server:/export_path,portal=...,port=...,iqn=...,user=...,password=...)>
Connect to a storage low level entity (server)
continue
<vmId>
Continues execution after of a paused machine
copyImage
<sdUUID> <spUUID> <vmUUID> <srcImgUUID> <srcVolUUID> <dstImgUUID> <dstVolUUID> <dstDescr> <dstSdUUID> <volType> <volFormat> <preallocate> [<postZero>] [<force>]
Create new template/volume from VM.
Do it by collapse and copy the whole chain (baseVolUUID->srcVolUUID)
create
<configFile> [parameter=value, parameter=value, ......]
Creates new machine with the paremeters givven in the command line overriding the ones in the config file
Example with config file: vdsClient someServer create myVmConfigFile
Example with no file : vdsClient someServer create /dev/null vmId=<uuid> memSize=256 imageFile=someImage display=<vnc|local|qxl|qxlnc>
Parameters list: r=required, o=optional
r vmId=<uuid> : Unique identification for the created VM. Any additional operation on the VM must refer to this ID
o vmType=<qemu/kvm> : Virtual machine technology - if not givven kvm is default
o kvmEnable=<true/false> : run in KVM enabled mode or full emulation - default is according to the VDS capabilities
r memSize=<int> : Memory to allocate for this machine
r macAddr=<aa:bb:cc:dd:ee:ff> : MAC address of the machine
r display=<vnc|local|qxl|qxlnc> : send the machine display to vnc, local host, spice, or spice with no image compression
o drive=pool:poolID,domain:domainID,image:imageID,volume:volumeID[,boot:true,format:cow] : disk image by UUIDs
o (deprecated) hda/b/c/d=<path> : Disk drive images
o floppy=<image> : Mount the specified Image as floppy
o cdrom=<path> : ISO image file to be mounted as the powerup cdrom
o boot=<c/d/n> : boot device - drive C or cdrom or network
o sysprepInf=/path/to/file: Launch with the specified file as sysprep.inf in floppy
o acpiEnable : If present will remove the default -no-acpi switch
o tdf : If present will add the -rtc-td-hack switch
o irqChip : If false, add the -no-kvm-irqchip switch
o spiceSecureChannels : comma-separated list of spice channel that will be encrypted
o spiceMonitors : number of emulated screen heads
o soundDevice : emulated sound device
o launchPaused : If "true", start qemu paused
o vmName : human-readable name of new VM
o tabletEnable : If "true", enable tablet input
o timeOffset : guest's start date, relative to host's time, in seconds
o smp : number of vcpus
o smpCoresPerSocket, smpThreadsPerCore : vcpu topology
o keyboardLayout : language code of client keyboard
o cpuType : emulated cpu (with optional flags)
o emulatedMachine : passed as qemu's -M
createStorageDomain
<storage type> <domain UUID> <domain name> <param> <domType>
Creates new storage domain
createStoragePool
<storage type> <spUUID> <poolName> <masterDom> <domList>(sdUUID1,sdUUID2,...) <masterVersion>, [<lockPolicy> <lockRenewalIntervalSec> <leaseTimeSec> <ioOpTimeoutSec> <leaseRetries>]
Create new storage pool with single/multiple image data domain
createVG
<sdUUID> <devlist>
Create a new VG from devices devlist (list of dev GUIDs)
createVolume
<sdUUID> <spUUID> <imgUUID> <size> <volFormat> <preallocate> <diskType> <newVolUUID> <descr> <srcImgUUID> <srcVolUUID>
Creates new volume or snapshot
deactivateStorageDomain
<domain UUID> <pool UUID> <new master domain UUID> <masterVer>
Deactivate a storage domain.
delNetwork
bridge=<bridge> [vlan=<number>] [bond=<bond>] nics=nic[,nic]
Remove a network (and parts thereof) from this vds.
deleteImage
<sdUUID> <spUUID> <imgUUID> [<postZero>] [<force>]
Delete Image folder with all volumes.
deleteVolume
<sdUUID> <spUUID> <imgUUID> <volUUID>,...,<volUUID> <postZero> [<force>]
Deletes an volume if its a leaf. Else returns error
deleteVolumeByDescr
<part of description> <sdUUID> <spUUID> <imgUUID>
Deletes list of volumes(only leafs) according to their description
desktopLock
<vmId>
Logoff current user
desktopLogin
<vmId> <domain> <user> <password>
Login to vmId desktop using the supplied credentials
desktopLogoff
<vmId> <force>
Lock user session. force should be set to true/false
destroy
<vmId>
Stops the emulation and destroys the virtual machine. This is not a shutdown.
destroyStoragePool
<spUUID> <id> <scsi-key>
Destroy storage pool
detachStorageDomain
<domain UUID> <pool UUID> <new master domain UUID> <masterVer>
Detach a storage domain from a storage pool.
disconnectStoragePool
<spUUID> <id> <scsi-key>
Disconnect a Host from the specific storage pool
disconnectStorageServer
<server type> <spUUID> <conList (id=...,connection=server:/export_path,portal=...,port=...,iqn=...,user=...,password=...)>
Disconnect from a storage low level entity (server)
discoverST
ip[:port] [username password]
Discover the available iSCSI targetnames on a specified iSCSI portal
editNetwork
oldBridge=<bridge> newBridge=<bridge> [vlan=<number>] [bond=<bond>] nics=nic[,nic]
Replace a network with a new one.
extendStorageDomain
<sdUUID> <spUUID> <devlist>
Extend the Storage Domain by adding devices devlist (list of dev GUIDs)
extendVolume
<sdUUID> <spUUID> <imgUUID> <volUUID> <new disk size>
Extend volume (SAN only)
fenceNode
<addr> <port> <agent> <user> <passwd> <action> [<secure> [<options>]]
<action> is one of (status, on, off, reboot),
<agent> is one of (rsa, ilo, ipmilan, drac5, etc)
<secure> (true|false) may be passed to some agents
send a fencing command to a remote node
fenceSpmStorage
<spUUID> <prevID> <prevLVER>
fence SPM storage state
flushSDC
Force SD Cache in SD Factory to be flushed.
forcedDetachStorageDomain
<domain UUID> <pool UUID>
Forced detach a storage domain from a storage pool.
formatStorageDomain
<domain UUID> [<autoDetach>]
Format detached storage domain.
getAllTasksInfo
get info of all async tasks
getAllTasksStatuses
list statuses of all async tasks
getAllVmStats
Get Statistics info for all existing VMs
getConnectedStoragePoolsList
Get storage pools list
getDeviceInfo
<dev-guid>
Get block storage device info.
getDeviceList
[storageType]
List of all block devices (optionally - mathing storageType).
getFloppyList
<spUUID>
Returns list of all .vfd images in ISO domain
getImageDomainsList
<spUUID> <imgUUID> [datadomain=True]
Get list of all data domains in the pool that contains imgUUID
getImagesList
<sdUUID>
Get list of all images of specific domain
getIsoList
<spUUID>
Returns list of all .iso images in ISO domain
getParent
<sdUUID> <spUUID> <imgUUID> <Disk Image uuid>
Returns the parent of the volume. Error if no parent exists
getSessionList
Collect the list of active SAN storage sessions
getSpmStatus
<spUUID>
Get SPM status
getStorageDomainInfo
<domain UUID>
Get storage domain info.
getStorageDomainStats
<domain UUID>
Get storage domain statistics.
getStorageDomainsList
<pool UUID>
Get storage domains list of pool or all domains if pool omitted.
getStoragePoolInfo
<spUUID>
Get storage pool info
getTaskInfo
<TaskID>
get async task info
getTaskStatus
<TaskID>
get task status
getVGInfo
<vgUUID>
Get info of VG
getVGList
storageType
List of all VGs.
getVdsCapabilities
Get Capabilities info of the VDS
getVdsCaps
Get Capabilities info of the VDS
getVdsStats
Get Statistics info on the VDS
getVmStats
<vmId>
Get Statistics info on the VM
getVmsInfo
<Import path> <Import type> <VM type>
Return list of import candidates with their info
getVmsList
<spUUID> [sdUUID]
Get list of VMs from the pool or domain if sdUUID given
getVolumeInfo
<sdUUID> <spUUID> <imgUUID> <volUUID>
Returns all the volume details
getVolumePath
<sdUUID> <spUUID> <imgUUID> <volume uuid>
Returns the path to the requested uuid
getVolumeSize
<sdUUID> <spUUID> <imgUUID> <volUUID>
Returns the apparent size and the true size of the volume (in bytes)
getVolumesList
<sdUUID> <spUUID> [imgUUID]
Returns list of volumes of imgUUID or sdUUID if imgUUID absent
hibernate
<vmId>
Hibernates the desktop
list
[table]
Lists all available machines on the specified server and all available configuration info
If table modifier added then show table with the fields: vmId vmName Status IP
listNames
Lists all available machines on the specified server
mergeSnapshots
<sdUUID> <spUUID> <vmUUID> <imgUUID> <Ancestor Image uuid> <Successor Image uuid> [<postZero>]
Merge images from successor to ancestor.
The result is a image named as successor image and contents the data of whole successor->ancestor chain
migrate
vmId=<id> method=<offline|online> src=<host:[port]> dst=<host:[port]>
Migrate a desktop from src machine to dst host using the specified ports
migrateCancel
<vmId>
(not implemented) cancel machine migration
migrateStatus
<vmId>
Check the progress of current outgoing migration
monitorCommand
<vmId> <string>
Send a string containing monitor command to the desktop
moveImage
<spUUID> <srcDomUUID> <dstDomUUID> <imgUUID> <vmUUID> <op = COPY_OP/MOVE_OP> [<postZero>] [ <force>]
Move/Copy image between storage domains within same storage pool
moveMultiImage
<spUUID> <srcDomUUID> <dstDomUUID> <imgList>({imgUUID=postzero,imgUUID=postzero,...}) <vmUUID> [<force>]
Move multiple images between storage domains within same storage pool
pause
<vmId>
Pauses the execution of the virtual machine without termination
prepareForShutdown
reconstructMaster
<spUUID> <poolName> <masterDom> <domDict>({sdUUID1=status,sdUUID2=status,...}) <masterVersion>, [<lockPolicy> <lockRenewalIntervalSec> <leaseTimeSec> <ioOpTimeoutSec> <leaseRetries>]
Reconstruct master domain
refreshStoragePool
<spUUID> <masterDom> <masterVersion>
Refresh storage pool
releaseDomainLock
<spUUID> <sdUUID>
release storage domain lock
removeVG
<vgUUID>
remove the VG identified by its UUID
removeVM
<spUUID> <vmList> (vmUUID1,vmUUID2,...) [sdUUID]
Remove VM from pool or Backup domain
repoStats
Get the the health status of the active domains
reset
<vmId>
Sends reset signal to the vm
revertTask
<TaskID>
revert async task
sendHcCmd
<vmId> <message>
Sends a message to a specific VM through Hypercall channel
sendkeys
<vmId> <key1> ...... <keyN>
Send the key sequence to the vm
setLogLevel
<level> [logName][,logName]...
set log verbosity level (10=DEBUG, 50=CRITICAL
setSafeNetworkConfig
declare current network configuration as "safe"
setStorageDomainDescription
<domain UUID> <descr>
Set storage domain description
setStoragePoolDescription
<spUUID> <descr>
Set storage pool description
setVmTicket
<vmId> <password> <sec> [disconnect|keep|fail]
Set the password to the vm display for the next <sec> seconds.
Optional argument instructs spice regarding currently-connected client.
setVolumeDescription
<sdUUID> <spUUID> <imgUUID> <volUUID> <Description>
Sets a new description to the volume
setVolumeLegality
<sdUUID> <spUUID> <imgUUID> <volUUID> <Legality>
Set volume legality (ILLEGAL/LEGAL).
shutdown
<vmId> <timeout> <message>
Stops the emulation and graceful shutdown the virtual machine.
spmStart
<spUUID> <prevID> <prevLVER> <recoveryMode> <scsiFencing>
Start SPM functionality
spmStop
<spUUID>
Stop SPM functionality
stopAllCopies
stopTask
<TaskID>
stop async task
updateVM
<spUUID> <vmList> ('vm'=vmUUID,'ovf'='...','imglist'='imgUUID1+imgUUID2+...') [sdUUID]
Update VM on pool or Backup domain
uploadVolume
<sdUUID> <spUUID> <imgUUID> <volUUID> <srcPath> <size>
Upload volume file into existing volume
validateStorageDomain
<domain UUID>
Validate storage domain
validateStorageServerConnection
<server type> <spUUID> <conList (id=...,connection=server:/export_path,portal=...,port=...,iqn=...,user=...,password=...)>
Validate that we can connect to a storage server
sorry but having the same problem on vdsm 56
[root@navy-vds3 ~]# rpm -qa vdsm-cli vdsm
vdsm-4.9-56.el6.x86_64
vdsm-cli-4.9-56.el6.x86_64
[root@navy-vds3 ~]# vdsClient -s 0 upgradeStoragePool
General Exception: ('method upgradeStoragePool args: (), error: public_upgradeStoragePool() takes exactly 3 arguments (1 given)',)
Since RHEL 6.1 External Beta has begun, and this bug remains unresolved, it has been rejected as it is not proposed as exception or blocker. Red Hat invites you to ask your support representative to propose this request, if appropriate and relevant, in the next release of Red Hat Enterprise Linux. Added verification for number of arguments (the command was invoked with no arguments while it expects 2 arguments) vdsm-4.9-58.el6:
[root@srh-06 ~]# vdsClient -s 0 upgradeStoragePool
Traceback (most recent call last):
File "/usr/share/vdsm/vdsClient.py", line 1998, in <module>
code, message = commands[command][0](commandArgs)
File "/usr/share/vdsm/vdsClient.py", line 680, in upgradeStoragePool
validateArgTypes(args, [str, int], True)
File "/usr/share/vdsm/vdsClient.py", line 42, in validateArgTypes
raise Exception("Wrong number of arguments provided, expecting %d got %d", len(conv), len(args))
Exception: ('Wrong number of arguments provided, expecting %d got %d', 2, 0)
Should this be the result? I assume Avi wanted it to show something like
wrong usage: vdsclient ... upgradeStoragePool <spUUID>
Reopening - only exception of vdsClient.py is shown instead of right usage message. Tomas, you are right: http://gerrit.usersys.redhat.com/471 would fix that. I hate vdsClient. http://gerrit.usersys.redhat.com/504 Since the problem described in this bug report should be resolved in a recent advisory, it has been closed with a resolution of ERRATA. For information on the advisory, and where to find the updated files, follow the link below. If the solution does not work for you, open a new bug report. http://rhn.redhat.com/errata/RHEA-2011-1782.html |
Description of problem: vdsm-4.9-51.el6.x86_64 libvirt-0.8.7-8.el6.x86_64 [root@south-01 ~]# vdsClient -s 0 upgradeStoragePool General Exception: ('method upgradeStoragePool args: (), error: public_upgradeStoragePool() takes exactly 3 arguments (1 given)',) Steps to Reproduce: 1.vdsClient -s 0 upgradeStoragePool Actual results: Expected results: Additional info: