Update from master

Squashed commit of the following:

commit 0389d9e766bb7049d45dbcc9e322de22c7203fae
Author: selvi.j <selvi.j@tataelxsi.co.in>
Date:   Wed Apr 26 12:13:10 2023 +0000

    Coverity-CWE 330: Use of Insufficiently Random Values

    Added fix for CWE 330: Use of Insufficiently Random Value (Cryptographically weak PRNG)

    Change-Id: If17007c4e14fa91b3c378a504e7fbd03ea44a69b
    Signed-off-by: selvi.j <selvi.j@tataelxsi.co.in>

commit 375aeb2647d733ac894b2408f66d36d55217c92d
Author: Mark Beierl <mark.beierl@canonical.com>
Date:   Wed May 10 13:55:55 2023 -0400

    Update to Python 3.10 and Ubuntu 22.04

    Removed stale test file that has linting errors
    Removed event loops
    Updated Python dependencies

    Change-Id: I9462b0d67ea6b5bd4c869b5f2bc8d6c57d78660c
    Signed-off-by: Mark Beierl <mark.beierl@canonical.com>

commit 9632c1ae3dadb73cf2f8af56e78f1363a977a1e2
Author: garciadeblas <gerardo.garciadeblas@telefonica.com>
Date:   Tue Apr 18 14:42:40 2023 +0200

    Clean stage-archive.sh and use allowlist_externals in tox.ini

    Change-Id: I214df1372915a96db81ba36faff93dabffe18b6b
    Signed-off-by: garciadeblas <gerardo.garciadeblas@telefonica.com>

commit e88401b595fe816b34308f1960aa7b545590f5dc
Author: Gabriel Cuba <gcuba@whitestack.com>
Date:   Wed Apr 5 15:24:52 2023 -0500

    Feature 10975: adds vim-flavor-id to ns_instantiate_vdu schema

    Change-Id: Ib638fa9d29f3899bcc4609634d3a99e485152e5d
    Signed-off-by: Gabriel Cuba <gcuba@whitestack.com>

commit 9af2a4785d3a77772fd205aa572cc6a64d4d1003
Author: Gulsum Atici <gulsum.atici@canonical.com>
Date:   Tue Mar 28 17:50:48 2023 +0300

    Fix Bug 2229 Set fixed IP address for VDU through VNFD and the instantiation params

    Change-Id: Ia912cd52a0965a6c2b23faa2b88d9b4d0569fd3f
    Signed-off-by: Gulsum Atici <gulsum.atici@canonical.com>

commit 120105b5746ab35c004e523aaada39dc8d517888
Author: garciadeblas <gerardo.garciadeblas@telefonica.com>
Date:   Wed Feb 22 16:52:24 2023 +0100

    Use ip_profile_schema in validation.py

    Change-Id: If5742f94acba919d5400fabc4c601e45b05c1bdb
    Signed-off-by: garciadeblas <gerardo.garciadeblas@telefonica.com>

commit 4cd875d2a38488b5e717258d548eeb8e557ec9a8
Author: garciadeblas <gerardo.garciadeblas@telefonica.com>
Date:   Tue Feb 14 19:05:34 2023 +0100

    Replace yaml.load by yaml.safe_load

    Change-Id: I4f6c3802e40d763fc2175dbb2bd94dbc79b813c2
    Signed-off-by: garciadeblas <gerardo.garciadeblas@telefonica.com>

Change-Id: I964dfd4f263ba6c15553ffb925ff0174835d7368
Signed-off-by: Dario Faccin <dario.faccin@canonical.com>
diff --git a/osm_nbi/nbi.py b/osm_nbi/nbi.py
index fed3205..1cd13b7 100644
--- a/osm_nbi/nbi.py
+++ b/osm_nbi/nbi.py
@@ -673,9 +673,7 @@
                         cherrypy.request.headers.pop("Content-File-MD5", None)
                     elif "application/yaml" in cherrypy.request.headers["Content-Type"]:
                         error_text = "Invalid yaml format "
-                        indata = yaml.load(
-                            cherrypy.request.body, Loader=yaml.SafeLoader
-                        )
+                        indata = yaml.safe_load(cherrypy.request.body)
                         cherrypy.request.headers.pop("Content-File-MD5", None)
                     elif (
                         "application/binary" in cherrypy.request.headers["Content-Type"]
@@ -705,13 +703,11 @@
                         #                          "Only 'Content-Type' of type 'application/json' or
                         # 'application/yaml' for input format are available")
                         error_text = "Invalid yaml format "
-                        indata = yaml.load(
-                            cherrypy.request.body, Loader=yaml.SafeLoader
-                        )
+                        indata = yaml.safe_load(cherrypy.request.body)
                         cherrypy.request.headers.pop("Content-File-MD5", None)
                 else:
                     error_text = "Invalid yaml format "
-                    indata = yaml.load(cherrypy.request.body, Loader=yaml.SafeLoader)
+                    indata = yaml.safe_load(cherrypy.request.body)
                     cherrypy.request.headers.pop("Content-File-MD5", None)
             if not indata:
                 indata = {}
@@ -726,7 +722,7 @@
                         kwargs[k] = None
                     elif format_yaml:
                         try:
-                            kwargs[k] = yaml.load(v, Loader=yaml.SafeLoader)
+                            kwargs[k] = yaml.safe_load(v)
                         except Exception:
                             pass
                     elif (
@@ -750,7 +746,7 @@
                             v[index] = None
                         elif format_yaml:
                             try:
-                                v[index] = yaml.load(v[index], Loader=yaml.SafeLoader)
+                                v[index] = yaml.safe_load(v[index])
                             except Exception:
                                 pass
 
@@ -978,7 +974,7 @@
                         return self._format_out(str(alarm_list))
                 # to handle patch request for alarm update
                 elif cherrypy.request.method == "PATCH":
-                    data = yaml.load(cherrypy.request.body, Loader=yaml.SafeLoader)
+                    data = yaml.safe_load(cherrypy.request.body)
                     try:
                         # check if uuid is valid
                         self.engine.db.get_one("alarms", {"uuid": data.get("uuid")})
@@ -1172,13 +1168,13 @@
             return_text = "<html><pre>{} ->\n".format(main_topic)
             try:
                 if cherrypy.request.method == "POST":
-                    to_send = yaml.load(cherrypy.request.body, Loader=yaml.SafeLoader)
+                    to_send = yaml.safe_load(cherrypy.request.body)
                     for k, v in to_send.items():
                         self.engine.msg.write(main_topic, k, v)
                         return_text += "  {}: {}\n".format(k, v)
                 elif cherrypy.request.method == "GET":
                     for k, v in kwargs.items():
-                        v_dict = yaml.load(v, Loader=yaml.SafeLoader)
+                        v_dict = yaml.safe_load(v)
                         self.engine.msg.write(main_topic, k, v_dict)
                         return_text += "  {}: {}\n".format(k, v_dict)
             except Exception as e: