Skip to content
This repository was archived by the owner on Nov 22, 2024. It is now read-only.

Commit 734a814

Browse files
committed
changed converters to have more meaningful error handlers
1 parent 5cc639a commit 734a814

2 files changed

Lines changed: 71 additions & 42 deletions

File tree

‎cli4/cli4.py‎

Lines changed: 31 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -56,23 +56,29 @@ def run_command(cf, method, command, params=None, content=None, files=None):
5656
elif element[0] == ':':
5757
# raw string - used for workers script_name - use ::script_name
5858
identifier1 = element[1:]
59-
elif cmd[0] == 'certificates':
60-
# identifier1 = convert_certificates_to_identifier(cf, element)
61-
identifier1 = converters.convert_zones_to_identifier(cf, element)
62-
elif cmd[0] == 'zones':
63-
identifier1 = converters.convert_zones_to_identifier(cf, element)
64-
elif cmd[0] == 'organizations':
65-
identifier1 = converters.convert_organizations_to_identifier(cf, element)
66-
elif (cmd[0] == 'user') and (cmd[1] == 'organizations'):
67-
identifier1 = converters.convert_organizations_to_identifier(cf, element)
68-
elif (cmd[0] == 'user') and (cmd[1] == 'invites'):
69-
identifier1 = converters.convert_invites_to_identifier(cf, element)
70-
elif (cmd[0] == 'user') and (cmd[1] == 'virtual_dns'):
71-
identifier1 = converters.convert_virtual_dns_to_identifier(cf, element)
72-
elif (cmd[0] == 'user') and (cmd[1] == 'load_balancers') and (cmd[2] == 'pools'):
73-
identifier1 = converters.convert_load_balancers_pool_to_identifier(cf, element)
7459
else:
75-
exit("/%s/%s :NOT CODED YET 1" % ('/'.join(cmd), element))
60+
try:
61+
if cmd[0] == 'certificates':
62+
# identifier1 = convert_certificates_to_identifier(cf, element)
63+
identifier1 = converters.convert_zones_to_identifier(cf, element)
64+
elif cmd[0] == 'zones':
65+
identifier1 = converters.convert_zones_to_identifier(cf, element)
66+
elif cmd[0] == 'accounts':
67+
identifier1 = converters.convert_accounts_to_identifier(cf, element)
68+
elif cmd[0] == 'organizations':
69+
identifier1 = converters.convert_organizations_to_identifier(cf, element)
70+
elif (cmd[0] == 'user') and (cmd[1] == 'organizations'):
71+
identifier1 = converters.convert_organizations_to_identifier(cf, element)
72+
elif (cmd[0] == 'user') and (cmd[1] == 'invites'):
73+
identifier1 = converters.convert_invites_to_identifier(cf, element)
74+
elif (cmd[0] == 'user') and (cmd[1] == 'virtual_dns'):
75+
identifier1 = converters.convert_virtual_dns_to_identifier(cf, element)
76+
elif (cmd[0] == 'user') and (cmd[1] == 'load_balancers') and (cmd[2] == 'pools'):
77+
identifier1 = converters.convert_load_balancers_pool_to_identifier(cf, element)
78+
else:
79+
raise Exception("/%s/%s :NOT CODED YET" % ('/'.join(cmd), element))
80+
except Exception as e:
81+
exit('cli4: /%s - %s' % (command, e))
7682
cmd.append(':' + identifier1)
7783
elif identifier2 is None:
7884
if len(element) in [32, 40, 48] and hex_only.match(element):
@@ -81,12 +87,16 @@ def run_command(cf, method, command, params=None, content=None, files=None):
8187
elif element[0] == ':':
8288
# raw string - used for workers script_names
8389
identifier2 = element[1:]
84-
elif (cmd[0] and cmd[0] == 'zones') and (cmd[2] and cmd[2] == 'dns_records'):
85-
identifier2 = converters.convert_dns_record_to_identifier(cf,
86-
identifier1,
87-
element)
8890
else:
89-
exit("/%s/%s :NOT CODED YET 2" % ('/'.join(cmd), element))
91+
try:
92+
if (cmd[0] and cmd[0] == 'zones') and (cmd[2] and cmd[2] == 'dns_records'):
93+
identifier2 = converters.convert_dns_record_to_identifier(cf,
94+
identifier1,
95+
element)
96+
else:
97+
raise Exception("/%s/%s :NOT CODED YET" % ('/'.join(cmd), element))
98+
except Exception as e:
99+
exit('cli4: /%s - %s' % (command, e))
90100
# identifier2 may be an array - this needs to be dealt with later
91101
if isinstance(identifier2, list):
92102
cmd.append(':' + '[' + ','.join(identifier2) + ']')

‎cli4/converters.py‎

Lines changed: 40 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -3,20 +3,39 @@
33

44
import CloudFlare
55

6+
class converterError(Exception):
7+
""" errors for converters"""
8+
pass
9+
610
def convert_zones_to_identifier(cf, zone_name):
711
"""zone names to numbers"""
812
params = {'name':zone_name, 'per_page':1}
913
try:
1014
zones = cf.zones.get(params=params)
1115
except CloudFlare.exceptions.CloudFlareAPIError as e:
12-
exit('cli4: %s - %d %s' % (zone_name, e, e))
16+
raise converterError(int(e), '%s - %d %s' % (zone_name, e, e))
1317
except Exception as e:
14-
exit('cli4: %s - %s' % (zone_name, e))
18+
raise converterError(0, '%s - %s' % (zone_name, e))
1519

1620
if len(zones) == 1:
1721
return zones[0]['id']
1822

19-
exit('cli4: %s - zone not found' % (zone_name))
23+
raise converterError('%s: not found' % (zone_name))
24+
25+
def convert_accounts_to_identifier(cf, account_name):
26+
"""account names to numbers"""
27+
params = {'name':account_name, 'per_page':1}
28+
try:
29+
accounts = cf.accounts.get(params=params)
30+
except CloudFlare.exceptions.CloudFlareAPIError as e:
31+
raise converterError(int(e), '%s - %d %s' % (account_name, e, e))
32+
except Exception as e:
33+
raise converterError(0, '%s - %s' % (account_name, e))
34+
35+
if len(accounts) == 1:
36+
return accounts[0]['id']
37+
38+
raise converterError('%s: not found' % (account_name))
2039

2140
def convert_dns_record_to_identifier(cf, zone_id, dns_name):
2241
"""dns record names to numbers"""
@@ -25,9 +44,9 @@ def convert_dns_record_to_identifier(cf, zone_id, dns_name):
2544
try:
2645
dns_records = cf.zones.dns_records.get(zone_id, params=params)
2746
except CloudFlare.exceptions.CloudFlareAPIError as e:
28-
exit('cli4: %s - %d %s' % (dns_name, e, e))
47+
raise converterError(int(e), '%s - %d %s' % (dns_name, e, e))
2948
except Exception as e:
30-
exit('cli4: %s - %s' % (dns_name, e))
49+
raise converterError(0, '%s - %s' % (dns_name, e))
3150

3251
r = []
3352
for dns_record in dns_records:
@@ -36,80 +55,80 @@ def convert_dns_record_to_identifier(cf, zone_id, dns_name):
3655
if len(r) > 0:
3756
return r
3857

39-
exit('cli4: %s - dns name not found' % (dns_name))
58+
raise converterError('%s: not found' % (dns_name))
4059

4160
def convert_certificates_to_identifier(cf, certificate_name):
4261
"""certificate names to numbers"""
4362
try:
4463
certificates = cf.certificates.get()
4564
except CloudFlare.exceptions.CloudFlareAPIError as e:
46-
exit('cli4: %s - %d %s' % (certificate_name, e, e))
65+
raise converterError(int(e), '%s - %d %s' % (certificate_name, e, e))
4766
except Exception as e:
48-
exit('cli4: %s - %s' % (certificate_name, e))
67+
raise converterError(0, '%s - %s' % (certificate_name, e))
4968

5069
for certificate in certificates:
5170
if certificate_name in certificate['hostnames']:
5271
return certificate['id']
5372

54-
exit('cli4: %s - no zone certificates found' % (certificate_name))
73+
raise converterError('%s: not found' % (certificate_name))
5574

5675
def convert_organizations_to_identifier(cf, organization_name):
5776
"""organizations names to numbers"""
5877
try:
5978
organizations = cf.user.organizations.get()
6079
except CloudFlare.exceptions.CloudFlareAPIError as e:
61-
exit('cli4: %s - %d %s' % (organization_name, e, e))
80+
raise converterError(int(e), '%s - %d %s' % (organization_name, e, e))
6281
except Exception as e:
63-
exit('cli4: %s - %s' % (organization_name, e))
82+
raise converterError(0, '%s - %s' % (organization_name, e))
6483

6584
for organization in organizations:
6685
if organization_name == organization['name']:
6786
return organization['id']
6887

69-
exit('cli4: %s - no organizations found' % (organization_name))
88+
raise converterError('%s not found' % (organization_name))
7089

7190
def convert_invites_to_identifier(cf, invite_name):
7291
"""invite names to numbers"""
7392
try:
7493
invites = cf.user.invites.get()
7594
except CloudFlare.exceptions.CloudFlareAPIError as e:
76-
exit('cli4: %s - %d %s' % (invite_name, e, e))
95+
raise converterError(int(e), '%s - %d %s' % (invite_name, e, e))
7796
except Exception as e:
78-
exit('cli4: %s - %s' % (invite_name, e))
97+
raise converterError(0, '%s - %s' % (invite_name, e))
7998

8099
for invite in invites:
81100
if invite_name == invite['organization_name']:
82101
return invite['id']
83102

84-
exit('cli4: %s - no invites found' % (invite_name))
103+
raise converterError('%s: not found' % (invite_name))
85104

86105
def convert_virtual_dns_to_identifier(cf, virtual_dns_name):
87106
"""virtual dns names to numbers"""
88107
try:
89108
virtual_dnss = cf.user.virtual_dns.get()
90109
except CloudFlare.exceptions.CloudFlareAPIError as e:
91-
exit('cli4: %s - %d %s\n' % (virtual_dns_name, e, e))
110+
raise converterError(int(e), '%s - %d %s' % (virtual_dns_name, e, e))
92111
except Exception as e:
93-
exit('cli4: %s - %s\n' % (virtual_dns_name, e))
112+
raise converterError(0, '%s - %s' % (virtual_dns_name, e))
94113

95114
for virtual_dns in virtual_dnss:
96115
if virtual_dns_name == virtual_dns['name']:
97116
return virtual_dns['id']
98117

99-
exit('cli4: %s - no virtual_dns found' % (virtual_dns_name))
118+
raise converterError('%s: not found' % (virtual_dns_name))
100119

101120
def convert_load_balancers_pool_to_identifier(cf, pool_name):
102121
"""load balancer pool names to numbers"""
103122
try:
104123
pools = cf.user.load_balancers.pools.get()
105124
except CloudFlare.exceptions.CloudFlareAPIError as e:
106-
exit('cli4: %s - %d %s' % (pool_name, e, e))
125+
raise converterError(int(e), '%s - %d %s' % (pool_name, e, e))
107126
except Exception as e:
108-
exit('cli4: %s - %s' % (pool_name, e))
127+
raise converterError(0, '%s - %s' % (pool_name, e))
109128

110129
for p in pools:
111130
if pool_name == p['description']:
112131
return p['id']
113132

114-
exit('cli4: %s - no pools found' % (pool_name))
133+
raise converterError('%s: not found' % (pool_name))
115134

0 commit comments

Comments
 (0)