Skip to content

Commit

Permalink
get gerrit trigger events
Browse files Browse the repository at this point in the history
  • Loading branch information
jgramoll committed Jul 30, 2019
1 parent 885918b commit 50bf38b
Show file tree
Hide file tree
Showing 27 changed files with 602 additions and 400 deletions.
2 changes: 1 addition & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -134,4 +134,4 @@ resource "jenkins_job_gerrit_branch" "main" {
## TODO

1. import resources
1. Refactor appends
1. Refactor unmarshall to use map
8 changes: 3 additions & 5 deletions client/git_scm_branches.go
Original file line number Diff line number Diff line change
Expand Up @@ -16,13 +16,11 @@ func NewGitScmBranches() *GitScmBranches {
}

func (branches *GitScmBranches) Append(branch *GitScmBranchSpec) *GitScmBranches {
var newBranchItems []*GitScmBranchSpec
newBranches := NewGitScmBranches()
if branches.Items != nil {
newBranchItems = append(*branches.Items, branch)
*newBranches.Items = append(*branches.Items, branch)
} else {
newBranchItems = append(newBranchItems, branch)
*newBranches.Items = []*GitScmBranchSpec{branch}
}
newBranches := NewGitScmBranches()
newBranches.Items = &newBranchItems
return newBranches
}
8 changes: 3 additions & 5 deletions client/git_scm_extensions.go
Original file line number Diff line number Diff line change
Expand Up @@ -11,13 +11,11 @@ func NewGitScmExtensions() *GitScmExtensions {
}

func (extensions *GitScmExtensions) Append(extension GitScmExtension) *GitScmExtensions {
var newExtensionItems []GitScmExtension
newExtensions := NewGitScmExtensions()
if extensions.Items != nil {
newExtensionItems = append(*extensions.Items, extension)
*newExtensions.Items = append(*extensions.Items, extension)
} else {
newExtensionItems = append(newExtensionItems, extension)
*newExtensions.Items = []GitScmExtension{extension}
}
newExtensions := NewGitScmExtensions()
newExtensions.Items = &newExtensionItems
return newExtensions
}
8 changes: 3 additions & 5 deletions client/git_user_remote_configs.go
Original file line number Diff line number Diff line change
Expand Up @@ -11,13 +11,11 @@ func NewGitUserRemoteConfigs() *GitUserRemoteConfigs {
}

func (configs *GitUserRemoteConfigs) Append(config *GitUserRemoteConfig) *GitUserRemoteConfigs {
var newConfigItems []*GitUserRemoteConfig
newConfigs := NewGitUserRemoteConfigs()
if configs.Items != nil {
newConfigItems = append(*configs.Items, config)
*newConfigs.Items = append(*configs.Items, config)
} else {
newConfigItems = append(newConfigItems, config)
*newConfigs.Items = []*GitUserRemoteConfig{config}
}
newConfigs := NewGitUserRemoteConfigs()
newConfigs.Items = &newConfigItems
return newConfigs
}
38 changes: 37 additions & 1 deletion client/job_gerrit_trigger.go
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,9 @@ import (
// ErrJobGerritTriggerProjectNotFound job gerrit trigger project not found
var ErrJobGerritTriggerProjectNotFound = errors.New("Could not find job gerrit trigger project")

// ErrJobGerritTriggerEventNotFound job gerrit trigger event not found
var ErrJobGerritTriggerEventNotFound = errors.New("Could not find job gerrit trigger event")

type JobGerritTrigger struct {
XMLName xml.Name `xml:"com.sonyericsson.hudson.plugins.gerrit.trigger.hudsontrigger.GerritTrigger"`
Id string `xml:"id,attr"`
Expand Down Expand Up @@ -51,7 +54,7 @@ func NewJobGerritTrigger() *JobGerritTrigger {
ChangeSubjectParameterMode: ParameterModePlain,
CommentTextParameterMode: ParameterModeBase64,
ServerName: "__ANY__",
TriggerOnEvents: &JobGerritTriggerOnEvents{},
TriggerOnEvents: NewJobGerritTriggerOnEvents(),
DynamicTriggerConfiguration: false,
}
}
Expand Down Expand Up @@ -89,3 +92,36 @@ func (trigger *JobGerritTrigger) DeleteProject(projectId string) error {
}
return ErrJobGerritTriggerProjectNotFound
}

func (trigger *JobGerritTrigger) GetEvent(eventId string) (JobGerritTriggerOnEvent, error) {
events := trigger.TriggerOnEvents.Items
for _, event := range *events {
if event.GetId() == eventId {
return event, nil
}
}
return nil, ErrJobGerritTriggerEventNotFound
}

func (trigger *JobGerritTrigger) UpdateEvent(event JobGerritTriggerOnEvent) error {
eventId := event.GetId()
events := *(trigger.TriggerOnEvents).Items
for i, e := range events {
if e.GetId() == eventId {
(*trigger.TriggerOnEvents.Items)[i] = event
return nil
}
}
return ErrJobGerritTriggerEventNotFound
}

func (trigger *JobGerritTrigger) DeleteEvent(eventId string) error {
events := *(trigger.TriggerOnEvents).Items
for i, e := range events {
if e.GetId() == eventId {
*trigger.TriggerOnEvents.Items = append(events[:i], events[i+1:]...)
return nil
}
}
return ErrJobGerritTriggerEventNotFound
}
10 changes: 4 additions & 6 deletions client/job_gerrit_trigger_branches.go
Original file line number Diff line number Diff line change
Expand Up @@ -10,14 +10,12 @@ func NewJobGerritTriggerBranches() *JobGerritTriggerBranches {
}
}

func (branches *JobGerritTriggerBranches) Append(project *JobGerritTriggerBranch) *JobGerritTriggerBranches {
var newBranchItems []*JobGerritTriggerBranch
func (branches *JobGerritTriggerBranches) Append(branch *JobGerritTriggerBranch) *JobGerritTriggerBranches {
newBranches := NewJobGerritTriggerBranches()
if branches.Items != nil {
newBranchItems = append(*branches.Items, project)
*newBranches.Items = append(*branches.Items, branch)
} else {
newBranchItems = append(newBranchItems, project)
*newBranches.Items = []*JobGerritTriggerBranch{branch}
}
newBranches := NewJobGerritTriggerBranches()
newBranches.Items = &newBranchItems
return newBranches
}
4 changes: 3 additions & 1 deletion client/job_gerrit_trigger_on_event.go
Original file line number Diff line number Diff line change
@@ -1,3 +1,5 @@
package client

type JobGerritTriggerOnEvent interface{}
type JobGerritTriggerOnEvent interface {
GetId() string
}
34 changes: 29 additions & 5 deletions client/job_gerrit_trigger_on_events.go
Original file line number Diff line number Diff line change
Expand Up @@ -16,13 +16,37 @@ func NewJobGerritTriggerOnEvents() *JobGerritTriggerOnEvents {
}

func (events *JobGerritTriggerOnEvents) Append(event JobGerritTriggerOnEvent) *JobGerritTriggerOnEvents {
var newEventItems []JobGerritTriggerOnEvent
newEvents := NewJobGerritTriggerOnEvents()
if events.Items != nil {
newEventItems = append(*events.Items, event)
*newEvents.Items = append(*events.Items, event)
} else {
newEventItems = append(newEventItems, event)
*newEvents.Items = []JobGerritTriggerOnEvent{event}
}
newEvents := NewJobGerritTriggerOnEvents()
newEvents.Items = &newEventItems
return newEvents
}

func (events *JobGerritTriggerOnEvents) UnmarshalXML(d *xml.Decoder, start xml.StartElement) error {
var tok xml.Token
var err error
events.Items = &[]JobGerritTriggerOnEvent{}
for tok, err = d.Token(); err == nil; tok, err = d.Token() {
if elem, ok := tok.(xml.StartElement); ok {
// TODO use map
switch elem.Name.Local {
case "com.sonyericsson.hudson.plugins.gerrit.trigger.hudsontrigger.events.PluginDraftPublishedEvent":
event := NewJobGerritTriggerPluginDraftPublishedEvent()
err := d.DecodeElement(event, &elem)
if err != nil {
return err
}
*events.Items = append(*events.Items, event)
}
}
if end, ok := tok.(xml.EndElement); ok {
if end.Name.Local == "triggerOnEvents" {
break
}
}
}
return err
}
5 changes: 5 additions & 0 deletions client/job_gerrit_trigger_plugin_draft_published_event.go
Original file line number Diff line number Diff line change
Expand Up @@ -4,8 +4,13 @@ import "encoding/xml"

type JobGerritTriggerPluginDraftPublishedEvent struct {
XMLName xml.Name `xml:"com.sonyericsson.hudson.plugins.gerrit.trigger.hudsontrigger.events.PluginDraftPublishedEvent"`
Id string `xml:"id,attr"`
}

func NewJobGerritTriggerPluginDraftPublishedEvent() *JobGerritTriggerPluginDraftPublishedEvent {
return &JobGerritTriggerPluginDraftPublishedEvent{}
}

func (event *JobGerritTriggerPluginDraftPublishedEvent) GetId() string {
return event.Id
}
5 changes: 5 additions & 0 deletions client/job_gerrit_trigger_plugin_patchset_created_event.go
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@ import "encoding/xml"

type JobGerritTriggerPluginPatchsetCreatedEvent struct {
XMLName xml.Name `xml:"com.sonyericsson.hudson.plugins.gerrit.trigger.hudsontrigger.events.PluginPatchsetCreatedEvent"`
Id string `xml:"id,attr"`

ExcludeDrafts bool `xml:"excludeDrafts"`
ExcludeTrivialRebase bool `xml:"excludeTrivialRebase"`
Expand All @@ -21,3 +22,7 @@ func NewJobGerritTriggerPluginPatchsetCreatedEvent() *JobGerritTriggerPluginPatc
ExcludeWipState: false,
}
}

func (event *JobGerritTriggerPluginPatchsetCreatedEvent) GetId() string {
return event.Id
}
8 changes: 3 additions & 5 deletions client/job_properties.go
Original file line number Diff line number Diff line change
Expand Up @@ -16,14 +16,12 @@ func NewJobProperties() *JobProperties {
}

func (properties *JobProperties) Append(property JobProperty) *JobProperties {
var newPropertyItems []JobProperty
newProperties := NewJobProperties()
if properties.Items != nil {
newPropertyItems = append(*properties.Items, property)
*newProperties.Items = append(*properties.Items, property)
} else {
newPropertyItems = append(newPropertyItems, property)
*newProperties.Items = []JobProperty{property}
}
newProperties := NewJobProperties()
newProperties.Items = &newPropertyItems
return newProperties
}

Expand Down
10 changes: 5 additions & 5 deletions client/job_service_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -35,12 +35,12 @@ func TestGetJobDetails(t *testing.T) {
if job.Description != "" {
t.Fatalf("Job description should be %v, was %v", "", job.Description)
}
var properties = *(job.Properties).Items
properties := *(job.Properties).Items
if len(properties) != 1 {
t.Fatalf("Job should have %v properties, was %v", 1, len(properties))
}
var pipelineProperties = *properties[0].(*JobPipelineTriggersProperty)
var triggers = *pipelineProperties.Triggers
pipelineProperties := *properties[0].(*JobPipelineTriggersProperty)
triggers := *pipelineProperties.Triggers
if len(*triggers.Items) != 1 {
t.Fatalf("Job should have %v triggers, was %v", 1, len(*triggers.Items))
}
Expand All @@ -51,7 +51,7 @@ func TestGetJobDetails(t *testing.T) {
if gerritTrigger.ServerName != "gerrit.instructure.com" {
t.Fatalf("Job Trigger ServerName should be %v, was %v", "gerrit.instructure.com", gerritTrigger.ServerName)
}
var projects = *(gerritTrigger.Projects).Items
projects := *(gerritTrigger.Projects).Items
if len(projects) != 1 {
t.Fatalf("Job should have %v trigger gerrit projects, was %v", 1, len(projects))
}
Expand All @@ -62,7 +62,7 @@ func TestGetJobDetails(t *testing.T) {
if gerritProject.Pattern != "bridge-career-infrastructure" {
t.Fatalf("Job should have gerrit project pattern %v, was %v", "bridge-career-infrastructure", gerritProject.Pattern)
}
var branches = *(gerritProject.Branches).Items
branches := *(gerritProject.Branches).Items
if len(branches) != 1 {
t.Fatalf("Job should have %v trigger gerrit branches, was %v", 1, len(branches))
}
Expand Down
11 changes: 11 additions & 0 deletions provider/compare_resource_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -15,3 +15,14 @@ func testCompareResourceInt(className string, fieldName string, expectedValue st
}
return nil
}

func testCompareResourceBool(className string, fieldName string, expectedValue string, actualValue bool) error {
expectedBool, err := strconv.ParseBool(expectedValue)
if err != nil {
return err
}
if expectedBool != actualValue {
return fmt.Errorf("%v %v should be %v, was %v", className, fieldName, expectedValue, actualValue)
}
return nil
}
2 changes: 1 addition & 1 deletion provider/job_gerrit_project_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -112,7 +112,7 @@ func ensureProject(trigger *client.JobGerritTrigger, resource *terraform.Resourc
}
if project.Pattern != resource.Primary.Attributes["pattern"] {
return nil, fmt.Errorf("expected pattern %s, got %s",
resource.Primary.Attributes["pattern"], project.Pattern)
resource.Primary.Attributes["pattern"], project.Pattern)
}

return project, nil
Expand Down
21 changes: 9 additions & 12 deletions provider/job_gerrit_trigger_draft_published_event.go
Original file line number Diff line number Diff line change
Expand Up @@ -6,25 +6,22 @@ import (
)

type jobGerritTriggerDraftPublishedEvent struct {
Job string `mapstructure:"job"`
Trigger string `mapstructure:"trigger"`
}

func newJobGerritTriggerDraftPublishedEvent() *jobGerritTriggerDraftPublishedEvent {
return &jobGerritTriggerDraftPublishedEvent{}
}

func (branch *jobGerritTriggerDraftPublishedEvent) toClientExtension() *client.GitScmBranchSpec {
return &client.GitScmBranchSpec{
// TODO
// Id: branch.RefId,
}
func (event *jobGerritTriggerDraftPublishedEvent) fromClientJobTriggerEvent(clientEvent client.JobGerritTriggerOnEvent) jobGerritTriggerEvent {
return newJobGerritTriggerDraftPublishedEvent()
}

func (config *jobGerritTriggerDraftPublishedEvent) setResourceData(d *schema.ResourceData) error {
// if err := d.Set("name", config.Name); err != nil {
// return err
// }
func (event *jobGerritTriggerDraftPublishedEvent) toClientJobTriggerEvent(eventId string) (client.JobGerritTriggerOnEvent, error) {
clientEvent := client.NewJobGerritTriggerPluginDraftPublishedEvent()
clientEvent.Id = eventId
return clientEvent, nil
}

func (event *jobGerritTriggerDraftPublishedEvent) setResourceData(d *schema.ResourceData) error {
return nil
// return d.Set("credentials_id", config.CredentialsId)
}
Loading

0 comments on commit 50bf38b

Please sign in to comment.