@Override public Cidr getSubnetCidr(String networkId) { synchronized (networkMutex) { Map<String, Cidr> subnets = sensors().get(SdnProvider.SUBNETS); return subnets.get(networkId); } }
@Override public void deallocateNetwork(VirtualNetwork network) { String networkId = network.sensors().get(VirtualNetwork.NETWORK_ID); sensors().get(SDN_NETWORKS).removeMember(network); SdnAgent agent = (SdnAgent) (getAgents().getMembers().iterator().next()); agent.deallocateNetwork(network); LOG.info("Deallocated network {} at {}", networkId, agent); }
public Integer getSshPort() { String sensorValue = sensors().get(DockerAttributes.DOCKER_MAPPED_SSH_PORT); if (sensorValue != null) { HostAndPort target = HostAndPort.fromString(sensorValue); return target.getPort(); } else { Integer sshPort = getRunningEntity().config().get(SshMachineLocation.SSH_PORT); return Optional.fromNullable(sshPort).or(22); } }
@Override public MarathonTaskLocation getDynamicLocation() { return (MarathonTaskLocation) sensors().get(DYNAMIC_LOCATION); }
@Override public MesosFramework getFramework() { return (MesosFramework) sensors().get(FRAMEWORK); }
@Override public DockerContainerLocation getDynamicLocation() { return (DockerContainerLocation) sensors().get(DYNAMIC_LOCATION); }
@Override public SshMachineLocation getMachine() { return sensors().get(SSH_MACHINE_LOCATION); }
@Override public DockerHostLocation getDynamicLocation() { return (DockerHostLocation) sensors().get(DYNAMIC_LOCATION); }
@Override public Integer getDockerPort() { return sensors().get(DOCKER_SSL_PORT); }
@Override public InetAddress getNextAgentAddress(String agentId) { synchronized (addressMutex) { Cidr cidr = config().get(AGENT_CIDR); Integer allocated = sensors().get(ALLOCATED_IPS); InetAddress next = cidr.addressAtOffset(allocated + 1); sensors().set(ALLOCATED_IPS, allocated + 1); Map<String, InetAddress> addresses = sensors().get(ALLOCATED_ADDRESSES); addresses.put(agentId, next); sensors().set(ALLOCATED_ADDRESSES, addresses); return next; } }
@Override public DynamicCluster getDockerHostCluster() { return sensors().get(DOCKER_HOST_CLUSTER); }
@Override public void init() { sensors().set(NODE_ID, new AtomicInteger(0)); ConfigToAttributes.apply(this, ETCD_NODE_SPEC); config().set(MEMBER_SPEC, sensors().get(ETCD_NODE_SPEC)); config().set(FIRST_MEMBER_SPEC, EntitySpec.create(sensors().get(ETCD_NODE_SPEC)).configure(EtcdNode.IS_FIRST, true)); config().set(UP_QUORUM_CHECK, QuorumChecks.allAndAtLeastOne()); config().set(RUNNING_QUORUM_CHECK, QuorumChecks.allAndAtLeastOne()); super.init(); }
@Override public void provisionNetwork(VirtualNetwork network) { Cidr subnetCidr = SdnUtils.provisionNetwork(this, network); boolean ipip = config().get(CalicoModule.USE_IPIP); boolean nat = config().get(CalicoModule.USE_NAT); String addPool = String.format("calicoctl pool add %s %s %s", subnetCidr, ipip ? "--ipip" : "", nat ? "--nat-outgoing" : ""); MesosSlave slave = (MesosSlave) getMesosCluster().sensors().get(MesosCluster.MESOS_SLAVES).getMembers().iterator().next(); execCalicoCommand(slave, addPool); sensors().get(SDN_NETWORKS).addMember(network); }
@Override public void init() { super.init(); ConfigToAttributes.apply(this, FRAMEWORK); ConfigToAttributes.apply(this, MESOS_CLUSTER); ConfigToAttributes.apply(this, MANAGED); if (!sensors().get(MANAGED)) { ConfigToAttributes.apply(this, TASK_NAME); } }
@Override public void resume() { String dockerContainerName = sensors().get(DockerContainer.DOCKER_CONTAINER_NAME); LOG.info("Resuming {}", dockerContainerName); getDockerHost().runDockerCommand("start " + getContainerId()); }
@Override public VirtualNetwork createNetwork(String networkId) { final SdnProvider provider = sensors().get(SDN_PROVIDER); VirtualNetwork network = SdnUtils.createNetwork(provider, networkId); return network; }
@Override public void pause() { String dockerContainerName = sensors().get(DockerContainer.DOCKER_CONTAINER_NAME); LOG.info("Pausing {}", dockerContainerName); getDockerHost().runDockerCommand("stop " + getContainerId()); }
@Override public void shutDown() { String dockerContainerName = sensors().get(DockerContainer.DOCKER_CONTAINER_NAME); LOG.info("Stopping {}", dockerContainerName); getDockerHost().runDockerCommand("kill " + getContainerId()); }
@Override public void addHost(DockerHost host) { SshMachineLocation machine = host.getDynamicLocation().getMachine(); EntitySpec<?> spec = EntitySpec.create(sensors().get(SDN_AGENT_SPEC)) .configure(CalicoNode.SDN_PROVIDER, this) .configure(CalicoNode.DOCKER_HOST, host) .configure(CalicoNode.ETCD_NODE, host.sensors().get(DockerHost.ETCD_NODE)); CalicoNode agent = (CalicoNode) getAgents().addChild(spec); getAgents().addMember(agent); agent.start(ImmutableList.of(machine)); if (LOG.isDebugEnabled()) LOG.debug("{} added calico plugin {}", this, agent); }
@Override public void onCallback(boolean success) { if (success) { ServiceStateLogic.ServiceNotUpLogic.clearNotUpIndicator(this, START.getName()); } else { ServiceStateLogic.ServiceNotUpLogic.updateNotUpIndicator(this, START.getName(), "callback reported failure"); } Transition expectedState = sensors().get(Attributes.SERVICE_STATE_EXPECTED); if (expectedState != null && expectedState.getState() == Lifecycle.STARTING) { ServiceStateLogic.setExpectedState(this, Lifecycle.RUNNING); } }