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 }