MarkInstanceDisksActive is used by instance migration. Disabled pylint R0904 on class Client in lib/wconfd.py due to excess number of public methods.
Signed-off-by: BSRK Aditya <[email protected]> --- lib/wconfd.py | 2 ++ src/Ganeti/WConfd/ConfigModifications.hs | 18 ++++++++++++++++++ 2 files changed, 20 insertions(+) diff --git a/lib/wconfd.py b/lib/wconfd.py index d834e68..9d42b44 100644 --- a/lib/wconfd.py +++ b/lib/wconfd.py @@ -43,6 +43,8 @@ from ganeti.rpc import errors class Client(cl.AbstractStubClient, stub.ClientRpcStub): + # R0904: Too many public methods + # pylint: disable=R0904 """High-level WConfD client implementation. This uses a backing Transport-like class on top of which it diff --git a/src/Ganeti/WConfd/ConfigModifications.hs b/src/Ganeti/WConfd/ConfigModifications.hs index 7daf2f2..e920927 100644 --- a/src/Ganeti/WConfd/ConfigModifications.hs +++ b/src/Ganeti/WConfd/ConfigModifications.hs @@ -39,6 +39,7 @@ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. module Ganeti.WConfd.ConfigModifications where +import Control.Applicative ((<$>)) import Control.Lens.Getter ((^.)) import Control.Lens.Setter ((.~), (%~)) import Control.Lens.Traversal (mapMOf) @@ -395,6 +396,22 @@ allocatePort = do (return ()) return . MaybeForJSON $ maybePort +-- | Mark the status of instance disks active. +markInstanceDisksActive :: InstanceUUID -> WConfdMonad (MaybeForJSON Instance) +markInstanceDisksActive iUuid = do + ct <- liftIO getClockTime + MaybeForJSON <$> modifyConfigAndReturnWithLock (\_ cs -> do + inst <- toError $ getInstanceByUUID cs iUuid + if instDisksActive inst == Just True + then return (inst, cs) + else do + let inst' = (instDisksActiveL .~ True) inst + iL = csConfigDataL . configInstancesL + cs' <- fmap (flip (iL .~) cs) . toError $ replaceIn ct inst' (cs ^. iL) + inst'' <- toError $ getInstanceByUUID cs' iUuid + return (inst'', cs')) + (return ()) + -- | The configuration is updated by the provided cluster updateCluster :: Cluster -> WConfdMonad (MaybeForJSON TimeAsDoubleJSON) updateCluster cluster = do @@ -480,6 +497,7 @@ exportedFunctions = [ 'addInstance , 'addInstanceDisk , 'allocatePort , 'attachInstanceDisk + , 'markInstanceDisksActive , 'updateCluster , 'updateDisk , 'updateInstance -- 1.7.10.4
