webapp: put new repos in standard groups

I'm using transfer for most things, both removable drives and cloud
storage, because it's the safest choice. We'll see if it makes sense
to prompt for the group when setting this up, or let the user pick
something else after the fact.
This commit is contained in:
Joey Hess 2012-10-10 15:27:25 -04:00
parent f9b81c7a75
commit 3490977d97
5 changed files with 18 additions and 13 deletions
Annex
Assistant/WebApp/Configurators
Logs

View file

@ -5,7 +5,12 @@
- Licensed under the GNU GPL version 3 or higher. - Licensed under the GNU GPL version 3 or higher.
-} -}
module Annex.Groups where module Annex.StandardGroups where
import Common.Annex
import Logs.Group
import qualified Data.Set as S
data StandardGroup = ClientGroup | TransferGroup | ArchiveGroup | BackupGroup data StandardGroup = ClientGroup | TransferGroup | ArchiveGroup | BackupGroup
@ -28,3 +33,6 @@ preferredContent ClientGroup = "exclude=*/archive/*"
preferredContent TransferGroup = "not inallgroup=client and " ++ preferredContent ClientGroup preferredContent TransferGroup = "not inallgroup=client and " ++ preferredContent ClientGroup
preferredContent ArchiveGroup = "not copies=archive:1" preferredContent ArchiveGroup = "not copies=archive:1"
preferredContent BackupGroup = "" -- all content is preferred preferredContent BackupGroup = "" -- all content is preferred
setStandardGroup :: UUID -> StandardGroup -> Annex ()
setStandardGroup u = groupSet u . S.singleton . fromStandardGroup

View file

@ -28,13 +28,12 @@ import Utility.DiskFree
import Utility.DataUnits import Utility.DataUnits
import Utility.Network import Utility.Network
import Remote (prettyListUUIDs) import Remote (prettyListUUIDs)
import Logs.Group
import Annex.UUID import Annex.UUID
import Annex.StandardGroups
import Yesod import Yesod
import Data.Text (Text) import Data.Text (Text)
import qualified Data.Text as T import qualified Data.Text as T
import qualified Data.Set as S
import Data.Char import Data.Char
import System.Posix.Directory import System.Posix.Directory
import qualified Control.Exception as E import qualified Control.Exception as E
@ -147,7 +146,7 @@ getNewRepositoryR = bootstrap (Just Config) $ do
let path = T.unpack p let path = T.unpack p
liftIO $ makeRepo path False liftIO $ makeRepo path False
u <- liftIO $ initRepo path Nothing u <- liftIO $ initRepo path Nothing
runAnnex () $ groupSet u (S.singleton "clients") runAnnex () $ setStandardGroup u ClientGroup
liftIO $ addAutoStart path liftIO $ addAutoStart path
redirect $ SwitchToRepositoryR path redirect $ SwitchToRepositoryR path
_ -> $(widgetFile "configurators/newrepository") _ -> $(widgetFile "configurators/newrepository")
@ -196,7 +195,7 @@ getAddDriveR = bootstrap (Just Config) $ do
liftIO $ makerepo dir liftIO $ makerepo dir
u <- liftIO $ initRepo dir $ Just remotename u <- liftIO $ initRepo dir $ Just remotename
r <- addremote dir remotename r <- addremote dir remotename
runAnnex () $ groupSet u (S.singleton "drives") runAnnex () $ setStandardGroup u TransferGroup
syncRemote r syncRemote r
where where
dir = mountpoint </> gitAnnexAssistantDefaultDir dir = mountpoint </> gitAnnexAssistantDefaultDir
@ -266,7 +265,7 @@ startFullAssistant path = do
webapp <- getYesod webapp <- getYesod
liftIO $ makeRepo path False liftIO $ makeRepo path False
u <- liftIO $ initRepo path Nothing u <- liftIO $ initRepo path Nothing
runAnnex () $ groupSet u (S.singleton "clients") runAnnex () $ setStandardGroup u ClientGroup
url <- liftIO $ do url <- liftIO $ do
addAutoStart path addAutoStart path
changeWorkingDirectory path changeWorkingDirectory path

View file

@ -21,12 +21,11 @@ import qualified Remote.S3 as S3
import Logs.Remote import Logs.Remote
import qualified Remote import qualified Remote
import Types.Remote (RemoteConfig) import Types.Remote (RemoteConfig)
import Logs.Group import Annex.StandardGroups
import Yesod import Yesod
import Data.Text (Text) import Data.Text (Text)
import qualified Data.Text as T import qualified Data.Text as T
import qualified Data.Set as S
import qualified Data.Map as M import qualified Data.Map as M
s3Configurator :: Widget -> Handler RepHtml s3Configurator :: Widget -> Handler RepHtml
@ -94,7 +93,7 @@ getAddS3R = s3Configurator $ do
let authtoken = webAppFormAuthToken let authtoken = webAppFormAuthToken
$(widgetFile "configurators/adds3") $(widgetFile "configurators/adds3")
setgroup r = runAnnex () $ setgroup r = runAnnex () $
groupSet (Remote.uuid r) (S.singleton "servers") setStandardGroup (Remote.uuid r) TransferGroup
getEnableS3R :: UUID -> Handler RepHtml getEnableS3R :: UUID -> Handler RepHtml
getEnableS3R uuid = s3Configurator $ do getEnableS3R uuid = s3Configurator $ do

View file

@ -19,13 +19,12 @@ import Utility.Yesod
import Utility.Rsync (rsyncUrlIsShell) import Utility.Rsync (rsyncUrlIsShell)
import Logs.Remote import Logs.Remote
import Remote import Remote
import Logs.Group import Annex.StandardGroups
import Yesod import Yesod
import Data.Text (Text) import Data.Text (Text)
import qualified Data.Text as T import qualified Data.Text as T
import qualified Data.Map as M import qualified Data.Map as M
import qualified Data.Set as S
import Network.Socket import Network.Socket
import System.Posix.User import System.Posix.User
@ -348,4 +347,4 @@ isRsyncNet Nothing = False
isRsyncNet (Just host) = ".rsync.net" `T.isSuffixOf` T.toLower host isRsyncNet (Just host) = ".rsync.net" `T.isSuffixOf` T.toLower host
setupGroup :: Remote -> Handler () setupGroup :: Remote -> Handler ()
setupGroup r = runAnnex () $ groupSet (Remote.uuid r) (S.singleton "server") setupGroup r = runAnnex () $ setStandardGroup (Remote.uuid r) TransferGroup

View file

@ -25,10 +25,10 @@ import Logs.UUIDBased
import Limit import Limit
import qualified Utility.Matcher import qualified Utility.Matcher
import Annex.UUID import Annex.UUID
import Annex.Groups
import Git.FilePath import Git.FilePath
import Types.Group import Types.Group
import Logs.Group import Logs.Group
import Annex.StandardGroups
{- Filename of preferred-content.log. -} {- Filename of preferred-content.log. -}
preferredContentLog :: FilePath preferredContentLog :: FilePath