forked from LaconicNetwork/kompose
fix(v3): Added network name normalization in v3 parsing
This commit is contained in:
parent
b796ec0222
commit
734b88e102
@ -439,7 +439,9 @@ func dockerComposeToKomposeMapping(composeObject *types.Config) (kobject.Kompose
|
|||||||
serviceConfig.StopGracePeriod = composeServiceConfig.StopGracePeriod.String()
|
serviceConfig.StopGracePeriod = composeServiceConfig.StopGracePeriod.String()
|
||||||
}
|
}
|
||||||
|
|
||||||
parseV3Network(&composeServiceConfig, &serviceConfig, composeObject)
|
if err := parseV3Network(&composeServiceConfig, &serviceConfig, composeObject); err != nil {
|
||||||
|
return kobject.KomposeObject{}, err
|
||||||
|
}
|
||||||
|
|
||||||
if err := parseV3Resources(&composeServiceConfig, &serviceConfig); err != nil {
|
if err := parseV3Resources(&composeServiceConfig, &serviceConfig); err != nil {
|
||||||
return kobject.KomposeObject{}, err
|
return kobject.KomposeObject{}, err
|
||||||
@ -556,24 +558,37 @@ func resolveV3Context(inFile string, context string) string {
|
|||||||
return current
|
return current
|
||||||
}
|
}
|
||||||
|
|
||||||
func parseV3Network(composeServiceConfig *types.ServiceConfig, serviceConfig *kobject.ServiceConfig, composeObject *types.Config) {
|
func parseV3Network(composeServiceConfig *types.ServiceConfig, serviceConfig *kobject.ServiceConfig, composeObject *types.Config) error {
|
||||||
if len(composeServiceConfig.Networks) == 0 {
|
if len(composeServiceConfig.Networks) == 0 {
|
||||||
if defaultNetwork, ok := composeObject.Networks["default"]; ok {
|
if defaultNetwork, ok := composeObject.Networks["default"]; ok {
|
||||||
serviceConfig.Network = append(serviceConfig.Network, defaultNetwork.Name)
|
normalizedNetworkName, err := normalizeNetworkNames(defaultNetwork.Name)
|
||||||
|
if err != nil {
|
||||||
|
return errors.Wrap(err, "Unable to normalize network name")
|
||||||
|
}
|
||||||
|
serviceConfig.Network = append(serviceConfig.Network, normalizedNetworkName)
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
var alias = ""
|
var alias = ""
|
||||||
for key := range composeServiceConfig.Networks {
|
for key := range composeServiceConfig.Networks {
|
||||||
alias = key
|
alias = key
|
||||||
netName := composeObject.Networks[alias].Name
|
netName := composeObject.Networks[alias].Name
|
||||||
|
|
||||||
// if Network Name Field is empty in the docker-compose definition
|
// if Network Name Field is empty in the docker-compose definition
|
||||||
// we will use the alias name defined in service config file
|
// we will use the alias name defined in service config file
|
||||||
if netName == "" {
|
if netName == "" {
|
||||||
netName = alias
|
netName = alias
|
||||||
}
|
}
|
||||||
serviceConfig.Network = append(serviceConfig.Network, netName)
|
|
||||||
|
normalizedNetworkName, err := normalizeNetworkNames(netName)
|
||||||
|
if err != nil {
|
||||||
|
return errors.Wrap(err, "Unable to normalize network name")
|
||||||
|
}
|
||||||
|
|
||||||
|
serviceConfig.Network = append(serviceConfig.Network, normalizedNetworkName)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func parseV3Resources(composeServiceConfig *types.ServiceConfig, serviceConfig *kobject.ServiceConfig) error {
|
func parseV3Resources(composeServiceConfig *types.ServiceConfig, serviceConfig *kobject.ServiceConfig) error {
|
||||||
|
|||||||
@ -17,7 +17,9 @@ services:
|
|||||||
networks:
|
networks:
|
||||||
app: {}
|
app: {}
|
||||||
web: {}
|
web: {}
|
||||||
|
normalized_network: {}
|
||||||
networks:
|
networks:
|
||||||
|
normalized_network:
|
||||||
app:
|
app:
|
||||||
external:
|
external:
|
||||||
name: app-network
|
name: app-network
|
||||||
|
|||||||
29
script/test/fixtures/v3.0/output-k8s.json
vendored
29
script/test/fixtures/v3.0/output-k8s.json
vendored
@ -55,6 +55,7 @@
|
|||||||
"creationTimestamp": null,
|
"creationTimestamp": null,
|
||||||
"labels": {
|
"labels": {
|
||||||
"io.kompose.network/app-network": "true",
|
"io.kompose.network/app-network": "true",
|
||||||
|
"io.kompose.network/normalized-network": "true",
|
||||||
"io.kompose.network/web-network": "true",
|
"io.kompose.network/web-network": "true",
|
||||||
"io.kompose.service": "foo"
|
"io.kompose.service": "foo"
|
||||||
}
|
}
|
||||||
@ -107,6 +108,34 @@
|
|||||||
]
|
]
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
"kind": "NetworkPolicy",
|
||||||
|
"apiVersion": "networking.k8s.io/v1",
|
||||||
|
"metadata": {
|
||||||
|
"name": "normalized-network",
|
||||||
|
"creationTimestamp": null
|
||||||
|
},
|
||||||
|
"spec": {
|
||||||
|
"podSelector": {
|
||||||
|
"matchLabels": {
|
||||||
|
"io.kompose.network/normalized-network": "true"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"ingress": [
|
||||||
|
{
|
||||||
|
"from": [
|
||||||
|
{
|
||||||
|
"podSelector": {
|
||||||
|
"matchLabels": {
|
||||||
|
"io.kompose.network/normalized-network": "true"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"kind": "NetworkPolicy",
|
"kind": "NetworkPolicy",
|
||||||
"apiVersion": "networking.k8s.io/v1",
|
"apiVersion": "networking.k8s.io/v1",
|
||||||
|
|||||||
1
script/test/fixtures/v3.0/output-os.json
vendored
1
script/test/fixtures/v3.0/output-os.json
vendored
@ -75,6 +75,7 @@
|
|||||||
"creationTimestamp": null,
|
"creationTimestamp": null,
|
||||||
"labels": {
|
"labels": {
|
||||||
"io.kompose.network/app-network": "true",
|
"io.kompose.network/app-network": "true",
|
||||||
|
"io.kompose.network/normalized-network": "true",
|
||||||
"io.kompose.network/web-network": "true",
|
"io.kompose.network/web-network": "true",
|
||||||
"io.kompose.service": "foo"
|
"io.kompose.service": "foo"
|
||||||
}
|
}
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user