cloud_orchestrator-3.0.0-alpha2/cloud_orchestrator.install

cloud_orchestrator.install
<?php

/**
 * @file
 * Installer file.
 */

use Drupal\Component\Serialization\Yaml;
use Drupal\Core\StreamWrapper\PrivateStream;
use Drupal\block\Entity\Block;
use Drupal\user\Entity\User;
use Drupal\user\RoleInterface;

/**
 * Implements hook_requirements().
 */
function cloud_orchestrator_requirements($phase) {
  $requirements = [];
  if ($phase === 'install') {
    if (!PrivateStream::basePath()) {
      $requirements['private file stream'] = [
        'title' => t('Private file directory not set'),
        'description' => t('The file_private_path needs to be set in settings.php.  It needs to be writable by the web server.'),
        'severity' => REQUIREMENT_ERROR,
      ];
    }
    else {
      $directory = PrivateStream::basePath();
      $is_writeable = is_writable($directory);
      $is_directory = is_dir($directory);
      if (!$is_writeable || !$is_directory) {
        if (!$is_directory) {
          $error = t('The directory %directory does not exist.', ['%directory' => $directory]);
        }
        else {
          $error = t('The directory %directory is not writable.', ['%directory' => $directory]);
        }
        $requirements['private file stream'] = [
          'title' => t('Not writable'),
          'description' => $error,
          'severity' => REQUIREMENT_ERROR,
        ];
      }
    }
  }
  return $requirements;
}

/**
 * Implements hook_install().
 *
 * Perform actions to set up the cloud_orchestrator profile.
 *
 * @throws \Drupal\Core\Entity\EntityStorageException
 */
function cloud_orchestrator_install() {
  // Assign user 1 the "administrator" role.
  /** @var \Drupal\user\Entity\User $user */
  $user = User::load(1);
  $user->addRole('administrator');
  $user->save();

  // Import default content.
  cloud_orchestrator_import_content();

  // Remove access content from Anonymous user.
  user_role_revoke_permissions(RoleInterface::ANONYMOUS_ID, ['access content']);
}

/**
 * Helper function to update dashboards.
 */
function cloud_orchestrator_update_dashboards() {
  $files = [
    'page_manager.page_variant.dashboard-panels_variant-0.yml',
    'page_manager.page_variant.all_dashboard-panels_variant-0.yml',
    'page_manager.page_variant.kubernetes_dashboard-panels_variant-0.yml',
  ];
  cloud_orchestrator_update_yml_definitions($files, 'install');
}

/**
 * Import default content into the site.
 */
function cloud_orchestrator_import_content() {
  $files = [
    'welcome_page.yml',
  ];
  $path = \Drupal::moduleHandler()->getModule('cloud_orchestrator')->getPath();
  foreach ($files as $file) {
    $content_path = $path . '/default_content/' . $file;
    if (file_exists($content_path) && ($handle = fopen($content_path, 'r')) !== FALSE) {
      $contents = fread($handle, filesize($content_path));
      if (!empty($contents)) {
        $data = Yaml::decode($contents);
        $entity = \Drupal::entityTypeManager()
          ->getStorage('node')
          ->create($data);
        $entity->save();
      }
    }
  }
}

/**
 * Enable bootstrap_cloud's main_menu block and disable the tools blocks.
 */
function cloud_orchestrator_update_8100() {
  if (\Drupal::service('theme_handler')->themeExists('bootstrap_cloud')) {
    $main_menu = Block::load('bootstrap_cloud_main_menu');
    if ($main_menu) {
      $main_menu->enable()->save();
    }
    $tools = Block::load('bootstrap_cloud_tools');
    if ($tools) {
      $tools->disable()->save();
    }
  }
}

/**
 * Update bootstrap_cloud configurations.
 */
function cloud_orchestrator_update_8101() {
  $config = \Drupal::configFactory()->getEditable('bootstrap_cloud.settings');
  $config->set('fluid_container', TRUE);
  $config->set('tooltip_placement', 'auto top');
  $config->set('navbar_position', 'fixed-top');
  $config->save();
}

/**
 * Update dashboard panels to include low utilization block.
 */
function cloud_orchestrator_update_8200() {
  cloud_orchestrator_update_dashboards();
}

/**
 * Update dashboard panels to include unused elastic ip block.
 */
function cloud_orchestrator_update_8300() {
  cloud_orchestrator_update_dashboards();
}

/**
 * Update dashboard panels to fix hard-coded cloud_context.
 */
function cloud_orchestrator_update_8400() {
  cloud_orchestrator_update_dashboards();
}

/**
 * Update the login destination location.
 */
function cloud_orchestrator_update_8401() {
  cloud_orchestrator_update_yml_definitions([
    'login_destination.destination.login.yml',
  ], 'install');
}

/**
 * Uninstall Panels and Page Manager and set dashboard to new dynamic page.
 */
function cloud_orchestrator_update_8402() {
  \Drupal::service('module_installer')->uninstall([
    'panels',
    'page_manager',
    'page_manager_ui',
  ]);
  \Drupal::configFactory()
    ->getEditable('system.site')
    ->set('page.front', '/dashboard')
    ->save(TRUE);

  user_role_grant_permissions(RoleInterface::AUTHENTICATED_ID, ['view cloud orchestrator dashboard']);

  \Drupal::cache()->invalidateAll();
}

/**
 * Grant "view any k8s namespace entities" to cloud_admin and cloud_operator.
 */
function cloud_orchestrator_update_8403() {
  user_role_grant_permissions('cloud_admin', ['view any k8s namespace entities']);
  user_role_grant_permissions('cloud_operator', ['view any k8s namespace entities']);
}

/**
 * Grant vmware permissions to cloud_admin, cloud_operator, authenticated user.
 */
function cloud_orchestrator_update_8404() {
  user_role_grant_permissions('authenticated', [
    'delete own vmware vm',
    'edit own vmware vm',
    'view own vmware host',
    'view own vmware vm',
  ]);

  // Assign `any` permissions to cloud_admin and cloud_operator.
  $roles = [
    'cloud_admin',
    'cloud_operator',
  ];
  foreach ($roles ?: [] as $role) {
    user_role_grant_permissions($role, [
      'delete any vmware vm',
      'edit any vmware vm',
      'view any vmware host',
      'view any vmware vm',
    ]);
  }
}

/**
 * Grant 'delete own openstack instance' to authenticated users.
 */
function cloud_orchestrator_update_8405() {
  user_role_grant_permissions('authenticated', [
    'delete own openstack instance',
  ]);
}

/**
 * Update OpenStack network,port,router,subnet permissions.
 */
function cloud_orchestrator_update_8406() {
  user_role_grant_permissions('authenticated', [
    'add openstack network',
    'add openstack port',
    'add openstack router',
    'add openstack subnet',
    'delete own openstack network',
    'delete own openstack port',
    'delete own openstack router',
    'delete own openstack subnet',
    'edit own openstack network',
    'edit own openstack port',
    'edit own openstack router',
    'edit own openstack subnet',
    'list openstack network',
    'list openstack port',
    'list openstack router',
    'list openstack subnet',
    'view own openstack network',
    'view own openstack port',
    'view own openstack router',
    'view own openstack subnet',
  ]);

  user_role_grant_permissions('cloud_admin', [
    'delete any openstack network',
    'delete any openstack port',
    'delete any openstack router',
    'delete any openstack subnet',
    'edit any openstack network',
    'edit any openstack port',
    'edit any openstack router',
    'edit any openstack subnet',
    'view any openstack network',
    'view any openstack port',
    'view any openstack router',
    'view any openstack subnet',
  ]);

  user_role_grant_permissions('cloud_operator', [
    'delete any openstack network',
    'delete any openstack port',
    'delete any openstack router',
    'delete any openstack subnet',
    'edit any openstack network',
    'edit any openstack port',
    'edit any openstack router',
    'edit any openstack subnet',
    'view any openstack network',
    'view any openstack port',
    'view any openstack router',
    'view any openstack subnet',
  ]);

}

/**
 * Update OpenStack quota permissions.
 */
function cloud_orchestrator_update_8407() {
  user_role_grant_permissions('authenticated', [
    'list openstack quota',
    'view openstack quota',
  ]);

  user_role_grant_permissions('cloud_admin', [
    'edit openstack quota',
  ]);

  user_role_grant_permissions('cloud_operator', [
    'edit openstack quota',
  ]);

}

/**
 * Update OpenStack stack permissions.
 */
function cloud_orchestrator_update_8408() {
  user_role_grant_permissions('authenticated', [
    'add openstack stack',
    'delete own openstack stack',
    'edit own openstack stack',
    'list openstack stack',
    'view own openstack stack',
  ]);
  user_role_grant_permissions('cloud_admin', [
    'delete any openstack stack',
    'edit any openstack stack',
    'view any openstack stack',
  ]);
  user_role_grant_permissions('cloud_operator', [
    'delete any openstack stack',
    'edit any openstack stack',
    'view any openstack stack',
  ]);
}

/**
 * Update OpenStack Server Group permissions.
 */
function cloud_orchestrator_update_8409() {
  user_role_grant_permissions('authenticated', [
    'list openstack server group',
    'view openstack server group',
  ]);
  user_role_grant_permissions('cloud_admin', [
    'add openstack server group',
    'edit openstack server group',
    'delete openstack server group',
  ]);
  user_role_grant_permissions('cloud_operator', [
    'add openstack server group',
    'edit openstack server group',
    'delete openstack server group',
  ]);
}

/**
 * Update OpenStack template version permissions.
 */
function cloud_orchestrator_update_8410() {
  user_role_grant_permissions('authenticated', [
    'list openstack template version',
    'view openstack template version',
  ]);
  user_role_grant_permissions('cloud_admin', [
    'edit openstack template version',
  ]);
  user_role_grant_permissions('cloud_operator', [
    'edit openstack template version',
  ]);
}

/**
 * Update OpenStack project permissions.
 */
function cloud_orchestrator_update_8411() {
  user_role_grant_permissions('authenticated', [
    'list openstack project',
    'view openstack project',
  ]);
  user_role_grant_permissions('cloud_admin', [
    'add openstack project',
    'edit openstack project',
    'delete openstack project',
  ]);
  user_role_grant_permissions('cloud_operator', [
    'add openstack project',
    'edit openstack project',
    'delete openstack project',
  ]);
}

/**
 * Update OpenStack role permissions.
 */
function cloud_orchestrator_update_8412() {
  user_role_grant_permissions('authenticated', [
    'list openstack role',
    'view openstack role',
  ]);
  user_role_grant_permissions('cloud_admin', [
    'add openstack role',
    'edit openstack role',
    'delete openstack role',
  ]);
  user_role_grant_permissions('cloud_operator', [
    'add openstack role',
    'edit openstack role',
    'delete openstack role',
  ]);
}

/**
 * Update OpenStack user permissions.
 */
function cloud_orchestrator_update_8413() {
  user_role_grant_permissions('authenticated', [
    'list openstack user',
    'view openstack user',
  ]);
  user_role_grant_permissions('cloud_admin', [
    'add openstack user',
    'edit openstack user',
    'delete openstack user',
  ]);
  user_role_grant_permissions('cloud_operator', [
    'add openstack user',
    'edit openstack user',
    'delete openstack user',
  ]);
}

Главная | Обратная связь

drupal hosting | друпал хостинг | it patrol .inc