func()

in credentials/providers/profile.go [44:120]


func (provider *ProfileCredentialsProvider) getCredentialsProvider(ini *ini.File) (credentialsProvider CredentialsProvider, err error) {
	section, err := ini.GetSection(provider.profileName)
	if err != nil {
		err = errors.New("ERROR: Can not load section" + err.Error())
		return
	}

	value, err := section.GetKey("type")
	if err != nil {
		err = errors.New("ERROR: Can not find credential type" + err.Error())
		return
	}

	switch value.String() {
	case "access_key":
		value1, err1 := section.GetKey("access_key_id")
		value2, err2 := section.GetKey("access_key_secret")
		if err1 != nil || err2 != nil {
			err = errors.New("ERROR: Failed to get value")
			return
		}

		if value1.String() == "" || value2.String() == "" {
			err = errors.New("ERROR: Value can't be empty")
			return
		}

		credentialsProvider, err = NewStaticAKCredentialsProviderBuilder().
			WithAccessKeyId(value1.String()).
			WithAccessKeySecret(value2.String()).
			Build()
	case "ecs_ram_role":
		value1, err1 := section.GetKey("role_name")
		if err1 != nil {
			err = errors.New("ERROR: Failed to get value")
			return
		}
		credentialsProvider, err = NewECSRAMRoleCredentialsProviderBuilder().WithRoleName(value1.String()).Build()
	case "ram_role_arn":
		value1, err1 := section.GetKey("access_key_id")
		value2, err2 := section.GetKey("access_key_secret")
		value3, err3 := section.GetKey("role_arn")
		value4, err4 := section.GetKey("role_session_name")
		if err1 != nil || err2 != nil || err3 != nil || err4 != nil {
			err = errors.New("ERROR: Failed to get value")
			return
		}
		if value1.String() == "" || value2.String() == "" || value3.String() == "" || value4.String() == "" {
			err = errors.New("ERROR: Value can't be empty")
			return
		}
		previous, err5 := NewStaticAKCredentialsProviderBuilder().
			WithAccessKeyId(value1.String()).
			WithAccessKeySecret(value2.String()).
			Build()
		if err5 != nil {
			err = errors.New("get previous credentials provider failed")
			return
		}
		rawPolicy, _ := section.GetKey("policy")
		policy := ""
		if rawPolicy != nil {
			policy = rawPolicy.String()
		}

		credentialsProvider, err = NewRAMRoleARNCredentialsProviderBuilder().
			WithCredentialsProvider(previous).
			WithRoleArn(value3.String()).
			WithRoleSessionName(value4.String()).
			WithPolicy(policy).
			WithDurationSeconds(3600).
			Build()
	default:
		err = errors.New("ERROR: Failed to get credential")
	}
	return
}