Guest User

Untitled

a guest
Jul 15th, 2018
122
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.30 KB | None | 0 0
  1. func (vs *VSphere)GetZone(ctx context.Context) (cloudprovider.Zone, error) {
  2. nodeName,_ := vs.CurrentNodeName(ctx,"")
  3. zone := cloudprovider.Zone{}
  4. vSphereConn := vclib.VSphereConnection{
  5. Username: vs.cfg.Global.User,
  6. Password: vs.cfg.Global.Password,
  7. Hostname: vs.cfg.Global.VCenterIP,
  8. Insecure: vs.cfg.Global.InsecureFlag,
  9. RoundTripperCount: vs.cfg.Global.RoundTripperCount,
  10. Port: vs.cfg.Global.VCenterPort,
  11. CACert: vs.cfg.Global.CAFile,
  12. Thumbprint: vs.cfg.Global.Thumbprint,
  13. }
  14. err := vSphereConn.Connect(ctx)
  15.  
  16. if err != nil {
  17. glog.Errorf("Cannot connent vsphere. get %s Zone error!!!", nodeName)
  18. return cloudprovider.Zone{}, err}
  19.  
  20. dc,err := vclib.GetDatacenter(ctx,&vSphereConn,vs.cfg.Workspace.Datacenter)
  21. if err != nil {
  22. glog.Errorf("Cannot connent vsphere. get %s Zone error!!!", nodeName)
  23. return cloudprovider.Zone{}, err}
  24.  
  25. vm,err := dc.GetVMByUUID(ctx,vs.vmUUID)
  26. if err != nil {
  27. glog.Errorf("Cannot find VM. get %s Zone error!!!", nodeName)
  28. return cloudprovider.Zone{}, err
  29. }
  30. client,_ := vSphereConn.NewClient(ctx)
  31. if err != nil {
  32. glog.Errorf("Cannot connent vsphere. get %s Zone error!!!", nodeName)
  33. return cloudprovider.Zone{}, err
  34. }
  35.  
  36. zoneManagaers := tagmanagers.NewTagManagers(client)
  37. err = zoneManagaers.WithLogout(ctx, func(client *tagmanagers.RestClient) error {
  38.  
  39. ref := vm.VirtualMachine.Reference()
  40. tags,err := client.ListAttachedTags(
  41. ctx,
  42. &ref,
  43. )
  44.  
  45. if err != nil {
  46. glog.Errorf("Cannot list tag. get %s Zone error!!!", nodeName)
  47. return err
  48. }
  49.  
  50.  
  51. for _,value:= range tags{
  52. tag,err := client.GetTag(ctx,value)
  53.  
  54. if err != nil {
  55. glog.Errorf("get tag %s error",value)
  56. continue
  57. }
  58. category,err := client.GetCategory(ctx,tag.CategoryID)
  59. if err != nil {
  60. glog.Errorf("get tag %s error",value)
  61. continue
  62. }
  63. if category.Name == "Zone" {
  64. zone.FailureDomain = tag.Name
  65. }
  66. if category.Name == "Region"{
  67. zone.Region = tag.Name
  68. }
  69. }
  70. if zone.Region == "" || zone.FailureDomain == ""{
  71. glog.Errorf("Cannot get Zone. %s zone" +
  72. " not found!!!", nodeName)
  73. return errors.New("not get Zone")
  74. }
  75. return nil
  76. })
  77. if err != nil {
  78. glog.Errorf("Cannot get Zone. get %s Zone error!!!", nodeName)
  79. return cloudprovider.Zone{}, err
  80. }
  81. return zone, nil
  82. }
Add Comment
Please, Sign In to add comment