1package msi 2 3// Copyright (c) Microsoft and contributors. All rights reserved. 4// 5// Licensed under the Apache License, Version 2.0 (the "License"); 6// you may not use this file except in compliance with the License. 7// You may obtain a copy of the License at 8// http://www.apache.org/licenses/LICENSE-2.0 9// 10// Unless required by applicable law or agreed to in writing, software 11// distributed under the License is distributed on an "AS IS" BASIS, 12// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13// 14// See the License for the specific language governing permissions and 15// limitations under the License. 16// 17// Code generated by Microsoft (R) AutoRest Code Generator. 18// Changes may cause incorrect behavior and will be lost if the code is regenerated. 19 20import ( 21 "context" 22 "encoding/json" 23 "github.com/Azure/go-autorest/autorest" 24 "github.com/Azure/go-autorest/autorest/to" 25 "github.com/Azure/go-autorest/tracing" 26 "github.com/satori/go.uuid" 27 "net/http" 28) 29 30// The package's fully qualified name. 31const fqdn = "github.com/Azure/azure-sdk-for-go/services/msi/mgmt/2018-11-30/msi" 32 33// UserAssignedIdentities enumerates the values for user assigned identities. 34type UserAssignedIdentities string 35 36const ( 37 // MicrosoftManagedIdentityuserAssignedIdentities ... 38 MicrosoftManagedIdentityuserAssignedIdentities UserAssignedIdentities = "Microsoft.ManagedIdentity/userAssignedIdentities" 39) 40 41// PossibleUserAssignedIdentitiesValues returns an array of possible values for the UserAssignedIdentities const type. 42func PossibleUserAssignedIdentitiesValues() []UserAssignedIdentities { 43 return []UserAssignedIdentities{MicrosoftManagedIdentityuserAssignedIdentities} 44} 45 46// CloudError an error response from the ManagedServiceIdentity service. 47type CloudError struct { 48 // Error - A list of additional details about the error. 49 Error *CloudErrorBody `json:"error,omitempty"` 50} 51 52// CloudErrorBody an error response from the ManagedServiceIdentity service. 53type CloudErrorBody struct { 54 // Code - An identifier for the error. 55 Code *string `json:"code,omitempty"` 56 // Message - A message describing the error, intended to be suitable for display in a user interface. 57 Message *string `json:"message,omitempty"` 58 // Target - The target of the particular error. For example, the name of the property in error. 59 Target *string `json:"target,omitempty"` 60 // Details - A list of additional details about the error. 61 Details *[]CloudErrorBody `json:"details,omitempty"` 62} 63 64// Identity describes an identity resource. 65type Identity struct { 66 autorest.Response `json:"-"` 67 // ID - READ-ONLY; The id of the created identity. 68 ID *string `json:"id,omitempty"` 69 // Name - READ-ONLY; The name of the created identity. 70 Name *string `json:"name,omitempty"` 71 // Location - The Azure region where the identity lives. 72 Location *string `json:"location,omitempty"` 73 // Tags - Resource tags 74 Tags map[string]*string `json:"tags"` 75 // IdentityProperties - The properties associated with the identity. 76 *IdentityProperties `json:"properties,omitempty"` 77 // Type - READ-ONLY; The type of resource i.e. Microsoft.ManagedIdentity/userAssignedIdentities. Possible values include: 'MicrosoftManagedIdentityuserAssignedIdentities' 78 Type UserAssignedIdentities `json:"type,omitempty"` 79} 80 81// MarshalJSON is the custom marshaler for Identity. 82func (i Identity) MarshalJSON() ([]byte, error) { 83 objectMap := make(map[string]interface{}) 84 if i.Location != nil { 85 objectMap["location"] = i.Location 86 } 87 if i.Tags != nil { 88 objectMap["tags"] = i.Tags 89 } 90 if i.IdentityProperties != nil { 91 objectMap["properties"] = i.IdentityProperties 92 } 93 return json.Marshal(objectMap) 94} 95 96// UnmarshalJSON is the custom unmarshaler for Identity struct. 97func (i *Identity) UnmarshalJSON(body []byte) error { 98 var m map[string]*json.RawMessage 99 err := json.Unmarshal(body, &m) 100 if err != nil { 101 return err 102 } 103 for k, v := range m { 104 switch k { 105 case "id": 106 if v != nil { 107 var ID string 108 err = json.Unmarshal(*v, &ID) 109 if err != nil { 110 return err 111 } 112 i.ID = &ID 113 } 114 case "name": 115 if v != nil { 116 var name string 117 err = json.Unmarshal(*v, &name) 118 if err != nil { 119 return err 120 } 121 i.Name = &name 122 } 123 case "location": 124 if v != nil { 125 var location string 126 err = json.Unmarshal(*v, &location) 127 if err != nil { 128 return err 129 } 130 i.Location = &location 131 } 132 case "tags": 133 if v != nil { 134 var tags map[string]*string 135 err = json.Unmarshal(*v, &tags) 136 if err != nil { 137 return err 138 } 139 i.Tags = tags 140 } 141 case "properties": 142 if v != nil { 143 var identityProperties IdentityProperties 144 err = json.Unmarshal(*v, &identityProperties) 145 if err != nil { 146 return err 147 } 148 i.IdentityProperties = &identityProperties 149 } 150 case "type": 151 if v != nil { 152 var typeVar UserAssignedIdentities 153 err = json.Unmarshal(*v, &typeVar) 154 if err != nil { 155 return err 156 } 157 i.Type = typeVar 158 } 159 } 160 } 161 162 return nil 163} 164 165// IdentityProperties the properties associated with the identity. 166type IdentityProperties struct { 167 // TenantID - READ-ONLY; The id of the tenant which the identity belongs to. 168 TenantID *uuid.UUID `json:"tenantId,omitempty"` 169 // PrincipalID - READ-ONLY; The id of the service principal object associated with the created identity. 170 PrincipalID *uuid.UUID `json:"principalId,omitempty"` 171 // ClientID - READ-ONLY; The id of the app associated with the identity. This is a random generated UUID by MSI. 172 ClientID *uuid.UUID `json:"clientId,omitempty"` 173 // ClientSecretURL - READ-ONLY; The ManagedServiceIdentity DataPlane URL that can be queried to obtain the identity credentials. If identity is user assigned, then the clientSecretUrl will not be present in the response, otherwise it will be present. 174 ClientSecretURL *string `json:"clientSecretUrl,omitempty"` 175} 176 177// Operation operation supported by the Microsoft.ManagedIdentity REST API. 178type Operation struct { 179 // Name - The name of the REST Operation. This is of the format {provider}/{resource}/{operation}. 180 Name *string `json:"name,omitempty"` 181 // Display - The object that describes the operation. 182 Display *OperationDisplay `json:"display,omitempty"` 183} 184 185// OperationDisplay the object that describes the operation. 186type OperationDisplay struct { 187 // Provider - Friendly name of the resource provider. 188 Provider *string `json:"provider,omitempty"` 189 // Operation - The type of operation. For example: read, write, delete. 190 Operation *string `json:"operation,omitempty"` 191 // Resource - The resource type on which the operation is performed. 192 Resource *string `json:"resource,omitempty"` 193 // Description - A description of the operation. 194 Description *string `json:"description,omitempty"` 195} 196 197// OperationListResult a list of operations supported by Microsoft.ManagedIdentity Resource Provider. 198type OperationListResult struct { 199 autorest.Response `json:"-"` 200 // Value - A list of operations supported by Microsoft.ManagedIdentity Resource Provider. 201 Value *[]Operation `json:"value,omitempty"` 202 // NextLink - The url to get the next page of results, if any. 203 NextLink *string `json:"nextLink,omitempty"` 204} 205 206// OperationListResultIterator provides access to a complete listing of Operation values. 207type OperationListResultIterator struct { 208 i int 209 page OperationListResultPage 210} 211 212// NextWithContext advances to the next value. If there was an error making 213// the request the iterator does not advance and the error is returned. 214func (iter *OperationListResultIterator) NextWithContext(ctx context.Context) (err error) { 215 if tracing.IsEnabled() { 216 ctx = tracing.StartSpan(ctx, fqdn+"/OperationListResultIterator.NextWithContext") 217 defer func() { 218 sc := -1 219 if iter.Response().Response.Response != nil { 220 sc = iter.Response().Response.Response.StatusCode 221 } 222 tracing.EndSpan(ctx, sc, err) 223 }() 224 } 225 iter.i++ 226 if iter.i < len(iter.page.Values()) { 227 return nil 228 } 229 err = iter.page.NextWithContext(ctx) 230 if err != nil { 231 iter.i-- 232 return err 233 } 234 iter.i = 0 235 return nil 236} 237 238// Next advances to the next value. If there was an error making 239// the request the iterator does not advance and the error is returned. 240// Deprecated: Use NextWithContext() instead. 241func (iter *OperationListResultIterator) Next() error { 242 return iter.NextWithContext(context.Background()) 243} 244 245// NotDone returns true if the enumeration should be started or is not yet complete. 246func (iter OperationListResultIterator) NotDone() bool { 247 return iter.page.NotDone() && iter.i < len(iter.page.Values()) 248} 249 250// Response returns the raw server response from the last page request. 251func (iter OperationListResultIterator) Response() OperationListResult { 252 return iter.page.Response() 253} 254 255// Value returns the current value or a zero-initialized value if the 256// iterator has advanced beyond the end of the collection. 257func (iter OperationListResultIterator) Value() Operation { 258 if !iter.page.NotDone() { 259 return Operation{} 260 } 261 return iter.page.Values()[iter.i] 262} 263 264// Creates a new instance of the OperationListResultIterator type. 265func NewOperationListResultIterator(page OperationListResultPage) OperationListResultIterator { 266 return OperationListResultIterator{page: page} 267} 268 269// IsEmpty returns true if the ListResult contains no values. 270func (olr OperationListResult) IsEmpty() bool { 271 return olr.Value == nil || len(*olr.Value) == 0 272} 273 274// operationListResultPreparer prepares a request to retrieve the next set of results. 275// It returns nil if no more results exist. 276func (olr OperationListResult) operationListResultPreparer(ctx context.Context) (*http.Request, error) { 277 if olr.NextLink == nil || len(to.String(olr.NextLink)) < 1 { 278 return nil, nil 279 } 280 return autorest.Prepare((&http.Request{}).WithContext(ctx), 281 autorest.AsJSON(), 282 autorest.AsGet(), 283 autorest.WithBaseURL(to.String(olr.NextLink))) 284} 285 286// OperationListResultPage contains a page of Operation values. 287type OperationListResultPage struct { 288 fn func(context.Context, OperationListResult) (OperationListResult, error) 289 olr OperationListResult 290} 291 292// NextWithContext advances to the next page of values. If there was an error making 293// the request the page does not advance and the error is returned. 294func (page *OperationListResultPage) NextWithContext(ctx context.Context) (err error) { 295 if tracing.IsEnabled() { 296 ctx = tracing.StartSpan(ctx, fqdn+"/OperationListResultPage.NextWithContext") 297 defer func() { 298 sc := -1 299 if page.Response().Response.Response != nil { 300 sc = page.Response().Response.Response.StatusCode 301 } 302 tracing.EndSpan(ctx, sc, err) 303 }() 304 } 305 next, err := page.fn(ctx, page.olr) 306 if err != nil { 307 return err 308 } 309 page.olr = next 310 return nil 311} 312 313// Next advances to the next page of values. If there was an error making 314// the request the page does not advance and the error is returned. 315// Deprecated: Use NextWithContext() instead. 316func (page *OperationListResultPage) Next() error { 317 return page.NextWithContext(context.Background()) 318} 319 320// NotDone returns true if the page enumeration should be started or is not yet complete. 321func (page OperationListResultPage) NotDone() bool { 322 return !page.olr.IsEmpty() 323} 324 325// Response returns the raw server response from the last page request. 326func (page OperationListResultPage) Response() OperationListResult { 327 return page.olr 328} 329 330// Values returns the slice of values for the current page or nil if there are no values. 331func (page OperationListResultPage) Values() []Operation { 332 if page.olr.IsEmpty() { 333 return nil 334 } 335 return *page.olr.Value 336} 337 338// Creates a new instance of the OperationListResultPage type. 339func NewOperationListResultPage(getNextPage func(context.Context, OperationListResult) (OperationListResult, error)) OperationListResultPage { 340 return OperationListResultPage{fn: getNextPage} 341} 342 343// UserAssignedIdentitiesListResult values returned by the List operation. 344type UserAssignedIdentitiesListResult struct { 345 autorest.Response `json:"-"` 346 // Value - The collection of userAssignedIdentities returned by the listing operation. 347 Value *[]Identity `json:"value,omitempty"` 348 // NextLink - The url to get the next page of results, if any. 349 NextLink *string `json:"nextLink,omitempty"` 350} 351 352// UserAssignedIdentitiesListResultIterator provides access to a complete listing of Identity values. 353type UserAssignedIdentitiesListResultIterator struct { 354 i int 355 page UserAssignedIdentitiesListResultPage 356} 357 358// NextWithContext advances to the next value. If there was an error making 359// the request the iterator does not advance and the error is returned. 360func (iter *UserAssignedIdentitiesListResultIterator) NextWithContext(ctx context.Context) (err error) { 361 if tracing.IsEnabled() { 362 ctx = tracing.StartSpan(ctx, fqdn+"/UserAssignedIdentitiesListResultIterator.NextWithContext") 363 defer func() { 364 sc := -1 365 if iter.Response().Response.Response != nil { 366 sc = iter.Response().Response.Response.StatusCode 367 } 368 tracing.EndSpan(ctx, sc, err) 369 }() 370 } 371 iter.i++ 372 if iter.i < len(iter.page.Values()) { 373 return nil 374 } 375 err = iter.page.NextWithContext(ctx) 376 if err != nil { 377 iter.i-- 378 return err 379 } 380 iter.i = 0 381 return nil 382} 383 384// Next advances to the next value. If there was an error making 385// the request the iterator does not advance and the error is returned. 386// Deprecated: Use NextWithContext() instead. 387func (iter *UserAssignedIdentitiesListResultIterator) Next() error { 388 return iter.NextWithContext(context.Background()) 389} 390 391// NotDone returns true if the enumeration should be started or is not yet complete. 392func (iter UserAssignedIdentitiesListResultIterator) NotDone() bool { 393 return iter.page.NotDone() && iter.i < len(iter.page.Values()) 394} 395 396// Response returns the raw server response from the last page request. 397func (iter UserAssignedIdentitiesListResultIterator) Response() UserAssignedIdentitiesListResult { 398 return iter.page.Response() 399} 400 401// Value returns the current value or a zero-initialized value if the 402// iterator has advanced beyond the end of the collection. 403func (iter UserAssignedIdentitiesListResultIterator) Value() Identity { 404 if !iter.page.NotDone() { 405 return Identity{} 406 } 407 return iter.page.Values()[iter.i] 408} 409 410// Creates a new instance of the UserAssignedIdentitiesListResultIterator type. 411func NewUserAssignedIdentitiesListResultIterator(page UserAssignedIdentitiesListResultPage) UserAssignedIdentitiesListResultIterator { 412 return UserAssignedIdentitiesListResultIterator{page: page} 413} 414 415// IsEmpty returns true if the ListResult contains no values. 416func (uailr UserAssignedIdentitiesListResult) IsEmpty() bool { 417 return uailr.Value == nil || len(*uailr.Value) == 0 418} 419 420// userAssignedIdentitiesListResultPreparer prepares a request to retrieve the next set of results. 421// It returns nil if no more results exist. 422func (uailr UserAssignedIdentitiesListResult) userAssignedIdentitiesListResultPreparer(ctx context.Context) (*http.Request, error) { 423 if uailr.NextLink == nil || len(to.String(uailr.NextLink)) < 1 { 424 return nil, nil 425 } 426 return autorest.Prepare((&http.Request{}).WithContext(ctx), 427 autorest.AsJSON(), 428 autorest.AsGet(), 429 autorest.WithBaseURL(to.String(uailr.NextLink))) 430} 431 432// UserAssignedIdentitiesListResultPage contains a page of Identity values. 433type UserAssignedIdentitiesListResultPage struct { 434 fn func(context.Context, UserAssignedIdentitiesListResult) (UserAssignedIdentitiesListResult, error) 435 uailr UserAssignedIdentitiesListResult 436} 437 438// NextWithContext advances to the next page of values. If there was an error making 439// the request the page does not advance and the error is returned. 440func (page *UserAssignedIdentitiesListResultPage) NextWithContext(ctx context.Context) (err error) { 441 if tracing.IsEnabled() { 442 ctx = tracing.StartSpan(ctx, fqdn+"/UserAssignedIdentitiesListResultPage.NextWithContext") 443 defer func() { 444 sc := -1 445 if page.Response().Response.Response != nil { 446 sc = page.Response().Response.Response.StatusCode 447 } 448 tracing.EndSpan(ctx, sc, err) 449 }() 450 } 451 next, err := page.fn(ctx, page.uailr) 452 if err != nil { 453 return err 454 } 455 page.uailr = next 456 return nil 457} 458 459// Next advances to the next page of values. If there was an error making 460// the request the page does not advance and the error is returned. 461// Deprecated: Use NextWithContext() instead. 462func (page *UserAssignedIdentitiesListResultPage) Next() error { 463 return page.NextWithContext(context.Background()) 464} 465 466// NotDone returns true if the page enumeration should be started or is not yet complete. 467func (page UserAssignedIdentitiesListResultPage) NotDone() bool { 468 return !page.uailr.IsEmpty() 469} 470 471// Response returns the raw server response from the last page request. 472func (page UserAssignedIdentitiesListResultPage) Response() UserAssignedIdentitiesListResult { 473 return page.uailr 474} 475 476// Values returns the slice of values for the current page or nil if there are no values. 477func (page UserAssignedIdentitiesListResultPage) Values() []Identity { 478 if page.uailr.IsEmpty() { 479 return nil 480 } 481 return *page.uailr.Value 482} 483 484// Creates a new instance of the UserAssignedIdentitiesListResultPage type. 485func NewUserAssignedIdentitiesListResultPage(getNextPage func(context.Context, UserAssignedIdentitiesListResult) (UserAssignedIdentitiesListResult, error)) UserAssignedIdentitiesListResultPage { 486 return UserAssignedIdentitiesListResultPage{fn: getNextPage} 487} 488