Alicloud: fix comparison failures for lc

This commit is contained in:
Xiaoyu Zhong 2019-11-27 16:03:00 +08:00
parent d603999690
commit b132fec8d8
1 changed files with 34 additions and 30 deletions

View File

@ -59,7 +59,6 @@ func (l *LaunchConfiguration) CompareWithID() *string {
} }
func (l *LaunchConfiguration) Find(c *fi.Context) (*LaunchConfiguration, error) { func (l *LaunchConfiguration) Find(c *fi.Context) (*LaunchConfiguration, error) {
if l.ScalingGroup == nil || l.ScalingGroup.ScalingGroupId == nil { if l.ScalingGroup == nil || l.ScalingGroup.ScalingGroupId == nil {
klog.V(4).Infof("ScalingGroup / ScalingGroupId not found for %s, skipping Find", fi.StringValue(l.Name)) klog.V(4).Infof("ScalingGroup / ScalingGroupId not found for %s, skipping Find", fi.StringValue(l.Name))
return nil, nil return nil, nil
@ -68,9 +67,7 @@ func (l *LaunchConfiguration) Find(c *fi.Context) (*LaunchConfiguration, error)
cloud := c.Cloud.(aliup.ALICloud) cloud := c.Cloud.(aliup.ALICloud)
describeScalingConfigurationsArgs := &ess.DescribeScalingConfigurationsArgs{ describeScalingConfigurationsArgs := &ess.DescribeScalingConfigurationsArgs{
RegionId: common.Region(cloud.Region()), RegionId: common.Region(cloud.Region()),
ScalingConfigurationName: common.FlattenArray{fi.StringValue(l.Name)},
ScalingGroupId: fi.StringValue(l.ScalingGroup.ScalingGroupId),
} }
if l.ScalingGroup != nil && l.ScalingGroup.ScalingGroupId != nil { if l.ScalingGroup != nil && l.ScalingGroup.ScalingGroupId != nil {
@ -81,37 +78,42 @@ func (l *LaunchConfiguration) Find(c *fi.Context) (*LaunchConfiguration, error)
if err != nil { if err != nil {
return nil, fmt.Errorf("error finding ScalingConfigurations: %v", err) return nil, fmt.Errorf("error finding ScalingConfigurations: %v", err)
} }
// Don't exist ScalingConfigurations with specified Name.
// No ScalingConfigurations with specified Name.
if len(configList) == 0 { if len(configList) == 0 {
klog.V(2).Infof("can't found matching LaunchConfiguration: %q", fi.StringValue(l.Name))
return nil, nil return nil, nil
} }
if len(configList) > 1 { if len(configList) > 1 {
klog.V(4).Infof("The number of specified ScalingConfigurations with the same name and ScalingGroupId exceeds 1, diskName:%q", *l.Name) return nil, fmt.Errorf("found multiple LaunchConfiguration with name: %q", fi.StringValue(l.Name))
} }
klog.V(2).Infof("found matching LaunchConfiguration: %q", *l.Name) klog.V(2).Infof("found matching LaunchConfiguration: %q", fi.StringValue(l.Name))
lc := configList[0]
actual := &LaunchConfiguration{} actual := &LaunchConfiguration{
actual.ImageId = fi.String(configList[0].ImageId) ImageId: fi.String(lc.ImageId),
actual.InstanceType = fi.String(configList[0].InstanceType) InstanceType: fi.String(lc.InstanceType),
actual.SystemDiskCategory = fi.String(string(configList[0].SystemDiskCategory)) SystemDiskSize: fi.Int(lc.SystemDiskSize),
actual.ConfigurationId = fi.String(configList[0].ScalingConfigurationId) SystemDiskCategory: fi.String(string(lc.SystemDiskCategory)),
actual.Name = fi.String(configList[0].ScalingConfigurationName) ConfigurationId: fi.String(lc.ScalingConfigurationId),
Name: fi.String(lc.ScalingConfigurationName),
}
if configList[0].KeyPairName != "" { if lc.KeyPairName != "" {
actual.SSHKey = &SSHKey{ actual.SSHKey = &SSHKey{
Name: fi.String(configList[0].KeyPairName), Name: fi.String(lc.KeyPairName),
} }
} }
if configList[0].RamRoleName != "" { if lc.RamRoleName != "" {
actual.RAMRole = &RAMRole{ actual.RAMRole = &RAMRole{
Name: fi.String(configList[0].RamRoleName), Name: fi.String(lc.RamRoleName),
} }
} }
if configList[0].UserData != "" { if lc.UserData != "" {
userData, err := base64.StdEncoding.DecodeString(configList[0].UserData) userData, err := base64.StdEncoding.DecodeString(lc.UserData)
if err != nil { if err != nil {
return nil, fmt.Errorf("error decoding UserData: %v", err) return nil, fmt.Errorf("error decoding UserData: %v", err)
} }
@ -119,14 +121,15 @@ func (l *LaunchConfiguration) Find(c *fi.Context) (*LaunchConfiguration, error)
} }
actual.ScalingGroup = &ScalingGroup{ actual.ScalingGroup = &ScalingGroup{
ScalingGroupId: fi.String(configList[0].ScalingGroupId), ScalingGroupId: fi.String(lc.ScalingGroupId),
} }
actual.SecurityGroup = &SecurityGroup{ actual.SecurityGroup = &SecurityGroup{
SecurityGroupId: fi.String(configList[0].SecurityGroupId), SecurityGroupId: fi.String(lc.SecurityGroupId),
} }
if len(configList[0].Tags.Tag) != 0 { if len(lc.Tags.Tag) != 0 {
for _, tag := range configList[0].Tags.Tag { actual.Tags = make(map[string]string)
for _, tag := range lc.Tags.Tag {
actual.Tags[tag.Key] = tag.Value actual.Tags[tag.Key] = tag.Value
} }
} }
@ -163,12 +166,13 @@ func (_ *LaunchConfiguration) RenderALI(t *aliup.ALIAPITarget, a, e, changes *La
klog.V(2).Infof("Creating LaunchConfiguration for ScalingGroup:%q", fi.StringValue(e.ScalingGroup.ScalingGroupId)) klog.V(2).Infof("Creating LaunchConfiguration for ScalingGroup:%q", fi.StringValue(e.ScalingGroup.ScalingGroupId))
createScalingConfiguration := &ess.CreateScalingConfigurationArgs{ createScalingConfiguration := &ess.CreateScalingConfigurationArgs{
ScalingGroupId: fi.StringValue(e.ScalingGroup.ScalingGroupId), ScalingGroupId: fi.StringValue(e.ScalingGroup.ScalingGroupId),
ImageId: fi.StringValue(e.ImageId), ScalingConfigurationName: fi.StringValue(e.Name),
InstanceType: fi.StringValue(e.InstanceType), ImageId: fi.StringValue(e.ImageId),
SecurityGroupId: fi.StringValue(e.SecurityGroup.SecurityGroupId), InstanceType: fi.StringValue(e.InstanceType),
SystemDisk_Size: common.UnderlineString(strconv.Itoa(fi.IntValue(e.SystemDiskSize))), SecurityGroupId: fi.StringValue(e.SecurityGroup.SecurityGroupId),
SystemDisk_Category: common.UnderlineString(fi.StringValue(e.SystemDiskCategory)), SystemDisk_Size: common.UnderlineString(strconv.Itoa(fi.IntValue(e.SystemDiskSize))),
SystemDisk_Category: common.UnderlineString(fi.StringValue(e.SystemDiskCategory)),
} }
if e.RAMRole != nil && e.RAMRole.Name != nil { if e.RAMRole != nil && e.RAMRole.Name != nil {
@ -268,5 +272,5 @@ func (_ *LaunchConfiguration) RenderTerraform(t *terraform.TerraformTarget, a, e
} }
func (l *LaunchConfiguration) TerraformLink() *terraform.Literal { func (l *LaunchConfiguration) TerraformLink() *terraform.Literal {
return terraform.LiteralProperty("alicloud_ess_scaling_configuration", *l.Name, "id") return terraform.LiteralProperty("alicloud_ess_scaling_configuration", fi.StringValue(l.Name), "id")
} }