Skip to content

Publishing collections fails on the second run #397

Open
@myllynen

Description

With a local automation hub and collection version 2.0.6 + PR 386 using the following with the needed namespace created earlier the publish role works on the first run but fails on the second run:

ah_collections:
  - collection_name: myllynen.rhel_ansible_roles
    git_url: https://github.com/myllynen/rhel-ansible-roles
    version: v1.8.0
  - collection_name: myllynen.rhel_image
    git_url: https://github.com/myllynen/rhel-image
    version: v1.3.1
TASK [infra.ah_configuration.publish : Publish Collection | Wait for finish the publish creation] **********
...
FAILED - RETRYING: [localhost]: Publish Collection | Wait for finish the publish creation (45 retries left).                                                                                                                                  
failed: [localhost] (item={'failed': 0, 'started': 1, 'finished': 0, 'ansible_job_id': 'j587721783571.6249', 'results_file': '/home/admin/.ansible_async/j587721783571.6249', 'changed': False, '__ah_collection_file': '/var/tmp/myllynen.rhel_ansible_roles/myllynen-rhel_ansible_roles-1.8.0.tar.gz', 'ansible_loop_var': '__ah_collection_file'}) =>                                                                                                                                    
    __publish_job_async_result_item:                                                                                                                                                                                                          
        __ah_collection_file: /var/tmp/myllynen.rhel_ansible_roles/myllynen-rhel_ansible_roles-1.8.0.tar.gz                                                                                                                                   
        ansible_job_id: j587721783571.6249                                                                                                                                                                                                    
        ansible_loop_var: __ah_collection_file                                                                                                                                                                                                
        changed: false                                                                                                                                                                                                                        
        failed: 0                                                                                                                                                                                                                             
        finished: 0                                                                                                                                                                                                                           
        results_file: /home/admin/.ansible_async/j587721783571.6249                                                                                                                                                                           
        started: 1                                                                                                                                                                                                                            
    ansible_job_id: j587721783571.6249                                                                                                                                                                                                        
    ansible_loop_var: __publish_job_async_result_item                                                                                                                                                                                         
    attempts: 7                                                                                                                                                                                                                               
    changed: false                                                                                                                                                                                                                            
    finished: 1                                                                                                                                                                                                                               
    msg: |-                                                                                                                                                                                                                                   
        Upload of collection failed: insert or update on table "core_contentartifact" violates foreign key constraint "core_contentartifact_artifact_id_f5d9a66b_fk_core_artifact__id"                                                        
        DETAIL:  Key (artifact_id)=(018f9551-4b04-79eb-a59a-d0ed441adcab) is not present in table "core_artifact".                                                                                                                            
    results_file: /home/admin/.ansible_async/j587721783571.6249                                                                                                                                                                               
    started: 1                                                                                                                                                                                                                                
    stderr: ''                                                                                                                                                                                                                                
    stderr_lines: <omitted>                                                                                                                                                                                                                   
    stdout: ''                                                                                                                                                                                                                                
    stdout_lines: <omitted>                                                                                                                                                                                                                   
FAILED - RETRYING: [localhost]: Publish Collection | Wait for finish the publish creation (50 retries left).                                                                                                                                  
...
FAILED - RETRYING: [localhost]: Publish Collection | Wait for finish the publish creation (1 retries left).
failed: [localhost] (item={'failed': 0, 'started': 1, 'finished': 0, 'ansible_job_id': 'j92391990330.6269', 'results_file': '/home/admin/.ansible_async/j92391990330.6269', 'changed': False, '__ah_collection_file': '/var/tmp/myllynen.rhel_image/myllynen-rhel_image-1.3.1.tar.gz', 'ansible_loop_var': '__ah_collection_file'}) => 
    __publish_job_async_result_item:
        __ah_collection_file: /var/tmp/myllynen.rhel_image/myllynen-rhel_image-1.3.1.tar.gz
        ansible_job_id: j92391990330.6269
        ansible_loop_var: __ah_collection_file
        changed: false
        failed: 0
        finished: 0
        results_file: /home/admin/.ansible_async/j92391990330.6269
        started: 1
    ansible_job_id: j92391990330.6269
    ansible_loop_var: __publish_job_async_result_item
    attempts: 50
    changed: false
    finished: 0
    results_file: /home/admin/.ansible_async/j92391990330.6269
    started: 1
    stderr: ''
    stderr_lines: <omitted>
    stdout: ''
    stdout_lines: <omitted>

Looks like the role does not detect that the collection version already exist and then needlessly clones it, builds it, and tries to upload it. This causes issues with CaC/GitOps where ideally there could be only one yml file listing collections and collections could be updated individually as new versions become available. Thanks.

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or requesthelp wantedExtra attention is needed

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions