aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authormichal.jagiello@t-mobile.pl <michal.jagiello@t-mobile.pl>2024-03-12 16:46:54 +0000
committerMichal Jagiello <michal.jagiello@t-mobile.pl>2024-03-14 09:31:10 +0100
commitbd1eed0a99651140fe381c183bc38221c598814f (patch)
treed71514457dc85d733c10536724cab7690af645c5
parent7c3de7ac0ff93bae27f2a0a30198bb3d2e24cbf1 (diff)
Version 13.0.5 -- Add an exception on SDC model distribution check
There is a chance that SO-SDC controller returns an error that some artifact is not used in model. That's not an error which should mark distribution as failed Issue-ID: TEST-404 Change-Id: I27011f5c8989f989b95fa06a4632bf0ef16cc9bf Signed-off-by: Michal Jagiello <michal.jagiello@t-mobile.pl>
-rw-r--r--src/onapsdk/sdc2/service.py12
-rw-r--r--src/onapsdk/version.py2
-rw-r--r--tests/test_sdc2_service.py70
-rw-r--r--tests/test_version.py2
4 files changed, 81 insertions, 5 deletions
diff --git a/src/onapsdk/sdc2/service.py b/src/onapsdk/sdc2/service.py
index 5f3a71c..1ec64b5 100644
--- a/src/onapsdk/sdc2/service.py
+++ b/src/onapsdk/sdc2/service.py
@@ -25,6 +25,10 @@ from onapsdk.sdc2.sdc_user import SdcUser
from onapsdk.utils.jinja import jinja_env # type: ignore
+ARTIFACT_NOT_USED_ERROR_REASON = \
+ "The artifact has not been used by the modules defined in the resource"
+
+
class ServiceInstantiationType(Enum):
"""Service instantiation type enum class.
@@ -55,18 +59,20 @@ class ServiceDistribution(SDC):
@property
def failed(self) -> bool:
- """Flad to determine if distribution status is failed or not.
+ """Flag to determine if distribution status is failed or not.
If error reason of distribution status is not empty it doesn't mean
always that distribution failed at all. On some cases that means
that service was already distributed on that component. That's why
- we checks also if status is not "ALREADY_DEPLOYED".
+ we checks also if status is not "ALREADY_DEPLOYED". On SO there is also
+ an error "The artifact has not been used..." which also shouldn't
+ be treated as an error.
Returns:
bool: True if distribution on component failed or not.
"""
- return self.error_reason != "null" and \
+ return self.error_reason not in ["null", ARTIFACT_NOT_USED_ERROR_REASON] and \
self.status != "ALREADY_DEPLOYED"
def __init__(self, # pylint: disable=too-many-arguments
diff --git a/src/onapsdk/version.py b/src/onapsdk/version.py
index 6d6d217..d606f96 100644
--- a/src/onapsdk/version.py
+++ b/src/onapsdk/version.py
@@ -13,4 +13,4 @@
# See the License for the specific language governing permissions and
# limitations under the License.
-__version__ = "13.0.4"
+__version__ = "13.0.5"
diff --git a/tests/test_sdc2_service.py b/tests/test_sdc2_service.py
index 0984cf8..69b732b 100644
--- a/tests/test_sdc2_service.py
+++ b/tests/test_sdc2_service.py
@@ -613,3 +613,73 @@ def test_service_distribution_distributon_status_list(mock_send_message_json):
assert sd.distribution_status_list[0].status == distribution_status_data["status"]
assert sd.distribution_status_list[0].url == distribution_status_data["url"]
assert sd.distribution_status_list[0].error_reason == distribution_status_data["errorReason"]
+
+
+@patch("onapsdk.sdc2.service.ServiceDistribution.send_message_json")
+def test_service_distribution_distributon_status_list_with_errors(mock_send_message_json):
+ mock_send_message_json.return_value = {
+ "distributionStatusList": []
+ }
+ sd = ServiceDistribution(
+ distribution_id=str(uuid4()),
+ timestamp=str(randint(0, maxsize)),
+ user_id=str(uuid4()),
+ deployment_status=str(uuid4())
+ )
+ assert sd.distribution_status_list == []
+
+ distribution_status_data_null_error_reason = {
+ "omfComponentID": str(uuid4()),
+ "timestamp": str(randint(0, maxsize)),
+ "status": str(uuid4()),
+ "url": str(uuid4()),
+ "errorReason": "null"
+ }
+ mock_send_message_json.return_value = {
+ "distributionStatusList": [distribution_status_data_null_error_reason]
+ }
+ sd._distribution_status_list = None
+ assert len(sd.distribution_status_list) == 1
+ assert not sd.distribution_status_list[0].failed
+
+ distribution_status_data_artifact_not_used_error_reason = {
+ "omfComponentID": str(uuid4()),
+ "timestamp": str(randint(0, maxsize)),
+ "status": str(uuid4()),
+ "url": str(uuid4()),
+ "errorReason": "The artifact has not been used by the modules defined in the resource"
+ }
+ mock_send_message_json.return_value = {
+ "distributionStatusList": [distribution_status_data_artifact_not_used_error_reason]
+ }
+ sd._distribution_status_list = None
+ assert len(sd.distribution_status_list) == 1
+ assert not sd.distribution_status_list[0].failed
+
+ distribution_status_data_already_deployed_status = {
+ "omfComponentID": str(uuid4()),
+ "timestamp": str(randint(0, maxsize)),
+ "status": "ALREADY_DEPLOYED",
+ "url": str(uuid4()),
+ "errorReason": str(uuid4())
+ }
+ mock_send_message_json.return_value = {
+ "distributionStatusList": [distribution_status_data_already_deployed_status]
+ }
+ sd._distribution_status_list = None
+ assert len(sd.distribution_status_list) == 1
+ assert not sd.distribution_status_list[0].failed
+
+ distribution_status_data_any_error_reason = {
+ "omfComponentID": str(uuid4()),
+ "timestamp": str(randint(0, maxsize)),
+ "status": str(uuid4()),
+ "url": str(uuid4()),
+ "errorReason": str(uuid4())
+ }
+ mock_send_message_json.return_value = {
+ "distributionStatusList": [distribution_status_data_any_error_reason]
+ }
+ sd._distribution_status_list = None
+ assert len(sd.distribution_status_list) == 1
+ assert sd.distribution_status_list[0].failed
diff --git a/tests/test_version.py b/tests/test_version.py
index eac3433..7633f9f 100644
--- a/tests/test_version.py
+++ b/tests/test_version.py
@@ -17,4 +17,4 @@ import onapsdk.version as version
def test_version():
"""Check version is the right one."""
- assert version.__version__ == '13.0.4'
+ assert version.__version__ == '13.0.5'