Merge "Remove Compass from genesis."
[genesis.git] / opensteak / tools / opensteak / foreman_objects / operatingsystems.py
1 #!/usr/bin/python3
2 # -*- coding: utf-8 -*-
3 # Licensed under the Apache License, Version 2.0 (the "License"); you may
4 # not use this file except in compliance with the License. You may obtain
5 # a copy of the License at
6 #
7 #      http://www.apache.org/licenses/LICENSE-2.0
8 #
9 # Unless required by applicable law or agreed to in writing, software
10 # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
11 # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
12 # License for the specific language governing permissions and limitations
13 # under the License.
14 #
15 # Authors:
16 # @author: David Blaisonneau <david.blaisonneau@orange.com>
17 # @author: Arnaud Morin <arnaud1.morin@orange.com>
18
19 from opensteak.foreman_objects.objects import ForemanObjects
20 from opensteak.foreman_objects.item import ForemanItem
21
22
23 class OperatingSystems(ForemanObjects):
24     """
25     OperatingSystems class
26     """
27     objName = 'operatingsystems'
28     payloadObj = 'operatingsystem'
29
30     def __getitem__(self, key):
31         """ Function __getitem__
32
33         @param key: The operating system id/name
34         @return RETURN: The item
35         """
36         ret = self.api.list(self.objName,
37                             filter='title = "{}"'.format(key))
38         if len(ret):
39             return ForemanItem(self.api, key,
40                                self.objName, self.payloadObj,
41                                ret[0])
42         else:
43             return None
44
45     def __setitem__(self, key, attributes):
46         """ Function __getitem__
47
48         @param key: The operating system id/name
49         @param attributes: The content of the operating system to create
50         @return RETURN: The API result
51         """
52         if key not in self:
53             payload = {self.payloadObj: {'title': key}}
54             payload[self.payloadObj].update(attributes)
55             return self.api.create(self.objName, payload)
56         return False
57
58     def listName(self):
59         """ Function listName
60         Get the list of all objects name with Ids
61
62         @param key: The targeted object
63         @return RETURN: A dict of obejct name:id
64         """
65         return { x['title']: x['id'] for x in self.api.list(self.objName,
66                                                             limit=999999)}