github.com/arunkumar7540/cli@v6.45.0+incompatible/actor/v7action/domain.go (about)

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