Merge pull request #5256 from jwcesign/fix-tags-resolve
huawei-cloudprovider:enable tags resolve for as
This commit is contained in:
commit
5298d55fae
|
|
@ -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) {
|
||||
|
|
|
|||
Loading…
Reference in New Issue