Create a secret Args: name (string): Name of the secret data (bytes): Secret data to be stored labels (dict): A mapping of labels to assign to the secret driver (DriverConfig): A custom driver configuration. If
(self, name, data, labels=None, driver=None)
| 6 | class SecretApiMixin: |
| 7 | @utils.minimum_version('1.25') |
| 8 | def create_secret(self, name, data, labels=None, driver=None): |
| 9 | """ |
| 10 | Create a secret |
| 11 | |
| 12 | Args: |
| 13 | name (string): Name of the secret |
| 14 | data (bytes): Secret data to be stored |
| 15 | labels (dict): A mapping of labels to assign to the secret |
| 16 | driver (DriverConfig): A custom driver configuration. If |
| 17 | unspecified, the default ``internal`` driver will be used |
| 18 | |
| 19 | Returns (dict): ID of the newly created secret |
| 20 | """ |
| 21 | if not isinstance(data, bytes): |
| 22 | data = data.encode('utf-8') |
| 23 | |
| 24 | data = base64.b64encode(data) |
| 25 | data = data.decode('ascii') |
| 26 | body = { |
| 27 | 'Data': data, |
| 28 | 'Name': name, |
| 29 | 'Labels': labels |
| 30 | } |
| 31 | |
| 32 | if driver is not None: |
| 33 | if utils.version_lt(self._version, '1.31'): |
| 34 | raise errors.InvalidVersion( |
| 35 | 'Secret driver is only available for API version > 1.31' |
| 36 | ) |
| 37 | |
| 38 | body['Driver'] = driver |
| 39 | |
| 40 | url = self._url('/secrets/create') |
| 41 | return self._result( |
| 42 | self._post_json(url, data=body), True |
| 43 | ) |
| 44 | |
| 45 | @utils.minimum_version('1.25') |
| 46 | @utils.check_resource('id') |