google-cloud-compute 0.1.0.0 → 1.1.0.0
raw patch · 10 files changed
+764/−501 lines, 10 filesdep ~google-cloud-commonsetup-changedPVP ok
version bump matches the API change (PVP)
Dependency ranges changed: google-cloud-common
API changes (from Hackage documentation)
- Google.Cloud.Compute.Disk: [$sel:code:Warning] :: Warning -> String
- Google.Cloud.Compute.Disk: [$sel:data_:Warning] :: Warning -> Maybe [WarningData]
- Google.Cloud.Compute.Disk: [$sel:description:CreateSnapshotOps] :: CreateSnapshotOps -> Maybe String
- Google.Cloud.Compute.Disk: [$sel:description:InsertDiskOps] :: InsertDiskOps -> Maybe String
- Google.Cloud.Compute.Disk: [$sel:diskEncryptionKey:InsertDiskOps] :: InsertDiskOps -> Maybe EncryptionKey
- Google.Cloud.Compute.Disk: [$sel:endTime:Operation] :: Operation -> Maybe String
- Google.Cloud.Compute.Disk: [$sel:error:Operation] :: Operation -> Maybe OperationError
- Google.Cloud.Compute.Disk: [$sel:guestOsFeatures:InsertDiskOps] :: InsertDiskOps -> Maybe [GuestOsFeature]
- Google.Cloud.Compute.Disk: [$sel:id:DiskResponse] :: DiskResponse -> Maybe String
- Google.Cloud.Compute.Disk: [$sel:id:Operation] :: Operation -> Maybe String
- Google.Cloud.Compute.Disk: [$sel:insertTime:Operation] :: Operation -> Maybe String
- Google.Cloud.Compute.Disk: [$sel:items:DiskResponse] :: DiskResponse -> Maybe [DiskItem]
- Google.Cloud.Compute.Disk: [$sel:key:WarningData] :: WarningData -> String
- Google.Cloud.Compute.Disk: [$sel:kind:DiskResponse] :: DiskResponse -> Maybe String
- Google.Cloud.Compute.Disk: [$sel:labels:CreateSnapshotOps] :: CreateSnapshotOps -> Maybe (Map String String)
- Google.Cloud.Compute.Disk: [$sel:labels:InsertDiskOps] :: InsertDiskOps -> Maybe (Map String String)
- Google.Cloud.Compute.Disk: [$sel:message:Warning] :: Warning -> String
- Google.Cloud.Compute.Disk: [$sel:name:CreateSnapshotOps] :: CreateSnapshotOps -> String
- Google.Cloud.Compute.Disk: [$sel:name:InsertDiskOps] :: InsertDiskOps -> String
- Google.Cloud.Compute.Disk: [$sel:name:Operation] :: Operation -> Maybe String
- Google.Cloud.Compute.Disk: [$sel:nextPageToken:DiskResponse] :: DiskResponse -> Maybe String
- Google.Cloud.Compute.Disk: [$sel:operationType:Operation] :: Operation -> Maybe String
- Google.Cloud.Compute.Disk: [$sel:progress:Operation] :: Operation -> Maybe Int
- Google.Cloud.Compute.Disk: [$sel:selfLink:DiskResponse] :: DiskResponse -> Maybe String
- Google.Cloud.Compute.Disk: [$sel:selfLink:Operation] :: Operation -> Maybe String
- Google.Cloud.Compute.Disk: [$sel:sizeGb:InsertDiskOps] :: InsertDiskOps -> String
- Google.Cloud.Compute.Disk: [$sel:snapshotEncryptionKey:CreateSnapshotOps] :: CreateSnapshotOps -> Maybe EncryptionKey
- Google.Cloud.Compute.Disk: [$sel:sourceImage:InsertDiskOps] :: InsertDiskOps -> Maybe String
- Google.Cloud.Compute.Disk: [$sel:sourceSnapshot:InsertDiskOps] :: InsertDiskOps -> Maybe String
- Google.Cloud.Compute.Disk: [$sel:startTime:Operation] :: Operation -> Maybe String
- Google.Cloud.Compute.Disk: [$sel:status:Operation] :: Operation -> Maybe String
- Google.Cloud.Compute.Disk: [$sel:storageLocations:CreateSnapshotOps] :: CreateSnapshotOps -> Maybe [String]
- Google.Cloud.Compute.Disk: [$sel:targetLink:Operation] :: Operation -> Maybe String
- Google.Cloud.Compute.Disk: [$sel:type_:InsertDiskOps] :: InsertDiskOps -> Maybe String
- Google.Cloud.Compute.Disk: [$sel:value:WarningData] :: WarningData -> String
- Google.Cloud.Compute.Disk: [$sel:warning:DiskResponse] :: DiskResponse -> Maybe Warning
- Google.Cloud.Compute.Disk: [$sel:warnings:Operation] :: Operation -> Maybe [Warning]
- Google.Cloud.Compute.Disk: [$sel:zone:Operation] :: Operation -> Maybe String
- Google.Cloud.Compute.Disk: instance GHC.Show.Show Google.Cloud.Compute.Disk.CreateSnapshotOps
- Google.Cloud.Compute.Disk: instance GHC.Show.Show Google.Cloud.Compute.Disk.CreateSnapshotQuery
- Google.Cloud.Compute.Disk: instance GHC.Show.Show Google.Cloud.Compute.Disk.DeleteDiskQuery
- Google.Cloud.Compute.Disk: instance GHC.Show.Show Google.Cloud.Compute.Disk.DiskItem
- Google.Cloud.Compute.Disk: instance GHC.Show.Show Google.Cloud.Compute.Disk.DiskResponse
- Google.Cloud.Compute.Disk: instance GHC.Show.Show Google.Cloud.Compute.Disk.EncryptionKey
- Google.Cloud.Compute.Disk: instance GHC.Show.Show Google.Cloud.Compute.Disk.ErrorDetail
- Google.Cloud.Compute.Disk: instance GHC.Show.Show Google.Cloud.Compute.Disk.GuestOsFeature
- Google.Cloud.Compute.Disk: instance GHC.Show.Show Google.Cloud.Compute.Disk.InsertDiskOps
- Google.Cloud.Compute.Disk: instance GHC.Show.Show Google.Cloud.Compute.Disk.InsertDiskQuery
- Google.Cloud.Compute.Disk: instance GHC.Show.Show Google.Cloud.Compute.Disk.ListDisksQuery
- Google.Cloud.Compute.Disk: instance GHC.Show.Show Google.Cloud.Compute.Disk.Operation
- Google.Cloud.Compute.Disk: instance GHC.Show.Show Google.Cloud.Compute.Disk.OperationError
- Google.Cloud.Compute.Disk: instance GHC.Show.Show Google.Cloud.Compute.Disk.Warning
- Google.Cloud.Compute.Disk: instance GHC.Show.Show Google.Cloud.Compute.Disk.WarningData
- Google.Cloud.Compute.Firewall: [$sel:allowed:CreateFirewallOps] :: CreateFirewallOps -> Maybe [AllowedFirewall]
- Google.Cloud.Compute.Firewall: [$sel:allowed:FirewallMeta] :: FirewallMeta -> Maybe [AllowedFirewall]
- Google.Cloud.Compute.Firewall: [$sel:code:Warning] :: Warning -> String
- Google.Cloud.Compute.Firewall: [$sel:creationTimestamp:FirewallMeta] :: FirewallMeta -> Maybe String
- Google.Cloud.Compute.Firewall: [$sel:data_:Warning] :: Warning -> Maybe [WarningData]
- Google.Cloud.Compute.Firewall: [$sel:denied:CreateFirewallOps] :: CreateFirewallOps -> Maybe [DeniedFirewall]
- Google.Cloud.Compute.Firewall: [$sel:denied:FirewallMeta] :: FirewallMeta -> Maybe [DeniedFirewall]
- Google.Cloud.Compute.Firewall: [$sel:description:CreateFirewallOps] :: CreateFirewallOps -> Maybe String
- Google.Cloud.Compute.Firewall: [$sel:description:FirewallMeta] :: FirewallMeta -> Maybe String
- Google.Cloud.Compute.Firewall: [$sel:direction:CreateFirewallOps] :: CreateFirewallOps -> Maybe String
- Google.Cloud.Compute.Firewall: [$sel:direction:FirewallMeta] :: FirewallMeta -> Maybe String
- Google.Cloud.Compute.Firewall: [$sel:disabled:CreateFirewallOps] :: CreateFirewallOps -> Maybe Bool
- Google.Cloud.Compute.Firewall: [$sel:disabled:FirewallMeta] :: FirewallMeta -> Maybe Bool
- Google.Cloud.Compute.Firewall: [$sel:enable:LogConfig] :: LogConfig -> Bool
- Google.Cloud.Compute.Firewall: [$sel:endTime:Operation] :: Operation -> Maybe String
- Google.Cloud.Compute.Firewall: [$sel:error_:Operation] :: Operation -> Maybe OperationError
- Google.Cloud.Compute.Firewall: [$sel:iPProtocol:AllowedFirewall] :: AllowedFirewall -> String
- Google.Cloud.Compute.Firewall: [$sel:iPProtocol:DeniedFirewall] :: DeniedFirewall -> String
- Google.Cloud.Compute.Firewall: [$sel:id:FirewallList] :: FirewallList -> Maybe String
- Google.Cloud.Compute.Firewall: [$sel:id:FirewallMeta] :: FirewallMeta -> Maybe String
- Google.Cloud.Compute.Firewall: [$sel:id:Operation] :: Operation -> Maybe String
- Google.Cloud.Compute.Firewall: [$sel:insertTime:Operation] :: Operation -> Maybe String
- Google.Cloud.Compute.Firewall: [$sel:items:FirewallList] :: FirewallList -> Maybe [FirewallMeta]
- Google.Cloud.Compute.Firewall: [$sel:key:WarningData] :: WarningData -> String
- Google.Cloud.Compute.Firewall: [$sel:kind:FirewallList] :: FirewallList -> Maybe String
- Google.Cloud.Compute.Firewall: [$sel:kind:FirewallMeta] :: FirewallMeta -> Maybe String
- Google.Cloud.Compute.Firewall: [$sel:logConfig:CreateFirewallOps] :: CreateFirewallOps -> Maybe LogConfig
- Google.Cloud.Compute.Firewall: [$sel:logConfig:FirewallMeta] :: FirewallMeta -> Maybe LogConfig
- Google.Cloud.Compute.Firewall: [$sel:message:Warning] :: Warning -> String
- Google.Cloud.Compute.Firewall: [$sel:metadata:LogConfig] :: LogConfig -> Maybe String
- Google.Cloud.Compute.Firewall: [$sel:name:CreateFirewallOps] :: CreateFirewallOps -> String
- Google.Cloud.Compute.Firewall: [$sel:name:FirewallMeta] :: FirewallMeta -> Maybe String
- Google.Cloud.Compute.Firewall: [$sel:name:Operation] :: Operation -> Maybe String
- Google.Cloud.Compute.Firewall: [$sel:network:CreateFirewallOps] :: CreateFirewallOps -> Maybe String
- Google.Cloud.Compute.Firewall: [$sel:network:FirewallMeta] :: FirewallMeta -> Maybe String
- Google.Cloud.Compute.Firewall: [$sel:nextPageToken:FirewallList] :: FirewallList -> Maybe String
- Google.Cloud.Compute.Firewall: [$sel:operationType:Operation] :: Operation -> Maybe String
- Google.Cloud.Compute.Firewall: [$sel:ports:AllowedFirewall] :: AllowedFirewall -> Maybe [String]
- Google.Cloud.Compute.Firewall: [$sel:ports:DeniedFirewall] :: DeniedFirewall -> Maybe [String]
- Google.Cloud.Compute.Firewall: [$sel:priority:CreateFirewallOps] :: CreateFirewallOps -> Maybe Int
- Google.Cloud.Compute.Firewall: [$sel:priority:FirewallMeta] :: FirewallMeta -> Maybe Int
- Google.Cloud.Compute.Firewall: [$sel:progress:Operation] :: Operation -> Maybe Int
- Google.Cloud.Compute.Firewall: [$sel:selfLink:FirewallList] :: FirewallList -> Maybe String
- Google.Cloud.Compute.Firewall: [$sel:selfLink:FirewallMeta] :: FirewallMeta -> Maybe String
- Google.Cloud.Compute.Firewall: [$sel:selfLink:Operation] :: Operation -> Maybe String
- Google.Cloud.Compute.Firewall: [$sel:sourceRanges:CreateFirewallOps] :: CreateFirewallOps -> Maybe [String]
- Google.Cloud.Compute.Firewall: [$sel:sourceRanges:FirewallMeta] :: FirewallMeta -> Maybe [String]
- Google.Cloud.Compute.Firewall: [$sel:sourceTags:CreateFirewallOps] :: CreateFirewallOps -> Maybe [String]
- Google.Cloud.Compute.Firewall: [$sel:sourceTags:FirewallMeta] :: FirewallMeta -> Maybe [String]
- Google.Cloud.Compute.Firewall: [$sel:startTime:Operation] :: Operation -> Maybe String
- Google.Cloud.Compute.Firewall: [$sel:status:Operation] :: Operation -> Maybe String
- Google.Cloud.Compute.Firewall: [$sel:targetLink:Operation] :: Operation -> Maybe String
- Google.Cloud.Compute.Firewall: [$sel:targetTags:CreateFirewallOps] :: CreateFirewallOps -> Maybe [String]
- Google.Cloud.Compute.Firewall: [$sel:targetTags:FirewallMeta] :: FirewallMeta -> Maybe [String]
- Google.Cloud.Compute.Firewall: [$sel:value:WarningData] :: WarningData -> String
- Google.Cloud.Compute.Firewall: [$sel:warning:FirewallList] :: FirewallList -> Maybe Warning
- Google.Cloud.Compute.Firewall: [$sel:warnings:Operation] :: Operation -> Maybe [Warning]
- Google.Cloud.Compute.Firewall: instance GHC.Show.Show Google.Cloud.Compute.Firewall.AllowedFirewall
- Google.Cloud.Compute.Firewall: instance GHC.Show.Show Google.Cloud.Compute.Firewall.CreateFirewallOps
- Google.Cloud.Compute.Firewall: instance GHC.Show.Show Google.Cloud.Compute.Firewall.CreateFirewallQuery
- Google.Cloud.Compute.Firewall: instance GHC.Show.Show Google.Cloud.Compute.Firewall.DeniedFirewall
- Google.Cloud.Compute.Firewall: instance GHC.Show.Show Google.Cloud.Compute.Firewall.ErrorDetail
- Google.Cloud.Compute.Firewall: instance GHC.Show.Show Google.Cloud.Compute.Firewall.FirewallList
- Google.Cloud.Compute.Firewall: instance GHC.Show.Show Google.Cloud.Compute.Firewall.FirewallMeta
- Google.Cloud.Compute.Firewall: instance GHC.Show.Show Google.Cloud.Compute.Firewall.ListFirewallsQuery
- Google.Cloud.Compute.Firewall: instance GHC.Show.Show Google.Cloud.Compute.Firewall.LogConfig
- Google.Cloud.Compute.Firewall: instance GHC.Show.Show Google.Cloud.Compute.Firewall.Operation
- Google.Cloud.Compute.Firewall: instance GHC.Show.Show Google.Cloud.Compute.Firewall.OperationError
- Google.Cloud.Compute.Firewall: instance GHC.Show.Show Google.Cloud.Compute.Firewall.Warning
- Google.Cloud.Compute.Firewall: instance GHC.Show.Show Google.Cloud.Compute.Firewall.WarningData
- Google.Cloud.Compute.Instance: [$sel:acceleratorCount:GuestAccelerator] :: GuestAccelerator -> Int
- Google.Cloud.Compute.Instance: [$sel:acceleratorType:GuestAccelerator] :: GuestAccelerator -> Text
- Google.Cloud.Compute.Instance: [$sel:automaticRestart:ResourceStatus] :: ResourceStatus -> Bool
- Google.Cloud.Compute.Instance: [$sel:automaticRestart:Scheduling] :: Scheduling -> Bool
- Google.Cloud.Compute.Instance: [$sel:availabilityDomain:ResourceStatus] :: ResourceStatus -> Int
- Google.Cloud.Compute.Instance: [$sel:availabilityDomain:Scheduling] :: Scheduling -> Int
- Google.Cloud.Compute.Instance: [$sel:clientOperationId:InstanceDeleteResp] :: InstanceDeleteResp -> Maybe String
- Google.Cloud.Compute.Instance: [$sel:clientOperationId:InstanceStartResponse] :: InstanceStartResponse -> Maybe Text
- Google.Cloud.Compute.Instance: [$sel:code:ErrorDetail] :: ErrorDetail -> Maybe String
- Google.Cloud.Compute.Instance: [$sel:code:Warning] :: Warning -> String
- Google.Cloud.Compute.Instance: [$sel:confidentialInstanceConfig:InstanceMetadata] :: InstanceMetadata -> Maybe ConfidentialInstanceConfig
- Google.Cloud.Compute.Instance: [$sel:confidentialInstanceType:ConfidentialInstanceConfig] :: ConfidentialInstanceConfig -> Maybe Text
- Google.Cloud.Compute.Instance: [$sel:consumeReservationType:ReservationAffinity] :: ReservationAffinity -> Maybe Text
- Google.Cloud.Compute.Instance: [$sel:cpuPlatform:InstanceMetadata] :: InstanceMetadata -> Maybe String
- Google.Cloud.Compute.Instance: [$sel:creationTimestamp:InstanceDeleteResp] :: InstanceDeleteResp -> Maybe String
- Google.Cloud.Compute.Instance: [$sel:creationTimestamp:InstanceStartResponse] :: InstanceStartResponse -> Maybe Text
- Google.Cloud.Compute.Instance: [$sel:deletionProtection:InstanceMetadata] :: InstanceMetadata -> Maybe Bool
- Google.Cloud.Compute.Instance: [$sel:description:InstanceDeleteResp] :: InstanceDeleteResp -> Maybe String
- Google.Cloud.Compute.Instance: [$sel:description:Link] :: Link -> Maybe String
- Google.Cloud.Compute.Instance: [$sel:discardLocalSsd:DiscardLocalSsd] :: OnInstanceTerminationAction -> Bool
- Google.Cloud.Compute.Instance: [$sel:disks:InsertInstanceOps] :: InsertInstanceOps -> Maybe [Disk]
- Google.Cloud.Compute.Instance: [$sel:displayDevice:InstanceMetadata] :: InstanceMetadata -> Maybe DisplayDevice
- Google.Cloud.Compute.Instance: [$sel:domain:ErrorInfo] :: ErrorInfo -> Maybe String
- Google.Cloud.Compute.Instance: [$sel:enableConfidentialCompute:ConfidentialInstanceConfig] :: ConfidentialInstanceConfig -> Maybe Bool
- Google.Cloud.Compute.Instance: [$sel:enableDisplay:DisplayDevice] :: DisplayDevice -> Bool
- Google.Cloud.Compute.Instance: [$sel:enableIntegrityMonitoring:ShieldedInstanceConfig] :: ShieldedInstanceConfig -> Bool
- Google.Cloud.Compute.Instance: [$sel:enableSecureBoot:ShieldedInstanceConfig] :: ShieldedInstanceConfig -> Bool
- Google.Cloud.Compute.Instance: [$sel:enableVtpm:ShieldedInstanceConfig] :: ShieldedInstanceConfig -> Bool
- Google.Cloud.Compute.Instance: [$sel:endTime:InstanceDeleteResp] :: InstanceDeleteResp -> Maybe String
- Google.Cloud.Compute.Instance: [$sel:errorDetails:ErrorDetail] :: ErrorDetail -> Maybe [DetailedError]
- Google.Cloud.Compute.Instance: [$sel:errorInfo:DetailedError] :: DetailedError -> Maybe ErrorInfo
- Google.Cloud.Compute.Instance: [$sel:error_:InstanceDeleteResp] :: InstanceDeleteResp -> Maybe Error_
- Google.Cloud.Compute.Instance: [$sel:errors:Error_] :: Error_ -> Maybe [ErrorDetail]
- Google.Cloud.Compute.Instance: [$sel:filter_:ListInstancesQuery] :: ListInstancesQuery -> Maybe String
- Google.Cloud.Compute.Instance: [$sel:fingerprint:InstanceMetadata] :: InstanceMetadata -> Maybe Text
- Google.Cloud.Compute.Instance: [$sel:futureLimit:QuotaInfo] :: QuotaInfo -> Maybe Double
- Google.Cloud.Compute.Instance: [$sel:guestAccelerators:InstanceMetadata] :: InstanceMetadata -> Maybe [GuestAccelerator]
- Google.Cloud.Compute.Instance: [$sel:help:DetailedError] :: DetailedError -> Maybe Help
- Google.Cloud.Compute.Instance: [$sel:hostname:InstanceMetadata] :: InstanceMetadata -> Maybe Text
- Google.Cloud.Compute.Instance: [$sel:httpErrorMessage:InstanceDeleteResp] :: InstanceDeleteResp -> Maybe String
- Google.Cloud.Compute.Instance: [$sel:httpErrorStatusCode:InstanceDeleteResp] :: InstanceDeleteResp -> Maybe Int
- Google.Cloud.Compute.Instance: [$sel:id_:InstanceDeleteResp] :: InstanceDeleteResp -> Maybe String
- Google.Cloud.Compute.Instance: [$sel:id_:InstanceList] :: InstanceList -> String
- Google.Cloud.Compute.Instance: [$sel:id_:InstanceStartResponse] :: InstanceStartResponse -> Maybe Text
- Google.Cloud.Compute.Instance: [$sel:insertTime:InstanceDeleteResp] :: InstanceDeleteResp -> Maybe String
- Google.Cloud.Compute.Instance: [$sel:instanceEncryptionKey:InstanceMetadata] :: InstanceMetadata -> Maybe InstanceEncryptionKey
- Google.Cloud.Compute.Instance: [$sel:instanceTerminationAction:ResourceStatus] :: ResourceStatus -> InstanceTerminationAction
- Google.Cloud.Compute.Instance: [$sel:instanceTerminationAction:Scheduling] :: Scheduling -> InstanceTerminationAction
- Google.Cloud.Compute.Instance: [$sel:items:InstanceList] :: InstanceList -> Maybe [InstanceMetadata]
- Google.Cloud.Compute.Instance: [$sel:key:NodeAffinity] :: NodeAffinity -> String
- Google.Cloud.Compute.Instance: [$sel:key:ReservationAffinity] :: ReservationAffinity -> Maybe Text
- Google.Cloud.Compute.Instance: [$sel:keyRevocationActionType:InstanceMetadata] :: InstanceMetadata -> Maybe Text
- Google.Cloud.Compute.Instance: [$sel:kind:InstanceDeleteResp] :: InstanceDeleteResp -> Maybe String
- Google.Cloud.Compute.Instance: [$sel:kind:InstanceList] :: InstanceList -> String
- Google.Cloud.Compute.Instance: [$sel:kind:InstanceStartResponse] :: InstanceStartResponse -> Maybe Text
- Google.Cloud.Compute.Instance: [$sel:kmsKeyName:InstanceEncryptionKey] :: InstanceEncryptionKey -> Maybe Text
- Google.Cloud.Compute.Instance: [$sel:kmsKeyServiceAccount:InstanceEncryptionKey] :: InstanceEncryptionKey -> Maybe Text
- Google.Cloud.Compute.Instance: [$sel:labelFingerprint:InstanceMetadata] :: InstanceMetadata -> Maybe Text
- Google.Cloud.Compute.Instance: [$sel:lastStartTimestamp:InstanceMetadata] :: InstanceMetadata -> Maybe String
- Google.Cloud.Compute.Instance: [$sel:lastStopTimestamp:InstanceMetadata] :: InstanceMetadata -> Maybe String
- Google.Cloud.Compute.Instance: [$sel:lastSuspendedTimestamp:InstanceMetadata] :: InstanceMetadata -> Maybe String
- Google.Cloud.Compute.Instance: [$sel:limit:QuotaInfo] :: QuotaInfo -> Maybe Double
- Google.Cloud.Compute.Instance: [$sel:limitName:QuotaInfo] :: QuotaInfo -> Maybe String
- Google.Cloud.Compute.Instance: [$sel:links:Help] :: Help -> Maybe [Link]
- Google.Cloud.Compute.Instance: [$sel:locale:LocalizedMessage] :: LocalizedMessage -> Maybe String
- Google.Cloud.Compute.Instance: [$sel:localizedMessage:DetailedError] :: DetailedError -> Maybe LocalizedMessage
- Google.Cloud.Compute.Instance: [$sel:location:ErrorDetail] :: ErrorDetail -> Maybe String
- Google.Cloud.Compute.Instance: [$sel:locationHint:ResourceStatus] :: ResourceStatus -> String
- Google.Cloud.Compute.Instance: [$sel:locationHint:Scheduling] :: Scheduling -> String
- Google.Cloud.Compute.Instance: [$sel:machineType:InsertInstanceOps] :: InsertInstanceOps -> String
- Google.Cloud.Compute.Instance: [$sel:maxResults:ListInstancesQuery] :: ListInstancesQuery -> Maybe Int
- Google.Cloud.Compute.Instance: [$sel:message:ErrorDetail] :: ErrorDetail -> Maybe String
- Google.Cloud.Compute.Instance: [$sel:message:LocalizedMessage] :: LocalizedMessage -> Maybe String
- Google.Cloud.Compute.Instance: [$sel:message:Warning] :: Warning -> String
- Google.Cloud.Compute.Instance: [$sel:metricName:QuotaInfo] :: QuotaInfo -> Maybe String
- Google.Cloud.Compute.Instance: [$sel:minCpuPlatform:InstanceMetadata] :: InstanceMetadata -> Maybe Text
- Google.Cloud.Compute.Instance: [$sel:minNodeCpus:ResourceStatus] :: ResourceStatus -> Int
- Google.Cloud.Compute.Instance: [$sel:minNodeCpus:Scheduling] :: Scheduling -> Int
- Google.Cloud.Compute.Instance: [$sel:name:InsertInstanceOps] :: InsertInstanceOps -> String
- Google.Cloud.Compute.Instance: [$sel:name:InstanceDeleteResp] :: InstanceDeleteResp -> Maybe String
- Google.Cloud.Compute.Instance: [$sel:name:InstanceStartResponse] :: InstanceStartResponse -> Maybe Text
- Google.Cloud.Compute.Instance: [$sel:networkInterfaces:InsertInstanceOps] :: InsertInstanceOps -> Maybe [NetworkInterface]
- Google.Cloud.Compute.Instance: [$sel:networkPerformanceConfig:InstanceMetadata] :: InstanceMetadata -> Maybe NetworkPerformanceConfig
- Google.Cloud.Compute.Instance: [$sel:nodeAffinities:ResourceStatus] :: ResourceStatus -> [NodeAffinity]
- Google.Cloud.Compute.Instance: [$sel:nodeAffinities:Scheduling] :: Scheduling -> [NodeAffinity]
- Google.Cloud.Compute.Instance: [$sel:onHostMaintenance:ResourceStatus] :: ResourceStatus -> String
- Google.Cloud.Compute.Instance: [$sel:onHostMaintenance:Scheduling] :: Scheduling -> String
- Google.Cloud.Compute.Instance: [$sel:operationGroupId:InstanceDeleteResp] :: InstanceDeleteResp -> Maybe String
- Google.Cloud.Compute.Instance: [$sel:operationType:InstanceDeleteResp] :: InstanceDeleteResp -> Maybe String
- Google.Cloud.Compute.Instance: [$sel:operationType:InstanceStartResponse] :: InstanceStartResponse -> Maybe Text
- Google.Cloud.Compute.Instance: [$sel:operator:NodeAffinity] :: NodeAffinity -> String
- Google.Cloud.Compute.Instance: [$sel:orderBy:ListInstancesQuery] :: ListInstancesQuery -> Maybe String
- Google.Cloud.Compute.Instance: [$sel:pageToken:ListInstancesQuery] :: ListInstancesQuery -> Maybe String
- Google.Cloud.Compute.Instance: [$sel:policy:ShieldedInstanceIntegrityPolicy] :: ShieldedInstanceIntegrityPolicy -> Maybe UpdateAutoLearnPolicy
- Google.Cloud.Compute.Instance: [$sel:preemptible:ResourceStatus] :: ResourceStatus -> Bool
- Google.Cloud.Compute.Instance: [$sel:preemptible:Scheduling] :: Scheduling -> Bool
- Google.Cloud.Compute.Instance: [$sel:privateIpv6GoogleAccess:InstanceMetadata] :: InstanceMetadata -> Maybe Text
- Google.Cloud.Compute.Instance: [$sel:progress:InstanceDeleteResp] :: InstanceDeleteResp -> Maybe Int
- Google.Cloud.Compute.Instance: [$sel:provisioningModel:ResourceStatus] :: ResourceStatus -> String
- Google.Cloud.Compute.Instance: [$sel:provisioningModel:Scheduling] :: Scheduling -> String
- Google.Cloud.Compute.Instance: [$sel:quotaInfo:DetailedError] :: DetailedError -> Maybe QuotaInfo
- Google.Cloud.Compute.Instance: [$sel:rawKey:InstanceEncryptionKey] :: InstanceEncryptionKey -> Maybe Text
- Google.Cloud.Compute.Instance: [$sel:reason:ErrorInfo] :: ErrorInfo -> Maybe String
- Google.Cloud.Compute.Instance: [$sel:region:InstanceDeleteResp] :: InstanceDeleteResp -> Maybe String
- Google.Cloud.Compute.Instance: [$sel:requestId:RequestIdQuery] :: RequestIdQuery -> Maybe String
- Google.Cloud.Compute.Instance: [$sel:reservationAffinity:InstanceMetadata] :: InstanceMetadata -> Maybe ReservationAffinity
- Google.Cloud.Compute.Instance: [$sel:resourcePolicies:InstanceMetadata] :: InstanceMetadata -> Maybe [Text]
- Google.Cloud.Compute.Instance: [$sel:resourceStatus:InstanceMetadata] :: InstanceMetadata -> Maybe ResourceStatus
- Google.Cloud.Compute.Instance: [$sel:returnPartialSuccess:ListInstancesQuery] :: ListInstancesQuery -> Maybe Bool
- Google.Cloud.Compute.Instance: [$sel:rolloutStatus:QuotaInfo] :: QuotaInfo -> Maybe String
- Google.Cloud.Compute.Instance: [$sel:rsaEncryptedKey:InstanceEncryptionKey] :: InstanceEncryptionKey -> Maybe Text
- Google.Cloud.Compute.Instance: [$sel:satisfiesPzi:InstanceMetadata] :: InstanceMetadata -> Maybe Bool
- Google.Cloud.Compute.Instance: [$sel:satisfiesPzs:InstanceMetadata] :: InstanceMetadata -> Maybe Bool
- Google.Cloud.Compute.Instance: [$sel:selfLink:InstanceDeleteResp] :: InstanceDeleteResp -> Maybe String
- Google.Cloud.Compute.Instance: [$sel:sha256:InstanceEncryptionKey] :: InstanceEncryptionKey -> Maybe Text
- Google.Cloud.Compute.Instance: [$sel:shieldedInstanceConfig:InstanceMetadata] :: InstanceMetadata -> Maybe ShieldedInstanceConfig
- Google.Cloud.Compute.Instance: [$sel:shieldedInstanceIntegrityPolicy:InstanceMetadata] :: InstanceMetadata -> Maybe ShieldedInstanceIntegrityPolicy
- Google.Cloud.Compute.Instance: [$sel:sourceMachineImage:InstanceMetadata] :: InstanceMetadata -> Maybe Text
- Google.Cloud.Compute.Instance: [$sel:sourceMachineImageEncryptionKey:InstanceMetadata] :: InstanceMetadata -> Maybe InstanceEncryptionKey
- Google.Cloud.Compute.Instance: [$sel:startRestricted:InstanceMetadata] :: InstanceMetadata -> Maybe Bool
- Google.Cloud.Compute.Instance: [$sel:startTime:InstanceDeleteResp] :: InstanceDeleteResp -> Maybe String
- Google.Cloud.Compute.Instance: [$sel:status:InstanceDeleteResp] :: InstanceDeleteResp -> Maybe String
- Google.Cloud.Compute.Instance: [$sel:status:InstanceStartResponse] :: InstanceStartResponse -> Maybe Text
- Google.Cloud.Compute.Instance: [$sel:statusMessage:InstanceDeleteResp] :: InstanceDeleteResp -> Maybe String
- Google.Cloud.Compute.Instance: [$sel:statusMessage:InstanceStartResponse] :: InstanceStartResponse -> Maybe Text
- Google.Cloud.Compute.Instance: [$sel:targetId:InstanceDeleteResp] :: InstanceDeleteResp -> Maybe String
- Google.Cloud.Compute.Instance: [$sel:targetId:InstanceStartResponse] :: InstanceStartResponse -> Maybe Text
- Google.Cloud.Compute.Instance: [$sel:targetLink:InstanceDeleteResp] :: InstanceDeleteResp -> Maybe String
- Google.Cloud.Compute.Instance: [$sel:targetLink:InstanceStartResponse] :: InstanceStartResponse -> Maybe Text
- Google.Cloud.Compute.Instance: [$sel:totalEgressBandwidthTier:NetworkPerformanceConfig] :: NetworkPerformanceConfig -> Text
- Google.Cloud.Compute.Instance: [$sel:updateAutoLearnPolicy:UpdateAutoLearnPolicy] :: UpdateAutoLearnPolicy -> Bool
- Google.Cloud.Compute.Instance: [$sel:url:Link] :: Link -> Maybe String
- Google.Cloud.Compute.Instance: [$sel:user:InstanceDeleteResp] :: InstanceDeleteResp -> Maybe String
- Google.Cloud.Compute.Instance: [$sel:user:InstanceStartResponse] :: InstanceStartResponse -> Maybe Text
- Google.Cloud.Compute.Instance: [$sel:values:NodeAffinity] :: NodeAffinity -> [String]
- Google.Cloud.Compute.Instance: [$sel:values:ReservationAffinity] :: ReservationAffinity -> Maybe [Text]
- Google.Cloud.Compute.Instance: [$sel:warnings:InstanceDeleteResp] :: InstanceDeleteResp -> Maybe [Warning]
- Google.Cloud.Compute.Instance: [$sel:zone:InstanceDeleteResp] :: InstanceDeleteResp -> Maybe String
- Google.Cloud.Compute.Instance: [$sel:zone:InstanceStartResponse] :: InstanceStartResponse -> Maybe Text
- Google.Cloud.Compute.Instance: data DisplayDevice
- Google.Cloud.Compute.Instance: data Error_
- Google.Cloud.Compute.Instance: data Help
- Google.Cloud.Compute.Instance: data InstanceTerminationAction
- Google.Cloud.Compute.Instance: data NetworkPerformanceConfig
- Google.Cloud.Compute.Instance: data OnInstanceTerminationAction
- Google.Cloud.Compute.Instance: data RequestIdQuery
- Google.Cloud.Compute.Instance: data RunDuration
- Google.Cloud.Compute.Instance: data ShieldedInstanceIntegrityPolicy
- Google.Cloud.Compute.Instance: data UpdateAutoLearnPolicy
- Google.Cloud.Compute.Instance: instance GHC.Show.Show Google.Cloud.Compute.Instance.ConfidentialInstanceConfig
- Google.Cloud.Compute.Instance: instance GHC.Show.Show Google.Cloud.Compute.Instance.DetailedError
- Google.Cloud.Compute.Instance: instance GHC.Show.Show Google.Cloud.Compute.Instance.Disk
- Google.Cloud.Compute.Instance: instance GHC.Show.Show Google.Cloud.Compute.Instance.DisplayDevice
- Google.Cloud.Compute.Instance: instance GHC.Show.Show Google.Cloud.Compute.Instance.ErrorDetail
- Google.Cloud.Compute.Instance: instance GHC.Show.Show Google.Cloud.Compute.Instance.ErrorInfo
- Google.Cloud.Compute.Instance: instance GHC.Show.Show Google.Cloud.Compute.Instance.Error_
- Google.Cloud.Compute.Instance: instance GHC.Show.Show Google.Cloud.Compute.Instance.GuestAccelerator
- Google.Cloud.Compute.Instance: instance GHC.Show.Show Google.Cloud.Compute.Instance.Help
- Google.Cloud.Compute.Instance: instance GHC.Show.Show Google.Cloud.Compute.Instance.InitializeParams
- Google.Cloud.Compute.Instance: instance GHC.Show.Show Google.Cloud.Compute.Instance.InsertInstanceOps
- Google.Cloud.Compute.Instance: instance GHC.Show.Show Google.Cloud.Compute.Instance.InsertInstanceQuery
- Google.Cloud.Compute.Instance: instance GHC.Show.Show Google.Cloud.Compute.Instance.InstanceDeleteResp
- Google.Cloud.Compute.Instance: instance GHC.Show.Show Google.Cloud.Compute.Instance.InstanceEncryptionKey
- Google.Cloud.Compute.Instance: instance GHC.Show.Show Google.Cloud.Compute.Instance.InstanceList
- Google.Cloud.Compute.Instance: instance GHC.Show.Show Google.Cloud.Compute.Instance.InstanceMetadata
- Google.Cloud.Compute.Instance: instance GHC.Show.Show Google.Cloud.Compute.Instance.InstanceStartResponse
- Google.Cloud.Compute.Instance: instance GHC.Show.Show Google.Cloud.Compute.Instance.InstanceTerminationAction
- Google.Cloud.Compute.Instance: instance GHC.Show.Show Google.Cloud.Compute.Instance.Link
- Google.Cloud.Compute.Instance: instance GHC.Show.Show Google.Cloud.Compute.Instance.ListInstancesQuery
- Google.Cloud.Compute.Instance: instance GHC.Show.Show Google.Cloud.Compute.Instance.LocalizedMessage
- Google.Cloud.Compute.Instance: instance GHC.Show.Show Google.Cloud.Compute.Instance.NetworkInterface
- Google.Cloud.Compute.Instance: instance GHC.Show.Show Google.Cloud.Compute.Instance.NetworkPerformanceConfig
- Google.Cloud.Compute.Instance: instance GHC.Show.Show Google.Cloud.Compute.Instance.NodeAffinity
- Google.Cloud.Compute.Instance: instance GHC.Show.Show Google.Cloud.Compute.Instance.OnInstanceTerminationAction
- Google.Cloud.Compute.Instance: instance GHC.Show.Show Google.Cloud.Compute.Instance.QuotaInfo
- Google.Cloud.Compute.Instance: instance GHC.Show.Show Google.Cloud.Compute.Instance.RequestIdQuery
- Google.Cloud.Compute.Instance: instance GHC.Show.Show Google.Cloud.Compute.Instance.ReservationAffinity
- Google.Cloud.Compute.Instance: instance GHC.Show.Show Google.Cloud.Compute.Instance.ResourceStatus
- Google.Cloud.Compute.Instance: instance GHC.Show.Show Google.Cloud.Compute.Instance.RunDuration
- Google.Cloud.Compute.Instance: instance GHC.Show.Show Google.Cloud.Compute.Instance.Scheduling
- Google.Cloud.Compute.Instance: instance GHC.Show.Show Google.Cloud.Compute.Instance.ShieldedInstanceConfig
- Google.Cloud.Compute.Instance: instance GHC.Show.Show Google.Cloud.Compute.Instance.ShieldedInstanceIntegrityPolicy
- Google.Cloud.Compute.Instance: instance GHC.Show.Show Google.Cloud.Compute.Instance.UpdateAutoLearnPolicy
- Google.Cloud.Compute.Instance: instance GHC.Show.Show Google.Cloud.Compute.Instance.Warning
- Google.Cloud.Compute.Network: [$sel:autoCreateSubnetworks:NetworkMeta] :: NetworkMeta -> Maybe Bool
- Google.Cloud.Compute.Network: [$sel:creationTimestamp:NetworkMeta] :: NetworkMeta -> Text
- Google.Cloud.Compute.Network: [$sel:description:NetworkMeta] :: NetworkMeta -> Maybe Text
- Google.Cloud.Compute.Network: [$sel:enableUlaInternalIpv6:NetworkMeta] :: NetworkMeta -> Maybe Bool
- Google.Cloud.Compute.Network: [$sel:exchangeSubnetRoutes:NetworkPeering] :: NetworkPeering -> Maybe Bool
- Google.Cloud.Compute.Network: [$sel:exportCustomRoutes:NetworkPeering] :: NetworkPeering -> Maybe Bool
- Google.Cloud.Compute.Network: [$sel:filter_:ListNetworksQuery] :: ListNetworksQuery -> Maybe String
- Google.Cloud.Compute.Network: [$sel:gatewayIPv4:NetworkMeta] :: NetworkMeta -> Maybe Text
- Google.Cloud.Compute.Network: [$sel:iPv4Range:NetworkMeta] :: NetworkMeta -> Maybe Text
- Google.Cloud.Compute.Network: [$sel:iPv6Range:NetworkMeta] :: NetworkMeta -> Maybe Text
- Google.Cloud.Compute.Network: [$sel:id_:NetworkList] :: NetworkList -> Text
- Google.Cloud.Compute.Network: [$sel:id_:NetworkMeta] :: NetworkMeta -> Text
- Google.Cloud.Compute.Network: [$sel:importCustomRoutes:NetworkPeering] :: NetworkPeering -> Maybe Bool
- Google.Cloud.Compute.Network: [$sel:internalIpv6Range:NetworkMeta] :: NetworkMeta -> Maybe Text
- Google.Cloud.Compute.Network: [$sel:items:NetworkList] :: NetworkList -> [NetworkMeta]
- Google.Cloud.Compute.Network: [$sel:kind:NetworkList] :: NetworkList -> Text
- Google.Cloud.Compute.Network: [$sel:kind:NetworkMeta] :: NetworkMeta -> Text
- Google.Cloud.Compute.Network: [$sel:maxResults:ListNetworksQuery] :: ListNetworksQuery -> Maybe Int
- Google.Cloud.Compute.Network: [$sel:mtu:NetworkMeta] :: NetworkMeta -> Maybe Int
- Google.Cloud.Compute.Network: [$sel:name:NetworkMeta] :: NetworkMeta -> Text
- Google.Cloud.Compute.Network: [$sel:name:NetworkPeering] :: NetworkPeering -> Text
- Google.Cloud.Compute.Network: [$sel:network:NetworkPeering] :: NetworkPeering -> Text
- Google.Cloud.Compute.Network: [$sel:networkFirewallPolicyEnforcementOrder:NetworkMeta] :: NetworkMeta -> Maybe Text
- Google.Cloud.Compute.Network: [$sel:nextPageToken:NetworkList] :: NetworkList -> Maybe Text
- Google.Cloud.Compute.Network: [$sel:orderBy:ListNetworksQuery] :: ListNetworksQuery -> Maybe String
- Google.Cloud.Compute.Network: [$sel:pageToken:ListNetworksQuery] :: ListNetworksQuery -> Maybe String
- Google.Cloud.Compute.Network: [$sel:peerings:NetworkMeta] :: NetworkMeta -> Maybe [NetworkPeering]
- Google.Cloud.Compute.Network: [$sel:returnPartialSuccess:ListNetworksQuery] :: ListNetworksQuery -> Maybe Bool
- Google.Cloud.Compute.Network: [$sel:selfLink:NetworkList] :: NetworkList -> Text
- Google.Cloud.Compute.Network: [$sel:selfLink:NetworkMeta] :: NetworkMeta -> Text
- Google.Cloud.Compute.Network: [$sel:state:NetworkPeering] :: NetworkPeering -> Text
- Google.Cloud.Compute.Network: [$sel:stateDetails:NetworkPeering] :: NetworkPeering -> Maybe Text
- Google.Cloud.Compute.Network: [$sel:subnetworks:NetworkMeta] :: NetworkMeta -> [Text]
- Google.Cloud.Compute.Network: instance GHC.Show.Show Google.Cloud.Compute.Network.ListNetworksQuery
- Google.Cloud.Compute.Network: instance GHC.Show.Show Google.Cloud.Compute.Network.NetworkList
- Google.Cloud.Compute.Network: instance GHC.Show.Show Google.Cloud.Compute.Network.NetworkMeta
- Google.Cloud.Compute.Network: instance GHC.Show.Show Google.Cloud.Compute.Network.NetworkPeering
+ Google.Cloud.Compute.Disk: [code] :: Warning -> String
+ Google.Cloud.Compute.Disk: [data_] :: Warning -> Maybe [WarningData]
+ Google.Cloud.Compute.Disk: [description] :: CreateSnapshotOps -> Maybe String
+ Google.Cloud.Compute.Disk: [diskEncryptionKey] :: InsertDiskOps -> Maybe EncryptionKey
+ Google.Cloud.Compute.Disk: [endTime] :: Operation -> Maybe String
+ Google.Cloud.Compute.Disk: [error] :: Operation -> Maybe OperationError
+ Google.Cloud.Compute.Disk: [guestOsFeatures] :: InsertDiskOps -> Maybe [GuestOsFeature]
+ Google.Cloud.Compute.Disk: [id] :: Operation -> Maybe String
+ Google.Cloud.Compute.Disk: [insertTime] :: Operation -> Maybe String
+ Google.Cloud.Compute.Disk: [items] :: DiskResponse -> Maybe [DiskItem]
+ Google.Cloud.Compute.Disk: [key] :: WarningData -> String
+ Google.Cloud.Compute.Disk: [kind] :: DiskResponse -> Maybe String
+ Google.Cloud.Compute.Disk: [labels] :: CreateSnapshotOps -> Maybe (Map String String)
+ Google.Cloud.Compute.Disk: [message] :: Warning -> String
+ Google.Cloud.Compute.Disk: [name] :: CreateSnapshotOps -> String
+ Google.Cloud.Compute.Disk: [nextPageToken] :: DiskResponse -> Maybe String
+ Google.Cloud.Compute.Disk: [operationType] :: Operation -> Maybe String
+ Google.Cloud.Compute.Disk: [progress] :: Operation -> Maybe Int
+ Google.Cloud.Compute.Disk: [selfLink] :: Operation -> Maybe String
+ Google.Cloud.Compute.Disk: [sizeGb] :: InsertDiskOps -> String
+ Google.Cloud.Compute.Disk: [snapshotEncryptionKey] :: CreateSnapshotOps -> Maybe EncryptionKey
+ Google.Cloud.Compute.Disk: [sourceImage] :: InsertDiskOps -> Maybe String
+ Google.Cloud.Compute.Disk: [sourceSnapshot] :: InsertDiskOps -> Maybe String
+ Google.Cloud.Compute.Disk: [startTime] :: Operation -> Maybe String
+ Google.Cloud.Compute.Disk: [status] :: Operation -> Maybe String
+ Google.Cloud.Compute.Disk: [storageLocations] :: CreateSnapshotOps -> Maybe [String]
+ Google.Cloud.Compute.Disk: [targetLink] :: Operation -> Maybe String
+ Google.Cloud.Compute.Disk: [type_] :: InsertDiskOps -> Maybe String
+ Google.Cloud.Compute.Disk: [value] :: WarningData -> String
+ Google.Cloud.Compute.Disk: [warning] :: DiskResponse -> Maybe Warning
+ Google.Cloud.Compute.Disk: [warnings] :: Operation -> Maybe [Warning]
+ Google.Cloud.Compute.Disk: [zone] :: Operation -> Maybe String
+ Google.Cloud.Compute.Disk: instance GHC.Internal.Show.Show Google.Cloud.Compute.Disk.CreateSnapshotOps
+ Google.Cloud.Compute.Disk: instance GHC.Internal.Show.Show Google.Cloud.Compute.Disk.CreateSnapshotQuery
+ Google.Cloud.Compute.Disk: instance GHC.Internal.Show.Show Google.Cloud.Compute.Disk.DeleteDiskQuery
+ Google.Cloud.Compute.Disk: instance GHC.Internal.Show.Show Google.Cloud.Compute.Disk.DiskItem
+ Google.Cloud.Compute.Disk: instance GHC.Internal.Show.Show Google.Cloud.Compute.Disk.DiskResponse
+ Google.Cloud.Compute.Disk: instance GHC.Internal.Show.Show Google.Cloud.Compute.Disk.EncryptionKey
+ Google.Cloud.Compute.Disk: instance GHC.Internal.Show.Show Google.Cloud.Compute.Disk.ErrorDetail
+ Google.Cloud.Compute.Disk: instance GHC.Internal.Show.Show Google.Cloud.Compute.Disk.GuestOsFeature
+ Google.Cloud.Compute.Disk: instance GHC.Internal.Show.Show Google.Cloud.Compute.Disk.InsertDiskOps
+ Google.Cloud.Compute.Disk: instance GHC.Internal.Show.Show Google.Cloud.Compute.Disk.InsertDiskQuery
+ Google.Cloud.Compute.Disk: instance GHC.Internal.Show.Show Google.Cloud.Compute.Disk.ListDisksQuery
+ Google.Cloud.Compute.Disk: instance GHC.Internal.Show.Show Google.Cloud.Compute.Disk.Operation
+ Google.Cloud.Compute.Disk: instance GHC.Internal.Show.Show Google.Cloud.Compute.Disk.OperationError
+ Google.Cloud.Compute.Disk: instance GHC.Internal.Show.Show Google.Cloud.Compute.Disk.Warning
+ Google.Cloud.Compute.Disk: instance GHC.Internal.Show.Show Google.Cloud.Compute.Disk.WarningData
+ Google.Cloud.Compute.Firewall: [allowed] :: CreateFirewallOps -> Maybe [AllowedFirewall]
+ Google.Cloud.Compute.Firewall: [code] :: Warning -> String
+ Google.Cloud.Compute.Firewall: [creationTimestamp] :: FirewallMeta -> Maybe String
+ Google.Cloud.Compute.Firewall: [data_] :: Warning -> Maybe [WarningData]
+ Google.Cloud.Compute.Firewall: [denied] :: CreateFirewallOps -> Maybe [DeniedFirewall]
+ Google.Cloud.Compute.Firewall: [description] :: CreateFirewallOps -> Maybe String
+ Google.Cloud.Compute.Firewall: [direction] :: CreateFirewallOps -> Maybe String
+ Google.Cloud.Compute.Firewall: [disabled] :: CreateFirewallOps -> Maybe Bool
+ Google.Cloud.Compute.Firewall: [enable] :: LogConfig -> Bool
+ Google.Cloud.Compute.Firewall: [endTime] :: Operation -> Maybe String
+ Google.Cloud.Compute.Firewall: [error_] :: Operation -> Maybe OperationError
+ Google.Cloud.Compute.Firewall: [iPProtocol] :: DeniedFirewall -> String
+ Google.Cloud.Compute.Firewall: [id] :: Operation -> Maybe String
+ Google.Cloud.Compute.Firewall: [insertTime] :: Operation -> Maybe String
+ Google.Cloud.Compute.Firewall: [items] :: FirewallList -> Maybe [FirewallMeta]
+ Google.Cloud.Compute.Firewall: [key] :: WarningData -> String
+ Google.Cloud.Compute.Firewall: [kind] :: FirewallMeta -> Maybe String
+ Google.Cloud.Compute.Firewall: [logConfig] :: CreateFirewallOps -> Maybe LogConfig
+ Google.Cloud.Compute.Firewall: [message] :: Warning -> String
+ Google.Cloud.Compute.Firewall: [metadata] :: LogConfig -> Maybe String
+ Google.Cloud.Compute.Firewall: [name] :: Operation -> Maybe String
+ Google.Cloud.Compute.Firewall: [network] :: CreateFirewallOps -> Maybe String
+ Google.Cloud.Compute.Firewall: [nextPageToken] :: FirewallList -> Maybe String
+ Google.Cloud.Compute.Firewall: [operationType] :: Operation -> Maybe String
+ Google.Cloud.Compute.Firewall: [ports] :: DeniedFirewall -> Maybe [String]
+ Google.Cloud.Compute.Firewall: [priority] :: CreateFirewallOps -> Maybe Int
+ Google.Cloud.Compute.Firewall: [progress] :: Operation -> Maybe Int
+ Google.Cloud.Compute.Firewall: [selfLink] :: Operation -> Maybe String
+ Google.Cloud.Compute.Firewall: [sourceRanges] :: CreateFirewallOps -> Maybe [String]
+ Google.Cloud.Compute.Firewall: [sourceTags] :: CreateFirewallOps -> Maybe [String]
+ Google.Cloud.Compute.Firewall: [startTime] :: Operation -> Maybe String
+ Google.Cloud.Compute.Firewall: [status] :: Operation -> Maybe String
+ Google.Cloud.Compute.Firewall: [targetLink] :: Operation -> Maybe String
+ Google.Cloud.Compute.Firewall: [targetTags] :: CreateFirewallOps -> Maybe [String]
+ Google.Cloud.Compute.Firewall: [value] :: WarningData -> String
+ Google.Cloud.Compute.Firewall: [warning] :: FirewallList -> Maybe Warning
+ Google.Cloud.Compute.Firewall: [warnings] :: Operation -> Maybe [Warning]
+ Google.Cloud.Compute.Firewall: instance GHC.Internal.Show.Show Google.Cloud.Compute.Firewall.AllowedFirewall
+ Google.Cloud.Compute.Firewall: instance GHC.Internal.Show.Show Google.Cloud.Compute.Firewall.CreateFirewallOps
+ Google.Cloud.Compute.Firewall: instance GHC.Internal.Show.Show Google.Cloud.Compute.Firewall.CreateFirewallQuery
+ Google.Cloud.Compute.Firewall: instance GHC.Internal.Show.Show Google.Cloud.Compute.Firewall.DeniedFirewall
+ Google.Cloud.Compute.Firewall: instance GHC.Internal.Show.Show Google.Cloud.Compute.Firewall.ErrorDetail
+ Google.Cloud.Compute.Firewall: instance GHC.Internal.Show.Show Google.Cloud.Compute.Firewall.FirewallList
+ Google.Cloud.Compute.Firewall: instance GHC.Internal.Show.Show Google.Cloud.Compute.Firewall.FirewallMeta
+ Google.Cloud.Compute.Firewall: instance GHC.Internal.Show.Show Google.Cloud.Compute.Firewall.ListFirewallsQuery
+ Google.Cloud.Compute.Firewall: instance GHC.Internal.Show.Show Google.Cloud.Compute.Firewall.LogConfig
+ Google.Cloud.Compute.Firewall: instance GHC.Internal.Show.Show Google.Cloud.Compute.Firewall.Operation
+ Google.Cloud.Compute.Firewall: instance GHC.Internal.Show.Show Google.Cloud.Compute.Firewall.OperationError
+ Google.Cloud.Compute.Firewall: instance GHC.Internal.Show.Show Google.Cloud.Compute.Firewall.Warning
+ Google.Cloud.Compute.Firewall: instance GHC.Internal.Show.Show Google.Cloud.Compute.Firewall.WarningData
+ Google.Cloud.Compute.Instance: [acceleratorCount] :: GuestAccelerator -> Int
+ Google.Cloud.Compute.Instance: [acceleratorType] :: GuestAccelerator -> Text
+ Google.Cloud.Compute.Instance: [automaticRestart] :: ResourceStatus -> Bool
+ Google.Cloud.Compute.Instance: [availabilityDomain] :: ResourceStatus -> Int
+ Google.Cloud.Compute.Instance: [clientOperationId] :: InstanceStartResponse -> Maybe Text
+ Google.Cloud.Compute.Instance: [code] :: ErrorDetail -> Maybe String
+ Google.Cloud.Compute.Instance: [confidentialInstanceConfig] :: InstanceMetadata -> Maybe ConfidentialInstanceConfig
+ Google.Cloud.Compute.Instance: [confidentialInstanceType] :: ConfidentialInstanceConfig -> Maybe Text
+ Google.Cloud.Compute.Instance: [consumeReservationType] :: ReservationAffinity -> Maybe Text
+ Google.Cloud.Compute.Instance: [cpuPlatform] :: InstanceMetadata -> Maybe String
+ Google.Cloud.Compute.Instance: [creationTimestamp] :: InstanceStartResponse -> Maybe Text
+ Google.Cloud.Compute.Instance: [deletionProtection] :: InstanceMetadata -> Maybe Bool
+ Google.Cloud.Compute.Instance: [description] :: Link -> Maybe String
+ Google.Cloud.Compute.Instance: [discardLocalSsd] :: OnInstanceTerminationAction -> Bool
+ Google.Cloud.Compute.Instance: [disks] :: InsertInstanceOps -> Maybe [Disk]
+ Google.Cloud.Compute.Instance: [displayDevice] :: InstanceMetadata -> Maybe DisplayDevice
+ Google.Cloud.Compute.Instance: [domain] :: ErrorInfo -> Maybe String
+ Google.Cloud.Compute.Instance: [enableConfidentialCompute] :: ConfidentialInstanceConfig -> Maybe Bool
+ Google.Cloud.Compute.Instance: [enableDisplay] :: DisplayDevice -> Bool
+ Google.Cloud.Compute.Instance: [enableIntegrityMonitoring] :: ShieldedInstanceConfig -> Bool
+ Google.Cloud.Compute.Instance: [enableSecureBoot] :: ShieldedInstanceConfig -> Bool
+ Google.Cloud.Compute.Instance: [enableVtpm] :: ShieldedInstanceConfig -> Bool
+ Google.Cloud.Compute.Instance: [endTime] :: InstanceDeleteResp -> Maybe String
+ Google.Cloud.Compute.Instance: [errorDetails] :: ErrorDetail -> Maybe [DetailedError]
+ Google.Cloud.Compute.Instance: [errorInfo] :: DetailedError -> Maybe ErrorInfo
+ Google.Cloud.Compute.Instance: [error_] :: InstanceDeleteResp -> Maybe Error_
+ Google.Cloud.Compute.Instance: [errors] :: Error_ -> Maybe [ErrorDetail]
+ Google.Cloud.Compute.Instance: [filter_] :: ListInstancesQuery -> Maybe String
+ Google.Cloud.Compute.Instance: [fingerprint] :: InstanceMetadata -> Maybe Text
+ Google.Cloud.Compute.Instance: [futureLimit] :: QuotaInfo -> Maybe Double
+ Google.Cloud.Compute.Instance: [guestAccelerators] :: InstanceMetadata -> Maybe [GuestAccelerator]
+ Google.Cloud.Compute.Instance: [help] :: DetailedError -> Maybe Help
+ Google.Cloud.Compute.Instance: [hostname] :: InstanceMetadata -> Maybe Text
+ Google.Cloud.Compute.Instance: [httpErrorMessage] :: InstanceDeleteResp -> Maybe String
+ Google.Cloud.Compute.Instance: [httpErrorStatusCode] :: InstanceDeleteResp -> Maybe Int
+ Google.Cloud.Compute.Instance: [id_] :: InstanceList -> String
+ Google.Cloud.Compute.Instance: [insertTime] :: InstanceDeleteResp -> Maybe String
+ Google.Cloud.Compute.Instance: [instanceEncryptionKey] :: InstanceMetadata -> Maybe InstanceEncryptionKey
+ Google.Cloud.Compute.Instance: [instanceTerminationAction] :: ResourceStatus -> InstanceTerminationAction
+ Google.Cloud.Compute.Instance: [items] :: InstanceList -> Maybe [InstanceMetadata]
+ Google.Cloud.Compute.Instance: [keyRevocationActionType] :: InstanceMetadata -> Maybe Text
+ Google.Cloud.Compute.Instance: [key] :: ReservationAffinity -> Maybe Text
+ Google.Cloud.Compute.Instance: [kind] :: InstanceList -> String
+ Google.Cloud.Compute.Instance: [kmsKeyName] :: InstanceEncryptionKey -> Maybe Text
+ Google.Cloud.Compute.Instance: [kmsKeyServiceAccount] :: InstanceEncryptionKey -> Maybe Text
+ Google.Cloud.Compute.Instance: [labelFingerprint] :: InstanceMetadata -> Maybe Text
+ Google.Cloud.Compute.Instance: [lastStartTimestamp] :: InstanceMetadata -> Maybe String
+ Google.Cloud.Compute.Instance: [lastStopTimestamp] :: InstanceMetadata -> Maybe String
+ Google.Cloud.Compute.Instance: [lastSuspendedTimestamp] :: InstanceMetadata -> Maybe String
+ Google.Cloud.Compute.Instance: [limitName] :: QuotaInfo -> Maybe String
+ Google.Cloud.Compute.Instance: [limit] :: QuotaInfo -> Maybe Double
+ Google.Cloud.Compute.Instance: [links] :: Help -> Maybe [Link]
+ Google.Cloud.Compute.Instance: [locale] :: LocalizedMessage -> Maybe String
+ Google.Cloud.Compute.Instance: [localizedMessage] :: DetailedError -> Maybe LocalizedMessage
+ Google.Cloud.Compute.Instance: [locationHint] :: ResourceStatus -> String
+ Google.Cloud.Compute.Instance: [location] :: ErrorDetail -> Maybe String
+ Google.Cloud.Compute.Instance: [machineType] :: InsertInstanceOps -> String
+ Google.Cloud.Compute.Instance: [maxResults] :: ListInstancesQuery -> Maybe Int
+ Google.Cloud.Compute.Instance: [message] :: LocalizedMessage -> Maybe String
+ Google.Cloud.Compute.Instance: [metricName] :: QuotaInfo -> Maybe String
+ Google.Cloud.Compute.Instance: [minCpuPlatform] :: InstanceMetadata -> Maybe Text
+ Google.Cloud.Compute.Instance: [minNodeCpus] :: ResourceStatus -> Int
+ Google.Cloud.Compute.Instance: [name] :: InsertInstanceOps -> String
+ Google.Cloud.Compute.Instance: [networkInterfaces] :: InsertInstanceOps -> Maybe [NetworkInterface]
+ Google.Cloud.Compute.Instance: [networkPerformanceConfig] :: InstanceMetadata -> Maybe NetworkPerformanceConfig
+ Google.Cloud.Compute.Instance: [nodeAffinities] :: ResourceStatus -> [NodeAffinity]
+ Google.Cloud.Compute.Instance: [onHostMaintenance] :: ResourceStatus -> String
+ Google.Cloud.Compute.Instance: [operationGroupId] :: InstanceDeleteResp -> Maybe String
+ Google.Cloud.Compute.Instance: [operationType] :: InstanceStartResponse -> Maybe Text
+ Google.Cloud.Compute.Instance: [operator] :: NodeAffinity -> String
+ Google.Cloud.Compute.Instance: [orderBy] :: ListInstancesQuery -> Maybe String
+ Google.Cloud.Compute.Instance: [pageToken] :: ListInstancesQuery -> Maybe String
+ Google.Cloud.Compute.Instance: [policy] :: ShieldedInstanceIntegrityPolicy -> Maybe UpdateAutoLearnPolicy
+ Google.Cloud.Compute.Instance: [preemptible] :: ResourceStatus -> Bool
+ Google.Cloud.Compute.Instance: [privateIpv6GoogleAccess] :: InstanceMetadata -> Maybe Text
+ Google.Cloud.Compute.Instance: [progress] :: InstanceDeleteResp -> Maybe Int
+ Google.Cloud.Compute.Instance: [provisioningModel] :: ResourceStatus -> String
+ Google.Cloud.Compute.Instance: [quotaInfo] :: DetailedError -> Maybe QuotaInfo
+ Google.Cloud.Compute.Instance: [rawKey] :: InstanceEncryptionKey -> Maybe Text
+ Google.Cloud.Compute.Instance: [reason] :: ErrorInfo -> Maybe String
+ Google.Cloud.Compute.Instance: [region] :: InstanceDeleteResp -> Maybe String
+ Google.Cloud.Compute.Instance: [requestId] :: RequestIdQuery -> Maybe String
+ Google.Cloud.Compute.Instance: [reservationAffinity] :: InstanceMetadata -> Maybe ReservationAffinity
+ Google.Cloud.Compute.Instance: [resourcePolicies] :: InstanceMetadata -> Maybe [Text]
+ Google.Cloud.Compute.Instance: [resourceStatus] :: InstanceMetadata -> Maybe ResourceStatus
+ Google.Cloud.Compute.Instance: [returnPartialSuccess] :: ListInstancesQuery -> Maybe Bool
+ Google.Cloud.Compute.Instance: [rolloutStatus] :: QuotaInfo -> Maybe String
+ Google.Cloud.Compute.Instance: [rsaEncryptedKey] :: InstanceEncryptionKey -> Maybe Text
+ Google.Cloud.Compute.Instance: [satisfiesPzi] :: InstanceMetadata -> Maybe Bool
+ Google.Cloud.Compute.Instance: [satisfiesPzs] :: InstanceMetadata -> Maybe Bool
+ Google.Cloud.Compute.Instance: [selfLink] :: InstanceDeleteResp -> Maybe String
+ Google.Cloud.Compute.Instance: [sha256] :: InstanceEncryptionKey -> Maybe Text
+ Google.Cloud.Compute.Instance: [shieldedInstanceConfig] :: InstanceMetadata -> Maybe ShieldedInstanceConfig
+ Google.Cloud.Compute.Instance: [shieldedInstanceIntegrityPolicy] :: InstanceMetadata -> Maybe ShieldedInstanceIntegrityPolicy
+ Google.Cloud.Compute.Instance: [sourceMachineImageEncryptionKey] :: InstanceMetadata -> Maybe InstanceEncryptionKey
+ Google.Cloud.Compute.Instance: [sourceMachineImage] :: InstanceMetadata -> Maybe Text
+ Google.Cloud.Compute.Instance: [startRestricted] :: InstanceMetadata -> Maybe Bool
+ Google.Cloud.Compute.Instance: [startTime] :: InstanceDeleteResp -> Maybe String
+ Google.Cloud.Compute.Instance: [statusMessage] :: InstanceStartResponse -> Maybe Text
+ Google.Cloud.Compute.Instance: [status] :: InstanceStartResponse -> Maybe Text
+ Google.Cloud.Compute.Instance: [targetId] :: InstanceStartResponse -> Maybe Text
+ Google.Cloud.Compute.Instance: [targetLink] :: InstanceStartResponse -> Maybe Text
+ Google.Cloud.Compute.Instance: [totalEgressBandwidthTier] :: NetworkPerformanceConfig -> Text
+ Google.Cloud.Compute.Instance: [updateAutoLearnPolicy] :: UpdateAutoLearnPolicy -> Bool
+ Google.Cloud.Compute.Instance: [url] :: Link -> Maybe String
+ Google.Cloud.Compute.Instance: [user] :: InstanceStartResponse -> Maybe Text
+ Google.Cloud.Compute.Instance: [values] :: ReservationAffinity -> Maybe [Text]
+ Google.Cloud.Compute.Instance: [warnings] :: InstanceDeleteResp -> Maybe [Warning]
+ Google.Cloud.Compute.Instance: [zone] :: InstanceStartResponse -> Maybe Text
+ Google.Cloud.Compute.Instance: instance GHC.Internal.Show.Show Google.Cloud.Compute.Instance.ConfidentialInstanceConfig
+ Google.Cloud.Compute.Instance: instance GHC.Internal.Show.Show Google.Cloud.Compute.Instance.DetailedError
+ Google.Cloud.Compute.Instance: instance GHC.Internal.Show.Show Google.Cloud.Compute.Instance.Disk
+ Google.Cloud.Compute.Instance: instance GHC.Internal.Show.Show Google.Cloud.Compute.Instance.DisplayDevice
+ Google.Cloud.Compute.Instance: instance GHC.Internal.Show.Show Google.Cloud.Compute.Instance.ErrorDetail
+ Google.Cloud.Compute.Instance: instance GHC.Internal.Show.Show Google.Cloud.Compute.Instance.ErrorInfo
+ Google.Cloud.Compute.Instance: instance GHC.Internal.Show.Show Google.Cloud.Compute.Instance.Error_
+ Google.Cloud.Compute.Instance: instance GHC.Internal.Show.Show Google.Cloud.Compute.Instance.GuestAccelerator
+ Google.Cloud.Compute.Instance: instance GHC.Internal.Show.Show Google.Cloud.Compute.Instance.Help
+ Google.Cloud.Compute.Instance: instance GHC.Internal.Show.Show Google.Cloud.Compute.Instance.InitializeParams
+ Google.Cloud.Compute.Instance: instance GHC.Internal.Show.Show Google.Cloud.Compute.Instance.InsertInstanceOps
+ Google.Cloud.Compute.Instance: instance GHC.Internal.Show.Show Google.Cloud.Compute.Instance.InsertInstanceQuery
+ Google.Cloud.Compute.Instance: instance GHC.Internal.Show.Show Google.Cloud.Compute.Instance.InstanceDeleteResp
+ Google.Cloud.Compute.Instance: instance GHC.Internal.Show.Show Google.Cloud.Compute.Instance.InstanceEncryptionKey
+ Google.Cloud.Compute.Instance: instance GHC.Internal.Show.Show Google.Cloud.Compute.Instance.InstanceList
+ Google.Cloud.Compute.Instance: instance GHC.Internal.Show.Show Google.Cloud.Compute.Instance.InstanceMetadata
+ Google.Cloud.Compute.Instance: instance GHC.Internal.Show.Show Google.Cloud.Compute.Instance.InstanceStartResponse
+ Google.Cloud.Compute.Instance: instance GHC.Internal.Show.Show Google.Cloud.Compute.Instance.InstanceTerminationAction
+ Google.Cloud.Compute.Instance: instance GHC.Internal.Show.Show Google.Cloud.Compute.Instance.Link
+ Google.Cloud.Compute.Instance: instance GHC.Internal.Show.Show Google.Cloud.Compute.Instance.ListInstancesQuery
+ Google.Cloud.Compute.Instance: instance GHC.Internal.Show.Show Google.Cloud.Compute.Instance.LocalizedMessage
+ Google.Cloud.Compute.Instance: instance GHC.Internal.Show.Show Google.Cloud.Compute.Instance.NetworkInterface
+ Google.Cloud.Compute.Instance: instance GHC.Internal.Show.Show Google.Cloud.Compute.Instance.NetworkPerformanceConfig
+ Google.Cloud.Compute.Instance: instance GHC.Internal.Show.Show Google.Cloud.Compute.Instance.NodeAffinity
+ Google.Cloud.Compute.Instance: instance GHC.Internal.Show.Show Google.Cloud.Compute.Instance.OnInstanceTerminationAction
+ Google.Cloud.Compute.Instance: instance GHC.Internal.Show.Show Google.Cloud.Compute.Instance.QuotaInfo
+ Google.Cloud.Compute.Instance: instance GHC.Internal.Show.Show Google.Cloud.Compute.Instance.RequestIdQuery
+ Google.Cloud.Compute.Instance: instance GHC.Internal.Show.Show Google.Cloud.Compute.Instance.ReservationAffinity
+ Google.Cloud.Compute.Instance: instance GHC.Internal.Show.Show Google.Cloud.Compute.Instance.ResourceStatus
+ Google.Cloud.Compute.Instance: instance GHC.Internal.Show.Show Google.Cloud.Compute.Instance.RunDuration
+ Google.Cloud.Compute.Instance: instance GHC.Internal.Show.Show Google.Cloud.Compute.Instance.Scheduling
+ Google.Cloud.Compute.Instance: instance GHC.Internal.Show.Show Google.Cloud.Compute.Instance.ShieldedInstanceConfig
+ Google.Cloud.Compute.Instance: instance GHC.Internal.Show.Show Google.Cloud.Compute.Instance.ShieldedInstanceIntegrityPolicy
+ Google.Cloud.Compute.Instance: instance GHC.Internal.Show.Show Google.Cloud.Compute.Instance.UpdateAutoLearnPolicy
+ Google.Cloud.Compute.Instance: instance GHC.Internal.Show.Show Google.Cloud.Compute.Instance.Warning
+ Google.Cloud.Compute.Instance: newtype DisplayDevice
+ Google.Cloud.Compute.Instance: newtype Error_
+ Google.Cloud.Compute.Instance: newtype Help
+ Google.Cloud.Compute.Instance: newtype InstanceTerminationAction
+ Google.Cloud.Compute.Instance: newtype NetworkPerformanceConfig
+ Google.Cloud.Compute.Instance: newtype OnInstanceTerminationAction
+ Google.Cloud.Compute.Instance: newtype RequestIdQuery
+ Google.Cloud.Compute.Instance: newtype RunDuration
+ Google.Cloud.Compute.Instance: newtype ShieldedInstanceIntegrityPolicy
+ Google.Cloud.Compute.Instance: newtype UpdateAutoLearnPolicy
+ Google.Cloud.Compute.Network: [autoCreateSubnetworks] :: NetworkMeta -> Maybe Bool
+ Google.Cloud.Compute.Network: [creationTimestamp] :: NetworkMeta -> Text
+ Google.Cloud.Compute.Network: [description] :: NetworkMeta -> Maybe Text
+ Google.Cloud.Compute.Network: [enableUlaInternalIpv6] :: NetworkMeta -> Maybe Bool
+ Google.Cloud.Compute.Network: [exchangeSubnetRoutes] :: NetworkPeering -> Maybe Bool
+ Google.Cloud.Compute.Network: [exportCustomRoutes] :: NetworkPeering -> Maybe Bool
+ Google.Cloud.Compute.Network: [filter_] :: ListNetworksQuery -> Maybe String
+ Google.Cloud.Compute.Network: [gatewayIPv4] :: NetworkMeta -> Maybe Text
+ Google.Cloud.Compute.Network: [iPv4Range] :: NetworkMeta -> Maybe Text
+ Google.Cloud.Compute.Network: [iPv6Range] :: NetworkMeta -> Maybe Text
+ Google.Cloud.Compute.Network: [id_] :: NetworkMeta -> Text
+ Google.Cloud.Compute.Network: [importCustomRoutes] :: NetworkPeering -> Maybe Bool
+ Google.Cloud.Compute.Network: [internalIpv6Range] :: NetworkMeta -> Maybe Text
+ Google.Cloud.Compute.Network: [items] :: NetworkList -> Maybe [NetworkMeta]
+ Google.Cloud.Compute.Network: [kind] :: NetworkMeta -> Text
+ Google.Cloud.Compute.Network: [maxResults] :: ListNetworksQuery -> Maybe Int
+ Google.Cloud.Compute.Network: [mtu] :: NetworkMeta -> Maybe Int
+ Google.Cloud.Compute.Network: [name] :: NetworkPeering -> Text
+ Google.Cloud.Compute.Network: [networkFirewallPolicyEnforcementOrder] :: NetworkMeta -> Maybe Text
+ Google.Cloud.Compute.Network: [network] :: NetworkPeering -> Text
+ Google.Cloud.Compute.Network: [nextPageToken] :: NetworkList -> Maybe Text
+ Google.Cloud.Compute.Network: [orderBy] :: ListNetworksQuery -> Maybe String
+ Google.Cloud.Compute.Network: [pageToken] :: ListNetworksQuery -> Maybe String
+ Google.Cloud.Compute.Network: [peerings] :: NetworkMeta -> Maybe [NetworkPeering]
+ Google.Cloud.Compute.Network: [returnPartialSuccess] :: ListNetworksQuery -> Maybe Bool
+ Google.Cloud.Compute.Network: [selfLink] :: NetworkMeta -> Text
+ Google.Cloud.Compute.Network: [stateDetails] :: NetworkPeering -> Maybe Text
+ Google.Cloud.Compute.Network: [state] :: NetworkPeering -> Text
+ Google.Cloud.Compute.Network: [subnetworks] :: NetworkMeta -> [Text]
+ Google.Cloud.Compute.Network: instance GHC.Internal.Show.Show Google.Cloud.Compute.Network.ListNetworksQuery
+ Google.Cloud.Compute.Network: instance GHC.Internal.Show.Show Google.Cloud.Compute.Network.NetworkList
+ Google.Cloud.Compute.Network: instance GHC.Internal.Show.Show Google.Cloud.Compute.Network.NetworkMeta
+ Google.Cloud.Compute.Network: instance GHC.Internal.Show.Show Google.Cloud.Compute.Network.NetworkPeering
- Google.Cloud.Compute.Network: NetworkList :: Text -> Text -> [NetworkMeta] -> Maybe Text -> Text -> NetworkList
+ Google.Cloud.Compute.Network: NetworkList :: Text -> Text -> Maybe [NetworkMeta] -> Maybe Text -> Text -> NetworkList
Files
- CHANGELOG.md +4/−0
- README.md +72/−0
- Setup.hs +1/−0
- google-cloud-compute.cabal +4/−4
- src/Google/Cloud/Compute/Common.hs +8/−0
- src/Google/Cloud/Compute/Disk.hs +241/−138
- src/Google/Cloud/Compute/Firewall.hs +14/−13
- src/Google/Cloud/Compute/Instance.hs +138/−127
- src/Google/Cloud/Compute/Network.hs +153/−134
- test/Spec.hs +129/−85
CHANGELOG.md view
@@ -8,4 +8,8 @@ ## Unreleased +## 1.1.0.0 - 2025-09-11++- Synchronized version bump for v1.1.0.0 release.+ ## 0.1.0.0 - YYYY-MM-DD
README.md view
@@ -3,3 +3,75 @@ 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
Setup.hs view
@@ -1,2 +1,3 @@ import Distribution.Simple+ main = defaultMain
google-cloud-compute.cabal view
@@ -1,11 +1,11 @@ cabal-version: 1.12 --- This file has been generated from package.yaml by hpack version 0.37.0.+-- This file has been generated from package.yaml by hpack version 0.38.1. -- -- see: https://github.com/sol/hpack name: google-cloud-compute-version: 0.1.0.0+version: 1.1.0.0 synopsis: GCP Client for Haskell description: GCP Compute client for Haskell. category: Web@@ -42,7 +42,7 @@ , base >=4.7 && <5 , bytestring >=0.9.1.4 , containers >=0.6 && <1- , google-cloud-common+ , google-cloud-common >=1.1.0.0 && <1.2.0.0 , http-conduit >=2.2 && <2.4 , text >=1.2 && <3 default-language: Haskell2010@@ -60,7 +60,7 @@ , base >=4.7 && <5 , bytestring >=0.9.1.4 , containers >=0.6 && <1- , google-cloud-common+ , google-cloud-common >=1.1.0.0 && <1.2.0.0 , google-cloud-compute , hspec >=1.3 , http-conduit >=2.2 && <2.4
src/Google/Cloud/Compute/Common.hs view
@@ -1,3 +1,11 @@+{- |+Module : Google.Cloud.Compute.Common+License : MIT+Maintainer : maintainers@google-cloud-haskell+Stability : experimental++Common helpers and constants for Google Cloud Compute client modules.+-} module Google.Cloud.Compute.Common (googleComputeUrl) where googleComputeUrl :: String
src/Google/Cloud/Compute/Disk.hs view
@@ -1,17 +1,17 @@-{-|+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}++{- | Module : Google.Cloud.Compute.Disk Copyright : (c) 2025 License : MIT-Maintainer : +Maintainer : Stability : experimental This module provides a Haskell client for Google Cloud Compute Engine Disk operations. -}-{-# LANGUAGE DuplicateRecordFields #-}-{-# LANGUAGE NamedFieldPuns #-}-{-# LANGUAGE OverloadedStrings #-}-{-# LANGUAGE RecordWildCards #-}- module Google.Cloud.Compute.Disk ( listDisks , insertDisk@@ -21,7 +21,7 @@ , Operation (..) , deleteDisk , createDiskSnapshot- , CreateSnapshotResp + , CreateSnapshotResp , CreateSnapshotOps (..) , Warning (..) , WarningData (..)@@ -31,6 +31,7 @@ import Data.Aeson import qualified Data.ByteString.Char8 as BS+import qualified Data.ByteString.Lazy.Char8 as BSL import Data.Map (Map) import Google.Cloud.Common.Core import Google.Cloud.Compute.Common@@ -38,117 +39,183 @@ -- | Represents a warning object returned by Google Cloud API operations data Warning = Warning- { code :: String -- ^ Warning type identifier- , message :: String -- ^ Human-readable warning message- , data_ :: Maybe [WarningData] -- ^ Optional metadata about the warning+ { code :: String+ -- ^ Warning type identifier+ , message :: String+ -- ^ Human-readable warning message+ , data_ :: Maybe [WarningData]+ -- ^ Optional metadata about the warning } deriving (Show, Eq) -- | Key-value pair providing additional context for warnings data WarningData = WarningData- { key :: String -- ^ Metadata key describing the warning aspect- , value :: String -- ^ Metadata value associated with the key+ { key :: String+ -- ^ Metadata key describing the warning aspect+ , value :: String+ -- ^ Metadata value associated with the key } deriving (Show, Eq) -- | Response format for disk listing operations data DiskResponse = DiskResponse- { kind :: Maybe String -- ^ Type identifier ("compute#diskList")- , id :: Maybe String -- ^ Unique identifier for the resource- , items :: Maybe [DiskItem] -- ^ List of disks in the project/zone- , nextPageToken :: Maybe String -- ^ Pagination token for next page- , selfLink :: Maybe String -- ^ Server-defined URL for the resource- , warning :: Maybe Warning -- ^ Any warnings about the result+ { kind :: Maybe String+ -- ^ Type identifier ("compute#diskList")+ , id :: Maybe String+ -- ^ Unique identifier for the resource+ , items :: Maybe [DiskItem]+ -- ^ List of disks in the project/zone+ , nextPageToken :: Maybe String+ -- ^ Pagination token for next page+ , selfLink :: Maybe String+ -- ^ Server-defined URL for the resource+ , warning :: Maybe Warning+ -- ^ Any warnings about the result } deriving (Show, Eq) -- | Represents a Google Cloud Persistent Disk data DiskItem = DiskItem- { kind :: Maybe String -- ^ Type identifier ("compute#disk")- , id :: Maybe String -- ^ Unique numeric ID- , creationTimestamp :: Maybe String -- ^ ISO 8601 creation timestamp- , name :: Maybe String -- ^ User-provided disk name- , description :: Maybe String -- ^ Optional disk description- , sizeGb :: Maybe String -- ^ Disk size in gigabytes- , zone :: Maybe String -- ^ Zone where the disk resides- , status :: Maybe String -- ^ Current status (READY, CREATING, etc.)- , sourceSnapshot :: Maybe String -- ^ Source snapshot URL if applicable- , sourceSnapshotId :: Maybe String -- ^ Unique ID of source snapshot- , sourceImage :: Maybe String -- ^ Source image URL if applicable- , sourceImageId :: Maybe String -- ^ Unique ID of source image- , type_ :: Maybe String -- ^ Disk type (e.g., "pd-standard")- , labels :: Maybe (Map String String) -- ^ User-defined labels- , labelFingerprint :: Maybe String -- ^ Fingerprint for label operations- , licenses :: Maybe [String] -- ^ License resource URLs- , users :: Maybe [String] -- ^ Instances currently using the disk- , guestOsFeatures :: Maybe [GuestOsFeature] -- ^ OS-specific features- , diskEncryptionKey :: Maybe EncryptionKey -- ^ Disk encryption details- , sourceDisk :: Maybe String -- ^ Source disk URL for regional disks- , sourceDiskId :: Maybe String -- ^ Unique ID of source disk- , physicalBlockSizeBytes :: Maybe String -- ^ Physical block size in bytes- , provisionedIops :: Maybe String -- ^ Provisioned IOPS for SSD- , resourcePolicies :: Maybe [String] -- ^ Resource policy URLs- , selfLink :: Maybe String -- ^ Server-defined URL for the disk+ { kind :: Maybe String+ -- ^ Type identifier ("compute#disk")+ , id :: Maybe String+ -- ^ Unique numeric ID+ , creationTimestamp :: Maybe String+ -- ^ ISO 8601 creation timestamp+ , name :: Maybe String+ -- ^ User-provided disk name+ , description :: Maybe String+ -- ^ Optional disk description+ , sizeGb :: Maybe String+ -- ^ Disk size in gigabytes+ , zone :: Maybe String+ -- ^ Zone where the disk resides+ , status :: Maybe String+ -- ^ Current status (READY, CREATING, etc.)+ , sourceSnapshot :: Maybe String+ -- ^ Source snapshot URL if applicable+ , sourceSnapshotId :: Maybe String+ -- ^ Unique ID of source snapshot+ , sourceImage :: Maybe String+ -- ^ Source image URL if applicable+ , sourceImageId :: Maybe String+ -- ^ Unique ID of source image+ , type_ :: Maybe String+ -- ^ Disk type (e.g., "pd-standard")+ , labels :: Maybe (Map String String)+ -- ^ User-defined labels+ , labelFingerprint :: Maybe String+ -- ^ Fingerprint for label operations+ , licenses :: Maybe [String]+ -- ^ License resource URLs+ , users :: Maybe [String]+ -- ^ Instances currently using the disk+ , guestOsFeatures :: Maybe [GuestOsFeature]+ -- ^ OS-specific features+ , diskEncryptionKey :: Maybe EncryptionKey+ -- ^ Disk encryption details+ , sourceDisk :: Maybe String+ -- ^ Source disk URL for regional disks+ , sourceDiskId :: Maybe String+ -- ^ Unique ID of source disk+ , physicalBlockSizeBytes :: Maybe String+ -- ^ Physical block size in bytes+ , provisionedIops :: Maybe String+ -- ^ Provisioned IOPS for SSD+ , resourcePolicies :: Maybe [String]+ -- ^ Resource policy URLs+ , selfLink :: Maybe String+ -- ^ Server-defined URL for the disk } deriving (Show, Eq) -- | Guest OS features enabled on the disk-data GuestOsFeature = GuestOsFeature- { type_ :: String -- ^ Feature type (e.g., "UEFI_COMPATIBLE")+newtype GuestOsFeature = GuestOsFeature+ { type_ :: String+ -- ^ Feature type (e.g., "UEFI_COMPATIBLE") } deriving (Show, Eq) -- | Disk encryption key information data EncryptionKey = EncryptionKey- { rawKey :: Maybe String -- ^ Raw encryption key (base64)- , rsaEncryptedKey :: Maybe String -- ^ RSA-wrapped encryption key- , sha256 :: Maybe String -- ^ RFC 4648 base64 SHA-256 hash+ { rawKey :: Maybe String+ -- ^ Raw encryption key (base64)+ , rsaEncryptedKey :: Maybe String+ -- ^ RSA-wrapped encryption key+ , sha256 :: Maybe String+ -- ^ RFC 4648 base64 SHA-256 hash } deriving (Show, Eq) -- | Long-running operation resource data Operation = Operation- { id :: Maybe String -- ^ Unique operation ID- , name :: Maybe String -- ^ Operation name- , zone :: Maybe String -- ^ Zone where operation is executed- , operationType :: Maybe String -- ^ Operation type (insert, delete, etc.)- , targetLink :: Maybe String -- ^ URL of resource being modified- , status :: Maybe String -- ^ Current status (DONE, RUNNING, etc.)- , progress :: Maybe Int -- ^ Operation progress (0-100)- , insertTime :: Maybe String -- ^ ISO 8601 creation timestamp- , startTime :: Maybe String -- ^ ISO 8601 start timestamp- , endTime :: Maybe String -- ^ ISO 8601 completion timestamp- , error :: Maybe OperationError -- ^ Error details if failed- , warnings :: Maybe [Warning] -- ^ Warnings during operation- , selfLink :: Maybe String -- ^ Server-defined URL for the operation+ { id :: Maybe String+ -- ^ Unique operation ID+ , name :: Maybe String+ -- ^ Operation name+ , zone :: Maybe String+ -- ^ Zone where operation is executed+ , operationType :: Maybe String+ -- ^ Operation type (insert, delete, etc.)+ , targetLink :: Maybe String+ -- ^ URL of resource being modified+ , status :: Maybe String+ -- ^ Current status (DONE, RUNNING, etc.)+ , progress :: Maybe Int+ -- ^ Operation progress (0-100)+ , insertTime :: Maybe String+ -- ^ ISO 8601 creation timestamp+ , startTime :: Maybe String+ -- ^ ISO 8601 start timestamp+ , endTime :: Maybe String+ -- ^ ISO 8601 completion timestamp+ , error :: Maybe OperationError+ -- ^ Error details if failed+ , warnings :: Maybe [Warning]+ -- ^ Warnings during operation+ , selfLink :: Maybe String+ -- ^ Server-defined URL for the operation } deriving (Show, Eq) -- | Error information from failed operations-data OperationError = OperationError- { errors :: [ErrorDetail] -- ^ List of error details+newtype OperationError = OperationError+ { errors :: [ErrorDetail]+ -- ^ List of error details } deriving (Show, Eq) -- | Detailed error information data ErrorDetail = ErrorDetail- { code :: String -- ^ Error type identifier- , message :: String -- ^ Human-readable error message- , location :: Maybe String -- ^ Location in request that triggered error+ { code :: String+ -- ^ Error type identifier+ , message :: String+ -- ^ Human-readable error message+ , location :: Maybe String+ -- ^ Location in request that triggered error } deriving (Show, Eq) -- | Disk creation options data InsertDiskOps = InsertDiskOps- { name :: String -- ^ Required disk name- , sizeGb :: String -- ^ Required size in gigabytes- , description :: Maybe String -- ^ Optional description- , type_ :: Maybe String -- ^ Disk type (default: pd-standard)- , sourceImage :: Maybe String -- ^ Source image URL for disk creation- , sourceSnapshot :: Maybe String -- ^ Source snapshot URL for disk creation- , labels :: Maybe (Map String String) -- ^ Initial labels- , guestOsFeatures :: Maybe [GuestOsFeature] -- ^ OS features to enable- , diskEncryptionKey :: Maybe EncryptionKey -- ^ Encryption configuration+ { name :: String+ -- ^ Required disk name+ , sizeGb :: String+ -- ^ Required size in gigabytes+ , description :: Maybe String+ -- ^ Optional description+ , type_ :: Maybe String+ -- ^ Disk type (default: pd-standard)+ , sourceImage :: Maybe String+ -- ^ Source image URL for disk creation+ , sourceSnapshot :: Maybe String+ -- ^ Source snapshot URL for disk creation+ , labels :: Maybe (Map String String)+ -- ^ Initial labels+ , guestOsFeatures :: Maybe [GuestOsFeature]+ -- ^ OS features to enable+ , diskEncryptionKey :: Maybe EncryptionKey+ -- ^ Encryption configuration } deriving (Show, Eq) @@ -157,11 +224,16 @@ -- | Snapshot creation options data CreateSnapshotOps = CreateSnapshotOps- { name :: String -- ^ Required snapshot name- , description :: Maybe String -- ^ Optional description- , labels :: Maybe (Map String String) -- ^ Labels for the snapshot- , storageLocations :: Maybe [String] -- ^ Preferred storage locations- , snapshotEncryptionKey :: Maybe EncryptionKey -- ^ Snapshot encryption+ { name :: String+ -- ^ Required snapshot name+ , description :: Maybe String+ -- ^ Optional description+ , labels :: Maybe (Map String String)+ -- ^ Labels for the snapshot+ , storageLocations :: Maybe [String]+ -- ^ Preferred storage locations+ , snapshotEncryptionKey :: Maybe EncryptionKey+ -- ^ Snapshot encryption } deriving (Show, Eq) @@ -184,13 +256,13 @@ deriving (Show, Eq) -- | Query parameters for deleteDisk-data DeleteDiskQuery = DeleteDiskQuery+newtype DeleteDiskQuery = DeleteDiskQuery { force :: Maybe Bool } deriving (Show, Eq) -- | Query parameters for createDiskSnapshot-data CreateSnapshotQuery = CreateSnapshotQuery+newtype CreateSnapshotQuery = CreateSnapshotQuery { guestFlush :: Maybe Bool } deriving (Show, Eq)@@ -470,15 +542,22 @@ ] -- Functions--- | List disks in a zone------ Example:------ > listDisks "my-project" "us-central1-a" Nothing-listDisks :: String -- ^ GCP Project ID- -> String -- ^ Zone name- -> Maybe ListDisksQuery -- ^ Optional query parameters- -> IO (Either String DiskResponse) -- ^ List result or error}++{- | List disks in a zone++Example:++> listDisks "my-project" "us-central1-a" Nothing+-}+listDisks ::+ -- | GCP Project ID+ String ->+ -- | Zone name+ String ->+ -- | Optional query parameters+ Maybe ListDisksQuery ->+ -- | List result or error}+ IO (Either String DiskResponse) listDisks project zone_ mbQuery = do let queryParams = maybe [] queryToList mbQuery doRequestJSON@@ -499,16 +578,23 @@ , maybe mempty (\x -> ("orderBy", Just $ BS.pack x)) orderBy ] --- | Create a new persistent disk------ Example:------ > insertDisk "my-project" "us-central1-a" (defaultInsertOps "disk1" "100") Nothing-insertDisk :: String -- ^ GCP Project ID- -> String -- ^ Zone name- -> InsertDiskOps -- ^ Disk configuration- -> Maybe InsertDiskQuery -- ^ Optional query parameters- -> IO (Either String InsertDiskResponse) -- ^ Operation or error}+{- | Create a new persistent disk++Example:++> insertDisk "my-project" "us-central1-a" (defaultInsertOps "disk1" "100") Nothing+-}+insertDisk ::+ -- | GCP Project ID+ String ->+ -- | Zone name+ String ->+ -- | Disk configuration+ InsertDiskOps ->+ -- | Optional query parameters+ Maybe InsertDiskQuery ->+ -- | Operation or error}+ IO (Either String InsertDiskResponse) insertDisk project zone_ insertDiskOps mbQuery = do let queryParams = maybe [] queryToList mbQuery doRequestJSON@@ -526,22 +612,29 @@ [ maybe mempty (\x -> ("sourceImage", Just $ BS.pack x)) sourceImage , maybe mempty- (\x -> ("sourceImageEncryptionKey", Just . BS.toStrict $ encode x))+ (\x -> ("sourceImageEncryptionKey", Just . BSL.toStrict $ encode x)) sourceImageEncryptionKey ] -- | Deletes a disk with optional query parameters --- | Delete a persistent disk------ Example:------ > deleteDisk "my-project" "us-central1-a" "old-disk" (Just DeleteDiskQuery { force = True })-deleteDisk :: String -- ^ GCP Project ID- -> String -- ^ Zone name- -> String -- ^ Disk name to delete- -> Maybe DeleteDiskQuery -- ^ Optional force deletion- -> IO (Either String Operation) -- ^ Operation or error+{- | Delete a persistent disk++Example:++> deleteDisk "my-project" "us-central1-a" "old-disk" (Just DeleteDiskQuery { force = True })+-}+deleteDisk ::+ -- | GCP Project ID+ String ->+ -- | Zone name+ String ->+ -- | Disk name to delete+ String ->+ -- | Optional force deletion+ Maybe DeleteDiskQuery ->+ -- | Operation or error+ IO (Either String Operation) deleteDisk project zone_ diskName mbQuery = do let queryParams = maybe [] queryToList mbQuery doRequestJSON@@ -559,19 +652,27 @@ [ maybe mempty (\x -> ("force", Just . BS.pack $ show x)) (force q) ] --- | Creates a snapshot of a disk with optional query parameters--- | Create disk snapshot------ Example:------ > createDiskSnapshot "my-project" "us-central1-a" "source-disk" --- > (defaultCreateSnapshotOps "daily-backup") Nothing-createDiskSnapshot :: String -- ^ GCP Project ID- -> String -- ^ Zone name- -> String -- ^ Source disk name- -> CreateSnapshotOps -- ^ Snapshot configuration- -> Maybe CreateSnapshotQuery -- ^ Optional guest flush- -> IO (Either String CreateSnapshotResp) -- ^ Operation or error+{- | Creates a snapshot of a disk with optional query parameters+| Create disk snapshot++Example:++> createDiskSnapshot "my-project" "us-central1-a" "source-disk"+> (defaultCreateSnapshotOps "daily-backup") Nothing+-}+createDiskSnapshot ::+ -- | GCP Project ID+ String ->+ -- | Zone name+ String ->+ -- | Source disk name+ String ->+ -- | Snapshot configuration+ CreateSnapshotOps ->+ -- | Optional guest flush+ Maybe CreateSnapshotQuery ->+ -- | Operation or error+ IO (Either String CreateSnapshotResp) createDiskSnapshot project zone_ diskName createSnapshotOps mbQuery = do let queryParams = maybe [] queryToList mbQuery doRequestJSON@@ -590,12 +691,13 @@ [ maybe mempty (\x -> ("guestFlush", Just . BS.pack $ show x)) (guestFlush q) ] --- | Default disk creation options------ Creates minimal valid configuration with required name and size.--- Other fields can be added using record update syntax:------ > defaultInsertOps "new-disk" "50" { type_ = Just "pd-ssd" }+{- | Default disk creation options++Creates minimal valid configuration with required name and size.+Other fields can be added using record update syntax:++> defaultInsertOps "new-disk" "50" { type_ = Just "pd-ssd" }+-} defaultInsertOps :: String -> String -> InsertDiskOps defaultInsertOps diskName diskSizeGb = InsertDiskOps@@ -610,12 +712,13 @@ , diskEncryptionKey = Nothing } --- | Default snapshot creation options------ Creates minimal valid configuration with required snapshot name.--- Additional fields can be added using record update syntax:------ > defaultCreateSnapshotOps "backup" { description = Just "Daily backup" }+{- | Default snapshot creation options++Creates minimal valid configuration with required snapshot name.+Additional fields can be added using record update syntax:++> defaultCreateSnapshotOps "backup" { description = Just "Daily backup" }+-} defaultCreateSnapshotOps :: String -> CreateSnapshotOps defaultCreateSnapshotOps snapshotName = CreateSnapshotOps
src/Google/Cloud/Compute/Firewall.hs view
@@ -4,9 +4,9 @@ {- | Module : Google.Cloud.Compute.Firewall-Copyright : (c) 2025 +Copyright : (c) 2025 License : MIT-Maintainer : +Maintainer : Stability : experimental This module provides a Haskell client for Google Cloud Compute Engine Firewall operations.@@ -165,7 +165,7 @@ deriving (Show, Eq) -- | Error information from failed operations-data OperationError = OperationError+newtype OperationError = OperationError { errors :: [ErrorDetail] -- ^ List of error details }@@ -477,7 +477,7 @@ deriving (Show, Eq) -- | Query parameters for createFirewall-data CreateFirewallQuery = CreateFirewallQuery+newtype CreateFirewallQuery = CreateFirewallQuery { requestId :: Maybe String } deriving (Show, Eq)@@ -558,15 +558,16 @@ catMaybes [("requestId",) <$> requestId q] --- | Default firewall creation options------ Creates minimal valid configuration with required name.--- Additional fields can be added using record update syntax:------ > defaultCreateFirewallOps "web-allow" --- > { description = Just "Allow web traffic"--- > , allowed = Just [AllowedFirewall "tcp" (Just ["80","443"])]--- > }+{- | Default firewall creation options++Creates minimal valid configuration with required name.+Additional fields can be added using record update syntax:++> defaultCreateFirewallOps "web-allow"+> { description = Just "Allow web traffic"+> , allowed = Just [AllowedFirewall "tcp" (Just ["80","443"])]+> }+-} defaultCreateFirewallOps :: String -> CreateFirewallOps defaultCreateFirewallOps firewallName = CreateFirewallOps
src/Google/Cloud/Compute/Instance.hs view
@@ -1,8 +1,13 @@-{-|+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE TupleSections #-}++{- | Module : Google.Cloud.Compute.Instance Copyright : (c) 2025 Tushar License : MIT-Maintainer : +Maintainer : Stability : experimental This module provides types and functions for interacting with Google Cloud Platform (GCP)@@ -15,12 +20,6 @@ For more information on the underlying API, see: <https://cloud.google.com/compute/docs/reference/rest/v1/instances GCP Compute Instances Documentation> -}--{-# LANGUAGE DuplicateRecordFields #-}-{-# LANGUAGE OverloadedStrings #-}-{-# LANGUAGE RecordWildCards #-}-{-# LANGUAGE TupleSections #-}- module Google.Cloud.Compute.Instance ( -- Data Types InstanceMetadata (..)@@ -71,38 +70,38 @@ import Data.Aeson import qualified Data.ByteString as BS import qualified Data.ByteString.Char8 as BS8+import qualified Data.Map.Strict as Map import Data.Maybe (catMaybes) import Data.Text (Text) import Google.Cloud.Common.Core import Google.Cloud.Compute.Common-import qualified Data.Map.Strict as Map -- ** Query Parameter Types** -- | Query parameters for listing instances data ListInstancesQuery = ListInstancesQuery { filter_ :: Maybe String- -- ^ Filter expression for filtering listed instances+ -- ^ Filter expression for filtering listed instances , maxResults :: Maybe Int- -- ^ Maximum number of results per page+ -- ^ Maximum number of results per page , orderBy :: Maybe String- -- ^ Sort order for results+ -- ^ Sort order for results , pageToken :: Maybe String- -- ^ Page token for paginated results+ -- ^ Page token for paginated results , returnPartialSuccess :: Maybe Bool- -- ^ Whether to return partial success results+ -- ^ Whether to return partial success results } deriving (Show, Eq) -- Query parameters for operations with requestId (start, stop, delete)-data RequestIdQuery = RequestIdQuery+newtype RequestIdQuery = RequestIdQuery { requestId :: Maybe String } deriving (Show, Eq) -- ** Data Types with Custom JSON Instances** -data RunDuration+newtype RunDuration = TerminationTime String deriving (Show, Eq) @@ -112,7 +111,7 @@ instance ToJSON RunDuration where toJSON (TerminationTime t) = object ["terminationTime" .= t] -data OnInstanceTerminationAction = DiscardLocalSsd {discardLocalSsd :: Bool}+newtype OnInstanceTerminationAction = DiscardLocalSsd {discardLocalSsd :: Bool} deriving (Show, Eq) instance FromJSON OnInstanceTerminationAction where@@ -161,7 +160,7 @@ , "instanceTerminationAction" .= instanceTerminationAction ] -data InstanceTerminationAction+newtype InstanceTerminationAction = RunDurationRunDuration RunDuration deriving (Show, Eq) @@ -215,57 +214,57 @@ -- | Metadata representing a Compute Engine instance data InstanceMetadata = InstanceMetadata { cpuPlatform :: Maybe String- -- ^ The CPU platform used by this instance+ -- ^ The CPU platform used by this instance , labelFingerprint :: Maybe Text- -- ^ Fingerprint of the label metadata+ -- ^ Fingerprint of the label metadata , instanceEncryptionKey :: Maybe InstanceEncryptionKey- -- ^ Encryption key configuration for the instance+ -- ^ Encryption key configuration for the instance , minCpuPlatform :: Maybe Text- -- ^ Minimum CPU platform required by the instance+ -- ^ Minimum CPU platform required by the instance , guestAccelerators :: Maybe [GuestAccelerator]- -- ^ List of guest accelerators attached to the instance+ -- ^ List of guest accelerators attached to the instance , startRestricted :: Maybe Bool- -- ^ Whether instance start is restricted due to storage issues+ -- ^ Whether instance start is restricted due to storage issues , deletionProtection :: Maybe Bool- -- ^ Whether deletion protection is enabled+ -- ^ Whether deletion protection is enabled , resourcePolicies :: Maybe [Text]- -- ^ Resource policies applied to the instance+ -- ^ Resource policies applied to the instance , sourceMachineImage :: Maybe Text- -- ^ Source machine image used to create the instance+ -- ^ Source machine image used to create the instance , reservationAffinity :: Maybe ReservationAffinity- -- ^ Reservation affinity configuration+ -- ^ Reservation affinity configuration , hostname :: Maybe Text- -- ^ Custom hostname assigned to the instance+ -- ^ Custom hostname assigned to the instance , displayDevice :: Maybe DisplayDevice- -- ^ Display device configuration+ -- ^ Display device configuration , shieldedInstanceConfig :: Maybe ShieldedInstanceConfig- -- ^ Shielded VM configuration+ -- ^ Shielded VM configuration , shieldedInstanceIntegrityPolicy :: Maybe ShieldedInstanceIntegrityPolicy- -- ^ Integrity policy for shielded instances+ -- ^ Integrity policy for shielded instances , sourceMachineImageEncryptionKey :: Maybe InstanceEncryptionKey- -- ^ Encryption key for source machine image+ -- ^ Encryption key for source machine image , confidentialInstanceConfig :: Maybe ConfidentialInstanceConfig- -- ^ Confidential computing configuration+ -- ^ Confidential computing configuration , fingerprint :: Maybe Text- -- ^ Unique fingerprint for resource metadata+ -- ^ Unique fingerprint for resource metadata , privateIpv6GoogleAccess :: Maybe Text- -- ^ Private IPv6 Google access configuration+ -- ^ Private IPv6 Google access configuration , lastStartTimestamp :: Maybe String- -- ^ Last start timestamp in RFC3339 format+ -- ^ Last start timestamp in RFC3339 format , lastStopTimestamp :: Maybe String- -- ^ Last stop timestamp in RFC3339 format+ -- ^ Last stop timestamp in RFC3339 format , lastSuspendedTimestamp :: Maybe String- -- ^ Last suspension timestamp in RFC3339 format+ -- ^ Last suspension timestamp in RFC3339 format , satisfiesPzs :: Maybe Bool- -- ^ Whether instance satisfies zone separation policy+ -- ^ Whether instance satisfies zone separation policy , satisfiesPzi :: Maybe Bool- -- ^ Whether instance satisfies instance separation policy+ -- ^ Whether instance satisfies instance separation policy , resourceStatus :: Maybe ResourceStatus- -- ^ Current resource status of the instance+ -- ^ Current resource status of the instance , networkPerformanceConfig :: Maybe NetworkPerformanceConfig- -- ^ Network performance configuration+ -- ^ Network performance configuration , keyRevocationActionType :: Maybe Text- -- ^ Type of key revocation action if applicable+ -- ^ Type of key revocation action if applicable } deriving (Show, Eq) @@ -373,7 +372,7 @@ , ("values" .=) <$> values ] -data DisplayDevice = DisplayDevice+newtype DisplayDevice = DisplayDevice { enableDisplay :: Bool } deriving (Show, Eq)@@ -408,7 +407,7 @@ , "enableIntegrityMonitoring" .= enableIntegrityMonitoring sic ] -data ShieldedInstanceIntegrityPolicy = ShieldedInstanceIntegrityPolicy+newtype ShieldedInstanceIntegrityPolicy = ShieldedInstanceIntegrityPolicy { policy :: Maybe UpdateAutoLearnPolicy } deriving (Show, Eq)@@ -424,7 +423,7 @@ catMaybes [("policy" .=) <$> policy sip] -data UpdateAutoLearnPolicy = UpdateAutoLearnPolicy {updateAutoLearnPolicy :: Bool}+newtype UpdateAutoLearnPolicy = UpdateAutoLearnPolicy {updateAutoLearnPolicy :: Bool} deriving (Show, Eq) instance FromJSON UpdateAutoLearnPolicy where@@ -484,7 +483,7 @@ , ("kmsKeyName" .=) <$> kmsKeyName iek ] -data NetworkPerformanceConfig = NetworkPerformanceConfig+newtype NetworkPerformanceConfig = NetworkPerformanceConfig { totalEgressBandwidthTier :: Text } deriving (Show, Eq)@@ -562,11 +561,11 @@ -- | Response structure for delete instance operation data InstanceDeleteResp = InstanceDeleteResp { kind :: Maybe String- -- ^ Type of resource (always "compute#operation")+ -- ^ Type of resource (always "compute#operation") , id_ :: Maybe String- -- ^ Unique identifier for the operation+ -- ^ Unique identifier for the operation , creationTimestamp :: Maybe String- -- ^ Creation timestamp in RFC3339 format+ -- ^ Creation timestamp in RFC3339 format , name :: Maybe String , zone :: Maybe String , clientOperationId :: Maybe String@@ -649,7 +648,7 @@ , ("operationGroupId" .=) <$> operationGroupId ] -data Error_ = Error_+newtype Error_ = Error_ { errors :: Maybe [ErrorDetail] } deriving (Show, Eq)@@ -761,7 +760,7 @@ , ("rolloutStatus" .=) <$> rolloutStatus qi ] -data Help = Help+newtype Help = Help { links :: Maybe [Link] } deriving (Show, Eq)@@ -870,7 +869,7 @@ } deriving (Show, Eq) -data NetworkInterface = NetworkInterface+newtype NetworkInterface = NetworkInterface { network :: String } deriving (Show, Eq)@@ -899,82 +898,86 @@ -- | Represents a disk attached to a Compute Engine instance data Disk = Disk { autoDelete :: Bool- -- ^ Whether disk should be auto-deleted when instance is deleted+ -- ^ Whether disk should be auto-deleted when instance is deleted , boot :: Bool- -- ^ Whether this is a boot disk+ -- ^ Whether this is a boot disk , deviceName :: String- -- ^ Unique device name visible to the guest OS+ -- ^ Unique device name visible to the guest OS , initializeParams :: Maybe InitializeParams- -- ^ Initialization parameters for the disk+ -- ^ Initialization parameters for the disk , mode :: String- -- ^ Access mode (READ_WRITE or READ_ONLY)+ -- ^ Access mode (READ_WRITE or READ_ONLY) , type_ :: String- -- ^ Disk type (PERSISTENT or SCRATCH)+ -- ^ Disk type (PERSISTENT or SCRATCH) } deriving (Show, Eq) -- | Disk initialization parameters for new disk creation data InitializeParams = InitializeParams { diskSizeGb :: String- -- ^ Size of the disk in GB (passed as String to match API format)+ -- ^ Size of the disk in GB (passed as String to match API format) , diskType :: String- -- ^ Full URL of disk type resource+ -- ^ Full URL of disk type resource , labels :: Map.Map String String- -- ^ Labels to apply to the disk+ -- ^ Labels to apply to the disk , sourceImage :: String- -- ^ Source image used to create the disk+ -- ^ Source image used to create the disk } deriving (Show, Eq) instance ToJSON Disk where- toJSON Disk{..} = object- [ "autoDelete" .= autoDelete- , "boot" .= boot- , "deviceName" .= deviceName- , "initializeParams" .= initializeParams- , "mode" .= mode- , "type" .= type_ -- Map type_ to "type" in JSON- ]+ toJSON Disk {..} =+ object+ [ "autoDelete" .= autoDelete+ , "boot" .= boot+ , "deviceName" .= deviceName+ , "initializeParams" .= initializeParams+ , "mode" .= mode+ , "type" .= type_ -- Map type_ to "type" in JSON+ ] instance FromJSON Disk where- parseJSON = withObject "Disk" $ \v -> Disk- <$> v .: "autoDelete"- <*> v .: "boot"- <*> v .: "deviceName"- <*> v .:? "initializeParams"- <*> v .: "mode"- <*> v .: "type" -- Parse "type" field into type_+ parseJSON = withObject "Disk" $ \v ->+ Disk+ <$> v .: "autoDelete"+ <*> v .: "boot"+ <*> v .: "deviceName"+ <*> v .:? "initializeParams"+ <*> v .: "mode"+ <*> v .: "type" -- Parse "type" field into type_ instance ToJSON InitializeParams where- toJSON InitializeParams{..} = object- [ "diskSizeGb" .= diskSizeGb- , "diskType" .= diskType- , "labels" .= labels- , "sourceImage" .= sourceImage- ]+ toJSON InitializeParams {..} =+ object+ [ "diskSizeGb" .= diskSizeGb+ , "diskType" .= diskType+ , "labels" .= labels+ , "sourceImage" .= sourceImage+ ] instance FromJSON InitializeParams where- parseJSON = withObject "InitializeParams" $ \v -> InitializeParams- <$> v .: "diskSizeGb"- <*> v .: "diskType"- <*> v .: "labels"- <*> v .: "sourceImage"-+ parseJSON = withObject "InitializeParams" $ \v ->+ InitializeParams+ <$> v .: "diskSizeGb"+ <*> v .: "diskType"+ <*> v .: "labels"+ <*> v .: "sourceImage" -- ** Instance Operation Functions** --- | List instances in a given zone------ @--- listInstances --- :: String -- ^ GCP Project ID--- -> String -- ^ Zone name--- -> Maybe ListInstancesQuery -- ^ Optional query parameters--- -> IO (Either String InstanceList)--- @------ Returns either an error message or an 'InstanceList' containing--- the collection of instances+{- | List instances in a given zone++@+listInstances+ :: String -- ^ GCP Project ID+ -> String -- ^ Zone name+ -> Maybe ListInstancesQuery -- ^ Optional query parameters+ -> IO (Either String InstanceList)+@++Returns either an error message or an 'InstanceList' containing+the collection of instances+-} listInstances :: String -> String -> Maybe ListInstancesQuery -> IO (Either String InstanceList) listInstances projectId zone_ mbQuery = do@@ -1094,9 +1097,13 @@ -- ** Default Query Parameter Constructors** -- All fields set to 'Nothing', which the API interprets as:+ -- * No filtering+ -- * Default page size+ -- * No sorting+ -- * Return full results defaultListInstancesQuery :: ListInstancesQuery defaultListInstancesQuery =@@ -1111,12 +1118,13 @@ defaultRequestIdQuery :: String -> RequestIdQuery defaultRequestIdQuery rid = RequestIdQuery {requestId = Just rid} --- | Create a default instance configuration------ Creates a basic instance configuration with:--- * 10GB persistent boot disk--- * Default Debian image--- * Network interface on default VPC+{- | Create a default instance configuration++Creates a basic instance configuration with:+* 10GB persistent boot disk+* Default Debian image+* Network interface on default VPC+-} defaultInsertInstanceOps :: String -> String -> String -> String -> InsertInstanceOps defaultInsertInstanceOps projectId zone instanceName machineType = InsertInstanceOps@@ -1124,22 +1132,25 @@ , machineType = "zones/" ++ zone ++ "/machineTypes/" ++ machineType , disks = Just [defaultDisk] , networkInterfaces = Just [defaultNetworkInterface]- }+ } where- defaultDisk = Disk- { autoDelete = True- , boot = True- , deviceName = instanceName ++ "-boot" -- Dynamic, based on instanceName- , initializeParams = Just defaultInitializeParams- , mode = "READ_WRITE"- , type_ = "PERSISTENT"- }- defaultInitializeParams = InitializeParams- { diskSizeGb = "10"- , diskType = "projects/" ++ projectId ++ "/zones/" ++ zone ++ "/diskTypes/pd-standard"- , labels = Map.empty- , sourceImage = "projects/debian-cloud/global/images/debian-12-bookworm-v20250311"- }- defaultNetworkInterface = NetworkInterface- { network = "projects/" ++ projectId ++ "/global/networks/default"- }+ defaultDisk =+ Disk+ { autoDelete = True+ , boot = True+ , deviceName = instanceName ++ "-boot" -- Dynamic, based on instanceName+ , initializeParams = Just defaultInitializeParams+ , mode = "READ_WRITE"+ , type_ = "PERSISTENT"+ }+ defaultInitializeParams =+ InitializeParams+ { diskSizeGb = "10"+ , diskType = "projects/" ++ projectId ++ "/zones/" ++ zone ++ "/diskTypes/pd-standard"+ , labels = Map.empty+ , sourceImage = "projects/debian-cloud/global/images/debian-12-bookworm-v20250311"+ }+ defaultNetworkInterface =+ NetworkInterface+ { network = "projects/" ++ projectId ++ "/global/networks/default"+ }
src/Google/Cloud/Compute/Network.hs view
@@ -1,8 +1,13 @@-{-|+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE TupleSections #-}++{- | Module : Google.Cloud.Compute.Network Copyright : (c) 2025 Tushar License : MIT-Maintainer : +Maintainer : Stability : experimental This module provides types and functions for interacting with Google Cloud Platform (GCP)@@ -15,204 +20,216 @@ For more information on the underlying API, see: <https://cloud.google.com/compute/docs/reference/rest/v1/networks GCP Compute Network Documentation> -}-{-# LANGUAGE DuplicateRecordFields #-}-{-# LANGUAGE OverloadedStrings #-}-{-# LANGUAGE RecordWildCards #-}-{-# LANGUAGE TupleSections #-}--module Google.Cloud.Compute.Network +module Google.Cloud.Compute.Network ( -- * Network Operations listNetworks+ -- * Data Types- , NetworkList(..)- , NetworkMeta(..)- , NetworkPeering(..)- , ListNetworksQuery(..)+ , NetworkList (..)+ , NetworkMeta (..)+ , NetworkPeering (..)+ , ListNetworksQuery (..)+ -- * Defaults , defaultListNetworksQuery ) where import Data.Aeson+import qualified Data.ByteString.Char8 as BS8+import Data.Maybe (catMaybes) import Data.Text (Text) import Google.Cloud.Common.Core import Google.Cloud.Compute.Common-import Data.Maybe (catMaybes)-import qualified Data.ByteString.Char8 as BS8 -- | Response structure for listNetworks operation data NetworkList = NetworkList { kind :: Text- -- ^ Type of resource (always "compute#networkList")+ -- ^ Type of resource (always "compute#networkList") , id_ :: Text- -- ^ Unique identifier for the resource- , items :: [NetworkMeta]- -- ^ List of network resources+ -- ^ Unique identifier for the resource+ , items :: Maybe [NetworkMeta]+ -- ^ List of network resources , nextPageToken :: Maybe Text- -- ^ Pagination token for next page+ -- ^ Pagination token for next page , selfLink :: Text- -- ^ Server-defined URL for the resource- } deriving (Eq, Show)+ -- ^ Server-defined URL for the resource+ }+ deriving (Eq, Show) instance FromJSON NetworkList where- parseJSON = withObject "NetworkList" $ \v -> NetworkList- <$> v .: "kind"- <*> v .: "id"- <*> v .: "items"- <*> v .:? "nextPageToken"- <*> v .: "selfLink"+ parseJSON = withObject "NetworkList" $ \v ->+ NetworkList+ <$> v .: "kind"+ <*> v .: "id"+ <*> v .: "items"+ <*> v .:? "nextPageToken"+ <*> v .: "selfLink" instance ToJSON NetworkList where- toJSON NetworkList{..} = object- [ "kind" .= kind- , "id" .= id_- , "items" .= items - , "nextPageToken" .= nextPageToken - , "selfLink" .= selfLink - ]+ toJSON NetworkList {..} =+ object+ [ "kind" .= kind+ , "id" .= id_+ , "items" .= items+ , "nextPageToken" .= nextPageToken+ , "selfLink" .= selfLink+ ] -- | Detailed network resource metadata data NetworkMeta = NetworkMeta { kind :: Text- -- ^ Type of resource (always "compute#network")+ -- ^ Type of resource (always "compute#network") , id_ :: Text- -- ^ Unique identifier for the network+ -- ^ Unique identifier for the network , creationTimestamp :: Text- -- ^ Creation timestamp in RFC3339 format+ -- ^ Creation timestamp in RFC3339 format , name :: Text- -- ^ Name of the network+ -- ^ Name of the network , description :: Maybe Text- -- ^ User-provided description+ -- ^ User-provided description , autoCreateSubnetworks :: Maybe Bool- -- ^ Whether to auto-create subnetworks+ -- ^ Whether to auto-create subnetworks , subnetworks :: [Text]- -- ^ List of subnetworks URLs in this network+ -- ^ List of subnetworks URLs in this network , iPv4Range :: Maybe Text- -- ^ IPv4 range for legacy networks+ -- ^ IPv4 range for legacy networks , iPv6Range :: Maybe Text- -- ^ IPv6 range for legacy networks+ -- ^ IPv6 range for legacy networks , gatewayIPv4 :: Maybe Text- -- ^ Gateway IPv4 address+ -- ^ Gateway IPv4 address , mtu :: Maybe Int- -- ^ Maximum transmission unit+ -- ^ Maximum transmission unit , peerings :: Maybe [NetworkPeering]- -- ^ List of network peerings+ -- ^ List of network peerings , selfLink :: Text- -- ^ Server-defined URL for the resource+ -- ^ Server-defined URL for the resource , enableUlaInternalIpv6 :: Maybe Bool- -- ^ ULA internal IPv6 support+ -- ^ ULA internal IPv6 support , internalIpv6Range :: Maybe Text- -- ^ Internal IPv6 range+ -- ^ Internal IPv6 range , networkFirewallPolicyEnforcementOrder :: Maybe Text- -- ^ Firewall policy order- } deriving (Eq, Show)+ -- ^ Firewall policy order+ }+ deriving (Eq, Show) instance FromJSON NetworkMeta where- parseJSON = withObject "NetworkMeta" $ \v -> NetworkMeta- <$> v .: "kind"- <*> v .: "id"- <*> v .: "creationTimestamp"- <*> v .: "name"- <*> v .:? "description"- <*> v .:? "autoCreateSubnetworks"- <*> v .: "subnetworks"- <*> v .:? "IPv4Range" -- Match API's casing- <*> v .:? "IPv6Range"- <*> v .:? "gatewayIPv4"- <*> v .:? "mtu"- <*> (v .:? "peerings")- <*> v .: "selfLink"- <*> v .:? "enableUlaInternalIpv6"- <*> v .:? "internalIpv6Range"- <*> v .:? "networkFirewallPolicyEnforcementOrder"+ parseJSON = withObject "NetworkMeta" $ \v ->+ NetworkMeta+ <$> v .: "kind"+ <*> v .: "id"+ <*> v .: "creationTimestamp"+ <*> v .: "name"+ <*> v .:? "description"+ <*> v .:? "autoCreateSubnetworks"+ <*> v .: "subnetworks"+ <*> v .:? "IPv4Range" -- Match API's casing+ <*> v .:? "IPv6Range"+ <*> v .:? "gatewayIPv4"+ <*> v .:? "mtu"+ <*> (v .:? "peerings")+ <*> v .: "selfLink"+ <*> v .:? "enableUlaInternalIpv6"+ <*> v .:? "internalIpv6Range"+ <*> v .:? "networkFirewallPolicyEnforcementOrder" instance ToJSON NetworkMeta where- toJSON NetworkMeta{..} = object $ catMaybes- [ Just ("kind" .= kind)- , Just ("id" .= id_)- , Just ("creationTimestamp" .= creationTimestamp )- , Just ("name" .= name )- , ("description" .=) <$> description - , ("autoCreateSubnetworks" .=) <$> autoCreateSubnetworks- , Just ("subnetworks" .= subnetworks)- , ("IPv4Range" .=) <$> iPv4Range - , ("IPv6Range" .=) <$> iPv6Range - , ("gatewayIPv4" .=) <$> gatewayIPv4 - , ("mtu" .=) <$> mtu - , Just ("peerings" .= peerings )- , Just ("selfLink" .= selfLink )- , ("enableUlaInternalIpv6" .=) <$> enableUlaInternalIpv6 - , ("internalIpv6Range" .=) <$> internalIpv6Range - , ("networkFirewallPolicyEnforcementOrder" .=) <$> networkFirewallPolicyEnforcementOrder - ]+ toJSON NetworkMeta {..} =+ object $+ catMaybes+ [ Just ("kind" .= kind)+ , Just ("id" .= id_)+ , Just ("creationTimestamp" .= creationTimestamp)+ , Just ("name" .= name)+ , ("description" .=) <$> description+ , ("autoCreateSubnetworks" .=) <$> autoCreateSubnetworks+ , Just ("subnetworks" .= subnetworks)+ , ("IPv4Range" .=) <$> iPv4Range+ , ("IPv6Range" .=) <$> iPv6Range+ , ("gatewayIPv4" .=) <$> gatewayIPv4+ , ("mtu" .=) <$> mtu+ , Just ("peerings" .= peerings)+ , Just ("selfLink" .= selfLink)+ , ("enableUlaInternalIpv6" .=) <$> enableUlaInternalIpv6+ , ("internalIpv6Range" .=) <$> internalIpv6Range+ , ("networkFirewallPolicyEnforcementOrder" .=) <$> networkFirewallPolicyEnforcementOrder+ ] -- | Network peering configuration data NetworkPeering = NetworkPeering { name :: Text- -- ^ Name of the peering+ -- ^ Name of the peering , network :: Text- -- ^ URL of peer network+ -- ^ URL of peer network , state :: Text- -- ^ Peering state (ACTIVE/INACTIVE)+ -- ^ Peering state (ACTIVE/INACTIVE) , stateDetails :: Maybe Text- -- ^ Detailed state information+ -- ^ Detailed state information , exchangeSubnetRoutes :: Maybe Bool- -- ^ Subnet route exchange+ -- ^ Subnet route exchange , exportCustomRoutes :: Maybe Bool- -- ^ Custom route export+ -- ^ Custom route export , importCustomRoutes :: Maybe Bool- -- ^ Custom route import- } deriving (Eq, Show)+ -- ^ Custom route import+ }+ deriving (Eq, Show) instance FromJSON NetworkPeering where- parseJSON = withObject "NetworkPeering" $ \v -> NetworkPeering- <$> v .: "name"- <*> v .: "network"- <*> v .: "state"- <*> v .:? "stateDetails"- <*> v .:? "exchangeSubnetRoutes"- <*> v .:? "exportCustomRoutes"- <*> v .:? "importCustomRoutes"+ parseJSON = withObject "NetworkPeering" $ \v ->+ NetworkPeering+ <$> v .: "name"+ <*> v .: "network"+ <*> v .: "state"+ <*> v .:? "stateDetails"+ <*> v .:? "exchangeSubnetRoutes"+ <*> v .:? "exportCustomRoutes"+ <*> v .:? "importCustomRoutes" instance ToJSON NetworkPeering where- toJSON NetworkPeering{..} = object $ catMaybes- [ Just ("name" .= name)- , Just ("network" .= network)- , Just ("state" .= state)- , ("stateDetails" .=) <$> stateDetails- , ("exchangeSubnetRoutes" .=) <$> exchangeSubnetRoutes- , ("exportCustomRoutes" .=) <$> exportCustomRoutes- , ("importCustomRoutes" .=) <$> importCustomRoutes- ]+ toJSON NetworkPeering {..} =+ object $+ catMaybes+ [ Just ("name" .= name)+ , Just ("network" .= network)+ , Just ("state" .= state)+ , ("stateDetails" .=) <$> stateDetails+ , ("exchangeSubnetRoutes" .=) <$> exchangeSubnetRoutes+ , ("exportCustomRoutes" .=) <$> exportCustomRoutes+ , ("importCustomRoutes" .=) <$> importCustomRoutes+ ] -- | Query parameters for listNetworks operation data ListNetworksQuery = ListNetworksQuery { filter_ :: Maybe String- -- ^ Filter expression+ -- ^ Filter expression , maxResults :: Maybe Int- -- ^ Maximum results per page+ -- ^ Maximum results per page , orderBy :: Maybe String- -- ^ Sort order+ -- ^ Sort order , pageToken :: Maybe String- -- ^ Page token+ -- ^ Page token , returnPartialSuccess :: Maybe Bool- -- ^ Partial success return- } deriving (Show)+ -- ^ Partial success return+ }+ deriving (Show) -- | Default list networks query parameters defaultListNetworksQuery :: ListNetworksQuery-defaultListNetworksQuery = ListNetworksQuery- { filter_ = Nothing- , maxResults = Nothing- , orderBy = Nothing- , pageToken = Nothing- , returnPartialSuccess = Nothing- }+defaultListNetworksQuery =+ ListNetworksQuery+ { filter_ = Nothing+ , maxResults = Nothing+ , orderBy = Nothing+ , pageToken = Nothing+ , returnPartialSuccess = Nothing+ } -- | List networks in a project listNetworks ::- String -- ^ GCP Project ID- -> Maybe ListNetworksQuery -- ^ Query parameters- -> IO (Either String NetworkList)+ -- | GCP Project ID+ String ->+ -- | Query parameters+ Maybe ListNetworksQuery ->+ IO (Either String NetworkList) listNetworks project mbQuery = do let queryParams = maybe [] toQueryList mbQuery doRequestJSON@@ -222,16 +239,18 @@ , mbQueryParams = Just queryParams , mbReqBody = Nothing , mbReqHeaders = Nothing- , mbReqPath = Just $ toPath- [ "projects"- , project- , "global"- , "networks"- ]+ , mbReqPath =+ Just $+ toPath+ [ "projects"+ , project+ , "global"+ , "networks"+ ] } where toQueryList :: ListNetworksQuery -> [(BS8.ByteString, Maybe BS8.ByteString)]- toQueryList ListNetworksQuery{..} =+ toQueryList ListNetworksQuery {..} = catMaybes [ ("filter",) . Just . BS8.pack <$> filter_ , ("maxResults",) . Just . BS8.pack . show <$> maxResults
test/Spec.hs view
@@ -1,19 +1,23 @@ {-# LANGUAGE OverloadedStrings #-} {-# LANGUAGE RecordWildCards #-} -import Test.Hspec-import Google.Cloud.Compute.Disk as Disk-import Google.Cloud.Compute.Instance as Instance-import qualified Google.Cloud.Compute.Firewall as Firewall import Data.Aeson (decode, encode)-import Data.Maybe (isJust) import qualified Data.ByteString.Lazy.Char8 as BSL+import Data.Maybe (isJust)+import Google.Cloud.Compute.Common (googleComputeUrl)+import Google.Cloud.Compute.Disk as Disk+import qualified Google.Cloud.Compute.Firewall as Firewall+import Google.Cloud.Compute.Instance as Instance+import Test.Hspec main :: IO () main = hspec spec spec :: Spec spec = do+ describe "Google.Cloud.Compute.Common" $ do+ it "googleComputeUrl is v1 endpoint" $ do+ googleComputeUrl `shouldBe` "https://compute.googleapis.com/compute/v1" describe "Google.Cloud.Compute.Disk" $ do context "DiskResponse JSON serialization" $ do it "successfully parses valid JSON to DiskResponse" $ do@@ -29,15 +33,15 @@ context "InsertDiskOps default" $ do it "creates a default InsertDiskOps" $ do let diskOps = defaultInsertOps "my-disk" "100"- (\InsertDiskOps{..} -> name) diskOps `shouldBe` "my-disk"- (\InsertDiskOps{..} -> sizeGb) diskOps `shouldBe` "100"- (\InsertDiskOps{..} -> description) diskOps `shouldBe` Nothing+ (\InsertDiskOps {..} -> name) diskOps `shouldBe` "my-disk"+ (\InsertDiskOps {..} -> sizeGb) diskOps `shouldBe` "100"+ (\InsertDiskOps {..} -> description) diskOps `shouldBe` Nothing context "CreateSnapshotOps default" $ do it "creates a default CreateSnapshotOps" $ do let snapshotOps = defaultCreateSnapshotOps "my-snapshot"- (\CreateSnapshotOps{..} -> name) snapshotOps `shouldBe` "my-snapshot"- (\CreateSnapshotOps{..} -> description) snapshotOps `shouldBe` Nothing+ (\CreateSnapshotOps {..} -> name) snapshotOps `shouldBe` "my-snapshot"+ (\CreateSnapshotOps {..} -> description) snapshotOps `shouldBe` Nothing context "Warning JSON serialization" $ do it "serializes and deserializes Warning correctly" $ do@@ -52,7 +56,21 @@ result `shouldSatisfy` isJust it "successfully converts Operation to JSON" $ do- let operation = Operation (Just "123") (Just "operation-1") Nothing Nothing Nothing (Just "DONE") Nothing Nothing Nothing Nothing Nothing Nothing Nothing+ let operation =+ Operation+ (Just "123")+ (Just "operation-1")+ Nothing+ Nothing+ Nothing+ (Just "DONE")+ Nothing+ Nothing+ Nothing+ Nothing+ Nothing+ Nothing+ Nothing let json = encode operation decode json `shouldBe` Just operation @@ -66,17 +84,18 @@ decode (encode action) `shouldBe` Just action it "correctly serializes and deserializes Scheduling" $ do- let scheduling = Scheduling {- onHostMaintenance = "MIGRATE",- automaticRestart = True,- preemptible = False,- nodeAffinities = [],- minNodeCpus = 1,- locationHint = "us-central1",- availabilityDomain = 0,- provisioningModel = "STANDARD",- instanceTerminationAction = RunDurationRunDuration (TerminationTime "2023-10-15T12:00:00Z")- }+ let scheduling =+ Scheduling+ { onHostMaintenance = "MIGRATE"+ , automaticRestart = True+ , preemptible = False+ , nodeAffinities = []+ , minNodeCpus = 1+ , locationHint = "us-central1"+ , availabilityDomain = 0+ , provisioningModel = "STANDARD"+ , instanceTerminationAction = RunDurationRunDuration (TerminationTime "2023-10-15T12:00:00Z")+ } decode (encode scheduling) `shouldBe` Just scheduling describe "Default Query Constructors" $ do@@ -90,7 +109,7 @@ it "creates a default InsertInstanceOps with correct settings" $ do let ops = defaultInsertInstanceOps "my-project" "us-central1-a" "test-instance" "f1-micro"- (\InsertInstanceOps{..} -> name) ops `shouldBe` "test-instance"+ (\InsertInstanceOps {..} -> name) ops `shouldBe` "test-instance" machineType ops `shouldBe` "zones/us-central1-a/machineTypes/f1-micro" isJust (disks ops) `shouldBe` True isJust (networkInterfaces ops) `shouldBe` True@@ -99,73 +118,98 @@ let rid = "request-123" let query = defaultRequestIdQuery rid requestId query `shouldBe` Just rid- - describe "Google.Cloud.Compute.Firewall" $ do - describe "JSON serialization/deserialization" $ do- it "should serialize and deserialize WarningData" $ do- let warningData = Firewall.WarningData "some_key" "some_value"- let json = encode warningData- decode json `shouldBe` Just warningData+ describe "Google.Cloud.Compute.Firewall" $ do+ describe "JSON serialization/deserialization" $ do+ it "should serialize and deserialize WarningData" $ do+ let warningData = Firewall.WarningData "some_key" "some_value"+ let json = encode warningData+ decode json `shouldBe` Just warningData - it "should serialize and deserialize Warning" $ do- let warning = Firewall.Warning "some_code" "some_message" Nothing- let json = encode warning- decode json `shouldBe` Just warning+ it "should serialize and deserialize Warning" $ do+ let warning = Firewall.Warning "some_code" "some_message" Nothing+ let json = encode warning+ decode json `shouldBe` Just warning - it "should serialize and deserialize LogConfig" $ do- let logConfig = Firewall.LogConfig True (Just "INCLUDE_ALL_METADATA")- let json = encode logConfig- decode json `shouldBe` Just logConfig+ it "should serialize and deserialize LogConfig" $ do+ let logConfig = Firewall.LogConfig True (Just "INCLUDE_ALL_METADATA")+ let json = encode logConfig+ decode json `shouldBe` Just logConfig - it "should serialize and deserialize AllowedFirewall" $ do- let allowedFirewall = Firewall.AllowedFirewall "tcp" (Just ["80", "443"])- let json = encode allowedFirewall- decode json `shouldBe` Just allowedFirewall+ it "should serialize and deserialize AllowedFirewall" $ do+ let allowedFirewall = Firewall.AllowedFirewall "tcp" (Just ["80", "443"])+ let json = encode allowedFirewall+ decode json `shouldBe` Just allowedFirewall - it "should serialize and deserialize DeniedFirewall" $ do- let deniedFirewall = Firewall.DeniedFirewall "tcp" (Just ["22"])- let json = encode deniedFirewall- decode json `shouldBe` Just deniedFirewall+ it "should serialize and deserialize DeniedFirewall" $ do+ let deniedFirewall = Firewall.DeniedFirewall "tcp" (Just ["22"])+ let json = encode deniedFirewall+ decode json `shouldBe` Just deniedFirewall - it "should serialize and deserialize FirewallMeta" $ do- let firewallMeta = Firewall.FirewallMeta (Just "compute#firewall") (Just "123456") (Just "2021-01-01T00:00:00Z") - (Just "test-firewall") (Just "A test firewall") - (Just "global/networks/default") (Just 1000) - (Just ["0.0.0.0/0"]) (Just ["tag1"]) (Just ["tag2"]) - (Just [Firewall.AllowedFirewall "tcp" (Just ["80"])]) - (Just [Firewall.DeniedFirewall "tcp" (Just ["22"])]) - (Just "INGRESS") (Just (Firewall.LogConfig True (Just "INCLUDE_ALL_METADATA"))) - (Just False) (Just "selfLink")- let json = encode firewallMeta- decode json `shouldBe` Just firewallMeta+ it "should serialize and deserialize FirewallMeta" $ do+ let firewallMeta =+ Firewall.FirewallMeta+ (Just "compute#firewall")+ (Just "123456")+ (Just "2021-01-01T00:00:00Z")+ (Just "test-firewall")+ (Just "A test firewall")+ (Just "global/networks/default")+ (Just 1000)+ (Just ["0.0.0.0/0"])+ (Just ["tag1"])+ (Just ["tag2"])+ (Just [Firewall.AllowedFirewall "tcp" (Just ["80"])])+ (Just [Firewall.DeniedFirewall "tcp" (Just ["22"])])+ (Just "INGRESS")+ (Just (Firewall.LogConfig True (Just "INCLUDE_ALL_METADATA")))+ (Just False)+ (Just "selfLink")+ let json = encode firewallMeta+ decode json `shouldBe` Just firewallMeta - it "should serialize and deserialize FirewallList" $ do- let firewallList = Firewall.FirewallList (Just "compute#firewallList") (Just "12345") - (Just [Firewall.FirewallMeta (Just "compute#firewall") (Just "123456") - (Just "2021-01-01T00:00:00Z") (Just "test-firewall") - (Just "A test firewall") (Just "global/networks/default") - (Just 1000) (Just ["0.0.0.0/0"]) (Just ["tag1"]) - (Just ["tag2"]) (Just [Firewall.AllowedFirewall "tcp" (Just ["80"])] ) - (Just [Firewall.DeniedFirewall "tcp" (Just ["22"])] ) - (Just "INGRESS") (Just (Firewall.LogConfig True (Just "INCLUDE_ALL_METADATA"))) - (Just False) (Just "selfLink")]) - (Just "nextPageToken") (Just "selfLink") - (Just (Firewall.Warning "some_code" "some_message" Nothing))- let json = encode firewallList- decode json `shouldBe` Just firewallList+ it "should serialize and deserialize FirewallList" $ do+ let firewallList =+ Firewall.FirewallList+ (Just "compute#firewallList")+ (Just "12345")+ ( Just+ [ Firewall.FirewallMeta+ (Just "compute#firewall")+ (Just "123456")+ (Just "2021-01-01T00:00:00Z")+ (Just "test-firewall")+ (Just "A test firewall")+ (Just "global/networks/default")+ (Just 1000)+ (Just ["0.0.0.0/0"])+ (Just ["tag1"])+ (Just ["tag2"])+ (Just [Firewall.AllowedFirewall "tcp" (Just ["80"])])+ (Just [Firewall.DeniedFirewall "tcp" (Just ["22"])])+ (Just "INGRESS")+ (Just (Firewall.LogConfig True (Just "INCLUDE_ALL_METADATA")))+ (Just False)+ (Just "selfLink")+ ]+ )+ (Just "nextPageToken")+ (Just "selfLink")+ (Just (Firewall.Warning "some_code" "some_message" Nothing))+ let json = encode firewallList+ decode json `shouldBe` Just firewallList - it "should create default CreateFirewallOps" $ do- let defaultOps = Firewall.defaultCreateFirewallOps "test-firewall"- (\Firewall.CreateFirewallOps{..} -> name) defaultOps `shouldBe` "test-firewall"- (\Firewall.CreateFirewallOps{..} -> description) defaultOps `shouldBe` Nothing- (\Firewall.CreateFirewallOps{..} -> network) defaultOps `shouldBe` Nothing- (\Firewall.CreateFirewallOps{..} -> priority) defaultOps `shouldBe` Nothing- (\Firewall.CreateFirewallOps{..} -> sourceRanges) defaultOps `shouldBe` Nothing- (\Firewall.CreateFirewallOps{..} -> sourceTags) defaultOps `shouldBe` Nothing- (\Firewall.CreateFirewallOps{..} -> targetTags) defaultOps `shouldBe` Nothing- (\Firewall.CreateFirewallOps{..} -> allowed) defaultOps `shouldBe` Nothing- (\Firewall.CreateFirewallOps{..} -> denied) defaultOps `shouldBe` Nothing- (\Firewall.CreateFirewallOps{..} -> direction) defaultOps `shouldBe` Nothing- (\Firewall.CreateFirewallOps{..} -> logConfig) defaultOps `shouldBe` Nothing- (\Firewall.CreateFirewallOps{..} -> disabled) defaultOps `shouldBe` Nothing+ it "should create default CreateFirewallOps" $ do+ let defaultOps = Firewall.defaultCreateFirewallOps "test-firewall"+ (\Firewall.CreateFirewallOps {..} -> name) defaultOps `shouldBe` "test-firewall"+ (\Firewall.CreateFirewallOps {..} -> description) defaultOps `shouldBe` Nothing+ (\Firewall.CreateFirewallOps {..} -> network) defaultOps `shouldBe` Nothing+ (\Firewall.CreateFirewallOps {..} -> priority) defaultOps `shouldBe` Nothing+ (\Firewall.CreateFirewallOps {..} -> sourceRanges) defaultOps `shouldBe` Nothing+ (\Firewall.CreateFirewallOps {..} -> sourceTags) defaultOps `shouldBe` Nothing+ (\Firewall.CreateFirewallOps {..} -> targetTags) defaultOps `shouldBe` Nothing+ (\Firewall.CreateFirewallOps {..} -> allowed) defaultOps `shouldBe` Nothing+ (\Firewall.CreateFirewallOps {..} -> denied) defaultOps `shouldBe` Nothing+ (\Firewall.CreateFirewallOps {..} -> direction) defaultOps `shouldBe` Nothing+ (\Firewall.CreateFirewallOps {..} -> logConfig) defaultOps `shouldBe` Nothing+ (\Firewall.CreateFirewallOps {..} -> disabled) defaultOps `shouldBe` Nothing