Browse Source

[ADD] get internal ip

Gogs 7 years ago
parent
commit
9280e12f2d
3 changed files with 47 additions and 3 deletions
  1. 19 2
      api/resources/odoo_resource.py
  2. 19 1
      api/utils/docker_api.py
  3. 9 0
      api/utils/odoo_api.py

+ 19 - 2
api/resources/odoo_resource.py

@@ -16,14 +16,17 @@ from api.utils.odoo_api import (
     restore_database,
     remove_database_seed,
     create_odoo_container,
-    apply_permissions
+    apply_permissions,
+    get_odoo_internal_ip
 )
 from api.utils.jwt_token import get_user
 from api.utils.jwt_authentication import JWTAuthentication
 from api.utils.logger import (
     info,
-    error
+    error,
+    warning
 )
+from api.utils.email import send_email
 from simplejson import JSONDecodeError
 import simplejson as json
 
@@ -82,6 +85,8 @@ class OdooResource(Resource):
         name = normalize_name(name)
         name_exists = check_name(name)
 
+        get_odoo_internal_ip(name)
+
         if name_exists:
             r.issue = '%s: name is already exists' % name
             r.status = 5
@@ -214,6 +219,18 @@ class OdooResource(Resource):
         r.status = 4
         r.save()
 
+        # Send email
+        email_sended = send_email(
+            'Has creado exitosamente un nuevo sistema Odoo\n *** Datos *** \n-\tNombre:\t%s\nIP externo:\t%s\nPuerto externo:%s\n' % (name, settings.EXTERNAL_IP, port),
+            user.username
+        )
+
+        if not email_sended:
+            warning('%s email not sended' % user.username)
+        else:
+            info('%s email sended' % user.username)
+        
+
         info('%s: odoo creation is ok' % name)
         
         return self.create_response(request, {

+ 19 - 1
api/utils/docker_api.py

@@ -75,7 +75,25 @@ def get_all_external_ports():
             ports.extend(port)
 
     return ports
-    
+
+'''
+'''
+def get_internal_ip(container_name_or_id=None):
+    if not container_name_or_id:
+        return None
+
+    client = get_docker_client()
+
+    if not client:
+        return None
+
+    try:
+        container = client.containers.get(container_name_or_id)
+
+        import pdb; pdb.set_trace()
+    except (NotFound, APIError):
+        return None
+
 '''
 '''
 def run_container(image=None, name=None, ports=[], volumes=None, net=None):

+ 9 - 0
api/utils/odoo_api.py

@@ -4,6 +4,7 @@ from random import randint
 from jinja2 import Environment, PackageLoader, select_autoescape
 from api.utils.docker_api import (
     get_all_external_ports,
+    get_internal_ip,
     execute_command,
     run_container,
     copy_in
@@ -192,3 +193,11 @@ def create_odoo_container(name=None, ports=[]):
     time.sleep(5)
 
     return True
+
+'''
+'''
+def get_odoo_internal_ip(name=None):
+    if not name:
+        return None
+
+    return get_internal_ip(name)