Ejemplo n.º 1
0
    def Stage(self):
        """Prepares for import args.

    It supports running new import wrapper (gce_vm_image_import).

    Returns:
      import_args - array of strings, import args.
    """
        import_args = []

        daisy_utils.AppendArg(import_args, 'zone',
                              properties.VALUES.compute.zone.Get())
        if self.args.storage_location:
            daisy_utils.AppendArg(import_args, 'storage_location',
                                  self.args.storage_location)
        daisy_utils.AppendArg(import_args, 'scratch_bucket_gcs_path',
                              'gs://{0}/'.format(self.daisy_bucket))
        daisy_utils.AppendArg(
            import_args, 'timeout',
            '{}s'.format(daisy_utils.GetDaisyTimeout(self.args)))

        daisy_utils.AppendArg(import_args, 'client_id', 'gcloud')
        daisy_utils.AppendArg(import_args, 'image_name', self.args.image_name)
        daisy_utils.AppendBoolArg(import_args, 'no_guest_environment',
                                  not self.args.guest_environment)
        daisy_utils.AppendNetworkAndSubnetArgs(self.args, import_args)
        daisy_utils.AppendArg(import_args, 'description',
                              self.args.description)
        daisy_utils.AppendArg(import_args, 'family', self.args.family)
        if 'sysprep_windows' in self.args:
            daisy_utils.AppendBoolArg(import_args, 'sysprep_windows',
                                      self.args.sysprep_windows)

        return import_args
    def Stage(self):
        """Prepares for import args.

    It supports running new import wrapper (gce_vm_image_import).

    Returns:
      import_args - array of strings, import args.
    """
        import_args = []
        messages = self.compute_holder.client.messages

        daisy_utils.AppendArg(import_args, 'zone',
                              properties.VALUES.compute.zone.Get())
        if self.args.storage_location:
            daisy_utils.AppendArg(import_args, 'storage_location',
                                  self.args.storage_location)
        daisy_utils.AppendArg(import_args, 'scratch_bucket_gcs_path',
                              'gs://{0}/'.format(self.daisy_bucket))
        daisy_utils.AppendArg(
            import_args, 'timeout',
            '{}s'.format(daisy_utils.GetDaisyTimeout(self.args)))

        daisy_utils.AppendArg(import_args, 'client_id', 'gcloud')
        daisy_utils.AppendArg(import_args, 'image_name', self.args.image_name)
        daisy_utils.AppendBoolArg(import_args, 'no_guest_environment',
                                  not self.args.guest_environment)
        daisy_utils.AppendNetworkAndSubnetArgs(self.args, import_args)
        daisy_utils.AppendArg(import_args, 'description',
                              self.args.description)
        daisy_utils.AppendArg(import_args, 'family', self.args.family)
        if 'byol' in self.args:
            daisy_utils.AppendBoolArg(import_args, 'byol', self.args.byol)

        # The value of the attribute 'guest_os_features' can be can be a list, None,
        # or the attribute may not be present at all.
        # We treat the case when it is None or when it is not present as if the list
        # of features is empty. We need to use the trailing `or ()` rather than
        # give () as a default value to getattr() to handle the case where
        # args.guest_os_features is present, but it is None.
        guest_os_features = getattr(self.args, 'guest_os_features', None) or ()
        uefi_compatible = (
            messages.GuestOsFeature.TypeValueValuesEnum.UEFI_COMPATIBLE.name
            in guest_os_features)
        if uefi_compatible:
            daisy_utils.AppendBoolArg(import_args, 'uefi_compatible', True)

        if 'sysprep_windows' in self.args:
            daisy_utils.AppendBoolArg(import_args, 'sysprep_windows',
                                      self.args.sysprep_windows)
        if 'no_address' in self.args:
            daisy_utils.AppendBoolArg(import_args, 'no_external_ip',
                                      self.args.no_address)
        if 'compute_service_account' in self.args:
            daisy_utils.AppendArg(import_args, 'compute_service_account',
                                  self.args.compute_service_account)
        return import_args
Ejemplo n.º 3
0
  def _BuildImportArgs(self, import_args):
    # Import and (maybe) translate from the scratch bucket.
    daisy_utils.AppendArg(import_args, 'source_file', self.gcs_uri)
    if self.args.data_disk:
      daisy_utils.AppendBoolArg(import_args, 'data_disk', self.args.data_disk)
    else:
      _AppendTranslateWorkflowArg(self.args, import_args)

    super(BaseImportFromFileStager, self)._BuildImportArgs(import_args)
Ejemplo n.º 4
0
    def GetNetworkStepForImport(self,
                                network=None,
                                subnet=None,
                                include_zone=True,
                                from_image=False,
                                include_storage_location=False,
                                family=None,
                                description=None,
                                sysprep_windows=False):

        import_vars = []

        if from_image:
            daisy_utils.AppendArg(import_vars, 'source_image',
                                  self.source_image)
        else:
            daisy_utils.AppendArg(import_vars, 'source_file',
                                  self.GetCopiedSource(regionalized=True))

        daisy_utils.AppendArg(import_vars, 'os', 'ubuntu-1604')

        if include_zone:
            daisy_utils.AppendArg(import_vars, 'zone', 'my-region-c')

        if include_storage_location:
            daisy_utils.AppendArg(import_vars, 'storage_location', 'my-region')

        daisy_utils.AppendArg(
            import_vars, 'scratch_bucket_gcs_path', 'gs://{0}/'.format(
                self.GetScratchBucketName(not from_image
                                          or include_storage_location)))

        daisy_utils.AppendArg(import_vars, 'timeout', _DEFAULT_TIMEOUT)
        daisy_utils.AppendArg(import_vars, 'client_id', 'gcloud')
        daisy_utils.AppendArg(import_vars, 'image_name', self.image_name)

        if subnet:
            daisy_utils.AppendArg(import_vars, 'subnet', subnet)

        if network:
            daisy_utils.AppendArg(import_vars, 'network', network)

        if description:
            daisy_utils.AppendArg(import_vars, 'description', description)

        if family:
            daisy_utils.AppendArg(import_vars, 'family', family)

        if sysprep_windows:
            daisy_utils.AppendBoolArg(import_vars, 'sysprep_windows')

        return self.cloudbuild_v1_messages.BuildStep(args=import_vars,
                                                     name=self.builder)
Ejemplo n.º 5
0
 def GetImportStepForNonGSFile(self):
     import_vars = []
     daisy_utils.AppendArg(import_vars, 'source_file',
                           self.GetCopiedSource(regionalized=False))
     daisy_utils.AppendBoolArg(import_vars, 'data_disk')
     daisy_utils.AppendArg(
         import_vars, 'scratch_bucket_gcs_path',
         'gs://{0}/'.format(self.GetScratchBucketNameWithoutRegion()))
     daisy_utils.AppendArg(import_vars, 'timeout', _DEFAULT_TIMEOUT)
     daisy_utils.AppendArg(import_vars, 'client_id', 'gcloud')
     daisy_utils.AppendArg(import_vars, 'image_name', self.image_name)
     return self.cloudbuild_v1_messages.BuildStep(args=import_vars,
                                                  name=self.builder)
Ejemplo n.º 6
0
 def GetImportStepForTimeoutTest(self, timeout):
     import_vars = []
     daisy_utils.AppendArg(import_vars, 'source_file',
                           self.GetCopiedSource())
     daisy_utils.AppendBoolArg(import_vars, 'data_disk')
     daisy_utils.AppendArg(
         import_vars, 'scratch_bucket_gcs_path',
         'gs://{0}/'.format(self.GetScratchBucketNameWithRegion()))
     daisy_utils.AppendArg(import_vars, 'timeout', '{}s'.format(timeout))
     daisy_utils.AppendArg(import_vars, 'client_id', 'gcloud')
     daisy_utils.AppendArg(import_vars, 'image_name', self.image_name)
     return self.cloudbuild_v1_messages.BuildStep(args=import_vars,
                                                  name=self.builder)
Ejemplo n.º 7
0
  def Stage(self):
    self._FileStage()

    import_args = []

    # Import and (maybe) translate from the scratch bucket.
    daisy_utils.AppendArg(import_args, 'source_file', self.gcs_uri)
    if self.args.data_disk:
      daisy_utils.AppendBoolArg(import_args, 'data_disk', self.args.data_disk)
    else:
      _AppendTranslateWorkflowArg(self.args, import_args)

    import_args.extend(super(BaseImportFromFileStager, self).Stage())
    return import_args
Ejemplo n.º 8
0
 def GetImportStepForNoGooglePackageInstall(self):
     import_vars = []
     daisy_utils.AppendArg(import_vars, 'source_file',
                           self.GetCopiedSource())
     daisy_utils.AppendArg(import_vars, 'os', 'ubuntu-1604')
     daisy_utils.AppendArg(
         import_vars, 'scratch_bucket_gcs_path',
         'gs://{0}/'.format(self.GetScratchBucketNameWithRegion()))
     daisy_utils.AppendArg(import_vars, 'timeout', _DEFAULT_TIMEOUT)
     daisy_utils.AppendArg(import_vars, 'client_id', 'gcloud')
     daisy_utils.AppendArg(import_vars, 'image_name', self.image_name)
     daisy_utils.AppendBoolArg(import_vars, 'no_guest_environment')
     return self.cloudbuild_v1_messages.BuildStep(args=import_vars,
                                                  name=self.builder)
    def Stage(self):
        _CheckForExistingImage(self.args.source_image,
                               self.compute_holder,
                               arg_name='source-image',
                               expect_to_exist=True)
        import_args = []

        daisy_utils.AppendArg(import_args, 'source_image',
                              self.args.source_image)
        if self.args.data_disk:
            daisy_utils.AppendBoolArg(import_args, 'data_disk',
                                      self.args.data_disk)
        else:
            _AppendTranslateWorkflowArg(self.args, import_args)

        import_args.extend(super(ImportFromImageStager, self).Stage())
        return import_args
Ejemplo n.º 10
0
  def _BuildImportArgs(self, import_args):
    """Build args to support running new import wrapper - gce_vm_image_import.

    Args:
      import_args: array of str, args to build.
    """
    daisy_utils.AppendArg(import_args, 'zone',
                          properties.VALUES.compute.zone.Get())
    daisy_utils.AppendArg(import_args, 'scratch_bucket_gcs_path',
                          'gs://{0}/'.format(self.GetDaisyBucket()))
    daisy_utils.AppendArg(import_args, 'timeout',
                          '{}s'.format(daisy_utils.GetDaisyTimeout(self.args)))

    daisy_utils.AppendArg(import_args, 'client_id', 'gcloud')
    daisy_utils.AppendArg(import_args, 'image_name', self.args.image_name)
    daisy_utils.AppendBoolArg(import_args, 'no_guest_environment',
                              not self.args.guest_environment)
    daisy_utils.AppendNetworkAndSubnetArgs(self.args, import_args)