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 }