Skip to content

Commit

Permalink
add current_droplet relationships to application resource
Browse files Browse the repository at this point in the history
  • Loading branch information
gmllt committed Jan 8, 2025
1 parent 1e1c456 commit 9800676
Show file tree
Hide file tree
Showing 2 changed files with 19 additions and 3 deletions.
3 changes: 3 additions & 0 deletions api/cloudcontroller/ccv3/constant/relationships.go
Original file line number Diff line number Diff line change
Expand Up @@ -21,4 +21,7 @@ const (

// RelationshipTypeQuota is a relationship with a Cloud Controller quota (org quota or space quota).
RelationshipTypeQuota RelationshipType = "quota"

// RelationshipTypeCurrentDroplet is a relationship with a Droplet.
RelationshipTypeCurrentDroplet RelationshipType = "current_droplet"
)
19 changes: 16 additions & 3 deletions resources/application_resource.go
Original file line number Diff line number Diff line change
Expand Up @@ -27,6 +27,8 @@ type Application struct {
State constant.ApplicationState
// Credentials are used by Cloud Native Buildpacks lifecycle to pull buildpacks
Credentials map[string]interface{}
// CurrentDropletGUID is the unique identifier of the droplet currently attached to the application.
CurrentDropletGUID string
}

// ApplicationNameOnly represents only the name field of a Cloud Controller V3 Application
Expand All @@ -42,10 +44,18 @@ func (a Application) MarshalJSON() ([]byte, error) {
Metadata: a.Metadata,
}

relationShips := Relationships{}

if a.SpaceGUID != "" {
ccApp.Relationships = Relationships{
constant.RelationshipTypeSpace: Relationship{GUID: a.SpaceGUID},
}
relationShips[constant.RelationshipTypeSpace] = Relationship{GUID: a.SpaceGUID}
}

if a.CurrentDropletGUID != "" {
relationShips[constant.RelationshipTypeCurrentDroplet] = Relationship{GUID: a.CurrentDropletGUID}
}

if len(relationShips) > 0 {
ccApp.Relationships = relationShips
}

if a.LifecycleType == constant.AppLifecycleTypeDocker {
Expand Down Expand Up @@ -81,6 +91,9 @@ func (a *Application) UnmarshalJSON(data []byte) error {
a.LifecycleType = lifecycle.Type
a.Name = ccApp.Name
a.SpaceGUID = ccApp.Relationships[constant.RelationshipTypeSpace].GUID
if _, ok := ccApp.Relationships[constant.RelationshipTypeCurrentDroplet]; ok {
a.CurrentDropletGUID = ccApp.Relationships[constant.RelationshipTypeCurrentDroplet].GUID
}
a.State = ccApp.State
a.Metadata = ccApp.Metadata

Expand Down

0 comments on commit 9800676

Please sign in to comment.