1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 """
17 Resource class and its manager for floating IP DNS entries in Compute API v2
18 """
19
20 from yakumo import base
21 from yakumo.constant import UNDEF
22 from yakumo import mapper
23 from yakumo import utils
24
25
26 ATTRIBUTE_MAPPING = [
27 ('domain', 'domain', mapper.Noop),
28 ('project', 'project', mapper.Resource('project')),
29 ('scope', 'scope', mapper.Noop),
30 ('availability_zone', 'availability_zone',
31 mapper.Resource('nova.availability_zone')),
32 ]
33
34
36 """Resource class for floating IP DNS entries in Compute API v2"""
37
40 """
41 Update properties of a domain
42
43 @keyword new_domain: New domain name
44 @type new_domain: str
45 @keyword project: Project object
46 @type project: yakumo.project.Resource
47 @keyword scope: 'public' or 'private'
48 @type scope: str
49 @keyword availability_zone: Availability zone name
50 @type availability_zone: str
51 @rtype: None
52 """
53 self._http.put(self._url_resource_path, self._id,
54 data=utils.get_json_body(
55 'domain_entry',
56 domain=new_domain,
57 project=project,
58 scope=scope,
59 availability_zone=availability_zone))
60
61 - def add_entry(self, name=None, ip=None, dns_type="A"):
62 """
63 Add an entry
64
65 @keyword name: Hostname
66 @type name: str
67 @keyword ip: IP address
68 @type ip: str
69 @keyword dns_type: DNS type
70 @type dns_type: str
71 @rtype: None
72 """
73 self._http.put(self._url_resource_path, self._id,
74 data=utils.get_json_body(
75 'domain_entry',
76 domain=new_domain,
77 project=project,
78 scope=scope,
79 availability_zone=availability_zone))
80
81 - def remove_entry(self, name=None):
82 """
83 Remove an entry
84
85 @keyword name: Hostname
86 @type name: str
87 @rtype: None
88 """
89 self._http.delete(self._url_resource_path, self._id, 'entries', name)
90
91 - def get_entry(self, ip=None):
92 """
93 Get DNS entries for an IP address
94
95 @keyword ip: IP address
96 @type ip: str
97 @return: DNS entries
98 @rtype: [str]
99 """
100 ret = self._http.get(self._url_resource_path, self._id, 'entries',
101 name)
102 return ret.get('dns_entries')
103
104
138