Merge "Add API to get environments"
[yardstick.git] / api / database / v2 / handlers.py
1 ##############################################################################
2 # Copyright (c) 2017 Huawei Technologies Co.,Ltd.
3 #
4 # All rights reserved. This program and the accompanying materials
5 # are made available under the terms of the Apache License, Version 2.0
6 # which accompanies this distribution, and is available at
7 # http://www.apache.org/licenses/LICENSE-2.0
8 ##############################################################################
9 from api.database import db_session
10 from api.database.v2.models import V2Environment
11 from api.database.v2.models import V2Openrc
12 from api.database.v2.models import V2Image
13 from api.database.v2.models import V2Pod
14 from api.database.v2.models import V2Container
15 from api.database.v2.models import V2Project
16 from api.database.v2.models import V2Task
17
18
19 class V2EnvironmentHandler(object):
20
21     def insert(self, kwargs):
22         environment = V2Environment(**kwargs)
23         db_session.add(environment)
24         db_session.commit()
25         return environment
26
27     def list_all(self):
28         return V2Environment.query.all()
29
30     def get_by_uuid(self, uuid):
31         environment = V2Environment.query.filter_by(uuid=uuid).first()
32         if not environment:
33             raise ValueError
34         return environment
35
36     def update_attr(self, uuid, attr):
37         environment = self.get_by_uuid(uuid)
38         for k, v in attr.items():
39             setattr(environment, k, v)
40         db_session.commit()
41
42     def append_attr(self, uuid, attr):
43         environment = self.get_by_uuid(uuid)
44         for k, v in attr.items():
45             value = getattr(environment, k)
46             new = '{},{}'.format(value, v) if value else v
47             setattr(environment, k, new)
48         db_session.commit()
49
50     def delete_by_uuid(self, uuid):
51         environment = self.get_by_uuid(uuid)
52         db_session.delete(environment)
53         db_session.commit()
54
55
56 class V2OpenrcHandler(object):
57
58     def insert(self, kwargs):
59         openrc = V2Openrc(**kwargs)
60         db_session.add(openrc)
61         db_session.commit()
62         return openrc
63
64     def get_by_uuid(self, uuid):
65         openrc = V2Openrc.query.filter_by(uuid=uuid).first()
66         if not openrc:
67             raise ValueError
68         return openrc
69
70     def delete_by_uuid(self, uuid):
71         openrc = self.get_by_uuid(uuid)
72         db_session.delete(openrc)
73         db_session.commit()
74
75
76 class V2ImageHandler(object):
77
78     def insert(self, kwargs):
79         image = V2Image(**kwargs)
80         db_session.add(image)
81         db_session.commit()
82         return image
83
84     def get_by_uuid(self, uuid):
85         image = V2Image.query.filter_by(uuid=uuid).first()
86         if not image:
87             raise ValueError
88         return image
89
90
91 class V2PodHandler(object):
92
93     def insert(self, kwargs):
94         pod = V2Pod(**kwargs)
95         db_session.add(pod)
96         db_session.commit()
97         return pod
98
99     def get_by_uuid(self, uuid):
100         pod = V2Pod.query.filter_by(uuid=uuid).first()
101         if not pod:
102             raise ValueError
103         return pod
104
105     def delete_by_uuid(self, uuid):
106         pod = self.get_by_uuid(uuid)
107         db_session.delete(pod)
108         db_session.commit()
109
110
111 class V2ContainerHandler(object):
112
113     def insert(self, kwargs):
114         container = V2Container(**kwargs)
115         db_session.add(container)
116         db_session.commit()
117         return container
118
119     def get_by_uuid(self, uuid):
120         container = V2Container.query.filter_by(uuid=uuid).first()
121         if not container:
122             raise ValueError
123         return container
124
125     def delete_by_uuid(self, uuid):
126         container = self.get_by_uuid(uuid)
127         db_session.delete(container)
128         db_session.commit()
129
130
131 class V2ProjectHandler(object):
132
133     def insert(self, kwargs):
134         project = V2Project(**kwargs)
135         db_session.add(project)
136         db_session.commit()
137         return project
138
139     def get_by_uuid(self, uuid):
140         project = V2Project.query.filter_by(uuid=uuid).first()
141         if not project:
142             raise ValueError
143         return project
144
145     def update_attr(self, uuid, attr):
146         project = self.get_by_uuid(uuid)
147         for k, v in attr.items():
148             setattr(project, k, v)
149         db_session.commit()
150
151     def append_attr(self, uuid, attr):
152         project = self.get_by_uuid(uuid)
153         for k, v in attr.items():
154             value = getattr(project, k)
155             new = '{},{}'.format(value, v) if value else v
156             setattr(project, k, new)
157         db_session.commit()
158
159     def delete_by_uuid(self, uuid):
160         project = self.get_by_uuid(uuid)
161         db_session.delete(project)
162         db_session.commit()
163
164
165 class V2TaskHandler(object):
166
167     def insert(self, kwargs):
168         task = V2Task(**kwargs)
169         db_session.add(task)
170         db_session.commit()
171         return task
172
173     def get_by_uuid(self, uuid):
174         task = V2Task.query.filter_by(uuid=uuid).first()
175         if not task:
176             raise ValueError
177         return task
178
179     def update_attr(self, uuid, attr):
180         task = self.get_by_uuid(uuid)
181         for k, v in attr.items():
182             setattr(task, k, v)
183         db_session.commit()
184
185     def delete_by_uuid(self, uuid):
186         task = self.get_by_uuid(uuid)
187         db_session.delete(task)
188         db_session.commit()