github.com/Cloud-Foundations/Dominator@v0.3.4/hypervisor/manager/vmCredentials.go (about) 1 package manager 2 3 import ( 4 "path/filepath" 5 6 "github.com/Cloud-Foundations/Dominator/lib/srpc" 7 proto "github.com/Cloud-Foundations/Dominator/proto/hypervisor" 8 ) 9 10 func (m *Manager) replaceVmCredentials( 11 request proto.ReplaceVmCredentialsRequest, 12 authInfo *srpc.AuthInformation) error { 13 vm, err := m.getVmLockAndAuth(request.IpAddress, true, authInfo, nil) 14 if err != nil { 15 return err 16 } 17 defer vm.mutex.Unlock() 18 identityName, identityExpires, err := validateIdentityKeyPair( 19 request.IdentityCertificate, request.IdentityKey, authInfo.Username) 20 if err != nil { 21 return err 22 } 23 err = writeKeyPair(request.IdentityCertificate, request.IdentityKey, 24 filepath.Join(vm.dirname, IdentityCertFile), 25 filepath.Join(vm.dirname, IdentityKeyFile)) 26 if err != nil { 27 return err 28 } 29 if !vm.IdentityExpires.Equal(identityExpires) || 30 vm.IdentityName != identityName { 31 vm.IdentityExpires = identityExpires 32 vm.IdentityName = identityName 33 vm.writeAndSendInfo() 34 } 35 return nil 36 }