Skip to content

instance_switcher

instance_switcher

InstanceSwitcher dataclass

InstanceSwitcher(
    auth: DomoAuth,
    domo_instance_switcher_mapping: list[
        InstanceSwitcher_Mapping
    ] = list(),
)

Manages instance switcher configuration for a Domo instance.

This class handles the configuration of instance switching mappings, which allow users with specific attributes to switch between different Domo instances.

Attributes:

Name Type Description
auth DomoAuth

Authentication object for API requests

domo_instance_switcher_mapping list[InstanceSwitcher_Mapping]

list of instance switcher mappings

add_mapping async

add_mapping(
    mapping_to_add_ls: list[InstanceSwitcher_Mapping],
    session: AsyncClient | None = None,
    debug_api: bool = False,
    debug_num_stacks_to_drop: int = 2,
    timeout: int = 20,
    wait: int = 5,
    *,
    context: RouteContext | None = None,
    **context_kwargs
) -> list[InstanceSwitcher_Mapping]

Add new mappings to existing configuration.

Parameters:

Name Type Description Default
mapping_to_add_ls list[InstanceSwitcher_Mapping]

list of mappings to add

required
session AsyncClient | None

HTTP client session

None
debug_api bool

Enable API debugging

False
debug_num_stacks_to_drop int

Stack frames to drop for debugging

2
timeout int

Request timeout in seconds

20
wait int

Seconds to wait before retrieving updated mappings

5
context RouteContext | None

Optional RouteContext for API call configuration

None

Returns:

Type Description
list[InstanceSwitcher_Mapping]

Updated list of instance switcher mappings

Source code in src/crew_dcs/classes/DomoInstanceConfig/instance_switcher.py
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
async def add_mapping(
    self,
    mapping_to_add_ls: list[InstanceSwitcher_Mapping],
    session: httpx.AsyncClient | None = None,
    debug_api: bool = False,
    debug_num_stacks_to_drop: int = 2,
    timeout: int = 20,
    wait: int = 5,
    *,
    context: RouteContext | None = None,
    **context_kwargs,
) -> list[InstanceSwitcher_Mapping]:
    """Add new mappings to existing configuration.

    Args:
        mapping_to_add_ls: list of mappings to add
        session: HTTP client session
        debug_api: Enable API debugging
        debug_num_stacks_to_drop: Stack frames to drop for debugging
        timeout: Request timeout in seconds
        wait: Seconds to wait before retrieving updated mappings
        context: Optional RouteContext for API call configuration

    Returns:
        Updated list of instance switcher mappings
    """
    base_context = RouteContext.build_context(
        session=session,
        debug_api=debug_api,
        debug_num_stacks_to_drop=debug_num_stacks_to_drop,
        parent_class=self.__class__.__name__,
        **context_kwargs,
    )
    context = RouteContext.build_context(context=context or base_context)

    # get existing mapping
    await self.get_mapping(
        timeout=timeout,
        context=context,
    )

    for domo_mapping in mapping_to_add_ls:
        self._add_mapping_to_ls(domo_mapping)

    # update routing mappings
    return await self.set_mapping(
        timeout=timeout,
        wait=wait,
        context=context,
    )

get_mapping async

get_mapping(
    debug_api: bool = False,
    return_raw: bool = False,
    session: AsyncClient | None = None,
    debug_num_stacks_to_drop: int = 2,
    timeout: int = 20,
    *,
    context: RouteContext | None = None,
    **context_kwargs
) -> list[InstanceSwitcher_Mapping]

Retrieve current instance switcher mappings.

Parameters:

Name Type Description Default
debug_api bool

Enable API debugging

False
return_raw bool

Return raw response without processing

False
session AsyncClient | None

HTTP client session

None
debug_num_stacks_to_drop int

Stack frames to drop for debugging

2
timeout int

Request timeout in seconds

20
context RouteContext | None

Optional RouteContext for API call configuration

None

Returns:

Type Description
list[InstanceSwitcher_Mapping]

list of instance switcher mappings or raw response if return_raw=True

Source code in src/crew_dcs/classes/DomoInstanceConfig/instance_switcher.py
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
async def get_mapping(
    self,
    debug_api: bool = False,
    return_raw: bool = False,
    session: httpx.AsyncClient | None = None,
    debug_num_stacks_to_drop: int = 2,
    timeout: int = 20,
    *,
    context: RouteContext | None = None,
    **context_kwargs,
) -> list[InstanceSwitcher_Mapping]:
    """Retrieve current instance switcher mappings.

    Args:
        debug_api: Enable API debugging
        return_raw: Return raw response without processing
        session: HTTP client session
        debug_num_stacks_to_drop: Stack frames to drop for debugging
        timeout: Request timeout in seconds
        context: Optional RouteContext for API call configuration

    Returns:
        list of instance switcher mappings or raw response if return_raw=True
    """
    base_context = RouteContext.build_context(
        session=session,
        debug_api=debug_api,
        debug_num_stacks_to_drop=debug_num_stacks_to_drop,
        parent_class=self.__class__.__name__,
        **context_kwargs,
    )
    context = RouteContext.build_context(context=context or base_context)

    res = await instance_switcher_routes.get_instance_switcher_mapping(
        auth=self.auth,
        timeout=timeout,
        context=context,
    )

    if return_raw:
        return res

    for obj in res.response:
        self._add_mapping_to_ls(InstanceSwitcher_Mapping.from_obj(obj=obj))

    return self.domo_instance_switcher_mapping

set_mapping async

set_mapping(
    mapping_ls: (
        list[InstanceSwitcher_Mapping] | None
    ) = None,
    session: AsyncClient | None = None,
    debug_api: bool = False,
    return_raw: bool = False,
    debug_num_stacks_to_drop: int = 2,
    timeout: int = 60,
    wait: int = 5,
    *,
    context: RouteContext | None = None,
    **context_kwargs
) -> list[InstanceSwitcher_Mapping]

Overwrite existing mappings with new mapping list.

Parameters:

Name Type Description Default
mapping_ls list[InstanceSwitcher_Mapping] | None

list of mappings to set (defaults to self.domo_instance_switcher_mapping)

None
session AsyncClient | None

HTTP client session

None
debug_api bool

Enable API debugging

False
return_raw bool

Return raw response without processing

False
debug_num_stacks_to_drop int

Stack frames to drop for debugging

2
timeout int

Request timeout in seconds

60
wait int

Seconds to wait before retrieving updated mappings

5
context RouteContext | None

Optional RouteContext for API call configuration

None

Returns:

Type Description
list[InstanceSwitcher_Mapping]

Updated list of instance switcher mappings or raw response if return_raw=True

Source code in src/crew_dcs/classes/DomoInstanceConfig/instance_switcher.py
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
async def set_mapping(
    self,
    mapping_ls: (
        list[InstanceSwitcher_Mapping] | None
    ) = None,  # will default to self.domo_instance_switcher_mapping
    session: httpx.AsyncClient | None = None,
    debug_api: bool = False,
    return_raw: bool = False,
    debug_num_stacks_to_drop: int = 2,
    timeout: int = 60,
    wait: int = 5,
    *,
    context: RouteContext | None = None,
    **context_kwargs,
) -> list[InstanceSwitcher_Mapping]:
    """Overwrite existing mappings with new mapping list.

    Args:
        mapping_ls: list of mappings to set (defaults to self.domo_instance_switcher_mapping)
        session: HTTP client session
        debug_api: Enable API debugging
        return_raw: Return raw response without processing
        debug_num_stacks_to_drop: Stack frames to drop for debugging
        timeout: Request timeout in seconds
        wait: Seconds to wait before retrieving updated mappings
        context: Optional RouteContext for API call configuration

    Returns:
        Updated list of instance switcher mappings or raw response if return_raw=True
    """
    base_context = RouteContext.build_context(
        session=session,
        debug_api=debug_api,
        debug_num_stacks_to_drop=debug_num_stacks_to_drop,
        parent_class=self.__class__.__name__,
        **context_kwargs,
    )
    context = RouteContext.build_context(context=context or base_context)

    # structure payload appropriately
    mapping_ls = mapping_ls or self.domo_instance_switcher_mapping

    mapping_payloads = [domo_mapping.to_dict() for domo_mapping in mapping_ls]

    # update routing mappings
    res = await instance_switcher_routes.set_instance_switcher_mapping(
        auth=self.auth,
        mapping_payloads=mapping_payloads,
        timeout=timeout,
        context=context,
    )

    if return_raw:  # returns api response
        return res

    await asyncio.sleep(wait)

    return await self.get_mapping(
        context=context,
    )  # returns updated list of classes

InstanceSwitcher_CRUD_Error

InstanceSwitcher_CRUD_Error(
    operation: str,
    entity_id: str | None = None,
    res=None,
    message: str | None = None,
    **kwargs
)

Bases: RouteError

Raised when instance switcher mapping create, update, or delete operations fail.

Source code in src/crew_dcs/routes/instance_config/instance_switcher.py
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
def __init__(
    self,
    operation: str,
    entity_id: str | None = None,
    res=None,
    message: str | None = None,
    **kwargs,
):
    super().__init__(
        message=message
        or f"Instance switcher mapping {operation} operation failed",
        entity_id=entity_id,
        res=res,
        additional_context={"operation": operation},
        **kwargs,
    )

InstanceSwitcher_GET_Error

InstanceSwitcher_GET_Error(
    entity_id: str | None = None,
    res=None,
    message: str | None = None,
    **kwargs
)

Bases: RouteError

Raised when instance switcher mapping retrieval operations fail.

Source code in src/crew_dcs/routes/instance_config/instance_switcher.py
29
30
31
32
33
34
35
36
37
38
39
40
41
def __init__(
    self,
    entity_id: str | None = None,
    res=None,
    message: str | None = None,
    **kwargs,
):
    super().__init__(
        message=message or "Instance switcher mapping retrieval failed",
        entity_id=entity_id,
        res=res,
        **kwargs,
    )

InstanceSwitcher_Mapping dataclass

InstanceSwitcher_Mapping(
    user_attribute: str, target_instance: str
)

Represents a single instance switcher mapping configuration.

Maps a user attribute to a target Domo instance that users can switch to.

Attributes:

Name Type Description
user_attribute str

The user attribute key used for mapping

target_instance str

The Domo instance domain (without .domo.com)

from_dict classmethod

from_dict(obj: dict[str, Any]) -> InstanceSwitcher_Mapping

Create a mapping from API response dictionary.

Parameters:

Name Type Description Default
obj dict[str, Any]

Dictionary with userAttribute and instance keys

required

Returns:

Name Type Description
DomoInstanceConfig_InstanceSwitcher_Mapping InstanceSwitcher_Mapping

New mapping instance

Source code in src/crew_dcs/classes/DomoInstanceConfig/instance_switcher.py
73
74
75
76
77
78
79
80
81
82
83
84
85
86
@classmethod
def from_dict(cls, obj: dict[str, Any]) -> "InstanceSwitcher_Mapping":
    """Create a mapping from API response dictionary.

    Args:
        obj: Dictionary with userAttribute and instance keys

    Returns:
        DomoInstanceConfig_InstanceSwitcher_Mapping: New mapping instance
    """
    return cls(
        user_attribute=obj["userAttribute"],
        target_instance=obj["instance"],
    )

from_obj classmethod

from_obj(obj: dict[str, Any]) -> InstanceSwitcher_Mapping

Legacy method - calls from_dict for compatibility.

Parameters:

Name Type Description Default
obj dict[str, Any]

Dictionary with userAttribute and instance keys

required

Returns:

Name Type Description
DomoInstanceConfig_InstanceSwitcher_Mapping InstanceSwitcher_Mapping

New mapping instance

Source code in src/crew_dcs/classes/DomoInstanceConfig/instance_switcher.py
88
89
90
91
92
93
94
95
96
97
98
@classmethod
def from_obj(cls, obj: dict[str, Any]) -> "InstanceSwitcher_Mapping":
    """Legacy method - calls from_dict for compatibility.

    Args:
        obj: Dictionary with userAttribute and instance keys

    Returns:
        DomoInstanceConfig_InstanceSwitcher_Mapping: New mapping instance
    """
    return cls.from_dict(obj)

to_dict

to_dict() -> dict

Convert mapping to API request format.

Returns:

Name Type Description
dict dict

Dictionary with userAttribute and instance (including .domo.com)

Source code in src/crew_dcs/classes/DomoInstanceConfig/instance_switcher.py
100
101
102
103
104
105
106
107
108
109
def to_dict(self) -> dict:
    """Convert mapping to API request format.

    Returns:
        dict: Dictionary with userAttribute and instance (including .domo.com)
    """
    return {
        "userAttribute": self.user_attribute,
        "instance": self.target_instance + ".domo.com",
    }