Hide Forgot
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:
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