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 +5/−1
- freckle-app.cabal +1/−1
- library/Freckle/App/Ecs.hs +33/−15
- library/Freckle/App/Stats.hs +2/−2
- package.yaml +1/−1
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