Fix bug 1263
[osm/N2VC.git] / n2vc / utils.py
index 62892eb..16a4733 100644 (file)
 #     See the License for the specific language governing permissions and
 #     limitations under the License.
 
 #     See the License for the specific language governing permissions and
 #     limitations under the License.
 
+import base64
+import re
+import binascii
 from enum import Enum
 from juju.machine import Machine
 from juju.application import Application
 from juju.action import Action
 from juju.unit import Unit
 from enum import Enum
 from juju.machine import Machine
 from juju.application import Application
 from juju.action import Action
 from juju.unit import Unit
+from n2vc.exceptions import N2VCInvalidCertificate
+
+
+def base64_to_cacert(b64string):
+    """Convert the base64-encoded string containing the VCA CACERT.
+
+    The input string....
+
+    """
+    try:
+        cacert = base64.b64decode(b64string).decode("utf-8")
+
+        cacert = re.sub(r"\\n", r"\n", cacert,)
+    except binascii.Error as e:
+        raise N2VCInvalidCertificate(message="Invalid CA Certificate: {}".format(e))
+
+    return cacert
 
 
 class N2VCDeploymentStatus(Enum):
 
 
 class N2VCDeploymentStatus(Enum):
@@ -67,36 +87,24 @@ class EntityType(Enum):
                 return cls.get_entity(v)
 
 
                 return cls.get_entity(v)
 
 
-FinalStatus = Dict(
-    {
-        EntityType.MACHINE: Dict({"field": "agent_status", "status": ["started"]}),
-        EntityType.APPLICATION: Dict(
-            {"field": "status", "status": ["active", "blocked"]}
-        ),
-        EntityType.ACTION: Dict(
-            {"field": "status", "status": ["completed", "failed", "cancelled"]}
-        ),
-    }
-)
-
 JujuStatusToOSM = {
 JujuStatusToOSM = {
-    EntityType.MACHINE: {
+    "machine": {
         "pending": N2VCDeploymentStatus.PENDING,
         "started": N2VCDeploymentStatus.COMPLETED,
     },
         "pending": N2VCDeploymentStatus.PENDING,
         "started": N2VCDeploymentStatus.COMPLETED,
     },
-    EntityType.APPLICATION: {
+    "application": {
         "waiting": N2VCDeploymentStatus.RUNNING,
         "maintenance": N2VCDeploymentStatus.RUNNING,
         "blocked": N2VCDeploymentStatus.RUNNING,
         "error": N2VCDeploymentStatus.FAILED,
         "active": N2VCDeploymentStatus.COMPLETED,
     },
         "waiting": N2VCDeploymentStatus.RUNNING,
         "maintenance": N2VCDeploymentStatus.RUNNING,
         "blocked": N2VCDeploymentStatus.RUNNING,
         "error": N2VCDeploymentStatus.FAILED,
         "active": N2VCDeploymentStatus.COMPLETED,
     },
-    EntityType.ACTION: {
+    "action": {
         "pending": N2VCDeploymentStatus.PENDING,
         "running": N2VCDeploymentStatus.RUNNING,
         "completed": N2VCDeploymentStatus.COMPLETED,
     },
         "pending": N2VCDeploymentStatus.PENDING,
         "running": N2VCDeploymentStatus.RUNNING,
         "completed": N2VCDeploymentStatus.COMPLETED,
     },
-    EntityType.UNIT: {
+    "unit": {
         "waiting": N2VCDeploymentStatus.RUNNING,
         "maintenance": N2VCDeploymentStatus.RUNNING,
         "blocked": N2VCDeploymentStatus.RUNNING,
         "waiting": N2VCDeploymentStatus.RUNNING,
         "maintenance": N2VCDeploymentStatus.RUNNING,
         "blocked": N2VCDeploymentStatus.RUNNING,