
                         &   d Z ddlmZ ddlmZ ddlmZ ddlmZ ddlmZ ddl	m
Z
 ddl	mZ dd	lmZ d
ddZ ej                  ej                   j"                  ej                   j$                         G d dej&                               Zee_        y)z,'Bare Metal Solution instances list command.    )absolute_import)division)unicode_literals)	BmsClient)base)flags)util)resource_projectorzD
          List Bare Metal Solution instances in a project.
        z
          To list instances in the region within the project ``us-central1'', run:

            $ {command} --region=us-central1

          Or:

          To list all instances in the project, run:

            $ {command}
    )DESCRIPTIONEXAMPLESc                   ,    e Zd ZdZed        Zd Zd Zy)Listz0List Bare Metal Solution instances in a project.c                    t         j                  j                  |        t         j                  j                  |        t         j                  j                  |        t         j
                  j                  |        t        j                  j                  |        t        j                  |        | j                  j                  d       y)z Register flags for this command.ztable(name.segment(-1):label=NAME,id:label=ID,name.segment(-5):label=PROJECT,name.segment(-3):label=REGION,machineType,clientNetworks[].ipAddress.notnull().list():label=CLIENT_IPS,privateNetworks[].ipAddress.notnull().list():label=PRIVATE_IPS,state)N)r   FILTER_FLAGRemoveFromParserPAGE_SIZE_FLAGSORT_BY_FLAGURI_FLAGr   FILTER_FLAG_NO_SORTBY_DOCAddToParserAddRegionArgToParserdisplay_info	AddFormat)parsers    !lib/surface/bms/instances/list.pyArgsz	List.Args3   s     	%%f-((0&&v.MM""6*	##//7	v& !!	    c              #      K   t        j                  |j                  j                  j	                               }t               }|j                  ||j                        D ]  }| j                  ||      }|  y w)N)limit)	r	   FixParentPathWithGlobalRegionCONCEPTSregionParser   ListInstancesr   synthesizedInstance)selfargsr"   clientinstancesynthesized_instances         r   RunzList.RunI   sh     //0D0D0J0J0LMF[F((tzz(B!55hG   Cs   A;A=c                    t        j                  |      }g }g }|j                  D ]H  }|j                  |      r|j	                  |       &|j                  |      s8|j	                  |       J |sv|st|j                  rh|j                  D ]Y  }|j                  D ]H  }|j                  |      r|j	                  |       &|j                  |      s8|j	                  |       J [ ||d<   ||d<   |S )a)  Returns a synthesized Instance resource.

    Synthesized Instance has additional lists of networks for client and
    private.

    Args:
      instance: protorpc.messages.Message, The BMS instance.
      client: BmsClient, BMS API client.

    Returns:
      Synthesized Instance resource.

    clientNetworksprivateNetworks)
r
   MakeSerializablenetworksIsClientNetworkappendIsPrivateNetworklogicalInterfaceslogicalNetworkInterfacesIsClientLogicalNetworkInterface IsPrivateLogicalNetworkInterface)	r&   r)   r(   r*   client_networksprivate_networksnetworklogical_interfacelogical_network_interfaces	            r   r%   zList.synthesizedInstanceP   s     .>>xHO$$				(w'""7+(	 % $4!!'99
):)S)S%334MN""#<=66')##$=> *T  : .=)*.>*+r   N)__name__
__module____qualname____doc__staticmethodr   r+   r%    r   r   r   r   /   s!    8 *!& r   r   N)r@   
__future__r   r   r   %googlecloudsdk.api_lib.bms.bms_clientr   googlecloudsdk.callioper   googlecloudsdk.command_lib.bmsr   r	   googlecloudsdk.core.resourcer
   DETAILED_HELPReleaseTracksReleaseTrackALPHAGAListCommandr   detailed_helprB   r   r   <module>rO      s    3 &  ' ; ( 0 / ;	
	( D%%++T->->-A-ABF 4 F  CF R # r   