Merge pull request #5256 from jwcesign/fix-tags-resolve

huawei-cloudprovider:enable tags resolve for as
This commit is contained in:
Kubernetes Prow Robot 2022-10-20 05:36:57 -07:00 committed by GitHub
commit 5298d55fae
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
1 changed files with 41 additions and 3 deletions

View File

@ -502,6 +502,34 @@ func (csm *cloudServiceManager) getScalingGroupByID(groupID string) (*huaweiclou
return response.ScalingGroup, nil
}
func (csm *cloudServiceManager) listScalingTagsByID(groupID string) (map[string]string, error) {
asClient := csm.getASClientFunc()
opts := &huaweicloudsdkasmodel.ListScalingTagInfosByResourceIdRequest{
ResourceType: huaweicloudsdkasmodel.GetListScalingTagInfosByResourceIdRequestResourceTypeEnum().SCALING_GROUP_TAG,
ResourceId: groupID,
}
response, err := asClient.ListScalingTagInfosByResourceId(opts)
if err != nil {
klog.Errorf("failed to list scaling group tags. scaling group id: %s, error: %v", groupID, err)
return nil, err
}
if response == nil || response.Tags == nil {
klog.Infof("Not tags found for scaling group by id:%s", groupID)
return nil, nil
}
tags := make(map[string]string)
for _, tag := range *response.Tags {
if tag.Value != nil {
tags[tag.Key] = *tag.Value
continue
}
tags[tag.Key] = ""
}
return tags, nil
}
func (csm *cloudServiceManager) getScalingGroupConfigByID(groupID, configID string) (*huaweicloudsdkasmodel.ScalingConfiguration, error) {
asClient := csm.getASClientFunc()
opts := &huaweicloudsdkasmodel.ShowScalingConfigRequest{
@ -540,7 +568,15 @@ func (csm *cloudServiceManager) getAsgTemplate(groupID string) (*asgTemplate, er
}
configuration, err := csm.getScalingGroupConfigByID(groupID, *sg.ScalingConfigurationId)
if err != nil {
klog.Errorf("failed to get scaling group config by id:%s", *sg.ScalingConfigurationId)
return nil, err
}
tags, err := csm.listScalingTagsByID(groupID)
if err != nil {
klog.Errorf("failed to list scaling tags by id:%s", groupID)
return nil, err
}
for _, az := range *sg.AvailableZones {
flavors, err := csm.listFlavors(az)
if err != nil {
@ -549,7 +585,8 @@ func (csm *cloudServiceManager) getAsgTemplate(groupID string) (*asgTemplate, er
}
for _, flavor := range *flavors {
if !strings.EqualFold(flavor.Name, *configuration.InstanceConfig.FlavorRef) {
// FlavorRef is in format like: c7.4xlarge.2,c7.4xlarge.4,c7.6xlarge.2
if !strings.Contains(*configuration.InstanceConfig.FlavorRef, flavor.Name) {
continue
}
@ -559,10 +596,11 @@ func (csm *cloudServiceManager) getAsgTemplate(groupID string) (*asgTemplate, er
vcpu: vcpus,
ram: int64(flavor.Ram),
zone: az,
tags: tags,
}, nil
}
}
return nil, nil
return nil, fmt.Errorf("no available instance flavor:%s found in as group:%s", *configuration.InstanceConfig.FlavorRef, groupID)
}
func (csm *cloudServiceManager) buildNodeFromTemplate(asgName string, template *asgTemplate) (*apiv1.Node, error) {