55import click
66
77import SoftLayer
8+ from SoftLayer .CLI .command import SLCommand as SLCommand
89from SoftLayer .CLI import environment
910from SoftLayer .CLI import exceptions
1011from SoftLayer .CLI import helpers
1718RECORD_FMT = "type={type}, record={record}, data={data}, ttl={ttl}"
1819
1920
20- @click .command (cls = SoftLayer .CLI .command .SLCommand , )
21- @click .argument ('zonefile' ,
22- type = click .Path (exists = True , readable = True , resolve_path = True ))
21+ @click .command (cls = SLCommand )
22+ @click .argument ('zonefile' , type = click .Path (exists = True , readable = True , resolve_path = True ))
2323@click .option ('--dry-run' , is_flag = True , help = "Don't actually create records" )
2424@environment .pass_env
2525def cli (env , zonefile , dry_run ):
@@ -31,12 +31,12 @@ def cli(env, zonefile, dry_run):
3131
3232 zone , records , bad_lines = parse_zone_details (zone_contents )
3333
34- env . out ("Parsed: zone=%s" % zone )
34+ click . secho ("Parsed: zone=%s" % zone )
3535 for record in records :
36- env . out ("Parsed: %s" % RECORD_FMT .format (** record ))
36+ click . secho ("Parsed: %s" % RECORD_FMT .format (** record ), fg = "green" )
3737
3838 for line in bad_lines :
39- env . out ("Unparsed: %s" % line )
39+ click . secho ("Unparsed: %s" % line , fg = "yellow" )
4040
4141 if dry_run :
4242 return
@@ -47,25 +47,19 @@ def cli(env, zonefile, dry_run):
4747 name = 'zone' )
4848 except exceptions .CLIAbort :
4949 zone_id = manager .create_zone (zone )['id' ]
50- env . out (click .style ("Created: %s" % zone , fg = 'green' ))
50+ click . secho (click .style ("Created: %s" % zone , fg = 'green' ))
5151
5252 # Attempt to create each record
5353 for record in records :
5454 try :
55- manager .create_record (zone_id ,
56- record ['record' ],
57- record ['type' ],
58- record ['data' ],
59- record ['ttl' ])
60-
61- env .out (click .style ("Created: %s" % RECORD_FMT .format (** record ),
62- fg = 'green' ))
55+ manager .create_record (zone_id , record ['record' ], record ['type' ], record ['data' ], record ['ttl' ])
56+
57+ click .secho (click .style ("Created: %s" % RECORD_FMT .format (** record ), fg = 'green' ))
6358 except SoftLayer .SoftLayerAPIError as ex :
64- env .out (click .style ("Failed: %s" % RECORD_FMT .format (** record ),
65- fg = 'red' ))
66- env .out (click .style (str (ex ), fg = 'red' ))
59+ click .secho (click .style ("Failed: %s" % RECORD_FMT .format (** record ), fg = 'red' ))
60+ click .secho (click .style (str (ex ), fg = 'red' ))
6761
68- env . out (click .style ("Finished" , fg = 'green' ))
62+ click . secho (click .style ("Finished" , fg = 'green' ))
6963
7064
7165def parse_zone_details (zone_contents ):
@@ -75,7 +69,10 @@ def parse_zone_details(zone_contents):
7569 zone_lines = [line .strip () for line in zone_contents .split ('\n ' )]
7670
7771 zone_search = re .search (r'^\$ORIGIN (?P<zone>.*)\.' , zone_lines [0 ])
78- zone = zone_search .group ('zone' )
72+ if zone_search :
73+ zone = zone_search .group ('zone' )
74+ else :
75+ raise exceptions .ArgumentError ("Invalid Zone File" )
7976
8077 for line in zone_lines [1 :]:
8178 record_search = re .search (RECORD_REGEX , line )
0 commit comments