MediaWiki API result

This is the HTML representation of the JSON format. HTML is good for debugging, but is unsuitable for application use.

Specify the format parameter to change the output format. To see the non-HTML representation of the JSON format, set format=json.

See the complete documentation, or the API help for more information.

{
    "batchcomplete": "",
    "continue": {
        "gapcontinue": "Redis",
        "continue": "gapcontinue||"
    },
    "warnings": {
        "main": {
            "*": "Subscribe to the mediawiki-api-announce mailing list at <https://lists.wikimedia.org/postorius/lists/mediawiki-api-announce.lists.wikimedia.org/> for notice of API deprecations and breaking changes."
        },
        "revisions": {
            "*": "Because \"rvslots\" was not specified, a legacy format has been used for the output. This format is deprecated, and in the future the new format will always be used."
        }
    },
    "query": {
        "pages": {
            "1911": {
                "pageid": 1911,
                "ns": 0,
                "title": "Recovery of Locked VMDK",
                "revisions": [
                    {
                        "contentformat": "text/x-wiki",
                        "contentmodel": "wikitext",
                        "*": "This guide explains a recovery procedure for a locked VMDK file under the ESX Hypervisor.\nAlthough out of the ordinary, this problem can prevent a VM from booting which makes it particularly nasty.\n\nLog excerpts from vmware.log describing the problem...\n Sep 24 08:41:03.048: vmx| DISKLIB-DSCPTR: Failed to open extents for descriptor file in normal mode\n Sep 24 08:41:03.049: vmx| DISKLIB-LINK  :\n  \"/vmfs/volumes/454a6c04-cc731970-4ded-000423c460a7/LUVM21/LUVM21.vmdk\" :\n  failed to open (Device or resource busy).\n Sep 24 08:41:03.049: vmx| DISKLIB-CHAIN :\n  \"/vmfs/volumes/454a6c04-cc731970-4ded-000423c460a7/LUVM21/LUVM21.vmdk\" :\n  failed to open (Device or resource busy).\n Sep 24 08:41:03.049: vmx| DISKLIB-LIB   : Failed to open\n  '/vmfs/volumes/45e781ce-df97e708-4ea4-00145e1c0f80/MYVM/MYVM.vmdk' with \n  flags 0xa (Device or resource busy).\n Sep 24 08:41:03.049: vmx| DISK: Cannot open disk\n  \"/vmfs/volumes/45e781ce-df97e708-4ea4-00145e1c0f80/MYVM/MYVM.vmdk\":\n  Device or resource busy (1048585).\n Sep 24 08:41:03.049: vmx| DISK: Failed to open disk\n  '/vmfs/volumes/45e781ce-df97e708-4ea4-00145e1c0f80/MYVM/MYVM.vmdk' :\n  Device or resource busy (1048585) 3191\n Sep 24 08:41:03.049: vmx| Msg_Post: Error\n Sep 24 08:41:03.049: vmx| [msg.disk.noBackEnd] Cannot open the disk\n  '/vmfs/volumes/45e781ce-df97e708-4ea4-00145e1c0f80/MYVM/MYVM.vmdk' or one of the\n  snapshot disks it depends on.\n Sep 24 08:41:03.049: vmx| [msg.disk.configureDiskError] Reason: Device or resource busy.\n Sep 24 08:41:03.077: vmx| Module DiskEarly power on failed.\n\n== Procedure ==\n\n=== ESX 3.5+ ===\n\nIn ESX 3.5.x, all you need to do is this:\n\n vmkfstools -L release $PATH_TO_LOCKED_VMDK_FILE/myvm.vmdk\n\nIf i'm not mistaken, this is the same in ESX 3.0.x.  Leaving the contents for ESX 3.0.x below alone anyway --[[User:Long|Long]] 04:44, 27 August 2010 (UTC)\n\n=== ESX 3.0.x ===\n\nWe will use vcbExport to pull the data out of the locked VMDK into a fresh unlocked VMDK.\nChange MYVM to match your VM's name.\n\n export VMNAME=MYVM\n\nFind the folder where it lives\n ls /vmfs/volumes/*/$VMNAME/$VMNAME.vmx\n /vmfs/volumes/45e781ce-df97e708-4ea4-00145e1c0f80/MYVM/MYVM.vmx\n /vmfs/volumes/SAN8/MYVM/MYVM.vmx\n\nMove the old VM folder out of the way, create anew\n cd /vmfs/volumes/SAN8/\n mv $VMNAME $VMNAME.old\n mkdir $VMNAME\n cd $VMNAME\n\n time /usr/sbin/vcbExport -M 1 -F 1 -d $VMNAME.vmdk -s ../$VMNAME.old/$VMNAME.vmdk\n\nExpect to wait awhile, this took me 10m for a 12G virtual disk.  YMMV.\n\nIf there are additional virtual disks, now is the time to convert them also, i.e.,\n time /usr/sbin/vcbExport -M 1 -F 1 -d ${VMNAME}_1.vmdk -s ../${VMNAME}.old/${VMNAME}_1.vmdk\n\nNow tweek resulting MYVM.vmdk (hope you know vi)...and perhaps also MYVM_1.vmdk.\nBut not the ones with '-flat' in their names.\n\n createType=\"monolithicFlat\"\nbecomes\n createType=\"vmfs\"\nand\n RW 25165824 FLAT \"MYVM-flat.vmdk\" 0\nbecomes\n RW 25165824 VMFS \"MYVM-flat.vmdk\"\n\nRestore .vmx and .vmxf file\n cp ../$VNMAME.old/$VMNAME.vmx* .\n\nRegister VM with the host\n vmware-cmd -s register `pwd`/$VMNAME.vmx\n register(/vmfs/volumes/45e781ce-df97e708-4ea4-00145e1c0f80/MYVM/MYVM.vmx) = 1\n\nStart the VM\n vmware-cmd `pwd`/$VMNAME.vmx start\n start() = 1\n\nAnswer the inevitable UUID question (KEEP)\n vmware-cmd `pwd`/$VMNAME.vmx answer\n\nCheck the state, it should be on\n vmware-cmd `pwd`/$VMNAME.vmx getstate\n getstate() = on\n\nOf course, many of the commands above can also be performed using the viclient.\nBut that is a bit harder to explain, eh?\n\n[[Category:Virtualization]]\n[[Category:VMware]]\n{{BADS}}"
                    }
                ]
            },
            "940": {
                "pageid": 940,
                "ns": 0,
                "title": "Red Hat",
                "revisions": [
                    {
                        "contentformat": "text/x-wiki",
                        "contentmodel": "wikitext",
                        "*": "{{TRADS}}\nThis page contains tips for beginners and experts alike. \nApplicable to Red Hat, Fedora, [[CentOS]] and other distros using RPM package format.\n\n== RPM package building ==\nGo read http://fedora.redhat.com/docs/drafts/rpm-guide-en/\n\n\nBuild RPMs as a normal user. Shortcut to setup:\n mkdir -p ~/redhat; cd ~/redhat; mkdir SOURCES SPECS BUILD RPMS SRPMS\n\nThen put this in ~/.rpmmacros \n %_topdir     ~/redhat\n\nNow you can drop .spec files in the SPECS folder and build like so:\n rpmbuild -bb something.spec\n\nOr you can also drop .src.rpm files (sometimes named .srpm) into the SRPMS folder.\n rpmbuild --rebuild something-x.y.z.srpm\n\nIn either case, you'll usually end up with something usable in ~/redhat/RPMS/i386/\n\nVisit [[User:Fostermarkd/RPMBuildBox|RPMBuildBox]] and [[User:Fostermarkd/RPMBuilding|RPMBuilding]] for addl. details.\n\n== RPM extraction ==\nSometimes you may find yourself wanting one or more files that live inside an RPM package (somepackage.rpm).\nUsually this is a SPEC file, but whatever the case, here is how to get at it.\nMake sure the ''rpm2cpio'' utility is installed -- I think it comes with rpm.\n\n  rpm2cpio somepackage.rpm | cpio --make-directories --extract\n\nTo get a specific file, such as the .spec file...\n  rpm2cpio somepackage.rpm | cpio --extract \\*.spec\n\n== Yum and RPM package signing ==\nYum repositories usually have RPM packages that are signed. This means the package used a gpg/php key to sign the RPM upon creation to ensure it's validity can be verified by third party. The third party (me, you, somebody) must trust the public-key component of the gpg/pgp key used for siging.\n\nHere is how to show what gpg/pgp keys you are trusting on a given system.\n\n  rpm -q gpg-pubkey --qf '%{name}-%{version}-%{release} --> %{summary}\\n'\n  gpg-pubkey-db42a60e-37ea5438 --> gpg(Red Hat, Inc <security@redhat.com>)\n\nAlternatively, on newer version (e.g. RHEL4) the signing keys are represented as packages, and you can use this command to see them.\n  rpm -qa | grep gpg-pubkey\n...and to get more detail...\n  rpm -qi gpg-pubkey-443e1821-421f218f\n\nHere is how to import a GPG/PGP key provided by a package signer.\n  rpm --import /path/to/gpg-key\n\nReal-world uses of the above command.\n  # Dag Wieers (Dag Apt Repository v1.0) <dag@wieers.com>\n  rpm --import http://dag.wieers.com/packages/RPM-GPG-KEY.dag.txt\n\n  # CentOS-3 Key <centos-3key@caosity.org>\n  rpm --import /usr/share/doc/centos-release-3/RPM-GPG-KEY-CentOS-3\n  # Red Hat, Inc <security@redhat.com>\n  rpm --import /usr/share/doc/centos-release-3/RPM-GPG-KEY\n\n  # CentOS-4 key <centos-4key@centos.org>\n  # Note: this is the same as /usr/share/doc/centos-release-4/RPM-GPG-KEY-centos4\n  rpm --import /usr/share/doc/centos-release-4/RPM-GPG-KEY\n\nHere is the error you will get if you try to use yum to install a signed RPM package that you don't trust.\n  warning: rpmts_HdrFromFdno: V3 DSA signature: NOKEY, key ID 025e513b\n  Error: Could not find the GPG Key necessary to validate pkg   /var/cache/yum/update/packages/somepackage.i386.rpm\n  Error: You may also check that you have the correct GPG keys installed\n\n== RPM database corruption, locking and recovery issues ==\n* See [http://www.rpm.org/hintskinks/repairdb/ Repair a RPM database safely] on the http://www.rpm.org site.\n\nIf you see (something like) this:\n\n rpmdb: Suspiciously high nelem of 4294967294 on page 0\n error: db4 error(-30979) from db->verify: DB_VERIFY_BAD: Database verification failed\n\nDo this:\n\n rpm --rebuilddb -v\n\nIf you see (something like) this:\n error: rpmdbNextIterator: skipping h#     347 region trailer:\n BAD, tag 1768055647 type 2002872692 offset -1885955104 count 1650549611\n\nTry this:\n rm /var/lib/rpm/__db.*\n rpm --rebuilddb\n\nIf you see this:\n rpmdb: Lock table is out of available locker entries\n error: db4 error(22) from db->close: Invalid argument\n\nSee http://www.karan.org/blog/index.php/2008/01/16/rpm-errror-about-lock-table\n\n== Yum backup packages ==\nTo have yum make backup RPMs when you do an upgrade, add this to yum.conf.\n tsflags=repackage\n\nSee http://blog.chris.tylers.info/index.php?/archives/17-How-to-Rollback-Package-UpdatesInstallation-on-Fedora.html\n\n== Rooting out RPM divergence on x86_64 platform ==\nIf you run x86_64 distro, you can easily find the some i386 or i686 packages have snuck their way into your system. These can be easily discovered using the following command.\n rpm -qa --qf '%{name}-%{version}-%{release}.%{arch}\\n' | grep i.86\n\nCleanup using rpm -e.\n\nNote that this output format can be made permanent by putting this line in ''~/.rpmmacros'' or ''/etc/rpm/macros''\n  %_query_all_fmt %%{name}-%%{version}-%%{release}.%%{arch}\n\n== Quotas ==\nThe flash tips below assume the use of version 2 quota (eg. aquota.user) for\nusers and not groups - adjust accordingly per man pages if this is not so.\nSee http://www.tldp.org/HOWTO/Quota.html for a more detailed explanation.\n\n* (Re)build the quota statistics (note, the -v is optional)\n /sbin/quotaoff -avu /home\n /sbin/quotacheck -avu -F vfsv0\n /sbin/quotaon -avu /home\n\n* Drop these commands into a script called /etc/cron.daily/quotacheck to maintain and check your quotas.  The output will be emailed to root.\n  #!/bin/sh\n  # Update/Check for quota violation\n  /sbin/quotaoff -au\n  /sbin/quotacheck -au\n  /sbin/quotaon -au\n  /usr/sbin/repquota -a\n\n* Show a report of quota compliance\n repquota -avus -F vfsv0\n\n* Set or modify a user's quota\n** 6gb = 6 x 1024^2 = 6291456\n setquota username 6291456 6291456 0 0 /home\n** 4gb = 4 x 1024^2 = 4194304\n setquota username 4194304 4194304 0 0 /home\n** 2gb = 2 x 1024^2 = 2097152\n setquota username 2097152 2097152 0 0 /home\n** 800mb soft, 1gb hard\n setquota username 819200 1048576 0 0 /home\n** 240Msoft, 256M hard \n setquota username 245760 262144 0 0 /home\n** Reset (no quota)\n setquota username 0 0 0 0 /home\n\nSee also: [http://www.linux.com/feature/118885 Implementing quotas to restrict disk space usage]\n\n== chkconfig ==\nchkconfig can be finnicky to work with. I first used chkconfig on SGI IRIX and it was straightforward. On Red Hat it is much less so.\n  [root@rh ~]$ /sbin/chkconfig --list xinetd\n  xinetd          0:off   1:off   2:off   3:off   4:off   5:off   6:off\nOk this shows me xinetd is not supposed to be started automatically at ANY run level. Note I had to specify /sbin/chkconfig instead of just chkconfig. Apparently Red Hat does not augment your path to include /sbin and /usr/sbin when using su, so in order to have a complete root environment use - (dash) with su. i.e su -\n\n  [root@rh ~]$ /sbin/chkconfig --add xinetd\n  [root@rh ~]$ /sbin/chkconfig --list xinetd\n  xinetd          0:off   1:off   2:off   3:off   4:off   5:off   6:off\nHuh? Didn't I just tell chkconfig I wanted xinetd turned on? For some reason --add works SOMETIMES but not others.\n\n  [root@rh ~]$ /sbin/chkconfig xinetd on\n  [root@rh ~]$ /sbin/chkconfig --list xinetd\n  xinetd          0:off   1:off   2:on    3:on    4:on    5:on    6:off\nOk, this is closer to SGI IRIX style, using ''on'' or ''off'' after the name.\n\n  [root@rh ~]$ /sbin/chkconfig xinetd\n  [root@rh ~]$\nOn SGI this would have spit out the equivalent of /sbin/chkconfig --list xinetd\n\n\nUpdate: enhancement submitted to reinstate IRIX-like behavior, see https://bugzilla.redhat.com/show_bug.cgi?id=290241\n\n== Font / Terminal issues ==\nMan pages look screwy? Beginning with Red Hat 8.0 the environment began using utf8 which comes out looking badly in some cases. \nUse one of these to fix quickly.\n  (tcsh/csh) setenv LC_ALL C\n  (bash) export LANG=en_US\n\nThe permanent fix appears to be changing /etc/sysconfig/i18n to remove the\n.utf8 string.\n\n== Bonding module (NIC teaming) ==\nHere's how to use bonding in red hat linux. The example assumes you have two network interfaces, eth0 and eth1.\n\nFirst make sure these entries appear in /etc/modprobe.conf\n alias bond0 bonding\n options bonding mode=1 miimon=100 primary=eth0\n\nNow setup the ifcfg files...\n /etc/sysconfig/network-scripts/ifcfg-bond0\n DEVICE=bond0\n BOOTPROTO=none\n IPADDR=192.168.1.1    #adjust\n NETMASK=255.255.255.0 #adjust\n ONBOOT=yes\n TYPE=Ethernet\n\n /etc/sysconfig/network-scripts/ifcfg-ethX (where ethX=eth0 or ethX=eth1)\n DEVICE=ethX #adjust\n BOOTPROTO=none\n MASTER=bond0\n SLAVE=yes\n ONBOOT=yes\n\nJust make sure to use eth0 or eth1 in place of ethX above.\n\nReboot to pick up the changes and use ifconfig to see the output.\nNote that you can add bond0:0 (ip aliases) also...\n\nThere are multiple modes the module can operate under, so read Documentation/bonding.txt in the linux kernel source if you must know more. There are some hairy interoperability issues with 802.3ad link aggre\n* [http://squidward.mit.edu/rhel-doc/RH-DOCS/rhel-rg-en-3/s1-modules-ethernet.html Red Hat AS 3 Ethernet Reference Guide]\n* [http://www.linuxjournal.com/article/5524 Linux Journal] See /The Bonding Driver/\n* [http://www.itworld.com/Net/1750/NWW001113tech/pfindex.html Link aggregation with 802.3ad]\n* [http://linux-ip.net/html/ether-bonding.html Link Aggregation and High Availability with Bonding]\n\n== IP Aliases ==\nExcerpted from the [http://lists.centos.org/pipermail/centos/2005-April/004778.html CentOS mailing list], Johnn Tann explains how to allocate aliased IP address ranges:\n  > Note that Linux (as opposed to Solaris, I \n  > think?) uses eth0:0 as the first IP alias of eth0 (eth0 itself being \n  > the primary/non-alias IP address), not eth0:1. eth0:1 would be for the \n  > 2nd IP alias of eth0.\n  > \n  > But if you're doing a range, then instead of \n  > /etc/sysconfig/network-scripts/ifcfg-eth0:0, you'd want \n  > /etc/sysconfig/network-scripts/ifcfg-eth0-range0\n  > and then instead of IPADDR=, use IPADDR_START=starting.ip.address.here\n  > and IPADDR_END=ending.ip.address.here\n\nRealize also the any outgoing traffic will appear to come from the primary (eth0) IP address and not the eth0:0 IP. For instance if you are running the squid web proxy, the sites it connects to will see the src IP as whatever eth0 has assigned.\n----\n\n== See Also ==\n \n* [[CentOS]]\n* http://mark.foster.cc/kb/tips.html\n* http://nakedape.cc/wiki/RedHatLinux\n* http://nakedape.cc/wiki/ApplicationNotes_2fRpmNotes\n* [http://freshrpms.net/docs/fight/ RPM package building introduction]\n* [http://blogs.techrepublic.com.com/opensource/?p=101&tag=nl.e011 Obtaining file information with RPM]\n\n\n[[Category:Operating Systems]]\n[[Category:Linux]]\n{{BADS}}"
                    }
                ]
            }
        }
    }
}