Skip to content

Commit 7bece9c

Browse files
committed
Resolve merge conflicts for pod and cluster resources
- Merged PR #217 implementation with main branch - Used PR branch implementation for cluster and pod resources as it has better error handling and validation - Resolved conflicts in provider.go, resource files, test files, and documentation - All tests compile successfully
2 parents 9258f6c + 3021ce2 commit 7bece9c

30 files changed

+2158
-278
lines changed

cloudstack/data_source_cloudstack_physicalnetwork_test.go renamed to cloudstack/data_source_cloudstack_physical_network_test.go

Lines changed: 8 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -34,9 +34,9 @@ func TestAccDataSourceCloudStackPhysicalNetwork_basic(t *testing.T) {
3434
Config: testAccDataSourceCloudStackPhysicalNetwork_basic,
3535
Check: resource.ComposeTestCheckFunc(
3636
resource.TestCheckResourceAttr(
37-
"data.cloudstack_physicalnetwork.foo", "name", "terraform-physical-network"),
37+
"data.cloudstack_physical_network.foo", "name", "terraform-physical-network"),
3838
resource.TestCheckResourceAttr(
39-
"data.cloudstack_physicalnetwork.foo", "broadcast_domain_range", "ZONE"),
39+
"data.cloudstack_physical_network.foo", "broadcast_domain_range", "ZONE"),
4040
),
4141
},
4242
},
@@ -51,17 +51,18 @@ resource "cloudstack_zone" "foo" {
5151
network_type = "Advanced"
5252
}
5353
54-
resource "cloudstack_physicalnetwork" "foo" {
54+
resource "cloudstack_physical_network" "foo" {
5555
name = "terraform-physical-network"
56-
zone = cloudstack_zone.foo.name
56+
zone_id = cloudstack_zone.foo.id
5757
broadcast_domain_range = "ZONE"
5858
isolation_methods = ["VLAN"]
5959
}
6060
61-
data "cloudstack_physicalnetwork" "foo" {
61+
data "cloudstack_physical_network" "foo" {
6262
filter {
6363
name = "name"
6464
value = "terraform-physical-network"
6565
}
66-
depends_on = [cloudstack_physicalnetwork.foo]
67-
}`
66+
depends_on = [cloudstack_physical_network.foo]
67+
}
68+
`

cloudstack/provider.go

Lines changed: 49 additions & 45 deletions
Original file line numberDiff line numberDiff line change
@@ -91,56 +91,60 @@ func Provider() *schema.Provider {
9191
"cloudstack_vpn_connection": dataSourceCloudstackVPNConnection(),
9292
"cloudstack_pod": dataSourceCloudstackPod(),
9393
"cloudstack_domain": dataSourceCloudstackDomain(),
94-
"cloudstack_physicalnetwork": dataSourceCloudStackPhysicalNetwork(),
94+
"cloudstack_physical_network": dataSourceCloudStackPhysicalNetwork(),
9595
"cloudstack_role": dataSourceCloudstackRole(),
9696
"cloudstack_cluster": dataSourceCloudstackCluster(),
9797
},
9898

9999
ResourcesMap: map[string]*schema.Resource{
100-
"cloudstack_affinity_group": resourceCloudStackAffinityGroup(),
101-
"cloudstack_attach_volume": resourceCloudStackAttachVolume(),
102-
"cloudstack_autoscale_vm_profile": resourceCloudStackAutoScaleVMProfile(),
103-
"cloudstack_configuration": resourceCloudStackConfiguration(),
104-
"cloudstack_disk": resourceCloudStackDisk(),
105-
"cloudstack_egress_firewall": resourceCloudStackEgressFirewall(),
106-
"cloudstack_firewall": resourceCloudStackFirewall(),
107-
"cloudstack_host": resourceCloudStackHost(),
108-
"cloudstack_instance": resourceCloudStackInstance(),
109-
"cloudstack_ipaddress": resourceCloudStackIPAddress(),
110-
"cloudstack_kubernetes_cluster": resourceCloudStackKubernetesCluster(),
111-
"cloudstack_kubernetes_version": resourceCloudStackKubernetesVersion(),
112-
"cloudstack_loadbalancer_rule": resourceCloudStackLoadBalancerRule(),
113-
"cloudstack_network": resourceCloudStackNetwork(),
114-
"cloudstack_network_acl": resourceCloudStackNetworkACL(),
115-
"cloudstack_network_acl_rule": resourceCloudStackNetworkACLRule(),
116-
"cloudstack_nic": resourceCloudStackNIC(),
117-
"cloudstack_pod": resourceCloudStackPod(),
118-
"cloudstack_cluster": resourceCloudStackCluster(),
119-
"cloudstack_port_forward": resourceCloudStackPortForward(),
120-
"cloudstack_private_gateway": resourceCloudStackPrivateGateway(),
121-
"cloudstack_secondary_ipaddress": resourceCloudStackSecondaryIPAddress(),
122-
"cloudstack_security_group": resourceCloudStackSecurityGroup(),
123-
"cloudstack_security_group_rule": resourceCloudStackSecurityGroupRule(),
124-
"cloudstack_ssh_keypair": resourceCloudStackSSHKeyPair(),
125-
"cloudstack_static_nat": resourceCloudStackStaticNAT(),
126-
"cloudstack_static_route": resourceCloudStackStaticRoute(),
127-
"cloudstack_template": resourceCloudStackTemplate(),
128-
"cloudstack_vpc": resourceCloudStackVPC(),
129-
"cloudstack_vpn_connection": resourceCloudStackVPNConnection(),
130-
"cloudstack_vpn_customer_gateway": resourceCloudStackVPNCustomerGateway(),
131-
"cloudstack_vpn_gateway": resourceCloudStackVPNGateway(),
132-
"cloudstack_network_offering": resourceCloudStackNetworkOffering(),
133-
"cloudstack_disk_offering": resourceCloudStackDiskOffering(),
134-
"cloudstack_volume": resourceCloudStackVolume(),
135-
"cloudstack_zone": resourceCloudStackZone(),
136-
"cloudstack_service_offering": resourceCloudStackServiceOffering(),
137-
"cloudstack_account": resourceCloudStackAccount(),
138-
"cloudstack_user": resourceCloudStackUser(),
139-
"cloudstack_domain": resourceCloudStackDomain(),
140-
"cloudstack_physicalnetwork": resourceCloudStackPhysicalNetwork(),
141-
"cloudstack_traffic_type": resourceCloudStackTrafficType(),
142-
"cloudstack_network_service_provider": resourceCloudStackNetworkServiceProvider(),
143-
"cloudstack_role": resourceCloudStackRole(),
100+
"cloudstack_affinity_group": resourceCloudStackAffinityGroup(),
101+
"cloudstack_attach_volume": resourceCloudStackAttachVolume(),
102+
"cloudstack_autoscale_vm_profile": resourceCloudStackAutoScaleVMProfile(),
103+
"cloudstack_configuration": resourceCloudStackConfiguration(),
104+
"cloudstack_cluster": resourceCloudStackCluster(),
105+
"cloudstack_disk": resourceCloudStackDisk(),
106+
"cloudstack_egress_firewall": resourceCloudStackEgressFirewall(),
107+
"cloudstack_firewall": resourceCloudStackFirewall(),
108+
"cloudstack_host": resourceCloudStackHost(),
109+
"cloudstack_instance": resourceCloudStackInstance(),
110+
"cloudstack_ipaddress": resourceCloudStackIPAddress(),
111+
"cloudstack_kubernetes_cluster": resourceCloudStackKubernetesCluster(),
112+
"cloudstack_kubernetes_version": resourceCloudStackKubernetesVersion(),
113+
"cloudstack_loadbalancer_rule": resourceCloudStackLoadBalancerRule(),
114+
"cloudstack_network": resourceCloudStackNetwork(),
115+
"cloudstack_network_acl": resourceCloudStackNetworkACL(),
116+
"cloudstack_network_acl_rule": resourceCloudStackNetworkACLRule(),
117+
"cloudstack_nic": resourceCloudStackNIC(),
118+
"cloudstack_physical_network": resourceCloudStackPhysicalNetwork(),
119+
"cloudstack_pod": resourceCloudStackPod(),
120+
"cloudstack_port_forward": resourceCloudStackPortForward(),
121+
"cloudstack_network_service_provider_state": resourceCloudStackNetworkServiceProviderState(),
122+
"cloudstack_private_gateway": resourceCloudStackPrivateGateway(),
123+
"cloudstack_secondary_ipaddress": resourceCloudStackSecondaryIPAddress(),
124+
"cloudstack_secondary_storage": resourceCloudStackSecondaryStorage(),
125+
"cloudstack_security_group": resourceCloudStackSecurityGroup(),
126+
"cloudstack_security_group_rule": resourceCloudStackSecurityGroupRule(),
127+
"cloudstack_ssh_keypair": resourceCloudStackSSHKeyPair(),
128+
"cloudstack_static_nat": resourceCloudStackStaticNAT(),
129+
"cloudstack_static_route": resourceCloudStackStaticRoute(),
130+
"cloudstack_storage_pool": resourceCloudStackStoragePool(),
131+
"cloudstack_template": resourceCloudStackTemplate(),
132+
"cloudstack_traffic_type": resourceCloudStackTrafficType(),
133+
"cloudstack_vpc": resourceCloudStackVPC(),
134+
"cloudstack_vpn_connection": resourceCloudStackVPNConnection(),
135+
"cloudstack_vpn_customer_gateway": resourceCloudStackVPNCustomerGateway(),
136+
"cloudstack_vpn_gateway": resourceCloudStackVPNGateway(),
137+
"cloudstack_network_offering": resourceCloudStackNetworkOffering(),
138+
"cloudstack_disk_offering": resourceCloudStackDiskOffering(),
139+
"cloudstack_vlan_ip_range": resourceCloudstackVlanIpRange(),
140+
"cloudstack_volume": resourceCloudStackVolume(),
141+
"cloudstack_zone": resourceCloudStackZone(),
142+
"cloudstack_service_offering": resourceCloudStackServiceOffering(),
143+
"cloudstack_account": resourceCloudStackAccount(),
144+
"cloudstack_user": resourceCloudStackUser(),
145+
"cloudstack_domain": resourceCloudStackDomain(),
146+
"cloudstack_network_service_provider": resourceCloudStackNetworkServiceProvider(),
147+
"cloudstack_role": resourceCloudStackRole(),
144148
},
145149

146150
ConfigureFunc: providerConfigure,

cloudstack/resource_cloudstack_cluster.go

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -256,7 +256,6 @@ func resourceCloudStackClusterCreate(d *schema.ResourceData, meta interface{}) e
256256
return fmt.Errorf("Error creating Cluster %s: %s", name, err)
257257
}
258258

259-
// The response directly contains the cluster information
260259
d.SetId(r.Id)
261260

262261
return resourceCloudStackClusterRead(d, meta)

cloudstack/resource_cloudstack_kubernetes_cluster.go

Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -132,6 +132,25 @@ func resourceCloudStackKubernetesCluster() *schema.Resource {
132132
Optional: true,
133133
Default: 8,
134134
},
135+
136+
"docker_registry_url": {
137+
Type: schema.TypeString,
138+
Optional: true,
139+
ForceNew: true,
140+
},
141+
142+
"docker_registry_username": {
143+
Type: schema.TypeString,
144+
Optional: true,
145+
ForceNew: true,
146+
},
147+
148+
"docker_registry_password": {
149+
Type: schema.TypeString,
150+
Optional: true,
151+
ForceNew: true,
152+
Sensitive: true,
153+
},
135154
},
136155
}
137156
}
@@ -180,6 +199,15 @@ func resourceCloudStackKubernetesClusterCreate(d *schema.ResourceData, meta inte
180199
if noderootdisksize, ok := d.GetOk("noderootdisksize"); ok {
181200
p.SetNoderootdisksize(int64(noderootdisksize.(int)))
182201
}
202+
if dockerurl, ok := d.GetOk("docker_registry_url"); ok {
203+
p.SetDockerregistryurl(dockerurl.(string))
204+
}
205+
if dockerusername, ok := d.GetOk("docker_registry_username"); ok {
206+
p.SetDockerregistryusername(dockerusername.(string))
207+
}
208+
if dockerpassword, ok := d.GetOk("docker_registry_password"); ok {
209+
p.SetDockerregistrypassword(dockerpassword.(string))
210+
}
183211

184212
// If there is a project supplied, we retrieve and set the project id
185213
if err := setProjectid(p, cs, d); err != nil {
@@ -189,6 +217,13 @@ func resourceCloudStackKubernetesClusterCreate(d *schema.ResourceData, meta inte
189217
log.Printf("[DEBUG] Creating Kubernetes Cluster %s", name)
190218
r, err := cs.Kubernetes.CreateKubernetesCluster(p)
191219
if err != nil {
220+
cluster, _, errg := cs.Kubernetes.GetKubernetesClusterByName(
221+
name,
222+
cloudstack.WithProject(d.Get("project").(string)),
223+
)
224+
if errg == nil {
225+
d.SetId(cluster.Id)
226+
}
192227
return err
193228
}
194229

0 commit comments

Comments
 (0)