fix: misc bug fixes. add usage and event log API

This commit is contained in:
Qiu Jian
2019-05-17 13:54:29 +08:00
parent 2efc5e641e
commit dd13a991c0
19 changed files with 270 additions and 27 deletions
+49
View File
@@ -56,6 +56,10 @@ func doImageEventList(s *mcclient.ClientSession, args *EventListOptions) error {
return doEventList(modules.ImageLogs, s, args)
}
func doIdentityEventList(s *mcclient.ClientSession, args *EventListOptions) error {
return doEventList(modules.IdentityLogs, s, args)
}
func doEventList(man modules.ResourceManager, s *mcclient.ClientSession, args *EventListOptions) error {
params := jsonutils.NewDict()
if len(args.Type) > 0 {
@@ -167,4 +171,49 @@ func init() {
nargs := EventListOptions{BaseEventListOptions: args.BaseEventListOptions, Id: args.ID, Type: []string{"image"}}
return doImageEventList(s, &nargs)
})
R(&TypeEventListOptions{}, "user-event", "Show operation event logs of keystone users", func(s *mcclient.ClientSession, args *TypeEventListOptions) error {
nargs := EventListOptions{BaseEventListOptions: args.BaseEventListOptions, Id: args.ID, Type: []string{"user"}}
return doIdentityEventList(s, &nargs)
})
R(&TypeEventListOptions{}, "group-event", "Show operation event logs of keystone groups", func(s *mcclient.ClientSession, args *TypeEventListOptions) error {
nargs := EventListOptions{BaseEventListOptions: args.BaseEventListOptions, Id: args.ID, Type: []string{"group"}}
return doIdentityEventList(s, &nargs)
})
R(&TypeEventListOptions{}, "domain-event", "Show operation event logs of keystone domains", func(s *mcclient.ClientSession, args *TypeEventListOptions) error {
nargs := EventListOptions{BaseEventListOptions: args.BaseEventListOptions, Id: args.ID, Type: []string{"domain"}}
return doIdentityEventList(s, &nargs)
})
R(&TypeEventListOptions{}, "project-event", "Show operation event logs of keystone projects", func(s *mcclient.ClientSession, args *TypeEventListOptions) error {
nargs := EventListOptions{BaseEventListOptions: args.BaseEventListOptions, Id: args.ID, Type: []string{"project"}}
return doIdentityEventList(s, &nargs)
})
R(&TypeEventListOptions{}, "role-event", "Show operation event logs of keystone roles", func(s *mcclient.ClientSession, args *TypeEventListOptions) error {
nargs := EventListOptions{BaseEventListOptions: args.BaseEventListOptions, Id: args.ID, Type: []string{"role"}}
return doIdentityEventList(s, &nargs)
})
R(&TypeEventListOptions{}, "policy-event", "Show operation event logs of keystone policies", func(s *mcclient.ClientSession, args *TypeEventListOptions) error {
nargs := EventListOptions{BaseEventListOptions: args.BaseEventListOptions, Id: args.ID, Type: []string{"policy"}}
return doIdentityEventList(s, &nargs)
})
R(&TypeEventListOptions{}, "endpoint-event", "Show operation event logs of keystone endpoints", func(s *mcclient.ClientSession, args *TypeEventListOptions) error {
nargs := EventListOptions{BaseEventListOptions: args.BaseEventListOptions, Id: args.ID, Type: []string{"endpoint"}}
return doIdentityEventList(s, &nargs)
})
R(&TypeEventListOptions{}, "service-event", "Show operation event logs of keystone services", func(s *mcclient.ClientSession, args *TypeEventListOptions) error {
nargs := EventListOptions{BaseEventListOptions: args.BaseEventListOptions, Id: args.ID, Type: []string{"service"}}
return doIdentityEventList(s, &nargs)
})
R(&TypeEventListOptions{}, "credential-event", "Show operation event logs of keystone credentials", func(s *mcclient.ClientSession, args *TypeEventListOptions) error {
nargs := EventListOptions{BaseEventListOptions: args.BaseEventListOptions, Id: args.ID, Type: []string{"credential"}}
return doIdentityEventList(s, &nargs)
})
}
+11
View File
@@ -143,4 +143,15 @@ func init() {
printObject(result)
return nil
})
type IdentityUsageOptions struct {
}
R(&IdentityUsageOptions{}, "identity-usage", "Show general usage of identity", func(s *mcclient.ClientSession, args *IdentityUsageOptions) error {
result, err := modules.IdentityUsages.GetUsage(s, nil)
if err != nil {
return err
}
printObject(result)
return nil
})
}
+19 -1
View File
@@ -26,6 +26,7 @@ func init() {
Base string `help:"base DN, e.g. OU=tech,DC=example,DC=com"`
Objectclass string `help:"objectclass, e.g. organizationalPerson"`
Search []string `help:"search conditions, in format of field:value"`
Field []string `help:"retrieve field info"`
}
shellutils.R(&LdapSearchOptions{}, "search", "search ldap", func(cli *ldaputils.SLDAPClient, args *LdapSearchOptions) error {
search := make(map[string]string)
@@ -36,7 +37,7 @@ func init() {
}
search[s[:colonPos]] = s[(colonPos + 1):]
}
entries, err := cli.Search(args.Base, args.Objectclass, search, nil)
entries, err := cli.Search(args.Base, args.Objectclass, search, args.Field)
if err != nil {
return err
}
@@ -45,4 +46,21 @@ func init() {
}
return nil
})
type LdapAuthOptions struct {
Base string `help:"base DN, e.g. OU=tech,DC=example,DC=com"`
Objectclass string `help:"objectclass, e.g. organizationalPerson"`
ATTR string `help:"account attribute name"`
ACCOUNT string `help:"account name to auth"`
PASSWORD string `help:"Password to auth"`
Field []string `help:"retrieve field info"`
}
shellutils.R(&LdapAuthOptions{}, "auth", "authenticate against ldap", func(cli *ldaputils.SLDAPClient, args *LdapAuthOptions) error {
entry, err := cli.Authenticate(args.Base, args.Objectclass, args.ATTR, args.ACCOUNT, args.PASSWORD, args.Field)
if err != nil {
return err
}
entry.PrettyPrint(2)
return nil
})
}