def _ParseConnections(
        connections_body: List[Tuple[str, Any]]) -> Set[connection.Connection]:
    """Parses YAML defining connections between one entity and another.

  Entites are identified by GUID.

  Connections are always defined on the target entity.

  Args:
    connections_body: YAML body for the entity connections

  Returns:
    A set of Connection instances
  """

    connections = set()

    for source_entity_guid, item_body in connections_body:
        if isinstance(item_body, str):
            connections.add(
                connection.Connection(item_body, source_entity_guid))
        else:
            for connection_type in item_body:
                connections.add(
                    connection.Connection(connection_type, source_entity_guid))

    return connections
    def testGoodConnectionType(self):
        parsed = _Helper([
            path.join(_TESTCASE_PATH, 'GOOD', 'good_building_connections.yaml')
        ])
        entity_code, entity = next(iter(parsed.items()))
        expected_connections = [
            connection.Connection('FEEDS', 'ANOTHER-ENTITY-guid'),
            connection.Connection('CONTAINS', 'A-THIRD-ENTITY-guid')
        ]

        self.assertIn('connections', entity,
                      'entity does not have connections when expected')
        self.assertIsNotNone(
            self.config_universe.connection_universe,
            'universe does not have a valid connections universe')

        instance = entity_instance.EntityInstance.FromYaml(
            entity_code,
            entity,
            code_to_guid_map={
                'ANOTHER-ENTITY': 'ANOTHER-ENTITY-guid',
                'A-THIRD-ENTITY': 'A-THIRD-ENTITY-guid'
            })

        self.assertTrue(self.init_validator.Validate(instance))
        self.assertCountEqual(expected_connections, instance.connections)
Exemple #3
0
    def testGraphGoodConnection(self, mock_universe):
        target = entity_instance.EntityInstance(
            _ADD,
            'VAV-123',
            connections=[connection.Connection('FEEDS', 'AHU-1')])
        source = entity_instance.EntityInstance(
            _ADD,
            'AHU-1',
            connections=[connection.Connection('FEEDS', 'AHU-1')])
        instances = {'VAV-123': target, 'AHU-1': source}
        validator = entity_instance.GraphValidator(mock_universe, _INIT_CFG,
                                                   instances)

        self.assertTrue(validator.Validate(target))
Exemple #4
0
    def testGraphOrphanConnection(self, mock_universe):
        target = entity_instance.EntityInstance(
            _ADD,
            'VAV-123',
            connections=[connection.Connection('FEEDS', 'AHU-1')])
        validator = entity_instance.GraphValidator(mock_universe, _INIT_CFG,
                                                   {'VAV-123': target})

        self.assertFalse(validator.Validate(target))
    def testGraphGoodConnection(self):
        target = entity_instance.EntityInstance(
            _ADD,
            entity_id='CDM/123456',
            guid='VAV-123-guid',
            code='VAV-123',
            connections=[connection.Connection('FEEDS', 'AHU-1-guid')])
        source = entity_instance.EntityInstance(
            _ADD,
            entity_id='CDM/987654',
            guid='AHU-1-guid',
            code='AHU-1',
            connections=[connection.Connection('FEEDS', 'AHU-1-guid')])
        instances = {'VAV-123-guid': target, 'AHU-1-guid': source}
        validator = entity_instance.GraphValidator(self.config_universe,
                                                   _INIT_CFG, instances)

        self.assertTrue(validator.Validate(target))
Exemple #6
0
    def testGraphOrphanConnectionOkOnUpdate(self, mock_universe):
        target = entity_instance.EntityInstance(
            _UPDATE,
            'VAV-123',
            connections=[connection.Connection('FEEDS', 'AHU-1')],
            etag='123')
        validator = entity_instance.GraphValidator(mock_universe, _UPDATE_CFG,
                                                   {'VAV-123': target})

        self.assertTrue(validator.Validate(target))
Exemple #7
0
    def testGraphAllowsOrphanConnectionOnInit(self):
        target = entity_instance.EntityInstance(
            _UPDATE,
            'VAV-123',
            connections=[connection.Connection('FEEDS', 'AHU-1')],
            etag='123')
        validator = entity_instance.GraphValidator(self.config_universe,
                                                   _UPDATE_CFG,
                                                   {'VAV-123': target})

        self.assertTrue(validator.Validate(target))
    def testGraphRejectsOrphanConnectionOnInit(self):
        target = entity_instance.EntityInstance(
            _ADD,
            entity_id='CDM/123456',
            guid='VAV-123-guid',
            code='VAV-123',
            connections=[connection.Connection('FEEDS', 'AHU-1-guid')])
        validator = entity_instance.GraphValidator(self.config_universe,
                                                   _INIT_CFG,
                                                   {'VAV-123-guid': target})

        self.assertFalse(validator.Validate(target))
Exemple #9
0
    def testGoodConnectionType(self):
        parsed = _Helper([
            path.join(_TESTCASE_PATH, 'GOOD', 'good_building_connections.yaml')
        ])
        parsed = dict(parsed)
        entity_name = list(parsed)[0]
        entity = dict(parsed[entity_name])
        expected_connections = [
            connection.Connection('FEEDS', 'ANOTHER-ENTITY'),
            connection.Connection('CONTAINS', 'A-THIRD-ENTITY')
        ]

        self.assertIn('connections', entity,
                      'entity does not have connections when expected')
        self.assertIsNotNone(
            self.config_universe.connection_universe,
            'universe does not have a valid connections universe')

        instance = entity_instance.EntityInstance.FromYaml(entity)

        self.assertTrue(self.init_validator.Validate(instance))
        self.assertCountEqual(expected_connections, instance.connections)
def _ParseConnections(
    connections_body: syaml.YAML) -> Set[connection.Connection]:
  """Parses YAML defining connections between one entity and other.

  Connections are always defined on the target entity.

  Args:
    connections_body: YAML body for the entity connections

  Returns:
    A set of Connection instances
  """

  connections = set()

  for source_entity, item_body in connections_body.items():
    if isinstance(item_body, str):
      connections.add(connection.Connection(item_body, source_entity))
    else:
      for connection_type in item_body:
        connections.add(connection.Connection(connection_type, source_entity))

  return connections
  def _ParseConnections(self, connections_body):
    """Parses YAML defining the connections between an entity and other
    entities, which are the sources of the connections.

    Args:
      connections_body: YAML body for the entity connections

    Returns:
      A set of Connection instances
    """

    connections = set()

    for source_entity, connection_type in connections_body.items():
      connections.add(connection.Connection(connection_type, source_entity))

    return connections