Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
11 changes: 11 additions & 0 deletions actor/actionerror/route_policy_not_found_error.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
package actionerror

import "fmt"

type RoutePolicyNotFoundError struct {
Source string
}

func (e RoutePolicyNotFoundError) Error() string {
return fmt.Sprintf("Route policy with source '%s' not found.", e.Source)
}
3 changes: 3 additions & 0 deletions actor/v7action/cloud_controller_client.go
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,7 @@ type CloudControllerClient interface {
CancelDeployment(deploymentGUID string) (ccv3.Warnings, error)
ContinueDeployment(deploymentGUID string) (ccv3.Warnings, error)
CopyPackage(sourcePackageGUID string, targetAppGUID string) (resources.Package, ccv3.Warnings, error)
CreateRoutePolicy(routePolicy resources.RoutePolicy) (resources.RoutePolicy, ccv3.Warnings, error)
CreateApplication(app resources.Application) (resources.Application, ccv3.Warnings, error)
CreateApplicationDeployment(dep resources.Deployment) (string, ccv3.Warnings, error)
CreateApplicationProcessScale(appGUID string, process resources.Process) (resources.Process, ccv3.Warnings, error)
Expand All @@ -42,6 +43,7 @@ type CloudControllerClient interface {
CreateSpace(space resources.Space) (resources.Space, ccv3.Warnings, error)
CreateSpaceQuota(spaceQuota resources.SpaceQuota) (resources.SpaceQuota, ccv3.Warnings, error)
CreateUser(userGUID string) (resources.User, ccv3.Warnings, error)
DeleteRoutePolicy(guid string) (ccv3.JobURL, ccv3.Warnings, error)
DeleteApplication(guid string) (ccv3.JobURL, ccv3.Warnings, error)
DeleteApplicationProcessInstance(appGUID string, processType string, instanceIndex int) (ccv3.Warnings, error)
DeleteBuildpack(buildpackGUID string) (ccv3.JobURL, ccv3.Warnings, error)
Expand All @@ -63,6 +65,7 @@ type CloudControllerClient interface {
DeleteUser(userGUID string) (ccv3.JobURL, ccv3.Warnings, error)
DownloadDroplet(dropletGUID string) ([]byte, ccv3.Warnings, error)
EntitleIsolationSegmentToOrganizations(isoGUID string, orgGUIDs []string) (resources.RelationshipList, ccv3.Warnings, error)
GetRoutePolicies(query ...ccv3.Query) ([]resources.RoutePolicy, ccv3.IncludedResources, ccv3.Warnings, error)
GetApplicationByNameAndSpace(appName string, spaceGUID string) (resources.Application, ccv3.Warnings, error)
GetApplicationDropletCurrent(appGUID string) (resources.Droplet, ccv3.Warnings, error)
GetApplicationEnvironment(appGUID string) (ccv3.Environment, ccv3.Warnings, error)
Expand Down
29 changes: 23 additions & 6 deletions actor/v7action/domain.go
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,7 @@ func (actor Actor) CheckRoute(domainName string, hostname string, path string, p
return matches, allWarnings, err
}

func (actor Actor) CreateSharedDomain(domainName string, internal bool, routerGroupName string) (Warnings, error) {
func (actor Actor) CreateSharedDomain(domainName string, internal bool, routerGroupName string, enforceAccessRules bool, accessRulesScope string) (Warnings, error) {
allWarnings := Warnings{}
routerGroupGUID := ""

Expand All @@ -37,28 +37,45 @@ func (actor Actor) CreateSharedDomain(domainName string, internal bool, routerGr
routerGroupGUID = routerGroup.GUID
}

_, warnings, err := actor.CloudControllerClient.CreateDomain(resources.Domain{
domain := resources.Domain{
Name: domainName,
Internal: types.NullBool{IsSet: true, Value: internal},
RouterGroup: routerGroupGUID,
})
}

// Set enforce_route_policies if specified
if enforceAccessRules {
domain.EnforceRoutePolicies = types.NullBool{IsSet: true, Value: true}
domain.RoutePoliciesScope = accessRulesScope
}

_, warnings, err := actor.CloudControllerClient.CreateDomain(domain)
allWarnings = append(allWarnings, Warnings(warnings)...)

return allWarnings, err
}

func (actor Actor) CreatePrivateDomain(domainName string, orgName string) (Warnings, error) {
func (actor Actor) CreatePrivateDomain(domainName string, orgName string, enforceAccessRules bool, accessRulesScope string) (Warnings, error) {
allWarnings := Warnings{}
organization, warnings, err := actor.GetOrganizationByName(orgName)
allWarnings = append(allWarnings, warnings...)

if err != nil {
return allWarnings, err
}
_, apiWarnings, err := actor.CloudControllerClient.CreateDomain(resources.Domain{

domain := resources.Domain{
Name: domainName,
OrganizationGUID: organization.GUID,
})
}

// Set enforce_route_policies if specified
if enforceAccessRules {
domain.EnforceRoutePolicies = types.NullBool{IsSet: true, Value: true}
domain.RoutePoliciesScope = accessRulesScope
}

_, apiWarnings, err := actor.CloudControllerClient.CreateDomain(domain)

actorWarnings := Warnings(apiWarnings)
allWarnings = append(allWarnings, actorWarnings...)
Expand Down
4 changes: 2 additions & 2 deletions actor/v7action/domain_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -118,7 +118,7 @@ var _ = Describe("Domain Actions", func() {
)

JustBeforeEach(func() {
warnings, executeErr = actor.CreateSharedDomain("the-domain-name", true, routerGroup)
warnings, executeErr = actor.CreateSharedDomain("the-domain-name", true, routerGroup, false, "")
})

BeforeEach(func() {
Expand Down Expand Up @@ -191,7 +191,7 @@ var _ = Describe("Domain Actions", func() {
})

It("delegates to the cloud controller client", func() {
warnings, executeErr := actor.CreatePrivateDomain("private-domain-name", "org-name")
warnings, executeErr := actor.CreatePrivateDomain("private-domain-name", "org-name", false, "")
Expect(executeErr).To(MatchError("create-error"))
Expect(warnings).To(ConsistOf("get-orgs-warning", "create-warning-1", "create-warning-2"))

Expand Down
Loading
Loading