Package org.platformlayer.service.wordpress.ops

Source Code of org.platformlayer.service.wordpress.ops.WordpressServiceController

package org.platformlayer.service.wordpress.ops;

import java.io.IOException;

import org.platformlayer.core.model.PlatformLayerKey;
import org.platformlayer.ops.Handler;
import org.platformlayer.ops.Injection;
import org.platformlayer.ops.OpsContext;
import org.platformlayer.ops.OpsException;
import org.platformlayer.ops.instances.InstanceBuilder;
import org.platformlayer.ops.networks.PublicEndpoint;
import org.platformlayer.ops.packages.PackageDependency;
import org.platformlayer.ops.service.ManagedService;
import org.platformlayer.ops.tree.OpsTreeBase;
import org.platformlayer.service.network.ops.PlatformLayerFirewallEntry;
import org.platformlayer.service.wordpress.model.WordpressService;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

public class WordpressServiceController extends OpsTreeBase {

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

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

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

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

    instance.addChild(PackageDependency.build("wordpress"));

    instance.addChild(ApacheBootstrap.build());

    {
      PlatformLayerFirewallEntry net = injected(PlatformLayerFirewallEntry.class);

      net.destItem = model.databaseItem;
      net.port = 3306;
      net.uniqueId = getFirewallUniqueId();

      PlatformLayerKey sourceKey = model.getKey();
      net.sourceItemKey = sourceKey;

      instance.addChild(net);
    }

    WordpressTemplateData templateData = Injection.getInstance(WordpressTemplateData.class);

    MysqlConnection mysql = instance.addChild(MysqlConnection.build(model.databaseItem));
    mysql.password = model.databasePassword;

    {
      MysqlDatabase db = injected(MysqlDatabase.class);
      db.databaseName = templateData.getDatabaseName();
      mysql.addChild(db);
    }

    {
      MysqlUser db = injected(MysqlUser.class);
      db.databaseName = templateData.getDatabaseName();
      db.databaseUser = templateData.getDatabaseUser();
      db.databasePassword = templateData.getDatabasePassword();
      mysql.addChild(db);
    }

    instance.addChild(WordpressBootstrap.build());
    instance.addChild(WordpressAdminUser.build());

    instance.addChild(WordpressApacheSite.build());

    // instance.addChild(CollectdCollector.build());

    // TODO: How do we bring up wordpress securely??
    // We don't have the tables until we run install.php
    // Maybe we could POST to the install.php form

    {
      PublicEndpoint endpoint = injected(PublicEndpoint.class);
      // endpoint.network = null;
      endpoint.publicPort = 80;
      endpoint.backendPort = 80;

      // We expect nginx to front-end us, so we don't put the dnsName
      // endpoint.dnsName = model.dnsName;

      endpoint.tagItem = model.getKey();
      endpoint.parentItem = model.getKey();

      instance.addChild(endpoint);
    }

    instance.addChild(ManagedService.build("apache2"));
  }

  private String getFirewallUniqueId() {
    // Not implemented at the moment
    throw new UnsupportedOperationException();
  }
}
TOP

Related Classes of org.platformlayer.service.wordpress.ops.WordpressServiceController

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.