public static function deleteArticle( $titletext ) {
		if ( ! OpenStackNovaArticle::canCreatePages() ) {
			return;
		}
		$title = Title::newFromText( $titletext, NS_NOVA_RESOURCE );
		$article = new Article( $title, 0 );
		$article->doDeleteArticle( '' );
	}
 public static function deleteArticle($titletext, $namespace = NS_NOVA_RESOURCE)
 {
     if (!OpenStackNovaArticle::canCreatePages()) {
         return;
     }
     $title = Title::newFromText($titletext, $namespace);
     $article = WikiPage::factory($title);
     $article->doDeleteArticle('');
 }
예제 #3
0
    /**
     * Adds or edits an article for this instance
     *
     * @return void
     */
    function editArticle()
    {
        global $wgOpenStackManagerNovaAdminKeys;
        if (!OpenStackNovaArticle::canCreatePages()) {
            return;
        }
        $format = <<<RESOURCEINFO
{{Nova Resource
|Resource Type=instance
|Instance Name=%s
|Reservation Id=%s
|Instance Id=%s
|Private IP=%s
|Public IP=%s
|Instance State=%s
|Instance Host=%s
|Instance Type=%s
|RAM Size=%s
|Number of CPUs=%s
|Amount of Storage=%s
|Image Id=%s
|Project=%s
|Availability Zone=%s
|Region=%s
|Security Group=%s
|Launch Time=%s
|FQDN=%s
|Puppet Class=%s
|Puppet Var=%s}}
RESOURCEINFO;
        $host = $this->getHost();
        $puppetinfo = $host->getPuppetConfiguration();
        if ($puppetinfo['puppetclass']) {
            $puppetclasses = implode(',', $puppetinfo['puppetclass']);
        } else {
            $puppetclasses = '';
        }
        $puppetvars = '';
        if ($puppetinfo['puppetvar']) {
            foreach ($puppetinfo['puppetvar'] as $key => $val) {
                # Let's not leak user's email addresses; we know this
                # will be set, since we are setting it.
                if ($key == 'instancecreator_email') {
                    continue;
                }
                $puppetvars .= $key . '=' . $val . ',';
            }
        }
        $adminNova = new OpenStackNovaController($wgOpenStackManagerNovaAdminKeys);
        $instanceType = $adminNova->getInstanceType($this->getInstanceType());
        $text = sprintf($format, $this->getInstanceName(), $this->getReservationId(), $this->getInstanceId(), $this->getInstancePrivateIP(), $this->getInstancePublicIP(), $this->getInstanceState(), $this->getInstanceHost(), $this->getInstanceType(), $instanceType->getMemorySize(), $instanceType->getNumberOfCPUs(), $instanceType->getStorageSize(), $this->getImageId(), $this->getOwner(), $this->getAvailabilityZone(), $this->getRegion(), implode(',', $this->getSecurityGroups()), $this->getLaunchTime(), $host->getFullyQualifiedHostName(), $puppetclasses, $puppetvars);
        OpenStackNovaArticle::editArticle($this->getInstanceId(), $text);
    }
예제 #4
0
    function editArticle()
    {
        global $wgOpenStackManagerCreateProjectSALPages;
        if (!OpenStackNovaArticle::canCreatePages()) {
            return;
        }
        $format = <<<RESOURCEINFO
{{Nova Resource
|Resource Type=project
|Project Name=%s
|Members=%s}}
__NOEDITSECTION__
RESOURCEINFO;
        $rawmembers = $this->getMembers();
        $members = array();
        foreach ($rawmembers as $member) {
            array_push($members, 'User:'******',', $members));
        OpenStackNovaArticle::editArticle($this->getProjectName(), $text);
        if ($wgOpenStackManagerCreateProjectSALPages) {
            $pagename = $this->getProjectName() . "/SAL";
            $id = Title::newFromText($pagename, NS_NOVA_RESOURCE)->getArticleId();
            $article = Article::newFromId($id);
            $content = '';
            if ($article) {
                $content = $article->getRawText();
            }
            $text = "{{SAL|Project Name=" . $this->getProjectName() . "}}";
            if (!strstr($content, $text)) {
                OpenStackNovaArticle::editArticle($pagename, $text);
            }
        }
    }
    /**
     * Adds or edits an article for this instance
     *
     * @param $userNova
     */
    function editArticle($userNova)
    {
        if (!OpenStackNovaArticle::canCreatePages()) {
            return;
        }
        $host = $this->getHost();
        // There might already be an autogenerated instance status on this page,
        // so set it aside in $instanceStatus.  We'll re-insert it at
        // the start of the new page.
        $instanceStatus = '';
        $oldtext = OpenStackNovaArticle::getText($host->getFullyQualifiedHostName());
        if ($oldtext) {
            $startFlag = '<!-- autostatus begin -->';
            $endFlag = '<!-- autostatus end -->';
            $statusStart = strpos($oldtext, $startFlag);
            if ($statusStart !== false) {
                $statusEnd = strpos($oldtext, $endFlag, $statusStart);
                if ($statusEnd !== false) {
                    $instanceStatus = substr($oldtext, $statusStart, $statusEnd - $statusStart + strlen($endFlag));
                }
            }
        }
        $format = <<<RESOURCEINFO
%s
{{Nova Resource
|Resource Type=instance
|Instance Name=%s
|Image Id=%s
|Project=%s
|Region=%s
|FQDN=%s
|Puppet Class=%s
|Puppet Var=%s}}
RESOURCEINFO;
        $puppetinfo = $host->getPuppetConfiguration();
        if ($puppetinfo['puppetclass']) {
            $puppetclasses = implode(',', $puppetinfo['puppetclass']);
        } else {
            $puppetclasses = '';
        }
        $puppetvars = '';
        if ($puppetinfo['puppetvar']) {
            foreach ($puppetinfo['puppetvar'] as $key => $val) {
                $puppetvars .= $key . '=' . $val . ',';
            }
        }
        $image = $userNova->getImage($this->getImageId());
        $text = sprintf($format, $instanceStatus, $this->getInstanceName(), $image->getImageName(), $this->getProject(), $this->getRegion(), $host->getFullyQualifiedHostName(), $puppetclasses, $puppetvars);
        OpenStackNovaArticle::editArticle($host->getFullyQualifiedHostName(), $text);
    }
    function editArticle()
    {
        global $wgOpenStackManagerCreateProjectSALPages, $wgOpenStackManagerProjectNamespace;
        if (!OpenStackNovaArticle::canCreatePages()) {
            return;
        }
        $format = <<<RESOURCEINFO
{{Nova Resource
|Resource Type=project
|Project Name=%s
|Admins=%s
|Members=%s}}
__NOEDITSECTION__
RESOURCEINFO;
        $rawmembers = $this->getMembers();
        $members = array();
        foreach ($rawmembers as $member) {
            $members[] = 'User:'******'User:'******',', $admins), implode(',', $members));
        OpenStackNovaArticle::editArticle($this->getProjectName(), $text, $wgOpenStackManagerProjectNamespace);
        if ($wgOpenStackManagerCreateProjectSALPages) {
            $pagename = $this->getProjectName() . "/SAL";
            $id = Title::newFromText($pagename, $wgOpenStackManagerProjectNamespace)->getArticleId();
            $article = Article::newFromId($id);
            $content = '';
            if ($article) {
                $content = $article->getRawText();
            }
            $text = "{{SAL|Project Name=" . $this->getProjectName() . "}}";
            if (!strstr($content, $text)) {
                OpenStackNovaArticle::editArticle($pagename, $text, $wgOpenStackManagerProjectNamespace);
            }
        }
    }