def add_relation(self, source, target, kind, label=None, metadata=None): """Adds a relation to the context graph.""" assert utilities.valid_string(source) and utilities.valid_string(target) assert utilities.valid_string(kind) assert utilities.valid_optional_string(label) assert (metadata is None) or isinstance(metadata, types.DictType) with self._lock: # Add the relation to the context graph data structure. relation = { 'source': source, 'target': target, 'type': kind, } # Add annotations as needed. relation['annotations'] = {} if metadata is not None: relation['annotations']['metadata'] = metadata relation['annotations']['label'] = label if label is not None else kind if self._version is not None: relation['annotations']['createdBy'] = self._version self._context_relations.append(relation)
def add_relation(self, source, target, kind, label=None, metadata=None): """Adds a relation to the context graph.""" assert utilities.valid_string(source) and utilities.valid_string(target) assert utilities.valid_string(kind) assert utilities.valid_optional_string(label) assert (metadata is None) or isinstance(metadata, dict) with self._lock: # The timestamp of the relation should be inherited from the previous # context graph. key = (source, target, kind) timestamp = self._previous_relations_to_timestamps.get(key) if not utilities.valid_string(timestamp): timestamp = utilities.now() # Add the relation to the context graph data structure. relation = { 'source': source, 'target': target, 'type': kind, 'timestamp': timestamp } self._current_relations_to_timestamps[key] = timestamp # Add annotations as needed. relation['annotations'] = {} if metadata is not None: relation['annotations']['metadata'] = copy.deep_copy(metadata) relation['annotations']['label'] = label if label is not None else kind self._context_relations.append(relation)
def add_relation(self, source, target, kind, label=None, metadata=None): """Adds a relation to the context graph.""" assert utilities.valid_string(source) and utilities.valid_string(target) assert utilities.valid_string(kind) assert utilities.valid_optional_string(label) assert (metadata is None) or isinstance(metadata, types.DictType) with self._lock: # The timestamp of the relation should be inherited from the previous # context graph. key = (source, target, kind) timestamp = self._previous_relations_to_timestamps.get(key) if not utilities.valid_string(timestamp): timestamp = utilities.now() # Add the relation to the context graph data structure. relation = { 'source': source, 'target': target, 'type': kind, 'timestamp': timestamp } self._current_relations_to_timestamps[key] = timestamp # Add annotations as needed. relation['annotations'] = {} if metadata is not None: relation['annotations']['metadata'] = copy.deep_copy(metadata) relation['annotations']['label'] = label if label is not None else kind if self._version is not None: relation['annotations']['createdBy'] = self._version self._context_relations.append(relation)
def valid_id(x): """Tests whether 'x' a valid resource identifier. A valid resource identifier is either None (which means you refer to every resource) or a non-empty string. Args: x: a resource identifier or None. Returns: True iff 'x' is a valid resource identifier. """ return utilities.valid_optional_string(x)