@@ -23,29 +23,29 @@ def convert_zones_to_identifier(cf, zone_name):
2323 exit ('cli4: %s - %s' % (zone_name , e ))
2424
2525 for zone in zones :
26- name = zone ['name' ]
27- if zone_name == name :
28- zone_id = zone ['id' ]
29- return zone_id
26+ if zone_name == zone ['name' ]:
27+ return zone ['id' ]
3028
3129 exit ('cli4: %s - zone not found' % (zone_name ))
3230
3331def convert_dns_record_to_identifier (cf , zone_id , dns_name ):
34- params = {'name' :dns_name ,'per_page' :1 }
32+ # this can return an array of results as there can be more than one DNS entry for a name.
33+ params = {'name' :dns_name }
3534 try :
3635 dns_records = cf .zones .dns_records .get (zone_id , params = params )
3736 except CloudFlare .CloudFlareAPIError as e :
3837 exit ('cli4: %s - %d %s' % (dns_name , e , e ))
3938 except Exception as e :
4039 exit ('cli4: %s - %s' % (dns_name , e ))
4140
41+ r = []
4242 for dns_record in dns_records :
43- name = dns_record ['name' ]
44- if dns_name == name :
45- dns_id = dns_record [ 'id' ]
46- return dns_id
43+ if dns_name == dns_record ['name' ]:
44+ r . append ( dns_record [ 'id' ])
45+ if len ( r ) > 0 :
46+ return r
4747
48- exit ('cli4: %s - dns_name not found' % (dns_name ))
48+ exit ('cli4: %s - dns name not found' % (dns_name ))
4949
5050def convert_certificates_to_identifier (cf , certificate_name ):
5151 try :
@@ -56,10 +56,8 @@ def convert_certificates_to_identifier(cf, certificate_name):
5656 exit ('cli4: %s - %s' % (certificate_name , e ))
5757
5858 for certificate in certificates :
59- hostnames = certificate ['hostnames' ]
60- if certificate_name in hostnames :
61- certificate_id = certificate ['id' ]
62- return certificate_id
59+ if certificate_name in certificate ['hostnames' ]:
60+ return certificate ['id' ]
6361
6462 exit ('cli4: %s - no zone certificates found' % (certificate_name ))
6563
@@ -72,10 +70,8 @@ def convert_organizations_to_identifier(cf, organization_name):
7270 exit ('cli4: %s - %s' % (organization_name , e ))
7371
7472 for organization in organizations :
75- name = organization ['name' ]
76- if organization_name == name :
77- organization_id = organization ['id' ]
78- return organization_id
73+ if organization_name == organization ['name' ]:
74+ return organization ['id' ]
7975
8076 exit ('cli4: %s - no organizations found' % (organization_name ))
8177
@@ -88,10 +84,8 @@ def convert_invites_to_identifier(cf, invite_name):
8884 exit ('cli4: %s - %s' % (invite_name , e ))
8985
9086 for invite in invites :
91- name = invite ['organization_name' ]
92- if invite_name == name :
93- invite_id = invite ['id' ]
94- return invite_id
87+ if invite_name == invite ['organization_name' ]:
88+ return invite ['id' ]
9589
9690 exit ('cli4: %s - no invites found' % (invite_name ))
9791
@@ -104,10 +98,8 @@ def convert_virtual_dns_to_identifier(cf, virtual_dns_name):
10498 exit ('cli4: %s - %s\n ' % (virtual_dns_name , e ))
10599
106100 for virtual_dns in virtual_dnss :
107- name = virtual_dns ['name' ]
108- if virtual_dns_name == name :
109- virtual_dns_id = virtual_dns ['id' ]
110- return virtual_dns_id
101+ if virtual_dns_name == virtual_dns ['name' ]:
102+ return virtual_dns ['id' ]
111103
112104 exit ('cli4: %s - no virtual_dns found' % (virtual_dns_name ))
113105
@@ -219,7 +211,12 @@ def cli4(args):
219211 identifier2 = convert_dns_record_to_identifier (cf , identifier1 , element )
220212 else :
221213 exit ("/%s/%s :NOT CODED YET 2" % ('/' .join (cmd ), element ))
222- cmd .append (':' + identifier2 )
214+ # identifier2 may be an array - this needs to be dealt with later
215+ if isinstance (identifier2 , list ):
216+ cmd .append (':' + '[' + ',' .join (identifier2 ) + ']' )
217+ else :
218+ cmd .append (':' + identifier2 )
219+ identifier2 = [identifier2 ]
223220 else :
224221 try :
225222 m = getattr (m , element )
@@ -230,26 +227,35 @@ def cli4(args):
230227 else :
231228 exit ('cli4: /%s/%s - not found' % ('/' .join (cmd ), element ))
232229
233- try :
234- if method is 'GET' :
235- r = m .get (identifier1 = identifier1 , identifier2 = identifier2 , params = params )
236- elif method is 'PATCH' :
237- r = m .patch (identifier1 = identifier1 , identifier2 = identifier2 , data = params )
238- elif method is 'POST' :
239- r = m .post (identifier1 = identifier1 , identifier2 = identifier2 , data = params )
240- elif method is 'PUT' :
241- r = m .put (identifier1 = identifier1 , identifier2 = identifier2 , data = params )
242- elif method is 'DELETE' :
243- r = m .delete (identifier1 = identifier1 , identifier2 = identifier2 , data = params )
244- else :
245- pass
246- except CloudFlare .CloudFlareAPIError as e :
247- exit ('cli4: /%s - %d %s' % (command , e , e ))
248- except Exception as e :
249- exit ('cli4: /%s - %s - api error' % (command , e ))
230+ results = []
231+ for i2 in identifier2 :
232+ print 'RUNNING:' , '/' + '/' .join (cmd ), '-' , i2
233+
234+ try :
235+ if method is 'GET' :
236+ r = m .get (identifier1 = identifier1 , identifier2 = i2 , params = params )
237+ elif method is 'PATCH' :
238+ r = m .patch (identifier1 = identifier1 , identifier2 = i2 , data = params )
239+ elif method is 'POST' :
240+ r = m .post (identifier1 = identifier1 , identifier2 = i2 , data = params )
241+ elif method is 'PUT' :
242+ r = m .put (identifier1 = identifier1 , identifier2 = i2 , data = params )
243+ elif method is 'DELETE' :
244+ r = m .delete (identifier1 = identifier1 , identifier2 = i2 , data = params )
245+ else :
246+ pass
247+ except CloudFlare .CloudFlareAPIError as e :
248+ exit ('cli4: /%s - %d %s' % (command , e , e ))
249+ except Exception as e :
250+ exit ('cli4: /%s - %s - api error' % (command , e ))
251+
252+ results .append (r )
253+
254+ if len (results ) == 1 :
255+ results = results [0 ]
250256
251257 if output == 'json' :
252- print json .dumps (r , indent = 4 , sort_keys = True )
258+ print json .dumps (results , indent = 4 , sort_keys = True )
253259 if output == 'yaml' and yaml is not None :
254- print yaml .dump ( r )
260+ print yaml .safe_dump ( results )
255261
0 commit comments