From 9567814560c17e43b4147a5aa2e986ff0078f06e Mon Sep 17 00:00:00 2001
From: Stefano Alberto Russo <stefano.russo@gmail.com>
Date: Wed, 24 Nov 2021 01:53:19 +0100
Subject: [PATCH] Fixed issues in adding custom containers with the new tag os
 and arch names. Minor other fixes and improvements.

---
 .../core_app/templates/add_software.html      | 28 +++++++++--------
 .../templates/components/container.html       | 10 +++++--
 .../webapp/code/rosetta/core_app/views.py     | 30 +++++++++++--------
 3 files changed, 41 insertions(+), 27 deletions(-)

diff --git a/services/webapp/code/rosetta/core_app/templates/add_software.html b/services/webapp/code/rosetta/core_app/templates/add_software.html
index 668480d..9487623 100644
--- a/services/webapp/code/rosetta/core_app/templates/add_software.html
+++ b/services/webapp/code/rosetta/core_app/templates/add_software.html
@@ -44,16 +44,16 @@
            </tr>
 
            <tr>
-            <td><b>Image</b></td>
+            <td><b>Image&nbsp;name</b></td>
             <td>
-             <input type="text" name="container_image" value="" placeholder="" size="23" required />
+             <input type="text" name="container_image_name" value="" placeholder="" size="23" required />
             </td>
            </tr>
 
            <tr>
-            <td><b>Tag</b></td>
+            <td><b>Image tag</b></td>
             <td>
-             <input type="text" name="container_tag" value="latest" size="23" required />
+             <input type="text" name="container_image_tag" value="latest" size="23" required />
             </td>
            </tr>
 
@@ -77,7 +77,7 @@
              {% else %}
              <select name="container_interface_protocol" >
              <option value="http" selected>http</option>
-             <option value="https" selected>https</option>
+             <option value="https">https</option>
              </select>
              {% endif %}
             </td>
@@ -94,21 +94,25 @@
            <table class="dashboard" style="width:360px; margin-bottom:25px">
 
            <tr>
-            <td><b>Architecture</b></td><td>
-              <select name="container_arch" >
-              <option value="x86_64" selected>x86_64</option>
-              </select>
+            <td><b>Image arch</b></td><td>
+              <input type="text" name="container_image_arch" value="" placeholder="" size="5" />
             </td>
            </tr>
 
            <tr>
-            <td><b>Operating System</b></td><td>
-              <select name="container_os" >
+            <td><b>Image OS</b></td><td>
+              <select name="container_image_os" >
               <option value="linux" selected>linux</option>
               </select>
             </td>
            </tr>
 
+           <tr>
+            <td><b>Image digest</b></td><td>
+              <input type="text" name="container_image_digest" value="" placeholder="sha256:..." size="15" />
+            </td>
+           </tr>
+
            <tr>
             <td><b>Interface transport</b></td><td>
               <select name="container_interface_transport" >
@@ -154,7 +158,7 @@
           
  
       {% else %}
-        Ok, Container added. Go back to your <a href="/containers">container list</a>.
+        Ok, software container added. Go back to <a href="/software">software</a>.
         
 
       {% endif %} 
diff --git a/services/webapp/code/rosetta/core_app/templates/components/container.html b/services/webapp/code/rosetta/core_app/templates/components/container.html
index 355abf0..49a6065 100644
--- a/services/webapp/code/rosetta/core_app/templates/components/container.html
+++ b/services/webapp/code/rosetta/core_app/templates/components/container.html
@@ -71,8 +71,14 @@
        </tr>
 
        <tr>
-        <td><b>Image digest</b></td>
-        <td>{{ container.image_digest }}</td>
+        <td><b>Image&nbsp;digest</b></td>
+        <td>
+        {% if container.image_digest %}
+        <input type="text" style="margin:0 "size=25 class="form-control" placeholder="" value="{{ container.image_digest }}" name='digest' readonly>
+        {% else %}
+        None
+        {% endif %}
+        </td>
        </tr>
 
        <tr><td colspan=2><hr style="margin:5px"></td></tr>
diff --git a/services/webapp/code/rosetta/core_app/views.py b/services/webapp/code/rosetta/core_app/views.py
index 8af2c5a..2e75f1a 100644
--- a/services/webapp/code/rosetta/core_app/views.py
+++ b/services/webapp/code/rosetta/core_app/views.py
@@ -878,14 +878,17 @@ def add_software(request):
         # Container image name
         container_image_name = request.POST.get('container_image_name',None)
         
-        # Container tag
+        # Container image tag
         container_image_tag = request.POST.get('container_image_tag', None)
 
-        # Container architecture
-        container_image_arch = request.POST.get('container_image_arch')
+        # Container image architecture
+        container_image_arch = request.POST.get('container_image_arch', None)
 
-        # Container operating system
-        container_image_os = request.POST.get('container_image_os')
+        # Container image OS 
+        container_image_os = request.POST.get('container_image_os', None)
+
+        # Container image digest
+        container_image_digest = request.POST.get('container_image_digest', None)
 
         # Container interface port
         container_interface_port = request.POST.get('container_interface_port', None) 
@@ -923,14 +926,15 @@ def add_software(request):
         #logger.debug('Creating new container object with image="{}", type="{}", registry="{}", ports="{}"'.format(container_image, container_type, container_registry, container_ports))
 
         # Create
-        Container.objects.create(user        = request.user,
-                                 name        = container_name,
-                                 description = container_description,
-                                 registry    = container_registry,
-                                 image_name  = container_image_name,
-                                 image_tag   = container_image_tag,
-                                 image_arch  = container_image_arch,
-                                 image_os    = container_image_os,
+        Container.objects.create(user         = request.user,
+                                 name         = container_name,
+                                 description  = container_description,
+                                 registry     = container_registry,
+                                 image_name   = container_image_name,
+                                 image_tag    = container_image_tag,
+                                 image_arch   = container_image_arch,
+                                 image_os     = container_image_os,
+                                 image_digest = container_image_digest,
                                  interface_port      = container_interface_port,
                                  interface_protocol  = container_interface_protocol,
                                  interface_transport = container_interface_transport,
-- 
GitLab