Exemplo n.º 1
0
 /**
  * List an organization's sites
  *
  * ## OPTIONS
  *
  * <add|remove|list>
  * : subfunction to run
  *
  * [--org=<id|name>]
  * : Organization UUID or name
  *
  * [--tag=<tag>]
  * : Tag name to filter sites list by
  *
  * [--site=<site>]
  * : Site to add to or remove from organization
  *
  * @subcommand sites
  */
 public function sites($args, $assoc_args)
 {
     $action = array_shift($args);
     $org_id = Input::orgid($assoc_args, 'org', null, array('allow_none' => false));
     $orgs = new UserOrganizationMemberships();
     $org = $orgs->get($org_id);
     $org_info = $org->get('organization');
     $memberships = $org->site_memberships->all();
     switch ($action) {
         case 'add':
             if (isset($assoc_args['site'])) {
                 if ($this->siteIsMember($memberships, $assoc_args['site'])) {
                     $this->failure('{site} is already a member of {org}', array('site' => $assoc_args['site'], 'org' => $org_info->profile->name));
                 } else {
                     $site = $this->sites->get($assoc_args['site']);
                 }
             } else {
                 $site = $this->sites->get(Input::menu($this->getNonmemberSiteList($memberships), null, 'Choose site'));
             }
             Terminus::confirm('Are you sure you want to add %s to %s ?', array($site->get('name'), $org_info->profile->name));
             $workflow = $org->site_memberships->addMember($site);
             $workflow->wait();
             $this->workflowOutput($workflow);
             break;
         case 'remove':
             if (isset($assoc_args['site'])) {
                 if (!$this->siteIsMember($memberships, $assoc_args['site'])) {
                     $this->failure('{site} is not a member of {org}', array('site' => $assoc_args['site'], 'org' => $org_info->profile->name));
                 } else {
                     $site = $this->sites->get($assoc_args['site']);
                 }
             } else {
                 $site = $this->sites->get(Input::menu($this->getMemberSiteList($memberships), null, 'Choose site'));
             }
             $member = $org->site_memberships->get($site->get('id'));
             Terminus::confirm('Are you sure you want to remove %s from %s ?', array($site->get('name'), $org_info->profile->name));
             $workflow = $member->removeMember();
             $workflow->wait();
             $this->workflowOutput($workflow);
             break;
         case 'list':
         default:
             foreach ($memberships as $membership) {
                 if (isset($assoc_args['tag']) && !in_array($assoc_args['tag'], $membership->get('tags'))) {
                     continue;
                 }
                 $site = $membership->get('site');
                 $data_array = array('name' => null, 'id' => null, 'service_level' => null, 'framework' => null, 'created' => null, 'tags' => $membership->get('tags'));
                 foreach ($data_array as $key => $value) {
                     if ($value == null && isset($site->{$key})) {
                         $data_array[$key] = $site->{$key};
                     }
                 }
                 $data_array['created'] = date('Y-m-dTH:i:s', $data_array['created']);
                 $data[] = $data_array;
             }
             $this->output()->outputRecordList($data);
             break;
     }
 }
Exemplo n.º 2
0
 /**
  * List an organization's sites
  *
  * ## OPTIONS
  *
  * [--org=<id>]
  * : Organization id
  *
  * [--tag=<tag>]
  * : Tag name to filter sites list by
  *
  * [--add=<site>]
  * : Site to add to organization
  *
  * [--remove=<site>]
  * : Site to remove from organization
  *
  * @subcommand sites
  *
  */
 public function sites($args, $assoc_args)
 {
     $org_id = Input::orgid($assoc_args, 'org', null, array('allow_none' => false));
     $org = new Organization($org_id);
     if (isset($assoc_args['add'])) {
         $add = SiteFactory::instance(Input::sitename($assoc_args, 'add'));
         Terminus::confirm("Are you sure you want to add %s to %s ?", $assoc_args, array($add->getName(), $org->name));
         $org->addSite($add);
         Terminus::success("Added site!");
         return true;
     }
     if (isset($assoc_args['remove'])) {
         $remove = SiteFactory::instance(Input::sitename($assoc_args, 'remove'));
         Terminus::confirm("Are you sure you want to remove %s to %s ?", $assoc_args, array($remove->getName(), $org->name));
         $org->removeSite($remove);
         Terminus::success("Removed site!");
         return true;
     }
     $org->siteMemberships->fetch();
     $memberships = $org->siteMemberships->all();
     foreach ($memberships as $membership) {
         if (isset($assoc_args['tag']) && !in_array($assoc_args['tag'], $membership->get('tags'))) {
             continue;
         }
         $site = $membership->get('site');
         $data[] = array('name' => $site->name, 'id' => $site->id, 'service_level' => $site->service_level, 'framework' => $site->framework, 'created' => date('Y-m-d H:i:s', $site->created), 'tags' => $membership->get('tags'));
     }
     $this->handleDisplay($data);
 }
Exemplo n.º 3
0
 /**
  * @vcr input_helper_org_helpers
  */
 function testOrgHelpers()
 {
     $orglist = Input::orglist();
     $this->assertInternalType('array', $orglist);
     $this->assertArrayHasKey('-', $orglist);
     $this->assertArrayHasKey('d59379eb-0c23-429c-a7bc-ff51e0a960c2', $orglist);
     // test normal usage
     $args = array('org' => 'Terminus Testing');
     $org = Input::orgname($args, 'org');
     $this->assertEquals('Terminus Testing', $org);
     // test case where an orgid is sent and a name should be returned
     $args = array('org' => 'd59379eb-0c23-429c-a7bc-ff51e0a960c2');
     $org = Input::orgname($args, 'org');
     $this->assertEquals('Terminus Testing', $org);
     // test case where an orgid is sent and a name should be returned
     $args = array('org' => 'd59379eb-0c23-429c-a7bc-ff51e0a960c2');
     $org = Input::orgid($args, 'org');
     $this->assertEquals('d59379eb-0c23-429c-a7bc-ff51e0a960c2', $org);
     $args = array('org' => 'Terminus Testing');
     $org = Input::orgid($args, 'org');
     $this->assertEquals('d59379eb-0c23-429c-a7bc-ff51e0a960c2', $org);
 }
Exemplo n.º 4
0
 /**
  * List an organization's sites
  *
  * ## OPTIONS
  *
  * [--org=<id|name>]
  * : Organization UUID or name
  *
  * [--tag=<tag>]
  * : Tag name to filter sites list by
  *
  * [--add=<site>]
  * : Site to add to organization
  *
  * [--remove=<site>]
  * : Site to remove from organization
  *
  * @subcommand sites
  *
  */
 public function sites($args, $assoc_args)
 {
     $org_id = Input::orgid($assoc_args, 'org', null, array('allow_none' => false));
     $orgs = new UserOrganizationMemberships();
     $org = $orgs->get($org_id);
     $memberships = $org->site_memberships;
     if (isset($assoc_args['add'])) {
         $site = $this->sites->get(Input::sitename($assoc_args, 'add'));
         Terminus::confirm('Are you sure you want to add %s to %s ?', $assoc_args, array($site->get('name'), $org->get('name')));
         $memberships->addMember($site);
         Terminus::success('Added site!');
         return true;
     }
     if (isset($assoc_args['remove'])) {
         $site_id = $assoc_args['remove'];
         $member = $memberships->get($assoc_args['remove']);
         $site = $member->get('site');
         Terminus::confirm('Are you sure you want to remove %s from %s ?', $assoc_args, array($site->name, $org->get('name')));
         $member->removeMember();
         Terminus::success('Removed site!');
         return true;
     }
     $memberships = $org->getSites();
     foreach ($memberships as $membership) {
         if (isset($assoc_args['tag']) && !in_array($assoc_args['tag'], $membership->get('tags'))) {
             continue;
         }
         $site = $membership->get('site');
         $data_array = array('name' => null, 'id' => null, 'service_level' => null, 'framework' => null, 'created' => null, 'tags' => $membership->get('tags'));
         foreach ($data_array as $key => $value) {
             if ($value == null && isset($site->{$key})) {
                 $data_array[$key] = $site->{$key};
             }
         }
         $data_array['created'] = date('Y-m-dTH:i:s', $data_array['created']);
         $data[] = $data_array;
     }
     $this->outputter->outputRecordList($data);
 }
Exemplo n.º 5
0
 /**
  * Manage site organization tags
  *
  * ## OPTIONS
  *
  * <add|remove|list>
  * : subfunction to run
  *
  * [--site=<site>]
  * : Site's name
  *
  * [--org=<name|id>]
  * : Organization to apply tag with
  *
  * [--tag=<tag>]
  * : Tag to add or remove
  *
  * @subcommand tags
  */
 public function tags($args, $assoc_args)
 {
     $action = array_shift($args);
     $site = $this->sites->get(Input::sitename($assoc_args));
     $org = Input::orgid($assoc_args, 'org');
     if ($site->organizationIsMember($org)) {
         switch ($action) {
             case 'add':
                 $tag = Input::string($assoc_args, 'tag', 'Enter a tag to add');
                 $response = $site->addTag($tag, $org);
                 $context = array('tag' => $tag, 'site' => $site->get('name'));
                 if ($response['status_code'] == 200) {
                     $this->log()->info('Tag "{tag}" has been added to {site}', $context);
                 } else {
                     $this->failure('Tag "{tag}" could not be added to {site}', $context);
                 }
                 break;
             case 'remove':
                 $tags = $site->getTags($org);
                 if (count($tags) === 0) {
                     $message = 'This organization does not have any tags associated';
                     $message .= ' with this site.';
                     $this->failure($message);
                 } elseif (!isset($assoc_args['tag']) || !in_array($assoc_args['tag'], $tags)) {
                     $tag = $tags[Input::menu($tags, null, 'Select a tag to delete')];
                 } else {
                     $tag = $assoc_args['tag'];
                 }
                 $response = $site->removeTag($tag, $org);
                 $context = array('tag' => $tag, 'site' => $site->get('name'));
                 if ($response['status_code'] == 200) {
                     $this->log()->info('Tag "{tag}" has been removed from {site}', $context);
                 } else {
                     $this->failure('Tag "{tag}" could not be removed from {site}', $context);
                 }
                 break;
             case 'list':
             default:
                 $tags = $site->getTags($org);
                 $this->output()->outputRecord(compact('tags'));
                 break;
         }
     } else {
         $message = '{site} is not a member of an organization,';
         $message .= ' which is necessary to associate a tag with a site.';
         $this->failure($message, array('site' => $site->get('name')));
     }
 }
Exemplo n.º 6
0
 /**
  * Create a new site
  *
  * ## OPTIONS
  *
  * [--product=<productid>]
  * : Specify the product to create
  *
  * [--name=<name>]
  * : (deprecated) use --site instead
  *
  * [--site=<site>]
  * : Name of the site to create (machine-readable)
  *
  * [--label=<label>]
  * : Label for the site
  *
  * [--org=<org>]
  * : UUID of organization to add this site to; or "None"
  *
  * [--import=<url>]
  * : A url to import a valid archive from
  */
 public function create($args, $assoc_args)
 {
     $sites = SiteFactory::instance();
     // setup data
     $data = array();
     $data['label'] = Input::string($assoc_args, 'label', "Human readable label for the site");
     $slug = Utils\sanitize_name($data['label']);
     // this ugly logic is temporarily if to handle the deprecated --name flag and preserve backward compatibility. it can be removed in the next major release.
     if (array_key_exists('name', $assoc_args)) {
         $data['site_name'] = $assoc_args['name'];
     } elseif (array_key_exists('site', $assoc_args)) {
         $data['site_name'] = $assoc_args['site'];
     } else {
         $data['site_name'] = Input::string($assoc_args, 'site', "Machine name of the site; used as part of the default URL [ if left blank will be {$slug}]", $slug);
     }
     if ($orgid = Input::orgid($assoc_args, 'org', false)) {
         $data['organization_id'] = $orgid;
     }
     if (!isset($assoc_args['import'])) {
         $product = Input::product($assoc_args, 'product');
         $data['deploy_product'] = array('product_id' => $product['id']);
         Terminus::line(sprintf("Creating new %s installation ... ", $product['longname']));
     }
     $params = array('body' => json_encode($data), 'headers' => array('Content-type' => 'application/json'));
     // run the workflow
     $workflow = Workflow::createWorkflow('create_site', 'users', new User());
     $workflow->setMethod('POST');
     $workflow->setParams($data);
     $workflow->start();
     $workflow->refresh();
     $details = $workflow->status();
     $site_id = $details->final_task->site_id;
     if ($details->result !== 'failed' and $details->result !== 'aborted') {
         Terminus\Loggers\Regular::coloredOutput('%G' . vsprintf('New "site" %s now building with "UUID" %s', array($data['site_name'], $site_id)));
     }
     $workflow->wait();
     Terminus::success("Pow! You created a new site!");
     $this->cache->flush(null, 'session');
     if (isset($assoc_args['import'])) {
         Terminus::launch_self('site', array('import'), array('url' => $assoc_args['import'], 'site' => $data['site_name'], 'element' => 'all', 'nocache' => True));
     }
     return true;
 }
Exemplo n.º 7
0
 /**
  * List site organizations
  *
  * ## OPTIONS
  *
  * <list|add|remove>
  * : subfunction to run
  *
  * [--site=<site>]
  * : Site's name
  *
  * [--org=<org>]
  * : Organization name
  *
  * [--role=<role>]
  * : Max role for organization on this site ... default "team_member"
  *
  */
 public function organizations($args, $assoc_args)
 {
     $action = array_shift($args);
     $site = SiteFactory::instance(Input::site($assoc_args));
     $data = array();
     switch ($action) {
         case 'add':
             $role = Input::optional('role', $assoc_args, 'team_member');
             $org = Input::orgname($assoc_args, 'org');
             $workflow = $site->addMembership('organization', $org, $role);
             $workflow->wait();
             Terminus::success("Organization successfully added");
             $orgs = $site->memberships();
             break;
         case 'remove':
             $org = Input::orgid($assoc_args, 'org');
             $workflow = $site->removeMembership('organization', $org);
             $workflow->wait();
             Terminus::success("Organization successfully removed");
             $orgs = $site->memberships();
             break;
         case 'default':
         case 'list':
             $orgs = $site->memberships();
             break;
     }
     if (empty($orgs)) {
         Terminus::error("No organizations");
     }
     // format the data
     foreach ($orgs as $org) {
         $data[] = array('label' => "{$org->organization->profile->name}", 'name' => $org->organization->profile->machine_name, 'role' => $org->role, 'id' => $org->organization_id);
     }
     $this->handleDisplay($data);
 }
Exemplo n.º 8
0
 /**
  * Update alls dev sites with an available upstream update.
  *
  * ## OPTIONS
  *
  * [--report]
  * : If set output will contain list of sites and whether they are up-to-date
  *
  * [--upstream=<upstream>]
  * : Specify a specific upstream to check for updating.
  *
  * [--no-updatedb]
  * : Use flag to skip running update.php after the update has applied
  *
  * [--xoption=<theirs|ours>]
  * : Corresponds to git's -X option, set to 'theirs' by default -- https://www.kernel.org/pub/software/scm/git/docs/git-merge.html
  *
  * [--tag=<tag>]
  * : Tag to filter by
  *
  * [--org=<id>]
  * : Only necessary if using --tag. Organization which has tagged the site thusly
  *
  * [--cached]
  * : Set to prevent rebuilding of sites cache
  *
  * @subcommand mass-update
  */
 public function mass_update($args, $assoc_args)
 {
     // Ensure the sitesCache is up to date
     if (!isset($assoc_args['cached'])) {
         $this->sites->rebuildCache();
     }
     $upstream = Input::optional('upstream', $assoc_args, false);
     $data = array();
     $report = Input::optional('report', $assoc_args, false);
     $confirm = Input::optional('confirm', $assoc_args, false);
     $tag = Input::optional('tag', $assoc_args, false);
     $org = '';
     if ($tag) {
         $org = Input::orgid($assoc_args, 'org');
     }
     $sites = $this->sites->filterAllByTag($tag, $org);
     // Start status messages.
     if ($upstream) {
         $this->log()->info('Looking for sites using ' . $upstream . '.');
     }
     foreach ($sites as $site) {
         $site->fetch();
         $updates = $site->getUpstreamUpdates();
         if (!isset($updates->behind)) {
             // No updates, go back to start.
             continue;
         }
         // Check for upstream argument and site upstream URL match.
         $siteUpstream = $site->info('upstream');
         if ($upstream and isset($siteUpstream->url)) {
             if ($siteUpstream->url != $upstream) {
                 // Uptream doesn't match, go back to start.
                 continue;
             }
         }
         if ($updates->behind > 0) {
             $data[$site->get('name')] = array('site' => $site->get('name'), 'status' => "Needs update");
             $env = $site->environments->get('dev');
             if ($env->getConnectionMode() == 'sftp') {
                 $this->log()->warning('{site} has available updates, but is in SFTP mode. Switch to Git mode to apply updates.', array('site' => $site->get('name')));
                 $data[$site->get('name')] = array('site' => $site->get('name'), 'status' => "Needs update - switch to Git mode");
                 continue;
             }
             $updatedb = !Input::optional($assoc_args, 'updatedb', false);
             $xoption = Input::optional($assoc_args, 'xoption', 'theirs');
             if (!$report) {
                 $confirmed = Input::yesno("Apply upstream updates to %s ( run update.php:%s, xoption:%s ) ", array($site->get('name'), var_export($updatedb, 1), var_export($xoption, 1)));
                 if (!$confirmed) {
                     continue;
                 }
                 // User says No, go back to start.
                 // Backup the DB so the client can restore if something goes wrong.
                 $this->log()->info('Backing up ' . $site->get('name') . '.');
                 $backup = $env->createBackup(array('element' => 'all'));
                 // Only continue if the backup was successful.
                 if ($backup) {
                     $this->log()->info("Backup of " . $site->get('name') . " created.");
                     $this->log()->info('Updating ' . $site->get('name') . '.');
                     // Apply the update, failure here would trigger a guzzle exception so no need to validate success.
                     $response = $site->applyUpstreamUpdates($env->get('id'), $updatedb, $xoption);
                     $data[$site->get('name')]['status'] = 'Updated';
                     $this->log()->info($site->get('name') . ' is updated.');
                 } else {
                     $data[$site->get('name')]['status'] = 'Backup failed';
                     $this->log()->error('There was a problem backing up ' . $site->get('name') . '. Update aborted.');
                 }
             }
         } else {
             if (isset($assoc_args['report'])) {
                 $data[$site->get('name')] = array('site' => $site->get('name'), 'status' => "Up to date");
             }
         }
     }
     if (!empty($data)) {
         sort($data);
         $this->output()->outputRecordList($data);
     } else {
         $this->log()->info('No sites in need of updating.');
     }
 }
Exemplo n.º 9
0
 /**
  * Create a new site
  *
  * ## OPTIONS
  *
  * [--site=<site>]
  * : Name of the site to create (machine-readable)
  *
  * [--name=<name>]
  * : (deprecated) use --site instead
  *
  * [--label=<label>]
  * : Label for the site
  *
  * [--product=<productid>]
  * : Specify the upstream product to use
  *
  * [--import=<url>]
  * : A url to import a valid archive
  *
  * [--org=<org>]
  * : UUID of organization into which to add this site
  *
  */
 public function create($args, $assoc_args)
 {
     $options = array();
     $options['label'] = Input::string($assoc_args, 'label', "Human readable label for the site");
     $suggested_name = Utils\sanitize_name($options['label']);
     if (array_key_exists('name', $assoc_args)) {
         // Deprecated but kept for backwards compatibility
         $options['name'] = $assoc_args['name'];
     } elseif (array_key_exists('site', $assoc_args)) {
         $options['name'] = $assoc_args['site'];
     } else {
         $options['name'] = Input::string($assoc_args, 'site', "Machine name of the site; used as part of the default URL (if left blank will be {$suggested_name})", $suggested_name);
     }
     if ($org_id = Input::orgid($assoc_args, 'org', false)) {
         $options['organization_id'] = $org_id;
     }
     if (!isset($assoc_args['import'])) {
         $product = Input::product($assoc_args, 'product');
         $options['product_id'] = $product['id'];
         Terminus::line(sprintf("Creating new %s installation ... ", $product['longname']));
     }
     $workflow = Site::create($options);
     $workflow->wait();
     Terminus::success("Pow! You created a new site!");
     // Add Site to SitesCache
     $site_id = $workflow->attributes->final_task->site_id;
     $site = new Site($site_id);
     $site->fetch();
     $cache_membership = array('id' => $site_id, 'name' => $options['name'], 'service_level' => $site->attributes->service_level, 'framework' => $site->attributes->framework);
     if ($org_id) {
         $org = new Organization($org_id);
         $cache_membership['membership'] = array('id' => $org_id, 'name' => $org->profile->name, 'type' => 'organization');
     } else {
         $user_id = Session::getValue('user_uuid');
         $cache_membership['membership'] = array('id' => $user_id, 'name' => 'Team', 'type' => 'team');
     }
     $sites_cache = new Terminus\SitesCache();
     $sites_cache->add($cache_membership);
     if (isset($assoc_args['import'])) {
         sleep(10);
         //To stop erroenous site-DNE errors
         Terminus::launch_self('site', array('import'), array('url' => $assoc_args['import'], 'site' => $options['name'], 'element' => 'all'));
     } else {
         Terminus::launch_self('site', array('info'), array('site' => $options['name']));
     }
     return true;
 }
Exemplo n.º 10
0
 /**
  * Manage site organization tags
  *
  * ## OPTIONS
  *
  * <add|remove>
  * : subfunction to run
  *
  * [--site=<site>]
  * : Site's name
  *
  * [--org=<name|id>]
  * : Organization to apply tag with
  *
  * [--tag=<tag>]
  * : Tag to add or remove
  *
  * @subcommand tags
  */
 public function tags($args, $assoc_args)
 {
     $action = array_shift($args);
     $site = SiteFactory::instance(Input::sitename($assoc_args));
     $org = Input::orgid($assoc_args, 'org');
     if ($site->organizationIsMember($org)) {
         $data = array();
         switch ($action) {
             case 'add':
                 $verb = 'added to';
                 $tag = Input::string($assoc_args, 'tag', 'Enter a tag to add');
                 $response = $site->addTag($tag, $org);
                 break;
             case 'remove':
                 $verb = 'removed from';
                 $tags = $site->getTags($org);
                 if (count($tags) === 0) {
                     Terminus::error('This organization does not have any tags' . ' associated with this site.');
                 } elseif (!isset($assoc_args['tag']) || !in_array($assoc_args['tag'], $tags)) {
                     $tag = $tags[Input::menu($tags, null, 'Select a tag to delete')];
                 } else {
                     $tag = $assoc_args['tag'];
                 }
                 $response = $site->removeTag($tag, $org);
                 break;
         }
         $message = 'Tag %s %s %s %s';
         $messages = array('success' => sprintf($message, '"' . $tag . '"', 'has been', $verb, $site->getName()), 'failure' => sprintf($message, '"' . $tag . '"', 'could not be', $verb, $site->getName()));
         $this->responseOutput($response, $messages);
     } else {
         Terminus::error($site->getName() . ' is not a member of an organization, ' . 'which is necessary to associate a tag with a site.');
     }
 }
Exemplo n.º 11
0
 /**
  * List an organization's team members
  *
  * ## OPTIONS
  *
  * [--org=<id|name>]
  * : Organization UUID or name
  *
  * @subcommand team
  */
 public function team($args, $assoc_args)
 {
     $org_id = Input::orgid($assoc_args, 'org', null, array('allow_none' => false));
     $orgs = new UserOrganizationMemberships();
     $org = $orgs->get($org_id);
     if (is_null($org)) {
         $message = 'The organization {org} is either invalid or you haven\'t';
         $message .= ' permission sufficient to access its data.';
         $this->failure($message, array('org' => $assoc_args['org']));
     }
     $org_info = $org->get('organization');
     $org_model = new Organization($org_info);
     $memberships = $org->user_memberships->all();
     $data = array();
     foreach ($memberships as $membership) {
         $member = $membership->get('user');
         $first_name = $last_name = null;
         if (isset($member->profile->firstname)) {
             $first_name = $member->profile->firstname;
         }
         if (isset($member->profile->lastname)) {
             $last_name = $member->profile->lastname;
         }
         $data[$member->id] = array('first' => $first_name, 'last' => $last_name, 'email' => $member->email, 'uuid' => $member->id);
     }
     $this->output()->outputRecordList($data);
     return $data;
 }
Exemplo n.º 12
0
 /**
  * Create a new site
  *
  * ## OPTIONS
  *
  * [--site=<site>]
  * : Name of the site to create (machine-readable)
  *
  * [--name=<name>]
  * : (deprecated) use --site instead
  *
  * [--label=<label>]
  * : Label for the site
  *
  * [--upstream=<upstreamid>]
  * : Specify the upstream upstream to use
  *
  * [--import=<url>]
  * : A url to import a valid archive
  *
  * [--org=<id>]
  * : UUID of organization into which to add this site
  *
  */
 public function create($args, $assoc_args)
 {
     $options = array();
     $options['label'] = Input::string($assoc_args, 'label', "Human-readable label for the site");
     $suggested_name = Utils\sanitize_name($options['label']);
     if (array_key_exists('name', $assoc_args)) {
         // Deprecated but kept for backwards compatibility
         $options['name'] = $assoc_args['name'];
     } elseif (array_key_exists('site', $assoc_args)) {
         $options['name'] = $assoc_args['site'];
     } elseif (isset($_SERVER['TERMINUS_SITE'])) {
         $options['name'] = $_SERVER['TERMINUS_SITE'];
     } else {
         $options['name'] = Input::string($assoc_args, 'site', "Machine name of the site; used as part of the default URL (if left blank will be {$suggested_name})", $suggested_name);
     }
     if (isset($assoc_args['org'])) {
         $options['organization_id'] = Input::orgid($assoc_args, 'org', false);
     }
     if (!isset($assoc_args['import'])) {
         $upstream = Input::upstream($assoc_args, 'upstream');
         $options['upstream_id'] = $upstream->get('id');
         Terminus::line(sprintf("Creating new %s installation ... ", $upstream->get('longname')));
     }
     $workflow = $this->sites->addSite($options);
     $workflow->wait();
     $this->workflowOutput($workflow);
     // Add Site to SitesCache
     $final_task = $workflow->get('final_task');
     $this->sites->addSiteToCache($final_task->site_id);
     if (isset($assoc_args['import'])) {
         sleep(10);
         //To stop erroenous site-DNE errors
         Terminus::launch_self('site', array('import'), array('url' => $assoc_args['import'], 'site' => $options['name'], 'element' => 'all'));
     } else {
         Terminus::launch_self('site', array('info'), array('site' => $options['name']));
     }
     return true;
 }
Exemplo n.º 13
0
 /**
  * Create a new site
  *
  * ## OPTIONS
  *
  * [--site=<site>]
  * : Name of the site to create (machine-readable)
  *
  * [--name=<name>]
  * : (deprecated) use --site instead
  *
  * [--label=<label>]
  * : Label for the site
  *
  * [--product=<productid>]
  * : Specify the upstream product to use
  *
  * [--import=<url>]
  * : A url to import a valid archive
  *
  * [--org=<org>]
  * : UUID of organization into which to add this site
  *
  */
 public function create($args, $assoc_args)
 {
     $options = array();
     $options['label'] = Input::string($assoc_args, 'label', "Human readable label for the site");
     $suggested_name = Utils\sanitize_name($options['label']);
     if (array_key_exists('name', $assoc_args)) {
         // Deprecated but kept for backwards compatibility
         $options['name'] = $assoc_args['name'];
     } elseif (array_key_exists('site', $assoc_args)) {
         $options['name'] = $assoc_args['site'];
     } else {
         $options['name'] = Input::string($assoc_args, 'site', "Machine name of the site; used as part of the default URL (if left blank will be {$suggested_name})", $suggested_name);
     }
     if ($org_id = Input::orgid($assoc_args, 'org', false)) {
         $options['organization_id'] = $org_id;
     }
     if (!isset($assoc_args['import'])) {
         $product = Input::product($assoc_args, 'product');
         $options['product_id'] = $product['id'];
         Terminus::line(sprintf("Creating new %s installation ... ", $product['longname']));
     }
     $workflow = Site::create($options);
     $workflow->wait();
     Terminus::success("Pow! You created a new site!");
     // Add Name->ID mapping to SitesCache
     $site_id = $workflow->status()->final_task->site_id;
     $sites_cache = new Terminus\SitesCache();
     $sites_cache->add(array($options['name'] => $site_id));
     if (isset($assoc_args['import'])) {
         sleep(10);
         //To stop erroenous site-DNE errors
         Terminus::launch_self('site', array('import'), array('url' => $assoc_args['import'], 'site' => $options['name'], 'element' => 'all'));
     } else {
         Terminus::launch_self('site', array('info'), array('site' => $options['name']));
     }
     return true;
 }
Exemplo n.º 14
0
 /**
  * A helper function for getting/prompting for the site create options.
  *
  * @param [array] $assoc_args Arguments from command
  * @return [array]
  */
 static function getSiteCreateOptions($assoc_args)
 {
     $options = array();
     $options['label'] = Input::string($assoc_args, 'label', 'Human-readable label for the site');
     $suggested_name = Utils\sanitizeName($options['label']);
     if (array_key_exists('name', $assoc_args)) {
         // Deprecated but kept for backwards compatibility
         $options['name'] = $assoc_args['name'];
     } elseif (array_key_exists('site', $assoc_args)) {
         $options['name'] = $assoc_args['site'];
     } elseif (isset($_SERVER['TERMINUS_SITE'])) {
         $options['name'] = $_SERVER['TERMINUS_SITE'];
     } else {
         $options['name'] = Input::string($assoc_args, 'site', "Machine name of the site; used as part of the default URL (if left blank will be {$suggested_name})", $suggested_name);
     }
     if (isset($assoc_args['org'])) {
         $options['organization_id'] = Input::orgid($assoc_args, 'org', false);
     }
     return $options;
 }