use of org.platformlayer.ops.OpsProvider in project platformlayer by platformlayer.
the class GoogleCloudPublicEndpointController method addChildren.
@Override
protected void addChildren() throws OpsException {
final GoogleCloudPublicEndpoint model = OpsContext.get().getInstance(GoogleCloudPublicEndpoint.class);
GoogleCloudInstance instance = client.getItem(model.instance, GoogleCloudInstance.class);
CloudInstanceMapper instanceMapper;
{
instanceMapper = injected(CloudInstanceMapper.class);
instanceMapper.instance = instance;
addChild(instanceMapper);
}
final EnsureFirewallIngress ingress;
{
ingress = injected(EnsureFirewallIngress.class);
ingress.model = model;
instanceMapper.addChild(ingress);
}
{
OpsProvider<TagChanges> tagChanges = new OpsProvider<TagChanges>() {
@Override
public TagChanges get() {
TagChanges tagChanges = new TagChanges();
String address = ingress.getPublicAddress();
if (Strings.isNullOrEmpty(address)) {
throw new IllegalStateException();
}
EndpointInfo endpoint = new EndpointInfo(address, model.publicPort);
tagChanges.addTags.add(endpoint.toTag());
return tagChanges;
}
};
Tagger tagger = injected(Tagger.class);
tagger.platformLayerKey = model.getKey();
tagger.tagChangesProvider = tagChanges;
instanceMapper.addChild(tagger);
Tagger tagInstance = injected(Tagger.class);
tagInstance.platformLayerKey = null;
tagInstance.platformLayerKey = model.instance;
tagInstance.tagChangesProvider = tagChanges;
instanceMapper.addChild(tagInstance);
}
}
use of org.platformlayer.ops.OpsProvider in project platformlayer by platformlayer.
the class PersistentInstanceMapper method addChildren.
@Override
protected void addChildren() throws OpsException {
final PersistentInstance model = OpsContext.get().getInstance(PersistentInstance.class);
{
// Add tag with instance id to persistent instance (very helpful for DNS service!)
Tagger tagger = injected(Tagger.class);
tagger.platformLayerKey = model.getKey();
tagger.tagChangesProvider = new OpsProvider<TagChanges>() {
@Override
public TagChanges get() throws OpsException {
Machine machine = OpsContext.get().getInstance(Machine.class);
if (machine == null) {
if (OpsContext.isDelete()) {
return null;
}
throw new OpsException("No machine in scope");
}
TagChanges changeTags = new TagChanges();
changeTags.addTags.add(Tag.INSTANCE_KEY.build(machine.getKey()));
platformLayer.changeTags(model.getKey(), changeTags, null);
return changeTags;
}
};
addChild(tagger);
}
}
use of org.platformlayer.ops.OpsProvider in project platformlayer by platformlayer.
the class OpenstackInstanceController method addChildren.
@Override
protected void addChildren() throws OpsException {
final OpenstackInstance model = OpsContext.get().getInstance(OpenstackInstance.class);
CloudInstanceMapper instance;
{
instance = injected(CloudInstanceMapper.class);
instance.instance = model;
addChild(instance);
}
{
OpsProvider<TagChanges> tagChanges = new OpsProvider<TagChanges>() {
@Override
public TagChanges get() {
OpenstackComputeMachine machine = OpsContext.get().getInstance(OpenstackComputeMachine.class);
TagChanges tagChanges = new TagChanges();
tagChanges.addTags.add(Tag.INSTANCE_KEY.build(model.getKey()));
tagChanges.addTags.addAll(machine.buildAddressTags());
return tagChanges;
}
};
instance.addChild(Tagger.build(model, tagChanges));
}
// Note: We can't bootstrap an instance, because we can't log in to it,
// because the public key is not our service's public key
// if (model.publicPorts != null) {
// for (int publicPort : model.publicPorts) {
// PublicPorts publicPortForward = injected(PublicPorts.class);
// publicPortForward.port = publicPort;
// publicPortForward.backendItem = model;
// kvm.addChild(publicPortForward);
// }
// }
}
use of org.platformlayer.ops.OpsProvider in project platformlayer by platformlayer.
the class OpenstackPublicEndpointController method addChildren.
// @Inject
// ImageFactory imageFactory;
//
@Override
protected void addChildren() throws OpsException {
final OpenstackPublicEndpoint model = OpsContext.get().getInstance(OpenstackPublicEndpoint.class);
OpenstackInstance instance = client.getItem(model.instance, OpenstackInstance.class);
CloudInstanceMapper instanceMapper;
{
instanceMapper = injected(CloudInstanceMapper.class);
instanceMapper.instance = instance;
addChild(instanceMapper);
}
final EnsureFirewallIngress ingress;
{
ingress = injected(EnsureFirewallIngress.class);
ingress.model = model;
instanceMapper.addChild(ingress);
}
{
OpsProvider<TagChanges> tagChanges = new OpsProvider<TagChanges>() {
@Override
public TagChanges get() {
TagChanges tagChanges = new TagChanges();
String address = ingress.getPublicAddress();
if (Strings.isNullOrEmpty(address)) {
throw new IllegalStateException();
}
EndpointInfo endpoint = new EndpointInfo(address, model.publicPort);
tagChanges.addTags.add(endpoint.toTag());
return tagChanges;
}
};
Tagger tagger = injected(Tagger.class);
tagger.platformLayerKey = model.getKey();
tagger.tagChangesProvider = tagChanges;
instanceMapper.addChild(tagger);
Tagger tagInstance = injected(Tagger.class);
tagInstance.platformLayerKey = null;
tagInstance.platformLayerKey = model.instance;
tagInstance.tagChangesProvider = tagChanges;
instanceMapper.addChild(tagInstance);
}
}
use of org.platformlayer.ops.OpsProvider in project platformlayer by platformlayer.
the class SimpleApp method addChildren.
@Override
protected void addChildren() throws OpsException {
DownloadFileByHash download = addChild(buildDownload());
File deployed = new File(jettyTemplate.getWarsDeployDir(), getWarName());
addChild(ManagedSymlink.build(deployed, download.filePath));
addChild(ManagedDirectory.build(getWorkDir(), "0700"));
{
PropertiesConfigFile conf = addChild(PropertiesConfigFile.class);
conf.filePath = getConfigurationFilePath();
conf.propertiesSupplier = new OpsProvider<Map<String, String>>() {
@Override
public Map<String, String> get() throws OpsException {
return getConfigurationProperties();
}
};
}
File contextDir = jettyTemplate.getContextDir();
ContextTemplate contextTemplate = new ContextTemplate();
addChild(TemplatedFile.build(contextTemplate, new File(contextDir, "context.xml")));
}
Aggregations