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  }