
    |                         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lmZ ddlmZ d	Zd
ZddddddZdZdZefdZefdZd Zd Z G d de      Zy)z=A library that used to interact with CTD-IA backend services.    )absolute_import)division)unicode_literals)encoding)
exceptions)apis)
propertiessecuritycenterv1beta2 containerThreatDetectionSettingseventThreatDetectionSettingssecurityHealthAnalyticsSettings%virtualMachineThreatDetectionSettingswebSecurityScannerSettings)container-threat-detectionevent-threat-detectionsecurity-health-analytics virtual-machine-threat-detectionweb-security-scannerservice_enablement_statemodulesc                 6    t        j                  t        |       S )zImport and return the securitycenter settings message_module module.

  Args:
    version: the API version

  Returns:
    securitycenter settings message module.
  )r   GetMessagesModuleAPI_NAMEversions    4lib/googlecloudsdk/command_lib/scc/settings/utils.pyGetMessagesr   ,        
		'	22    c                 6    t        j                  t        |       S )zImport and return the securitycenter settings client module.

  Args:
    version: the API version

  Returns:
    securitycenter settings API client module.
  )r   GetClientInstancer   r   s    r   	GetClientr#   8   r   r    c                     | j                   rdj                  | j                         S | j                  rdj                  | j                        S | j                  rdj                  | j                        S y )Nzorganizations/{}/zprojects/{}/zfolders/{}/)organizationformatprojectfolderargss    r   GenerateParentr+   D   s_    	%%d&7&788||  ..{{,, r    c                    | j                   s| j                  s| j                  szt        j                  j
                  j                   j                         | _         | j                   s7t        j                  j                  j                  j                         | _        | j                   s1| j                  s$| j                  st        j                  g d      y y y )N)z--organizationz--folderz	--project)
r%   r(   r'   r	   VALUESsccGetcorecalliope_exceptionsMinimumArgumentExceptionr)   s    r   FallBackFlagsr3   M   s    


DKK"))--::>>@D&&++33779dl


DKK

6
635 5 9EK
r    c                   ^    e Zd ZdZefdZd Zd Zd Zd Z	d Z
d Zd	 Zd
 Zd Zd ZddZy)SettingsClientz+Client for securitycenter settings service.c                 D    t        |      | _        t        |      | _        y )N)r   message_moduler#   service_client)selfapi_versions     r   __init__zSettingsClient.__init__Z   s    %k2D#K0Dr    c                    t        |      dz   }	 | j                  j                  |      }| j                  j                  j                  |      S # t        j                  $ r% t        j                  dj                  |            w xY w)z"Describe settings of organization.securityCenterSettingsnameInvalid argument {})r+   r7   ;SecuritycenterOrganizationsGetSecurityCenterSettingsRequestr8   organizationsGetSecurityCenterSettingsr   HttpNotFoundErrorscc_exceptionsSecurityCenterSettingsExceptionr&   r9   r*   pathrequest_messages       r   DescribeExplicitzSettingsClient.DescribeExplicit^   s     $"::D.++gg h o  ..HH
 '' .::

&
&t
,. ..s   A A 8B	c                 
   t        |       t        |      t        |j                     z   }	 |j                  r|j                  dk(  rA| j
                  j                  |      }| j                  j                  j                  |      S |j                  dk(  rA| j
                  j                  |      }| j                  j                  j                  |      S |j                  dk(  rA| j
                  j                  |      }| j                  j                  j                  |      S |j                  dk(  rA| j
                  j                  |      }| j                  j                  j                  |      S |j                  dk(  r| j
                  j!                  |      }| j                  j                  j#                  |      S |j$                  r|j                  dk(  rA| j
                  j'                  |      }| j                  j(                  j                  |      S |j                  dk(  rA| j
                  j+                  |      }| j                  j(                  j                  |      S |j                  dk(  rA| j
                  j-                  |      }| j                  j(                  j                  |      S |j                  dk(  rA| j
                  j/                  |      }| j                  j(                  j                  |      S |j                  dk(  r| j
                  j1                  |      }| j                  j(                  j#                  |      S |j2                  r|j                  dk(  rA| j
                  j5                  |      }| j                  j6                  j                  |      S |j                  dk(  rA| j
                  j9                  |      }| j                  j6                  j                  |      S |j                  dk(  rA| j
                  j;                  |      }| j                  j6                  j                  |      S |j                  dk(  rA| j
                  j=                  |      }| j                  j6                  j                  |      S |j                  dk(  rA| j
                  j?                  |      }| j                  j6                  j#                  |      S y	y	y	y	# t@        jB                  $ r>}tD        jF                  jI                  tE        jJ                  |d             Y d	}~y	d	}~ww xY w)
zCDescribe effective service settings of organization/folder/project.r   r>   r   r   r   r   z'Status code [{status_code}]. {message}.)error_formatN)&r3   r+   SERVICES_ENDPOINTSservicer%   r7   ?SecuritycenterOrganizationsGetWebSecurityScannerSettingsRequestr8   rB   GetWebSecurityScannerSettingsDSecuritycenterOrganizationsGetSecurityHealthAnalyticsSettingsRequest"GetSecurityHealthAnalyticsSettingsESecuritycenterOrganizationsGetContainerThreatDetectionSettingsRequest#GetContainerThreatDetectionSettingsASecuritycenterOrganizationsGetEventThreatDetectionSettingsRequestGetEventThreatDetectionSettingsJSecuritycenterOrganizationsGetVirtualMachineThreatDetectionSettingsRequest(GetVirtualMachineThreatDetectionSettingsr'   :SecuritycenterProjectsGetWebSecurityScannerSettingsRequestprojects?SecuritycenterProjectsGetSecurityHealthAnalyticsSettingsRequest@SecuritycenterProjectsGetContainerThreatDetectionSettingsRequest<SecuritycenterProjectsGetEventThreatDetectionSettingsRequestESecuritycenterProjectsGetVirtualMachineThreatDetectionSettingsRequestr(   9SecuritycenterFoldersGetWebSecurityScannerSettingsRequestfolders>SecuritycenterFoldersGetSecurityHealthAnalyticsSettingsRequest?SecuritycenterFoldersGetContainerThreatDetectionSettingsRequest;SecuritycenterFoldersGetEventThreatDetectionSettingsRequestDSecuritycenterFoldersGetVirtualMachineThreatDetectionSettingsRequestr   	HttpErrorgcloud_exceptionscore_exceptionsreraiseHttpException)r9   r*   rH   rI   errs        r   DescribeServiceExplicitz&SettingsClient.DescribeServiceExplicitl   s7    $$"4T\\"BBDRL			<<11 //oo p /$$22PP \\88 //tt u /$$22UU \\99 //uu v /$$22VV \\55 //qq r /$$22RR \\?? //zz { /$$22[[ <<<<11 //jj k /$$--KK \\88 //oo p /$$--PP \\99 //pp q /$$--QQ \\55 //ll m /$$--MM \\?? //uu v /$$--VV ;;<<11 //ii j /$$,,JJ \\88 //nn o /$$,,OO \\99 //oo p /$$,,PP \\55 //kk l /$$,,LL \\?? //tt u /$$,,UU  @+  @5 @r  L''//

)
) IKL LLsz   AT	 	AT	 AT	 )AT	 9AT	 
AT	 'AT	 7AT	 AT	 AT	 (AT	 AT	 AT	 %AT	 5AT	 	U4UUc                 
   t        |       t        |      t        |j                     z   }	 |j                  r|j                  dk(  rA| j
                  j                  |      }| j                  j                  j                  |      S |j                  dk(  rA| j
                  j                  |      }| j                  j                  j                  |      S |j                  dk(  rA| j
                  j                  |      }| j                  j                  j                  |      S |j                  dk(  rA| j
                  j                  |      }| j                  j                  j                  |      S |j                  dk(  r| j
                  j!                  |      }| j                  j"                  j                  |      S |j$                  r|j                  dk(  rA| j
                  j'                  |      }| j                  j(                  j                  |      S |j                  dk(  rA| j
                  j+                  |      }| j                  j,                  j                  |      S |j                  dk(  rA| j
                  j/                  |      }| j                  j0                  j                  |      S |j                  dk(  rA| j
                  j3                  |      }| j                  j4                  j                  |      S |j                  dk(  r| j
                  j7                  |      }| j                  j8                  j                  |      S |j:                  r|j                  dk(  rA| j
                  j=                  |      }| j                  j>                  j                  |      S |j                  dk(  rA| j
                  jA                  |      }| j                  jB                  j                  |      S |j                  dk(  rA| j
                  jE                  |      }| j                  jF                  j                  |      S |j                  dk(  rA| j
                  jI                  |      }| j                  jJ                  j                  |      S |j                  dk(  rA| j
                  jM                  |      }| j                  jN                  j                  |      S yyyy# tP        jR                  $ r% tU        jV                  djY                  |            w xY w)	z9Describe service settings of organization/folder/project.r   r>   r   r   r   r   r@   N)-r3   r+   rM   rN   r%   r7   ESecuritycenterOrganizationsWebSecurityScannerSettingsCalculateRequestr8   (organizations_webSecurityScannerSettings	CalculateJSecuritycenterOrganizationsSecurityHealthAnalyticsSettingsCalculateRequest-organizations_securityHealthAnalyticsSettingsKSecuritycenterOrganizationsContainerThreatDetectionSettingsCalculateRequest.organizations_containerThreatDetectionSettingsGSecuritycenterOrganizationsEventThreatDetectionSettingsCalculateRequest*organizations_eventThreatDetectionSettingsPSecuritycenterOrganizationsVirtualMachineThreatDetectionSettingsCalculateRequest3organizations_virtualMachineThreatDetectionSettingsr'   @SecuritycenterProjectsWebSecurityScannerSettingsCalculateRequest#projects_webSecurityScannerSettingsESecuritycenterProjectsSecurityHealthAnalyticsSettingsCalculateRequest(projects_securityHealthAnalyticsSettingsFSecuritycenterProjectsContainerThreatDetectionSettingsCalculateRequest)projects_containerThreatDetectionSettingsBSecuritycenterProjectsEventThreatDetectionSettingsCalculateRequest%projects_eventThreatDetectionSettingsKSecuritycenterProjectsVirtualMachineThreatDetectionSettingsCalculateRequest.projects_virtualMachineThreatDetectionSettingsr(   ?SecuritycenterFoldersWebSecurityScannerSettingsCalculateRequest"folders_webSecurityScannerSettingsDSecuritycenterFoldersSecurityHealthAnalyticsSettingsCalculateRequest'folders_securityHealthAnalyticsSettingsESecuritycenterFoldersContainerThreatDetectionSettingsCalculateRequest(folders_containerThreatDetectionSettingsASecuritycenterFoldersEventThreatDetectionSettingsCalculateRequest$folders_eventThreatDetectionSettingsJSecuritycenterFoldersVirtualMachineThreatDetectionSettingsCalculateRequest-folders_virtualMachineThreatDetectionSettingsr   rD   rE   rF   r&   rG   s       r   DescribeServicezSettingsClient.DescribeService   s*    $$"4T\\"BBDQ.			<<11 //uu v /$$MMWW \\88 //zz { /$$RR\\ \\99 //{{ | /$$SS]] \\55 //ww x /$$OOYY \\?? //  A  A A /$$XXbb <<<<11 //pp q /$$HHRR \\88 //uu v /$$MMWW \\99 //vv w /$$NNXX \\55 //rr s /$$JJTT \\?? //{{ | /$$SS]] ;;<<11 //oo p /$$GGQQ \\88 //tt u /$$LLVV \\99 //uu v /$$MMWW \\55 //qq r /$$IISS \\?? //zz { /$$RR\\  @+  @5 @r '' .::

&
&t
,. ..sn   AT	 	AT	 AT	 )AT	 9AT	 
AT	 'AT	 7AT	 AT	 AT	 (AT	 AT	 AT	 %AT	 5AT	 	8Uc                 (   |j                   dk(  r[| j                  j                  | j                  j                  j                  j                        }| j                  ||t              S |j                   dk(  r[| j                  j                  | j                  j                  j                  j                        }| j                  ||t              S |j                   dk(  r[| j                  j                  | j                  j                  j                  j                        }| j                  ||t              S |j                   dk(  r[| j                  j                  | j                  j                  j                  j                        }| j                  ||t              S |j                   dk(  r[| j                  j                  | j                  j                  j                  j                        }| j                  ||t              S y)z.Enable service of organization/folder/project.r   serviceEnablementStater   r   r   r   N)rN   r7   WebSecurityScannerSettings%ServiceEnablementStateValueValuesEnumENABLED_UpdateServiceSERVICE_STATUS_MASKSecurityHealthAnalyticsSettings ContainerThreatDetectionSettingsEventThreatDetectionSettings%VirtualMachineThreatDetectionSettingsr9   r*   web_security_center_settings"security_health_analytics_settings#container_threat_detection_settingsevent_threat_detection_settings)virtual_machine_threat_detection_settingss          r   EnableServicezSettingsClient.EnableService  s   ||--%)%8%8%S%S!%!4!4!O!O00 &T &:"   'C!46 6	4	4+/+>+>+^+^!%!4!4**+P+P7 ,_ ,(   'I!46 6	5	5,0,?,?,`,`!%!4!4++00 -a -:)   'J!46 6	1	1(,(;(;(X(X!%!4!4''(M(M7 )Y )%   'F!46 6	;	;262E2E2k2k!%!4!40000 3l 3:/   !J!46 6 
<r    c                 (   |j                   dk(  r[| j                  j                  | j                  j                  j                  j                        }| j                  ||t              S |j                   dk(  r[| j                  j                  | j                  j                  j                  j                        }| j                  ||t              S |j                   dk(  r[| j                  j                  | j                  j                  j                  j                        }| j                  ||t              S |j                   dk(  r[| j                  j                  | j                  j                  j                  j                        }| j                  ||t              S |j                   dk(  r[| j                  j                  | j                  j                  j                  j                        }| j                  ||t              S y)z/Disable service of organization/folder/project.r   r   r   r   r   r   N)rN   r7   r   r   DISABLEDr   r   r   r   r   r   r   s          r   DisableServicezSettingsClient.DisableServiceE  s   ||--%)%8%8%S%S!%!4!4!O!O00 &T &;"   'C!46 6	4	4+/+>+>+^+^!%!4!4**+P+P8 ,_ ,(   'I!46 6	5	5,0,?,?,`,`!%!4!4++00 -a -;)   'J!46 6	1	1(,(;(;(X(X!%!4!4''(M(M8 )Y )%   'F!46 6	;	;262E2E2k2k!%!4!40000 3l 3;/   !J!46 6 
<r    c                 (   |j                   dk(  r[| j                  j                  | j                  j                  j                  j                        }| j                  ||t              S |j                   dk(  r[| j                  j                  | j                  j                  j                  j                        }| j                  ||t              S |j                   dk(  r[| j                  j                  | j                  j                  j                  j                        }| j                  ||t              S |j                   dk(  r[| j                  j                  | j                  j                  j                  j                        }| j                  ||t              S |j                   dk(  r[| j                  j                  | j                  j                  j                  j                        }| j                  ||t              S y)z>Set service enablement state of folder/project to "inherited".r   r   r   r   r   r   N)rN   r7   r   r   	INHERITEDr   r   r   r   r   r   r   s          r   InheritServicezSettingsClient.InheritServicek  s   ||--%)%8%8%S%S!%!4!4!O!O00 &T &<"   'C!46 6	4	4+/+>+>+^+^!%!4!4**+P+P9 ,_ ,(   'I!46 6	5	5,0,?,?,`,`!%!4!4++00 -a -<)   'J!46 6	1	1(,(;(;(X(X!%!4!4''(M(M9 )Y )%   'F!46 6	;	;262E2E2k2k!%!4!40000 3l 3</   !J!46 6 
<r    c                 :
   t        |       t        |      t        |j                     z   }|j                  dk(  r|j                  rC| j
                  j                  |||      }| j                  j                  j                  |      S |j                  rC| j
                  j                  |||      }| j                  j                  j                  |      S |j                  rC| j
                  j                  |||      }| j                  j                  j                  |      S y|j                  dk(  r|j                  rC| j
                  j!                  |||      }| j                  j                  j#                  |      S |j                  rC| j
                  j%                  |||      }| j                  j                  j#                  |      S |j                  rC| j
                  j'                  |||      }| j                  j                  j#                  |      S y|j                  dk(  r|j                  rC| j
                  j)                  |||      }| j                  j                  j+                  |      S |j                  rC| j
                  j-                  |||      }| j                  j                  j+                  |      S |j                  rC| j
                  j/                  |||      }| j                  j                  j+                  |      S y|j                  dk(  r|j                  rC| j
                  j1                  |||      }| j                  j                  j3                  |      S |j                  rC| j
                  j5                  |||      }| j                  j                  j3                  |      S |j                  rC| j
                  j7                  |||      }| j                  j                  j3                  |      S y|j                  d	k(  r|j                  rC| j
                  j9                  |||
      }| j                  j                  j;                  |      S |j                  rC| j
                  j=                  |||
      }| j                  j                  j;                  |      S |j                  rC| j
                  j?                  |||
      }| j                  j                  j;                  |      S yy)z7Update service settings of organization/folder/project.r   )r?   
updateMaskr   r   )r?   r   r   r   )r?   r   r   r   )r?   r   r   r   )r?   r   r   N) r3   r+   rM   rN   r%   r7   BSecuritycenterOrganizationsUpdateWebSecurityScannerSettingsRequestr8   rB    UpdateWebSecurityScannerSettingsr(   <SecuritycenterFoldersUpdateWebSecurityScannerSettingsRequestr`   r'   =SecuritycenterProjectsUpdateWebSecurityScannerSettingsRequestrZ   GSecuritycenterOrganizationsUpdateSecurityHealthAnalyticsSettingsRequest%UpdateSecurityHealthAnalyticsSettingsASecuritycenterFoldersUpdateSecurityHealthAnalyticsSettingsRequestBSecuritycenterProjectsUpdateSecurityHealthAnalyticsSettingsRequestHSecuritycenterOrganizationsUpdateContainerThreatDetectionSettingsRequest&UpdateContainerThreatDetectionSettingsBSecuritycenterFoldersUpdateContainerThreatDetectionSettingsRequestCSecuritycenterProjectsUpdateContainerThreatDetectionSettingsRequestDSecuritycenterOrganizationsUpdateEventThreatDetectionSettingsRequest"UpdateEventThreatDetectionSettings>SecuritycenterFoldersUpdateEventThreatDetectionSettingsRequest?SecuritycenterProjectsUpdateEventThreatDetectionSettingsRequestMSecuritycenterOrganizationsUpdateVirtualMachineThreatDetectionSettingsRequest+UpdateVirtualMachineThreatDetectionSettingsGSecuritycenterFoldersUpdateVirtualMachineThreatDetectionSettingsRequestHSecuritycenterProjectsUpdateVirtualMachineThreatDetectionSettingsRequest)r9   r*   service_settingsupdate_maskrH   rI   s         r   r   zSettingsClient._UpdateService  sI    $$"4T\\"BBD||--			--pp"'7 q 9 ""00QQ 	;;--jj"'7 k 9 ""**KK 	<<--kk"'7 l 9 ""++LL 	  
4	4			--uu",< v > ""00VV 	;;--oo",< p > ""**PP 	<<--pp",< q > ""++QQ 	  
5	5			--vv"-= w ? ""00WW 		--pp"-= q ? ""**QQ 		--qq"-= r ? ""++RR 	 
 
1	1			--rr")9 s ; ""00SS 	;;--ll")9 m ; ""**MM 	<<--mm")9 n ; ""++NN 	  
;	;			--{{"2B | D ""00\\ 		--uu"2B v D ""**VV 		--vv"2B w D ""++WW 	 
 
<r    c                 &    | j                  |d      S )z=Enable a module for a service of organization/folder/project.T_UpdateModulesr9   r*   s     r   EnableModulezSettingsClient.EnableModule  s    tT**r    c                 &    | j                  |d      S )z>Disable a module for a service of organization/folder/project.Fr   r   s     r   DisableModulezSettingsClient.DisableModule
  s    tU++r    c                    |j                   s|j                  d}n?	 t        j                  | j                  j
                  j                  |j                        }|j                  dk(  }| j                  |||j                   |      S # t        $ r/ t        j                  dj                  |j                              w xY w)z Update a config within a module.Nz9Invalid argument {}. Check help text for an example json.enabled)clear_configconfigr   JsonToMessager7   Config
ValueValue	ExceptionrE   rF   r&   enablement_stater   )r9   r*   r   r   s       r   UpdateModuleConfigz!SettingsClient.UpdateModuleConfig  s    DKK/f''(;(;(B(B(M(M(,5 ##y0GtWd.?.?HH  <<GNN 	s   >B 8C Nc                 f	   | j                   j                  j                  }|r|j                  n|j                  }d}	 | j                  |      j                  }|s^|\|Z|j                  D 	cg c]  }	|	j                  |j                  k(  s|	  }
}	t        |
      dk(  r|
d   j                  j                  }|j                   dk(  r| j                   j#                  | j                   j"                  j%                  | j                   j"                  j$                  j'                  |j                  | j                   j                  ||            g      	      }n|j                   d
k(  r| j                   j)                  | j                   j(                  j%                  | j                   j(                  j$                  j'                  |j                  | j                   j                  ||            g      	      }n|j                   dk(  r| j                   j+                  | j                   j*                  j%                  | j                   j*                  j$                  j'                  |j                  | j                   j                  ||            g      	      }nI|j                   dk(  r| j                   j-                  | j                   j,                  j%                  | j                   j,                  j$                  j'                  |j                  | j                   j                  ||            g      	      }n|j                   dk(  r| j                   j/                  | j                   j.                  j%                  | j                   j.                  j$                  j'                  |j                  | j                   j                  ||            g      	      }|[|j                  D 	cg c]  }	|	j                  |j                  k7  s|	  }}	j                  j                  |z   |j                  _        | j1                  |t2              S # t        j                  $ r+}|j                  j                  dk(  rd}d}n|Y d}~Hd}~ww xY wc c}	w c c}	w )z'Update modules within service settings.Ni     r   r   )moduleEnablementStatevalue)keyr   )additionalProperties)r   r   r   r   r   )r7   r   $ModuleEnablementStateValueValuesEnumr   r   rk   r   rf   ri   payloadstatus_coder   r   modulelenr   rN   r   ModulesValueAdditionalPropertyr   r   r   r   r   MODULE_STATUS_MASK)r9   r*   r   r   r   	StateEnumstatecurr_modulesrj   pr   settings unmodified_additional_propertiess                r   r   zSettingsClient._UpdateModules  sm    ##**OOI!(Ii.@.@EL11$7??l FN|/G!666!%%4;;:N!6   
V	&&||--$$??%%@@MM%%@@MM%%++ //6605V 7 E & F$ N  @ h 
4	4$$DD%%EE<!!AANN!!kk++22,1 3 A " B.<  E h 
5	5$$EE%%FF<!!BBOO!!kk++22,1 3 A " B.<  F h 
1	1$$AA%%BBOO%%BBOO%%++ //6605V 7 E & F$ P  B h 
;	;$$JJ%%KK<!!GG|..kk++22,1 3 A / B.<  K h !66*6!%%4;;:N!6 ' * 


/
/
*+ + tX/ABBM ** 		 	 C	'	 	p*s/   Q( -R)R)R.#R.(R&; R!!R&)FN)__name__
__module____qualname____doc__DEFAULT_API_VERSIONr;   rJ   rk   r   r   r   r   r   r   r   r   r    r    r   r5   r5   W   sQ    3!4 1.XLtW.r$6L$6L$6Lsj+,IOCr    r5   N)r   
__future__r   r   r   apitools.base.pyr   r   googlecloudsdk.api_lib.utilr   rf   googlecloudsdk.callioper1   'googlecloudsdk.command_lib.scc.settingsrE   googlecloudsdk.corer	   r   r   rM   r   r   r   r#   r+   r3   objectr5   r   r    r   <module>r      s    D &  ' % ' , G E P *  #E<!B(O8  1   , 	3 * 	3-5UCV UCr    