Пример #1
0
 /**
  * @param IOpenStackRelease $release
  * @param string $term
  * @param int $adoption
  * @param int $maturity
  * @param int $age
  * @param string $sort
  * @param string $sort_dir
  * @return array
  */
 public function getComponents(IOpenStackRelease $release, $term = '', $adoption = 0, $maturity = 0, $age = 0, $sort = '', $sort_dir = '')
 {
     $res1 = array();
     $res2 = array();
     $core_components = $release->getOpenStackCoreComponents($term, $adoption, $maturity, $age);
     $optional_components = $release->getOpenStackOptionalComponents($term, $adoption, $maturity, $age, $sort, $sort_dir);
     foreach ($core_components as $c) {
         array_push($res1, $this->serializer->serialize($c));
     }
     foreach ($optional_components as $c) {
         array_push($res2, $this->serializer->serialize($c));
     }
     return array($res1, $res2);
 }
 /**
  * @param IOpenStackRelease $release
  * @return bool|int
  */
 public function registerRelease(IOpenStackRelease $release)
 {
     $res = false;
     $release_repository = $this->release_repository;
     $this->tx_manager->transaction(function () use(&$res, $release, $release_repository) {
         $old_one = $release_repository->getByName($release->getName());
         if ($old_one) {
             throw new EntityAlreadyExistsException('OpenStackRelease', sprintf('name %s', $release->getName()));
         }
         $old_one = $release_repository->getByReleaseNumber($release->getReleaseNumber());
         if ($old_one) {
             throw new EntityAlreadyExistsException('OpenStackRelease', sprintf('release_number %s', $release->getReleaseNumber()));
         }
         $res = $release_repository->add($release);
     });
     return $res;
 }
 public function __construct(IOpenStackRelease $release, IOpenStackApiVersion $version)
 {
     $message = sprintf('Release %s does not support Api Version %s', $release->getName(), $version->getVersion());
     parent::__construct($message);
 }
 /**
  * @param IOpenStackRelease $release
  * @return IOpenStackRelease
  */
 public function cloneRelease(IOpenStackRelease $release)
 {
     return $this->tx_manager->transaction(function () use($release) {
         $clone = OpenStackRelease::create();
         $index = '';
         $idx = 0;
         do {
             $proposed_name = $release->Name . '-CLONE' . $index;
             ++$idx;
             $index = '-' . $idx;
         } while (intval(OpenStackRelease::get()->filter('Name', $proposed_name)->count()) > 0);
         $clone->Name = $proposed_name;
         $clone->Status = 'Future';
         $clone->write();
         //components
         foreach ($release->OpenStackComponents() as $component) {
             $clone->OpenStackComponents()->add($component);
         }
         //supported apis
         foreach ($release->SupportedApiVersions() as $api) {
             $new_api = OpenStackReleaseSupportedApiVersion::create();
             $new_api->OpenStackComponentID = $api->OpenStackComponentID;
             $new_api->ApiVersionID = $api->ApiVersionID;
             $new_api->ReleaseVersion = $api->ReleaseVersion;
             $new_api->ReleaseID = $clone->ID;
             $new_api->write();
         }
         //sample configurations
         foreach ($release->SampleConfigurationTypes() as $config_type) {
             $new_config_type = OpenStackSampleConfigurationType::create();
             $new_config_type->Type = $config_type->Type;
             $new_config_type->Order = $config_type->Order;
             $new_config_type->IsDefault = $config_type->IsDefault;
             $new_config_type->write();
             foreach ($config_type->SampleConfigurations() as $sample) {
                 $new_sample = OpenStackSampleConfig::create();
                 $new_sample->Title = $sample->Title;
                 $new_sample->Summary = $sample->Summary;
                 $new_sample->Description = $sample->Description;
                 $new_sample->IsDefault = $sample->IsDefault;
                 $new_sample->Order = $sample->Order;
                 $new_sample->CuratorID = $sample->CuratorID;
                 $new_sample->ReleaseID = $clone->ID;
                 $new_sample->write();
                 foreach ($sample->RelatedNotes() as $note) {
                     $new_note = OpenStackSampleConfigRelatedNote::create();
                     $new_note->Title = $note->Title;
                     $new_note->Link = $note->Link;
                     $new_note->Order = $note->Order;
                     $new_note->write();
                     $new_sample->RelatedNotes()->add($new_note);
                 }
                 foreach ($sample->OpenStackComponents() as $sample_comp) {
                     $new_sample->OpenStackComponents()->add($sample_comp, array('Order' => $sample_comp->Order));
                 }
                 $new_config_type->SampleConfigurations()->add($new_sample);
             }
             $clone->SampleConfigurationTypes()->add($new_config_type);
         }
         return $clone;
     });
 }
 public function __construct(IOpenStackRelease $release, IOpenStackComponent $component)
 {
     $message = sprintf('Release %s does not support Component %s', $release->getName(), $component->getCodeName());
     parent::__construct($message);
 }
 public static function convertReleaseToArray(IOpenStackRelease $release)
 {
     $res = array();
     $res['id'] = $release->getIdentifier();
     $res['name'] = $release->getName();
     $res['release_number'] = $release->getReleaseNumber();
     $res['release_date'] = $release->getReleaseDate();
     $res['release_notes_url'] = $release->getReleaseNotesUrl();
     return $res;
 }