IBM / ansible-for-i

the tool is to provide several customized modules for Ansible to manage IBM i systems.
GNU General Public License v3.0
55 stars 51 forks source link

ibmi_copy does not rename file if exist before copying with backup=True #144

Open psyntium opened 1 year ago

psyntium commented 1 year ago

Sample task:

tasks:
    - name: Copy single PTF from local to remote server
      ibmi_copy:
        src: /tmp/repos/ibmi/SI78108.savf
        lib_name: QGPL
        force: True
        backup: True
      register: results
      ignore_errors: yes

    - name: results
      debug:
        msg: "{{ results }}"

I'm seeing the error in the job log:

Cause . . . . . :   An attempt was made to create a file that already exists.
Recovery  . . . :   Do one of the following:
                    -- Change the file or library name on create file command, and then try the request again.
                    -- Omit the request.

JSON msg log:

{
  "msg": {
    "msg": "Failed to create SAVF: /QSYS.LIB/QGPL.LIB/SI78108.FILE on remote.",
    "stderr": [
      "{'error': '*** error QSYS/CRTSAVF FILE(QGPL/SI78108)', 'error1': '202', 'version': 'XML Toolkit 2.0.2-dev', 'xmlhint': 'QSYS/CRTSAVF FILE(QGPL/SI78108)', 'xmlhint2': 'QSYS/CRTSAVF FILE(QGPL/SI78108)', 'jobipc': '*na', 'jobipcskey': 'FFFFFFFF', 'jobname': 'QSQSRVR', 'jobuser': 'QUSER', 'jobnbr': '019940', 'curuser': 'CECUSER', 'ccsid': '37', 'dftccsid': '37', 'paseccsid': '0', 'syslibl': 'QSYS QSYS2 QHLPSYS QUSRSYS', 'usrlibl': 'QGPL QTEMP'}"
    ],
    "stdout": [],
    "src": "",
    "md5sum": "",
    "dest": "",
    "remote_md5sum": "",
    "remote_checksum": "",
    "checksum": "",
    "delta": "",
    "job_log": [
      {
        "ORDINAL_POSITION": 11,
        "MESSAGE_ID": "CPF7302",
        "MESSAGE_TYPE": "ESCAPE",
        "MESSAGE_SUBTYPE": "EXCEPTION HANDLED",
        "SEVERITY": 40,
        "MESSAGE_TIMESTAMP": "2022-10-14T08:55:41.938405",
        "FROM_LIBRARY": "QSYS",
        "FROM_PROGRAM": "QDDCDF",
        "FROM_MODULE": null,
        "FROM_PROCEDURE": null,
        "FROM_INSTRUCTION": "025D",
        "TO_LIBRARY": "QXMLSERV",
        "TO_PROGRAM": "XMLSTOREDP",
        "TO_MODULE": "PLUGILE",
        "TO_PROCEDURE": "ILECMDEXC",
        "TO_INSTRUCTION": "5841",
        "FROM_USER": "CECUSER",
        "MESSAGE_FILE": "QCPFMSG",
        "MESSAGE_LIBRARY": "QSYS",
        "MESSAGE_TEXT": "File SI78108 not created in library QGPL.",
        "MESSAGE_SECOND_LEVEL_TEXT": "&N Cause . . . . . :   The file was not created because of errors. &N Recovery  . . . :   See the error messages previously listed.  Correct the errors, and then try the request again."
      },
      {
        "ORDINAL_POSITION": 10,
        "MESSAGE_ID": "CPF5813",
        "MESSAGE_TYPE": "DIAGNOSTIC",
        "MESSAGE_SUBTYPE": null,
        "SEVERITY": 40,
        "MESSAGE_TIMESTAMP": "2022-10-14T08:55:41.938322",
        "FROM_LIBRARY": "QSYS",
        "FROM_PROGRAM": "QDMROUTE",
        "FROM_MODULE": null,
        "FROM_PROCEDURE": null,
        "FROM_INSTRUCTION": "04DC",
        "TO_LIBRARY": "QXMLSERV",
        "TO_PROGRAM": "XMLSTOREDP",
        "TO_MODULE": "PLUGILE",
        "TO_PROCEDURE": "ILECMDEXC",
        "TO_INSTRUCTION": "5841",
        "FROM_USER": "CECUSER",
        "MESSAGE_FILE": "QCPFMSG",
        "MESSAGE_LIBRARY": "QSYS",
        "MESSAGE_TEXT": "File SI78108 in library QGPL already exists.",
        "MESSAGE_SECOND_LEVEL_TEXT": "&N Cause . . . . . :   An attempt was made to create a file that already exists. &N Recovery  . . . :   Do one of the following: &P -- Change the file or library name on create file command, and then try the request again. &P -- Omit the request."
      },
      {
        "ORDINAL_POSITION": 9,
        "MESSAGE_ID": "CPF9898",
        "MESSAGE_TYPE": "COMPLETION",
        "MESSAGE_SUBTYPE": null,
        "SEVERITY": 40,
        "MESSAGE_TIMESTAMP": "2022-10-14T08:55:41.807762",
        "FROM_LIBRARY": "QSYS",
        "FROM_PROGRAM": "QSQSRVR",
        "FROM_MODULE": "QSQSRVR",
        "FROM_PROCEDURE": "QSQSRVR",
        "FROM_INSTRUCTION": "8964",
        "TO_LIBRARY": "QSYS",
        "TO_PROGRAM": "QSQSRVR",
        "TO_MODULE": "QSQSRVR",
        "TO_PROCEDURE": "QSQSRVR",
        "TO_INSTRUCTION": "8964",
        "FROM_USER": "CECUSER",
        "MESSAGE_FILE": "QCPFMSG",
        "MESSAGE_LIBRARY": "QSYS",
        "MESSAGE_TEXT": "SERVER MODE CONNECTING JOB IS 021504/QSECOFR/QP0ZSPWP.",
        "MESSAGE_SECOND_LEVEL_TEXT": "&N Cause . . . . . :   This message is used by application programs as a general escape message."
      },
      {
        "ORDINAL_POSITION": 8,
        "MESSAGE_ID": null,
        "MESSAGE_TYPE": "COMPLETION",
        "MESSAGE_SUBTYPE": null,
        "SEVERITY": 0,
        "MESSAGE_TIMESTAMP": "2022-10-14T08:55:41.807716",
        "FROM_LIBRARY": "QSYS",
        "FROM_PROGRAM": "QSQSRVR",
        "FROM_MODULE": "QSQSRVR",
        "FROM_PROCEDURE": "QSQSRVR",
        "FROM_INSTRUCTION": "8873",
        "TO_LIBRARY": "QSYS",
        "TO_PROGRAM": "QSQSRVR",
        "TO_MODULE": "QSQSRVR",
        "TO_PROCEDURE": "QSQSRVR",
        "TO_INSTRUCTION": "8873",
        "FROM_USER": "CECUSER",
        "MESSAGE_FILE": null,
        "MESSAGE_LIBRARY": null,
        "MESSAGE_TEXT": "User Profile = CECUSER   ",
        "MESSAGE_SECOND_LEVEL_TEXT": null
      },
      {
        "ORDINAL_POSITION": 7,
        "MESSAGE_ID": "CPF1301",
        "MESSAGE_TYPE": "INFORMATIONAL",
        "MESSAGE_SUBTYPE": null,
        "SEVERITY": 30,
        "MESSAGE_TIMESTAMP": "2022-10-14T08:55:41.807680",
        "FROM_LIBRARY": "QSYS",
        "FROM_PROGRAM": "QWTCHGJB",
        "FROM_MODULE": null,
        "FROM_PROCEDURE": null,
        "FROM_INSTRUCTION": "11DA",
        "TO_LIBRARY": "QSYS",
        "TO_PROGRAM": "QSQSRVR",
        "TO_MODULE": "QSQSRVR",
        "TO_PROCEDURE": "QSQSRVR",
        "TO_INSTRUCTION": "8782",
        "FROM_USER": "CECUSER",
        "MESSAGE_FILE": "QCPFMSG",
        "MESSAGE_LIBRARY": "QSYS",
        "MESSAGE_TEXT": "ACGDTA for 019940/QUSER/QSQSRVR not journaled; reason 1.",
        "MESSAGE_SECOND_LEVEL_TEXT": "&N Cause . . . . . :   Job resource accounting data for job 019940/QUSER/QSQSRVR was not journaled to the system accounting journal QSYS/QACGJRN. &P -- Reason codes and their meanings follow: &P -- 1-The accounting level system value (QACGLVL) indicated that this level of resource accounting was not to be done when the job entered the system. &P -- 2-The accounting journal QSYS/QACGJRN is unable to receive the data.  The accounting data was sent to the history log (QHST) as the text of a CPF1303 message.  See CPF1302 in the history log (QHST) for recovery action. &P -- 3-The accounting journal QSYS/QACGJRN  was allocated to another job.  The accounting data was sent to the history log (QHST) as the text of a CPF1303 message."
      },
      {
        "ORDINAL_POSITION": 6,
        "MESSAGE_ID": "CPD1672",
        "MESSAGE_TYPE": "DIAGNOSTIC",
        "MESSAGE_SUBTYPE": null,
        "SEVERITY": 0,
        "MESSAGE_TIMESTAMP": "2022-10-14T08:55:41.807580",
        "FROM_LIBRARY": "QSYS",
        "FROM_PROGRAM": "QWTCHGJB",
        "FROM_MODULE": null,
        "FROM_PROCEDURE": null,
        "FROM_INSTRUCTION": "2F6F",
        "TO_LIBRARY": "QSYS",
        "TO_PROGRAM": "QSQSRVR",
        "TO_MODULE": "QSQSRVR",
        "TO_PROCEDURE": "QSQSRVR",
        "TO_INSTRUCTION": "8775",
        "FROM_USER": "CECUSER",
        "MESSAGE_FILE": "QCPFMSG",
        "MESSAGE_LIBRARY": "QSYS",
        "MESSAGE_TEXT": "Job changed successfully; however errors occurred.",
        "MESSAGE_SECOND_LEVEL_TEXT": "&N Cause . . . . . :   The request to change the job attributes completed successfully, however errors occurred during processing. &N Recovery  . . . :   See previously listed messages for details."
      },
      {
        "ORDINAL_POSITION": 5,
        "MESSAGE_ID": "CPD0912",
        "MESSAGE_TYPE": "DIAGNOSTIC",
        "MESSAGE_SUBTYPE": null,
        "SEVERITY": 20,
        "MESSAGE_TIMESTAMP": "2022-10-14T08:55:41.807129",
        "FROM_LIBRARY": "QSYS",
        "FROM_PROGRAM": "QWTCHGJB",
        "FROM_MODULE": null,
        "FROM_PROCEDURE": null,
        "FROM_INSTRUCTION": "2F6F",
        "TO_LIBRARY": "QSYS",
        "TO_PROGRAM": "QSQSRVR",
        "TO_MODULE": "QSQSRVR",
        "TO_PROCEDURE": "QSQSRVR",
        "TO_INSTRUCTION": "8775",
        "FROM_USER": "CECUSER",
        "MESSAGE_FILE": "QCPFMSG",
        "MESSAGE_LIBRARY": "QSYS",
        "MESSAGE_TEXT": "Printer device PRT01 not found.",
        "MESSAGE_SECOND_LEVEL_TEXT": "&N Cause . . . . . :   The printer device was not found. &N Recovery  . . . :   Either create the printer device (CRTDEVPRT command) or if the printer device name is not correct, change the printer device name and then try the command again."
      }
    ],
    "rc": 255,
    "failed": true,
    "changed": false
  },
  "_ansible_verbose_always": true,
  "_ansible_no_log": false,
  "changed": false
}
syahrul-aiman commented 1 year ago

I've tried with:

force: yes
backup: yes

Still getting the same error