github.com/GoogleCloudPlatform/terraformer@v0.8.18/providers/octopusdeploy/generic_resources.go (about) 1 package octopusdeploy 2 3 import ( 4 "strings" 5 6 "github.com/GoogleCloudPlatform/terraformer/terraformutils" 7 "github.com/OctopusDeploy/go-octopusdeploy/octopusdeploy" 8 ) 9 10 type GenericGenerator struct { 11 OctopusDeployService 12 APIService string 13 } 14 15 // InitResources initialize the process to generate the Terraform resources from the 16 // Octopus Deploy API. 17 func (g *GenericGenerator) InitResources() error { 18 client, err := g.Client() 19 if err != nil { 20 return err 21 } 22 23 funcs := []func(*octopusdeploy.Client) error{ 24 g.createResources, 25 } 26 27 for _, f := range funcs { 28 err := f(client) 29 if err != nil { 30 return err 31 } 32 } 33 34 return nil 35 } 36 37 func (g *GenericGenerator) createResources(client *octopusdeploy.Client) error { 38 switch strings.ToLower(g.APIService) { 39 case "accounts": 40 resources, err := client.Account.GetAll() 41 if err != nil { 42 return err 43 } 44 45 for _, ressource := range *resources { 46 g.Resources = append(g.Resources, terraformutils.NewSimpleResource( 47 ressource.ID, 48 ressource.Name, 49 "octopusdeploy_account", 50 g.ProviderName, 51 []string{}, 52 )) 53 } 54 case "certificates": 55 resources, err := client.Certificate.GetAll() 56 if err != nil { 57 return err 58 } 59 60 for _, ressource := range *resources { 61 g.Resources = append(g.Resources, terraformutils.NewSimpleResource( 62 ressource.ID, 63 ressource.Name, 64 "octopusdeploy_certificate", 65 g.ProviderName, 66 []string{}, 67 )) 68 } 69 // case "channels": 70 // TODO: Somehow there is an issue with the channels: 71 // 2020/02/24 16:35:55 octopusdeploy importing... channels 72 // 2020/02/24 16:35:55 cannot find the item 73 74 // resources, err := client.Channel.GetAll() 75 // if err != nil { 76 // return err 77 // } 78 79 // for _, ressource := range *resources { 80 // g.Resources = append(g.Resources, terraformutils.NewSimpleResource( 81 // ressource.ID, 82 // ressource.Name 83 // "octopusdeploy_channel", 84 // g.ProviderName, 85 // []string{}, 86 // )) 87 // } 88 case "environments": 89 resources, err := client.Environment.GetAll() 90 if err != nil { 91 return err 92 } 93 94 for _, ressource := range *resources { 95 g.Resources = append(g.Resources, terraformutils.NewSimpleResource( 96 ressource.ID, 97 ressource.Name, 98 "octopusdeploy_environment", 99 g.ProviderName, 100 []string{}, 101 )) 102 } 103 case "feeds": 104 resources, err := client.Feed.GetAll() 105 if err != nil { 106 return err 107 } 108 109 for _, ressource := range *resources { 110 g.Resources = append(g.Resources, terraformutils.NewSimpleResource( 111 ressource.ID, 112 ressource.Name, 113 "octopusdeploy_feed", 114 g.ProviderName, 115 []string{}, 116 )) 117 } 118 case "libraryvariablesets": 119 resources, err := client.LibraryVariableSet.GetAll() 120 if err != nil { 121 return err 122 } 123 124 for _, ressource := range *resources { 125 g.Resources = append(g.Resources, terraformutils.NewSimpleResource( 126 ressource.ID, 127 ressource.Name, 128 "octopusdeploy_library_variable_set", 129 g.ProviderName, 130 []string{}, 131 )) 132 } 133 case "lifecycles": 134 resources, err := client.Lifecycle.GetAll() 135 if err != nil { 136 return err 137 } 138 139 for _, ressource := range *resources { 140 g.Resources = append(g.Resources, terraformutils.NewSimpleResource( 141 ressource.ID, 142 ressource.Name, 143 "octopusdeploy_lifecycle", 144 g.ProviderName, 145 []string{}, 146 )) 147 } 148 case "projects": 149 resources, err := client.Project.GetAll() 150 if err != nil { 151 return err 152 } 153 154 for _, ressource := range *resources { 155 g.Resources = append(g.Resources, terraformutils.NewSimpleResource( 156 ressource.ID, 157 ressource.Name, 158 "octopusdeploy_project", 159 g.ProviderName, 160 []string{}, 161 )) 162 } 163 case "projectgroups": 164 resources, err := client.ProjectGroup.GetAll() 165 if err != nil { 166 return err 167 } 168 169 for _, ressource := range *resources { 170 g.Resources = append(g.Resources, terraformutils.NewSimpleResource( 171 ressource.ID, 172 ressource.Name, 173 "octopusdeploy_project_group", 174 g.ProviderName, 175 []string{}, 176 )) 177 } 178 case "projecttriggers": 179 resources, err := client.ProjectTrigger.GetAll() 180 if err != nil { 181 return err 182 } 183 184 for _, ressource := range *resources { 185 g.Resources = append(g.Resources, terraformutils.NewSimpleResource( 186 ressource.ID, 187 ressource.Name, 188 "octopusdeploy_project_deployment_target_trigger", 189 g.ProviderName, 190 []string{}, 191 )) 192 } 193 case "tagsets": 194 resources, err := client.TagSet.GetAll() 195 if err != nil { 196 return err 197 } 198 199 for _, ressource := range *resources { 200 g.Resources = append(g.Resources, terraformutils.NewSimpleResource( 201 ressource.ID, 202 ressource.Name, 203 "octopusdeploy_tag_set", 204 g.ProviderName, 205 []string{}, 206 )) 207 } 208 // case "variables": 209 // TODO: This cannot generate a `variables.tf` file as there is already one. 210 211 // projects, err := client.Project.GetAll() 212 // if err != nil { 213 // return err 214 // } 215 216 // for _, project := range *projects { 217 // // Variable.GetAll() returns all the variables for a specific project ID. 218 // resources, err := client.Variable.GetAll(project.ID) 219 // if err != nil { 220 // return err 221 // } 222 223 // for _, ressource := range resources.Variables { 224 // g.Resources = append(g.Resources, terraformutils.NewSimpleResource( 225 // ressource.ID, 226 // ressource.Name 227 // "octopusdeploy_variable", 228 // g.ProviderName, 229 // []string{}, 230 // )) 231 // } 232 // } 233 } 234 235 return nil 236 }