Skip to content

Commit

Permalink
Delete functionality modified to allow deletion from Vault Storage ev…
Browse files Browse the repository at this point in the history
…en when user, project doesnt exist in keystone, version bump
  • Loading branch information
pag-r committed Jan 12, 2018
1 parent 816ab59 commit 14d940a
Show file tree
Hide file tree
Showing 5 changed files with 82 additions and 45 deletions.
2 changes: 1 addition & 1 deletion main.go
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ import (

func main() {

plugin_version := "0.2.2"
plugin_version := "0.2.3"

apiClientMeta := &pluginutil.APIClientMeta{}
flags := apiClientMeta.FlagSet()
Expand Down
48 changes: 30 additions & 18 deletions plugin/path_projects.go
Original file line number Diff line number Diff line change
Expand Up @@ -174,32 +174,44 @@ func (b *backend) pathProjectWrite(

func (b *backend) pathProjectDelete(
req *logical.Request, data *framework.FieldData) (*logical.Response, error) {
name := data.Get("name").(string)

conf, err := getconfig(req)
if err != nil {
fmt.Errorf("%s", err)
}
keystone_url := conf[0]
token := conf[1]
name := data.Get("name").(string)

project, err := req.Storage.Get("project/"+name)
if err != nil {
return nil, fmt.Errorf("configure the Keystone connection with config/connection first")
return nil, err
}

status, err := DeleteProject(keystone_url, token, name)
if err != nil {
fmt.Errorf("%s", err)
}
if project != nil {
conf, err := getconfig(req)
if err != nil {
fmt.Errorf("%s", err)
}
keystone_url := conf[0]
token := conf[1]

if status == "NO_PROJECT" {
return logical.ErrorResponse(fmt.Sprintf("unknown project: %s", name)), nil
}
if err != nil {
return nil, fmt.Errorf("configure the Keystone connection with config/connection first")
}

if status == "" {
if err := req.Storage.Delete("project/"+name); err != nil {
return nil, err
status, err := DeleteProject(keystone_url, token, name)
if err != nil {
fmt.Errorf("%s", err)
}

if status == "NO_OS_PROJECT" {
if err := req.Storage.Delete("project/"+name); err != nil {
return nil, err
}
}

if status == "" {
if err := req.Storage.Delete("project/"+name); err != nil {
return nil, err
}
}
} else {
return logical.ErrorResponse(fmt.Sprintf("unknown project: %s", name)), nil
}

return &logical.Response{
Expand Down
71 changes: 47 additions & 24 deletions plugin/path_users.go
Original file line number Diff line number Diff line change
Expand Up @@ -210,37 +210,60 @@ func (b *backend) pathUserDelete(
name := data.Get("name").(string)
var deleted_array []bool
var deleted_entity bool

x, err := ListAllOpenStackUsers(name, token, keystone_url)

// Check if user exist in Storage
user, err := req.Storage.Get("user/" + name)
if err != nil {
return logical.ErrorResponse(fmt.Sprintf("Error: %s", err)), nil
return nil, err
}

for k, v := range x {
log.Printf("[%s]=%s", k, v)
status, err := DeleteUser(k, token, keystone_url)
if err != nil {
fmt.Printf("Error while deleting user")
}
if status == "" {
deleted_entity = true
if user != nil {
x, err := ListAllOpenStackUsers(name, token, keystone_url)

// User deleted from OpenStack but exists in Storage
if v, present := x["NO_OS_USER"]; present {
fmt.Sprintf("%v", v)
err_storage := req.Storage.Delete("user/" + name)
if err_storage != nil {
return logical.ErrorResponse(
fmt.Sprintf("User not deleted from vault: %s", err_storage)), nil
}
} else {
deleted_entity = false
}
deleted_array = append(deleted_array, deleted_entity)
}
if err != nil {
return logical.ErrorResponse(fmt.Sprintf("Error: %s", err)), nil
}

for key := range deleted_array {
if deleted_array[key] == false {
return logical.ErrorResponse(fmt.Sprintf("unknown user: %s", name)), nil
break
for k, v := range x {
log.Printf("[%s]=%s", k, v)
status, err := DeleteUser(k, token, keystone_url)
if err != nil {
fmt.Printf("Error while deleting user")
}
if status == "" {
deleted_entity = true
} else {
deleted_entity = false
}
deleted_array = append(deleted_array, deleted_entity)
}

for key := range deleted_array {
if deleted_array[key] == false {
return logical.ErrorResponse(
fmt.Sprintf("unknown user: %s", name)), nil
break
}
}
}

err_storage := req.Storage.Delete("user/" + name)
if err_storage != nil {
return logical.ErrorResponse(
fmt.Sprintf("User not deleted from vault: %s", err_storage)), nil
err_storage := req.Storage.Delete("user/" + name)
if err_storage != nil {
return logical.ErrorResponse(
fmt.Sprintf("User not deleted from vault: %s", err_storage)), nil
}
}

} else {
return logical.ErrorResponse(fmt.Sprintf("unknown user: %s", name)), nil
}

return &logical.Response{
Expand Down
2 changes: 1 addition & 1 deletion plugin/projects.go
Original file line number Diff line number Diff line change
Expand Up @@ -117,7 +117,7 @@ func DeleteProject(
}

if project_id == "" {
return "NO_PROJECT", nil
return "NO_OS_PROJECT", nil
}

request_del := gorequest.New()
Expand Down
4 changes: 3 additions & 1 deletion plugin/users.go
Original file line number Diff line number Diff line change
Expand Up @@ -155,7 +155,9 @@ func ListAllOpenStackUsers(
}

if len(to_delete_users) == 0 {
return nil, fmt.Errorf("unknown user: %s", name)
// return nil, fmt.Errorf("unknown user: %s", name)
to_delete_users["NO_OS_USER"] = "NO_OS_USER"
return to_delete_users, nil
}

return to_delete_users, nil
Expand Down

0 comments on commit 14d940a

Please sign in to comment.