github.com/cloudfoundry-attic/ltc@v0.0.0-20151123212628-098adc7919fc/config/target_verifier/target_verifier.go (about)

     1  package target_verifier
     2  
     3  import (
     4  	"github.com/cloudfoundry-incubator/ltc/receptor_client"
     5  	"github.com/cloudfoundry-incubator/receptor"
     6  )
     7  
     8  //go:generate counterfeiter -o fake_target_verifier/fake_target_verifier.go . TargetVerifier
     9  type TargetVerifier interface {
    10  	VerifyTarget(name string) (up bool, auth bool, err error)
    11  }
    12  
    13  func New(receptorClientCreator receptor_client.Creator) TargetVerifier {
    14  	return &targetVerifier{receptorClientCreator}
    15  }
    16  
    17  type targetVerifier struct {
    18  	receptorClientCreator receptor_client.Creator
    19  }
    20  
    21  func (t *targetVerifier) VerifyTarget(target string) (up, auth bool, err error) {
    22  	receptorClient := t.receptorClientCreator.CreateReceptorClient(target)
    23  	_, err = receptorClient.DesiredLRPs()
    24  
    25  	if err != nil {
    26  		receptorErr, ok := err.(receptor.Error)
    27  
    28  		if !ok {
    29  			return false, false, err
    30  		}
    31  
    32  		if receptorErr.Type == receptor.Unauthorized {
    33  			return true, false, nil
    34  		} else {
    35  			// TODO: poor interface for return values: "true, false, err"
    36  			return true, false, err
    37  		}
    38  	}
    39  
    40  	return true, true, nil
    41  }