github.com/franc20/ayesa_sap@v7.0.0-beta.28.0.20200124003224-302d4d52fa6c+incompatible/actor/v7action/domain.go (about)

     1  package v7action
     2  
     3  import (
     4  	"code.cloudfoundry.org/cli/actor/actionerror"
     5  	"code.cloudfoundry.org/cli/api/cloudcontroller/ccv3"
     6  	"code.cloudfoundry.org/cli/types"
     7  )
     8  
     9  type Domain ccv3.Domain
    10  
    11  type SharedOrgs ccv3.SharedOrgs
    12  
    13  func (domain Domain) Shared() bool {
    14  	return domain.OrganizationGUID == ""
    15  }
    16  
    17  func (actor Actor) CheckRoute(domainName string, hostname string, path string) (bool, Warnings, error) {
    18  	var allWarnings Warnings
    19  
    20  	domain, warnings, err := actor.GetDomainByName(domainName)
    21  	allWarnings = append(allWarnings, warnings...)
    22  	if err != nil {
    23  		return false, allWarnings, err
    24  	}
    25  
    26  	matches, checkRouteWarnings, err := actor.CloudControllerClient.CheckRoute(domain.GUID, hostname, path)
    27  	allWarnings = append(allWarnings, checkRouteWarnings...)
    28  
    29  	return matches, allWarnings, err
    30  }
    31  
    32  func (actor Actor) CreateSharedDomain(domainName string, internal bool) (Warnings, error) {
    33  	_, warnings, err := actor.CloudControllerClient.CreateDomain(ccv3.Domain{
    34  		Name:     domainName,
    35  		Internal: types.NullBool{IsSet: true, Value: internal},
    36  	})
    37  	return Warnings(warnings), err
    38  }
    39  
    40  func (actor Actor) CreatePrivateDomain(domainName string, orgName string) (Warnings, error) {
    41  	allWarnings := Warnings{}
    42  	organization, warnings, err := actor.GetOrganizationByName(orgName)
    43  	allWarnings = append(allWarnings, warnings...)
    44  
    45  	if err != nil {
    46  		return allWarnings, err
    47  	}
    48  	_, apiWarnings, err := actor.CloudControllerClient.CreateDomain(ccv3.Domain{
    49  		Name:             domainName,
    50  		OrganizationGUID: organization.GUID,
    51  	})
    52  
    53  	actorWarnings := Warnings(apiWarnings)
    54  	allWarnings = append(allWarnings, actorWarnings...)
    55  
    56  	return allWarnings, err
    57  }
    58  
    59  func (actor Actor) DeleteDomain(domain Domain) (Warnings, error) {
    60  	allWarnings := Warnings{}
    61  
    62  	jobURL, apiWarnings, err := actor.CloudControllerClient.DeleteDomain(domain.GUID)
    63  
    64  	actorWarnings := Warnings(apiWarnings)
    65  	allWarnings = append(allWarnings, actorWarnings...)
    66  
    67  	if err != nil {
    68  		return allWarnings, err
    69  	}
    70  
    71  	pollJobWarnings, err := actor.CloudControllerClient.PollJob(jobURL)
    72  	allWarnings = append(allWarnings, Warnings(pollJobWarnings)...)
    73  
    74  	return allWarnings, err
    75  }
    76  
    77  func (actor Actor) GetOrganizationDomains(orgGuid string, labelSelector string) ([]Domain, Warnings, error) {
    78  	keys := []ccv3.Query{}
    79  	if labelSelector != "" {
    80  		keys = append(keys, ccv3.Query{Key: ccv3.LabelSelectorFilter, Values: []string{labelSelector}})
    81  	}
    82  	ccv3Domains, warnings, err := actor.CloudControllerClient.GetOrganizationDomains(orgGuid, keys...)
    83  
    84  	if err != nil {
    85  		return nil, Warnings(warnings), err
    86  	}
    87  
    88  	var domains []Domain
    89  	for _, domain := range ccv3Domains {
    90  		domains = append(domains, Domain(domain))
    91  	}
    92  
    93  	return domains, Warnings(warnings), nil
    94  }
    95  
    96  func (actor Actor) GetDomain(domainGUID string) (Domain, Warnings, error) {
    97  	domain, warnings, err := actor.CloudControllerClient.GetDomain(domainGUID)
    98  
    99  	if err != nil {
   100  		return Domain{}, Warnings(warnings), err
   101  	}
   102  
   103  	return Domain(domain), Warnings(warnings), nil
   104  }
   105  
   106  func (actor Actor) GetDomainByName(domainName string) (Domain, Warnings, error) {
   107  	domains, warnings, err := actor.CloudControllerClient.GetDomains(
   108  		ccv3.Query{Key: ccv3.NameFilter, Values: []string{domainName}},
   109  	)
   110  
   111  	if err != nil {
   112  		return Domain{}, Warnings(warnings), err
   113  	}
   114  
   115  	if len(domains) == 0 {
   116  		return Domain{}, Warnings(warnings), actionerror.DomainNotFoundError{Name: domainName}
   117  	}
   118  
   119  	return Domain(domains[0]), Warnings(warnings), nil
   120  }
   121  
   122  func (actor Actor) SharePrivateDomain(domainName string, orgName string) (Warnings, error) {
   123  	orgGUID, domainGUID, warnings, err := actor.GetDomainAndOrgGUIDsByName(domainName, orgName)
   124  
   125  	if err != nil {
   126  		return warnings, err
   127  	}
   128  
   129  	apiWarnings, err := actor.CloudControllerClient.SharePrivateDomainToOrgs(
   130  		domainGUID,
   131  		ccv3.SharedOrgs{GUIDs: []string{orgGUID}},
   132  	)
   133  
   134  	allWarnings := append(warnings, Warnings(apiWarnings)...)
   135  
   136  	return allWarnings, err
   137  }
   138  
   139  func (actor Actor) UnsharePrivateDomain(domainName string, orgName string) (Warnings, error) {
   140  	orgGUID, domainGUID, warnings, err := actor.GetDomainAndOrgGUIDsByName(domainName, orgName)
   141  
   142  	if err != nil {
   143  		return warnings, err
   144  	}
   145  
   146  	apiWarnings, err := actor.CloudControllerClient.UnsharePrivateDomainFromOrg(
   147  		domainGUID,
   148  		orgGUID,
   149  	)
   150  
   151  	allWarnings := append(warnings, Warnings(apiWarnings)...)
   152  
   153  	return allWarnings, err
   154  }
   155  
   156  func (actor Actor) GetDomainAndOrgGUIDsByName(domainName string, orgName string) (string, string, Warnings, error) {
   157  	org, getOrgWarnings, err := actor.GetOrganizationByName(orgName)
   158  
   159  	if err != nil {
   160  		return "", "", getOrgWarnings, err
   161  	}
   162  
   163  	domain, getDomainWarnings, err := actor.GetDomainByName(domainName)
   164  	allWarnings := append(getOrgWarnings, getDomainWarnings...)
   165  
   166  	if err != nil {
   167  		return "", "", allWarnings, err
   168  	}
   169  
   170  	return org.GUID, domain.GUID, allWarnings, nil
   171  }