Skip to content

Commit

Permalink
add ensure id functionality to importer
Browse files Browse the repository at this point in the history
  • Loading branch information
jgramoll committed Aug 2, 2019
1 parent e80be59 commit c1ef766
Show file tree
Hide file tree
Showing 38 changed files with 394 additions and 23 deletions.
4 changes: 4 additions & 0 deletions client/cps_scm_flow_definition.go
Original file line number Diff line number Diff line change
Expand Up @@ -19,3 +19,7 @@ func NewCpsScmFlowDefinition() *CpsScmFlowDefinition {
func (d *CpsScmFlowDefinition) GetId() string {
return d.Id
}

func (d *CpsScmFlowDefinition) SetId(id string) {
d.Id = id
}
4 changes: 4 additions & 0 deletions client/git_scm_clean_before_checkout_extension.go
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,10 @@ func (e *GitScmCleanBeforeCheckoutExtension) GetId() string {
return e.Id
}

func (e *GitScmCleanBeforeCheckoutExtension) SetId(id string) {
e.Id = id
}

func unmarshalScmExtension(d *xml.Decoder, start xml.StartElement) (GitScmExtension, error) {
extension := NewGitScmCleanBeforeCheckoutExtension()
err := d.DecodeElement(extension, &start)
Expand Down
1 change: 1 addition & 0 deletions client/git_scm_extension.go
Original file line number Diff line number Diff line change
Expand Up @@ -2,4 +2,5 @@ package client

type GitScmExtension interface {
GetId() string
SetId(string)
}
1 change: 1 addition & 0 deletions client/job_action.go
Original file line number Diff line number Diff line change
Expand Up @@ -2,4 +2,5 @@ package client

type JobAction interface {
GetId() string
SetId(string)
}
8 changes: 6 additions & 2 deletions client/job_build_discarder_property.go
Original file line number Diff line number Diff line change
Expand Up @@ -19,8 +19,12 @@ func NewJobBuildDiscarderProperty() *JobBuildDiscarderProperty {
}
}

func (property *JobBuildDiscarderProperty) GetId() string {
return property.Id
func (p *JobBuildDiscarderProperty) GetId() string {
return p.Id
}

func (p *JobBuildDiscarderProperty) SetId(id string) {
p.Id = id
}

func unmarshalBuildDiscarderProperty(d *xml.Decoder, start xml.StartElement) (JobProperty, error) {
Expand Down
1 change: 1 addition & 0 deletions client/job_build_discarder_property_strategy.go
Original file line number Diff line number Diff line change
Expand Up @@ -2,4 +2,5 @@ package client

type JobBuildDiscarderPropertyStrategy interface {
GetId() string
SetId(string)
}
4 changes: 4 additions & 0 deletions client/job_build_discarder_property_strategy_log_rotator.go
Original file line number Diff line number Diff line change
Expand Up @@ -24,3 +24,7 @@ func NewJobBuildDiscarderPropertyStrategyLogRotator() *JobBuildDiscarderProperty
func (s *JobBuildDiscarderPropertyStrategyLogRotator) GetId() string {
return s.Id
}

func (s *JobBuildDiscarderPropertyStrategyLogRotator) SetId(id string) {
s.Id = id
}
1 change: 1 addition & 0 deletions client/job_build_discarder_property_strategy_xml.go
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,7 @@ func (strategy *JobBuildDiscarderPropertyStrategyXml) MarshalXML(e *xml.Encoder,

func (strategy *JobBuildDiscarderPropertyStrategyXml) UnmarshalXML(d *xml.Decoder, start xml.StartElement) error {
for _, attr := range start.Attr {
// TODO use map
switch attr.Name.Local {
case "class":
switch attr.Value {
Expand Down
4 changes: 4 additions & 0 deletions client/job_datadog_job_property.go
Original file line number Diff line number Diff line change
Expand Up @@ -26,6 +26,10 @@ func (property *JobDatadogJobProperty) GetId() string {
return property.Id
}

func (p *JobDatadogJobProperty) SetId(id string) {
p.Id = id
}

func unmarshalJobDatadogJobProperty(d *xml.Decoder, start xml.StartElement) (JobProperty, error) {
property := NewJobDatadogJobProperty()
err := d.DecodeElement(property, &start)
Expand Down
4 changes: 4 additions & 0 deletions client/job_declarative_job_action.go
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,10 @@ func (action *JobDeclarativeJobAction) GetId() string {
return action.Id
}

func (a *JobDeclarativeJobAction) SetId(id string) {
a.Id = id
}

func unmarshalDeclarativeJobAction(d *xml.Decoder, start xml.StartElement) (JobAction, error) {
action := NewJobDeclarativeJobAction()
err := d.DecodeElement(action, &start)
Expand Down
4 changes: 4 additions & 0 deletions client/job_declarative_job_property_tracker_action.go
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,10 @@ func (action *JobDeclarativeJobPropertyTrackerAction) GetId() string {
return action.Id
}

func (a *JobDeclarativeJobPropertyTrackerAction) SetId(id string) {
a.Id = id
}

func unmarshalDeclarativeJobPropertyTrackerAction(d *xml.Decoder, start xml.StartElement) (JobAction, error) {
action := NewJobDeclarativeJobPropertyTrackerAction()
err := d.DecodeElement(action, &start)
Expand Down
2 changes: 2 additions & 0 deletions client/job_definition.go
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@ type JobDefinitionXml struct {

type JobDefinition interface {
GetId() string
SetId(string)
}

func (jobDefinition *JobDefinitionXml) MarshalXML(e *xml.Encoder, start xml.StartElement) error {
Expand All @@ -19,6 +20,7 @@ func (jobDefinition *JobDefinitionXml) MarshalXML(e *xml.Encoder, start xml.Star

func (jobDefinition *JobDefinitionXml) UnmarshalXML(d *xml.Decoder, start xml.StartElement) error {
for _, attr := range start.Attr {
// TODO use map
switch attr.Name.Local {
case "class":
switch attr.Value {
Expand Down
4 changes: 4 additions & 0 deletions client/job_gerrit_trigger.go
Original file line number Diff line number Diff line change
Expand Up @@ -68,6 +68,10 @@ func (trigger *JobGerritTrigger) GetId() string {
return trigger.Id
}

func (t *JobGerritTrigger) SetId(id string) {
t.Id = id
}

func unmarshalJobGerritTrigger(d *xml.Decoder, start xml.StartElement) (JobTrigger, error) {
trigger := NewJobGerritTrigger()
err := d.DecodeElement(trigger, &start)
Expand Down
1 change: 1 addition & 0 deletions client/job_gerrit_trigger_on_event.go
Original file line number Diff line number Diff line change
Expand Up @@ -2,4 +2,5 @@ package client

type JobGerritTriggerOnEvent interface {
GetId() string
SetId(string)
}
4 changes: 4 additions & 0 deletions client/job_gerrit_trigger_plugin_draft_published_event.go
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,10 @@ func (event *JobGerritTriggerPluginDraftPublishedEvent) GetId() string {
return event.Id
}

func (e *JobGerritTriggerPluginDraftPublishedEvent) SetId(id string) {
e.Id = id
}

func unmarshalJobGerritTriggerPluginDraftPublishedEvent(d *xml.Decoder, start xml.StartElement) (JobGerritTriggerOnEvent, error) {
event := NewJobGerritTriggerPluginDraftPublishedEvent()
err := d.DecodeElement(event, &start)
Expand Down
4 changes: 4 additions & 0 deletions client/job_gerrit_trigger_plugin_patchset_created_event.go
Original file line number Diff line number Diff line change
Expand Up @@ -31,6 +31,10 @@ func (event *JobGerritTriggerPluginPatchsetCreatedEvent) GetId() string {
return event.Id
}

func (e *JobGerritTriggerPluginPatchsetCreatedEvent) SetId(id string) {
e.Id = id
}

func unmarshalJobGerritTriggerPluginPatchsetCreatedEvent(d *xml.Decoder, start xml.StartElement) (JobGerritTriggerOnEvent, error) {
event := NewJobGerritTriggerPluginPatchsetCreatedEvent()
err := d.DecodeElement(event, &start)
Expand Down
4 changes: 4 additions & 0 deletions client/job_jira_project_property.go
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,10 @@ func (property *JobJiraProjectProperty) GetId() string {
return property.Id
}

func (p *JobJiraProjectProperty) SetId(id string) {
p.Id = id
}

func unmarshalJobJiraProjectProperty(d *xml.Decoder, start xml.StartElement) (JobProperty, error) {
property := NewJobJiraProjectProperty()
err := d.DecodeElement(property, &start)
Expand Down
4 changes: 4 additions & 0 deletions client/job_pipeline_triggers_property.go
Original file line number Diff line number Diff line change
Expand Up @@ -28,6 +28,10 @@ func (property *JobPipelineTriggersProperty) GetId() string {
return property.Id
}

func (p *JobPipelineTriggersProperty) SetId(id string) {
p.Id = id
}

func unmarshalPipelineTriggersProperty(d *xml.Decoder, start xml.StartElement) (JobProperty, error) {
property := NewJobPipelineTriggersProperty()
err := d.DecodeElement(property, &start)
Expand Down
1 change: 1 addition & 0 deletions client/job_property.go
Original file line number Diff line number Diff line change
Expand Up @@ -2,4 +2,5 @@ package client

type JobProperty interface {
GetId() string
SetId(string)
}
1 change: 1 addition & 0 deletions client/job_trigger.go
Original file line number Diff line number Diff line change
Expand Up @@ -2,4 +2,5 @@ package client

type JobTrigger interface {
GetId() string
SetId(string)
}
23 changes: 3 additions & 20 deletions importer/ensure_resource_service.go
Original file line number Diff line number Diff line change
Expand Up @@ -23,32 +23,15 @@ func (s *EnsureJobResourceService) EnsureResourceIds(job *client.Job) error {
}
job.Id = id.String()
}
if err := ensureJobConfig(); err != nil {
if err := ensureJobActions(job.Actions); err != nil {
return err
}
if err := ensureJobActions(); err != nil {
if err := ensureJobProperties(job.Properties); err != nil {
return err
}
if err := ensureJobProperties(); err != nil {
return err
}
if err := ensureJobDefinition(); err != nil {
if err := ensureJobDefinition(job.Definition); err != nil {
return err
}

return s.jobService.UpdateJob(job)
// return nil
}

func ensureJobConfig() error {
return nil
}
func ensureJobActions() error {
return nil
}
func ensureJobProperties() error {
return nil
}
func ensureJobDefinition() error {
return nil
}
4 changes: 3 additions & 1 deletion importer/job_import_service.go
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,9 @@ func (s *JobImportService) Import(jobName string) error {
if err != nil {
return err
}
NewEnsureJobResourceService(s.jobService).EnsureResourceIds(job)
if err := NewEnsureJobResourceService(s.jobService).EnsureResourceIds(job); err != nil {
return err
}
// GenerateTerraformCodeService(s.jobService).Generate(job)
// GenerateTerraformImportScriptService(s.jobService).Generate(job)
return nil
Expand Down
23 changes: 23 additions & 0 deletions importer/resource_cps_scm_flow_definition.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
package main

import (
"github.com/jgramoll/terraform-provider-jenkins/client"
)

func init() {
ensureDefinitionFuncs["*client.CpsScmFlowDefinition"] = ensureCpsScmFlowDefinition
}

func ensureCpsScmFlowDefinition(definitionInterface client.JobDefinition) error {
definition := definitionInterface.(*client.CpsScmFlowDefinition)
if err := ensureGitUserRemoteConfigs(definition.SCM.UserRemoteConfigs); err != nil {
return err
}
if err := ensureGitScmBranches(definition.SCM.Branches); err != nil {
return err
}
if err := ensureGitScmSubmoduleConfig(definition.SCM.SubmoduleCfg); err != nil {
return err
}
return ensureGitScmExtensions(definition.SCM.Extensions)
}
32 changes: 32 additions & 0 deletions importer/resource_definition.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
package main

import (
"fmt"
"reflect"

"github.com/google/uuid"
"github.com/jgramoll/terraform-provider-jenkins/client"
)

type ensureDefinitionFunc func(client.JobDefinition) error

var ensureDefinitionFuncs = map[string]ensureDefinitionFunc{}

func ensureJobDefinition(definition client.JobDefinition) error {
if definition == nil {
return nil
}
if definition.GetId() == "" {
id, err := uuid.NewRandom()
if err != nil {
return err
}
definition.SetId(id.String())
}
reflectType := reflect.TypeOf(definition).String()
ensureFunc, ok := ensureDefinitionFuncs[reflectType]
if !ok {
return fmt.Errorf("Unknown Definition Type %s", reflectType)
}
return ensureFunc(definition)
}
22 changes: 22 additions & 0 deletions importer/resource_git_scm_branch.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
package main

import (
"github.com/google/uuid"
"github.com/jgramoll/terraform-provider-jenkins/client"
)

func ensureGitScmBranches(branches *client.GitScmBranches) error {
if branches == nil || branches.Items == nil {
return nil
}
for _, item := range *branches.Items {
if item.Id == "" {
id, err := uuid.NewRandom()
if err != nil {
return err
}
item.Id = id.String()
}
}
return nil
}
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
package main
22 changes: 22 additions & 0 deletions importer/resource_git_scm_extension.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
package main

import (
"github.com/google/uuid"
"github.com/jgramoll/terraform-provider-jenkins/client"
)

func ensureGitScmExtensions(extensions *client.GitScmExtensions) error {
if extensions == nil || extensions.Items == nil {
return nil
}
for _, item := range *extensions.Items {
if item.GetId() == "" {
id, err := uuid.NewRandom()
if err != nil {
return err
}
item.SetId(id.String())
}
}
return nil
}
9 changes: 9 additions & 0 deletions importer/resource_git_scm_submodule_config.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
package main

import (
"github.com/jgramoll/terraform-provider-jenkins/client"
)

func ensureGitScmSubmoduleConfig(branches *client.GitScmSubmodulesConfig) error {
return nil
}
22 changes: 22 additions & 0 deletions importer/resource_git_user_remote_config.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
package main

import (
"github.com/google/uuid"
"github.com/jgramoll/terraform-provider-jenkins/client"
)

func ensureGitUserRemoteConfigs(configs *client.GitUserRemoteConfigs) error {
if configs == nil || configs.Items == nil {
return nil
}
for _, item := range *configs.Items {
if item.Id == "" {
id, err := uuid.NewRandom()
if err != nil {
return err
}
item.Id = id.String()
}
}
return nil
}
22 changes: 22 additions & 0 deletions importer/resource_job_action.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
package main

import (
"github.com/google/uuid"
"github.com/jgramoll/terraform-provider-jenkins/client"
)

func ensureJobActions(actions *client.JobActions) error {
if actions == nil || actions.Items == nil {
return nil
}
for _, item := range *actions.Items {
if item.GetId() == "" {
id, err := uuid.NewRandom()
if err != nil {
return err
}
item.SetId(id.String())
}
}
return nil
}
1 change: 1 addition & 0 deletions importer/resource_job_declarative_job_action.go
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
package main
Loading

0 comments on commit c1ef766

Please sign in to comment.