packages feed

freckle-app 1.9.0.1 → 1.9.0.2

raw patch · 5 files changed

+42/−20 lines, 5 filesPVP: major bump suggested

API removals or changes: PVP suggests a major version bump

API changes (from Hackage documentation)

+ Freckle.App.Ecs: EcsMetadataErrorNotEnabled :: EcsMetadataError
+ Freckle.App.Ecs: EcsMetadataErrorUnexpectedStatus :: Request -> Status -> EcsMetadataError
- Freckle.App.Ecs: EcsMetadataErrorInvalidJSON :: HttpDecodeError -> EcsMetadataError
+ Freckle.App.Ecs: EcsMetadataErrorInvalidJSON :: Request -> HttpDecodeError -> EcsMetadataError
- Freckle.App.Ecs: getEcsMetadata :: (MonadIO m, MonadError EcsMetadataError m) => m (Maybe EcsMetadata)
+ Freckle.App.Ecs: getEcsMetadata :: (MonadIO m, MonadError EcsMetadataError m) => m EcsMetadata

Files

CHANGELOG.md view
@@ -1,4 +1,8 @@-## [_Unreleased_](https://github.com/freckle/freckle-app/compare/v1.9.0.1...main)+## [_Unreleased_](https://github.com/freckle/freckle-app/compare/v1.9.0.2...main)++## [v1.9.0.2](https://github.com/freckle/freckle-app/compare/v1.9.0.1...v1.9.0.2)++- Fix for not setting ECS Metadata tags in `StatsClient`  ## [v1.9.0.1](https://github.com/freckle/freckle-app/compare/v1.9.0.0...v1.9.0.1) 
freckle-app.cabal view
@@ -1,6 +1,6 @@ cabal-version:      1.18 name:               freckle-app-version:            1.9.0.1+version:            1.9.0.2 license:            MIT license-file:       LICENSE maintainer:         Freckle Education
library/Freckle/App/Ecs.hs view
@@ -21,10 +21,16 @@   }  data EcsMetadataError-  = EcsMetadataErrorInvalidURI String-  | EcsMetadataErrorInvalidJSON HttpDecodeError+  = EcsMetadataErrorNotEnabled+  | EcsMetadataErrorInvalidURI String+  | EcsMetadataErrorUnexpectedStatus Request Status+  | EcsMetadataErrorInvalidJSON Request HttpDecodeError   deriving stock Show +-- | Parsing for the @/@ response+--+-- <https://docs.aws.amazon.com/AmazonECS/latest/developerguide/task-metadata-endpoint-v4.html#task-metadata-endpoint-v4-examples>+-- data EcsContainerMetadata = EcsContainerMetadata   { ecmDockerId :: Text   , ecmDockerName :: Text@@ -36,6 +42,10 @@ instance FromJSON EcsContainerMetadata where   parseJSON = genericParseJSON $ aesonDropPrefix "ecm" +-- | Parsing of the @/task@ response+--+-- <https://docs.aws.amazon.com/AmazonECS/latest/developerguide/task-metadata-endpoint-v4.html#task-metadata-endpoint-v4-response>+-- data EcsContainerTaskMetadata = EcsContainerTaskMetadata   { ectmCluster :: Text   , ectmTaskARN :: Text@@ -50,24 +60,32 @@ aesonDropPrefix :: String -> Options aesonDropPrefix x = defaultOptions { fieldLabelModifier = dropPrefix x } -getEcsMetadata-  :: (MonadIO m, MonadError EcsMetadataError m) => m (Maybe EcsMetadata)+getEcsMetadata :: (MonadIO m, MonadError EcsMetadataError m) => m EcsMetadata getEcsMetadata = do-  mURI <- liftIO $ lookupEnv "ECS_CONTAINER_METADATA_URI"+  mURI <-+    liftIO $ (<|>) <$> lookupEnv "ECS_CONTAINER_METADATA_URI_V4" <*> lookupEnv+      "ECS_CONTAINER_METADATA_URI" -  for mURI $ \uri ->-    EcsMetadata-      <$> makeContainerMetadataRequest (uri <> "/")-      <*> makeContainerMetadataRequest (uri <> "/task")+  uri <- maybe (throwError EcsMetadataErrorNotEnabled) pure mURI +  EcsMetadata+    <$> makeContainerMetadataRequest uri+    <*> makeContainerMetadataRequest (uri <> "/task")+ makeContainerMetadataRequest   :: (MonadIO m, MonadError EcsMetadataError m, FromJSON a) => String -> m a-makeContainerMetadataRequest =-  mapEither EcsMetadataErrorInvalidJSON-    . getResponseBody-    <=< httpJson-    <=< mapEither (EcsMetadataErrorInvalidURI . displayException)-    . parseRequest+makeContainerMetadataRequest uri = do+  req <- mapEither (EcsMetadataErrorInvalidURI . displayException)+    $ parseRequest uri+  resp <- httpJson req++  let status = getResponseStatus resp++  unless (statusIsSuccessful status)+    $ throwError+    $ EcsMetadataErrorUnexpectedStatus req status++  mapEither (EcsMetadataErrorInvalidJSON req) $ getResponseBody resp  mapEither :: MonadError e m => (x -> e) -> Either x a -> m a mapEither f = either (throwError . f) pure
library/Freckle/App/Stats.hs view
@@ -267,8 +267,8 @@  getEcsMetadataTags :: MonadIO m => m [(Text, Text)] getEcsMetadataTags = do-  emMetadata <- runExceptT getEcsMetadata-  either (([] <$) . err) (pure . maybe [] toTags) emMetadata+  eMetadata <- runExceptT getEcsMetadata+  either (([] <$) . err) (pure . toTags) eMetadata  where   err e = liftIO $ hPutStrLn stderr $ "Error reading ECS Metadata: " <> show e 
package.yaml view
@@ -1,5 +1,5 @@ name: freckle-app-version: 1.9.0.1+version: 1.9.0.2 maintainer: Freckle Education category: Utils github: freckle/freckle-app