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