
                         D   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  ej$                  ej&                  j(                  ej&                  j*                        ej,                   G d dej.                                      Zy)z Command to update disk settings.    )absolute_import)division)unicode_literals)base_classes)poller)waiter)base)flags)log)
propertiesc                   .    e Zd ZdZddiZed        Zd Zy)UpdatezUpdate disk settings.EXAMPLESaR  
        To update the disk settings in zone us-west1-a, add the access location ``us-central1 `` and remove the access location ``us-central2``
        in the project ``my-gcp-project'', run:

          $ {command} --add-access-locations=us-central1 --remove-access-locations=us-central2 --project=my-gcp-project --zone=us-west1-a
      c                 X    t        j                  |        t        j                  |        y )N)r
   AddDiskSettingArgAddUpdateDiskSettingsFlags)parsers    +lib/surface/compute/disk_settings/update.pyArgszUpdate.Args+   s    	F#	$$V,    c           
      X   t        j                  | j                               }|j                  }g }|j                  j                         }|j                  rk|j                  D ]\  }|j                  |j                  j
                  j                  j                  ||j                  j                  |                   ^ |j                  ri|j                  D ]Z  }|j                  |j                  j
                  j                  j                  ||j                  j                                      \ |j                  j
                  j                  |      |_        |j                  rT|j                  j
                  j                  |j                  j                         j!                  dd            }||_        |j$                  rn|j&                  j(                  }|j                  j+                  |j                  j-                  |      t.        j0                  j2                  j4                  j7                         d|j$                        }	|j9                  |d	|	fgd
      d   }
|j:                  j=                  |
j>                  t.        j0                  j2                  j4                  j7                         |j$                  dd      }|j:                  j=                  d t.        j0                  j2                  j4                  j6                  |j$                  dd      }tA        jB                  |j                  j&                  j(                  |      }tE        jF                  ||djI                  t.        j0                  j2                  j4                  j7                         |j$                  |jK                                      tL        jN                  jQ                  djI                  t.        j0                  j2                  j4                  j7                         |j$                               |
S |j&                  jR                  }|j                  jU                  |j                  j-                  |      t.        j0                  j2                  j4                  j7                         |jV                  d      }	|j9                  |d	|	fgd
      d   }
|j:                  j=                  |
j>                  t.        j0                  j2                  j4                  j7                         |jV                  dd      }|j:                  j=                  d t.        j0                  j2                  j4                  j6                  |jV                  dd      }tA        jB                  |j                  j&                  jR                  |      }tE        jF                  ||djI                  t.        j0                  j2                  j4                  j7                         |jV                  |jK                                      tL        jN                  jQ                  djI                  t.        j0                  j2                  j4                  j7                         |jV                               |
S )N)region)keyvalue)additionalProperties-_)accessLocationr   )diskSettingsproject
updateMaskzonePatchT)no_followupr   )r    r"   zcompute.zoneOperations)params
collectionzcompute.diskSettingszIWaiting for operation [projects/{0}/zones/{1}/operations/{2}] to completezDUpdated zonal disk settings for compute_project [{0}] in zone [{1}].)r   r    r   r!   )r    r   zcompute.regionOperationszcompute.regionDiskSettingszKWaiting for operation [projects/{0}/regions/{1}/operations/{2}] to completezIUpdated regional disk settings for compute_project [{0}] in region [{1}].),r   ComputeApiHolderReleaseTrackclientmessagesDiskSettingsAccessLocationadd_access_locationsappendLocationsValueAdditionalProperty2DiskSettingsAccessLocationAccessLocationPreferenceremove_access_locations	locationsaccess_location_policyPolicyValueValuesEnumupperreplacepolicyr"   apitools_clientr   ComputeDiskSettingsPatchRequestDiskSettingsr   VALUEScorer    	GetOrFailMakeRequests	resourcesParsenamer   Pollerr   WaitForformatNamer   statusPrintregionDiskSettings%ComputeRegionDiskSettingsPatchRequestr   )selfargsholderr)   new_locations_valuesaccess_locationlocation
new_policyservicepatch_requestresultoperation_refdisk_settings_refoperation_pollers                 r   Runz
Update.Run0   s   **4+<+<+>?F]]F oo@@BO  //(##OO66EEXXooXX# Y  Y 	
 0 ##22(##OO66EEXXooXXZ Y 	
 3 	22AA!5 	B 	
 
 ""
//
4
4
J
J))//199#sC 
  *o yy&&33gooEE33, 4  ##((00::<%yy F m ""Wm,
-4 # 	f &&,,
++#**//77AACii . - m !**00
#**//77AAii , 1   
--
'
'
4
4
 nn

f$$,,668ii  "		 
jj
P6$$,,668ii m&&99gooKK33, 4  ##((00::<% L m ""Wm,
-4 # 	f &&,,
++#**//77AAC 0 - m !**00
#**//77AA 2 1   
--
'
'
:
:
 nn

f$$,,668kk  "		 
jjF$$,,668kk mr   N)__name__
__module____qualname____doc__detailed_helpstaticmethodr   rW    r   r   r   r      s0       
 - - -Qr   r   N)r[   
__future__r   r   r   googlecloudsdk.api_lib.computer   )googlecloudsdk.api_lib.compute.operationsr   googlecloudsdk.api_lib.utilr   googlecloudsdk.callioper	   0googlecloudsdk.command_lib.compute.disk_settingsr
   googlecloudsdk.corer   r   ReleaseTracksr(   ALPHABETAUniverseCompatibleUpdateCommandr   r^   r   r   <module>rk      s     ' &  ' 7 < . ( B # * D%%++T->->-C-CD`T `  E`r   