docs: def _create_mirror(self, resource_type, resource_name, target_name,
                         mirror_type, slave_resource_name, create_slave='no',
                         remote_pool=None, rpo=None, remote_rpo=None,
                         schedule=None, remote_schedule=None,
                         activate_mirror='no'):
          '''creates a mirror and returns a mirror object.
              resource_type must be 'vol' or 'cg',
              target name must be a valid target from target_list,
              mirror type must be 'sync' or 'async',
              slave_resource_name would be the slave_vol or slave_cg name'''
  
          kwargs = {
              resource_type: resource_name,
              'target': target_name,
              'type': mirror_type,
              'slave_' + resource_type: slave_resource_name,
              'create_slave': create_slave,
              'remote_pool': remote_pool,
              'rpo': rpo,
              'remote_rpo': remote_rpo,
              'schedule': schedule,
              'remote_schedule': remote_schedule
          }
  
          if mirror_type == 'sync':
              kwargs['type'] = 'sync_best_effort'
              kwargs['rpo'] = None
          else:
              kwargs['type'] = 'async_interval'
              if kwargs['remote_schedule'] is None:
                  kwargs['remote_schedule'] = kwargs['schedule']
  
          # avoids a python3 issue of the dict changing
          # during iteration
          keys = set(kwargs.keys()).copy()
          for k in keys:
              if kwargs[k] is None:
                  kwargs.pop(k)
  
          logger.info('creating mirror with arguments: %s' % kwargs)
          self.xcli_client.cmd.mirror_create(**kwargs)
  
          if activate_mirror == 'yes':
              logger.info('Activating mirror %s' % resource_name)
              self.activate_mirror(resource_name)
  
          return self.get_mirror_resources()[resource_name]