Skip to content

Commit

Permalink
feat: add SetTemplate method to some request structs (trial feature)
Browse files Browse the repository at this point in the history
  • Loading branch information
masonkatz committed Feb 16, 2024
1 parent 117e2a4 commit 643d46d
Show file tree
Hide file tree
Showing 2 changed files with 58 additions and 29 deletions.
57 changes: 28 additions & 29 deletions cloud/datastore.go
Original file line number Diff line number Diff line change
Expand Up @@ -48,33 +48,32 @@ type Datastore struct {

// DatastoreTemplate is the API payload based on the legacy xmlrpc backend.
type DatastoreTemplate struct {
Values map[string]string `json:"values" yaml:"values"`
AllowOrphans string `json:"allow_orphans" yaml:"allow_orphans"`
BridgeList string `json:"bridge_list" yaml:"bridge_list"`
CloneTarget string `json:"clone_target" yaml:"clone_target"`
CloneTargetShared string `json:"clone_target_shared" yaml:"clone_target_shared"`
CloneTargetSSH string `json:"clone_target_ssh" yaml:"clone_target_ssh"`
DiskType string `json:"disk_type" yaml:"disk_type"`
DiskTypeShared string `json:"disk_type_shared" yaml:"disk_type_shared"`
DiskTypeSSH string `json:"disk_type_ssh" yaml:"disk_type_ssh"`
Driver string `json:"driver" yaml:"driver"`
DatastoreMAD string `json:"ds_mad" yaml:"ds_mad"`
DatastoreMigrate bool `json:"ds_migrate" yaml:"ds_migrate"`
LNTarget string `json:"ln_target" yaml:"ln_target"`
LNTargetShared string `json:"ln_target_shared" yaml:"ln_target_shared"`
LNTargetSSH string `json:"ln_target_ssh" yaml:"ln_target_ssh"`
PoolName string `json:"pool_name" yaml:"pool_name"`
RestrictedDirs string `json:"restricted_dirs" yaml:"restricted_dirs"`
SafeDirs string `json:"safe_dirs" yaml:"safe_dirs"`
Shared bool `json:"shared" yaml:"shared"`
StagingDir string `json:"staging_dir" yaml:"staging_dir"`
TransferManagerMAD string `json:"tm_mad" yaml:"tm_mad"`
TransferManagerMADSystem []string `json:"tm_mad_system" yaml:"tm_mad_system"`
Type string `json:"type" yaml:"type"`
VCenterDCName string `json:"vcenter_dc_name" yaml:"vcenter_dc_name"`
VCenterDCRef string `json:"vcenter_dc_ref" yaml:"vcenter_dc_ref"`
VCenterDSName string `json:"vcenter_ds_name" yaml:"vcenter_ds_name"`
VCenterDSRef string `json:"vcenter_ds_ref" yaml:"vcenter_ds_ref"`
VCenterHost string `json:"vcenter_host" yaml:"vcenter_host"`
VCenterInstanceID string `json:"vcenter_instance_id" yaml:"vcenter_instance_id"`
AllowOrphans string `json:"allow_orphans" yaml:"allow_orphans"`
BridgeList string `json:"bridge_list" yaml:"bridge_list"`
CloneTarget string `json:"clone_target" yaml:"clone_target"`
CloneTargetShared string `json:"clone_target_shared" yaml:"clone_target_shared"`
CloneTargetSSH string `json:"clone_target_ssh" yaml:"clone_target_ssh"`
DiskType string `json:"disk_type" yaml:"disk_type"`
DiskTypeShared string `json:"disk_type_shared" yaml:"disk_type_shared"`
DiskTypeSSH string `json:"disk_type_ssh" yaml:"disk_type_ssh"`
Driver string `json:"driver" yaml:"driver"`
DatastoreMAD string `json:"ds_mad" yaml:"ds_mad"`
DatastoreMigrate bool `json:"ds_migrate" yaml:"ds_migrate"`
LNTarget string `json:"ln_target" yaml:"ln_target"`
LNTargetShared string `json:"ln_target_shared" yaml:"ln_target_shared"`
LNTargetSSH string `json:"ln_target_ssh" yaml:"ln_target_ssh"`
PoolName string `json:"pool_name" yaml:"pool_name"`
RestrictedDirs string `json:"restricted_dirs" yaml:"restricted_dirs"`
SafeDirs string `json:"safe_dirs" yaml:"safe_dirs"`
Shared bool `json:"shared" yaml:"shared"`
StagingDir string `json:"staging_dir" yaml:"staging_dir"`
TransferManagerMAD string `json:"tm_mad" yaml:"tm_mad"`
TransferManagerMADSystem []string `json:"tm_mad_system" yaml:"tm_mad_system"`
Type string `json:"type" yaml:"type"`
VCenterDCName string `json:"vcenter_dc_name" yaml:"vcenter_dc_name"`
VCenterDCRef string `json:"vcenter_dc_ref" yaml:"vcenter_dc_ref"`
VCenterDSName string `json:"vcenter_ds_name" yaml:"vcenter_ds_name"`
VCenterDSRef string `json:"vcenter_ds_ref" yaml:"vcenter_ds_ref"`
VCenterHost string `json:"vcenter_host" yaml:"vcenter_host"`
VCenterInstanceID string `json:"vcenter_instance_id" yaml:"vcenter_instance_id"`
}
30 changes: 30 additions & 0 deletions cloud/requests.go
Original file line number Diff line number Diff line change
Expand Up @@ -129,6 +129,12 @@ type UpdateGroupRequest struct {
Merge bool `json:"merge"`
}

// SetTemplate sets r.Template from its structured representation. Either call
// this of set the template string directly.
func (r *UpdateGroupRequest) SetTemplate(t GroupTemplate) {
r.Template = NewTemplate(t).String()
}

// AddGroupAdminRequest is the request body for POST /cloud/group/admin.
type AddGroupAdminRequest struct {
User int `json:"user"`
Expand Down Expand Up @@ -219,6 +225,12 @@ type CreateImageRequest struct {
EnforceCapacity bool `json:"enforce_capacity"`
}

// SetTemplate sets r.Template from its structured representation. Either call
// this of set the template string directly.
func (r *CreateImageRequest) SetTemplate(t ImageTemplate) {
r.Template = NewTemplate(t).String()
}

// CloneImageRequest is the request body for POST /cloud/image/clone.
type CloneImageRequest struct {
Name string `json:"name"`
Expand Down Expand Up @@ -246,6 +258,12 @@ type UpdateImageRequest struct {
Merge bool `json:"merge"`
}

// SetTemplate sets r.Template from its structured representation. Either call
// this of set the template string directly.
func (r *UpdateImageRequest) SetTemplate(t ImageTemplate) {
r.Template = NewTemplate(t).String()
}

// ChangeImagePermissionsRequest is the request body for PATCH /cloud/image/{image}/permissions.
type ChangeImagePermissionsRequest struct {
Permissions hc.Perms `json:"permissions"`
Expand Down Expand Up @@ -278,6 +296,12 @@ type CreateInstanceRequest struct {
Pending bool `json:"pending"`
}

// SetTemplate sets r.Template from its structured representation. Either call
// this of set the template string directly.
func (r *CreateInstanceRequest) SetTemplate(t InstanceTemplate) {
r.Template = NewTemplate(t).String()
}

// SetInstanceActionRequest is the request body for PATCH /cloud/instance/{instance}/action.
type SetInstanceActionRequest struct {
// Action to perform
Expand Down Expand Up @@ -528,6 +552,12 @@ type UpdateUserRequest struct {
Merge bool `json:"merge"`
}

// SetTemplate sets r.Template from its structured representation. Either call
// this of set the template string directly.
func (r *UpdateUserRequest) SetTemplate(t UserTemplate) {
r.Template = NewTemplate(t).String()
}

// ChangeUserAuthRequest is the request body for PATCH /cloud/user/{user}/auth.
type ChangeUserAuthRequest struct {
Driver string `json:"driver"`
Expand Down

0 comments on commit 643d46d

Please sign in to comment.