summaryrefslogtreecommitdiffstats
path: root/testapi/testapi-client/testapiclient/projects.py
blob: 36d0960d72d3f4306171ac750661edf0ea85c276 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
import json
from user import User
from testapiclient import command
from httpClient import HTTPClient
from testapiclient import identity
from config import Config


PROJECTS_URL = Config.config.get("api", "url") + "/projects"


class ProjectGet(command.Lister):

    def get_parser(self, prog_name):
        parser = super(ProjectGet, self).get_parser(prog_name)
        parser.add_argument('-name',
                            default='',
                            help='Search projects by name')
        return parser

    def take_action(self, parsed_args):
        httpClient = HTTPClient.get_Instance()
        url = PROJECTS_URL
        if parsed_args.name:
            url = url + "?name=" + parsed_args.name
        projects = httpClient.get(url)
        print projects


class ProjectGetOne(command.ShowOne):

    def get_parser(self, prog_name):
        parser = super(ProjectGetOne, self).get_parser(prog_name)
        parser.add_argument('-name',
                            default='',
                            required=True,
                            help='Search project by name')
        return parser

    def take_action(self, parsed_args):
        httpClient = HTTPClient.get_Instance()
        url = PROJECTS_URL + "/" + parsed_args.name
        project = httpClient.get(url)
        print project


class ProjectCreate(command.Command):

    def get_parser(self, prog_name):
        parser = super(ProjectCreate, self).get_parser(prog_name)
        parser.add_argument('project',
                            type=json.loads,
                            help='Project create request format :{'
                                 ' "name": (required)"", '
                                 '"description": (optional)""}')
        return parser

    def take_action(self, parsed_args):
        httpClient = HTTPClient.get_Instance()
        if(parsed_args.u and parsed_args.p):
            response = identity.authenticate(parsed_args.u, parsed_args.p)
            if "login" in response.text:
                print "Authentication has failed."
                return
        response = httpClient.post(ProjectCreate.projects_url,
                                   User.session,
                                   parsed_args.project)
        if response.status_code == 200:
            print "Project has been successfully created!"
        else:
            print response.text


class ProjectDelete(command.Command):

    def get_parser(self, prog_name):
        parser = super(ProjectDelete, self).get_parser(prog_name)
        parser.add_argument('-name',
                            type=str,
                            required=True,
                            help='Delete project by name')
        return parser

    def take_action(self, parsed_args):
        httpClient = HTTPClient.get_Instance()
        if(parsed_args.u and 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(
            PROJECTS_URL + "/" + parsed_args.name,
            User.session)
        print projects


class ProjectPut(command.Command):

    def get_parser(self, prog_name):
        parser = super(ProjectPut, self).get_parser(prog_name)
        parser.add_argument('-name',
                            type=str,
                            required=True,
                            help='Update project by name')
        parser.add_argument('project',
                            type=json.loads,
                            help='Project Update request format :{'
                                 '"name": (required)"", '
                                 '"description": (optional)""}')
        return parser

    def take_action(self, parsed_args):
        httpClient = HTTPClient.get_Instance()
        if(parsed_args.u and 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(
            PROJECTS_URL + "/" + parsed_args.name,
            User.session,
            parsed_args.project)
        print projects