{-| Implementation of the doc strings for the opcodes.

-}

{-

Copyright (C) 2009, 2010, 2011, 2012, 2013 Google Inc.
All rights reserved.

Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions are
met:

1. Redistributions of source code must retain the above copyright notice,
this list of conditions and the following disclaimer.

2. Redistributions in binary form must reproduce the above copyright
notice, this list of conditions and the following disclaimer in the
documentation and/or other materials provided with the distribution.

THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

-}

module Ganeti.Hs2Py.OpDoc where


opClusterPostInit :: String
opClusterPostInit =
  "Post cluster initialization.\n\
\\n\
\  This opcode does not touch the cluster at all. Its purpose is to run hooks\n\
\  after the cluster has been initialized."

opClusterDestroy :: String
opClusterDestroy =
  "Destroy the cluster.\n\
\\n\
\  This opcode has no other parameters. All the state is irreversibly\n\
\  lost after the execution of this opcode."

opClusterQuery :: String
opClusterQuery =
  "Query cluster information."

opClusterVerify :: String
opClusterVerify =
  "Submits all jobs necessary to verify the cluster."

opClusterVerifyConfig :: String
opClusterVerifyConfig =
  "Verify the cluster config."

opClusterVerifyGroup :: String
opClusterVerifyGroup =
  "Run verify on a node group from the cluster.\n\
\\n\
\  @type skip_checks: C{list}\n\
\  @ivar skip_checks: steps to be skipped from the verify process; this\n\
\                     needs to be a subset of\n\
\                     L{constants.VERIFY_OPTIONAL_CHECKS}; currently\n\
\                     only L{constants.VERIFY_NPLUSONE_MEM} can be passed"

opClusterVerifyDisks :: String
opClusterVerifyDisks =
  "Verify the cluster disks."

opGroupVerifyDisks :: String
opGroupVerifyDisks =
  "Verifies the status of all disks in a node group.\n\
\\n\
\  Result: a tuple of three elements:\n\
\    - dict of node names with issues (values: error msg)\n\
\    - list of instances with degraded disks (that should be activated)\n\
\    - dict of instances with missing logical volumes (values: (node, vol)\n\
\      pairs with details about the missing volumes)\n\
\\n\
\  In normal operation, all lists should be empty. A non-empty instance\n\
\  list (3rd element of the result) is still ok (errors were fixed) but\n\
\  non-empty node list means some node is down, and probably there are\n\
\  unfixable drbd errors.\n\
\\n\
\  Note that only instances that are drbd-based are taken into\n\
\  consideration. This might need to be revisited in the future."

opClusterRepairDiskSizes :: String
opClusterRepairDiskSizes =
  "Verify the disk sizes of the instances and fixes configuration\n\
\  mismatches.\n\
\\n\
\  Parameters: optional instances list, in case we want to restrict the\n\
\  checks to only a subset of the instances.\n\
\\n\
\  Result: a list of tuples, (instance, disk, parameter, new-size) for\n\
\  changed configurations.\n\
\\n\
\  In normal operation, the list should be empty.\n\
\\n\
\  @type instances: list\n\
\  @ivar instances: the list of instances to check, or empty for all instances"

opClusterConfigQuery :: String
opClusterConfigQuery =
  "Query cluster configuration values."

opClusterRename :: String
opClusterRename =
  "Rename the cluster.\n\
\\n\
\  @type name: C{str}\n\
\  @ivar name: The new name of the cluster. The name and/or the master IP\n\
\              address will be changed to match the new name and its IP\n\
\              address."

opClusterSetParams :: String
opClusterSetParams =
  "Change the parameters of the cluster.\n\
\\n\
\  @type vg_name: C{str} or C{None}\n\
\  @ivar vg_name: The new volume group name or None to disable LVM usage."

opClusterRedistConf :: String
opClusterRedistConf =
  "Force a full push of the cluster configuration."

opClusterActivateMasterIp :: String
opClusterActivateMasterIp =
  "Activate the master IP on the master node."

opClusterDeactivateMasterIp :: String
opClusterDeactivateMasterIp =
  "Deactivate the master IP on the master node."

opClusterRenewCrypto :: String
opClusterRenewCrypto =
  "Renews the cluster node's SSL client certificates."

opQuery :: String
opQuery =
  "Query for resources/items.\n\
\\n\
\  @ivar what: Resources to query for, must be one of L{constants.QR_VIA_OP}\n\
\  @ivar fields: List of fields to retrieve\n\
\  @ivar qfilter: Query filter"

opQueryFields :: String
opQueryFields =
  "Query for available resource/item fields.\n\
\\n\
\  @ivar what: Resources to query for, must be one of L{constants.QR_VIA_OP}\n\
\  @ivar fields: List of fields to retrieve"

opOobCommand :: String
opOobCommand =
  "Interact with OOB."

opRestrictedCommand :: String
opRestrictedCommand =
  "Runs a restricted command on node(s)."

opRepairCommand :: String
opRepairCommand =
  "Runs a repair command on a given node."

opNodeRemove :: String
opNodeRemove =
  "Remove a node.\n\
\\n\
\  @type node_name: C{str}\n\
\  @ivar node_name: The name of the node to remove. If the node still has\n\
\                   instances on it, the operation will fail."

opNodeAdd :: String
opNodeAdd =
  "Add a node to the cluster.\n\
\\n\
\  @type node_name: C{str}\n\
\  @ivar node_name: The name of the node to add. This can be a short name,\n\
\                   but it will be expanded to the FQDN.\n\
\  @type primary_ip: IP address\n\
\  @ivar primary_ip: The primary IP of the node. This will be ignored when\n\
\                    the opcode is submitted, but will be filled during the\n\
\                    node add (so it will be visible in the job query).\n\
\  @type secondary_ip: IP address\n\
\  @ivar secondary_ip: The secondary IP of the node. This needs to be passed\n\
\                      if the cluster has been initialized in 'dual-network'\n\
\                      mode, otherwise it must not be given.\n\
\  @type readd: C{bool}\n\
\  @ivar readd: Whether to re-add an existing node to the cluster. If\n\
\               this is not passed, then the operation will abort if the node\n\
\               name is already in the cluster; use this parameter to\n\
\               'repair' a node that had its configuration broken, or was\n\
\               reinstalled without removal from the cluster.\n\
\  @type group: C{str}\n\
\  @ivar group: The node group to which this node will belong.\n\
\  @type vm_capable: C{bool}\n\
\  @ivar vm_capable: The vm_capable node attribute\n\
\  @type master_capable: C{bool}\n\
\  @ivar master_capable: The master_capable node attribute"

opNodeQuery :: String
opNodeQuery =
  "Compute the list of nodes."

opNodeQueryvols :: String
opNodeQueryvols =
  "Get list of volumes on node."

opNodeQueryStorage :: String
opNodeQueryStorage =
  "Get information on storage for node(s)."

opNodeModifyStorage :: String
opNodeModifyStorage =
  "Modifies the properies of a storage unit"

opRepairNodeStorage :: String
opRepairNodeStorage =
  "Repairs the volume group on a node."

opNodeSetParams :: String
opNodeSetParams =
  "Change the parameters of a node."

opNodePowercycle :: String
opNodePowercycle =
  "Tries to powercycle a node."

opNodeMigrate :: String
opNodeMigrate =
  "Migrate all instances from a node."

opNodeEvacuate :: String
opNodeEvacuate =
  "Evacuate instances off a number of nodes."

opInstanceCreate :: String
opInstanceCreate =
  "Create an instance.\n\
\\n\
\  @ivar instance_name: Instance name\n\
\  @ivar mode: Instance creation mode (one of\
\ L{constants.INSTANCE_CREATE_MODES})\n\
\  @ivar source_handshake: Signed handshake from source (remote import only)\n\
\  @ivar source_x509_ca: Source X509 CA in PEM format (remote import only)\n\
\  @ivar source_instance_name: Previous name of instance (remote import only)\n\
\  @ivar source_shutdown_timeout: Shutdown timeout used for source instance\n\
\    (remote import only)"

opInstanceMultiAlloc :: String
opInstanceMultiAlloc =
  "Allocates multiple instances."

opInstanceReinstall :: String
opInstanceReinstall =
  "Reinstall an instance's OS."

opInstanceRemove :: String
opInstanceRemove =
  "Remove an instance."

opInstanceRename :: String
opInstanceRename =
  "Rename an instance."

opInstanceStartup :: String
opInstanceStartup =
  "Startup an instance."

opInstanceShutdown :: String
opInstanceShutdown =
  "Shutdown an instance."

opInstanceReboot :: String
opInstanceReboot =
  "Reboot an instance."

opInstanceReplaceDisks :: String
opInstanceReplaceDisks =
  "Replace the disks of an instance."

opInstanceFailover :: String
opInstanceFailover =
  "Failover an instance."

opInstanceMigrate :: String
opInstanceMigrate =
  "Migrate an instance.\n\
\\n\
\  This migrates (without shutting down an instance) to its secondary\n\
\  node.\n\
\\n\
\  @ivar instance_name: the name of the instance\n\
\  @ivar mode: the migration mode (live, non-live or None for auto)"

opInstanceMove :: String
opInstanceMove =
  "Move an instance.\n\
\\n\
\  This move (with shutting down an instance and data copying) to an\n\
\  arbitrary node.\n\
\\n\
\  @ivar instance_name: the name of the instance\n\
\  @ivar target_node: the destination node"

opInstanceConsole :: String
opInstanceConsole =
  "Connect to an instance's console."

opInstanceActivateDisks :: String
opInstanceActivateDisks =
  "Activate an instance's disks."

opInstanceDeactivateDisks :: String
opInstanceDeactivateDisks =
  "Deactivate an instance's disks."

opInstanceRecreateDisks :: String
opInstanceRecreateDisks =
  "Recreate an instance's disks."

opInstanceQuery :: String
opInstanceQuery =
  "Compute the list of instances."

opInstanceQueryData :: String
opInstanceQueryData =
  "Compute the run-time status of instances."

opInstanceSetParams :: String
opInstanceSetParams =
  "Change the parameters of an instance."

opInstanceGrowDisk :: String
opInstanceGrowDisk =
  "Grow a disk of an instance."

opInstanceChangeGroup :: String
opInstanceChangeGroup =
  "Moves an instance to another node group."

opGroupAdd :: String
opGroupAdd =
  "Add a node group to the cluster."

opGroupAssignNodes :: String
opGroupAssignNodes =
  "Assign nodes to a node group."

opGroupQuery :: String
opGroupQuery =
  "Compute the list of node groups."

opGroupSetParams :: String
opGroupSetParams =
  "Change the parameters of a node group."

opGroupRemove :: String
opGroupRemove =
  "Remove a node group from the cluster."

opGroupRename :: String
opGroupRename =
  "Rename a node group in the cluster."

opGroupEvacuate :: String
opGroupEvacuate =
  "Evacuate a node group in the cluster."

opOsDiagnose :: String
opOsDiagnose =
  "Compute the list of guest operating systems."

opExtStorageDiagnose :: String
opExtStorageDiagnose =
  "Compute the list of external storage providers."

opBackupQuery :: String
opBackupQuery =
  "Compute the list of exported images."

opBackupPrepare :: String
opBackupPrepare =
  "Prepares an instance export.\n\
\\n\
\  @ivar instance_name: Instance name\n\
\  @ivar mode: Export mode (one of L{constants.EXPORT_MODES})"

opBackupExport :: String
opBackupExport =
  "Export an instance.\n\
\\n\
\  For local exports, the export destination is the node name. For\n\
\  remote exports, the export destination is a list of tuples, each\n\
\  consisting of hostname/IP address, port, magic, HMAC and HMAC\n\
\  salt. The HMAC is calculated using the cluster domain secret over\n\
\  the value \"${index}:${hostname}:${port}\". The destination X509 CA\n\
\  must be a signed certificate.\n\
\\n\
\  @ivar mode: Export mode (one of L{constants.EXPORT_MODES})\n\
\  @ivar target_node: Export destination\n\
\  @ivar x509_key_name: X509 key to use (remote export only)\n\
\  @ivar destination_x509_ca: Destination X509 CA in PEM format (remote\n\
\                             export only)"

opBackupRemove :: String
opBackupRemove =
  "Remove an instance's export."

opTagsGet :: String
opTagsGet =
  "Returns the tags of the given object."

opTagsSearch :: String
opTagsSearch =
  "Searches the tags in the cluster for a given pattern."

opTagsSet :: String
opTagsSet =
  "Add a list of tags on a given object."

opTagsDel :: String
opTagsDel =
  "Remove a list of tags from a given object."

opTestDelay :: String
opTestDelay =
  "Sleeps for a configured amount of time.\n\
\\n\
\  This is used just for debugging and testing.\n\
\\n\
\  Parameters:\n\
\    - duration: the time to sleep, in seconds\n\
\    - on_master: if true, sleep on the master\n\
\    - on_nodes: list of nodes in which to sleep\n\
\\n\
\  If the on_master parameter is true, it will execute a sleep on the\n\
\  master (before any node sleep).\n\
\\n\
\  If the on_nodes list is not empty, it will sleep on those nodes\n\
\  (after the sleep on the master, if that is enabled).\n\
\\n\
\  As an additional feature, the case of duration < 0 will be reported\n\
\  as an execution error, so this opcode can be used as a failure\n\
\  generator. The case of duration == 0 will not be treated specially."

opTestAllocator :: String
opTestAllocator =
  "Allocator framework testing.\n\
\\n\
\  This opcode has two modes:\n\
\    - gather and return allocator input for a given mode (allocate new\n\
\      or replace secondary) and a given instance definition (direction\n\
\      'in')\n\
\    - run a selected allocator for a given operation (as above) and\n\
\      return the allocator output (direction 'out')"

opTestJqueue :: String
opTestJqueue =
  "Utility opcode to test some aspects of the job queue."

opTestOsParams :: String
opTestOsParams =
  "Utility opcode to test secret os parameter transmission."

opTestDummy :: String
opTestDummy =
  "Utility opcode used by unittests."

opNetworkAdd :: String
opNetworkAdd =
  "Add an IP network to the cluster."

opNetworkRemove :: String
opNetworkRemove =
  "Remove an existing network from the cluster.\n\
\     Must not be connected to any nodegroup."

opNetworkSetParams :: String
opNetworkSetParams =
  "Modify Network's parameters except for IPv4 subnet"

opNetworkConnect :: String
opNetworkConnect =
  "Connect a Network to a specific Nodegroup with the defined netparams\n\
\     (mode, link). Nics in this Network will inherit those params.\n\
\     Produce errors if a NIC (that its not already assigned to a network)\n\
\     has an IP that is contained in the Network this will produce error\
\ unless\n\
\     --no-conflicts-check is passed."

opNetworkDisconnect :: String
opNetworkDisconnect =
  "Disconnect a Network from a Nodegroup. Produce errors if NICs are\n\
\     present in the Network unless --no-conficts-check option is passed."

opNetworkQuery :: String
opNetworkQuery =
  "Compute the list of networks."
