aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-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'