class NsBackupAssociation

La classe NsBackupAssociation permet d'associer une sauvegarde (NsBackup) à un utilisateur (NsUser).

Plusieurs utilisateurs peuvent posséder la même sauvegarde tant qu'un seul utilisateur possède des droits d'écriture. L'attribution d'une sauvegarde à plusieurs utilisateurs possédant des droits d'écriture peut provoquer l'écrasement des données et la perte de fichiers.

ID : __int64

L'identificateur unique de l'association sauvegarde/utilisateur. Les constantes suivantes peuvent-être utilisées :

  • THUSRBCKPASSOC_CREATE = -1 : l'objet n'existe pas et doit être créé.

BackupID : __int64

La sauvegarde (NsBackup) concernée par l'association.

UserID : __int64

L'utilisateur (NsUser) concerné par l'association.

CanBackup : VARIANT_BOOL

Une variable booléenne indiquant si l'utilisateur peut exécuter la sauvegarde.

CanRestore : VARIANT_BOOL

Une variable booléenne indiquant si l'utilisateur peut restaurer des données depuis la sauvegarde.

CanClearOrRemove : VARIANT_BOOL

Une variable booléenne indiquant si l'utilisateur peut effacer ou supprimer la sauvegarde.

VARIANT_BOOL Load(NsConnection Connection, __int64 UserID, __int64 BackupID)

Charge l'association attribuant la sauvegarde BackupID à l'utilisateur UserID.

VARIANT_BOOL Update(NsConnection Connection)

Créée ou met à jour l'association décrite par l'objet.

VARIANT_BOOL Delete(NsConnection Connection)

Supprime l'association décrite par l'objet.

Création d'une association entre une sauvegarde et un utilisateur saisis de manière interactive

Set connection = CreateObject("NsAPI.NsConnection")
Set sysutils = CreateObject("NsAPI.NsScriptUtils")

' Renvoit l'ID d'une sauvegarde à partir de son nom
Function FindBackupByName(backups, name)
  FindBackupByName = -1
  
  for each backup in backups
    if StrComp(backup.Name, name, vbTextCompare) = 0 then
      FindBackupByName = backup.ID
      Exit Function
    end if
  next
End Function

' Renvoit l'ID d'un utilisateur à partir de sa description / nom complet
Function FindUserByName(groups, connection, name)
  FindUserByName = -1
  
  for each group in groups
    set users = group.Users(connection)
    for each user in users
      if StrComp(user.description, name, vbTextCompare) = 0 then
        FindUserByName = user.ID
        Exit Function
      end if
    next
  next
End Function


if connection.ConnectToLocalServer then
  set server = CreateObject("NsAPI.NsServer")

  if server.Load(connection) then
    ' Demander un nom de sauvegarde
    backupName = InputBox("Saisissez le nom d'une sauvegarde sur le serveur (ex : Ma sauvegarde) : ", "Test de l'API UB", "")
    
    if backupName <> "" then
      ' Demander un nom d'utilisateur
      userName = InputBox("Saisissez le nom d'un utilisateur sur le serveur (ex : Jacques Labarre) : ", "Test de l'API UB", "")
      
      if userName <> "" then
        ' Transformer le nom de la sauvegarde en son identifiant numérique unique
        backupID = FindBackupByName(server.AllBackups(connection), backupName)

        ' Est ce qu'on a bien trouvé une sauvegarde valide ?
        if sysutils.CompareInt64(backupID, -1) = 0 then
          MsgBox "Erreur : la sauvegarde """ & backupName & """ n'a pu être trouvée sur le serveur."
        else
          ' Transformer le nom de l'utilisateur en son identifiant numérique unique
           userID = FindUserByName(server.UserGroups(connection), connection, userName)
           
           ' Est-ce qu'on a bien trouvé un utilisateur valide ?
           if sysutils.CompareInt64(userID, -1) = 0 then
             MsgBox "Erreur : l'utilisateur """ & userName & """ n'a pu être trouvé sur le serveur."
           else
             ' Si on est ici, la sauvegarde et l'utilisateur sont tous les deux valides
             set association = CreateObject("NsAPI.NsBackupAssociation")
             
             ' Charger l'association entre utilisateur et sauvegarde. Si la fonction
             ' échoue, l'association n'existe pas.
             if association.Load(connection, userID, backupID) then
               MsgBox "L'association entre l'utilisateur """ & userName & """ et la sauvegarde """ & backupName & """ existe déjà."
             else
               if MsgBox("L'association n'existe pas, souhaitez-vous la créer ?", vbQuestion + vbYesNo + vbApplicationModal, "Test de l'API UB") = vbYes then
                 association.ID = -1 ' Constante nécessaire à la création de l'objet
                 association.UserID = userID
                 association.BackupID = backupID
                 association.CanBackup = false ' Pour la démo, on ne permet que de restaurer des données
                 association.CanRestore = true
                 association.CanClearOrRemove = false
                 
                 ' Créer l'association
                 if association.Update(connection) then
                   MsgBox "L'association entre l'utilisateur """ & userName & """ et la sauvegarde """ & backupName & """ a été créée."
                   ' Terminé !
                 else
                   MsgBox "Erreur inconnue lors de l'association entre l'utilisateur """ & userName & """ et la sauvegarde """ & backupName & """."
                 end if
               end if
             end if
           end if
         end if
      end if
    end if
  else
    MsgBox "Impossible de charger les informations serveur."
  end if
  
  connection.Disconnect
else
  MsgBox "Connexion au serveur local impossible."
end if