This is an automated email from the ASF dual-hosted git repository. davidjumani pushed a commit to branch add-get-user-keys in repository https://gitbox.apache.org/repos/asf/cloudstack-go.git
The following commit(s) were added to refs/heads/add-get-user-keys by this push: new 6fdc24a Add support for getUserKeys 6fdc24a is described below commit 6fdc24acce48452a4ec07dc7a3a30d10e4792c00 Author: davidjumani <dj.davidjumani1...@gmail.com> AuthorDate: Tue Apr 12 11:42:32 2022 +0530 Add support for getUserKeys --- cloudstack/UserService.go | 67 ++++++++++++++++++++++++++++++++ cloudstack/UserService_mock.go | 29 ++++++++++++++ cloudstack/UserService_test.go | 22 +++++++++++ cloudstack/testdata/UserServiceData.json | 8 ++++ generate/generate.go | 3 +- generate/layout.go | 1 + 6 files changed, 129 insertions(+), 1 deletion(-) diff --git a/cloudstack/UserService.go b/cloudstack/UserService.go index c5fe70a..3c024cf 100644 --- a/cloudstack/UserService.go +++ b/cloudstack/UserService.go @@ -38,6 +38,8 @@ type UserServiceIface interface { NewEnableUserParams(id string) *EnableUserParams GetUser(p *GetUserParams) (*GetUserResponse, error) NewGetUserParams(userapikey string) *GetUserParams + GetUserKeys(p *GetUserKeysParams) (*GetUserKeysResponse, error) + NewGetUserKeysParams(id string) *GetUserKeysParams GetVirtualMachineUserData(p *GetVirtualMachineUserDataParams) (*GetVirtualMachineUserDataResponse, error) NewGetVirtualMachineUserDataParams(virtualmachineid string) *GetVirtualMachineUserDataParams ListUsers(p *ListUsersParams) (*ListUsersResponse, error) @@ -640,6 +642,71 @@ type GetUserResponse struct { Usersource string `json:"usersource"` } +type GetUserKeysParams struct { + p map[string]interface{} +} + +func (p *GetUserKeysParams) toURLValues() url.Values { + u := url.Values{} + if p.p == nil { + return u + } + if v, found := p.p["id"]; found { + u.Set("id", v.(string)) + } + return u +} + +func (p *GetUserKeysParams) SetId(v string) { + if p.p == nil { + p.p = make(map[string]interface{}) + } + p.p["id"] = v +} + +func (p *GetUserKeysParams) GetId() (string, bool) { + if p.p == nil { + p.p = make(map[string]interface{}) + } + value, ok := p.p["id"].(string) + return value, ok +} + +// You should always use this function to get a new GetUserKeysParams instance, +// as then you are sure you have configured all required params +func (s *UserService) NewGetUserKeysParams(id string) *GetUserKeysParams { + p := &GetUserKeysParams{} + p.p = make(map[string]interface{}) + p.p["id"] = id + return p +} + +// This command allows the user to query the seceret and API keys for the account +func (s *UserService) GetUserKeys(p *GetUserKeysParams) (*GetUserKeysResponse, error) { + resp, err := s.cs.newRequest("getUserKeys", p.toURLValues()) + if err != nil { + return nil, err + } + + if resp, err = getRawValue(resp); err != nil { + return nil, err + } + + var r GetUserKeysResponse + if err := json.Unmarshal(resp, &r); err != nil { + return nil, err + } + + return &r, nil +} + +type GetUserKeysResponse struct { + Apikey string `json:"apikey"` + JobID string `json:"jobid"` + Jobstatus int `json:"jobstatus"` + Secretkey string `json:"secretkey"` +} + type GetVirtualMachineUserDataParams struct { p map[string]interface{} } diff --git a/cloudstack/UserService_mock.go b/cloudstack/UserService_mock.go index ea5ab9a..c617813 100644 --- a/cloudstack/UserService_mock.go +++ b/cloudstack/UserService_mock.go @@ -148,6 +148,21 @@ func (mr *MockUserServiceIfaceMockRecorder) GetUserByID(id interface{}, opts ... return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetUserByID", reflect.TypeOf((*MockUserServiceIface)(nil).GetUserByID), varargs...) } +// GetUserKeys mocks base method. +func (m *MockUserServiceIface) GetUserKeys(p *GetUserKeysParams) (*GetUserKeysResponse, error) { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "GetUserKeys", p) + ret0, _ := ret[0].(*GetUserKeysResponse) + ret1, _ := ret[1].(error) + return ret0, ret1 +} + +// GetUserKeys indicates an expected call of GetUserKeys. +func (mr *MockUserServiceIfaceMockRecorder) GetUserKeys(p interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetUserKeys", reflect.TypeOf((*MockUserServiceIface)(nil).GetUserKeys), p) +} + // GetVirtualMachineUserData mocks base method. func (m *MockUserServiceIface) GetVirtualMachineUserData(p *GetVirtualMachineUserDataParams) (*GetVirtualMachineUserDataResponse, error) { m.ctrl.T.Helper() @@ -249,6 +264,20 @@ func (mr *MockUserServiceIfaceMockRecorder) NewEnableUserParams(id interface{}) return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "NewEnableUserParams", reflect.TypeOf((*MockUserServiceIface)(nil).NewEnableUserParams), id) } +// NewGetUserKeysParams mocks base method. +func (m *MockUserServiceIface) NewGetUserKeysParams(id string) *GetUserKeysParams { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "NewGetUserKeysParams", id) + ret0, _ := ret[0].(*GetUserKeysParams) + return ret0 +} + +// NewGetUserKeysParams indicates an expected call of NewGetUserKeysParams. +func (mr *MockUserServiceIfaceMockRecorder) NewGetUserKeysParams(id interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "NewGetUserKeysParams", reflect.TypeOf((*MockUserServiceIface)(nil).NewGetUserKeysParams), id) +} + // NewGetUserParams mocks base method. func (m *MockUserServiceIface) NewGetUserParams(userapikey string) *GetUserParams { m.ctrl.T.Helper() diff --git a/cloudstack/UserService_test.go b/cloudstack/UserService_test.go index 79a5df1..50cdf2b 100644 --- a/cloudstack/UserService_test.go +++ b/cloudstack/UserService_test.go @@ -164,3 +164,25 @@ func TestUserService_DeleteUser(t *testing.T) { t.Errorf("Failed to delete user") } } + +func TestGetUserKeys(t *testing.T) { + server := httptest.NewServer(http.HandlerFunc(func(writer http.ResponseWriter, request *http.Request) { + apiName := "getUserKeys" + response, err := ReadData(apiName, "UserService") + if err != nil { + t.Errorf("Failed to read response data due to: %v", err) + } + fmt.Fprintf(writer, response[apiName]) + })) + defer server.Close() + client := NewClient(server.URL, "APIKEY", "SECRETKEY", true) + params := client.User.NewGetUserKeysParams("random-id") + resp, err := client.User.GetUserKeys(params) + if err != nil { + t.Errorf("Failed to get user keys due to %v", err) + return + } + if resp.Apikey == "" || resp.Secretkey == "" { + t.Errorf("Parsing failure") + } +} diff --git a/cloudstack/testdata/UserServiceData.json b/cloudstack/testdata/UserServiceData.json index e38b4f8..c4a3847 100644 --- a/cloudstack/testdata/UserServiceData.json +++ b/cloudstack/testdata/UserServiceData.json @@ -147,5 +147,13 @@ "deleteuserresponse": { "success": true } + }, + "getUserKeys": { + "getuserkeysresponse": { + "userkeys": { + "apikey": "api-key", + "secretkey": "secret-key" + } + } } } \ No newline at end of file diff --git a/generate/generate.go b/generate/generate.go index a349c82..488cf4e 100644 --- a/generate/generate.go +++ b/generate/generate.go @@ -1503,7 +1503,8 @@ func (s *service) generateNewAPICallFunc(a *API) { "GetVirtualMachineUserData", "LockUser", "RegisterSSHKeyPair", - "RegisterUserKeys": + "RegisterUserKeys", + "GetUserKeys": pn(" if resp, err = getRawValue(resp); err != nil {") pn(" return nil, err") pn(" }") diff --git a/generate/layout.go b/generate/layout.go index 6697420..c30bd96 100644 --- a/generate/layout.go +++ b/generate/layout.go @@ -304,6 +304,7 @@ var layout = apiInfo{ "disableUser", "enableUser", "getUser", + "getUserKeys", "getVirtualMachineUserData", "listUsers", "lockUser",