virtual Result<Labels> slaveTaskStatusLabelDecorator( const FrameworkID& frameworkId, const TaskStatus& status) { LOG(INFO) << "CalicoHook::task status label decorator"; if (!status.has_executor_id()) { LOG(WARNING) << "CalicoHook:: task status has no valid executor id"; return None(); } const ExecutorID executorId = status.executor_id(); if (!executors->contains(executorId)) { LOG(WARNING) << "CalicoHook:: no valid container id for: " << executorId; return None(); } const ContainerID containerId = executors->at(executorId); if (infos == NULL || !infos->contains(containerId)) { LOG(WARNING) << "CalicoHook:: no valid infos for: " << containerId; return None(); } const Info* info = (*infos)[containerId]; if (info->ipAddress.isNone()) { LOG(WARNING) << "CalicoHook:: no valid IP address"; return None(); } Labels labels; if (status.has_labels()) { labels.CopyFrom(status.labels()); } // Set IPAddress label. Label* label = labels.add_labels(); label->set_key(ipAddressLabelKey); label->set_value(info->ipAddress.get()); LOG(INFO) << "CalicoHook:: added label " << label->key() << ":" << label->value(); return labels; }
virtual Result<TaskStatus> slaveTaskStatusDecorator( const FrameworkID& frameworkId, const TaskStatus& status) { LOG(INFO) << "Executing 'slaveTaskStatusDecorator' hook"; Labels labels; // Set one known label. Label* newLabel = labels.add_labels(); newLabel->set_key("bar"); newLabel->set_value("qux"); // Remove label which was set by test. foreach (const Label& oldLabel, status.labels().labels()) { if (oldLabel.key() != "foo") { labels.add_labels()->CopyFrom(oldLabel); } } TaskStatus result; result.mutable_labels()->CopyFrom(labels); // Set an IP address, a network isolation group, and a known label // in network info. This data is later validated by the // 'HookTest.VerifySlaveTaskStatusDecorator' test. NetworkInfo* networkInfo = result.mutable_container_status()->add_network_infos(); // TODO(CD): Deprecated -- remove after 0.27.0. networkInfo->set_ip_address("4.3.2.1"); NetworkInfo::IPAddress* ipAddress = networkInfo->add_ip_addresses(); ipAddress->set_ip_address("4.3.2.1"); networkInfo->add_groups("public"); Label* networkInfoLabel = networkInfo->mutable_labels()->add_labels(); networkInfoLabel->set_key("net_foo"); networkInfoLabel->set_value("net_bar"); return result; }
virtual Result<Labels> slaveTaskStatusLabelDecorator( const FrameworkID& frameworkId, const TaskStatus& status) { LOG(INFO) << "Executing 'slaveTaskStatusLabelDecorator' hook"; Labels labels; // Set one known label. Label* newLabel = labels.add_labels(); newLabel->set_key("bar"); newLabel->set_value("qux"); // Remove label which was set by test. foreach (const Label& oldLabel, status.labels().labels()) { if (oldLabel.key() != "foo") { labels.add_labels()->CopyFrom(oldLabel); } } return labels; }