Ensure map is initialized before assignment
Attempts to write to a nil map will cause a runtime panic, since we don't have explicit checks whether the map is nil or not - they were added with proper initialization using make. Appropriate test configuration was added. Change-Id: Ib50686de44b782fdc881bd4608dd74588fce93bd Relates-To: #190 Closes: #190
This commit is contained in:
parent
7d18489bc9
commit
90f80d55b9
@ -180,6 +180,10 @@ func (c *Config) reconcileClusters() (map[string]string, bool) {
|
|||||||
c.Clusters[clusterComplexName.Name] = NewClusterPurpose()
|
c.Clusters[clusterComplexName.Name] = NewClusterPurpose()
|
||||||
}
|
}
|
||||||
if c.Clusters[clusterComplexName.Name].ClusterTypes[clusterComplexName.Type] == nil {
|
if c.Clusters[clusterComplexName.Name].ClusterTypes[clusterComplexName.Type] == nil {
|
||||||
|
// We have to make sure that ClusterTypes map is initialized properly before assignment
|
||||||
|
if c.Clusters[clusterComplexName.Name].ClusterTypes == nil {
|
||||||
|
c.Clusters[clusterComplexName.Name].ClusterTypes = make(map[string]*Cluster)
|
||||||
|
}
|
||||||
c.Clusters[clusterComplexName.Name].ClusterTypes[clusterComplexName.Type] = NewCluster()
|
c.Clusters[clusterComplexName.Name].ClusterTypes[clusterComplexName.Type] = NewCluster()
|
||||||
}
|
}
|
||||||
configCluster := c.Clusters[clusterComplexName.Name].ClusterTypes[clusterComplexName.Type]
|
configCluster := c.Clusters[clusterComplexName.Name].ClusterTypes[clusterComplexName.Type]
|
||||||
|
@ -117,7 +117,7 @@ func TestLoadConfig(t *testing.T) {
|
|||||||
conf, cleanup := testutil.InitConfig(t)
|
conf, cleanup := testutil.InitConfig(t)
|
||||||
defer cleanup(t)
|
defer cleanup(t)
|
||||||
|
|
||||||
assert.Len(t, conf.Clusters, 5)
|
assert.Len(t, conf.Clusters, 6)
|
||||||
require.Contains(t, conf.Clusters, "def")
|
require.Contains(t, conf.Clusters, "def")
|
||||||
assert.Len(t, conf.Clusters["def"].ClusterTypes, 2)
|
assert.Len(t, conf.Clusters["def"].ClusterTypes, 2)
|
||||||
assert.Len(t, conf.Contexts, 3)
|
assert.Len(t, conf.Contexts, 3)
|
||||||
@ -345,7 +345,7 @@ func TestGetClusters(t *testing.T) {
|
|||||||
defer cleanup(t)
|
defer cleanup(t)
|
||||||
|
|
||||||
clusters := conf.GetClusters()
|
clusters := conf.GetClusters()
|
||||||
assert.Len(t, clusters, 5)
|
assert.Len(t, clusters, 6)
|
||||||
}
|
}
|
||||||
|
|
||||||
func TestGetContexts(t *testing.T) {
|
func TestGetContexts(t *testing.T) {
|
||||||
@ -673,7 +673,7 @@ users:
|
|||||||
// Verify that only 3 clusters have been added (original 5 plus 3 new clusters)
|
// Verify that only 3 clusters have been added (original 5 plus 3 new clusters)
|
||||||
// This is important since the above kubeconfig actually has 4
|
// This is important since the above kubeconfig actually has 4
|
||||||
// clusters, but one was already defined in the airship config
|
// clusters, but one was already defined in the airship config
|
||||||
assert.Len(t, conf.Clusters, 5+3)
|
assert.Len(t, conf.Clusters, 6+3)
|
||||||
|
|
||||||
// verify that the new clusters have been added to the config
|
// verify that the new clusters have been added to the config
|
||||||
_, err := conf.GetCluster("cluster", config.Target)
|
_, err := conf.GetCluster("cluster", config.Target)
|
||||||
|
@ -291,6 +291,8 @@ clusters:
|
|||||||
target:
|
target:
|
||||||
bootstrapInfo: ""
|
bootstrapInfo: ""
|
||||||
clusterKubeconf: wrongonlyinkubeconf_target
|
clusterKubeconf: wrongonlyinkubeconf_target
|
||||||
|
clustertypenil:
|
||||||
|
clusterType: null
|
||||||
contexts:
|
contexts:
|
||||||
def_ephemeral:
|
def_ephemeral:
|
||||||
contextKubeconf: def_ephemeral
|
contextKubeconf: def_ephemeral
|
||||||
@ -329,6 +331,10 @@ clusters:
|
|||||||
insecure-skip-tls-verify: true
|
insecure-skip-tls-verify: true
|
||||||
server: http://9.10.11.12
|
server: http://9.10.11.12
|
||||||
name: invalidName
|
name: invalidName
|
||||||
|
- cluster:
|
||||||
|
insecure-skip-tls-verify: true
|
||||||
|
server: http://9.10.11.12
|
||||||
|
name: clustertypenil_target
|
||||||
contexts:
|
contexts:
|
||||||
- context:
|
- context:
|
||||||
cluster: def_ephemeral
|
cluster: def_ephemeral
|
||||||
|
Loading…
x
Reference in New Issue
Block a user