Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- func (vs *VSphere)GetZone(ctx context.Context) (cloudprovider.Zone, error) {
- nodeName,_ := vs.CurrentNodeName(ctx,"")
- zone := cloudprovider.Zone{}
- vSphereConn := vclib.VSphereConnection{
- Username: vs.cfg.Global.User,
- Password: vs.cfg.Global.Password,
- Hostname: vs.cfg.Global.VCenterIP,
- Insecure: vs.cfg.Global.InsecureFlag,
- RoundTripperCount: vs.cfg.Global.RoundTripperCount,
- Port: vs.cfg.Global.VCenterPort,
- CACert: vs.cfg.Global.CAFile,
- Thumbprint: vs.cfg.Global.Thumbprint,
- }
- err := vSphereConn.Connect(ctx)
- if err != nil {
- glog.Errorf("Cannot connent vsphere. get %s Zone error!!!", nodeName)
- return cloudprovider.Zone{}, err}
- dc,err := vclib.GetDatacenter(ctx,&vSphereConn,vs.cfg.Workspace.Datacenter)
- if err != nil {
- glog.Errorf("Cannot connent vsphere. get %s Zone error!!!", nodeName)
- return cloudprovider.Zone{}, err}
- vm,err := dc.GetVMByUUID(ctx,vs.vmUUID)
- if err != nil {
- glog.Errorf("Cannot find VM. get %s Zone error!!!", nodeName)
- return cloudprovider.Zone{}, err
- }
- client,_ := vSphereConn.NewClient(ctx)
- if err != nil {
- glog.Errorf("Cannot connent vsphere. get %s Zone error!!!", nodeName)
- return cloudprovider.Zone{}, err
- }
- zoneManagaers := tagmanagers.NewTagManagers(client)
- err = zoneManagaers.WithLogout(ctx, func(client *tagmanagers.RestClient) error {
- ref := vm.VirtualMachine.Reference()
- tags,err := client.ListAttachedTags(
- ctx,
- &ref,
- )
- if err != nil {
- glog.Errorf("Cannot list tag. get %s Zone error!!!", nodeName)
- return err
- }
- for _,value:= range tags{
- tag,err := client.GetTag(ctx,value)
- if err != nil {
- glog.Errorf("get tag %s error",value)
- continue
- }
- category,err := client.GetCategory(ctx,tag.CategoryID)
- if err != nil {
- glog.Errorf("get tag %s error",value)
- continue
- }
- if category.Name == "Zone" {
- zone.FailureDomain = tag.Name
- }
- if category.Name == "Region"{
- zone.Region = tag.Name
- }
- }
- if zone.Region == "" || zone.FailureDomain == ""{
- glog.Errorf("Cannot get Zone. %s zone" +
- " not found!!!", nodeName)
- return errors.New("not get Zone")
- }
- return nil
- })
- if err != nil {
- glog.Errorf("Cannot get Zone. get %s Zone error!!!", nodeName)
- return cloudprovider.Zone{}, err
- }
- return zone, nil
- }
Add Comment
Please, Sign In to add comment