Uploaded image for project: 'Red Hat 3scale API Management'
  1. Red Hat 3scale API Management
  2. THREESCALE-8579

remove ImageMagick dependency for paperclip image processing

XMLWordPrintable

    • Icon: Task Task
    • Resolution: Done
    • Icon: Major Major
    • 2.14.0 GA
    • 2.13.0 GA
    • System
    • False
    • Hide

      None

      Show
      None
    • False
    • Not Started
    • Not Started
    • Not Started
    • Not Started
    • Not Started
    • Not Started
    • Hide
      What changed: Replace ImageMagick image processing because it is not supported in latest RHEL versions. Using local-fastimage_resize gem based on libgd doesn't support converting between formats. So "invoice" style of profile logo needs to be same format as uploaded image.

      Consequence: New GIF logo uploads are not supported (existing uploads can stay). After 3scale upgrade, if there were any JPEG logos uploaded, administrator must run `rake fixes:regenerate_jpeg_invoice_logo`.
      Show
      What changed: Replace ImageMagick image processing because it is not supported in latest RHEL versions. Using local-fastimage_resize gem based on libgd doesn't support converting between formats. So "invoice" style of profile logo needs to be same format as uploaded image. Consequence: New GIF logo uploads are not supported (existing uploads can stay). After 3scale upgrade, if there were any JPEG logos uploaded, administrator must run `rake fixes:regenerate_jpeg_invoice_logo`.
    • Documented as Feature Request

      We need at some point to change image to use UBI8 base image.

      Main issue seems to be lack of ImageMagick package in official channels (only EPEL). This is used by paperclip to process attached images.

      For example if provider logo is uploaded through Audience > Developer Portal > Logo , these files are created on the filesystem

      $ ls -al public/system/provider-name/2/profiles/logos/
      total 28
      drwxr-xr-x. 7 dmayorov dmayorov 4096 Jul 29 13:54 .
      drwxr-xr-x. 3 dmayorov dmayorov 4096 Jul 29 13:54 ..
      drwxr-xr-x. 2 dmayorov dmayorov 4096 Jul 29 13:54 invoice
      drwxr-xr-x. 2 dmayorov dmayorov 4096 Jul 29 13:54 large
      drwxr-xr-x. 2 dmayorov dmayorov 4096 Jul 29 13:54 medium
      drwxr-xr-x. 2 dmayorov dmayorov 4096 Jul 29 13:54 original
      drwxr-xr-x. 2 dmayorov dmayorov 4096 Jul 29 13:54 thumb
      

      The following is seen in the log:

      [paperclip] Trying to link /tmp/RackMultipart20220729-350065-1ebbtrv.png to /tmp/bd551f8203275c21f59aefd1c880b58402a8fba1448a6965471a137d64d0191320220729-350065-1jt4w03.png
      [paperclip] Trying to link /tmp/bd551f8203275c21f59aefd1c880b58402a8fba1448a6965471a137d64d0191320220729-350065-1jt4w03.png to /tmp/bd551f8203275c21f59aefd1c880b58402a8fba1448a6965471a137d64d0191320220729-350065-b7y1pf.png
      Command :: file -b --mime '/tmp/bd551f8203275c21f59aefd1c880b58402a8fba1448a6965471a137d64d0191320220729-350065-b7y1pf.png'
      Command :: identify -format '%wx%h,%[exif:orientation]' '/tmp/bd551f8203275c21f59aefd1c880b58402a8fba1448a6965471a137d64d0191320220729-350065-1jt4w03.png[0]' 2>/dev/null
      Command :: identify -format %m '/tmp/bd551f8203275c21f59aefd1c880b58402a8fba1448a6965471a137d64d0191320220729-350065-1jt4w03.png[0]'
      Command :: convert '/tmp/bd551f8203275c21f59aefd1c880b58402a8fba1448a6965471a137d64d0191320220729-350065-1jt4w03.png[0]' -auto-orient -resize "300x300>" '/tmp/fdcbc3071c845d2e8a0e7f2627d7f9f0fa7d16b4505f4d10d59d8a183284f9fd20220729-350065-1g32lkf'
      [paperclip] Trying to link /tmp/fdcbc3071c845d2e8a0e7f2627d7f9f0fa7d16b4505f4d10d59d8a183284f9fd20220729-350065-1g32lkf to /tmp/cd48b9c07db45009af92bd8620fc656b608fcc8a47eab05402782b2f3f340e0420220729-350065-alqzl5
      Command :: file -b --mime '/tmp/fdcbc3071c845d2e8a0e7f2627d7f9f0fa7d16b4505f4d10d59d8a183284f9fd20220729-350065-1g32lkf'
      Command :: identify -format '%wx%h,%[exif:orientation]' '/tmp/bd551f8203275c21f59aefd1c880b58402a8fba1448a6965471a137d64d0191320220729-350065-1jt4w03.png[0]' 2>/dev/null
      Command :: identify -format %m '/tmp/bd551f8203275c21f59aefd1c880b58402a8fba1448a6965471a137d64d0191320220729-350065-1jt4w03.png[0]'
      Command :: convert '/tmp/bd551f8203275c21f59aefd1c880b58402a8fba1448a6965471a137d64d0191320220729-350065-1jt4w03.png[0]' -auto-orient -resize "150x150>" '/tmp/fdcbc3071c845d2e8a0e7f2627d7f9f0fa7d16b4505f4d10d59d8a183284f9fd20220729-350065-h8n9wv'
      [paperclip] Trying to link /tmp/fdcbc3071c845d2e8a0e7f2627d7f9f0fa7d16b4505f4d10d59d8a183284f9fd20220729-350065-h8n9wv to /tmp/bbed65f219e3ff873b549c235c9e5cb5f018c3b130f8906a8cbcffa4ef04a28120220729-350065-s6jd22
      Command :: file -b --mime '/tmp/fdcbc3071c845d2e8a0e7f2627d7f9f0fa7d16b4505f4d10d59d8a183284f9fd20220729-350065-h8n9wv'
      Command :: identify -format '%wx%h,%[exif:orientation]' '/tmp/bd551f8203275c21f59aefd1c880b58402a8fba1448a6965471a137d64d0191320220729-350065-1jt4w03.png[0]' 2>/dev/null
      Command :: identify -format %m '/tmp/bd551f8203275c21f59aefd1c880b58402a8fba1448a6965471a137d64d0191320220729-350065-1jt4w03.png[0]'
      Command :: convert '/tmp/bd551f8203275c21f59aefd1c880b58402a8fba1448a6965471a137d64d0191320220729-350065-1jt4w03.png[0]' -auto-orient -resize "100x100>" '/tmp/fdcbc3071c845d2e8a0e7f2627d7f9f0fa7d16b4505f4d10d59d8a183284f9fd20220729-350065-4jju9'
      [paperclip] Trying to link /tmp/fdcbc3071c845d2e8a0e7f2627d7f9f0fa7d16b4505f4d10d59d8a183284f9fd20220729-350065-4jju9 to /tmp/b78d79bfef9b9adb19ec3c4f928547bd51455b34ced755fe864d438719836ef520220729-350065-2ry87s
      Command :: file -b --mime '/tmp/fdcbc3071c845d2e8a0e7f2627d7f9f0fa7d16b4505f4d10d59d8a183284f9fd20220729-350065-4jju9'
      Command :: identify -format '%wx%h,%[exif:orientation]' '/tmp/bd551f8203275c21f59aefd1c880b58402a8fba1448a6965471a137d64d0191320220729-350065-1jt4w03.png[0]' 2>/dev/null
      Command :: convert '/tmp/bd551f8203275c21f59aefd1c880b58402a8fba1448a6965471a137d64d0191320220729-350065-1jt4w03.png[0]' -auto-orient -resize "200x50>" '/tmp/fdcbc3071c845d2e8a0e7f2627d7f9f0fa7d16b4505f4d10d59d8a183284f9fd20220729-350065-7ud9cg.png'
      [paperclip] Trying to link /tmp/fdcbc3071c845d2e8a0e7f2627d7f9f0fa7d16b4505f4d10d59d8a183284f9fd20220729-350065-7ud9cg.png to /tmp/4de345b4f730bb6f67dd052e6e0a6f753753988ac8103163c39bfd967b125c2920220729-350065-31xu0x.png
      [paperclip] Trying to link /tmp/bd551f8203275c21f59aefd1c880b58402a8fba1448a6965471a137d64d0191320220729-350065-1jt4w03.png to /tmp/bd551f8203275c21f59aefd1c880b58402a8fba1448a6965471a137d64d0191320220729-350065-1px7bpu.png
      Command :: file -b --mime '/tmp/bd551f8203275c21f59aefd1c880b58402a8fba1448a6965471a137d64d0191320220729-350065-1px7bpu.png'
      

      These are some options to do this:

      • switch to ActiveStorage - ideal but requires huge schema changes and I don't know how feasible this would be even if performed step by step especially on SaaS
      • use ImageMagic with a highly restrictive security policy (we will need to set up an SST to maintain it for the lifetime of product line)
      • create a scripts that do what paperclip needs with supported packages (if this is possible)
      • drop image processing from our features and somehow shim ImageMagick in case paperclip needs to see it there

      See also THREESCALE-7253.

              Unassigned Unassigned
              akostadi1@redhat.com Aleksandar Kostadinov
              Matej Dujava Matej Dujava
              Aleksandar Kostadinov Aleksandar Kostadinov
              Votes:
              0 Vote for this issue
              Watchers:
              5 Start watching this issue

                Created:
                Updated:
                Resolved: