public static KubernetesDescription createKubernetesEntityDescription( BaseKubernetesState state) { KubernetesDescription entityDescription = new KubernetesDescription(); entityDescription.documentSelfLink = state.descriptionLink; entityDescription.documentDescription = state.documentDescription; entityDescription.tenantLinks = state.tenantLinks; entityDescription.name = state.name; entityDescription.id = state.id; entityDescription.type = state.getType(); entityDescription.customProperties = state.customProperties; return entityDescription; }
@Override public Service createServiceInstance() throws Throwable { return new PodService(); }
public static BaseKubernetesState createKubernetesEntityState(String kind) { switch (kind) { case KubernetesUtil.POD_TYPE: return new PodState(); case KubernetesUtil.SERVICE_TYPE: return new ServiceState(); case KubernetesUtil.DEPLOYMENT_TYPE: return new DeploymentState(); case KubernetesUtil.REPLICATION_CONTROLLER_TYPE: return new ReplicationControllerState(); case KubernetesUtil.REPLICA_SET_TYPE: return new ReplicaSetState(); default: return new GenericKubernetesEntityState(); } }
case DEPLOYMENT_TYPE: Deployment deployment = response.getBody(Deployment.class); DeploymentState deploymentState = new DeploymentState(); deploymentState.deployment = deployment; deploymentState.name = deployment.metadata.name; case SERVICE_TYPE: Service service = response.getBody(Service.class); ServiceState serviceState = new ServiceState(); serviceState.service = service; serviceState.name = service.metadata.name; case REPLICATION_CONTROLLER_TYPE: ReplicationController controller = response.getBody(ReplicationController.class); ReplicationControllerState controllerState = new ReplicationControllerState(); controllerState.replicationController = controller; controllerState.name = controller.metadata.name; case POD_TYPE: Pod pod = response.getBody(Pod.class); PodState podState = new PodState(); podState.pod = pod; podState.name = pod.metadata.name; default: BaseKubernetesObject k8sObject = response.getBody(BaseKubernetesObject.class); GenericKubernetesEntityState k8sState = new GenericKubernetesEntityState(); k8sState.entity = k8sObject; k8sState.name = k8sObject.metadata != null ? k8sObject.metadata.name : null;
private PodState createPod(CompositeComponent composite) throws Throwable { PodState pod = new PodState(); pod.compositeComponentLink = composite.documentSelfLink; pod = doPost(pod, PodFactoryService.SELF_LINK); addForDeletion(pod); return pod; }
@Override public void handlePeriodicMaintenance(Operation post) { if (getProcessingStage() != ProcessingStage.AVAILABLE) { logFine("Skipping maintenance since service is not available: %s ", getUri()); return; } if (kubernetesMaintenance == null) { kubernetesMaintenance = KubernetesMaintenance.create(getHost(), getSelfLink()); } kubernetesMaintenance.handlePeriodicMaintenance(post); }
private static KubernetesDescription createKubernetesDescription(String apiVersionPrefix, String namespace, String entityKind) { KubernetesDescription description = new KubernetesDescription(); description.apiVersion = apiVersionPrefix; description.namespace = namespace; description.type = entityKind; return description; } }
private void startMonitoringState(T body) { if (body.kubernetesSelfLink != null) { getHost().registerForServiceAvailability((o, ex) -> { if (ex != null) { logWarning("Skipping maintenance because service failed to start: %s", ex.getMessage()); } else { handlePeriodicMaintenance(o); } }, getSelfLink()); } }
@Override public void handleCreate(Operation startPost) { if (!checkForBody(startPost)) { return; } KubernetesDescription description = startPost.getBody(KubernetesDescription.class); try { validateDescription(description); startPost.setBody(description); startPost.complete(); } catch (Throwable e) { logSevere(e); startPost.fail(e); } }
@Override public void handlePut(Operation put) { if (!checkForBody(put)) { return; } KubernetesDescription description = put.getBody(KubernetesDescription.class); try { validateDescription(description); this.setState(put, description); put.setBody(description).complete(); } catch (Throwable e) { put.fail(e); } }
@Override public void handleCreate(Operation post) { if (!checkForBody(post)) { return; } T state = post.getBody(stateType); startMonitoringState(state); try { post.setBody(state); post.complete(); } catch (Throwable e) { logSevere(e); post.fail(e); } }
@Override public void handlePut(Operation put) { if (!checkForBody(put)) { return; } T putBody = put.getBody(stateType); this.setState(put, putBody); put.setBody(putBody); put.complete(); }
public void createEntity(KubernetesDescription description, KubernetesContext context, CompletionHandler completionHandler) throws IOException { URI uri = ApiUtil.buildKubernetesFactoryUri(description, context); sendRequest(Action.POST, uri, description.getKubernetesEntityAsJson(), context, completionHandler); }
@Override public Service createServiceInstance() throws Throwable { return new GenericKubernetesEntityService(); }
@Override public Service createServiceInstance() throws Throwable { return new DeploymentService(); }
@Override public Service createServiceInstance() throws Throwable { return new ServiceEntityHandler(); }
@Before public void setUp() throws Throwable { waitForServiceAvailability(GenericKubernetesEntityFactoryService.SELF_LINK); }
@Override public void handlePatch(Operation patch) { T currentState = getState(patch); T patchState = patch.getBody(stateType); PropertyUtils.mergeServiceDocuments(currentState, patchState); patch.complete(); }
private List<Operation> createOperations(List<String> kubernetesDefinitions) { List<Operation> ops = kubernetesDefinitions.stream() .map(yaml -> { KubernetesDescription description = new KubernetesDescription(); description.kubernetesEntity = yaml; return Operation.createPost(this, KubernetesDescriptionService.FACTORY_LINK) .setBody(description); }).collect(Collectors.toList()); return ops; }
@Test public void testSetApplicationLabelOnInvalidDeployment() { KubernetesDescription kd = new KubernetesDescription(); kd.kubernetesEntity = invalidDeploymentYaml; kd.type = DEPLOYMENT_TYPE; String testCompositeId = "123456"; // Make sure the is no NPE kd = KubernetesUtil.setApplicationLabel(kd, testCompositeId); }