diff options
author | Graham Hayes <graham.hayes@hpe.com> | 2017-01-31 23:00:38 +0000 |
---|---|---|
committer | Graham Hayes <graham.hayes@hpe.com> | 2017-01-31 23:05:08 +0000 |
commit | f265eb18e95a707d99fe4d52a856c6e661b9982f (patch) | |
tree | 809b8fa25fdbc5c64c907b425d9f296c2595e09c /designateclient | |
parent | fad4e0ff581a168e3166c5d90aa599ee2adaf8f5 (diff) | |
download | python-designateclient-f265eb18e95a707d99fe4d52a856c6e661b9982f.tar.gz |
Add attribute support to create zone cli
also format attributes for cli display
Change-Id: Ia338f607e6d4b70610132ab66e15381981beb038
Diffstat (limited to 'designateclient')
-rw-r--r-- | designateclient/v2/cli/zones.py | 16 | ||||
-rw-r--r-- | designateclient/v2/zones.py | 5 |
2 files changed, 20 insertions, 1 deletions
diff --git a/designateclient/v2/cli/zones.py b/designateclient/v2/cli/zones.py index 40c64c9..3782652 100644 --- a/designateclient/v2/cli/zones.py +++ b/designateclient/v2/cli/zones.py @@ -31,6 +31,10 @@ LOG = logging.getLogger(__name__) def _format_zone(zone): zone.pop('links', None) zone['masters'] = ", ".join(zone['masters']) + attrib = '' + for attr in zone['attributes']: + attrib += "%s:%s\n" % (attr, zone['attributes'][attr]) + zone['attributes'] = attrib def _format_zone_export_record(zone_export_record): @@ -131,6 +135,7 @@ class CreateZoneCommand(command.ShowOne): parser.add_argument('--ttl', type=int, help="Time To Live (Seconds)") parser.add_argument('--description', help="Description") parser.add_argument('--masters', help="Zone Masters", nargs='+') + parser.add_argument('--attributes', help="Zone Attributes", nargs='+') common.add_all_common_options(parser) @@ -145,6 +150,17 @@ class CreateZoneCommand(command.ShowOne): if parsed_args.description: payload["description"] = parsed_args.description + if parsed_args.attributes: + payload["attributes"] = {} + for attr in parsed_args.attributes: + try: + k, v = attr.split(':') + payload["attributes"][k] = v + except ValueError: + msg = "Attribute '%s' is in an incorrect format. "\ + "Attributes are <key>:<value> formated" + raise osc_exc.CommandError(msg % attr) + if parsed_args.type == 'PRIMARY': # email is just for PRIMARY. if not parsed_args.email: diff --git a/designateclient/v2/zones.py b/designateclient/v2/zones.py index c960da7..7e862a7 100644 --- a/designateclient/v2/zones.py +++ b/designateclient/v2/zones.py @@ -19,7 +19,7 @@ from designateclient.v2 import utils as v2_utils class ZoneController(V2Controller): def create(self, name, type_=None, email=None, description=None, ttl=None, - masters=None): + masters=None, attributes=None): type_ = type_ or "PRIMARY" data = { @@ -40,6 +40,9 @@ class ZoneController(V2Controller): if description is not None: data["description"] = description + if attributes is not None: + data["attributes"] = attributes + return self._post('/zones', data=data) def list(self, criterion=None, marker=None, limit=None): |