summaryrefslogtreecommitdiffstats
path: root/testapi/testapi-client/testapiclient/projects.py
blob: cd55e742bc140c04f88fdb60a3753122ea8608e5 (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
import json

from testapiclient import command
from testapiclient import config
from testapiclient import httpClient
from testapiclient import identity
from testapiclient import user

PROJECTS_URL = config.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):
        http_client = httpClient.HTTPClient.get_Instance()
        url = PROJECTS_URL
        if parsed_args.name:
            url = url + "?name=" + parsed_args.name
        projects = http_client.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):
        http_client = httpClient.HTTPClient.get_Instance()
        url = PROJECTS_URL + "/" + parsed_args.name
        project = http_client.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

    @identity.authenticate
    def take_action(self, parsed_args):
        http_client = httpClient.HTTPClient.get_Instance()
        response = http_client.post(ProjectCreate.projects_url,
                                    user.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

    @identity.authenticate
    def take_action(self, parsed_args):
        http_client = httpClient.HTTPClient.get_Instance()
        projects = http_client.delete(
            PROJECTS_URL + "/" + parsed_args.name,
            user.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

    @identity.authenticate
    def take_action(self, parsed_args):
        http_client = httpClient.HTTPClient.get_Instance()
        projects = http_client.put(
            PROJECTS_URL + "/" + parsed_args.name,
            user.User.session,
            parsed_args.project)
        print projects