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",

Reply via email to