|
|
@@ -380,7 +380,7 @@ func (s serviceConfigAciHelper) getResourceRequestsLimits() (*containerinstance.
|
|
|
return s.Deploy != nil && s.Deploy.Resources.Reservations != nil && s.Deploy.Resources.Reservations.NanoCPUs != ""
|
|
|
}
|
|
|
if hasMemoryRequest() {
|
|
|
- memRequest = bytesToGb(s.Deploy.Resources.Reservations.MemoryBytes)
|
|
|
+ memRequest = BytesToGB(float64(s.Deploy.Resources.Reservations.MemoryBytes))
|
|
|
}
|
|
|
|
|
|
if hasCPURequest() {
|
|
|
@@ -393,7 +393,7 @@ func (s serviceConfigAciHelper) getResourceRequestsLimits() (*containerinstance.
|
|
|
cpuLimit := cpuRequest
|
|
|
if s.Deploy != nil && s.Deploy.Resources.Limits != nil {
|
|
|
if s.Deploy.Resources.Limits.MemoryBytes != 0 {
|
|
|
- memLimit = bytesToGb(s.Deploy.Resources.Limits.MemoryBytes)
|
|
|
+ memLimit = BytesToGB(float64(s.Deploy.Resources.Limits.MemoryBytes))
|
|
|
if !hasMemoryRequest() {
|
|
|
memRequest = memLimit
|
|
|
}
|
|
|
@@ -438,8 +438,9 @@ func getEnvVariables(composeEnv types.MappingWithEquals) *[]containerinstance.En
|
|
|
return &result
|
|
|
}
|
|
|
|
|
|
-func bytesToGb(b types.UnitBytes) float64 {
|
|
|
- f := float64(b) / 1024 / 1024 / 1024 // from bytes to gigabytes
|
|
|
+// BytesToGB convert bytes To GB
|
|
|
+func BytesToGB(b float64) float64 {
|
|
|
+ f := b / 1024 / 1024 / 1024 // from bytes to gigabytes
|
|
|
return math.Round(f*100) / 100
|
|
|
}
|
|
|
|
|
|
@@ -472,29 +473,6 @@ func fqdn(group containerinstance.ContainerGroup, region string) string {
|
|
|
|
|
|
// ContainerGroupToContainer composes a Container from an ACI container definition
|
|
|
func ContainerGroupToContainer(containerID string, cg containerinstance.ContainerGroup, cc containerinstance.Container, region string) containers.Container {
|
|
|
- memLimits := uint64(0)
|
|
|
- memRequest := uint64(0)
|
|
|
- cpuLimit := 0.
|
|
|
- cpuReservation := 0.
|
|
|
- if cc.Resources != nil {
|
|
|
- if cc.Resources.Limits != nil {
|
|
|
- if cc.Resources.Limits.MemoryInGB != nil {
|
|
|
- memLimits = gbToBytes(*cc.Resources.Limits.MemoryInGB)
|
|
|
- }
|
|
|
- if cc.Resources.Limits.CPU != nil {
|
|
|
- cpuLimit = *cc.Resources.Limits.CPU
|
|
|
- }
|
|
|
- }
|
|
|
- if cc.Resources.Requests != nil {
|
|
|
- if cc.Resources.Requests.MemoryInGB != nil {
|
|
|
- memRequest = gbToBytes(*cc.Resources.Requests.MemoryInGB)
|
|
|
- }
|
|
|
- if cc.Resources.Requests.CPU != nil {
|
|
|
- cpuReservation = *cc.Resources.Requests.CPU
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
command := ""
|
|
|
if cc.Command != nil {
|
|
|
command = strings.Join(*cc.Command, " ")
|
|
|
@@ -511,17 +489,11 @@ func ContainerGroupToContainer(containerID string, cg containerinstance.Containe
|
|
|
}
|
|
|
}
|
|
|
|
|
|
+ hostConfig := ToHostConfig(cc, cg)
|
|
|
config := &containers.RuntimeConfig{
|
|
|
FQDN: fqdn(cg, region),
|
|
|
Env: envVars,
|
|
|
}
|
|
|
- hostConfig := &containers.HostConfig{
|
|
|
- CPULimit: cpuLimit,
|
|
|
- CPUReservation: cpuReservation,
|
|
|
- MemoryLimit: memLimits,
|
|
|
- MemoryReservation: memRequest,
|
|
|
- RestartPolicy: toContainerRestartPolicy(cg.RestartPolicy),
|
|
|
- }
|
|
|
c := containers.Container{
|
|
|
ID: containerID,
|
|
|
Status: status,
|
|
|
@@ -540,6 +512,40 @@ func ContainerGroupToContainer(containerID string, cg containerinstance.Containe
|
|
|
return c
|
|
|
}
|
|
|
|
|
|
+// ToHostConfig convert an ACI container to host config value
|
|
|
+func ToHostConfig(cc containerinstance.Container, cg containerinstance.ContainerGroup) *containers.HostConfig {
|
|
|
+ memLimits := uint64(0)
|
|
|
+ memRequest := uint64(0)
|
|
|
+ cpuLimit := 0.
|
|
|
+ cpuReservation := 0.
|
|
|
+ if cc.Resources != nil {
|
|
|
+ if cc.Resources.Limits != nil {
|
|
|
+ if cc.Resources.Limits.MemoryInGB != nil {
|
|
|
+ memLimits = gbToBytes(*cc.Resources.Limits.MemoryInGB)
|
|
|
+ }
|
|
|
+ if cc.Resources.Limits.CPU != nil {
|
|
|
+ cpuLimit = *cc.Resources.Limits.CPU
|
|
|
+ }
|
|
|
+ }
|
|
|
+ if cc.Resources.Requests != nil {
|
|
|
+ if cc.Resources.Requests.MemoryInGB != nil {
|
|
|
+ memRequest = gbToBytes(*cc.Resources.Requests.MemoryInGB)
|
|
|
+ }
|
|
|
+ if cc.Resources.Requests.CPU != nil {
|
|
|
+ cpuReservation = *cc.Resources.Requests.CPU
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ hostConfig := &containers.HostConfig{
|
|
|
+ CPULimit: cpuLimit,
|
|
|
+ CPUReservation: cpuReservation,
|
|
|
+ MemoryLimit: memLimits,
|
|
|
+ MemoryReservation: memRequest,
|
|
|
+ RestartPolicy: toContainerRestartPolicy(cg.RestartPolicy),
|
|
|
+ }
|
|
|
+ return hostConfig
|
|
|
+}
|
|
|
+
|
|
|
// GetStatus returns status for the specified container
|
|
|
func GetStatus(container containerinstance.Container, group containerinstance.ContainerGroup) string {
|
|
|
status := GetGroupStatus(group)
|