leverage testapiclient.command to process common auth parser 09/53209/3
authorSerenaFeng <feng.xiaowei@zte.com.cn>
Wed, 7 Mar 2018 07:16:00 +0000 (15:16 +0800)
committerSerenaFeng <feng.xiaowei@zte.com.cn>
Wed, 7 Mar 2018 07:34:37 +0000 (15:34 +0800)
Change-Id: I7a2491278db64a2a09da02accb22613305fc6d7c
Signed-off-by: SerenaFeng <feng.xiaowei@zte.com.cn>
testapi/testapi-client/testapiclient/auth.py
testapi/testapi-client/testapiclient/authHandler.py [deleted file]
testapi/testapi-client/testapiclient/command.py [new file with mode: 0644]
testapi/testapi-client/testapiclient/identity.py [new file with mode: 0644]
testapi/testapi-client/testapiclient/pods.py
testapi/testapi-client/testapiclient/projects.py

index 6f51231..49da309 100644 (file)
@@ -1,6 +1,6 @@
 import logging
 from cliff.command import Command
-from authHandler import AuthHandler
+from testapiclient import identity
 
 
 class Auth(Command):
@@ -21,7 +21,7 @@ class Auth(Command):
         return parser
 
     def take_action(self, parsed_args):
-        response = AuthHandler.authenticate(parsed_args.u, parsed_args.p)
+        response = identity.authenticate(parsed_args.u, parsed_args.p)
         if "login" in response.text:
             print "Authentication has failed."
         else:
diff --git a/testapi/testapi-client/testapiclient/authHandler.py b/testapi/testapi-client/testapiclient/authHandler.py
deleted file mode 100644 (file)
index baa1088..0000000
+++ /dev/null
@@ -1,19 +0,0 @@
-import requests
-from user import User
-from config import Config
-import urllib
-
-
-class AuthHandler:
-
-    @staticmethod
-    def authenticate(username, password):
-        session = requests.Session()
-        hostname = '{}{}{}'.format(
-            Config.config.get("cas", "auth_url"),
-            urllib.quote(Config.config.get("api", "url")),
-            Config.config.get("cas", "signin_return"))
-        data = {'name': username, 'pass': password, 'form_id': 'user_login'}
-        response = session.post(hostname, data)
-        User.session = session
-        return response
diff --git a/testapi/testapi-client/testapiclient/command.py b/testapi/testapi-client/testapiclient/command.py
new file mode 100644 (file)
index 0000000..5c2ce5c
--- /dev/null
@@ -0,0 +1,23 @@
+from cliff import command
+# from testapiclient import identity
+
+
+class Command(command.Command):
+    def get_parser(self, prog_name):
+        parser = super(Command, self).get_parser(prog_name)
+        parser.add_argument('-u',
+                            type=str,
+                            help='Username for authentication')
+        parser.add_argument('-p',
+                            type=str,
+                            help='Password for authentication')
+
+        return parser
+
+
+class Lister(command.Command):
+    pass
+
+
+class ShowOne(command.Command):
+    pass
diff --git a/testapi/testapi-client/testapiclient/identity.py b/testapi/testapi-client/testapiclient/identity.py
new file mode 100644 (file)
index 0000000..5456270
--- /dev/null
@@ -0,0 +1,16 @@
+import requests
+from user import User
+from config import Config
+import urllib
+
+
+def authenticate(username, password):
+    session = requests.Session()
+    hostname = '{}{}{}'.format(
+        Config.config.get("cas", "auth_url"),
+        urllib.quote(Config.config.get("api", "url")),
+        Config.config.get("cas", "signin_return"))
+    data = {'name': username, 'pass': password, 'form_id': 'user_login'}
+    response = session.post(hostname, data)
+    User.session = session
+    return response
index 6c8aaed..81d4b9e 100644 (file)
@@ -1,17 +1,17 @@
 import json
 
-from user import User
-from cliff.command import Command
-from httpClient import HTTPClient
-from authHandler import AuthHandler
+from testapiclient import identity
+from testapiclient import command
+
 from config import Config
+from httpClient import HTTPClient
+from user import User
 
 
-class PodBase(Command):
-    pods_url = Config.config.get("api", "url") + "/pods"
+PODS_URL = Config.config.get("api", "url") + "/pods"
 
 
-class PodGet(PodBase):
+class PodGet(command.Lister):
     "Handle get request for pods"
 
     def get_parser(self, prog_name):
@@ -23,14 +23,14 @@ class PodGet(PodBase):
 
     def take_action(self, parsed_args):
         http_client = HTTPClient.get_Instance()
-        url = PodGet.pods_url
+        url = PODS_URL
         if(parsed_args.name):
-            url = PodGet.pods_url + "?name=" + parsed_args.name
+            url = PODS_URL + "?name=" + parsed_args.name
         pods = http_client.get(url)
         print pods
 
 
-class PodGetOne(PodBase):
+class PodGetOne(command.ShowOne):
     "Handle get request for pod by name"
 
     def get_parser(self, prog_name):
@@ -43,21 +43,15 @@ class PodGetOne(PodBase):
 
     def take_action(self, parsed_args):
         http_client = HTTPClient.get_Instance()
-        pods = http_client.get(PodGetOne.pods_url + "/" + parsed_args.name)
+        pods = http_client.get(PODS_URL + "/" + parsed_args.name)
         print pods
 
 
-class PodCreate(PodBase):
+class PodCreate(command.Command):
     "Handle post request for pods"
 
     def get_parser(self, prog_name):
         parser = super(PodCreate, self).get_parser(prog_name)
-        parser.add_argument('-u',
-                            type=str,
-                            help='Username for authentication')
-        parser.add_argument('-p',
-                            type=str,
-                            help='Password for authentication')
         parser.add_argument('pod',
                             type=json.loads,
                             help='Pod create request format :\n'
@@ -70,11 +64,11 @@ class PodCreate(PodBase):
     def take_action(self, parsed_args):
         http_client = HTTPClient.get_Instance()
         if(parsed_args.u and parsed_args.p):
-            response = AuthHandler.authenticate(parsed_args.u, parsed_args.p)
+            response = identity.authenticate(parsed_args.u, parsed_args.p)
             if "login" in response.text:
                 print "Authentication has failed."
                 return
-        response = http_client.post(PodCreate.pods_url,
+        response = http_client.post(PODS_URL,
                                     User.session,
                                     parsed_args.pod)
         if response.status_code == 200:
@@ -83,17 +77,11 @@ class PodCreate(PodBase):
             print response.text
 
 
-class PodDelete(PodBase):
+class PodDelete(command.Command):
     "Handle delete request for pods"
 
     def get_parser(self, prog_name):
         parser = super(PodDelete, self).get_parser(prog_name)
-        parser.add_argument('-u',
-                            type=str,
-                            help='Username for authentication')
-        parser.add_argument('-p',
-                            type=str,
-                            help='Password for authentication')
         parser.add_argument('-name',
                             type=str,
                             required=True,
@@ -103,10 +91,10 @@ class PodDelete(PodBase):
     def take_action(self, parsed_args):
         http_client = HTTPClient.get_Instance()
         if(parsed_args.u and parsed_args.p):
-            response = AuthHandler.authenticate(parsed_args.u, parsed_args.p)
+            response = identity.authenticate(parsed_args.u, parsed_args.p)
             if "login" in response.text:
                 print "Authentication has failed."
                 return
-        pods = http_client.delete(PodDelete.pods_url + "/" + parsed_args.name,
+        pods = http_client.delete(PODS_URL + "/" + parsed_args.name,
                                   User.session)
         print pods
index eedfa3d..36d0960 100644 (file)
@@ -1,16 +1,15 @@
 import json
 from user import User
-from cliff.command import Command
+from testapiclient import command
 from httpClient import HTTPClient
-from authHandler import AuthHandler
+from testapiclient import identity
 from config import Config
 
 
-class ProjectBase(Command):
-    projects_url = Config.config.get("api", "url") + "/projects"
+PROJECTS_URL = Config.config.get("api", "url") + "/projects"
 
 
-class ProjectGet(ProjectBase):
+class ProjectGet(command.Lister):
 
     def get_parser(self, prog_name):
         parser = super(ProjectGet, self).get_parser(prog_name)
@@ -21,14 +20,14 @@ class ProjectGet(ProjectBase):
 
     def take_action(self, parsed_args):
         httpClient = HTTPClient.get_Instance()
-        url = ProjectGet.projects_url
+        url = PROJECTS_URL
         if parsed_args.name:
             url = url + "?name=" + parsed_args.name
         projects = httpClient.get(url)
         print projects
 
 
-class ProjectGetOne(ProjectBase):
+class ProjectGetOne(command.ShowOne):
 
     def get_parser(self, prog_name):
         parser = super(ProjectGetOne, self).get_parser(prog_name)
@@ -40,21 +39,15 @@ class ProjectGetOne(ProjectBase):
 
     def take_action(self, parsed_args):
         httpClient = HTTPClient.get_Instance()
-        url = ProjectGet.projects_url + "/" + parsed_args.name
+        url = PROJECTS_URL + "/" + parsed_args.name
         project = httpClient.get(url)
         print project
 
 
-class ProjectCreate(ProjectBase):
+class ProjectCreate(command.Command):
 
     def get_parser(self, prog_name):
         parser = super(ProjectCreate, self).get_parser(prog_name)
-        parser.add_argument('-u',
-                            type=str,
-                            help='Username for authentication')
-        parser.add_argument('-p',
-                            type=str,
-                            help='Password for authentication')
         parser.add_argument('project',
                             type=json.loads,
                             help='Project create request format :{'
@@ -65,7 +58,7 @@ class ProjectCreate(ProjectBase):
     def take_action(self, parsed_args):
         httpClient = HTTPClient.get_Instance()
         if(parsed_args.u and parsed_args.p):
-            response = AuthHandler.authenticate(parsed_args.u, parsed_args.p)
+            response = identity.authenticate(parsed_args.u, parsed_args.p)
             if "login" in response.text:
                 print "Authentication has failed."
                 return
@@ -78,16 +71,10 @@ class ProjectCreate(ProjectBase):
             print response.text
 
 
-class ProjectDelete(ProjectBase):
+class ProjectDelete(command.Command):
 
     def get_parser(self, prog_name):
         parser = super(ProjectDelete, self).get_parser(prog_name)
-        parser.add_argument('-u',
-                            type=str,
-                            help='Username for authentication')
-        parser.add_argument('-p',
-                            type=str,
-                            help='Password for authentication')
         parser.add_argument('-name',
                             type=str,
                             required=True,
@@ -97,26 +84,20 @@ class ProjectDelete(ProjectBase):
     def take_action(self, parsed_args):
         httpClient = HTTPClient.get_Instance()
         if(parsed_args.u and parsed_args.p):
-            response = AuthHandler.authenticate(parsed_args.u, parsed_args.p)
+            response = identity.authenticate(parsed_args.u, parsed_args.p)
             if "login" in response.text:
                 print "Authentication has failed."
                 return
         projects = httpClient.delete(
-            ProjectDelete.projects_url + "/" + parsed_args.name,
+            PROJECTS_URL + "/" + parsed_args.name,
             User.session)
         print projects
 
 
-class ProjectPut(ProjectBase):
+class ProjectPut(command.Command):
 
     def get_parser(self, prog_name):
         parser = super(ProjectPut, self).get_parser(prog_name)
-        parser.add_argument('-u',
-                            type=str,
-                            help='Username for authentication')
-        parser.add_argument('-p',
-                            type=str,
-                            help='Password for authentication')
         parser.add_argument('-name',
                             type=str,
                             required=True,
@@ -131,12 +112,12 @@ class ProjectPut(ProjectBase):
     def take_action(self, parsed_args):
         httpClient = HTTPClient.get_Instance()
         if(parsed_args.u and parsed_args.p):
-            response = AuthHandler.authenticate(parsed_args.u, parsed_args.p)
+            response = identity.authenticate(parsed_args.u, parsed_args.p)
             if "login" in response.text:
                 print "Authentication has failed."
                 return
         projects = httpClient.put(
-            ProjectPut.projects_url + "/" + parsed_args.name,
+            PROJECTS_URL + "/" + parsed_args.name,
             User.session,
             parsed_args.project)
         print projects