diff options
author | Jenkins <jenkins@review.openstack.org> | 2015-12-01 20:10:41 +0000 |
---|---|---|
committer | Gerrit Code Review <review@openstack.org> | 2015-12-01 20:10:41 +0000 |
commit | b6a74b729c0d00fd9374046832ee7cef3a9a0528 (patch) | |
tree | cea56d0666fec1b889a353b6ebaec7855d456fde /pycadf/identifier.py | |
parent | 3183ae13e29f83b0f13652549ce4f112d5dce8dd (diff) | |
parent | 42b2926c0a96139799bab37db6db31bffec0a2a1 (diff) | |
download | pycadf-b6a74b729c0d00fd9374046832ee7cef3a9a0528.tar.gz |
Merge "make generate_uuid return valid uuid"2.0.0
Diffstat (limited to 'pycadf/identifier.py')
-rw-r--r-- | pycadf/identifier.py | 34 |
1 files changed, 20 insertions, 14 deletions
diff --git a/pycadf/identifier.py b/pycadf/identifier.py index de9e8eb..cb60627 100644 --- a/pycadf/identifier.py +++ b/pycadf/identifier.py @@ -11,11 +11,11 @@ # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the # License for the specific language governing permissions and limitations under # the License. - +import hashlib import uuid +from debtcollector import removals from oslo_config import cfg -import six CONF = cfg.CONF opts = [ @@ -26,29 +26,35 @@ opts = [ CONF.register_opts(opts, group='audit') -# TODO(mrutkows): make the namespace prefix configurable and have it resolve to -# a full openstack namespace/domain value via some declaration (e.g. -# "openstack:" == "http:\\www.openstack.org\")... +AUDIT_NS = None +if CONF.audit.namespace: + md5_hash = hashlib.md5(CONF.audit.namespace.encode('utf-8')) + AUDIT_NS = uuid.UUID(md5_hash.hexdigest()) + + def generate_uuid(): """Generate a CADF identifier """ - return norm_ns(str(uuid.uuid4())) + if AUDIT_NS: + return str(uuid.uuid5(AUDIT_NS, str(uuid.uuid4()))) + return str(uuid.uuid4()) +@removals.remove def norm_ns(str_id): - """Apply a namespace to the identifier - """ + """Apply a namespace to the identifier """ prefix = CONF.audit.namespace + ':' if CONF.audit.namespace else '' return prefix + str_id -# TODO(mrutkows): validate any cadf:Identifier (type) record against -# CADF schema. This would include schema validation as an optional parm. def is_valid(value): """Validation to ensure Identifier is correct. """ - if not isinstance(value, six.string_types): - raise TypeError - elif not value: + if value in ['target', 'initiator', 'observer']: + return True + try: + uuid.UUID(value) + except ValueError: return False - return True + else: + return True |