code: async def addRelation(self, endpoint1, endpoint2):
          
          endpoints = [endpoint1, endpoint2]
          # resolve indirect references
          for i in range(len(endpoints)):
              parts = endpoints[i].split(':')
              parts[0] = self.resolve(parts[0])
              endpoints[i] = ':'.join(parts)
  
          log.info('Relating %s <-> %s', *endpoints)
          return await self.model.add_relation(*endpoints)
docs: :param endpoint1 string:
          :param endpoint2 string:
              Endpoint1 and Endpoint2 hold relation endpoints in the
              "application:interface" form, where the application is always a
              placeholder pointing to an application change, and the interface is
              optional. Examples are "$deploy-42:web" or just "$deploy-42".