Merge pull request #78 from mwielgus/zero-9

Handle custom machine types in GCE cloud provider
This commit is contained in:
Marcin Wielgus 2017-05-18 16:38:30 +02:00 committed by GitHub
commit 0d8bd3d5e7
3 changed files with 41 additions and 6 deletions

View File

@ -281,7 +281,7 @@ func buildKubeProxy(mig *Mig) *apiv1.Pod {
Resources: apiv1.ResourceRequirements{ Resources: apiv1.ResourceRequirements{
Requests: apiv1.ResourceList{ Requests: apiv1.ResourceList{
apiv1.ResourceCPU: *resource.NewMilliQuantity( apiv1.ResourceCPU: *resource.NewMilliQuantity(
int64(100), int64(KubeProxyCpuRequestMillis),
resource.DecimalSI), resource.DecimalSI),
}, },
}, },

View File

@ -305,12 +305,21 @@ func (m *GceManager) buildNodeFromTemplate(mig *Mig, template *gce.InstanceTempl
// TODO: handle custom !!!! // TODO: handle custom !!!!
// TODO: handle GPU // TODO: handle GPU
machineType, err := m.service.MachineTypes.Get(mig.Project, mig.Zone, template.Properties.MachineType).Do() if strings.HasPrefix(template.Properties.MachineType, "custom-") {
if err != nil { cpu, mem, err := parseCustomMachineType(template.Properties.MachineType)
return nil, err if err != nil {
return nil, err
}
node.Status.Capacity[apiv1.ResourceCPU] = *resource.NewQuantity(cpu, resource.DecimalSI)
node.Status.Capacity[apiv1.ResourceMemory] = *resource.NewQuantity(mem, resource.DecimalSI)
} else {
machineType, err := m.service.MachineTypes.Get(mig.Project, mig.Zone, template.Properties.MachineType).Do()
if err != nil {
return nil, err
}
node.Status.Capacity[apiv1.ResourceCPU] = *resource.NewQuantity(machineType.GuestCpus, resource.DecimalSI)
node.Status.Capacity[apiv1.ResourceMemory] = *resource.NewQuantity(machineType.MemoryMb*1024*1024, resource.DecimalSI)
} }
node.Status.Capacity[apiv1.ResourceCPU] = *resource.NewQuantity(machineType.GuestCpus, resource.DecimalSI)
node.Status.Capacity[apiv1.ResourceMemory] = *resource.NewQuantity(machineType.MemoryMb, resource.DecimalSI)
// TODO: use proper allocatable!! // TODO: use proper allocatable!!
node.Status.Allocatable = node.Status.Capacity node.Status.Allocatable = node.Status.Capacity
@ -367,6 +376,21 @@ func buildGenericLabels(ref GceRef, machineType string, nodeName string) (map[st
return result, nil return result, nil
} }
func parseCustomMachineType(machineType string) (cpu, mem int64, err error) {
// example custom-2-2816
var count int
count, err = fmt.Sscanf(machineType, "custom-%d-%d", &cpu, &mem)
if err != nil {
return
}
if count != 2 {
return 0, 0, fmt.Errorf("failed to parse all params in %s", machineType)
}
// Mb to bytes
mem = mem * 1024 * 1024
return
}
func buildReadyConditions() []apiv1.NodeCondition { func buildReadyConditions() []apiv1.NodeCondition {
lastTransition := time.Now().Add(-time.Minute) lastTransition := time.Now().Add(-time.Minute)
return []apiv1.NodeCondition{ return []apiv1.NodeCondition{

View File

@ -64,3 +64,14 @@ func TestBuildReadyConditions(t *testing.T) {
} }
assert.True(t, foundReady) assert.True(t, foundReady)
} }
func TestParseCustomMachineType(t *testing.T) {
cpu, mem, err := parseCustomMachineType("custom-2-2816")
assert.NoError(t, err)
assert.Equal(t, int64(2), cpu)
assert.Equal(t, int64(2816*1024*1024), mem)
cpu, mem, err = parseCustomMachineType("other-a2-2816")
assert.Error(t, err)
cpu, mem, err = parseCustomMachineType("other-2-2816")
assert.Error(t, err)
}