本文整理汇总了Golang中github.com/openshift/origin/pkg/oauth/registry/oauthclient.Registry.UpdateClient方法的典型用法代码示例。如果您正苦于以下问题:Golang Registry.UpdateClient方法的具体用法?Golang Registry.UpdateClient怎么用?Golang Registry.UpdateClient使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类github.com/openshift/origin/pkg/oauth/registry/oauthclient.Registry
的用法示例。
在下文中一共展示了Registry.UpdateClient方法的2个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Golang代码示例。
示例1: CreateOrUpdateDefaultOAuthClients
func CreateOrUpdateDefaultOAuthClients(masterPublicAddr string, assetPublicAddresses []string, clientRegistry clientregistry.Registry) {
clientsToEnsure := []*oauthapi.OAuthClient{
{
ObjectMeta: kapi.ObjectMeta{
Name: OSWebConsoleClientBase.Name,
},
Secret: OSWebConsoleClientBase.Secret,
RespondWithChallenges: OSWebConsoleClientBase.RespondWithChallenges,
RedirectURIs: assetPublicAddresses,
},
{
ObjectMeta: kapi.ObjectMeta{
Name: OSBrowserClientBase.Name,
},
Secret: OSBrowserClientBase.Secret,
RespondWithChallenges: OSBrowserClientBase.RespondWithChallenges,
RedirectURIs: []string{masterPublicAddr + path.Join(OpenShiftOAuthAPIPrefix, tokenrequest.DisplayTokenEndpoint)},
},
{
ObjectMeta: kapi.ObjectMeta{
Name: OSCliClientBase.Name,
},
Secret: OSCliClientBase.Secret,
RespondWithChallenges: OSCliClientBase.RespondWithChallenges,
RedirectURIs: []string{masterPublicAddr + path.Join(OpenShiftOAuthAPIPrefix, tokenrequest.DisplayTokenEndpoint)},
},
}
ctx := kapi.NewContext()
for _, currClient := range clientsToEnsure {
existing, err := clientRegistry.GetClient(ctx, currClient.Name)
if err == nil {
// Update the existing resource version
currClient.ResourceVersion = existing.ResourceVersion
// Add in any redirects from the existing one
// This preserves any additional customized redirects in the default clients
redirects := util.NewStringSet(currClient.RedirectURIs...)
for _, redirect := range existing.RedirectURIs {
if !redirects.Has(redirect) {
currClient.RedirectURIs = append(currClient.RedirectURIs, redirect)
redirects.Insert(redirect)
}
}
if _, err := clientRegistry.UpdateClient(ctx, currClient); err != nil {
glog.Errorf("Error updating OAuthClient %v: %v", currClient.Name, err)
}
} else if kerrs.IsNotFound(err) {
if _, err = clientRegistry.CreateClient(ctx, currClient); err != nil {
glog.Errorf("Error creating OAuthClient %v: %v", currClient.Name, err)
}
} else {
glog.Errorf("Error getting OAuthClient %v: %v", currClient.Name, err)
}
}
}
示例2: ensureOAuthClient
func ensureOAuthClient(client oauthapi.OAuthClient, clientRegistry clientregistry.Registry, preserveExistingRedirects bool) error {
ctx := kapi.NewContext()
_, err := clientRegistry.CreateClient(ctx, &client)
if err == nil || !kerrs.IsAlreadyExists(err) {
return err
}
return unversioned.RetryOnConflict(unversioned.DefaultRetry, func() error {
existing, err := clientRegistry.GetClient(ctx, client.Name)
if err != nil {
return err
}
// Ensure the correct challenge setting
existing.RespondWithChallenges = client.RespondWithChallenges
// Preserve an existing client secret
if len(existing.Secret) == 0 {
existing.Secret = client.Secret
}
// Preserve redirects for clients other than the CLI client
// The CLI client doesn't care about the redirect URL, just the token or error fragment
if preserveExistingRedirects {
// Add in any redirects from the existing one
// This preserves any additional customized redirects in the default clients
redirects := sets.NewString(client.RedirectURIs...)
for _, redirect := range existing.RedirectURIs {
if !redirects.Has(redirect) {
client.RedirectURIs = append(client.RedirectURIs, redirect)
redirects.Insert(redirect)
}
}
}
existing.RedirectURIs = client.RedirectURIs
// If the GrantMethod is present, keep it for compatibility
// If it is empty, assign the requested strategy.
if len(existing.GrantMethod) == 0 {
existing.GrantMethod = client.GrantMethod
}
_, err = clientRegistry.UpdateClient(ctx, existing)
return err
})
}