agent/statemanager/api.go (109 lines of code) (raw):

package statemanager import ( "errors" "fmt" "net/http" "github.com/aliyun/aliyun_assist_client/agent/util" "github.com/aliyun/aliyun_assist_client/agent/util/timetool" ) type ApiResponse struct { ErrCode string `json:"errCode"` ErrMsg string `json:"errMsg"` } type StateConfiguration struct { StateConfigurationId string TemplateName string TemplateVersion string Parameters string ConfigureMode string ScheduleType string ScheduleExpression string SuccessfulApplyTime string DefinitionUpdateTime string } type ListInstanceStateConfigurationsResult struct { RequestId string Interval int Changed bool Checkpoint string StateConfigurations []StateConfiguration } type ListInstanceStateConfigurationsResp struct { ApiResponse Result *ListInstanceStateConfigurationsResult `json:"result"` } type GetTemplateResult struct { RequestId string TemplateName string TemplateVersion string Content string } type GetTemplateResponse struct { ApiResponse Result *GetTemplateResult `json:"result"` } // ListInstanceStateConfigurations lists state configurations from server and report agent info func ListInstanceStateConfigurations(lastCheckpoint, agentName, agentVersion, computerName, platformName, platformType, platformVersion, ipAddress, ramRole string) (*ListInstanceStateConfigurationsResp, error) { url := util.GetStateConfigService() var parameters = make(map[string]interface{}) if len(lastCheckpoint) > 0 { parameters = map[string]interface{}{"lastCheckpoint": lastCheckpoint} } parameters["agentName"] = agentName parameters["agentVersion"] = agentVersion parameters["computerName"] = computerName parameters["platformName"] = platformName parameters["platformType"] = platformType parameters["platformVersion"] = platformVersion parameters["ipAddress"] = ipAddress parameters["ramRole"] = ramRole resp := &ListInstanceStateConfigurationsResp{} err := util.CallApi(http.MethodPost, url, parameters, resp, 10, false) if err == nil && resp.ErrCode >= "400" { err = fmt.Errorf("%s %s", resp.ErrCode, resp.ErrMsg) } if err == nil && resp.Result == nil { err = errors.New("result is missing in ListInstanceStateConfigurations response") } return resp, err } func GetTemplate(templateName, templateVersion string) (*GetTemplateResponse, error) { url := util.GetTemplateService() parameters := map[string]interface{}{ "templateName": templateName, } if len(templateVersion) > 0 { parameters["templateVersion"] = templateVersion } resp := &GetTemplateResponse{} err := util.CallApi(http.MethodPost, url, parameters, resp, 10, true) if err == nil && resp.ErrCode >= "400" { err = fmt.Errorf("%s %s", resp.ErrCode, resp.ErrMsg) } if err == nil && resp.Result == nil { err = errors.New("result is missing in GetTemplate response") } return resp, err } func PutInstanceStateReport(stateConfigurationId, status, extraInfo, mode, clientToken string) error { reportTime := timetool.UtcNowStr() url := util.GetPutInstanceStateReportService() parameters := map[string]interface{}{ "stateConfigurationId": stateConfigurationId, "reportTime": reportTime, "status": status, "mode": mode, } if len(extraInfo) > 0 { parameters["extraInfo"] = extraInfo } if len(clientToken) > 0 { parameters["clientToken"] = clientToken } resp := &ApiResponse{} err := util.CallApi(http.MethodPost, url, parameters, resp, 10, false) if err == nil && resp.ErrCode >= "400" { err = fmt.Errorf("%s %s", resp.ErrCode, resp.ErrMsg) } return err }