.. Document meta :orphan: .. |antsibull-internal-nbsp| unicode:: 0xA0 :trim: .. role:: ansible-attribute-support-label .. role:: ansible-attribute-support-property .. role:: ansible-attribute-support-full .. role:: ansible-attribute-support-partial .. role:: ansible-attribute-support-none .. role:: ansible-attribute-support-na .. Anchors .. _ansible_collections.cisco.dnac.pnp_workflow_module: .. Anchors: short name for ansible.builtin .. Anchors: aliases .. Title cisco.dnac.pnp_workflow -- Resource module for Pnp Workflow +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ .. Collection note .. note:: This plugin is part of the `cisco.dnac collection <https://galaxy.ansible.com/cisco/dnac>`_ (version 3.2.2). You might already have this collection installed if you are using the ``ansible`` package. It is not included in ``ansible-core``. To check whether it is installed, run :code:`ansible-galaxy collection list`. To install it, use: :code:`ansible-galaxy collection install cisco.dnac`. To use it in a playbook, specify: :code:`cisco.dnac.pnp_workflow`. .. version_added .. versionadded:: 3.1.0 of cisco.dnac .. contents:: :local: :depth: 1 .. Deprecated Synopsis -------- .. Description - Manage operations create, update and delete of the resource Pnp Workflow. .. note:: This module has a corresponding :ref:`action plugin <action_plugins>`. .. Aliases .. Requirements Requirements ------------ The below requirements are needed on the host that executes this module. - dnacentersdk >= 2.3.1 - python >= 3.5 .. Options Parameters ---------- .. raw:: html <table border=0 cellpadding=0 class="documentation-table"> <tr> <th colspan="3">Parameter</th> <th>Choices/<font color="blue">Defaults</font></th> <th width="100%">Comments</th> </tr> <tr> <td colspan="3"> <div class="ansibleOptionAnchor" id="parameter-_id"></div> <b>_id</b> <a class="ansibleOptionLink" href="#parameter-_id" title="Permalink to this option"></a> <div style="font-size: small"> <span style="color: purple">string</span> </div> </td> <td> </td> <td> <div>Pnp Workflow's _id.</div> </td> </tr> <tr> <td colspan="3"> <div class="ansibleOptionAnchor" id="parameter-addedOn"></div> <b>addedOn</b> <a class="ansibleOptionLink" href="#parameter-addedOn" title="Permalink to this option"></a> <div style="font-size: small"> <span style="color: purple">integer</span> </div> </td> <td> </td> <td> <div>Pnp Workflow's addedOn.</div> </td> </tr> <tr> <td colspan="3"> <div class="ansibleOptionAnchor" id="parameter-addToInventory"></div> <b>addToInventory</b> <a class="ansibleOptionLink" href="#parameter-addToInventory" title="Permalink to this option"></a> <div style="font-size: small"> <span style="color: purple">boolean</span> </div> </td> <td> <ul style="margin: 0; padding: 0"><b>Choices:</b> <li>no</li> <li>yes</li> </ul> </td> <td> <div>AddToInventory flag.</div> </td> </tr> <tr> <td colspan="3"> <div class="ansibleOptionAnchor" id="parameter-configId"></div> <b>configId</b> <a class="ansibleOptionLink" href="#parameter-configId" title="Permalink to this option"></a> <div style="font-size: small"> <span style="color: purple">string</span> </div> </td> <td> </td> <td> <div>Pnp Workflow's configId.</div> </td> </tr> <tr> <td colspan="3"> <div class="ansibleOptionAnchor" id="parameter-currTaskIdx"></div> <b>currTaskIdx</b> <a class="ansibleOptionLink" href="#parameter-currTaskIdx" title="Permalink to this option"></a> <div style="font-size: small"> <span style="color: purple">integer</span> </div> </td> <td> </td> <td> <div>Pnp Workflow's currTaskIdx.</div> </td> </tr> <tr> <td colspan="3"> <div class="ansibleOptionAnchor" id="parameter-description"></div> <b>description</b> <a class="ansibleOptionLink" href="#parameter-description" title="Permalink to this option"></a> <div style="font-size: small"> <span style="color: purple">string</span> </div> </td> <td> </td> <td> <div>Pnp Workflow's description.</div> </td> </tr> <tr> <td colspan="3"> <div class="ansibleOptionAnchor" id="parameter-dnac_debug"></div> <b>dnac_debug</b> <a class="ansibleOptionLink" href="#parameter-dnac_debug" title="Permalink to this option"></a> <div style="font-size: small"> <span style="color: purple">boolean</span> </div> </td> <td> <ul style="margin: 0; padding: 0"><b>Choices:</b> <li><div style="color: blue"><b>no</b> ←</div></li> <li>yes</li> </ul> </td> <td> <div>Flag for Cisco DNA Center SDK to enable debugging.</div> </td> </tr> <tr> <td colspan="3"> <div class="ansibleOptionAnchor" id="parameter-dnac_host"></div> <b>dnac_host</b> <a class="ansibleOptionLink" href="#parameter-dnac_host" title="Permalink to this option"></a> <div style="font-size: small"> <span style="color: purple">string</span> / <span style="color: red">required</span> </div> </td> <td> </td> <td> <div>The Cisco DNA Center hostname.</div> </td> </tr> <tr> <td colspan="3"> <div class="ansibleOptionAnchor" id="parameter-dnac_password"></div> <b>dnac_password</b> <a class="ansibleOptionLink" href="#parameter-dnac_password" title="Permalink to this option"></a> <div style="font-size: small"> <span style="color: purple">string</span> </div> </td> <td> </td> <td> <div>The Cisco DNA Center password to authenticate.</div> </td> </tr> <tr> <td colspan="3"> <div class="ansibleOptionAnchor" id="parameter-dnac_port"></div> <b>dnac_port</b> <a class="ansibleOptionLink" href="#parameter-dnac_port" title="Permalink to this option"></a> <div style="font-size: small"> <span style="color: purple">string</span> </div> </td> <td> <b>Default:</b><br/><div style="color: blue">443</div> </td> <td> <div>The Cisco DNA Center port.</div> </td> </tr> <tr> <td colspan="3"> <div class="ansibleOptionAnchor" id="parameter-dnac_username"></div> <b>dnac_username</b> <a class="ansibleOptionLink" href="#parameter-dnac_username" title="Permalink to this option"></a> <div style="font-size: small"> <span style="color: purple">string</span> </div> </td> <td> <b>Default:</b><br/><div style="color: blue">"admin"</div> </td> <td> <div>The Cisco DNA Center username to authenticate.</div> <div style="font-size: small; color: darkgreen"><br/>aliases: user</div> </td> </tr> <tr> <td colspan="3"> <div class="ansibleOptionAnchor" id="parameter-dnac_verify"></div> <b>dnac_verify</b> <a class="ansibleOptionLink" href="#parameter-dnac_verify" title="Permalink to this option"></a> <div style="font-size: small"> <span style="color: purple">boolean</span> </div> </td> <td> <ul style="margin: 0; padding: 0"><b>Choices:</b> <li>no</li> <li><div style="color: blue"><b>yes</b> ←</div></li> </ul> </td> <td> <div>Flag to enable or disable SSL certificate verification.</div> </td> </tr> <tr> <td colspan="3"> <div class="ansibleOptionAnchor" id="parameter-dnac_version"></div> <b>dnac_version</b> <a class="ansibleOptionLink" href="#parameter-dnac_version" title="Permalink to this option"></a> <div style="font-size: small"> <span style="color: purple">string</span> </div> </td> <td> <b>Default:</b><br/><div style="color: blue">"2.2.2.3"</div> </td> <td> <div>Informs the SDK which version of Cisco DNA Center to use.</div> </td> </tr> <tr> <td colspan="3"> <div class="ansibleOptionAnchor" id="parameter-endTime"></div> <b>endTime</b> <a class="ansibleOptionLink" href="#parameter-endTime" title="Permalink to this option"></a> <div style="font-size: small"> <span style="color: purple">integer</span> </div> </td> <td> </td> <td> <div>Pnp Workflow's endTime.</div> </td> </tr> <tr> <td colspan="3"> <div class="ansibleOptionAnchor" id="parameter-execTime"></div> <b>execTime</b> <a class="ansibleOptionLink" href="#parameter-execTime" title="Permalink to this option"></a> <div style="font-size: small"> <span style="color: purple">integer</span> </div> </td> <td> </td> <td> <div>Pnp Workflow's execTime.</div> </td> </tr> <tr> <td colspan="3"> <div class="ansibleOptionAnchor" id="parameter-id"></div> <b>id</b> <a class="ansibleOptionLink" href="#parameter-id" title="Permalink to this option"></a> <div style="font-size: small"> <span style="color: purple">string</span> </div> </td> <td> </td> <td> <div>Id path parameter.</div> </td> </tr> <tr> <td colspan="3"> <div class="ansibleOptionAnchor" id="parameter-imageId"></div> <b>imageId</b> <a class="ansibleOptionLink" href="#parameter-imageId" title="Permalink to this option"></a> <div style="font-size: small"> <span style="color: purple">string</span> </div> </td> <td> </td> <td> <div>Pnp Workflow's imageId.</div> </td> </tr> <tr> <td colspan="3"> <div class="ansibleOptionAnchor" id="parameter-instanceType"></div> <b>instanceType</b> <a class="ansibleOptionLink" href="#parameter-instanceType" title="Permalink to this option"></a> <div style="font-size: small"> <span style="color: purple">string</span> </div> </td> <td> </td> <td> <div>Pnp Workflow's instanceType.</div> </td> </tr> <tr> <td colspan="3"> <div class="ansibleOptionAnchor" id="parameter-lastupdateOn"></div> <b>lastupdateOn</b> <a class="ansibleOptionLink" href="#parameter-lastupdateOn" title="Permalink to this option"></a> <div style="font-size: small"> <span style="color: purple">integer</span> </div> </td> <td> </td> <td> <div>Pnp Workflow's lastupdateOn.</div> </td> </tr> <tr> <td colspan="3"> <div class="ansibleOptionAnchor" id="parameter-name"></div> <b>name</b> <a class="ansibleOptionLink" href="#parameter-name" title="Permalink to this option"></a> <div style="font-size: small"> <span style="color: purple">string</span> </div> </td> <td> </td> <td> <div>Pnp Workflow's name.</div> </td> </tr> <tr> <td colspan="3"> <div class="ansibleOptionAnchor" id="parameter-startTime"></div> <b>startTime</b> <a class="ansibleOptionLink" href="#parameter-startTime" title="Permalink to this option"></a> <div style="font-size: small"> <span style="color: purple">integer</span> </div> </td> <td> </td> <td> <div>Pnp Workflow's startTime.</div> </td> </tr> <tr> <td colspan="3"> <div class="ansibleOptionAnchor" id="parameter-state_"></div> <b>state_</b> <a class="ansibleOptionLink" href="#parameter-state_" title="Permalink to this option"></a> <div style="font-size: small"> <span style="color: purple">string</span> </div> </td> <td> </td> <td> <div>Pnp Workflow's state.</div> </td> </tr> <tr> <td colspan="3"> <div class="ansibleOptionAnchor" id="parameter-tasks"></div> <b>tasks</b> <a class="ansibleOptionLink" href="#parameter-tasks" title="Permalink to this option"></a> <div style="font-size: small"> <span style="color: purple">list</span> / <span style="color: purple">elements=string</span> </div> </td> <td> </td> <td> <div>Pnp Workflow's tasks.</div> </td> </tr> <tr> <td class="elbow-placeholder"></td> <td colspan="2"> <div class="ansibleOptionAnchor" id="parameter-tasks/currWorkItemIdx"></div> <b>currWorkItemIdx</b> <a class="ansibleOptionLink" href="#parameter-tasks/currWorkItemIdx" title="Permalink to this option"></a> <div style="font-size: small"> <span style="color: purple">integer</span> </div> </td> <td> </td> <td> <div>Pnp Workflow's currWorkItemIdx.</div> </td> </tr> <tr> <td class="elbow-placeholder"></td> <td colspan="2"> <div class="ansibleOptionAnchor" id="parameter-tasks/endTime"></div> <b>endTime</b> <a class="ansibleOptionLink" href="#parameter-tasks/endTime" title="Permalink to this option"></a> <div style="font-size: small"> <span style="color: purple">integer</span> </div> </td> <td> </td> <td> <div>Pnp Workflow's endTime.</div> </td> </tr> <tr> <td class="elbow-placeholder"></td> <td colspan="2"> <div class="ansibleOptionAnchor" id="parameter-tasks/name"></div> <b>name</b> <a class="ansibleOptionLink" href="#parameter-tasks/name" title="Permalink to this option"></a> <div style="font-size: small"> <span style="color: purple">string</span> </div> </td> <td> </td> <td> <div>Pnp Workflow's name.</div> </td> </tr> <tr> <td class="elbow-placeholder"></td> <td colspan="2"> <div class="ansibleOptionAnchor" id="parameter-tasks/startTime"></div> <b>startTime</b> <a class="ansibleOptionLink" href="#parameter-tasks/startTime" title="Permalink to this option"></a> <div style="font-size: small"> <span style="color: purple">integer</span> </div> </td> <td> </td> <td> <div>Pnp Workflow's startTime.</div> </td> </tr> <tr> <td class="elbow-placeholder"></td> <td colspan="2"> <div class="ansibleOptionAnchor" id="parameter-tasks/state"></div> <b>state</b> <a class="ansibleOptionLink" href="#parameter-tasks/state" title="Permalink to this option"></a> <div style="font-size: small"> <span style="color: purple">string</span> </div> </td> <td> </td> <td> <div>Pnp Workflow's state.</div> </td> </tr> <tr> <td class="elbow-placeholder"></td> <td colspan="2"> <div class="ansibleOptionAnchor" id="parameter-tasks/taskSeqNo"></div> <b>taskSeqNo</b> <a class="ansibleOptionLink" href="#parameter-tasks/taskSeqNo" title="Permalink to this option"></a> <div style="font-size: small"> <span style="color: purple">integer</span> </div> </td> <td> </td> <td> <div>Pnp Workflow's taskSeqNo.</div> </td> </tr> <tr> <td class="elbow-placeholder"></td> <td colspan="2"> <div class="ansibleOptionAnchor" id="parameter-tasks/timeTaken"></div> <b>timeTaken</b> <a class="ansibleOptionLink" href="#parameter-tasks/timeTaken" title="Permalink to this option"></a> <div style="font-size: small"> <span style="color: purple">integer</span> </div> </td> <td> </td> <td> <div>Pnp Workflow's timeTaken.</div> </td> </tr> <tr> <td class="elbow-placeholder"></td> <td colspan="2"> <div class="ansibleOptionAnchor" id="parameter-tasks/type"></div> <b>type</b> <a class="ansibleOptionLink" href="#parameter-tasks/type" title="Permalink to this option"></a> <div style="font-size: small"> <span style="color: purple">string</span> </div> </td> <td> </td> <td> <div>Pnp Workflow's type.</div> </td> </tr> <tr> <td class="elbow-placeholder"></td> <td colspan="2"> <div class="ansibleOptionAnchor" id="parameter-tasks/workItemList"></div> <b>workItemList</b> <a class="ansibleOptionLink" href="#parameter-tasks/workItemList" title="Permalink to this option"></a> <div style="font-size: small"> <span style="color: purple">list</span> / <span style="color: purple">elements=string</span> </div> </td> <td> </td> <td> <div>Pnp Workflow's workItemList.</div> </td> </tr> <tr> <td class="elbow-placeholder"></td> <td class="elbow-placeholder"></td> <td colspan="1"> <div class="ansibleOptionAnchor" id="parameter-tasks/workItemList/command"></div> <b>command</b> <a class="ansibleOptionLink" href="#parameter-tasks/workItemList/command" title="Permalink to this option"></a> <div style="font-size: small"> <span style="color: purple">string</span> </div> </td> <td> </td> <td> <div>Pnp Workflow's command.</div> </td> </tr> <tr> <td class="elbow-placeholder"></td> <td class="elbow-placeholder"></td> <td colspan="1"> <div class="ansibleOptionAnchor" id="parameter-tasks/workItemList/endTime"></div> <b>endTime</b> <a class="ansibleOptionLink" href="#parameter-tasks/workItemList/endTime" title="Permalink to this option"></a> <div style="font-size: small"> <span style="color: purple">integer</span> </div> </td> <td> </td> <td> <div>Pnp Workflow's endTime.</div> </td> </tr> <tr> <td class="elbow-placeholder"></td> <td class="elbow-placeholder"></td> <td colspan="1"> <div class="ansibleOptionAnchor" id="parameter-tasks/workItemList/outputStr"></div> <b>outputStr</b> <a class="ansibleOptionLink" href="#parameter-tasks/workItemList/outputStr" title="Permalink to this option"></a> <div style="font-size: small"> <span style="color: purple">string</span> </div> </td> <td> </td> <td> <div>Pnp Workflow's outputStr.</div> </td> </tr> <tr> <td class="elbow-placeholder"></td> <td class="elbow-placeholder"></td> <td colspan="1"> <div class="ansibleOptionAnchor" id="parameter-tasks/workItemList/startTime"></div> <b>startTime</b> <a class="ansibleOptionLink" href="#parameter-tasks/workItemList/startTime" title="Permalink to this option"></a> <div style="font-size: small"> <span style="color: purple">integer</span> </div> </td> <td> </td> <td> <div>Pnp Workflow's startTime.</div> </td> </tr> <tr> <td class="elbow-placeholder"></td> <td class="elbow-placeholder"></td> <td colspan="1"> <div class="ansibleOptionAnchor" id="parameter-tasks/workItemList/state"></div> <b>state</b> <a class="ansibleOptionLink" href="#parameter-tasks/workItemList/state" title="Permalink to this option"></a> <div style="font-size: small"> <span style="color: purple">string</span> </div> </td> <td> </td> <td> <div>Pnp Workflow's state.</div> </td> </tr> <tr> <td class="elbow-placeholder"></td> <td class="elbow-placeholder"></td> <td colspan="1"> <div class="ansibleOptionAnchor" id="parameter-tasks/workItemList/timeTaken"></div> <b>timeTaken</b> <a class="ansibleOptionLink" href="#parameter-tasks/workItemList/timeTaken" title="Permalink to this option"></a> <div style="font-size: small"> <span style="color: purple">integer</span> </div> </td> <td> </td> <td> <div>Pnp Workflow's timeTaken.</div> </td> </tr> <tr> <td colspan="3"> <div class="ansibleOptionAnchor" id="parameter-tenantId"></div> <b>tenantId</b> <a class="ansibleOptionLink" href="#parameter-tenantId" title="Permalink to this option"></a> <div style="font-size: small"> <span style="color: purple">string</span> </div> </td> <td> </td> <td> <div>Pnp Workflow's tenantId.</div> </td> </tr> <tr> <td colspan="3"> <div class="ansibleOptionAnchor" id="parameter-type"></div> <b>type</b> <a class="ansibleOptionLink" href="#parameter-type" title="Permalink to this option"></a> <div style="font-size: small"> <span style="color: purple">string</span> </div> </td> <td> </td> <td> <div>Pnp Workflow's type.</div> </td> </tr> <tr> <td colspan="3"> <div class="ansibleOptionAnchor" id="parameter-useState"></div> <b>useState</b> <a class="ansibleOptionLink" href="#parameter-useState" title="Permalink to this option"></a> <div style="font-size: small"> <span style="color: purple">string</span> </div> </td> <td> </td> <td> <div>Pnp Workflow's useState.</div> </td> </tr> <tr> <td colspan="3"> <div class="ansibleOptionAnchor" id="parameter-validate_response_schema"></div> <b>validate_response_schema</b> <a class="ansibleOptionLink" href="#parameter-validate_response_schema" title="Permalink to this option"></a> <div style="font-size: small"> <span style="color: purple">boolean</span> </div> </td> <td> <ul style="margin: 0; padding: 0"><b>Choices:</b> <li>no</li> <li><div style="color: blue"><b>yes</b> ←</div></li> </ul> </td> <td> <div>Flag for Cisco DNA Center SDK to enable the validation of request bodies against a JSON schema.</div> </td> </tr> <tr> <td colspan="3"> <div class="ansibleOptionAnchor" id="parameter-version"></div> <b>version</b> <a class="ansibleOptionLink" href="#parameter-version" title="Permalink to this option"></a> <div style="font-size: small"> <span style="color: purple">integer</span> </div> </td> <td> </td> <td> <div>Pnp Workflow's version.</div> </td> </tr> </table> <br/> .. Attributes .. Notes Notes ----- .. note:: - Does not support ``check_mode`` - The plugin runs on the control node and does not use any ansible connection plugins, but instead the embedded connection manager from Cisco DNAC SDK - The parameters starting with dnac_ are used by the Cisco DNAC Python SDK to establish the connection .. Seealso See Also -------- .. seealso:: `Pnp Workflow reference <https://dnacentersdk.readthedocs.io/en/latest/api/api.html#v3-0-0-summary>`_ Complete reference of the Pnp Workflow object model. .. Examples Examples -------- .. code-block:: yaml+jinja - name: Create cisco.dnac.pnp_workflow: dnac_host: "{{dnac_host}}" dnac_username: "{{dnac_username}}" dnac_password: "{{dnac_password}}" dnac_verify: "{{dnac_verify}}" dnac_port: "{{dnac_port}}" dnac_version: "{{dnac_version}}" dnac_debug: "{{dnac_debug}}" state: present _id: string addToInventory: true addedOn: 0 configId: string currTaskIdx: 0 description: string endTime: 0 execTime: 0 imageId: string instanceType: string lastupdateOn: 0 name: string startTime: 0 state_: string tasks: - currWorkItemIdx: 0 endTime: 0 name: string startTime: 0 state: string taskSeqNo: 0 timeTaken: 0 type: string workItemList: - command: string endTime: 0 outputStr: string startTime: 0 state: string timeTaken: 0 tenantId: string type: string useState: string version: 0 - name: Delete by id cisco.dnac.pnp_workflow: dnac_host: "{{dnac_host}}" dnac_username: "{{dnac_username}}" dnac_password: "{{dnac_password}}" dnac_verify: "{{dnac_verify}}" dnac_port: "{{dnac_port}}" dnac_version: "{{dnac_version}}" dnac_debug: "{{dnac_debug}}" state: absent id: string - name: Update by id cisco.dnac.pnp_workflow: dnac_host: "{{dnac_host}}" dnac_username: "{{dnac_username}}" dnac_password: "{{dnac_password}}" dnac_verify: "{{dnac_verify}}" dnac_port: "{{dnac_port}}" dnac_version: "{{dnac_version}}" dnac_debug: "{{dnac_debug}}" state: present _id: string addToInventory: true addedOn: 0 configId: string currTaskIdx: 0 description: string endTime: 0 execTime: 0 id: string imageId: string instanceType: string lastupdateOn: 0 name: string startTime: 0 state_: string tasks: - currWorkItemIdx: 0 endTime: 0 name: string startTime: 0 state: string taskSeqNo: 0 timeTaken: 0 type: string workItemList: - command: string endTime: 0 outputStr: string startTime: 0 state: string timeTaken: 0 tenantId: string type: string useState: string version: 0 .. Facts .. Return values Return Values ------------- Common return values are documented :ref:`here <common_return_values>`, the following are the fields unique to this module: .. raw:: html <table border=0 cellpadding=0 class="documentation-table"> <tr> <th colspan="1">Key</th> <th>Returned</th> <th width="100%">Description</th> </tr> <tr> <td colspan="1"> <div class="ansibleOptionAnchor" id="return-dnac_response"></div> <b>dnac_response</b> <a class="ansibleOptionLink" href="#return-dnac_response" title="Permalink to this return value"></a> <div style="font-size: small"> <span style="color: purple">dictionary</span> </div> </td> <td>always</td> <td> <div>A dictionary or list with the response returned by the Cisco DNAC Python SDK</div> <br/> <div style="font-size: smaller"><b>Sample:</b></div> <div style="font-size: smaller; color: blue; word-wrap: break-word; word-break: break-all;">{ "_id": "string", "state": "string", "type": "string", "description": "string", "lastupdateOn": 0, "imageId": "string", "currTaskIdx": 0, "addedOn": 0, "tasks": [ { "state": "string", "type": "string", "currWorkItemIdx": 0, "taskSeqNo": 0, "endTime": 0, "startTime": 0, "workItemList": [ { "state": "string", "command": "string", "outputStr": "string", "endTime": 0, "startTime": 0, "timeTaken": 0 } ], "timeTaken": 0, "name": "string" } ], "addToInventory": true, "instanceType": "string", "endTime": 0, "execTime": 0, "startTime": 0, "useState": "string", "configId": "string", "name": "string", "version": 0, "tenantId": "string" }</div> </td> </tr> </table> <br/><br/> .. Status (Presently only deprecated) .. Authors Authors ~~~~~~~ - Rafael Campos (@racampos) .. Parsing errors