text: # coding=utf-8
  # *** WARNING: this file was generated by the Pulumi SDK Generator. ***
  # *** Do not edit by hand unless you're certain you know what you are doing! ***
  
  import warnings
  import pulumi
  import pulumi.runtime
  from typing import Any, Mapping, Optional, Sequence, Union
  from ... import _utilities, _tables
  from . import outputs
  from ._enums import *
  from ._inputs import *
  
  __all__ = ['MachineGroup']
  
  
  class MachineGroup(pulumi.CustomResource):
      def __init__(__self__,
                   resource_name: str,
                   opts: Optional[pulumi.ResourceOptions] = None,
                   count: Optional[pulumi.Input[int]] = None,
                   display_name: Optional[pulumi.Input[str]] = None,
                   etag: Optional[pulumi.Input[str]] = None,
                   group_type: Optional[pulumi.Input[Union[str, 'MachineGroupType']]] = None,
                   kind: Optional[pulumi.Input[str]] = None,
                   machine_group_name: Optional[pulumi.Input[str]] = None,
                   machines: Optional[pulumi.Input[Sequence[pulumi.Input[pulumi.InputType['MachineReferenceWithHintsArgs']]]]] = None,
                   resource_group_name: Optional[pulumi.Input[str]] = None,
                   workspace_name: Optional[pulumi.Input[str]] = None,
                   __props__=None,
                   __name__=None,
                   __opts__=None):
          """
          A user-defined logical grouping of machines.
  
          :param str resource_name: The name of the resource.
          :param pulumi.ResourceOptions opts: Options for the resource.
          :param pulumi.Input[int] count: Count of machines in this group. The value of count may be bigger than the number of machines in case of the group has been truncated due to exceeding the max number of machines a group can handle.
          :param pulumi.Input[str] display_name: User defined name for the group
          :param pulumi.Input[str] etag: Resource ETAG.
          :param pulumi.Input[Union[str, 'MachineGroupType']] group_type: Type of the machine group
          :param pulumi.Input[str] kind: Additional resource type qualifier.
                 Expected value is 'machineGroup'.
          :param pulumi.Input[str] machine_group_name: Machine Group resource name.
          :param pulumi.Input[Sequence[pulumi.Input[pulumi.InputType['MachineReferenceWithHintsArgs']]]] machines: References of the machines in this group. The hints within each reference do not represent the current value of the corresponding fields. They are a snapshot created during the last time the machine group was updated.
          :param pulumi.Input[str] resource_group_name: Resource group name within the specified subscriptionId.
          :param pulumi.Input[str] workspace_name: OMS workspace containing the resources of interest.
          """
          if __name__ is not None:
              warnings.warn("explicit use of __name__ is deprecated", DeprecationWarning)
              resource_name = __name__
          if __opts__ is not None:
              warnings.warn("explicit use of __opts__ is deprecated, use 'opts' instead", DeprecationWarning)
              opts = __opts__
          if opts is None:
              opts = pulumi.ResourceOptions()
          if not isinstance(opts, pulumi.ResourceOptions):
              raise TypeError('Expected resource options to be a ResourceOptions instance')
          if opts.version is None:
              opts.version = _utilities.get_version()
          if opts.id is None:
              if __props__ is not None:
                  raise TypeError('__props__ is only valid when passed in combination with a valid opts.id to get an existing resource')
              __props__ = dict()
  
              __props__['count'] = count
              if display_name is None and not opts.urn:
                  raise TypeError("Missing required property 'display_name'")
              __props__['display_name'] = display_name
              __props__['etag'] = etag
              __props__['group_type'] = group_type
              if kind is None and not opts.urn:
                  raise TypeError("Missing required property 'kind'")
              __props__['kind'] = 'machineGroup'
              __props__['machine_group_name'] = machine_group_name
              __props__['machines'] = machines
              if resource_group_name is None and not opts.urn:
                  raise TypeError("Missing required property 'resource_group_name'")
              __props__['resource_group_name'] = resource_group_name
              if workspace_name is None and not opts.urn:
                  raise TypeError("Missing required property 'workspace_name'")
              __props__['workspace_name'] = workspace_name
              __props__['name'] = None
              __props__['type'] = None
          alias_opts = pulumi.ResourceOptions(aliases=[pulumi.Alias(type_="azure-nextgen:operationalinsights:MachineGroup")])
          opts = pulumi.ResourceOptions.merge(opts, alias_opts)
          super(MachineGroup, __self__).__init__(
              'azure-nextgen:operationalinsights/v20151101preview:MachineGroup',
              resource_name,
              __props__,
              opts)
  
      @staticmethod
      def get(resource_name: str,
              id: pulumi.Input[str],
              opts: Optional[pulumi.ResourceOptions] = None) -> 'MachineGroup':
          """
          Get an existing MachineGroup resource's state with the given name, id, and optional extra
          properties used to qualify the lookup.
  
          :param str resource_name: The unique name of the resulting resource.
          :param pulumi.Input[str] id: The unique provider ID of the resource to lookup.
          :param pulumi.ResourceOptions opts: Options for the resource.
          """
          opts = pulumi.ResourceOptions.merge(opts, pulumi.ResourceOptions(id=id))
  
          __props__ = dict()
  
          return MachineGroup(resource_name, opts=opts, __props__=__props__)
  
      @property
      @pulumi.getter
      def count(self) -> pulumi.Output[Optional[int]]:
          """
          Count of machines in this group. The value of count may be bigger than the number of machines in case of the group has been truncated due to exceeding the max number of machines a group can handle.
          """
          return pulumi.get(self, "count")
  
      @property
      @pulumi.getter(name="displayName")
      def display_name(self) -> pulumi.Output[str]:
          """
          User defined name for the group
          """
          return pulumi.get(self, "display_name")
  
      @property
      @pulumi.getter
      def etag(self) -> pulumi.Output[Optional[str]]:
          """
          Resource ETAG.
          """
          return pulumi.get(self, "etag")
  
      @property
      @pulumi.getter(name="groupType")
      def group_type(self) -> pulumi.Output[Optional[str]]:
          """
          Type of the machine group
          """
          return pulumi.get(self, "group_type")
  
      @property
      @pulumi.getter
      def kind(self) -> pulumi.Output[str]:
          """
          Additional resource type qualifier.
          Expected value is 'machineGroup'.
          """
          return pulumi.get(self, "kind")
  
      @property
      @pulumi.getter
      def machines(self) -> pulumi.Output[Optional[Sequence['outputs.MachineReferenceWithHintsResponse']]]:
          """
          References of the machines in this group. The hints within each reference do not represent the current value of the corresponding fields. They are a snapshot created during the last time the machine group was updated.
          """
          return pulumi.get(self, "machines")
  
      @property
      @pulumi.getter
      def name(self) -> pulumi.Output[str]:
          """
          Resource name.
          """
          return pulumi.get(self, "name")
  
      @property
      @pulumi.getter
      def type(self) -> pulumi.Output[str]:
          """
          Resource type.
          """
          return pulumi.get(self, "type")
  
      def translate_output_property(self, prop):
          return _tables.CAMEL_TO_SNAKE_CASE_TABLE.get(prop) or prop
  
      def translate_input_property(self, prop):
          return _tables.SNAKE_TO_CAMEL_CASE_TABLE.get(prop) or prop
  
  