Beispiel #1
0
 def ConstructManagedRelationalDb(self):
     """Create the managed relational db and create groups for its vms."""
     if self.config.managed_relational_db is None:
         return
     cloud = self.config.managed_relational_db.cloud
     providers.LoadProvider(cloud)
     managed_relational_db_class = (
         managed_relational_db.GetManagedRelationalDbClass(cloud))
     self.managed_relational_db = managed_relational_db_class(
         self.config.managed_relational_db)
    def __init__(self, component_full_name, flag_values=None, **kwargs):
        super(_ManagedRelationalDbSpec, self).__init__(component_full_name,
                                                       flag_values=flag_values,
                                                       **kwargs)
        # TODO(ferneyhough): This is a lot of boilerplate, and is repeated
        # below in VmGroupSpec. See if some can be consolidated. Maybe we can
        # specify a VmGroupSpec instead of both vm_spec and disk_spec.
        ignore_package_requirements = (getattr(
            flag_values, 'ignore_package_requirements', True)
                                       if flag_values else True)
        providers.LoadProvider(self.cloud, ignore_package_requirements)

        if self.disk_spec:
            disk_config = getattr(self.disk_spec, self.cloud, None)
            if disk_config is None:
                raise errors.Config.MissingOption(
                    '{0}.cloud is "{1}", but {0}.disk_spec does not contain a '
                    'configuration for "{1}".'.format(component_full_name,
                                                      self.cloud))
            disk_spec_class = disk.GetDiskSpecClass(self.cloud)
            self.disk_spec = disk_spec_class('{0}.disk_spec.{1}'.format(
                component_full_name, self.cloud),
                                             flag_values=flag_values,
                                             **disk_config)

        vm_config = getattr(self.vm_spec, self.cloud, None)
        if vm_config is None:
            raise errors.Config.MissingOption(
                '{0}.cloud is "{1}", but {0}.vm_spec does not contain a '
                'configuration for "{1}".'.format(component_full_name,
                                                  self.cloud))
        vm_spec_class = virtual_machine.GetVmSpecClass(self.cloud)
        self.vm_spec = vm_spec_class('{0}.vm_spec.{1}'.format(
            component_full_name, self.cloud),
                                     flag_values=flag_values,
                                     **vm_config)

        # Set defaults that were not able to be set in
        # GetOptionDecoderConstructions()
        if not self.engine_version:
            managed_db_class = managed_relational_db.GetManagedRelationalDbClass(
                self.cloud)
            self.engine_version = managed_db_class.GetDefaultEngineVersion(
                self.engine)
        if not self.database_name:
            self.database_name = 'pkb-db-%s' % flag_values.run_uri
        if not self.database_username:
            self.database_username = '******' % flag_values.run_uri
        if not self.database_password:
            self.database_password = managed_relational_db.GenerateRandomDbPassword(
            )