or run

npx @tessl/cli init
Log in

Version

Tile

Overview

Evals

Files

Files

docs

async-operations.mdindex.mdorganization-events.mdorganization-impacts.mdservice-health-events.md

organization-impacts.mddocs/

0

# Organization Impacts

1

2

Track specific impacts of service health events on organization assets. Organization impacts provide detailed information about which resources and projects are affected by service health incidents, enabling precise assessment of business impact.

3

4

## Capabilities

5

6

### List Organization Impacts

7

8

Retrieve a list of organization impacts showing how service health events affect specific assets within your organization.

9

10

```python { .api }

11

def list_organization_impacts(

12

request: ListOrganizationImpactsRequest = None,

13

*,

14

parent: str = None,

15

retry: Retry = None,

16

timeout: float = None,

17

metadata: Sequence[Tuple[str, str]] = ()

18

) -> ListOrganizationImpactsPager:

19

"""

20

Lists organization impacts for service health events.

21

22

Parameters:

23

- request: The request object containing all parameters

24

- parent: Required. Format: organizations/{org_id}/locations/{location}/organizationImpacts

25

- retry: Retry policy for the request

26

- timeout: Request timeout in seconds

27

- metadata: Additional metadata for the request

28

29

Returns:

30

ListOrganizationImpactsPager: Iterator over OrganizationImpact objects

31

"""

32

```

33

34

**Usage Example:**

35

36

```python

37

from google.cloud.servicehealth import ServiceHealthClient

38

39

client = ServiceHealthClient()

40

41

# List all organization impacts

42

parent = "organizations/123456789/locations/global/organizationImpacts"

43

impacts = client.list_organization_impacts(parent=parent)

44

45

for impact in impacts:

46

print(f"Impact on: {impact.asset.asset_name}")

47

print(f"Asset Type: {impact.asset.asset_type}")

48

print(f"Associated Events: {len(impact.events)}")

49

print("---")

50

51

# List impacts with filtering

52

recent_impacts = client.list_organization_impacts(

53

parent=parent,

54

filter='update_time>="2023-01-01T00:00:00Z"'

55

)

56

57

for impact in recent_impacts:

58

print(f"Recently Updated Impact: {impact.asset.asset_name}")

59

print(f"Last Updated: {impact.update_time}")

60

for event_name in impact.events:

61

print(f" Related Event: {event_name}")

62

```

63

64

### Get Organization Impact

65

66

Retrieve detailed information about a specific organization impact.

67

68

```python { .api }

69

def get_organization_impact(

70

request: GetOrganizationImpactRequest = None,

71

*,

72

name: str = None,

73

retry: Retry = None,

74

timeout: float = None,

75

metadata: Sequence[Tuple[str, str]] = ()

76

) -> OrganizationImpact:

77

"""

78

Gets details of a specific organization impact.

79

80

Parameters:

81

- request: The request object containing all parameters

82

- name: Required. Format: organizations/{org_id}/locations/global/organizationImpacts/{impact_id}

83

- retry: Retry policy for the request

84

- timeout: Request timeout in seconds

85

- metadata: Additional metadata for the request

86

87

Returns:

88

OrganizationImpact: The organization impact details

89

"""

90

```

91

92

**Usage Example:**

93

94

```python

95

# Get a specific organization impact

96

impact_name = "organizations/123456789/locations/global/organizationImpacts/impact-789"

97

impact = client.get_organization_impact(name=impact_name)

98

99

print(f"Impacted Asset: {impact.asset.asset_name}")

100

print(f"Asset Type: {impact.asset.asset_type}")

101

print(f"Last Update: {impact.update_time}")

102

103

# Get details about associated events

104

for event_name in impact.events:

105

# Extract event ID from full resource name

106

event_id = event_name.split('/')[-1]

107

print(f"Associated Event ID: {event_id}")

108

109

# Optionally fetch full event details

110

try:

111

event = client.get_organization_event(name=event_name)

112

print(f" Event Title: {event.title}")

113

print(f" Event State: {event.state}")

114

except Exception as e:

115

print(f" Could not fetch event details: {e}")

116

```

117

118

## Request Types

119

120

```python { .api }

121

class ListOrganizationImpactsRequest:

122

"""Request message for listing organization impacts."""

123

parent: str # Required: organizations/{org_id}/locations/{location}/organizationImpacts

124

page_size: int # Optional: 1-100, defaults to reasonable size

125

page_token: str # Optional: pagination token from previous response

126

filter: str # Optional: filter expression

127

128

class GetOrganizationImpactRequest:

129

"""Request message for getting a specific organization impact."""

130

name: str # Required: organizations/{org_id}/locations/global/organizationImpacts/{impact_id}

131

```

132

133

## Response Types

134

135

```python { .api }

136

class ListOrganizationImpactsResponse:

137

"""Response message for listing organization impacts."""

138

organization_impacts: List[OrganizationImpact] # List of impacts

139

next_page_token: str # Token for retrieving next page

140

unreachable: List[str] # Locations that could not be reached

141

142

class OrganizationImpact:

143

"""Represents impact of an event on organization assets."""

144

name: str # Output only: Resource name

145

events: List[str] # Output only: Associated event resource names

146

asset: Asset # Output only: Impacted asset information

147

update_time: datetime # Output only: Last update time

148

149

class Asset:

150

"""Represents a Google Cloud asset affected by a service health event."""

151

asset_name: str # Output only: Full resource name of the asset

152

asset_type: str # Output only: Asset type (e.g., "cloudresourcemanager.googleapis.com/Project")

153

```

154

155

## Impact Analysis

156

157

Organization impacts help answer critical questions about service health events:

158

159

**Asset Impact Assessment:**

160

```python

161

def assess_asset_impacts(organization_id: str):

162

"""Assess which assets are currently impacted by service health events."""

163

client = ServiceHealthClient()

164

parent = f"organizations/{organization_id}/locations/global/organizationImpacts"

165

166

# Group impacts by asset type

167

impact_summary = {}

168

169

for impact in client.list_organization_impacts(parent=parent):

170

asset_type = impact.asset.asset_type

171

if asset_type not in impact_summary:

172

impact_summary[asset_type] = []

173

174

impact_summary[asset_type].append({

175

'asset_name': impact.asset.asset_name,

176

'event_count': len(impact.events),

177

'last_update': impact.update_time

178

})

179

180

# Print summary

181

for asset_type, impacts in impact_summary.items():

182

print(f"\n{asset_type}: {len(impacts)} impacted assets")

183

for impact in impacts[:5]: # Show first 5

184

print(f" - {impact['asset_name']} ({impact['event_count']} events)")

185

```

186

187

**Event to Asset Mapping:**

188

```python

189

def map_events_to_assets(organization_id: str, event_name: str):

190

"""Find all assets impacted by a specific event."""

191

client = ServiceHealthClient()

192

parent = f"organizations/{organization_id}/locations/global/organizationImpacts"

193

194

# Filter impacts for specific event

195

filter_expr = f'events:"{event_name}"'

196

197

impacted_assets = []

198

for impact in client.list_organization_impacts(parent=parent, filter=filter_expr):

199

impacted_assets.append({

200

'asset_name': impact.asset.asset_name,

201

'asset_type': impact.asset.asset_type,

202

'update_time': impact.update_time

203

})

204

205

return impacted_assets

206

```

207

208

## Filtering Organization Impacts

209

210

The `filter` parameter supports various filtering expressions:

211

212

**Time-based filtering:**

213

```python

214

filter='update_time>="2023-01-01T00:00:00Z"' # Impacts updated after date

215

filter='update_time<="2023-12-31T23:59:59Z"' # Impacts updated before date

216

```

217

218

**Event-based filtering:**

219

```python

220

filter='events:"organizations/123/locations/global/organizationEvents/event-456"' # Impacts from specific event

221

```

222

223

**Asset type filtering:**

224

```python

225

filter='asset.asset_type="cloudresourcemanager.googleapis.com/Project"' # Only project impacts

226

filter='asset.asset_type="compute.googleapis.com/Instance"' # Only instance impacts

227

```

228

229

**Asset name filtering:**

230

```python

231

filter='asset.asset_name:"projects/my-project"' # Impacts on specific project

232

```

233

234

## Impact Monitoring and Alerting

235

236

```python

237

import time

238

from datetime import datetime, timedelta

239

240

def monitor_new_impacts(organization_id: str, check_interval: int = 300):

241

"""Monitor for new organization impacts and alert on changes."""

242

client = ServiceHealthClient()

243

parent = f"organizations/{organization_id}/locations/global/organizationImpacts"

244

245

# Track last check time

246

last_check = datetime.utcnow()

247

248

while True:

249

current_time = datetime.utcnow()

250

251

# Get impacts updated since last check

252

time_filter = f'update_time>="{last_check.isoformat()}Z"'

253

new_impacts = client.list_organization_impacts(parent=parent, filter=time_filter)

254

255

for impact in new_impacts:

256

print(f"NEW IMPACT DETECTED:")

257

print(f" Asset: {impact.asset.asset_name}")

258

print(f" Type: {impact.asset.asset_type}")

259

print(f" Events: {len(impact.events)}")

260

print(f" Updated: {impact.update_time}")

261

262

# Send alert (integrate with your alerting system)

263

send_impact_alert(impact)

264

265

last_check = current_time

266

time.sleep(check_interval)

267

268

def send_impact_alert(impact: OrganizationImpact):

269

"""Send alert about new organization impact (implement based on your needs)."""

270

# Example: send to monitoring system, email, Slack, etc.

271

print(f"ALERT: Asset {impact.asset.asset_name} impacted by service health event")

272

```

273

274

## Asset Types

275

276

Common asset types you may encounter in organization impacts:

277

278

```python

279

# Common Google Cloud asset types

280

COMMON_ASSET_TYPES = {

281

"cloudresourcemanager.googleapis.com/Project": "Google Cloud Project",

282

"compute.googleapis.com/Instance": "Compute Engine Instance",

283

"compute.googleapis.com/Disk": "Compute Engine Disk",

284

"storage.googleapis.com/Bucket": "Cloud Storage Bucket",

285

"sqladmin.googleapis.com/Instance": "Cloud SQL Instance",

286

"container.googleapis.com/Cluster": "GKE Cluster",

287

"appengine.googleapis.com/Application": "App Engine Application",

288

"cloudfunctions.googleapis.com/Function": "Cloud Function",

289

"pubsub.googleapis.com/Topic": "Pub/Sub Topic",

290

"pubsub.googleapis.com/Subscription": "Pub/Sub Subscription"

291

}

292

293

def categorize_impacts_by_service(impacts: List[OrganizationImpact]):

294

"""Categorize impacts by Google Cloud service."""

295

service_impacts = {}

296

297

for impact in impacts:

298

asset_type = impact.asset.asset_type

299

service = asset_type.split('.')[0] if '.' in asset_type else 'unknown'

300

301

if service not in service_impacts:

302

service_impacts[service] = []

303

304

service_impacts[service].append(impact)

305

306

return service_impacts

307

```

308

309

## Integration with Events

310

311

Organization impacts are closely tied to organization events. Use both APIs together for comprehensive monitoring:

312

313

```python

314

def get_complete_impact_picture(organization_id: str, event_name: str):

315

"""Get complete picture of an event's impact on the organization."""

316

client = ServiceHealthClient()

317

318

# Get the event details

319

event = client.get_organization_event(name=event_name)

320

321

# Get all impacts for this event

322

impacts_parent = f"organizations/{organization_id}/locations/global/organizationImpacts"

323

filter_expr = f'events:"{event_name}"'

324

325

impacts = list(client.list_organization_impacts(

326

parent=impacts_parent,

327

filter=filter_expr

328

))

329

330

return {

331

'event': event,

332

'impact_count': len(impacts),

333

'impacted_assets': [impact.asset for impact in impacts],

334

'affected_services': set(impact.asset.asset_type.split('.')[0]

335

for impact in impacts if '.' in impact.asset.asset_type)

336

}

337

```