add support for creating volume and network with label definition

Signed-off-by: dbdd <wangtong2712@gmail.com>
This commit is contained in:
dbdd 2016-09-27 11:02:56 +08:00
commit bdcce13f4a
9 changed files with 211 additions and 5 deletions

View file

@ -361,6 +361,9 @@ def load_mapping(config_files, get_func, entity_type):
config['driver_opts']
)
if 'labels' in config:
config['labels'] = parse_labels(config['labels'])
return mapping

View file

@ -246,7 +246,8 @@
"name": {"type": "string"}
},
"additionalProperties": false
}
},
"labels": {"$ref": "#/definitions/list_or_dict"}
},
"additionalProperties": false
},
@ -268,6 +269,7 @@
"name": {"type": "string"}
}
},
"labels": {"$ref": "#/definitions/list_or_dict"},
"additionalProperties": false
},
"additionalProperties": false

View file

@ -15,7 +15,7 @@ log = logging.getLogger(__name__)
class Network(object):
def __init__(self, client, project, name, driver=None, driver_opts=None,
ipam=None, external_name=None, internal=False):
ipam=None, external_name=None, internal=False, labels=None):
self.client = client
self.project = project
self.name = name
@ -24,6 +24,7 @@ class Network(object):
self.ipam = create_ipam_config_from_dict(ipam)
self.external_name = external_name
self.internal = internal
self.labels = labels
def ensure(self):
if self.external_name:
@ -70,6 +71,7 @@ class Network(object):
options=self.driver_opts,
ipam=self.ipam,
internal=self.internal,
labels=self.labels,
)
def remove(self):
@ -118,6 +120,7 @@ def build_networks(name, config_data, client):
ipam=data.get('ipam'),
external_name=data.get('external_name'),
internal=data.get('internal'),
labels=data.get('labels'),
)
for network_name, data in network_config.items()
}

View file

@ -12,17 +12,18 @@ log = logging.getLogger(__name__)
class Volume(object):
def __init__(self, client, project, name, driver=None, driver_opts=None,
external_name=None):
external_name=None, labels=None):
self.client = client
self.project = project
self.name = name
self.driver = driver
self.driver_opts = driver_opts
self.external_name = external_name
self.labels = labels
def create(self):
return self.client.create_volume(
self.full_name, self.driver, self.driver_opts
self.full_name, self.driver, self.driver_opts, labels=self.labels
)
def remove(self):
@ -68,7 +69,8 @@ class ProjectVolumes(object):
name=vol_name,
driver=data.get('driver'),
driver_opts=data.get('driver_opts'),
external_name=data.get('external_name')
external_name=data.get('external_name'),
labels=data.get('labels')
)
for vol_name, data in config_volumes.items()
}