/** * @param $formData * @param string $entryPoint * @return bool */ function tryAddRuleSubmit($formData, $entryPoint = 'internal') { $fromport = $formData['fromport']; $toport = $formData['toport']; $protocol = $formData['protocol']; $range = $formData['range']; $group = $formData['group']; $groupid = $formData['groupid']; $sourcegroupid = ''; if ($group) { $securityGroups = $this->userNova->getSecurityGroups(); foreach ($securityGroups as $securityGroup) { if ($group === $securityGroup->getGroupName()) { $sourcegroupid = $securityGroup->getGroupId(); } } } $success = $this->userNova->addSecurityGroupRule($groupid, $fromport, $toport, $protocol, $range, $sourcegroupid); if ($success) { $this->getOutput()->addWikiMsg('openstackmanager-addedrule'); } else { $this->getOutput()->addWikiMsg('openstackmanager-addrulefailed'); } $out = '<br />'; $out .= Linker::link($this->getPageTitle(), $this->msg('openstackmanager-backsecuritygrouplist')->escaped()); $this->getOutput()->addHTML($out); return true; }
/** * @param $formData * @param string $entryPoint * @return bool */ function tryCreateSubmit($formData, $entryPoint = 'internal') { global $wgOpenStackManagerDefaultSecurityGroupRules; $success = OpenStackNovaProject::createProject($formData['projectname']); if (!$success) { $this->getOutput()->addWikiMsg('openstackmanager-createprojectfailed'); return false; } $project = OpenStackNovaProject::getProjectByName($formData['projectname']); $username = $this->userLDAP->getUsername(); $project->addMember($username); $members = explode(',', $formData['member']); foreach ($members as $member) { $project->addMember($member); } $roles = $project->getRoles(); foreach ($roles as $role) { if (in_array($role->getRoleName(), $formData['roles'])) { foreach ($members as $member) { $role->addMember($member); } } // We also need to ensure the project creator is in all roles $role->addMember($username); } # Change the connection to reference this project $this->userNova->setProject($formData['projectname']); $regions = $this->userNova->getRegions('compute'); foreach ($regions as $region) { $this->userNova->setRegion($region); $securityGroups = $this->userNova->getSecurityGroups(); $groupid = ''; foreach ($securityGroups as $securityGroup) { if ($securityGroup->getGroupName() === 'default') { $groupid = $securityGroup->getGroupId(); } } if (!$groupid) { continue; } foreach ($wgOpenStackManagerDefaultSecurityGroupRules as $rule) { $fromport = ''; $toport = ''; $protocol = ''; $range = ''; $sourcegroupid = ''; if (array_key_exists('fromport', $rule)) { $fromport = $rule['fromport']; } if (array_key_exists('toport', $rule)) { $toport = $rule['toport']; } if (array_key_exists('protocol', $rule)) { $protocol = $rule['protocol']; } if (array_key_exists('range', $rule)) { $range = $rule['range']; } if (array_key_exists('group', $rule)) { foreach ($securityGroups as $securityGroup) { if ($rule['group'] === $securityGroup->getGroupName()) { $sourcegroupid = $securityGroup->getGroupId(); } } } $this->userNova->addSecurityGroupRule($groupid, $fromport, $toport, $protocol, $range, $sourcegroupid); } } $project->setVolumeSettings(array('home', 'project')); $project->editArticle(); $this->getOutput()->addWikiMsg('openstackmanager-createdproject'); $out = '<br />'; $out .= Linker::link($this->getPageTitle(), $this->msg('openstackmanager-addadditionalproject')->escaped()); $this->getOutput()->addHTML($out); return true; }