1. Packages
  2. SignalFx
  3. API Docs
  4. OrgToken
SignalFx v7.1.1 published on Tuesday, Feb 27, 2024 by Pulumi

signalfx.OrgToken

Explore with Pulumi AI

signalfx logo
SignalFx v7.1.1 published on Tuesday, Feb 27, 2024 by Pulumi

    Manage Splunk Observability Cloud org tokens.

    NOTE When managing Org tokens, use a session token of an administrator to authenticate the Splunk Observability Cloud provider. See Operations that require a session token for an administrator.

    Example

    import * as pulumi from "@pulumi/pulumi";
    import * as signalfx from "@pulumi/signalfx";
    
    const myteamkey0 = new signalfx.OrgToken("myteamkey0", {
        description: "My team's rad key",
        hostOrUsageLimits: {
            containerLimit: 200,
            containerNotificationThreshold: 180,
            customMetricsLimit: 1000,
            customMetricsNotificationThreshold: 900,
            highResMetricsLimit: 1000,
            highResMetricsNotificationThreshold: 900,
            hostLimit: 100,
            hostNotificationThreshold: 90,
        },
        notifications: ["Email,foo-alerts@bar.com"],
    });
    
    import pulumi
    import pulumi_signalfx as signalfx
    
    myteamkey0 = signalfx.OrgToken("myteamkey0",
        description="My team's rad key",
        host_or_usage_limits=signalfx.OrgTokenHostOrUsageLimitsArgs(
            container_limit=200,
            container_notification_threshold=180,
            custom_metrics_limit=1000,
            custom_metrics_notification_threshold=900,
            high_res_metrics_limit=1000,
            high_res_metrics_notification_threshold=900,
            host_limit=100,
            host_notification_threshold=90,
        ),
        notifications=["Email,foo-alerts@bar.com"])
    
    using System.Collections.Generic;
    using System.Linq;
    using Pulumi;
    using SignalFx = Pulumi.SignalFx;
    
    return await Deployment.RunAsync(() => 
    {
        var myteamkey0 = new SignalFx.OrgToken("myteamkey0", new()
        {
            Description = "My team's rad key",
            HostOrUsageLimits = new SignalFx.Inputs.OrgTokenHostOrUsageLimitsArgs
            {
                ContainerLimit = 200,
                ContainerNotificationThreshold = 180,
                CustomMetricsLimit = 1000,
                CustomMetricsNotificationThreshold = 900,
                HighResMetricsLimit = 1000,
                HighResMetricsNotificationThreshold = 900,
                HostLimit = 100,
                HostNotificationThreshold = 90,
            },
            Notifications = new[]
            {
                "Email,foo-alerts@bar.com",
            },
        });
    
    });
    
    package main
    
    import (
    	"github.com/pulumi/pulumi-signalfx/sdk/v7/go/signalfx"
    	"github.com/pulumi/pulumi/sdk/v3/go/pulumi"
    )
    
    func main() {
    	pulumi.Run(func(ctx *pulumi.Context) error {
    		_, err := signalfx.NewOrgToken(ctx, "myteamkey0", &signalfx.OrgTokenArgs{
    			Description: pulumi.String("My team's rad key"),
    			HostOrUsageLimits: &signalfx.OrgTokenHostOrUsageLimitsArgs{
    				ContainerLimit:                      pulumi.Int(200),
    				ContainerNotificationThreshold:      pulumi.Int(180),
    				CustomMetricsLimit:                  pulumi.Int(1000),
    				CustomMetricsNotificationThreshold:  pulumi.Int(900),
    				HighResMetricsLimit:                 pulumi.Int(1000),
    				HighResMetricsNotificationThreshold: pulumi.Int(900),
    				HostLimit:                           pulumi.Int(100),
    				HostNotificationThreshold:           pulumi.Int(90),
    			},
    			Notifications: pulumi.StringArray{
    				pulumi.String("Email,foo-alerts@bar.com"),
    			},
    		})
    		if err != nil {
    			return err
    		}
    		return nil
    	})
    }
    
    package generated_program;
    
    import com.pulumi.Context;
    import com.pulumi.Pulumi;
    import com.pulumi.core.Output;
    import com.pulumi.signalfx.OrgToken;
    import com.pulumi.signalfx.OrgTokenArgs;
    import com.pulumi.signalfx.inputs.OrgTokenHostOrUsageLimitsArgs;
    import java.util.List;
    import java.util.ArrayList;
    import java.util.Map;
    import java.io.File;
    import java.nio.file.Files;
    import java.nio.file.Paths;
    
    public class App {
        public static void main(String[] args) {
            Pulumi.run(App::stack);
        }
    
        public static void stack(Context ctx) {
            var myteamkey0 = new OrgToken("myteamkey0", OrgTokenArgs.builder()        
                .description("My team's rad key")
                .hostOrUsageLimits(OrgTokenHostOrUsageLimitsArgs.builder()
                    .containerLimit(200)
                    .containerNotificationThreshold(180)
                    .customMetricsLimit(1000)
                    .customMetricsNotificationThreshold(900)
                    .highResMetricsLimit(1000)
                    .highResMetricsNotificationThreshold(900)
                    .hostLimit(100)
                    .hostNotificationThreshold(90)
                    .build())
                .notifications("Email,foo-alerts@bar.com")
                .build());
    
        }
    }
    
    resources:
      myteamkey0:
        type: signalfx:OrgToken
        properties:
          description: My team's rad key
          hostOrUsageLimits:
            containerLimit: 200
            containerNotificationThreshold: 180
            customMetricsLimit: 1000
            customMetricsNotificationThreshold: 900
            highResMetricsLimit: 1000
            highResMetricsNotificationThreshold: 900
            hostLimit: 100
            hostNotificationThreshold: 90
          notifications:
            - Email,foo-alerts@bar.com
    

    Arguments

    The following arguments are supported in the resource block:

    • name - (Required) Name of the token.
    • description - (Optional) Description of the token.
    • disabled - (Optional) Flag that controls enabling the token. If set to true, the token is disabled, and you can’t use it for authentication. Defaults to false.
    • secret - The secret token created by the API. You cannot set this value.
    • notifications - (Optional) Where to send notifications about this token’s limits. See the Notification Format laid out in detectors.
    • host_or_usage_limits - (Optional) Specify Usage-based limits for this token.
      • host_limit - (Optional) Max number of hosts that can use this token
      • host_notification_threshold - (Optional) Notification threshold for hosts
      • container_limit - (Optional) Max number of Docker containers that can use this token
      • container_notification_threshold - (Optional) Notification threshold for Docker containers
      • custom_metrics_limit - (Optional) Max number of custom metrics that can be sent with this token
      • custom_metrics_notification_threshold - (Optional) Notification threshold for custom metrics
      • high_res_metrics_limit - (Optional) Max number of hi-res metrics that can be sent with this toke
      • high_res_metrics_notification_threshold - (Optional) Notification threshold for hi-res metrics
    • dpm_limits (Optional) Specify DPM-based limits for this token.
      • dpm_notification_threshold - (Optional) DPM level at which Splunk Observability Cloud sends the notification for this token. If you don’t specify a notification, Splunk Observability Cloud sends the generic notification.
      • dpm_limit - (Required) The datapoints per minute (dpm) limit for this token. If you exceed this limit, Splunk Observability Cloud sends out an alert.

    Attributes

    In a addition to all arguments above, the following attributes are exported:

    • id - The ID of the token.
    • secret - The assigned token.

    Create OrgToken Resource

    new OrgToken(name: string, args?: OrgTokenArgs, opts?: CustomResourceOptions);
    @overload
    def OrgToken(resource_name: str,
                 opts: Optional[ResourceOptions] = None,
                 auth_scopes: Optional[Sequence[str]] = None,
                 description: Optional[str] = None,
                 disabled: Optional[bool] = None,
                 dpm_limits: Optional[OrgTokenDpmLimitsArgs] = None,
                 host_or_usage_limits: Optional[OrgTokenHostOrUsageLimitsArgs] = None,
                 name: Optional[str] = None,
                 notifications: Optional[Sequence[str]] = None)
    @overload
    def OrgToken(resource_name: str,
                 args: Optional[OrgTokenArgs] = None,
                 opts: Optional[ResourceOptions] = None)
    func NewOrgToken(ctx *Context, name string, args *OrgTokenArgs, opts ...ResourceOption) (*OrgToken, error)
    public OrgToken(string name, OrgTokenArgs? args = null, CustomResourceOptions? opts = null)
    public OrgToken(String name, OrgTokenArgs args)
    public OrgToken(String name, OrgTokenArgs args, CustomResourceOptions options)
    
    type: signalfx:OrgToken
    properties: # The arguments to resource properties.
    options: # Bag of options to control resource's behavior.
    
    
    name string
    The unique name of the resource.
    args OrgTokenArgs
    The arguments to resource properties.
    opts CustomResourceOptions
    Bag of options to control resource's behavior.
    resource_name str
    The unique name of the resource.
    args OrgTokenArgs
    The arguments to resource properties.
    opts ResourceOptions
    Bag of options to control resource's behavior.
    ctx Context
    Context object for the current deployment.
    name string
    The unique name of the resource.
    args OrgTokenArgs
    The arguments to resource properties.
    opts ResourceOption
    Bag of options to control resource's behavior.
    name string
    The unique name of the resource.
    args OrgTokenArgs
    The arguments to resource properties.
    opts CustomResourceOptions
    Bag of options to control resource's behavior.
    name String
    The unique name of the resource.
    args OrgTokenArgs
    The arguments to resource properties.
    options CustomResourceOptions
    Bag of options to control resource's behavior.

    OrgToken Resource Properties

    To learn more about resource properties and how to use them, see Inputs and Outputs in the Architecture and Concepts docs.

    Inputs

    The OrgToken resource accepts the following input properties:

    AuthScopes List<string>
    Authentication scope, ex: INGEST, API, RUM ... (Optional)
    Description string
    Description of the token (Optional)
    Disabled bool
    Flag that controls enabling the token. If set to true, the token is disabled, and you can't use it for authentication. Defaults to false
    DpmLimits Pulumi.SignalFx.Inputs.OrgTokenDpmLimits
    HostOrUsageLimits Pulumi.SignalFx.Inputs.OrgTokenHostOrUsageLimits
    Name string
    Name of the token
    Notifications List<string>
    List of strings specifying where notifications will be sent when an incident occurs. See https://developers.signalfx.com/v2/docs/detector-model#notifications-models for more info
    AuthScopes []string
    Authentication scope, ex: INGEST, API, RUM ... (Optional)
    Description string
    Description of the token (Optional)
    Disabled bool
    Flag that controls enabling the token. If set to true, the token is disabled, and you can't use it for authentication. Defaults to false
    DpmLimits OrgTokenDpmLimitsArgs
    HostOrUsageLimits OrgTokenHostOrUsageLimitsArgs
    Name string
    Name of the token
    Notifications []string
    List of strings specifying where notifications will be sent when an incident occurs. See https://developers.signalfx.com/v2/docs/detector-model#notifications-models for more info
    authScopes List<String>
    Authentication scope, ex: INGEST, API, RUM ... (Optional)
    description String
    Description of the token (Optional)
    disabled Boolean
    Flag that controls enabling the token. If set to true, the token is disabled, and you can't use it for authentication. Defaults to false
    dpmLimits OrgTokenDpmLimits
    hostOrUsageLimits OrgTokenHostOrUsageLimits
    name String
    Name of the token
    notifications List<String>
    List of strings specifying where notifications will be sent when an incident occurs. See https://developers.signalfx.com/v2/docs/detector-model#notifications-models for more info
    authScopes string[]
    Authentication scope, ex: INGEST, API, RUM ... (Optional)
    description string
    Description of the token (Optional)
    disabled boolean
    Flag that controls enabling the token. If set to true, the token is disabled, and you can't use it for authentication. Defaults to false
    dpmLimits OrgTokenDpmLimits
    hostOrUsageLimits OrgTokenHostOrUsageLimits
    name string
    Name of the token
    notifications string[]
    List of strings specifying where notifications will be sent when an incident occurs. See https://developers.signalfx.com/v2/docs/detector-model#notifications-models for more info
    auth_scopes Sequence[str]
    Authentication scope, ex: INGEST, API, RUM ... (Optional)
    description str
    Description of the token (Optional)
    disabled bool
    Flag that controls enabling the token. If set to true, the token is disabled, and you can't use it for authentication. Defaults to false
    dpm_limits OrgTokenDpmLimitsArgs
    host_or_usage_limits OrgTokenHostOrUsageLimitsArgs
    name str
    Name of the token
    notifications Sequence[str]
    List of strings specifying where notifications will be sent when an incident occurs. See https://developers.signalfx.com/v2/docs/detector-model#notifications-models for more info
    authScopes List<String>
    Authentication scope, ex: INGEST, API, RUM ... (Optional)
    description String
    Description of the token (Optional)
    disabled Boolean
    Flag that controls enabling the token. If set to true, the token is disabled, and you can't use it for authentication. Defaults to false
    dpmLimits Property Map
    hostOrUsageLimits Property Map
    name String
    Name of the token
    notifications List<String>
    List of strings specifying where notifications will be sent when an incident occurs. See https://developers.signalfx.com/v2/docs/detector-model#notifications-models for more info

    Outputs

    All input properties are implicitly available as output properties. Additionally, the OrgToken resource produces the following output properties:

    Id string
    The provider-assigned unique ID for this managed resource.
    Secret string
    Id string
    The provider-assigned unique ID for this managed resource.
    Secret string
    id String
    The provider-assigned unique ID for this managed resource.
    secret String
    id string
    The provider-assigned unique ID for this managed resource.
    secret string
    id str
    The provider-assigned unique ID for this managed resource.
    secret str
    id String
    The provider-assigned unique ID for this managed resource.
    secret String

    Look up Existing OrgToken Resource

    Get an existing OrgToken resource’s state with the given name, ID, and optional extra properties used to qualify the lookup.

    public static get(name: string, id: Input<ID>, state?: OrgTokenState, opts?: CustomResourceOptions): OrgToken
    @staticmethod
    def get(resource_name: str,
            id: str,
            opts: Optional[ResourceOptions] = None,
            auth_scopes: Optional[Sequence[str]] = None,
            description: Optional[str] = None,
            disabled: Optional[bool] = None,
            dpm_limits: Optional[OrgTokenDpmLimitsArgs] = None,
            host_or_usage_limits: Optional[OrgTokenHostOrUsageLimitsArgs] = None,
            name: Optional[str] = None,
            notifications: Optional[Sequence[str]] = None,
            secret: Optional[str] = None) -> OrgToken
    func GetOrgToken(ctx *Context, name string, id IDInput, state *OrgTokenState, opts ...ResourceOption) (*OrgToken, error)
    public static OrgToken Get(string name, Input<string> id, OrgTokenState? state, CustomResourceOptions? opts = null)
    public static OrgToken get(String name, Output<String> id, OrgTokenState state, CustomResourceOptions options)
    Resource lookup is not supported in YAML
    name
    The unique name of the resulting resource.
    id
    The unique provider ID of the resource to lookup.
    state
    Any extra arguments used during the lookup.
    opts
    A bag of options that control this resource's behavior.
    resource_name
    The unique name of the resulting resource.
    id
    The unique provider ID of the resource to lookup.
    name
    The unique name of the resulting resource.
    id
    The unique provider ID of the resource to lookup.
    state
    Any extra arguments used during the lookup.
    opts
    A bag of options that control this resource's behavior.
    name
    The unique name of the resulting resource.
    id
    The unique provider ID of the resource to lookup.
    state
    Any extra arguments used during the lookup.
    opts
    A bag of options that control this resource's behavior.
    name
    The unique name of the resulting resource.
    id
    The unique provider ID of the resource to lookup.
    state
    Any extra arguments used during the lookup.
    opts
    A bag of options that control this resource's behavior.
    The following state arguments are supported:
    AuthScopes List<string>
    Authentication scope, ex: INGEST, API, RUM ... (Optional)
    Description string
    Description of the token (Optional)
    Disabled bool
    Flag that controls enabling the token. If set to true, the token is disabled, and you can't use it for authentication. Defaults to false
    DpmLimits Pulumi.SignalFx.Inputs.OrgTokenDpmLimits
    HostOrUsageLimits Pulumi.SignalFx.Inputs.OrgTokenHostOrUsageLimits
    Name string
    Name of the token
    Notifications List<string>
    List of strings specifying where notifications will be sent when an incident occurs. See https://developers.signalfx.com/v2/docs/detector-model#notifications-models for more info
    Secret string
    AuthScopes []string
    Authentication scope, ex: INGEST, API, RUM ... (Optional)
    Description string
    Description of the token (Optional)
    Disabled bool
    Flag that controls enabling the token. If set to true, the token is disabled, and you can't use it for authentication. Defaults to false
    DpmLimits OrgTokenDpmLimitsArgs
    HostOrUsageLimits OrgTokenHostOrUsageLimitsArgs
    Name string
    Name of the token
    Notifications []string
    List of strings specifying where notifications will be sent when an incident occurs. See https://developers.signalfx.com/v2/docs/detector-model#notifications-models for more info
    Secret string
    authScopes List<String>
    Authentication scope, ex: INGEST, API, RUM ... (Optional)
    description String
    Description of the token (Optional)
    disabled Boolean
    Flag that controls enabling the token. If set to true, the token is disabled, and you can't use it for authentication. Defaults to false
    dpmLimits OrgTokenDpmLimits
    hostOrUsageLimits OrgTokenHostOrUsageLimits
    name String
    Name of the token
    notifications List<String>
    List of strings specifying where notifications will be sent when an incident occurs. See https://developers.signalfx.com/v2/docs/detector-model#notifications-models for more info
    secret String
    authScopes string[]
    Authentication scope, ex: INGEST, API, RUM ... (Optional)
    description string
    Description of the token (Optional)
    disabled boolean
    Flag that controls enabling the token. If set to true, the token is disabled, and you can't use it for authentication. Defaults to false
    dpmLimits OrgTokenDpmLimits
    hostOrUsageLimits OrgTokenHostOrUsageLimits
    name string
    Name of the token
    notifications string[]
    List of strings specifying where notifications will be sent when an incident occurs. See https://developers.signalfx.com/v2/docs/detector-model#notifications-models for more info
    secret string
    auth_scopes Sequence[str]
    Authentication scope, ex: INGEST, API, RUM ... (Optional)
    description str
    Description of the token (Optional)
    disabled bool
    Flag that controls enabling the token. If set to true, the token is disabled, and you can't use it for authentication. Defaults to false
    dpm_limits OrgTokenDpmLimitsArgs
    host_or_usage_limits OrgTokenHostOrUsageLimitsArgs
    name str
    Name of the token
    notifications Sequence[str]
    List of strings specifying where notifications will be sent when an incident occurs. See https://developers.signalfx.com/v2/docs/detector-model#notifications-models for more info
    secret str
    authScopes List<String>
    Authentication scope, ex: INGEST, API, RUM ... (Optional)
    description String
    Description of the token (Optional)
    disabled Boolean
    Flag that controls enabling the token. If set to true, the token is disabled, and you can't use it for authentication. Defaults to false
    dpmLimits Property Map
    hostOrUsageLimits Property Map
    name String
    Name of the token
    notifications List<String>
    List of strings specifying where notifications will be sent when an incident occurs. See https://developers.signalfx.com/v2/docs/detector-model#notifications-models for more info
    secret String

    Supporting Types

    OrgTokenDpmLimits, OrgTokenDpmLimitsArgs

    DpmLimit int
    The datapoints per minute (dpm) limit for this token. If you exceed this limit, Splunk Observability Cloud sends out an alert.
    DpmNotificationThreshold int
    DPM level at which Splunk Observability Cloud sends the notification for this token. If you don't specify a notification, Splunk Observability Cloud sends the generic notification.
    DpmLimit int
    The datapoints per minute (dpm) limit for this token. If you exceed this limit, Splunk Observability Cloud sends out an alert.
    DpmNotificationThreshold int
    DPM level at which Splunk Observability Cloud sends the notification for this token. If you don't specify a notification, Splunk Observability Cloud sends the generic notification.
    dpmLimit Integer
    The datapoints per minute (dpm) limit for this token. If you exceed this limit, Splunk Observability Cloud sends out an alert.
    dpmNotificationThreshold Integer
    DPM level at which Splunk Observability Cloud sends the notification for this token. If you don't specify a notification, Splunk Observability Cloud sends the generic notification.
    dpmLimit number
    The datapoints per minute (dpm) limit for this token. If you exceed this limit, Splunk Observability Cloud sends out an alert.
    dpmNotificationThreshold number
    DPM level at which Splunk Observability Cloud sends the notification for this token. If you don't specify a notification, Splunk Observability Cloud sends the generic notification.
    dpm_limit int
    The datapoints per minute (dpm) limit for this token. If you exceed this limit, Splunk Observability Cloud sends out an alert.
    dpm_notification_threshold int
    DPM level at which Splunk Observability Cloud sends the notification for this token. If you don't specify a notification, Splunk Observability Cloud sends the generic notification.
    dpmLimit Number
    The datapoints per minute (dpm) limit for this token. If you exceed this limit, Splunk Observability Cloud sends out an alert.
    dpmNotificationThreshold Number
    DPM level at which Splunk Observability Cloud sends the notification for this token. If you don't specify a notification, Splunk Observability Cloud sends the generic notification.

    OrgTokenHostOrUsageLimits, OrgTokenHostOrUsageLimitsArgs

    ContainerLimit int
    Max number of containers that can use this token
    ContainerNotificationThreshold int
    Notification threshold for containers
    CustomMetricsLimit int
    Max number of custom metrics that can be sent with this token
    CustomMetricsNotificationThreshold int
    Notification threshold for custom metrics
    HighResMetricsLimit int
    Max number of high-res metrics that can be sent with this token
    HighResMetricsNotificationThreshold int
    Notification threshold for high-res metrics
    HostLimit int
    Max number of hosts that can use this token
    HostNotificationThreshold int
    Notification threshold for hosts
    ContainerLimit int
    Max number of containers that can use this token
    ContainerNotificationThreshold int
    Notification threshold for containers
    CustomMetricsLimit int
    Max number of custom metrics that can be sent with this token
    CustomMetricsNotificationThreshold int
    Notification threshold for custom metrics
    HighResMetricsLimit int
    Max number of high-res metrics that can be sent with this token
    HighResMetricsNotificationThreshold int
    Notification threshold for high-res metrics
    HostLimit int
    Max number of hosts that can use this token
    HostNotificationThreshold int
    Notification threshold for hosts
    containerLimit Integer
    Max number of containers that can use this token
    containerNotificationThreshold Integer
    Notification threshold for containers
    customMetricsLimit Integer
    Max number of custom metrics that can be sent with this token
    customMetricsNotificationThreshold Integer
    Notification threshold for custom metrics
    highResMetricsLimit Integer
    Max number of high-res metrics that can be sent with this token
    highResMetricsNotificationThreshold Integer
    Notification threshold for high-res metrics
    hostLimit Integer
    Max number of hosts that can use this token
    hostNotificationThreshold Integer
    Notification threshold for hosts
    containerLimit number
    Max number of containers that can use this token
    containerNotificationThreshold number
    Notification threshold for containers
    customMetricsLimit number
    Max number of custom metrics that can be sent with this token
    customMetricsNotificationThreshold number
    Notification threshold for custom metrics
    highResMetricsLimit number
    Max number of high-res metrics that can be sent with this token
    highResMetricsNotificationThreshold number
    Notification threshold for high-res metrics
    hostLimit number
    Max number of hosts that can use this token
    hostNotificationThreshold number
    Notification threshold for hosts
    container_limit int
    Max number of containers that can use this token
    container_notification_threshold int
    Notification threshold for containers
    custom_metrics_limit int
    Max number of custom metrics that can be sent with this token
    custom_metrics_notification_threshold int
    Notification threshold for custom metrics
    high_res_metrics_limit int
    Max number of high-res metrics that can be sent with this token
    high_res_metrics_notification_threshold int
    Notification threshold for high-res metrics
    host_limit int
    Max number of hosts that can use this token
    host_notification_threshold int
    Notification threshold for hosts
    containerLimit Number
    Max number of containers that can use this token
    containerNotificationThreshold Number
    Notification threshold for containers
    customMetricsLimit Number
    Max number of custom metrics that can be sent with this token
    customMetricsNotificationThreshold Number
    Notification threshold for custom metrics
    highResMetricsLimit Number
    Max number of high-res metrics that can be sent with this token
    highResMetricsNotificationThreshold Number
    Notification threshold for high-res metrics
    hostLimit Number
    Max number of hosts that can use this token
    hostNotificationThreshold Number
    Notification threshold for hosts

    Package Details

    Repository
    SignalFx pulumi/pulumi-signalfx
    License
    Apache-2.0
    Notes
    This Pulumi package is based on the signalfx Terraform Provider.
    signalfx logo
    SignalFx v7.1.1 published on Tuesday, Feb 27, 2024 by Pulumi