Package org.platformlayer.service.gitlab.ops

Source Code of org.platformlayer.service.gitlab.ops.GitlabServiceController

package org.platformlayer.service.gitlab.ops;

import java.io.File;
import java.io.IOException;
import java.util.Map;

import org.platformlayer.ops.Handler;
import org.platformlayer.ops.OpsContext;
import org.platformlayer.ops.OpsException;
import org.platformlayer.ops.instances.InstanceBuilder;
import org.platformlayer.ops.packages.PackageDependency;
import org.platformlayer.ops.templates.TemplateDataSource;
import org.platformlayer.ops.tree.OpsTreeBase;
import org.platformlayer.ops.users.PosixGroup;
import org.platformlayer.ops.users.PosixUser;
import org.platformlayer.service.gitlab.model.GitlabService;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

import com.google.common.base.Splitter;

public class GitlabServiceController extends OpsTreeBase implements TemplateDataSource {

  private static final Logger log = LoggerFactory.getLogger(GitlabServiceController.class);

  @Handler
  public void doOperation() throws OpsException, IOException {
  }

  @Override
  protected void addChildren() throws OpsException {
    GitlabService model = OpsContext.get().getInstance(GitlabService.class);

    InstanceBuilder instance = InstanceBuilder.build(model.dnsName, this, model.getTags());
    addChild(instance);

    instance.addChildren(PackageDependency
        .build(Splitter
            .on(" ")
            .split("sudo git-core wget curl gcc checkinstall libxml2-dev libxslt-dev sqlite3 libsqlite3-dev libcurl4-openssl-dev libreadline-dev libc6-dev libssl-dev libmysql++-dev make build-essential zlib1g-dev libicu-dev redis-server openssh-server git-core python-dev python-pip sendmail")));

    {
      PosixGroup group = injected(PosixGroup.class);
      group.groupName = "git";
      instance.addChild(group);
    }

    {
      PosixUser user = injected(PosixUser.class);
      user.userName = "git";
      user.primaryGroup = "git";
      instance.addChild(user);
    }

    {
      PosixUser user = injected(PosixUser.class);
      user.userName = "gitlab";
      user.secondaryGroups.add("sudo");
      user.secondaryGroups.add("git");
      instance.addChild(user);
    }

    // sudo -H -u gitlab ssh-keygen -q -N '' -t rsa -f /home/gitlab/.ssh/id_rsa

    instance.addChild(PackageDependency.build("ruby1.9.1"));

    {
      GitCheckout checkout = injected(GitCheckout.class);
      checkout.targetDir = new File("/opt/gitlabhq");
      checkout.source = "https://github.com/gitlabhq/gitlabhq.git";
      instance.addChild(checkout);
    }

    {
      GitCheckout checkout = injected(GitCheckout.class);
      checkout.targetDir = new File("/opt/gitolite");
      checkout.source = "https://github.com/gitlabhq/gitolite.git";
      instance.addChild(checkout);
    }

    // Eeek... we have to run a gitolite install script.
    // I don't fancy picking it apart right now...

    // As gitlabhq...
    // git config --global user.email "admin@local.host"
    // git config --global user.name "GitLabHQ Admin User"

    // su -c "ssh-keygen -q -f /home/gitlabhq/.ssh/id_rsa -N ''" gitlabhq
  }

  @Override
  public void buildTemplateModel(Map<String, Object> model) throws OpsException {
    // // TODO: Don't hard-code this
    // String authLdapUrl =
    // "ldap://192.168.192.67:389/ou=Users,dc=com,dc=fathomscale?uid";
    // String authLDAPBindDN = "cn=Manager,dc=com,dc=fathomscale";
    // String authLDAPBindPassword = "adminsecret";
    // String requireLdapGroup = "cn=Git,ou=Groups,dc=com,dc=fathomscale";
    //
    // model.put("AuthLDAPURL", authLdapUrl);
    // model.put("AuthLDAPBindDN", authLDAPBindDN);
    // model.put("AuthLDAPBindPassword", authLDAPBindPassword);
    // model.put("requireLdapGroup", requireLdapGroup);
  }
}
TOP

Related Classes of org.platformlayer.service.gitlab.ops.GitlabServiceController

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.