packages feed

google-cloud-compute-1.1.0.0: README.md

# google-cloud-compute

Haskell idiomatic client for [Google Cloud Platform](https://cloud.google.com/) Compute service.

Full docs are available at https://github.com/tusharad/google-cloud-haskell

## Installation

- Cabal: add to your `.cabal`
  - `build-depends: google-cloud-compute == 1.1.0.0`
- Stack: add to your `package.yaml`
  - `dependencies: - google-cloud-compute == 1.1.0.0`

This package depends on `google-cloud-common` for auth and HTTP helpers.

## Authentication

Authentication is handled by `google-cloud-common` and follows this order:

1. Use `GOOGLE_APPLICATION_CREDENTIALS` to load a Service Account JSON and
   exchange a signed JWT for an access token.
2. Otherwise, use the Compute metadata server (suitable for GCE/GKE).

## Examples

Below are minimal examples. See `examples/` in the repo for more.

```haskell
{-# LANGUAGE OverloadedStrings #-}

import Google.Cloud.Compute.Instance

-- List instances
listInstancesExample :: IO ()
listInstancesExample = do
  let projectId = "my-gcp-project"
      zone = "us-central1-a"
      query = defaultListInstancesQuery
  result <- listInstances projectId zone (Just query)
  case result of
    Left err -> putStrLn ("Error: " <> err)
    Right instances -> print instances

-- Create an instance
createInstanceExample :: IO ()
createInstanceExample = do
  let projectId = "my-gcp-project"
      zone = "us-central1-a"
      instanceName = "my-instance"
      machineType = "e2-medium"
      ops = defaultInsertInstanceOps projectId zone instanceName machineType
  res <- insertInstance projectId zone ops (Just (InsertInstanceQuery (Just "req-123") Nothing))
  case res of
    Left err -> putStrLn ("Create error: " <> err)
    Right _  -> putStrLn "Create initiated"

-- Start/Stop an instance
startStopExample :: IO ()
startStopExample = do
  let projectId = "my-gcp-project"
      zone = "us-central1-a"
      name = "my-instance"
      reqId = defaultRequestIdQuery "req-456"
  _ <- startInstance projectId zone name (Just reqId)
  _ <- stopInstance  projectId zone name (Just reqId)
  putStrLn "Start/Stop submitted"
```

Additional modules:

- `Google.Cloud.Compute.Disk`
- `Google.Cloud.Compute.Firewall`
- `Google.Cloud.Compute.Network`

## License

MIT © Contributors