You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@stratos.apache.org by Akila Ravihansa Perera <ra...@wso2.com> on 2015/09/20 11:21:55 UTC

Releasing Stratos 4.1.3

Hi all,

I've pushed release artifacts to staging repo at [1]. Please take few mins
to verify the release. Also I've pushed cartridge-base, php and tomcat
Docker images with 4.1.3 artifacts to DockerHub.

[1]
https://repository.apache.org/content/repositories/orgapachestratos-1057/

Thanks.

-- 
Akila Ravihansa Perera
WSO2 Inc.;  http://wso2.com/

Blog: http://ravihansa3000.blogspot.com

Re: Releasing Stratos 4.1.3

Posted by Akila Ravihansa Perera <ra...@wso2.com>.
Hi,

Kuberntes access URL fix was not working as expected and it had to be
reverted. I've done another release build and pushed release artifacts to
staging repo at [1].

Please take few mins to verify the release.

[1] https://repository.apache.org/content/repositories/orgapachestratos-1059

Thanks.

On Mon, Sep 21, 2015 at 11:54 PM, Akila Ravihansa Perera <ravihansa@wso2.com
> wrote:

> Hi,
>
> I've pushed artifacts to staging repo at [1] with latest fixes. Please
> take few mins to verify the release.
>
> [1]
> https://repository.apache.org/content/repositories/orgapachestratos-1058
>
> Thanks.
>
> On Mon, Sep 21, 2015 at 11:36 AM, Gayan Gunarathne <ga...@wso2.com>
> wrote:
>
>> Based on the offline chat with Imesh,Akila, Reka , we decided to maintain
>> the  map of KubernetesService in a ClusterContext against the cluster
>> instance id.
>>
>> Then we can pick the Kubernetes services based on the cluster instance id.
>>
>> Thanks,
>> Gayan
>>
>> On Mon, Sep 21, 2015 at 10:42 AM, Gayan Gunarathne <ga...@wso2.com>
>> wrote:
>>
>>> We are maintaining the accessURL in the cluster. In the multi-region
>>> deployment it is same cluster.IMO we need to maintain the accessURL in
>>> Kubernetes Service.
>>>
>>> Thanks,
>>> Gayan
>>>
>>> On Mon, Sep 21, 2015 at 1:07 AM, Imesh Gunaratne <im...@apache.org>
>>> wrote:
>>>
>>>> I found another problem when running on multiple network partitions;
>>>> access URLs shown in the topology view are the same for both application
>>>> instances:
>>>>
>>>>
>>>>
>>>> ​
>>>> ​
>>>>
>>>>
>>>>
>>>> On Mon, Sep 21, 2015 at 1:04 AM, Imesh Gunaratne <im...@apache.org>
>>>> wrote:
>>>>
>>>>> Labels are now shown as below:
>>>>>
>>>>>
>>>>> ​
>>>>>
>>>>> ​
>>>>>
>>>>> On Mon, Sep 21, 2015 at 12:57 AM, Gayan Gunarathne <ga...@wso2.com>
>>>>> wrote:
>>>>>
>>>>>> Seems there is a  commit missing when merging the changes.
>>>>>>
>>>>>> Setting the setKubernetesClusterId when creating the Kubenetes service
>>>>>>
>>>>>> Now I will add that commit.
>>>>>>
>>>>>> Thanks,
>>>>>> Gayan
>>>>>>
>>>>>> On Mon, Sep 21, 2015 at 12:35 AM, Akila Ravihansa Perera <
>>>>>> ravihansa@wso2.com> wrote:
>>>>>>
>>>>>>> Great!
>>>>>>>
>>>>>>> I think I found the problem with K8s services not getting cleaned
>>>>>>> up. I see a NPE at removeKubernetesServices(KubernetesIaas.java:1025) when
>>>>>>> undeploying an application.
>>>>>>>
>>>>>>> [2015-09-21 00:31:16,750] ERROR
>>>>>>> {org.apache.stratos.messaging.message.receiver.cluster.status.ClusterStatusEventMessageDelegator}
>>>>>>> -  Failed to retrieve cluster status event message
>>>>>>> java.lang.NullPointerException
>>>>>>> at
>>>>>>> org.apache.stratos.cloud.controller.iaases.kubernetes.KubernetesIaas.removeKubernetesServices(KubernetesIaas.java:1025)
>>>>>>> at
>>>>>>> org.apache.stratos.cloud.controller.messaging.topology.TopologyBuilder.handleClusterTerminatingEvent(TopologyBuilder.java:1068)
>>>>>>> at
>>>>>>> org.apache.stratos.cloud.controller.messaging.receiver.cluster.status.ClusterStatusTopicReceiver$5.onEvent(ClusterStatusTopicReceiver.java:86)
>>>>>>> at
>>>>>>> org.apache.stratos.messaging.listener.EventListener.update(EventListener.java:42)
>>>>>>> at java.util.Observable.notifyObservers(Observable.java:159)
>>>>>>> at
>>>>>>> org.apache.stratos.messaging.event.EventObservable.notifyEventListeners(EventObservable.java:51)
>>>>>>> at
>>>>>>> org.apache.stratos.messaging.message.processor.cluster.status.ClusterStatusClusterTerminatingMessageProcessor.process(ClusterStatusClusterTerminatingMessageProcessor.java:48)
>>>>>>> at
>>>>>>> org.apache.stratos.messaging.message.processor.cluster.status.ClusterStatusClusterTerminatedMessageProcessor.process(ClusterStatusClusterTerminatedMessageProcessor.java:55)
>>>>>>> at
>>>>>>> org.apache.stratos.messaging.message.processor.cluster.status.ClusterStatusClusterInactivateMessageProcessor.process(ClusterStatusClusterInactivateMessageProcessor.java:52)
>>>>>>> at
>>>>>>> org.apache.stratos.messaging.message.processor.cluster.status.ClusterStatusClusterActivatedMessageProcessor.process(ClusterStatusClusterActivatedMessageProcessor.java:52)
>>>>>>> at
>>>>>>> org.apache.stratos.messaging.message.processor.cluster.status.ClusterStatusClusterResetMessageProcessor.process(ClusterStatusClusterResetMessageProcessor.java:52)
>>>>>>> at
>>>>>>> org.apache.stratos.messaging.message.processor.MessageProcessorChain.process(MessageProcessorChain.java:61)
>>>>>>> at
>>>>>>> org.apache.stratos.messaging.message.receiver.cluster.status.ClusterStatusEventMessageDelegator.run(ClusterStatusEventMessageDelegator.java:71)
>>>>>>> at
>>>>>>> java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
>>>>>>> at
>>>>>>> java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
>>>>>>> at java.lang.Thread.run(Thread.java:745)
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>> On Mon, Sep 21, 2015 at 12:30 AM, Imesh Gunaratne <im...@apache.org>
>>>>>>> wrote:
>>>>>>>
>>>>>>>> I have now refined this logic to trim all labels to 62 characters
>>>>>>>> and added following as labels:
>>>>>>>>
>>>>>>>> Pod: Application-ID, Cluster-Instance-ID, Member-ID
>>>>>>>> Service: Application-ID, Cluster-ID, Port-Name
>>>>>>>>
>>>>>>>> Now I'm seeing a different problem. When an application is
>>>>>>>> un-deployed, services do not get deleted. We need to fix this.
>>>>>>>>
>>>>>>>> Thanks
>>>>>>>>
>>>>>>>> On Mon, Sep 21, 2015 at 12:12 AM, Gayan Gunarathne <gayang@wso2.com
>>>>>>>> > wrote:
>>>>>>>>
>>>>>>>>> Hi Akila,
>>>>>>>>>
>>>>>>>>> On Sun, Sep 20, 2015 at 11:30 PM, Akila Ravihansa Perera <
>>>>>>>>> ravihansa@wso2.com> wrote:
>>>>>>>>>
>>>>>>>>>> Hi Gayan,
>>>>>>>>>>
>>>>>>>>>> +1 for properly identifying attributes to be used for labels and
>>>>>>>>>> annotations. As I mentioned earlier I tried to use them as labels but ran
>>>>>>>>>> into length limitation issues.
>>>>>>>>>>
>>>>>>>>>> memberId and clusterId cannot be used directly since they are
>>>>>>>>>> generated as follows;
>>>>>>>>>>
>>>>>>>>>> memberId = clusterId + UUID
>>>>>>>>>> clusterId = applicationId + "." + alias + "." + cartridgeType +
>>>>>>>>>> ".domain"
>>>>>>>>>>
>>>>>>>>>> As you can see those can go be beyond 63 characters since we
>>>>>>>>>> don't have a limitation for applicationId length. I'm -1 on imposing a
>>>>>>>>>> character limitation to applicationId only to get away with Kubernetes
>>>>>>>>>> restriction. What if some other provider comes out with a different
>>>>>>>>>> limitation? It should be restricted but only for good reasons concerning to
>>>>>>>>>> Stratos.
>>>>>>>>>>
>>>>>>>>>
>>>>>>>>> Right. Let's say we are not going to restrict the application id
>>>>>>>>> length. So in that case we won't be able to use the application id as a pod
>>>>>>>>> label.
>>>>>>>>> IMO we used application id to identify the application. As it is a
>>>>>>>>> identifier I think it is OK to have a restriction.I think using a
>>>>>>>>> description for the application id is not practical.Also in most of the use
>>>>>>>>> cases identifiers comes up with some length restrictions.If we don't have a
>>>>>>>>> restriction on application id , users can enter description sort of a
>>>>>>>>> application id.
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>> I had an offline chat with Imesh and we were discussing about
>>>>>>>>>> implementing a sequence number based approach for generating clusterId and
>>>>>>>>>> memberId without using UUIDs. Any thoughts?
>>>>>>>>>>
>>>>>>>>>
>>>>>>>>>  I am also +1 for this thinking. So how we are going to generate
>>>>>>>>> the cluster id? I think we need to generate the meaningful ids.
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>> Thanks.
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>> Thanks,
>>>>>>>>> Gayan
>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>> On Sun, Sep 20, 2015 at 10:55 PM, Gayan Gunarathne <
>>>>>>>>>> gayang@wso2.com> wrote:
>>>>>>>>>>
>>>>>>>>>>> As per Kubernetes definition I think we are using labels and
>>>>>>>>>>> annotation in a wrong way.As annotations are arbitrary non-identifying
>>>>>>>>>>> metadata , they might not shown them in their UI/CLI
>>>>>>>>>>>
>>>>>>>>>>> I think first we need to recognize what are the identifiers for
>>>>>>>>>>> the pod.In think we may need to use member id , application id
>>>>>>>>>>>
>>>>>>>>>>> Also what is the ration behind of using the md5Hex of the member
>>>>>>>>>>> id as a identifier. IMO we can directly use the member id. As member id is
>>>>>>>>>>> UUID it won't be more than 63 characters.
>>>>>>>>>>>
>>>>>>>>>>> Thanks,
>>>>>>>>>>> Gayan
>>>>>>>>>>>
>>>>>>>>>>> On Sun, Sep 20, 2015 at 10:13 PM, Imesh Gunaratne <
>>>>>>>>>>> imesh@apache.org> wrote:
>>>>>>>>>>>
>>>>>>>>>>>> Hi Akila,
>>>>>>>>>>>>
>>>>>>>>>>>> Right, I get your point on the length limitation, but this is
>>>>>>>>>>>> how Kubernetes has described Labels and Annotations:
>>>>>>>>>>>>
>>>>>>>>>>>> *We'll eventually index and reverse-index labels for efficient
>>>>>>>>>>>> queries and watches, use them to sort and group in UIs and CLIs, etc. We
>>>>>>>>>>>> don't want to pollute labels with non-identifying, especially large and/or
>>>>>>>>>>>> structured, data. Non-identifying information should be recorded using
>>>>>>>>>>>> annotations.*
>>>>>>>>>>>>
>>>>>>>>>>>> The idea is to use labels for all identifiers.
>>>>>>>>>>>>
>>>>>>>>>>>> http://kubernetes.io/v1.0/docs/user-guide/labels.html
>>>>>>>>>>>>
>>>>>>>>>>>> On Sun, Sep 20, 2015 at 10:05 PM, Akila Ravihansa Perera <
>>>>>>>>>>>> ravihansa@wso2.com> wrote:
>>>>>>>>>>>>
>>>>>>>>>>>>> Hi Imesh,
>>>>>>>>>>>>>
>>>>>>>>>>>>> Yes, I tried adding them as labels but ran into a problem
>>>>>>>>>>>>> since label length cannot be greater than 63 characters. I'm not sure why
>>>>>>>>>>>>> we don't see annotations in the UI for pods created. But I can see the
>>>>>>>>>>>>> annotations added for services. Might have to raise this in K8s mailing
>>>>>>>>>>>>> list.
>>>>>>>>>>>>>
>>>>>>>>>>>>> Thanks.
>>>>>>>>>>>>>
>>>>>>>>>>>>> On Sun, Sep 20, 2015 at 10:00 PM, Imesh Gunaratne <
>>>>>>>>>>>>> imesh@apache.org> wrote:
>>>>>>>>>>>>>
>>>>>>>>>>>>>> Hi Akila,
>>>>>>>>>>>>>>
>>>>>>>>>>>>>> We do not query pod labels, its handled by the Kubernetes
>>>>>>>>>>>>>> service selector, at the moment this is called "name". I have now fixed
>>>>>>>>>>>>>> this issue locally, will push in few minutes.
>>>>>>>>>>>>>>
>>>>>>>>>>>>>> In addition I think it would be better to use labels instead
>>>>>>>>>>>>>> of annotations because they are not visible in the UI:
>>>>>>>>>>>>>>
>>>>>>>>>>>>>>
>>>>>>>>>>>>>>
>>>>>>>>>>>>>> Thanks
>>>>>>>>>>>>>>
>>>>>>>>>>>>>> On Sun, Sep 20, 2015 at 9:52 PM, Akila Ravihansa Perera <
>>>>>>>>>>>>>> ravihansa@wso2.com> wrote:
>>>>>>>>>>>>>>
>>>>>>>>>>>>>>> Hi Imesh,
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>> Where do we query those pod labels?
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>> I'm in the process of moving label names to constants. I can
>>>>>>>>>>>>>>> apply the same in all the places. I think better to change that label to
>>>>>>>>>>>>>>> md5Hex-memberId to avoid any confusion when troubleshooting issues. One
>>>>>>>>>>>>>>> might mistakenly take that as the actual memberId when it is not the case.
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>> Thanks.
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>> On Sun, Sep 20, 2015 at 9:40 PM, Imesh Gunaratne <
>>>>>>>>>>>>>>> imesh@apache.org> wrote:
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>> I'm seeing a problem, we have removed the "name" label in
>>>>>>>>>>>>>>>> the pod and added a new label called "md5Hex-memberId". Due to this load
>>>>>>>>>>>>>>>> balancing would not work:
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>> Map<String, String> podLabels = new HashMap<>();
>>>>>>>>>>>>>>>> podLabels.put("md5Hex-memberId", DigestUtils.md5Hex(memberContext.getMemberId()));
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>> Map<String, String> podAnnotations = new HashMap<>();
>>>>>>>>>>>>>>>> podAnnotations.put("memberId", memberContext.getMemberId());
>>>>>>>>>>>>>>>> podAnnotations.put("cartridgeType", memberContext.getCartridgeType());
>>>>>>>>>>>>>>>> podAnnotations.put("applicationId", memberContext.getApplicationId());
>>>>>>>>>>>>>>>> podAnnotations.put("clusterId", memberContext.getClusterId());
>>>>>>>>>>>>>>>> podAnnotations.put("clusterInstanceId", memberContext.getClusterInstanceId());
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>> kubernetesApi.createPod(podId, podName, podLabels, podAnnotations, dockerImage, cpu, memory, ports,
>>>>>>>>>>>>>>>>         environmentVariables);
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>> On Sun, Sep 20, 2015 at 2:51 PM, Akila Ravihansa Perera <
>>>>>>>>>>>>>>>> ravihansa@wso2.com> wrote:
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>> Hi all,
>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>> I've pushed release artifacts to staging repo at [1].
>>>>>>>>>>>>>>>>> Please take few mins to verify the release. Also I've pushed
>>>>>>>>>>>>>>>>> cartridge-base, php and tomcat Docker images with 4.1.3 artifacts to
>>>>>>>>>>>>>>>>> DockerHub.
>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>> [1]
>>>>>>>>>>>>>>>>> https://repository.apache.org/content/repositories/orgapachestratos-1057/
>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>> Thanks.
>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>> --
>>>>>>>>>>>>>>>>> Akila Ravihansa Perera
>>>>>>>>>>>>>>>>> WSO2 Inc.;  http://wso2.com/
>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>> Blog: http://ravihansa3000.blogspot.com
>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>> --
>>>>>>>>>>>>>>>> Imesh Gunaratne
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>> Senior Technical Lead, WSO2
>>>>>>>>>>>>>>>> Committer & PMC Member, Apache Stratos
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>> --
>>>>>>>>>>>>>>> Akila Ravihansa Perera
>>>>>>>>>>>>>>> WSO2 Inc.;  http://wso2.com/
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>> Blog: http://ravihansa3000.blogspot.com
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>
>>>>>>>>>>>>>>
>>>>>>>>>>>>>>
>>>>>>>>>>>>>> --
>>>>>>>>>>>>>> Imesh Gunaratne
>>>>>>>>>>>>>>
>>>>>>>>>>>>>> Senior Technical Lead, WSO2
>>>>>>>>>>>>>> Committer & PMC Member, Apache Stratos
>>>>>>>>>>>>>>
>>>>>>>>>>>>>
>>>>>>>>>>>>>
>>>>>>>>>>>>>
>>>>>>>>>>>>> --
>>>>>>>>>>>>> Akila Ravihansa Perera
>>>>>>>>>>>>> WSO2 Inc.;  http://wso2.com/
>>>>>>>>>>>>>
>>>>>>>>>>>>> Blog: http://ravihansa3000.blogspot.com
>>>>>>>>>>>>>
>>>>>>>>>>>>
>>>>>>>>>>>>
>>>>>>>>>>>>
>>>>>>>>>>>> --
>>>>>>>>>>>> Imesh Gunaratne
>>>>>>>>>>>>
>>>>>>>>>>>> Senior Technical Lead, WSO2
>>>>>>>>>>>> Committer & PMC Member, Apache Stratos
>>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>> --
>>>>>>>>>>>
>>>>>>>>>>> Gayan Gunarathne
>>>>>>>>>>> Technical Lead, WSO2 Inc. (http://wso2.com)
>>>>>>>>>>> Committer & PMC Member, Apache Stratos
>>>>>>>>>>> email : gayang@wso2.com  | mobile : +94 775030545
>>>>>>>>>>> <%2B94%20766819985>
>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>> --
>>>>>>>>>> Akila Ravihansa Perera
>>>>>>>>>> WSO2 Inc.;  http://wso2.com/
>>>>>>>>>>
>>>>>>>>>> Blog: http://ravihansa3000.blogspot.com
>>>>>>>>>>
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>
>>>>>>>>> --
>>>>>>>>>
>>>>>>>>> Gayan Gunarathne
>>>>>>>>> Technical Lead, WSO2 Inc. (http://wso2.com)
>>>>>>>>> Committer & PMC Member, Apache Stratos
>>>>>>>>> email : gayang@wso2.com  | mobile : +94 775030545
>>>>>>>>> <%2B94%20766819985>
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>> --
>>>>>>>> Imesh Gunaratne
>>>>>>>>
>>>>>>>> Senior Technical Lead, WSO2
>>>>>>>> Committer & PMC Member, Apache Stratos
>>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>> --
>>>>>>> Akila Ravihansa Perera
>>>>>>> WSO2 Inc.;  http://wso2.com/
>>>>>>>
>>>>>>> Blog: http://ravihansa3000.blogspot.com
>>>>>>>
>>>>>>
>>>>>>
>>>>>>
>>>>>> --
>>>>>>
>>>>>> Gayan Gunarathne
>>>>>> Technical Lead, WSO2 Inc. (http://wso2.com)
>>>>>> Committer & PMC Member, Apache Stratos
>>>>>> email : gayang@wso2.com  | mobile : +94 775030545 <%2B94%20766819985>
>>>>>>
>>>>>>
>>>>>>
>>>>>
>>>>>
>>>>>
>>>>> --
>>>>> Imesh Gunaratne
>>>>>
>>>>> Senior Technical Lead, WSO2
>>>>> Committer & PMC Member, Apache Stratos
>>>>>
>>>>
>>>>
>>>>
>>>> --
>>>> Imesh Gunaratne
>>>>
>>>> Senior Technical Lead, WSO2
>>>> Committer & PMC Member, Apache Stratos
>>>>
>>>
>>>
>>>
>>> --
>>>
>>> Gayan Gunarathne
>>> Technical Lead, WSO2 Inc. (http://wso2.com)
>>> Committer & PMC Member, Apache Stratos
>>> email : gayang@wso2.com  | mobile : +94 775030545 <%2B94%20766819985>
>>>
>>>
>>>
>>
>>
>>
>> --
>>
>> Gayan Gunarathne
>> Technical Lead, WSO2 Inc. (http://wso2.com)
>> Committer & PMC Member, Apache Stratos
>> email : gayang@wso2.com  | mobile : +94 775030545 <%2B94%20766819985>
>>
>>
>>
>
>
>
> --
> Akila Ravihansa Perera
> WSO2 Inc.;  http://wso2.com/
>
> Blog: http://ravihansa3000.blogspot.com
>



-- 
Akila Ravihansa Perera
WSO2 Inc.;  http://wso2.com/

Blog: http://ravihansa3000.blogspot.com

Re: Releasing Stratos 4.1.3

Posted by Akila Ravihansa Perera <ra...@wso2.com>.
Hi,

I've pushed artifacts to staging repo at [1] with latest fixes. Please take
few mins to verify the release.

[1] https://repository.apache.org/content/repositories/orgapachestratos-1058

Thanks.

On Mon, Sep 21, 2015 at 11:36 AM, Gayan Gunarathne <ga...@wso2.com> wrote:

> Based on the offline chat with Imesh,Akila, Reka , we decided to maintain
> the  map of KubernetesService in a ClusterContext against the cluster
> instance id.
>
> Then we can pick the Kubernetes services based on the cluster instance id.
>
> Thanks,
> Gayan
>
> On Mon, Sep 21, 2015 at 10:42 AM, Gayan Gunarathne <ga...@wso2.com>
> wrote:
>
>> We are maintaining the accessURL in the cluster. In the multi-region
>> deployment it is same cluster.IMO we need to maintain the accessURL in
>> Kubernetes Service.
>>
>> Thanks,
>> Gayan
>>
>> On Mon, Sep 21, 2015 at 1:07 AM, Imesh Gunaratne <im...@apache.org>
>> wrote:
>>
>>> I found another problem when running on multiple network partitions;
>>> access URLs shown in the topology view are the same for both application
>>> instances:
>>>
>>>
>>>
>>> ​
>>> ​
>>>
>>>
>>>
>>> On Mon, Sep 21, 2015 at 1:04 AM, Imesh Gunaratne <im...@apache.org>
>>> wrote:
>>>
>>>> Labels are now shown as below:
>>>>
>>>>
>>>> ​
>>>>
>>>> ​
>>>>
>>>> On Mon, Sep 21, 2015 at 12:57 AM, Gayan Gunarathne <ga...@wso2.com>
>>>> wrote:
>>>>
>>>>> Seems there is a  commit missing when merging the changes.
>>>>>
>>>>> Setting the setKubernetesClusterId when creating the Kubenetes service
>>>>>
>>>>> Now I will add that commit.
>>>>>
>>>>> Thanks,
>>>>> Gayan
>>>>>
>>>>> On Mon, Sep 21, 2015 at 12:35 AM, Akila Ravihansa Perera <
>>>>> ravihansa@wso2.com> wrote:
>>>>>
>>>>>> Great!
>>>>>>
>>>>>> I think I found the problem with K8s services not getting cleaned up.
>>>>>> I see a NPE at removeKubernetesServices(KubernetesIaas.java:1025) when
>>>>>> undeploying an application.
>>>>>>
>>>>>> [2015-09-21 00:31:16,750] ERROR
>>>>>> {org.apache.stratos.messaging.message.receiver.cluster.status.ClusterStatusEventMessageDelegator}
>>>>>> -  Failed to retrieve cluster status event message
>>>>>> java.lang.NullPointerException
>>>>>> at
>>>>>> org.apache.stratos.cloud.controller.iaases.kubernetes.KubernetesIaas.removeKubernetesServices(KubernetesIaas.java:1025)
>>>>>> at
>>>>>> org.apache.stratos.cloud.controller.messaging.topology.TopologyBuilder.handleClusterTerminatingEvent(TopologyBuilder.java:1068)
>>>>>> at
>>>>>> org.apache.stratos.cloud.controller.messaging.receiver.cluster.status.ClusterStatusTopicReceiver$5.onEvent(ClusterStatusTopicReceiver.java:86)
>>>>>> at
>>>>>> org.apache.stratos.messaging.listener.EventListener.update(EventListener.java:42)
>>>>>> at java.util.Observable.notifyObservers(Observable.java:159)
>>>>>> at
>>>>>> org.apache.stratos.messaging.event.EventObservable.notifyEventListeners(EventObservable.java:51)
>>>>>> at
>>>>>> org.apache.stratos.messaging.message.processor.cluster.status.ClusterStatusClusterTerminatingMessageProcessor.process(ClusterStatusClusterTerminatingMessageProcessor.java:48)
>>>>>> at
>>>>>> org.apache.stratos.messaging.message.processor.cluster.status.ClusterStatusClusterTerminatedMessageProcessor.process(ClusterStatusClusterTerminatedMessageProcessor.java:55)
>>>>>> at
>>>>>> org.apache.stratos.messaging.message.processor.cluster.status.ClusterStatusClusterInactivateMessageProcessor.process(ClusterStatusClusterInactivateMessageProcessor.java:52)
>>>>>> at
>>>>>> org.apache.stratos.messaging.message.processor.cluster.status.ClusterStatusClusterActivatedMessageProcessor.process(ClusterStatusClusterActivatedMessageProcessor.java:52)
>>>>>> at
>>>>>> org.apache.stratos.messaging.message.processor.cluster.status.ClusterStatusClusterResetMessageProcessor.process(ClusterStatusClusterResetMessageProcessor.java:52)
>>>>>> at
>>>>>> org.apache.stratos.messaging.message.processor.MessageProcessorChain.process(MessageProcessorChain.java:61)
>>>>>> at
>>>>>> org.apache.stratos.messaging.message.receiver.cluster.status.ClusterStatusEventMessageDelegator.run(ClusterStatusEventMessageDelegator.java:71)
>>>>>> at
>>>>>> java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
>>>>>> at
>>>>>> java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
>>>>>> at java.lang.Thread.run(Thread.java:745)
>>>>>>
>>>>>>
>>>>>>
>>>>>>
>>>>>> On Mon, Sep 21, 2015 at 12:30 AM, Imesh Gunaratne <im...@apache.org>
>>>>>> wrote:
>>>>>>
>>>>>>> I have now refined this logic to trim all labels to 62 characters
>>>>>>> and added following as labels:
>>>>>>>
>>>>>>> Pod: Application-ID, Cluster-Instance-ID, Member-ID
>>>>>>> Service: Application-ID, Cluster-ID, Port-Name
>>>>>>>
>>>>>>> Now I'm seeing a different problem. When an application is
>>>>>>> un-deployed, services do not get deleted. We need to fix this.
>>>>>>>
>>>>>>> Thanks
>>>>>>>
>>>>>>> On Mon, Sep 21, 2015 at 12:12 AM, Gayan Gunarathne <ga...@wso2.com>
>>>>>>> wrote:
>>>>>>>
>>>>>>>> Hi Akila,
>>>>>>>>
>>>>>>>> On Sun, Sep 20, 2015 at 11:30 PM, Akila Ravihansa Perera <
>>>>>>>> ravihansa@wso2.com> wrote:
>>>>>>>>
>>>>>>>>> Hi Gayan,
>>>>>>>>>
>>>>>>>>> +1 for properly identifying attributes to be used for labels and
>>>>>>>>> annotations. As I mentioned earlier I tried to use them as labels but ran
>>>>>>>>> into length limitation issues.
>>>>>>>>>
>>>>>>>>> memberId and clusterId cannot be used directly since they are
>>>>>>>>> generated as follows;
>>>>>>>>>
>>>>>>>>> memberId = clusterId + UUID
>>>>>>>>> clusterId = applicationId + "." + alias + "." + cartridgeType +
>>>>>>>>> ".domain"
>>>>>>>>>
>>>>>>>>> As you can see those can go be beyond 63 characters since we don't
>>>>>>>>> have a limitation for applicationId length. I'm -1 on imposing a character
>>>>>>>>> limitation to applicationId only to get away with Kubernetes restriction.
>>>>>>>>> What if some other provider comes out with a different limitation? It
>>>>>>>>> should be restricted but only for good reasons concerning to Stratos.
>>>>>>>>>
>>>>>>>>
>>>>>>>> Right. Let's say we are not going to restrict the application id
>>>>>>>> length. So in that case we won't be able to use the application id as a pod
>>>>>>>> label.
>>>>>>>> IMO we used application id to identify the application. As it is a
>>>>>>>> identifier I think it is OK to have a restriction.I think using a
>>>>>>>> description for the application id is not practical.Also in most of the use
>>>>>>>> cases identifiers comes up with some length restrictions.If we don't have a
>>>>>>>> restriction on application id , users can enter description sort of a
>>>>>>>> application id.
>>>>>>>>
>>>>>>>>
>>>>>>>>>
>>>>>>>>> I had an offline chat with Imesh and we were discussing about
>>>>>>>>> implementing a sequence number based approach for generating clusterId and
>>>>>>>>> memberId without using UUIDs. Any thoughts?
>>>>>>>>>
>>>>>>>>
>>>>>>>>  I am also +1 for this thinking. So how we are going to generate
>>>>>>>> the cluster id? I think we need to generate the meaningful ids.
>>>>>>>>
>>>>>>>>
>>>>>>>>>
>>>>>>>>> Thanks.
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>
>>>>>>>>> Thanks,
>>>>>>>> Gayan
>>>>>>>>
>>>>>>>>>
>>>>>>>>>
>>>>>>>>> On Sun, Sep 20, 2015 at 10:55 PM, Gayan Gunarathne <
>>>>>>>>> gayang@wso2.com> wrote:
>>>>>>>>>
>>>>>>>>>> As per Kubernetes definition I think we are using labels and
>>>>>>>>>> annotation in a wrong way.As annotations are arbitrary non-identifying
>>>>>>>>>> metadata , they might not shown them in their UI/CLI
>>>>>>>>>>
>>>>>>>>>> I think first we need to recognize what are the identifiers for
>>>>>>>>>> the pod.In think we may need to use member id , application id
>>>>>>>>>>
>>>>>>>>>> Also what is the ration behind of using the md5Hex of the member
>>>>>>>>>> id as a identifier. IMO we can directly use the member id. As member id is
>>>>>>>>>> UUID it won't be more than 63 characters.
>>>>>>>>>>
>>>>>>>>>> Thanks,
>>>>>>>>>> Gayan
>>>>>>>>>>
>>>>>>>>>> On Sun, Sep 20, 2015 at 10:13 PM, Imesh Gunaratne <
>>>>>>>>>> imesh@apache.org> wrote:
>>>>>>>>>>
>>>>>>>>>>> Hi Akila,
>>>>>>>>>>>
>>>>>>>>>>> Right, I get your point on the length limitation, but this is
>>>>>>>>>>> how Kubernetes has described Labels and Annotations:
>>>>>>>>>>>
>>>>>>>>>>> *We'll eventually index and reverse-index labels for efficient
>>>>>>>>>>> queries and watches, use them to sort and group in UIs and CLIs, etc. We
>>>>>>>>>>> don't want to pollute labels with non-identifying, especially large and/or
>>>>>>>>>>> structured, data. Non-identifying information should be recorded using
>>>>>>>>>>> annotations.*
>>>>>>>>>>>
>>>>>>>>>>> The idea is to use labels for all identifiers.
>>>>>>>>>>>
>>>>>>>>>>> http://kubernetes.io/v1.0/docs/user-guide/labels.html
>>>>>>>>>>>
>>>>>>>>>>> On Sun, Sep 20, 2015 at 10:05 PM, Akila Ravihansa Perera <
>>>>>>>>>>> ravihansa@wso2.com> wrote:
>>>>>>>>>>>
>>>>>>>>>>>> Hi Imesh,
>>>>>>>>>>>>
>>>>>>>>>>>> Yes, I tried adding them as labels but ran into a problem since
>>>>>>>>>>>> label length cannot be greater than 63 characters. I'm not sure why we
>>>>>>>>>>>> don't see annotations in the UI for pods created. But I can see the
>>>>>>>>>>>> annotations added for services. Might have to raise this in K8s mailing
>>>>>>>>>>>> list.
>>>>>>>>>>>>
>>>>>>>>>>>> Thanks.
>>>>>>>>>>>>
>>>>>>>>>>>> On Sun, Sep 20, 2015 at 10:00 PM, Imesh Gunaratne <
>>>>>>>>>>>> imesh@apache.org> wrote:
>>>>>>>>>>>>
>>>>>>>>>>>>> Hi Akila,
>>>>>>>>>>>>>
>>>>>>>>>>>>> We do not query pod labels, its handled by the Kubernetes
>>>>>>>>>>>>> service selector, at the moment this is called "name". I have now fixed
>>>>>>>>>>>>> this issue locally, will push in few minutes.
>>>>>>>>>>>>>
>>>>>>>>>>>>> In addition I think it would be better to use labels instead
>>>>>>>>>>>>> of annotations because they are not visible in the UI:
>>>>>>>>>>>>>
>>>>>>>>>>>>>
>>>>>>>>>>>>>
>>>>>>>>>>>>> Thanks
>>>>>>>>>>>>>
>>>>>>>>>>>>> On Sun, Sep 20, 2015 at 9:52 PM, Akila Ravihansa Perera <
>>>>>>>>>>>>> ravihansa@wso2.com> wrote:
>>>>>>>>>>>>>
>>>>>>>>>>>>>> Hi Imesh,
>>>>>>>>>>>>>>
>>>>>>>>>>>>>> Where do we query those pod labels?
>>>>>>>>>>>>>>
>>>>>>>>>>>>>> I'm in the process of moving label names to constants. I can
>>>>>>>>>>>>>> apply the same in all the places. I think better to change that label to
>>>>>>>>>>>>>> md5Hex-memberId to avoid any confusion when troubleshooting issues. One
>>>>>>>>>>>>>> might mistakenly take that as the actual memberId when it is not the case.
>>>>>>>>>>>>>>
>>>>>>>>>>>>>> Thanks.
>>>>>>>>>>>>>>
>>>>>>>>>>>>>> On Sun, Sep 20, 2015 at 9:40 PM, Imesh Gunaratne <
>>>>>>>>>>>>>> imesh@apache.org> wrote:
>>>>>>>>>>>>>>
>>>>>>>>>>>>>>> I'm seeing a problem, we have removed the "name" label in
>>>>>>>>>>>>>>> the pod and added a new label called "md5Hex-memberId". Due to this load
>>>>>>>>>>>>>>> balancing would not work:
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>> Map<String, String> podLabels = new HashMap<>();
>>>>>>>>>>>>>>> podLabels.put("md5Hex-memberId", DigestUtils.md5Hex(memberContext.getMemberId()));
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>> Map<String, String> podAnnotations = new HashMap<>();
>>>>>>>>>>>>>>> podAnnotations.put("memberId", memberContext.getMemberId());
>>>>>>>>>>>>>>> podAnnotations.put("cartridgeType", memberContext.getCartridgeType());
>>>>>>>>>>>>>>> podAnnotations.put("applicationId", memberContext.getApplicationId());
>>>>>>>>>>>>>>> podAnnotations.put("clusterId", memberContext.getClusterId());
>>>>>>>>>>>>>>> podAnnotations.put("clusterInstanceId", memberContext.getClusterInstanceId());
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>> kubernetesApi.createPod(podId, podName, podLabels, podAnnotations, dockerImage, cpu, memory, ports,
>>>>>>>>>>>>>>>         environmentVariables);
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>> On Sun, Sep 20, 2015 at 2:51 PM, Akila Ravihansa Perera <
>>>>>>>>>>>>>>> ravihansa@wso2.com> wrote:
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>> Hi all,
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>> I've pushed release artifacts to staging repo at [1].
>>>>>>>>>>>>>>>> Please take few mins to verify the release. Also I've pushed
>>>>>>>>>>>>>>>> cartridge-base, php and tomcat Docker images with 4.1.3 artifacts to
>>>>>>>>>>>>>>>> DockerHub.
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>> [1]
>>>>>>>>>>>>>>>> https://repository.apache.org/content/repositories/orgapachestratos-1057/
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>> Thanks.
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>> --
>>>>>>>>>>>>>>>> Akila Ravihansa Perera
>>>>>>>>>>>>>>>> WSO2 Inc.;  http://wso2.com/
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>> Blog: http://ravihansa3000.blogspot.com
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>> --
>>>>>>>>>>>>>>> Imesh Gunaratne
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>> Senior Technical Lead, WSO2
>>>>>>>>>>>>>>> Committer & PMC Member, Apache Stratos
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>
>>>>>>>>>>>>>>
>>>>>>>>>>>>>>
>>>>>>>>>>>>>> --
>>>>>>>>>>>>>> Akila Ravihansa Perera
>>>>>>>>>>>>>> WSO2 Inc.;  http://wso2.com/
>>>>>>>>>>>>>>
>>>>>>>>>>>>>> Blog: http://ravihansa3000.blogspot.com
>>>>>>>>>>>>>>
>>>>>>>>>>>>>
>>>>>>>>>>>>>
>>>>>>>>>>>>>
>>>>>>>>>>>>> --
>>>>>>>>>>>>> Imesh Gunaratne
>>>>>>>>>>>>>
>>>>>>>>>>>>> Senior Technical Lead, WSO2
>>>>>>>>>>>>> Committer & PMC Member, Apache Stratos
>>>>>>>>>>>>>
>>>>>>>>>>>>
>>>>>>>>>>>>
>>>>>>>>>>>>
>>>>>>>>>>>> --
>>>>>>>>>>>> Akila Ravihansa Perera
>>>>>>>>>>>> WSO2 Inc.;  http://wso2.com/
>>>>>>>>>>>>
>>>>>>>>>>>> Blog: http://ravihansa3000.blogspot.com
>>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>> --
>>>>>>>>>>> Imesh Gunaratne
>>>>>>>>>>>
>>>>>>>>>>> Senior Technical Lead, WSO2
>>>>>>>>>>> Committer & PMC Member, Apache Stratos
>>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>> --
>>>>>>>>>>
>>>>>>>>>> Gayan Gunarathne
>>>>>>>>>> Technical Lead, WSO2 Inc. (http://wso2.com)
>>>>>>>>>> Committer & PMC Member, Apache Stratos
>>>>>>>>>> email : gayang@wso2.com  | mobile : +94 775030545
>>>>>>>>>> <%2B94%20766819985>
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>
>>>>>>>>> --
>>>>>>>>> Akila Ravihansa Perera
>>>>>>>>> WSO2 Inc.;  http://wso2.com/
>>>>>>>>>
>>>>>>>>> Blog: http://ravihansa3000.blogspot.com
>>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>> --
>>>>>>>>
>>>>>>>> Gayan Gunarathne
>>>>>>>> Technical Lead, WSO2 Inc. (http://wso2.com)
>>>>>>>> Committer & PMC Member, Apache Stratos
>>>>>>>> email : gayang@wso2.com  | mobile : +94 775030545
>>>>>>>> <%2B94%20766819985>
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>> --
>>>>>>> Imesh Gunaratne
>>>>>>>
>>>>>>> Senior Technical Lead, WSO2
>>>>>>> Committer & PMC Member, Apache Stratos
>>>>>>>
>>>>>>
>>>>>>
>>>>>>
>>>>>> --
>>>>>> Akila Ravihansa Perera
>>>>>> WSO2 Inc.;  http://wso2.com/
>>>>>>
>>>>>> Blog: http://ravihansa3000.blogspot.com
>>>>>>
>>>>>
>>>>>
>>>>>
>>>>> --
>>>>>
>>>>> Gayan Gunarathne
>>>>> Technical Lead, WSO2 Inc. (http://wso2.com)
>>>>> Committer & PMC Member, Apache Stratos
>>>>> email : gayang@wso2.com  | mobile : +94 775030545 <%2B94%20766819985>
>>>>>
>>>>>
>>>>>
>>>>
>>>>
>>>>
>>>> --
>>>> Imesh Gunaratne
>>>>
>>>> Senior Technical Lead, WSO2
>>>> Committer & PMC Member, Apache Stratos
>>>>
>>>
>>>
>>>
>>> --
>>> Imesh Gunaratne
>>>
>>> Senior Technical Lead, WSO2
>>> Committer & PMC Member, Apache Stratos
>>>
>>
>>
>>
>> --
>>
>> Gayan Gunarathne
>> Technical Lead, WSO2 Inc. (http://wso2.com)
>> Committer & PMC Member, Apache Stratos
>> email : gayang@wso2.com  | mobile : +94 775030545 <%2B94%20766819985>
>>
>>
>>
>
>
>
> --
>
> Gayan Gunarathne
> Technical Lead, WSO2 Inc. (http://wso2.com)
> Committer & PMC Member, Apache Stratos
> email : gayang@wso2.com  | mobile : +94 775030545 <%2B94%20766819985>
>
>
>



-- 
Akila Ravihansa Perera
WSO2 Inc.;  http://wso2.com/

Blog: http://ravihansa3000.blogspot.com

Re: Releasing Stratos 4.1.3

Posted by Gayan Gunarathne <ga...@wso2.com>.
Based on the offline chat with Imesh,Akila, Reka , we decided to maintain
the  map of KubernetesService in a ClusterContext against the cluster
instance id.

Then we can pick the Kubernetes services based on the cluster instance id.

Thanks,
Gayan

On Mon, Sep 21, 2015 at 10:42 AM, Gayan Gunarathne <ga...@wso2.com> wrote:

> We are maintaining the accessURL in the cluster. In the multi-region
> deployment it is same cluster.IMO we need to maintain the accessURL in
> Kubernetes Service.
>
> Thanks,
> Gayan
>
> On Mon, Sep 21, 2015 at 1:07 AM, Imesh Gunaratne <im...@apache.org> wrote:
>
>> I found another problem when running on multiple network partitions;
>> access URLs shown in the topology view are the same for both application
>> instances:
>>
>>
>>
>> ​
>> ​
>>
>>
>>
>> On Mon, Sep 21, 2015 at 1:04 AM, Imesh Gunaratne <im...@apache.org>
>> wrote:
>>
>>> Labels are now shown as below:
>>>
>>>
>>> ​
>>>
>>> ​
>>>
>>> On Mon, Sep 21, 2015 at 12:57 AM, Gayan Gunarathne <ga...@wso2.com>
>>> wrote:
>>>
>>>> Seems there is a  commit missing when merging the changes.
>>>>
>>>> Setting the setKubernetesClusterId when creating the Kubenetes service
>>>>
>>>> Now I will add that commit.
>>>>
>>>> Thanks,
>>>> Gayan
>>>>
>>>> On Mon, Sep 21, 2015 at 12:35 AM, Akila Ravihansa Perera <
>>>> ravihansa@wso2.com> wrote:
>>>>
>>>>> Great!
>>>>>
>>>>> I think I found the problem with K8s services not getting cleaned up.
>>>>> I see a NPE at removeKubernetesServices(KubernetesIaas.java:1025) when
>>>>> undeploying an application.
>>>>>
>>>>> [2015-09-21 00:31:16,750] ERROR
>>>>> {org.apache.stratos.messaging.message.receiver.cluster.status.ClusterStatusEventMessageDelegator}
>>>>> -  Failed to retrieve cluster status event message
>>>>> java.lang.NullPointerException
>>>>> at
>>>>> org.apache.stratos.cloud.controller.iaases.kubernetes.KubernetesIaas.removeKubernetesServices(KubernetesIaas.java:1025)
>>>>> at
>>>>> org.apache.stratos.cloud.controller.messaging.topology.TopologyBuilder.handleClusterTerminatingEvent(TopologyBuilder.java:1068)
>>>>> at
>>>>> org.apache.stratos.cloud.controller.messaging.receiver.cluster.status.ClusterStatusTopicReceiver$5.onEvent(ClusterStatusTopicReceiver.java:86)
>>>>> at
>>>>> org.apache.stratos.messaging.listener.EventListener.update(EventListener.java:42)
>>>>> at java.util.Observable.notifyObservers(Observable.java:159)
>>>>> at
>>>>> org.apache.stratos.messaging.event.EventObservable.notifyEventListeners(EventObservable.java:51)
>>>>> at
>>>>> org.apache.stratos.messaging.message.processor.cluster.status.ClusterStatusClusterTerminatingMessageProcessor.process(ClusterStatusClusterTerminatingMessageProcessor.java:48)
>>>>> at
>>>>> org.apache.stratos.messaging.message.processor.cluster.status.ClusterStatusClusterTerminatedMessageProcessor.process(ClusterStatusClusterTerminatedMessageProcessor.java:55)
>>>>> at
>>>>> org.apache.stratos.messaging.message.processor.cluster.status.ClusterStatusClusterInactivateMessageProcessor.process(ClusterStatusClusterInactivateMessageProcessor.java:52)
>>>>> at
>>>>> org.apache.stratos.messaging.message.processor.cluster.status.ClusterStatusClusterActivatedMessageProcessor.process(ClusterStatusClusterActivatedMessageProcessor.java:52)
>>>>> at
>>>>> org.apache.stratos.messaging.message.processor.cluster.status.ClusterStatusClusterResetMessageProcessor.process(ClusterStatusClusterResetMessageProcessor.java:52)
>>>>> at
>>>>> org.apache.stratos.messaging.message.processor.MessageProcessorChain.process(MessageProcessorChain.java:61)
>>>>> at
>>>>> org.apache.stratos.messaging.message.receiver.cluster.status.ClusterStatusEventMessageDelegator.run(ClusterStatusEventMessageDelegator.java:71)
>>>>> at
>>>>> java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
>>>>> at
>>>>> java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
>>>>> at java.lang.Thread.run(Thread.java:745)
>>>>>
>>>>>
>>>>>
>>>>>
>>>>> On Mon, Sep 21, 2015 at 12:30 AM, Imesh Gunaratne <im...@apache.org>
>>>>> wrote:
>>>>>
>>>>>> I have now refined this logic to trim all labels to 62 characters and
>>>>>> added following as labels:
>>>>>>
>>>>>> Pod: Application-ID, Cluster-Instance-ID, Member-ID
>>>>>> Service: Application-ID, Cluster-ID, Port-Name
>>>>>>
>>>>>> Now I'm seeing a different problem. When an application is
>>>>>> un-deployed, services do not get deleted. We need to fix this.
>>>>>>
>>>>>> Thanks
>>>>>>
>>>>>> On Mon, Sep 21, 2015 at 12:12 AM, Gayan Gunarathne <ga...@wso2.com>
>>>>>> wrote:
>>>>>>
>>>>>>> Hi Akila,
>>>>>>>
>>>>>>> On Sun, Sep 20, 2015 at 11:30 PM, Akila Ravihansa Perera <
>>>>>>> ravihansa@wso2.com> wrote:
>>>>>>>
>>>>>>>> Hi Gayan,
>>>>>>>>
>>>>>>>> +1 for properly identifying attributes to be used for labels and
>>>>>>>> annotations. As I mentioned earlier I tried to use them as labels but ran
>>>>>>>> into length limitation issues.
>>>>>>>>
>>>>>>>> memberId and clusterId cannot be used directly since they are
>>>>>>>> generated as follows;
>>>>>>>>
>>>>>>>> memberId = clusterId + UUID
>>>>>>>> clusterId = applicationId + "." + alias + "." + cartridgeType +
>>>>>>>> ".domain"
>>>>>>>>
>>>>>>>> As you can see those can go be beyond 63 characters since we don't
>>>>>>>> have a limitation for applicationId length. I'm -1 on imposing a character
>>>>>>>> limitation to applicationId only to get away with Kubernetes restriction.
>>>>>>>> What if some other provider comes out with a different limitation? It
>>>>>>>> should be restricted but only for good reasons concerning to Stratos.
>>>>>>>>
>>>>>>>
>>>>>>> Right. Let's say we are not going to restrict the application id
>>>>>>> length. So in that case we won't be able to use the application id as a pod
>>>>>>> label.
>>>>>>> IMO we used application id to identify the application. As it is a
>>>>>>> identifier I think it is OK to have a restriction.I think using a
>>>>>>> description for the application id is not practical.Also in most of the use
>>>>>>> cases identifiers comes up with some length restrictions.If we don't have a
>>>>>>> restriction on application id , users can enter description sort of a
>>>>>>> application id.
>>>>>>>
>>>>>>>
>>>>>>>>
>>>>>>>> I had an offline chat with Imesh and we were discussing about
>>>>>>>> implementing a sequence number based approach for generating clusterId and
>>>>>>>> memberId without using UUIDs. Any thoughts?
>>>>>>>>
>>>>>>>
>>>>>>>  I am also +1 for this thinking. So how we are going to generate the
>>>>>>> cluster id? I think we need to generate the meaningful ids.
>>>>>>>
>>>>>>>
>>>>>>>>
>>>>>>>> Thanks.
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>> Thanks,
>>>>>>> Gayan
>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>> On Sun, Sep 20, 2015 at 10:55 PM, Gayan Gunarathne <gayang@wso2.com
>>>>>>>> > wrote:
>>>>>>>>
>>>>>>>>> As per Kubernetes definition I think we are using labels and
>>>>>>>>> annotation in a wrong way.As annotations are arbitrary non-identifying
>>>>>>>>> metadata , they might not shown them in their UI/CLI
>>>>>>>>>
>>>>>>>>> I think first we need to recognize what are the identifiers for
>>>>>>>>> the pod.In think we may need to use member id , application id
>>>>>>>>>
>>>>>>>>> Also what is the ration behind of using the md5Hex of the member
>>>>>>>>> id as a identifier. IMO we can directly use the member id. As member id is
>>>>>>>>> UUID it won't be more than 63 characters.
>>>>>>>>>
>>>>>>>>> Thanks,
>>>>>>>>> Gayan
>>>>>>>>>
>>>>>>>>> On Sun, Sep 20, 2015 at 10:13 PM, Imesh Gunaratne <
>>>>>>>>> imesh@apache.org> wrote:
>>>>>>>>>
>>>>>>>>>> Hi Akila,
>>>>>>>>>>
>>>>>>>>>> Right, I get your point on the length limitation, but this is how
>>>>>>>>>> Kubernetes has described Labels and Annotations:
>>>>>>>>>>
>>>>>>>>>> *We'll eventually index and reverse-index labels for efficient
>>>>>>>>>> queries and watches, use them to sort and group in UIs and CLIs, etc. We
>>>>>>>>>> don't want to pollute labels with non-identifying, especially large and/or
>>>>>>>>>> structured, data. Non-identifying information should be recorded using
>>>>>>>>>> annotations.*
>>>>>>>>>>
>>>>>>>>>> The idea is to use labels for all identifiers.
>>>>>>>>>>
>>>>>>>>>> http://kubernetes.io/v1.0/docs/user-guide/labels.html
>>>>>>>>>>
>>>>>>>>>> On Sun, Sep 20, 2015 at 10:05 PM, Akila Ravihansa Perera <
>>>>>>>>>> ravihansa@wso2.com> wrote:
>>>>>>>>>>
>>>>>>>>>>> Hi Imesh,
>>>>>>>>>>>
>>>>>>>>>>> Yes, I tried adding them as labels but ran into a problem since
>>>>>>>>>>> label length cannot be greater than 63 characters. I'm not sure why we
>>>>>>>>>>> don't see annotations in the UI for pods created. But I can see the
>>>>>>>>>>> annotations added for services. Might have to raise this in K8s mailing
>>>>>>>>>>> list.
>>>>>>>>>>>
>>>>>>>>>>> Thanks.
>>>>>>>>>>>
>>>>>>>>>>> On Sun, Sep 20, 2015 at 10:00 PM, Imesh Gunaratne <
>>>>>>>>>>> imesh@apache.org> wrote:
>>>>>>>>>>>
>>>>>>>>>>>> Hi Akila,
>>>>>>>>>>>>
>>>>>>>>>>>> We do not query pod labels, its handled by the Kubernetes
>>>>>>>>>>>> service selector, at the moment this is called "name". I have now fixed
>>>>>>>>>>>> this issue locally, will push in few minutes.
>>>>>>>>>>>>
>>>>>>>>>>>> In addition I think it would be better to use labels instead of
>>>>>>>>>>>> annotations because they are not visible in the UI:
>>>>>>>>>>>>
>>>>>>>>>>>>
>>>>>>>>>>>>
>>>>>>>>>>>> Thanks
>>>>>>>>>>>>
>>>>>>>>>>>> On Sun, Sep 20, 2015 at 9:52 PM, Akila Ravihansa Perera <
>>>>>>>>>>>> ravihansa@wso2.com> wrote:
>>>>>>>>>>>>
>>>>>>>>>>>>> Hi Imesh,
>>>>>>>>>>>>>
>>>>>>>>>>>>> Where do we query those pod labels?
>>>>>>>>>>>>>
>>>>>>>>>>>>> I'm in the process of moving label names to constants. I can
>>>>>>>>>>>>> apply the same in all the places. I think better to change that label to
>>>>>>>>>>>>> md5Hex-memberId to avoid any confusion when troubleshooting issues. One
>>>>>>>>>>>>> might mistakenly take that as the actual memberId when it is not the case.
>>>>>>>>>>>>>
>>>>>>>>>>>>> Thanks.
>>>>>>>>>>>>>
>>>>>>>>>>>>> On Sun, Sep 20, 2015 at 9:40 PM, Imesh Gunaratne <
>>>>>>>>>>>>> imesh@apache.org> wrote:
>>>>>>>>>>>>>
>>>>>>>>>>>>>> I'm seeing a problem, we have removed the "name" label in the
>>>>>>>>>>>>>> pod and added a new label called "md5Hex-memberId". Due to this load
>>>>>>>>>>>>>> balancing would not work:
>>>>>>>>>>>>>>
>>>>>>>>>>>>>> Map<String, String> podLabels = new HashMap<>();
>>>>>>>>>>>>>> podLabels.put("md5Hex-memberId", DigestUtils.md5Hex(memberContext.getMemberId()));
>>>>>>>>>>>>>>
>>>>>>>>>>>>>> Map<String, String> podAnnotations = new HashMap<>();
>>>>>>>>>>>>>> podAnnotations.put("memberId", memberContext.getMemberId());
>>>>>>>>>>>>>> podAnnotations.put("cartridgeType", memberContext.getCartridgeType());
>>>>>>>>>>>>>> podAnnotations.put("applicationId", memberContext.getApplicationId());
>>>>>>>>>>>>>> podAnnotations.put("clusterId", memberContext.getClusterId());
>>>>>>>>>>>>>> podAnnotations.put("clusterInstanceId", memberContext.getClusterInstanceId());
>>>>>>>>>>>>>>
>>>>>>>>>>>>>> kubernetesApi.createPod(podId, podName, podLabels, podAnnotations, dockerImage, cpu, memory, ports,
>>>>>>>>>>>>>>         environmentVariables);
>>>>>>>>>>>>>>
>>>>>>>>>>>>>>
>>>>>>>>>>>>>> On Sun, Sep 20, 2015 at 2:51 PM, Akila Ravihansa Perera <
>>>>>>>>>>>>>> ravihansa@wso2.com> wrote:
>>>>>>>>>>>>>>
>>>>>>>>>>>>>>> Hi all,
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>> I've pushed release artifacts to staging repo at [1]. Please
>>>>>>>>>>>>>>> take few mins to verify the release. Also I've pushed cartridge-base, php
>>>>>>>>>>>>>>> and tomcat Docker images with 4.1.3 artifacts to DockerHub.
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>> [1]
>>>>>>>>>>>>>>> https://repository.apache.org/content/repositories/orgapachestratos-1057/
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>> Thanks.
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>> --
>>>>>>>>>>>>>>> Akila Ravihansa Perera
>>>>>>>>>>>>>>> WSO2 Inc.;  http://wso2.com/
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>> Blog: http://ravihansa3000.blogspot.com
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>
>>>>>>>>>>>>>>
>>>>>>>>>>>>>>
>>>>>>>>>>>>>> --
>>>>>>>>>>>>>> Imesh Gunaratne
>>>>>>>>>>>>>>
>>>>>>>>>>>>>> Senior Technical Lead, WSO2
>>>>>>>>>>>>>> Committer & PMC Member, Apache Stratos
>>>>>>>>>>>>>>
>>>>>>>>>>>>>
>>>>>>>>>>>>>
>>>>>>>>>>>>>
>>>>>>>>>>>>> --
>>>>>>>>>>>>> Akila Ravihansa Perera
>>>>>>>>>>>>> WSO2 Inc.;  http://wso2.com/
>>>>>>>>>>>>>
>>>>>>>>>>>>> Blog: http://ravihansa3000.blogspot.com
>>>>>>>>>>>>>
>>>>>>>>>>>>
>>>>>>>>>>>>
>>>>>>>>>>>>
>>>>>>>>>>>> --
>>>>>>>>>>>> Imesh Gunaratne
>>>>>>>>>>>>
>>>>>>>>>>>> Senior Technical Lead, WSO2
>>>>>>>>>>>> Committer & PMC Member, Apache Stratos
>>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>> --
>>>>>>>>>>> Akila Ravihansa Perera
>>>>>>>>>>> WSO2 Inc.;  http://wso2.com/
>>>>>>>>>>>
>>>>>>>>>>> Blog: http://ravihansa3000.blogspot.com
>>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>> --
>>>>>>>>>> Imesh Gunaratne
>>>>>>>>>>
>>>>>>>>>> Senior Technical Lead, WSO2
>>>>>>>>>> Committer & PMC Member, Apache Stratos
>>>>>>>>>>
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>
>>>>>>>>> --
>>>>>>>>>
>>>>>>>>> Gayan Gunarathne
>>>>>>>>> Technical Lead, WSO2 Inc. (http://wso2.com)
>>>>>>>>> Committer & PMC Member, Apache Stratos
>>>>>>>>> email : gayang@wso2.com  | mobile : +94 775030545
>>>>>>>>> <%2B94%20766819985>
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>> --
>>>>>>>> Akila Ravihansa Perera
>>>>>>>> WSO2 Inc.;  http://wso2.com/
>>>>>>>>
>>>>>>>> Blog: http://ravihansa3000.blogspot.com
>>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>> --
>>>>>>>
>>>>>>> Gayan Gunarathne
>>>>>>> Technical Lead, WSO2 Inc. (http://wso2.com)
>>>>>>> Committer & PMC Member, Apache Stratos
>>>>>>> email : gayang@wso2.com  | mobile : +94 775030545
>>>>>>> <%2B94%20766819985>
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>
>>>>>>
>>>>>>
>>>>>> --
>>>>>> Imesh Gunaratne
>>>>>>
>>>>>> Senior Technical Lead, WSO2
>>>>>> Committer & PMC Member, Apache Stratos
>>>>>>
>>>>>
>>>>>
>>>>>
>>>>> --
>>>>> Akila Ravihansa Perera
>>>>> WSO2 Inc.;  http://wso2.com/
>>>>>
>>>>> Blog: http://ravihansa3000.blogspot.com
>>>>>
>>>>
>>>>
>>>>
>>>> --
>>>>
>>>> Gayan Gunarathne
>>>> Technical Lead, WSO2 Inc. (http://wso2.com)
>>>> Committer & PMC Member, Apache Stratos
>>>> email : gayang@wso2.com  | mobile : +94 775030545 <%2B94%20766819985>
>>>>
>>>>
>>>>
>>>
>>>
>>>
>>> --
>>> Imesh Gunaratne
>>>
>>> Senior Technical Lead, WSO2
>>> Committer & PMC Member, Apache Stratos
>>>
>>
>>
>>
>> --
>> Imesh Gunaratne
>>
>> Senior Technical Lead, WSO2
>> Committer & PMC Member, Apache Stratos
>>
>
>
>
> --
>
> Gayan Gunarathne
> Technical Lead, WSO2 Inc. (http://wso2.com)
> Committer & PMC Member, Apache Stratos
> email : gayang@wso2.com  | mobile : +94 775030545 <%2B94%20766819985>
>
>
>



-- 

Gayan Gunarathne
Technical Lead, WSO2 Inc. (http://wso2.com)
Committer & PMC Member, Apache Stratos
email : gayang@wso2.com  | mobile : +94 775030545 <%2B94%20766819985>

Re: Releasing Stratos 4.1.3

Posted by Gayan Gunarathne <ga...@wso2.com>.
We are maintaining the accessURL in the cluster. In the multi-region
deployment it is same cluster.IMO we need to maintain the accessURL in
Kubernetes Service.

Thanks,
Gayan

On Mon, Sep 21, 2015 at 1:07 AM, Imesh Gunaratne <im...@apache.org> wrote:

> I found another problem when running on multiple network partitions;
> access URLs shown in the topology view are the same for both application
> instances:
>
>
>
> ​
> ​
>
>
>
> On Mon, Sep 21, 2015 at 1:04 AM, Imesh Gunaratne <im...@apache.org> wrote:
>
>> Labels are now shown as below:
>>
>>
>> ​
>>
>> ​
>>
>> On Mon, Sep 21, 2015 at 12:57 AM, Gayan Gunarathne <ga...@wso2.com>
>> wrote:
>>
>>> Seems there is a  commit missing when merging the changes.
>>>
>>> Setting the setKubernetesClusterId when creating the Kubenetes service
>>>
>>> Now I will add that commit.
>>>
>>> Thanks,
>>> Gayan
>>>
>>> On Mon, Sep 21, 2015 at 12:35 AM, Akila Ravihansa Perera <
>>> ravihansa@wso2.com> wrote:
>>>
>>>> Great!
>>>>
>>>> I think I found the problem with K8s services not getting cleaned up. I
>>>> see a NPE at removeKubernetesServices(KubernetesIaas.java:1025) when
>>>> undeploying an application.
>>>>
>>>> [2015-09-21 00:31:16,750] ERROR
>>>> {org.apache.stratos.messaging.message.receiver.cluster.status.ClusterStatusEventMessageDelegator}
>>>> -  Failed to retrieve cluster status event message
>>>> java.lang.NullPointerException
>>>> at
>>>> org.apache.stratos.cloud.controller.iaases.kubernetes.KubernetesIaas.removeKubernetesServices(KubernetesIaas.java:1025)
>>>> at
>>>> org.apache.stratos.cloud.controller.messaging.topology.TopologyBuilder.handleClusterTerminatingEvent(TopologyBuilder.java:1068)
>>>> at
>>>> org.apache.stratos.cloud.controller.messaging.receiver.cluster.status.ClusterStatusTopicReceiver$5.onEvent(ClusterStatusTopicReceiver.java:86)
>>>> at
>>>> org.apache.stratos.messaging.listener.EventListener.update(EventListener.java:42)
>>>> at java.util.Observable.notifyObservers(Observable.java:159)
>>>> at
>>>> org.apache.stratos.messaging.event.EventObservable.notifyEventListeners(EventObservable.java:51)
>>>> at
>>>> org.apache.stratos.messaging.message.processor.cluster.status.ClusterStatusClusterTerminatingMessageProcessor.process(ClusterStatusClusterTerminatingMessageProcessor.java:48)
>>>> at
>>>> org.apache.stratos.messaging.message.processor.cluster.status.ClusterStatusClusterTerminatedMessageProcessor.process(ClusterStatusClusterTerminatedMessageProcessor.java:55)
>>>> at
>>>> org.apache.stratos.messaging.message.processor.cluster.status.ClusterStatusClusterInactivateMessageProcessor.process(ClusterStatusClusterInactivateMessageProcessor.java:52)
>>>> at
>>>> org.apache.stratos.messaging.message.processor.cluster.status.ClusterStatusClusterActivatedMessageProcessor.process(ClusterStatusClusterActivatedMessageProcessor.java:52)
>>>> at
>>>> org.apache.stratos.messaging.message.processor.cluster.status.ClusterStatusClusterResetMessageProcessor.process(ClusterStatusClusterResetMessageProcessor.java:52)
>>>> at
>>>> org.apache.stratos.messaging.message.processor.MessageProcessorChain.process(MessageProcessorChain.java:61)
>>>> at
>>>> org.apache.stratos.messaging.message.receiver.cluster.status.ClusterStatusEventMessageDelegator.run(ClusterStatusEventMessageDelegator.java:71)
>>>> at
>>>> java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
>>>> at
>>>> java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
>>>> at java.lang.Thread.run(Thread.java:745)
>>>>
>>>>
>>>>
>>>>
>>>> On Mon, Sep 21, 2015 at 12:30 AM, Imesh Gunaratne <im...@apache.org>
>>>> wrote:
>>>>
>>>>> I have now refined this logic to trim all labels to 62 characters and
>>>>> added following as labels:
>>>>>
>>>>> Pod: Application-ID, Cluster-Instance-ID, Member-ID
>>>>> Service: Application-ID, Cluster-ID, Port-Name
>>>>>
>>>>> Now I'm seeing a different problem. When an application is
>>>>> un-deployed, services do not get deleted. We need to fix this.
>>>>>
>>>>> Thanks
>>>>>
>>>>> On Mon, Sep 21, 2015 at 12:12 AM, Gayan Gunarathne <ga...@wso2.com>
>>>>> wrote:
>>>>>
>>>>>> Hi Akila,
>>>>>>
>>>>>> On Sun, Sep 20, 2015 at 11:30 PM, Akila Ravihansa Perera <
>>>>>> ravihansa@wso2.com> wrote:
>>>>>>
>>>>>>> Hi Gayan,
>>>>>>>
>>>>>>> +1 for properly identifying attributes to be used for labels and
>>>>>>> annotations. As I mentioned earlier I tried to use them as labels but ran
>>>>>>> into length limitation issues.
>>>>>>>
>>>>>>> memberId and clusterId cannot be used directly since they are
>>>>>>> generated as follows;
>>>>>>>
>>>>>>> memberId = clusterId + UUID
>>>>>>> clusterId = applicationId + "." + alias + "." + cartridgeType +
>>>>>>> ".domain"
>>>>>>>
>>>>>>> As you can see those can go be beyond 63 characters since we don't
>>>>>>> have a limitation for applicationId length. I'm -1 on imposing a character
>>>>>>> limitation to applicationId only to get away with Kubernetes restriction.
>>>>>>> What if some other provider comes out with a different limitation? It
>>>>>>> should be restricted but only for good reasons concerning to Stratos.
>>>>>>>
>>>>>>
>>>>>> Right. Let's say we are not going to restrict the application id
>>>>>> length. So in that case we won't be able to use the application id as a pod
>>>>>> label.
>>>>>> IMO we used application id to identify the application. As it is a
>>>>>> identifier I think it is OK to have a restriction.I think using a
>>>>>> description for the application id is not practical.Also in most of the use
>>>>>> cases identifiers comes up with some length restrictions.If we don't have a
>>>>>> restriction on application id , users can enter description sort of a
>>>>>> application id.
>>>>>>
>>>>>>
>>>>>>>
>>>>>>> I had an offline chat with Imesh and we were discussing about
>>>>>>> implementing a sequence number based approach for generating clusterId and
>>>>>>> memberId without using UUIDs. Any thoughts?
>>>>>>>
>>>>>>
>>>>>>  I am also +1 for this thinking. So how we are going to generate the
>>>>>> cluster id? I think we need to generate the meaningful ids.
>>>>>>
>>>>>>
>>>>>>>
>>>>>>> Thanks.
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>> Thanks,
>>>>>> Gayan
>>>>>>
>>>>>>>
>>>>>>>
>>>>>>> On Sun, Sep 20, 2015 at 10:55 PM, Gayan Gunarathne <ga...@wso2.com>
>>>>>>> wrote:
>>>>>>>
>>>>>>>> As per Kubernetes definition I think we are using labels and
>>>>>>>> annotation in a wrong way.As annotations are arbitrary non-identifying
>>>>>>>> metadata , they might not shown them in their UI/CLI
>>>>>>>>
>>>>>>>> I think first we need to recognize what are the identifiers for the
>>>>>>>> pod.In think we may need to use member id , application id
>>>>>>>>
>>>>>>>> Also what is the ration behind of using the md5Hex of the member id
>>>>>>>> as a identifier. IMO we can directly use the member id. As member id is
>>>>>>>> UUID it won't be more than 63 characters.
>>>>>>>>
>>>>>>>> Thanks,
>>>>>>>> Gayan
>>>>>>>>
>>>>>>>> On Sun, Sep 20, 2015 at 10:13 PM, Imesh Gunaratne <imesh@apache.org
>>>>>>>> > wrote:
>>>>>>>>
>>>>>>>>> Hi Akila,
>>>>>>>>>
>>>>>>>>> Right, I get your point on the length limitation, but this is how
>>>>>>>>> Kubernetes has described Labels and Annotations:
>>>>>>>>>
>>>>>>>>> *We'll eventually index and reverse-index labels for efficient
>>>>>>>>> queries and watches, use them to sort and group in UIs and CLIs, etc. We
>>>>>>>>> don't want to pollute labels with non-identifying, especially large and/or
>>>>>>>>> structured, data. Non-identifying information should be recorded using
>>>>>>>>> annotations.*
>>>>>>>>>
>>>>>>>>> The idea is to use labels for all identifiers.
>>>>>>>>>
>>>>>>>>> http://kubernetes.io/v1.0/docs/user-guide/labels.html
>>>>>>>>>
>>>>>>>>> On Sun, Sep 20, 2015 at 10:05 PM, Akila Ravihansa Perera <
>>>>>>>>> ravihansa@wso2.com> wrote:
>>>>>>>>>
>>>>>>>>>> Hi Imesh,
>>>>>>>>>>
>>>>>>>>>> Yes, I tried adding them as labels but ran into a problem since
>>>>>>>>>> label length cannot be greater than 63 characters. I'm not sure why we
>>>>>>>>>> don't see annotations in the UI for pods created. But I can see the
>>>>>>>>>> annotations added for services. Might have to raise this in K8s mailing
>>>>>>>>>> list.
>>>>>>>>>>
>>>>>>>>>> Thanks.
>>>>>>>>>>
>>>>>>>>>> On Sun, Sep 20, 2015 at 10:00 PM, Imesh Gunaratne <
>>>>>>>>>> imesh@apache.org> wrote:
>>>>>>>>>>
>>>>>>>>>>> Hi Akila,
>>>>>>>>>>>
>>>>>>>>>>> We do not query pod labels, its handled by the Kubernetes
>>>>>>>>>>> service selector, at the moment this is called "name". I have now fixed
>>>>>>>>>>> this issue locally, will push in few minutes.
>>>>>>>>>>>
>>>>>>>>>>> In addition I think it would be better to use labels instead of
>>>>>>>>>>> annotations because they are not visible in the UI:
>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>> Thanks
>>>>>>>>>>>
>>>>>>>>>>> On Sun, Sep 20, 2015 at 9:52 PM, Akila Ravihansa Perera <
>>>>>>>>>>> ravihansa@wso2.com> wrote:
>>>>>>>>>>>
>>>>>>>>>>>> Hi Imesh,
>>>>>>>>>>>>
>>>>>>>>>>>> Where do we query those pod labels?
>>>>>>>>>>>>
>>>>>>>>>>>> I'm in the process of moving label names to constants. I can
>>>>>>>>>>>> apply the same in all the places. I think better to change that label to
>>>>>>>>>>>> md5Hex-memberId to avoid any confusion when troubleshooting issues. One
>>>>>>>>>>>> might mistakenly take that as the actual memberId when it is not the case.
>>>>>>>>>>>>
>>>>>>>>>>>> Thanks.
>>>>>>>>>>>>
>>>>>>>>>>>> On Sun, Sep 20, 2015 at 9:40 PM, Imesh Gunaratne <
>>>>>>>>>>>> imesh@apache.org> wrote:
>>>>>>>>>>>>
>>>>>>>>>>>>> I'm seeing a problem, we have removed the "name" label in the
>>>>>>>>>>>>> pod and added a new label called "md5Hex-memberId". Due to this load
>>>>>>>>>>>>> balancing would not work:
>>>>>>>>>>>>>
>>>>>>>>>>>>> Map<String, String> podLabels = new HashMap<>();
>>>>>>>>>>>>> podLabels.put("md5Hex-memberId", DigestUtils.md5Hex(memberContext.getMemberId()));
>>>>>>>>>>>>>
>>>>>>>>>>>>> Map<String, String> podAnnotations = new HashMap<>();
>>>>>>>>>>>>> podAnnotations.put("memberId", memberContext.getMemberId());
>>>>>>>>>>>>> podAnnotations.put("cartridgeType", memberContext.getCartridgeType());
>>>>>>>>>>>>> podAnnotations.put("applicationId", memberContext.getApplicationId());
>>>>>>>>>>>>> podAnnotations.put("clusterId", memberContext.getClusterId());
>>>>>>>>>>>>> podAnnotations.put("clusterInstanceId", memberContext.getClusterInstanceId());
>>>>>>>>>>>>>
>>>>>>>>>>>>> kubernetesApi.createPod(podId, podName, podLabels, podAnnotations, dockerImage, cpu, memory, ports,
>>>>>>>>>>>>>         environmentVariables);
>>>>>>>>>>>>>
>>>>>>>>>>>>>
>>>>>>>>>>>>> On Sun, Sep 20, 2015 at 2:51 PM, Akila Ravihansa Perera <
>>>>>>>>>>>>> ravihansa@wso2.com> wrote:
>>>>>>>>>>>>>
>>>>>>>>>>>>>> Hi all,
>>>>>>>>>>>>>>
>>>>>>>>>>>>>> I've pushed release artifacts to staging repo at [1]. Please
>>>>>>>>>>>>>> take few mins to verify the release. Also I've pushed cartridge-base, php
>>>>>>>>>>>>>> and tomcat Docker images with 4.1.3 artifacts to DockerHub.
>>>>>>>>>>>>>>
>>>>>>>>>>>>>> [1]
>>>>>>>>>>>>>> https://repository.apache.org/content/repositories/orgapachestratos-1057/
>>>>>>>>>>>>>>
>>>>>>>>>>>>>> Thanks.
>>>>>>>>>>>>>>
>>>>>>>>>>>>>> --
>>>>>>>>>>>>>> Akila Ravihansa Perera
>>>>>>>>>>>>>> WSO2 Inc.;  http://wso2.com/
>>>>>>>>>>>>>>
>>>>>>>>>>>>>> Blog: http://ravihansa3000.blogspot.com
>>>>>>>>>>>>>>
>>>>>>>>>>>>>
>>>>>>>>>>>>>
>>>>>>>>>>>>>
>>>>>>>>>>>>> --
>>>>>>>>>>>>> Imesh Gunaratne
>>>>>>>>>>>>>
>>>>>>>>>>>>> Senior Technical Lead, WSO2
>>>>>>>>>>>>> Committer & PMC Member, Apache Stratos
>>>>>>>>>>>>>
>>>>>>>>>>>>
>>>>>>>>>>>>
>>>>>>>>>>>>
>>>>>>>>>>>> --
>>>>>>>>>>>> Akila Ravihansa Perera
>>>>>>>>>>>> WSO2 Inc.;  http://wso2.com/
>>>>>>>>>>>>
>>>>>>>>>>>> Blog: http://ravihansa3000.blogspot.com
>>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>> --
>>>>>>>>>>> Imesh Gunaratne
>>>>>>>>>>>
>>>>>>>>>>> Senior Technical Lead, WSO2
>>>>>>>>>>> Committer & PMC Member, Apache Stratos
>>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>> --
>>>>>>>>>> Akila Ravihansa Perera
>>>>>>>>>> WSO2 Inc.;  http://wso2.com/
>>>>>>>>>>
>>>>>>>>>> Blog: http://ravihansa3000.blogspot.com
>>>>>>>>>>
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>
>>>>>>>>> --
>>>>>>>>> Imesh Gunaratne
>>>>>>>>>
>>>>>>>>> Senior Technical Lead, WSO2
>>>>>>>>> Committer & PMC Member, Apache Stratos
>>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>> --
>>>>>>>>
>>>>>>>> Gayan Gunarathne
>>>>>>>> Technical Lead, WSO2 Inc. (http://wso2.com)
>>>>>>>> Committer & PMC Member, Apache Stratos
>>>>>>>> email : gayang@wso2.com  | mobile : +94 775030545
>>>>>>>> <%2B94%20766819985>
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>> --
>>>>>>> Akila Ravihansa Perera
>>>>>>> WSO2 Inc.;  http://wso2.com/
>>>>>>>
>>>>>>> Blog: http://ravihansa3000.blogspot.com
>>>>>>>
>>>>>>
>>>>>>
>>>>>>
>>>>>> --
>>>>>>
>>>>>> Gayan Gunarathne
>>>>>> Technical Lead, WSO2 Inc. (http://wso2.com)
>>>>>> Committer & PMC Member, Apache Stratos
>>>>>> email : gayang@wso2.com  | mobile : +94 775030545 <%2B94%20766819985>
>>>>>>
>>>>>>
>>>>>>
>>>>>
>>>>>
>>>>>
>>>>> --
>>>>> Imesh Gunaratne
>>>>>
>>>>> Senior Technical Lead, WSO2
>>>>> Committer & PMC Member, Apache Stratos
>>>>>
>>>>
>>>>
>>>>
>>>> --
>>>> Akila Ravihansa Perera
>>>> WSO2 Inc.;  http://wso2.com/
>>>>
>>>> Blog: http://ravihansa3000.blogspot.com
>>>>
>>>
>>>
>>>
>>> --
>>>
>>> Gayan Gunarathne
>>> Technical Lead, WSO2 Inc. (http://wso2.com)
>>> Committer & PMC Member, Apache Stratos
>>> email : gayang@wso2.com  | mobile : +94 775030545 <%2B94%20766819985>
>>>
>>>
>>>
>>
>>
>>
>> --
>> Imesh Gunaratne
>>
>> Senior Technical Lead, WSO2
>> Committer & PMC Member, Apache Stratos
>>
>
>
>
> --
> Imesh Gunaratne
>
> Senior Technical Lead, WSO2
> Committer & PMC Member, Apache Stratos
>



-- 

Gayan Gunarathne
Technical Lead, WSO2 Inc. (http://wso2.com)
Committer & PMC Member, Apache Stratos
email : gayang@wso2.com  | mobile : +94 775030545 <%2B94%20766819985>

Re: Releasing Stratos 4.1.3

Posted by Imesh Gunaratne <im...@apache.org>.
I found another problem when running on multiple network partitions; access
URLs shown in the topology view are the same for both application instances:



​
​



On Mon, Sep 21, 2015 at 1:04 AM, Imesh Gunaratne <im...@apache.org> wrote:

> Labels are now shown as below:
>
>
> ​
>
> ​
>
> On Mon, Sep 21, 2015 at 12:57 AM, Gayan Gunarathne <ga...@wso2.com>
> wrote:
>
>> Seems there is a  commit missing when merging the changes.
>>
>> Setting the setKubernetesClusterId when creating the Kubenetes service
>>
>> Now I will add that commit.
>>
>> Thanks,
>> Gayan
>>
>> On Mon, Sep 21, 2015 at 12:35 AM, Akila Ravihansa Perera <
>> ravihansa@wso2.com> wrote:
>>
>>> Great!
>>>
>>> I think I found the problem with K8s services not getting cleaned up. I
>>> see a NPE at removeKubernetesServices(KubernetesIaas.java:1025) when
>>> undeploying an application.
>>>
>>> [2015-09-21 00:31:16,750] ERROR
>>> {org.apache.stratos.messaging.message.receiver.cluster.status.ClusterStatusEventMessageDelegator}
>>> -  Failed to retrieve cluster status event message
>>> java.lang.NullPointerException
>>> at
>>> org.apache.stratos.cloud.controller.iaases.kubernetes.KubernetesIaas.removeKubernetesServices(KubernetesIaas.java:1025)
>>> at
>>> org.apache.stratos.cloud.controller.messaging.topology.TopologyBuilder.handleClusterTerminatingEvent(TopologyBuilder.java:1068)
>>> at
>>> org.apache.stratos.cloud.controller.messaging.receiver.cluster.status.ClusterStatusTopicReceiver$5.onEvent(ClusterStatusTopicReceiver.java:86)
>>> at
>>> org.apache.stratos.messaging.listener.EventListener.update(EventListener.java:42)
>>> at java.util.Observable.notifyObservers(Observable.java:159)
>>> at
>>> org.apache.stratos.messaging.event.EventObservable.notifyEventListeners(EventObservable.java:51)
>>> at
>>> org.apache.stratos.messaging.message.processor.cluster.status.ClusterStatusClusterTerminatingMessageProcessor.process(ClusterStatusClusterTerminatingMessageProcessor.java:48)
>>> at
>>> org.apache.stratos.messaging.message.processor.cluster.status.ClusterStatusClusterTerminatedMessageProcessor.process(ClusterStatusClusterTerminatedMessageProcessor.java:55)
>>> at
>>> org.apache.stratos.messaging.message.processor.cluster.status.ClusterStatusClusterInactivateMessageProcessor.process(ClusterStatusClusterInactivateMessageProcessor.java:52)
>>> at
>>> org.apache.stratos.messaging.message.processor.cluster.status.ClusterStatusClusterActivatedMessageProcessor.process(ClusterStatusClusterActivatedMessageProcessor.java:52)
>>> at
>>> org.apache.stratos.messaging.message.processor.cluster.status.ClusterStatusClusterResetMessageProcessor.process(ClusterStatusClusterResetMessageProcessor.java:52)
>>> at
>>> org.apache.stratos.messaging.message.processor.MessageProcessorChain.process(MessageProcessorChain.java:61)
>>> at
>>> org.apache.stratos.messaging.message.receiver.cluster.status.ClusterStatusEventMessageDelegator.run(ClusterStatusEventMessageDelegator.java:71)
>>> at
>>> java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
>>> at
>>> java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
>>> at java.lang.Thread.run(Thread.java:745)
>>>
>>>
>>>
>>>
>>> On Mon, Sep 21, 2015 at 12:30 AM, Imesh Gunaratne <im...@apache.org>
>>> wrote:
>>>
>>>> I have now refined this logic to trim all labels to 62 characters and
>>>> added following as labels:
>>>>
>>>> Pod: Application-ID, Cluster-Instance-ID, Member-ID
>>>> Service: Application-ID, Cluster-ID, Port-Name
>>>>
>>>> Now I'm seeing a different problem. When an application is un-deployed,
>>>> services do not get deleted. We need to fix this.
>>>>
>>>> Thanks
>>>>
>>>> On Mon, Sep 21, 2015 at 12:12 AM, Gayan Gunarathne <ga...@wso2.com>
>>>> wrote:
>>>>
>>>>> Hi Akila,
>>>>>
>>>>> On Sun, Sep 20, 2015 at 11:30 PM, Akila Ravihansa Perera <
>>>>> ravihansa@wso2.com> wrote:
>>>>>
>>>>>> Hi Gayan,
>>>>>>
>>>>>> +1 for properly identifying attributes to be used for labels and
>>>>>> annotations. As I mentioned earlier I tried to use them as labels but ran
>>>>>> into length limitation issues.
>>>>>>
>>>>>> memberId and clusterId cannot be used directly since they are
>>>>>> generated as follows;
>>>>>>
>>>>>> memberId = clusterId + UUID
>>>>>> clusterId = applicationId + "." + alias + "." + cartridgeType +
>>>>>> ".domain"
>>>>>>
>>>>>> As you can see those can go be beyond 63 characters since we don't
>>>>>> have a limitation for applicationId length. I'm -1 on imposing a character
>>>>>> limitation to applicationId only to get away with Kubernetes restriction.
>>>>>> What if some other provider comes out with a different limitation? It
>>>>>> should be restricted but only for good reasons concerning to Stratos.
>>>>>>
>>>>>
>>>>> Right. Let's say we are not going to restrict the application id
>>>>> length. So in that case we won't be able to use the application id as a pod
>>>>> label.
>>>>> IMO we used application id to identify the application. As it is a
>>>>> identifier I think it is OK to have a restriction.I think using a
>>>>> description for the application id is not practical.Also in most of the use
>>>>> cases identifiers comes up with some length restrictions.If we don't have a
>>>>> restriction on application id , users can enter description sort of a
>>>>> application id.
>>>>>
>>>>>
>>>>>>
>>>>>> I had an offline chat with Imesh and we were discussing about
>>>>>> implementing a sequence number based approach for generating clusterId and
>>>>>> memberId without using UUIDs. Any thoughts?
>>>>>>
>>>>>
>>>>>  I am also +1 for this thinking. So how we are going to generate the
>>>>> cluster id? I think we need to generate the meaningful ids.
>>>>>
>>>>>
>>>>>>
>>>>>> Thanks.
>>>>>>
>>>>>>
>>>>>>
>>>>>> Thanks,
>>>>> Gayan
>>>>>
>>>>>>
>>>>>>
>>>>>> On Sun, Sep 20, 2015 at 10:55 PM, Gayan Gunarathne <ga...@wso2.com>
>>>>>> wrote:
>>>>>>
>>>>>>> As per Kubernetes definition I think we are using labels and
>>>>>>> annotation in a wrong way.As annotations are arbitrary non-identifying
>>>>>>> metadata , they might not shown them in their UI/CLI
>>>>>>>
>>>>>>> I think first we need to recognize what are the identifiers for the
>>>>>>> pod.In think we may need to use member id , application id
>>>>>>>
>>>>>>> Also what is the ration behind of using the md5Hex of the member id
>>>>>>> as a identifier. IMO we can directly use the member id. As member id is
>>>>>>> UUID it won't be more than 63 characters.
>>>>>>>
>>>>>>> Thanks,
>>>>>>> Gayan
>>>>>>>
>>>>>>> On Sun, Sep 20, 2015 at 10:13 PM, Imesh Gunaratne <im...@apache.org>
>>>>>>> wrote:
>>>>>>>
>>>>>>>> Hi Akila,
>>>>>>>>
>>>>>>>> Right, I get your point on the length limitation, but this is how
>>>>>>>> Kubernetes has described Labels and Annotations:
>>>>>>>>
>>>>>>>> *We'll eventually index and reverse-index labels for efficient
>>>>>>>> queries and watches, use them to sort and group in UIs and CLIs, etc. We
>>>>>>>> don't want to pollute labels with non-identifying, especially large and/or
>>>>>>>> structured, data. Non-identifying information should be recorded using
>>>>>>>> annotations.*
>>>>>>>>
>>>>>>>> The idea is to use labels for all identifiers.
>>>>>>>>
>>>>>>>> http://kubernetes.io/v1.0/docs/user-guide/labels.html
>>>>>>>>
>>>>>>>> On Sun, Sep 20, 2015 at 10:05 PM, Akila Ravihansa Perera <
>>>>>>>> ravihansa@wso2.com> wrote:
>>>>>>>>
>>>>>>>>> Hi Imesh,
>>>>>>>>>
>>>>>>>>> Yes, I tried adding them as labels but ran into a problem since
>>>>>>>>> label length cannot be greater than 63 characters. I'm not sure why we
>>>>>>>>> don't see annotations in the UI for pods created. But I can see the
>>>>>>>>> annotations added for services. Might have to raise this in K8s mailing
>>>>>>>>> list.
>>>>>>>>>
>>>>>>>>> Thanks.
>>>>>>>>>
>>>>>>>>> On Sun, Sep 20, 2015 at 10:00 PM, Imesh Gunaratne <
>>>>>>>>> imesh@apache.org> wrote:
>>>>>>>>>
>>>>>>>>>> Hi Akila,
>>>>>>>>>>
>>>>>>>>>> We do not query pod labels, its handled by the Kubernetes service
>>>>>>>>>> selector, at the moment this is called "name". I have now fixed this issue
>>>>>>>>>> locally, will push in few minutes.
>>>>>>>>>>
>>>>>>>>>> In addition I think it would be better to use labels instead of
>>>>>>>>>> annotations because they are not visible in the UI:
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>> Thanks
>>>>>>>>>>
>>>>>>>>>> On Sun, Sep 20, 2015 at 9:52 PM, Akila Ravihansa Perera <
>>>>>>>>>> ravihansa@wso2.com> wrote:
>>>>>>>>>>
>>>>>>>>>>> Hi Imesh,
>>>>>>>>>>>
>>>>>>>>>>> Where do we query those pod labels?
>>>>>>>>>>>
>>>>>>>>>>> I'm in the process of moving label names to constants. I can
>>>>>>>>>>> apply the same in all the places. I think better to change that label to
>>>>>>>>>>> md5Hex-memberId to avoid any confusion when troubleshooting issues. One
>>>>>>>>>>> might mistakenly take that as the actual memberId when it is not the case.
>>>>>>>>>>>
>>>>>>>>>>> Thanks.
>>>>>>>>>>>
>>>>>>>>>>> On Sun, Sep 20, 2015 at 9:40 PM, Imesh Gunaratne <
>>>>>>>>>>> imesh@apache.org> wrote:
>>>>>>>>>>>
>>>>>>>>>>>> I'm seeing a problem, we have removed the "name" label in the
>>>>>>>>>>>> pod and added a new label called "md5Hex-memberId". Due to this load
>>>>>>>>>>>> balancing would not work:
>>>>>>>>>>>>
>>>>>>>>>>>> Map<String, String> podLabels = new HashMap<>();
>>>>>>>>>>>> podLabels.put("md5Hex-memberId", DigestUtils.md5Hex(memberContext.getMemberId()));
>>>>>>>>>>>>
>>>>>>>>>>>> Map<String, String> podAnnotations = new HashMap<>();
>>>>>>>>>>>> podAnnotations.put("memberId", memberContext.getMemberId());
>>>>>>>>>>>> podAnnotations.put("cartridgeType", memberContext.getCartridgeType());
>>>>>>>>>>>> podAnnotations.put("applicationId", memberContext.getApplicationId());
>>>>>>>>>>>> podAnnotations.put("clusterId", memberContext.getClusterId());
>>>>>>>>>>>> podAnnotations.put("clusterInstanceId", memberContext.getClusterInstanceId());
>>>>>>>>>>>>
>>>>>>>>>>>> kubernetesApi.createPod(podId, podName, podLabels, podAnnotations, dockerImage, cpu, memory, ports,
>>>>>>>>>>>>         environmentVariables);
>>>>>>>>>>>>
>>>>>>>>>>>>
>>>>>>>>>>>> On Sun, Sep 20, 2015 at 2:51 PM, Akila Ravihansa Perera <
>>>>>>>>>>>> ravihansa@wso2.com> wrote:
>>>>>>>>>>>>
>>>>>>>>>>>>> Hi all,
>>>>>>>>>>>>>
>>>>>>>>>>>>> I've pushed release artifacts to staging repo at [1]. Please
>>>>>>>>>>>>> take few mins to verify the release. Also I've pushed cartridge-base, php
>>>>>>>>>>>>> and tomcat Docker images with 4.1.3 artifacts to DockerHub.
>>>>>>>>>>>>>
>>>>>>>>>>>>> [1]
>>>>>>>>>>>>> https://repository.apache.org/content/repositories/orgapachestratos-1057/
>>>>>>>>>>>>>
>>>>>>>>>>>>> Thanks.
>>>>>>>>>>>>>
>>>>>>>>>>>>> --
>>>>>>>>>>>>> Akila Ravihansa Perera
>>>>>>>>>>>>> WSO2 Inc.;  http://wso2.com/
>>>>>>>>>>>>>
>>>>>>>>>>>>> Blog: http://ravihansa3000.blogspot.com
>>>>>>>>>>>>>
>>>>>>>>>>>>
>>>>>>>>>>>>
>>>>>>>>>>>>
>>>>>>>>>>>> --
>>>>>>>>>>>> Imesh Gunaratne
>>>>>>>>>>>>
>>>>>>>>>>>> Senior Technical Lead, WSO2
>>>>>>>>>>>> Committer & PMC Member, Apache Stratos
>>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>> --
>>>>>>>>>>> Akila Ravihansa Perera
>>>>>>>>>>> WSO2 Inc.;  http://wso2.com/
>>>>>>>>>>>
>>>>>>>>>>> Blog: http://ravihansa3000.blogspot.com
>>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>> --
>>>>>>>>>> Imesh Gunaratne
>>>>>>>>>>
>>>>>>>>>> Senior Technical Lead, WSO2
>>>>>>>>>> Committer & PMC Member, Apache Stratos
>>>>>>>>>>
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>
>>>>>>>>> --
>>>>>>>>> Akila Ravihansa Perera
>>>>>>>>> WSO2 Inc.;  http://wso2.com/
>>>>>>>>>
>>>>>>>>> Blog: http://ravihansa3000.blogspot.com
>>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>> --
>>>>>>>> Imesh Gunaratne
>>>>>>>>
>>>>>>>> Senior Technical Lead, WSO2
>>>>>>>> Committer & PMC Member, Apache Stratos
>>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>> --
>>>>>>>
>>>>>>> Gayan Gunarathne
>>>>>>> Technical Lead, WSO2 Inc. (http://wso2.com)
>>>>>>> Committer & PMC Member, Apache Stratos
>>>>>>> email : gayang@wso2.com  | mobile : +94 775030545
>>>>>>> <%2B94%20766819985>
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>
>>>>>>
>>>>>>
>>>>>> --
>>>>>> Akila Ravihansa Perera
>>>>>> WSO2 Inc.;  http://wso2.com/
>>>>>>
>>>>>> Blog: http://ravihansa3000.blogspot.com
>>>>>>
>>>>>
>>>>>
>>>>>
>>>>> --
>>>>>
>>>>> Gayan Gunarathne
>>>>> Technical Lead, WSO2 Inc. (http://wso2.com)
>>>>> Committer & PMC Member, Apache Stratos
>>>>> email : gayang@wso2.com  | mobile : +94 775030545 <%2B94%20766819985>
>>>>>
>>>>>
>>>>>
>>>>
>>>>
>>>>
>>>> --
>>>> Imesh Gunaratne
>>>>
>>>> Senior Technical Lead, WSO2
>>>> Committer & PMC Member, Apache Stratos
>>>>
>>>
>>>
>>>
>>> --
>>> Akila Ravihansa Perera
>>> WSO2 Inc.;  http://wso2.com/
>>>
>>> Blog: http://ravihansa3000.blogspot.com
>>>
>>
>>
>>
>> --
>>
>> Gayan Gunarathne
>> Technical Lead, WSO2 Inc. (http://wso2.com)
>> Committer & PMC Member, Apache Stratos
>> email : gayang@wso2.com  | mobile : +94 775030545 <%2B94%20766819985>
>>
>>
>>
>
>
>
> --
> Imesh Gunaratne
>
> Senior Technical Lead, WSO2
> Committer & PMC Member, Apache Stratos
>



-- 
Imesh Gunaratne

Senior Technical Lead, WSO2
Committer & PMC Member, Apache Stratos

Re: Releasing Stratos 4.1.3

Posted by Imesh Gunaratne <im...@apache.org>.
Labels are now shown as below:


​

​

On Mon, Sep 21, 2015 at 12:57 AM, Gayan Gunarathne <ga...@wso2.com> wrote:

> Seems there is a  commit missing when merging the changes.
>
> Setting the setKubernetesClusterId when creating the Kubenetes service
>
> Now I will add that commit.
>
> Thanks,
> Gayan
>
> On Mon, Sep 21, 2015 at 12:35 AM, Akila Ravihansa Perera <
> ravihansa@wso2.com> wrote:
>
>> Great!
>>
>> I think I found the problem with K8s services not getting cleaned up. I
>> see a NPE at removeKubernetesServices(KubernetesIaas.java:1025) when
>> undeploying an application.
>>
>> [2015-09-21 00:31:16,750] ERROR
>> {org.apache.stratos.messaging.message.receiver.cluster.status.ClusterStatusEventMessageDelegator}
>> -  Failed to retrieve cluster status event message
>> java.lang.NullPointerException
>> at
>> org.apache.stratos.cloud.controller.iaases.kubernetes.KubernetesIaas.removeKubernetesServices(KubernetesIaas.java:1025)
>> at
>> org.apache.stratos.cloud.controller.messaging.topology.TopologyBuilder.handleClusterTerminatingEvent(TopologyBuilder.java:1068)
>> at
>> org.apache.stratos.cloud.controller.messaging.receiver.cluster.status.ClusterStatusTopicReceiver$5.onEvent(ClusterStatusTopicReceiver.java:86)
>> at
>> org.apache.stratos.messaging.listener.EventListener.update(EventListener.java:42)
>> at java.util.Observable.notifyObservers(Observable.java:159)
>> at
>> org.apache.stratos.messaging.event.EventObservable.notifyEventListeners(EventObservable.java:51)
>> at
>> org.apache.stratos.messaging.message.processor.cluster.status.ClusterStatusClusterTerminatingMessageProcessor.process(ClusterStatusClusterTerminatingMessageProcessor.java:48)
>> at
>> org.apache.stratos.messaging.message.processor.cluster.status.ClusterStatusClusterTerminatedMessageProcessor.process(ClusterStatusClusterTerminatedMessageProcessor.java:55)
>> at
>> org.apache.stratos.messaging.message.processor.cluster.status.ClusterStatusClusterInactivateMessageProcessor.process(ClusterStatusClusterInactivateMessageProcessor.java:52)
>> at
>> org.apache.stratos.messaging.message.processor.cluster.status.ClusterStatusClusterActivatedMessageProcessor.process(ClusterStatusClusterActivatedMessageProcessor.java:52)
>> at
>> org.apache.stratos.messaging.message.processor.cluster.status.ClusterStatusClusterResetMessageProcessor.process(ClusterStatusClusterResetMessageProcessor.java:52)
>> at
>> org.apache.stratos.messaging.message.processor.MessageProcessorChain.process(MessageProcessorChain.java:61)
>> at
>> org.apache.stratos.messaging.message.receiver.cluster.status.ClusterStatusEventMessageDelegator.run(ClusterStatusEventMessageDelegator.java:71)
>> at
>> java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
>> at
>> java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
>> at java.lang.Thread.run(Thread.java:745)
>>
>>
>>
>>
>> On Mon, Sep 21, 2015 at 12:30 AM, Imesh Gunaratne <im...@apache.org>
>> wrote:
>>
>>> I have now refined this logic to trim all labels to 62 characters and
>>> added following as labels:
>>>
>>> Pod: Application-ID, Cluster-Instance-ID, Member-ID
>>> Service: Application-ID, Cluster-ID, Port-Name
>>>
>>> Now I'm seeing a different problem. When an application is un-deployed,
>>> services do not get deleted. We need to fix this.
>>>
>>> Thanks
>>>
>>> On Mon, Sep 21, 2015 at 12:12 AM, Gayan Gunarathne <ga...@wso2.com>
>>> wrote:
>>>
>>>> Hi Akila,
>>>>
>>>> On Sun, Sep 20, 2015 at 11:30 PM, Akila Ravihansa Perera <
>>>> ravihansa@wso2.com> wrote:
>>>>
>>>>> Hi Gayan,
>>>>>
>>>>> +1 for properly identifying attributes to be used for labels and
>>>>> annotations. As I mentioned earlier I tried to use them as labels but ran
>>>>> into length limitation issues.
>>>>>
>>>>> memberId and clusterId cannot be used directly since they are
>>>>> generated as follows;
>>>>>
>>>>> memberId = clusterId + UUID
>>>>> clusterId = applicationId + "." + alias + "." + cartridgeType +
>>>>> ".domain"
>>>>>
>>>>> As you can see those can go be beyond 63 characters since we don't
>>>>> have a limitation for applicationId length. I'm -1 on imposing a character
>>>>> limitation to applicationId only to get away with Kubernetes restriction.
>>>>> What if some other provider comes out with a different limitation? It
>>>>> should be restricted but only for good reasons concerning to Stratos.
>>>>>
>>>>
>>>> Right. Let's say we are not going to restrict the application id
>>>> length. So in that case we won't be able to use the application id as a pod
>>>> label.
>>>> IMO we used application id to identify the application. As it is a
>>>> identifier I think it is OK to have a restriction.I think using a
>>>> description for the application id is not practical.Also in most of the use
>>>> cases identifiers comes up with some length restrictions.If we don't have a
>>>> restriction on application id , users can enter description sort of a
>>>> application id.
>>>>
>>>>
>>>>>
>>>>> I had an offline chat with Imesh and we were discussing about
>>>>> implementing a sequence number based approach for generating clusterId and
>>>>> memberId without using UUIDs. Any thoughts?
>>>>>
>>>>
>>>>  I am also +1 for this thinking. So how we are going to generate the
>>>> cluster id? I think we need to generate the meaningful ids.
>>>>
>>>>
>>>>>
>>>>> Thanks.
>>>>>
>>>>>
>>>>>
>>>>> Thanks,
>>>> Gayan
>>>>
>>>>>
>>>>>
>>>>> On Sun, Sep 20, 2015 at 10:55 PM, Gayan Gunarathne <ga...@wso2.com>
>>>>> wrote:
>>>>>
>>>>>> As per Kubernetes definition I think we are using labels and
>>>>>> annotation in a wrong way.As annotations are arbitrary non-identifying
>>>>>> metadata , they might not shown them in their UI/CLI
>>>>>>
>>>>>> I think first we need to recognize what are the identifiers for the
>>>>>> pod.In think we may need to use member id , application id
>>>>>>
>>>>>> Also what is the ration behind of using the md5Hex of the member id
>>>>>> as a identifier. IMO we can directly use the member id. As member id is
>>>>>> UUID it won't be more than 63 characters.
>>>>>>
>>>>>> Thanks,
>>>>>> Gayan
>>>>>>
>>>>>> On Sun, Sep 20, 2015 at 10:13 PM, Imesh Gunaratne <im...@apache.org>
>>>>>> wrote:
>>>>>>
>>>>>>> Hi Akila,
>>>>>>>
>>>>>>> Right, I get your point on the length limitation, but this is how
>>>>>>> Kubernetes has described Labels and Annotations:
>>>>>>>
>>>>>>> *We'll eventually index and reverse-index labels for efficient
>>>>>>> queries and watches, use them to sort and group in UIs and CLIs, etc. We
>>>>>>> don't want to pollute labels with non-identifying, especially large and/or
>>>>>>> structured, data. Non-identifying information should be recorded using
>>>>>>> annotations.*
>>>>>>>
>>>>>>> The idea is to use labels for all identifiers.
>>>>>>>
>>>>>>> http://kubernetes.io/v1.0/docs/user-guide/labels.html
>>>>>>>
>>>>>>> On Sun, Sep 20, 2015 at 10:05 PM, Akila Ravihansa Perera <
>>>>>>> ravihansa@wso2.com> wrote:
>>>>>>>
>>>>>>>> Hi Imesh,
>>>>>>>>
>>>>>>>> Yes, I tried adding them as labels but ran into a problem since
>>>>>>>> label length cannot be greater than 63 characters. I'm not sure why we
>>>>>>>> don't see annotations in the UI for pods created. But I can see the
>>>>>>>> annotations added for services. Might have to raise this in K8s mailing
>>>>>>>> list.
>>>>>>>>
>>>>>>>> Thanks.
>>>>>>>>
>>>>>>>> On Sun, Sep 20, 2015 at 10:00 PM, Imesh Gunaratne <imesh@apache.org
>>>>>>>> > wrote:
>>>>>>>>
>>>>>>>>> Hi Akila,
>>>>>>>>>
>>>>>>>>> We do not query pod labels, its handled by the Kubernetes service
>>>>>>>>> selector, at the moment this is called "name". I have now fixed this issue
>>>>>>>>> locally, will push in few minutes.
>>>>>>>>>
>>>>>>>>> In addition I think it would be better to use labels instead of
>>>>>>>>> annotations because they are not visible in the UI:
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>
>>>>>>>>> Thanks
>>>>>>>>>
>>>>>>>>> On Sun, Sep 20, 2015 at 9:52 PM, Akila Ravihansa Perera <
>>>>>>>>> ravihansa@wso2.com> wrote:
>>>>>>>>>
>>>>>>>>>> Hi Imesh,
>>>>>>>>>>
>>>>>>>>>> Where do we query those pod labels?
>>>>>>>>>>
>>>>>>>>>> I'm in the process of moving label names to constants. I can
>>>>>>>>>> apply the same in all the places. I think better to change that label to
>>>>>>>>>> md5Hex-memberId to avoid any confusion when troubleshooting issues. One
>>>>>>>>>> might mistakenly take that as the actual memberId when it is not the case.
>>>>>>>>>>
>>>>>>>>>> Thanks.
>>>>>>>>>>
>>>>>>>>>> On Sun, Sep 20, 2015 at 9:40 PM, Imesh Gunaratne <
>>>>>>>>>> imesh@apache.org> wrote:
>>>>>>>>>>
>>>>>>>>>>> I'm seeing a problem, we have removed the "name" label in the
>>>>>>>>>>> pod and added a new label called "md5Hex-memberId". Due to this load
>>>>>>>>>>> balancing would not work:
>>>>>>>>>>>
>>>>>>>>>>> Map<String, String> podLabels = new HashMap<>();
>>>>>>>>>>> podLabels.put("md5Hex-memberId", DigestUtils.md5Hex(memberContext.getMemberId()));
>>>>>>>>>>>
>>>>>>>>>>> Map<String, String> podAnnotations = new HashMap<>();
>>>>>>>>>>> podAnnotations.put("memberId", memberContext.getMemberId());
>>>>>>>>>>> podAnnotations.put("cartridgeType", memberContext.getCartridgeType());
>>>>>>>>>>> podAnnotations.put("applicationId", memberContext.getApplicationId());
>>>>>>>>>>> podAnnotations.put("clusterId", memberContext.getClusterId());
>>>>>>>>>>> podAnnotations.put("clusterInstanceId", memberContext.getClusterInstanceId());
>>>>>>>>>>>
>>>>>>>>>>> kubernetesApi.createPod(podId, podName, podLabels, podAnnotations, dockerImage, cpu, memory, ports,
>>>>>>>>>>>         environmentVariables);
>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>> On Sun, Sep 20, 2015 at 2:51 PM, Akila Ravihansa Perera <
>>>>>>>>>>> ravihansa@wso2.com> wrote:
>>>>>>>>>>>
>>>>>>>>>>>> Hi all,
>>>>>>>>>>>>
>>>>>>>>>>>> I've pushed release artifacts to staging repo at [1]. Please
>>>>>>>>>>>> take few mins to verify the release. Also I've pushed cartridge-base, php
>>>>>>>>>>>> and tomcat Docker images with 4.1.3 artifacts to DockerHub.
>>>>>>>>>>>>
>>>>>>>>>>>> [1]
>>>>>>>>>>>> https://repository.apache.org/content/repositories/orgapachestratos-1057/
>>>>>>>>>>>>
>>>>>>>>>>>> Thanks.
>>>>>>>>>>>>
>>>>>>>>>>>> --
>>>>>>>>>>>> Akila Ravihansa Perera
>>>>>>>>>>>> WSO2 Inc.;  http://wso2.com/
>>>>>>>>>>>>
>>>>>>>>>>>> Blog: http://ravihansa3000.blogspot.com
>>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>> --
>>>>>>>>>>> Imesh Gunaratne
>>>>>>>>>>>
>>>>>>>>>>> Senior Technical Lead, WSO2
>>>>>>>>>>> Committer & PMC Member, Apache Stratos
>>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>> --
>>>>>>>>>> Akila Ravihansa Perera
>>>>>>>>>> WSO2 Inc.;  http://wso2.com/
>>>>>>>>>>
>>>>>>>>>> Blog: http://ravihansa3000.blogspot.com
>>>>>>>>>>
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>
>>>>>>>>> --
>>>>>>>>> Imesh Gunaratne
>>>>>>>>>
>>>>>>>>> Senior Technical Lead, WSO2
>>>>>>>>> Committer & PMC Member, Apache Stratos
>>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>> --
>>>>>>>> Akila Ravihansa Perera
>>>>>>>> WSO2 Inc.;  http://wso2.com/
>>>>>>>>
>>>>>>>> Blog: http://ravihansa3000.blogspot.com
>>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>> --
>>>>>>> Imesh Gunaratne
>>>>>>>
>>>>>>> Senior Technical Lead, WSO2
>>>>>>> Committer & PMC Member, Apache Stratos
>>>>>>>
>>>>>>
>>>>>>
>>>>>>
>>>>>> --
>>>>>>
>>>>>> Gayan Gunarathne
>>>>>> Technical Lead, WSO2 Inc. (http://wso2.com)
>>>>>> Committer & PMC Member, Apache Stratos
>>>>>> email : gayang@wso2.com  | mobile : +94 775030545 <%2B94%20766819985>
>>>>>>
>>>>>>
>>>>>>
>>>>>
>>>>>
>>>>>
>>>>> --
>>>>> Akila Ravihansa Perera
>>>>> WSO2 Inc.;  http://wso2.com/
>>>>>
>>>>> Blog: http://ravihansa3000.blogspot.com
>>>>>
>>>>
>>>>
>>>>
>>>> --
>>>>
>>>> Gayan Gunarathne
>>>> Technical Lead, WSO2 Inc. (http://wso2.com)
>>>> Committer & PMC Member, Apache Stratos
>>>> email : gayang@wso2.com  | mobile : +94 775030545 <%2B94%20766819985>
>>>>
>>>>
>>>>
>>>
>>>
>>>
>>> --
>>> Imesh Gunaratne
>>>
>>> Senior Technical Lead, WSO2
>>> Committer & PMC Member, Apache Stratos
>>>
>>
>>
>>
>> --
>> Akila Ravihansa Perera
>> WSO2 Inc.;  http://wso2.com/
>>
>> Blog: http://ravihansa3000.blogspot.com
>>
>
>
>
> --
>
> Gayan Gunarathne
> Technical Lead, WSO2 Inc. (http://wso2.com)
> Committer & PMC Member, Apache Stratos
> email : gayang@wso2.com  | mobile : +94 775030545 <%2B94%20766819985>
>
>
>



-- 
Imesh Gunaratne

Senior Technical Lead, WSO2
Committer & PMC Member, Apache Stratos

Re: Releasing Stratos 4.1.3

Posted by Gayan Gunarathne <ga...@wso2.com>.
Seems there is a  commit missing when merging the changes.

Setting the setKubernetesClusterId when creating the Kubenetes service

Now I will add that commit.

Thanks,
Gayan

On Mon, Sep 21, 2015 at 12:35 AM, Akila Ravihansa Perera <ravihansa@wso2.com
> wrote:

> Great!
>
> I think I found the problem with K8s services not getting cleaned up. I
> see a NPE at removeKubernetesServices(KubernetesIaas.java:1025) when
> undeploying an application.
>
> [2015-09-21 00:31:16,750] ERROR
> {org.apache.stratos.messaging.message.receiver.cluster.status.ClusterStatusEventMessageDelegator}
> -  Failed to retrieve cluster status event message
> java.lang.NullPointerException
> at
> org.apache.stratos.cloud.controller.iaases.kubernetes.KubernetesIaas.removeKubernetesServices(KubernetesIaas.java:1025)
> at
> org.apache.stratos.cloud.controller.messaging.topology.TopologyBuilder.handleClusterTerminatingEvent(TopologyBuilder.java:1068)
> at
> org.apache.stratos.cloud.controller.messaging.receiver.cluster.status.ClusterStatusTopicReceiver$5.onEvent(ClusterStatusTopicReceiver.java:86)
> at
> org.apache.stratos.messaging.listener.EventListener.update(EventListener.java:42)
> at java.util.Observable.notifyObservers(Observable.java:159)
> at
> org.apache.stratos.messaging.event.EventObservable.notifyEventListeners(EventObservable.java:51)
> at
> org.apache.stratos.messaging.message.processor.cluster.status.ClusterStatusClusterTerminatingMessageProcessor.process(ClusterStatusClusterTerminatingMessageProcessor.java:48)
> at
> org.apache.stratos.messaging.message.processor.cluster.status.ClusterStatusClusterTerminatedMessageProcessor.process(ClusterStatusClusterTerminatedMessageProcessor.java:55)
> at
> org.apache.stratos.messaging.message.processor.cluster.status.ClusterStatusClusterInactivateMessageProcessor.process(ClusterStatusClusterInactivateMessageProcessor.java:52)
> at
> org.apache.stratos.messaging.message.processor.cluster.status.ClusterStatusClusterActivatedMessageProcessor.process(ClusterStatusClusterActivatedMessageProcessor.java:52)
> at
> org.apache.stratos.messaging.message.processor.cluster.status.ClusterStatusClusterResetMessageProcessor.process(ClusterStatusClusterResetMessageProcessor.java:52)
> at
> org.apache.stratos.messaging.message.processor.MessageProcessorChain.process(MessageProcessorChain.java:61)
> at
> org.apache.stratos.messaging.message.receiver.cluster.status.ClusterStatusEventMessageDelegator.run(ClusterStatusEventMessageDelegator.java:71)
> at
> java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
> at
> java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
> at java.lang.Thread.run(Thread.java:745)
>
>
>
>
> On Mon, Sep 21, 2015 at 12:30 AM, Imesh Gunaratne <im...@apache.org>
> wrote:
>
>> I have now refined this logic to trim all labels to 62 characters and
>> added following as labels:
>>
>> Pod: Application-ID, Cluster-Instance-ID, Member-ID
>> Service: Application-ID, Cluster-ID, Port-Name
>>
>> Now I'm seeing a different problem. When an application is un-deployed,
>> services do not get deleted. We need to fix this.
>>
>> Thanks
>>
>> On Mon, Sep 21, 2015 at 12:12 AM, Gayan Gunarathne <ga...@wso2.com>
>> wrote:
>>
>>> Hi Akila,
>>>
>>> On Sun, Sep 20, 2015 at 11:30 PM, Akila Ravihansa Perera <
>>> ravihansa@wso2.com> wrote:
>>>
>>>> Hi Gayan,
>>>>
>>>> +1 for properly identifying attributes to be used for labels and
>>>> annotations. As I mentioned earlier I tried to use them as labels but ran
>>>> into length limitation issues.
>>>>
>>>> memberId and clusterId cannot be used directly since they are generated
>>>> as follows;
>>>>
>>>> memberId = clusterId + UUID
>>>> clusterId = applicationId + "." + alias + "." + cartridgeType +
>>>> ".domain"
>>>>
>>>> As you can see those can go be beyond 63 characters since we don't have
>>>> a limitation for applicationId length. I'm -1 on imposing a character
>>>> limitation to applicationId only to get away with Kubernetes restriction.
>>>> What if some other provider comes out with a different limitation? It
>>>> should be restricted but only for good reasons concerning to Stratos.
>>>>
>>>
>>> Right. Let's say we are not going to restrict the application id length.
>>> So in that case we won't be able to use the application id as a pod label.
>>> IMO we used application id to identify the application. As it is a
>>> identifier I think it is OK to have a restriction.I think using a
>>> description for the application id is not practical.Also in most of the use
>>> cases identifiers comes up with some length restrictions.If we don't have a
>>> restriction on application id , users can enter description sort of a
>>> application id.
>>>
>>>
>>>>
>>>> I had an offline chat with Imesh and we were discussing about
>>>> implementing a sequence number based approach for generating clusterId and
>>>> memberId without using UUIDs. Any thoughts?
>>>>
>>>
>>>  I am also +1 for this thinking. So how we are going to generate the
>>> cluster id? I think we need to generate the meaningful ids.
>>>
>>>
>>>>
>>>> Thanks.
>>>>
>>>>
>>>>
>>>> Thanks,
>>> Gayan
>>>
>>>>
>>>>
>>>> On Sun, Sep 20, 2015 at 10:55 PM, Gayan Gunarathne <ga...@wso2.com>
>>>> wrote:
>>>>
>>>>> As per Kubernetes definition I think we are using labels and
>>>>> annotation in a wrong way.As annotations are arbitrary non-identifying
>>>>> metadata , they might not shown them in their UI/CLI
>>>>>
>>>>> I think first we need to recognize what are the identifiers for the
>>>>> pod.In think we may need to use member id , application id
>>>>>
>>>>> Also what is the ration behind of using the md5Hex of the member id as
>>>>> a identifier. IMO we can directly use the member id. As member id is UUID
>>>>> it won't be more than 63 characters.
>>>>>
>>>>> Thanks,
>>>>> Gayan
>>>>>
>>>>> On Sun, Sep 20, 2015 at 10:13 PM, Imesh Gunaratne <im...@apache.org>
>>>>> wrote:
>>>>>
>>>>>> Hi Akila,
>>>>>>
>>>>>> Right, I get your point on the length limitation, but this is how
>>>>>> Kubernetes has described Labels and Annotations:
>>>>>>
>>>>>> *We'll eventually index and reverse-index labels for efficient
>>>>>> queries and watches, use them to sort and group in UIs and CLIs, etc. We
>>>>>> don't want to pollute labels with non-identifying, especially large and/or
>>>>>> structured, data. Non-identifying information should be recorded using
>>>>>> annotations.*
>>>>>>
>>>>>> The idea is to use labels for all identifiers.
>>>>>>
>>>>>> http://kubernetes.io/v1.0/docs/user-guide/labels.html
>>>>>>
>>>>>> On Sun, Sep 20, 2015 at 10:05 PM, Akila Ravihansa Perera <
>>>>>> ravihansa@wso2.com> wrote:
>>>>>>
>>>>>>> Hi Imesh,
>>>>>>>
>>>>>>> Yes, I tried adding them as labels but ran into a problem since
>>>>>>> label length cannot be greater than 63 characters. I'm not sure why we
>>>>>>> don't see annotations in the UI for pods created. But I can see the
>>>>>>> annotations added for services. Might have to raise this in K8s mailing
>>>>>>> list.
>>>>>>>
>>>>>>> Thanks.
>>>>>>>
>>>>>>> On Sun, Sep 20, 2015 at 10:00 PM, Imesh Gunaratne <im...@apache.org>
>>>>>>> wrote:
>>>>>>>
>>>>>>>> Hi Akila,
>>>>>>>>
>>>>>>>> We do not query pod labels, its handled by the Kubernetes service
>>>>>>>> selector, at the moment this is called "name". I have now fixed this issue
>>>>>>>> locally, will push in few minutes.
>>>>>>>>
>>>>>>>> In addition I think it would be better to use labels instead of
>>>>>>>> annotations because they are not visible in the UI:
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>> Thanks
>>>>>>>>
>>>>>>>> On Sun, Sep 20, 2015 at 9:52 PM, Akila Ravihansa Perera <
>>>>>>>> ravihansa@wso2.com> wrote:
>>>>>>>>
>>>>>>>>> Hi Imesh,
>>>>>>>>>
>>>>>>>>> Where do we query those pod labels?
>>>>>>>>>
>>>>>>>>> I'm in the process of moving label names to constants. I can apply
>>>>>>>>> the same in all the places. I think better to change that label to
>>>>>>>>> md5Hex-memberId to avoid any confusion when troubleshooting issues. One
>>>>>>>>> might mistakenly take that as the actual memberId when it is not the case.
>>>>>>>>>
>>>>>>>>> Thanks.
>>>>>>>>>
>>>>>>>>> On Sun, Sep 20, 2015 at 9:40 PM, Imesh Gunaratne <imesh@apache.org
>>>>>>>>> > wrote:
>>>>>>>>>
>>>>>>>>>> I'm seeing a problem, we have removed the "name" label in the pod
>>>>>>>>>> and added a new label called "md5Hex-memberId". Due to this load balancing
>>>>>>>>>> would not work:
>>>>>>>>>>
>>>>>>>>>> Map<String, String> podLabels = new HashMap<>();
>>>>>>>>>> podLabels.put("md5Hex-memberId", DigestUtils.md5Hex(memberContext.getMemberId()));
>>>>>>>>>>
>>>>>>>>>> Map<String, String> podAnnotations = new HashMap<>();
>>>>>>>>>> podAnnotations.put("memberId", memberContext.getMemberId());
>>>>>>>>>> podAnnotations.put("cartridgeType", memberContext.getCartridgeType());
>>>>>>>>>> podAnnotations.put("applicationId", memberContext.getApplicationId());
>>>>>>>>>> podAnnotations.put("clusterId", memberContext.getClusterId());
>>>>>>>>>> podAnnotations.put("clusterInstanceId", memberContext.getClusterInstanceId());
>>>>>>>>>>
>>>>>>>>>> kubernetesApi.createPod(podId, podName, podLabels, podAnnotations, dockerImage, cpu, memory, ports,
>>>>>>>>>>         environmentVariables);
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>> On Sun, Sep 20, 2015 at 2:51 PM, Akila Ravihansa Perera <
>>>>>>>>>> ravihansa@wso2.com> wrote:
>>>>>>>>>>
>>>>>>>>>>> Hi all,
>>>>>>>>>>>
>>>>>>>>>>> I've pushed release artifacts to staging repo at [1]. Please
>>>>>>>>>>> take few mins to verify the release. Also I've pushed cartridge-base, php
>>>>>>>>>>> and tomcat Docker images with 4.1.3 artifacts to DockerHub.
>>>>>>>>>>>
>>>>>>>>>>> [1]
>>>>>>>>>>> https://repository.apache.org/content/repositories/orgapachestratos-1057/
>>>>>>>>>>>
>>>>>>>>>>> Thanks.
>>>>>>>>>>>
>>>>>>>>>>> --
>>>>>>>>>>> Akila Ravihansa Perera
>>>>>>>>>>> WSO2 Inc.;  http://wso2.com/
>>>>>>>>>>>
>>>>>>>>>>> Blog: http://ravihansa3000.blogspot.com
>>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>> --
>>>>>>>>>> Imesh Gunaratne
>>>>>>>>>>
>>>>>>>>>> Senior Technical Lead, WSO2
>>>>>>>>>> Committer & PMC Member, Apache Stratos
>>>>>>>>>>
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>
>>>>>>>>> --
>>>>>>>>> Akila Ravihansa Perera
>>>>>>>>> WSO2 Inc.;  http://wso2.com/
>>>>>>>>>
>>>>>>>>> Blog: http://ravihansa3000.blogspot.com
>>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>> --
>>>>>>>> Imesh Gunaratne
>>>>>>>>
>>>>>>>> Senior Technical Lead, WSO2
>>>>>>>> Committer & PMC Member, Apache Stratos
>>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>> --
>>>>>>> Akila Ravihansa Perera
>>>>>>> WSO2 Inc.;  http://wso2.com/
>>>>>>>
>>>>>>> Blog: http://ravihansa3000.blogspot.com
>>>>>>>
>>>>>>
>>>>>>
>>>>>>
>>>>>> --
>>>>>> Imesh Gunaratne
>>>>>>
>>>>>> Senior Technical Lead, WSO2
>>>>>> Committer & PMC Member, Apache Stratos
>>>>>>
>>>>>
>>>>>
>>>>>
>>>>> --
>>>>>
>>>>> Gayan Gunarathne
>>>>> Technical Lead, WSO2 Inc. (http://wso2.com)
>>>>> Committer & PMC Member, Apache Stratos
>>>>> email : gayang@wso2.com  | mobile : +94 775030545 <%2B94%20766819985>
>>>>>
>>>>>
>>>>>
>>>>
>>>>
>>>>
>>>> --
>>>> Akila Ravihansa Perera
>>>> WSO2 Inc.;  http://wso2.com/
>>>>
>>>> Blog: http://ravihansa3000.blogspot.com
>>>>
>>>
>>>
>>>
>>> --
>>>
>>> Gayan Gunarathne
>>> Technical Lead, WSO2 Inc. (http://wso2.com)
>>> Committer & PMC Member, Apache Stratos
>>> email : gayang@wso2.com  | mobile : +94 775030545 <%2B94%20766819985>
>>>
>>>
>>>
>>
>>
>>
>> --
>> Imesh Gunaratne
>>
>> Senior Technical Lead, WSO2
>> Committer & PMC Member, Apache Stratos
>>
>
>
>
> --
> Akila Ravihansa Perera
> WSO2 Inc.;  http://wso2.com/
>
> Blog: http://ravihansa3000.blogspot.com
>



-- 

Gayan Gunarathne
Technical Lead, WSO2 Inc. (http://wso2.com)
Committer & PMC Member, Apache Stratos
email : gayang@wso2.com  | mobile : +94 775030545 <%2B94%20766819985>

Re: Releasing Stratos 4.1.3

Posted by Akila Ravihansa Perera <ra...@wso2.com>.
Great!

I think I found the problem with K8s services not getting cleaned up. I see
a NPE at removeKubernetesServices(KubernetesIaas.java:1025) when
undeploying an application.

[2015-09-21 00:31:16,750] ERROR
{org.apache.stratos.messaging.message.receiver.cluster.status.ClusterStatusEventMessageDelegator}
-  Failed to retrieve cluster status event message
java.lang.NullPointerException
at
org.apache.stratos.cloud.controller.iaases.kubernetes.KubernetesIaas.removeKubernetesServices(KubernetesIaas.java:1025)
at
org.apache.stratos.cloud.controller.messaging.topology.TopologyBuilder.handleClusterTerminatingEvent(TopologyBuilder.java:1068)
at
org.apache.stratos.cloud.controller.messaging.receiver.cluster.status.ClusterStatusTopicReceiver$5.onEvent(ClusterStatusTopicReceiver.java:86)
at
org.apache.stratos.messaging.listener.EventListener.update(EventListener.java:42)
at java.util.Observable.notifyObservers(Observable.java:159)
at
org.apache.stratos.messaging.event.EventObservable.notifyEventListeners(EventObservable.java:51)
at
org.apache.stratos.messaging.message.processor.cluster.status.ClusterStatusClusterTerminatingMessageProcessor.process(ClusterStatusClusterTerminatingMessageProcessor.java:48)
at
org.apache.stratos.messaging.message.processor.cluster.status.ClusterStatusClusterTerminatedMessageProcessor.process(ClusterStatusClusterTerminatedMessageProcessor.java:55)
at
org.apache.stratos.messaging.message.processor.cluster.status.ClusterStatusClusterInactivateMessageProcessor.process(ClusterStatusClusterInactivateMessageProcessor.java:52)
at
org.apache.stratos.messaging.message.processor.cluster.status.ClusterStatusClusterActivatedMessageProcessor.process(ClusterStatusClusterActivatedMessageProcessor.java:52)
at
org.apache.stratos.messaging.message.processor.cluster.status.ClusterStatusClusterResetMessageProcessor.process(ClusterStatusClusterResetMessageProcessor.java:52)
at
org.apache.stratos.messaging.message.processor.MessageProcessorChain.process(MessageProcessorChain.java:61)
at
org.apache.stratos.messaging.message.receiver.cluster.status.ClusterStatusEventMessageDelegator.run(ClusterStatusEventMessageDelegator.java:71)
at
java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
at
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
at java.lang.Thread.run(Thread.java:745)




On Mon, Sep 21, 2015 at 12:30 AM, Imesh Gunaratne <im...@apache.org> wrote:

> I have now refined this logic to trim all labels to 62 characters and
> added following as labels:
>
> Pod: Application-ID, Cluster-Instance-ID, Member-ID
> Service: Application-ID, Cluster-ID, Port-Name
>
> Now I'm seeing a different problem. When an application is un-deployed,
> services do not get deleted. We need to fix this.
>
> Thanks
>
> On Mon, Sep 21, 2015 at 12:12 AM, Gayan Gunarathne <ga...@wso2.com>
> wrote:
>
>> Hi Akila,
>>
>> On Sun, Sep 20, 2015 at 11:30 PM, Akila Ravihansa Perera <
>> ravihansa@wso2.com> wrote:
>>
>>> Hi Gayan,
>>>
>>> +1 for properly identifying attributes to be used for labels and
>>> annotations. As I mentioned earlier I tried to use them as labels but ran
>>> into length limitation issues.
>>>
>>> memberId and clusterId cannot be used directly since they are generated
>>> as follows;
>>>
>>> memberId = clusterId + UUID
>>> clusterId = applicationId + "." + alias + "." + cartridgeType + ".domain"
>>>
>>> As you can see those can go be beyond 63 characters since we don't have
>>> a limitation for applicationId length. I'm -1 on imposing a character
>>> limitation to applicationId only to get away with Kubernetes restriction.
>>> What if some other provider comes out with a different limitation? It
>>> should be restricted but only for good reasons concerning to Stratos.
>>>
>>
>> Right. Let's say we are not going to restrict the application id length.
>> So in that case we won't be able to use the application id as a pod label.
>> IMO we used application id to identify the application. As it is a
>> identifier I think it is OK to have a restriction.I think using a
>> description for the application id is not practical.Also in most of the use
>> cases identifiers comes up with some length restrictions.If we don't have a
>> restriction on application id , users can enter description sort of a
>> application id.
>>
>>
>>>
>>> I had an offline chat with Imesh and we were discussing about
>>> implementing a sequence number based approach for generating clusterId and
>>> memberId without using UUIDs. Any thoughts?
>>>
>>
>>  I am also +1 for this thinking. So how we are going to generate the
>> cluster id? I think we need to generate the meaningful ids.
>>
>>
>>>
>>> Thanks.
>>>
>>>
>>>
>>> Thanks,
>> Gayan
>>
>>>
>>>
>>> On Sun, Sep 20, 2015 at 10:55 PM, Gayan Gunarathne <ga...@wso2.com>
>>> wrote:
>>>
>>>> As per Kubernetes definition I think we are using labels and annotation
>>>> in a wrong way.As annotations are arbitrary non-identifying metadata , they
>>>> might not shown them in their UI/CLI
>>>>
>>>> I think first we need to recognize what are the identifiers for the
>>>> pod.In think we may need to use member id , application id
>>>>
>>>> Also what is the ration behind of using the md5Hex of the member id as
>>>> a identifier. IMO we can directly use the member id. As member id is UUID
>>>> it won't be more than 63 characters.
>>>>
>>>> Thanks,
>>>> Gayan
>>>>
>>>> On Sun, Sep 20, 2015 at 10:13 PM, Imesh Gunaratne <im...@apache.org>
>>>> wrote:
>>>>
>>>>> Hi Akila,
>>>>>
>>>>> Right, I get your point on the length limitation, but this is how
>>>>> Kubernetes has described Labels and Annotations:
>>>>>
>>>>> *We'll eventually index and reverse-index labels for efficient queries
>>>>> and watches, use them to sort and group in UIs and CLIs, etc. We don't want
>>>>> to pollute labels with non-identifying, especially large and/or structured,
>>>>> data. Non-identifying information should be recorded using annotations.*
>>>>>
>>>>> The idea is to use labels for all identifiers.
>>>>>
>>>>> http://kubernetes.io/v1.0/docs/user-guide/labels.html
>>>>>
>>>>> On Sun, Sep 20, 2015 at 10:05 PM, Akila Ravihansa Perera <
>>>>> ravihansa@wso2.com> wrote:
>>>>>
>>>>>> Hi Imesh,
>>>>>>
>>>>>> Yes, I tried adding them as labels but ran into a problem since label
>>>>>> length cannot be greater than 63 characters. I'm not sure why we don't see
>>>>>> annotations in the UI for pods created. But I can see the annotations added
>>>>>> for services. Might have to raise this in K8s mailing list.
>>>>>>
>>>>>> Thanks.
>>>>>>
>>>>>> On Sun, Sep 20, 2015 at 10:00 PM, Imesh Gunaratne <im...@apache.org>
>>>>>> wrote:
>>>>>>
>>>>>>> Hi Akila,
>>>>>>>
>>>>>>> We do not query pod labels, its handled by the Kubernetes service
>>>>>>> selector, at the moment this is called "name". I have now fixed this issue
>>>>>>> locally, will push in few minutes.
>>>>>>>
>>>>>>> In addition I think it would be better to use labels instead of
>>>>>>> annotations because they are not visible in the UI:
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>> Thanks
>>>>>>>
>>>>>>> On Sun, Sep 20, 2015 at 9:52 PM, Akila Ravihansa Perera <
>>>>>>> ravihansa@wso2.com> wrote:
>>>>>>>
>>>>>>>> Hi Imesh,
>>>>>>>>
>>>>>>>> Where do we query those pod labels?
>>>>>>>>
>>>>>>>> I'm in the process of moving label names to constants. I can apply
>>>>>>>> the same in all the places. I think better to change that label to
>>>>>>>> md5Hex-memberId to avoid any confusion when troubleshooting issues. One
>>>>>>>> might mistakenly take that as the actual memberId when it is not the case.
>>>>>>>>
>>>>>>>> Thanks.
>>>>>>>>
>>>>>>>> On Sun, Sep 20, 2015 at 9:40 PM, Imesh Gunaratne <im...@apache.org>
>>>>>>>> wrote:
>>>>>>>>
>>>>>>>>> I'm seeing a problem, we have removed the "name" label in the pod
>>>>>>>>> and added a new label called "md5Hex-memberId". Due to this load balancing
>>>>>>>>> would not work:
>>>>>>>>>
>>>>>>>>> Map<String, String> podLabels = new HashMap<>();
>>>>>>>>> podLabels.put("md5Hex-memberId", DigestUtils.md5Hex(memberContext.getMemberId()));
>>>>>>>>>
>>>>>>>>> Map<String, String> podAnnotations = new HashMap<>();
>>>>>>>>> podAnnotations.put("memberId", memberContext.getMemberId());
>>>>>>>>> podAnnotations.put("cartridgeType", memberContext.getCartridgeType());
>>>>>>>>> podAnnotations.put("applicationId", memberContext.getApplicationId());
>>>>>>>>> podAnnotations.put("clusterId", memberContext.getClusterId());
>>>>>>>>> podAnnotations.put("clusterInstanceId", memberContext.getClusterInstanceId());
>>>>>>>>>
>>>>>>>>> kubernetesApi.createPod(podId, podName, podLabels, podAnnotations, dockerImage, cpu, memory, ports,
>>>>>>>>>         environmentVariables);
>>>>>>>>>
>>>>>>>>>
>>>>>>>>> On Sun, Sep 20, 2015 at 2:51 PM, Akila Ravihansa Perera <
>>>>>>>>> ravihansa@wso2.com> wrote:
>>>>>>>>>
>>>>>>>>>> Hi all,
>>>>>>>>>>
>>>>>>>>>> I've pushed release artifacts to staging repo at [1]. Please take
>>>>>>>>>> few mins to verify the release. Also I've pushed cartridge-base, php and
>>>>>>>>>> tomcat Docker images with 4.1.3 artifacts to DockerHub.
>>>>>>>>>>
>>>>>>>>>> [1]
>>>>>>>>>> https://repository.apache.org/content/repositories/orgapachestratos-1057/
>>>>>>>>>>
>>>>>>>>>> Thanks.
>>>>>>>>>>
>>>>>>>>>> --
>>>>>>>>>> Akila Ravihansa Perera
>>>>>>>>>> WSO2 Inc.;  http://wso2.com/
>>>>>>>>>>
>>>>>>>>>> Blog: http://ravihansa3000.blogspot.com
>>>>>>>>>>
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>
>>>>>>>>> --
>>>>>>>>> Imesh Gunaratne
>>>>>>>>>
>>>>>>>>> Senior Technical Lead, WSO2
>>>>>>>>> Committer & PMC Member, Apache Stratos
>>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>> --
>>>>>>>> Akila Ravihansa Perera
>>>>>>>> WSO2 Inc.;  http://wso2.com/
>>>>>>>>
>>>>>>>> Blog: http://ravihansa3000.blogspot.com
>>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>> --
>>>>>>> Imesh Gunaratne
>>>>>>>
>>>>>>> Senior Technical Lead, WSO2
>>>>>>> Committer & PMC Member, Apache Stratos
>>>>>>>
>>>>>>
>>>>>>
>>>>>>
>>>>>> --
>>>>>> Akila Ravihansa Perera
>>>>>> WSO2 Inc.;  http://wso2.com/
>>>>>>
>>>>>> Blog: http://ravihansa3000.blogspot.com
>>>>>>
>>>>>
>>>>>
>>>>>
>>>>> --
>>>>> Imesh Gunaratne
>>>>>
>>>>> Senior Technical Lead, WSO2
>>>>> Committer & PMC Member, Apache Stratos
>>>>>
>>>>
>>>>
>>>>
>>>> --
>>>>
>>>> Gayan Gunarathne
>>>> Technical Lead, WSO2 Inc. (http://wso2.com)
>>>> Committer & PMC Member, Apache Stratos
>>>> email : gayang@wso2.com  | mobile : +94 775030545 <%2B94%20766819985>
>>>>
>>>>
>>>>
>>>
>>>
>>>
>>> --
>>> Akila Ravihansa Perera
>>> WSO2 Inc.;  http://wso2.com/
>>>
>>> Blog: http://ravihansa3000.blogspot.com
>>>
>>
>>
>>
>> --
>>
>> Gayan Gunarathne
>> Technical Lead, WSO2 Inc. (http://wso2.com)
>> Committer & PMC Member, Apache Stratos
>> email : gayang@wso2.com  | mobile : +94 775030545 <%2B94%20766819985>
>>
>>
>>
>
>
>
> --
> Imesh Gunaratne
>
> Senior Technical Lead, WSO2
> Committer & PMC Member, Apache Stratos
>



-- 
Akila Ravihansa Perera
WSO2 Inc.;  http://wso2.com/

Blog: http://ravihansa3000.blogspot.com

Re: Releasing Stratos 4.1.3

Posted by Imesh Gunaratne <im...@apache.org>.
I have now refined this logic to trim all labels to 62 characters and added
following as labels:

Pod: Application-ID, Cluster-Instance-ID, Member-ID
Service: Application-ID, Cluster-ID, Port-Name

Now I'm seeing a different problem. When an application is un-deployed,
services do not get deleted. We need to fix this.

Thanks

On Mon, Sep 21, 2015 at 12:12 AM, Gayan Gunarathne <ga...@wso2.com> wrote:

> Hi Akila,
>
> On Sun, Sep 20, 2015 at 11:30 PM, Akila Ravihansa Perera <
> ravihansa@wso2.com> wrote:
>
>> Hi Gayan,
>>
>> +1 for properly identifying attributes to be used for labels and
>> annotations. As I mentioned earlier I tried to use them as labels but ran
>> into length limitation issues.
>>
>> memberId and clusterId cannot be used directly since they are generated
>> as follows;
>>
>> memberId = clusterId + UUID
>> clusterId = applicationId + "." + alias + "." + cartridgeType + ".domain"
>>
>> As you can see those can go be beyond 63 characters since we don't have a
>> limitation for applicationId length. I'm -1 on imposing a character
>> limitation to applicationId only to get away with Kubernetes restriction.
>> What if some other provider comes out with a different limitation? It
>> should be restricted but only for good reasons concerning to Stratos.
>>
>
> Right. Let's say we are not going to restrict the application id length.
> So in that case we won't be able to use the application id as a pod label.
> IMO we used application id to identify the application. As it is a
> identifier I think it is OK to have a restriction.I think using a
> description for the application id is not practical.Also in most of the use
> cases identifiers comes up with some length restrictions.If we don't have a
> restriction on application id , users can enter description sort of a
> application id.
>
>
>>
>> I had an offline chat with Imesh and we were discussing about
>> implementing a sequence number based approach for generating clusterId and
>> memberId without using UUIDs. Any thoughts?
>>
>
>  I am also +1 for this thinking. So how we are going to generate the
> cluster id? I think we need to generate the meaningful ids.
>
>
>>
>> Thanks.
>>
>>
>>
>> Thanks,
> Gayan
>
>>
>>
>> On Sun, Sep 20, 2015 at 10:55 PM, Gayan Gunarathne <ga...@wso2.com>
>> wrote:
>>
>>> As per Kubernetes definition I think we are using labels and annotation
>>> in a wrong way.As annotations are arbitrary non-identifying metadata , they
>>> might not shown them in their UI/CLI
>>>
>>> I think first we need to recognize what are the identifiers for the
>>> pod.In think we may need to use member id , application id
>>>
>>> Also what is the ration behind of using the md5Hex of the member id as a
>>> identifier. IMO we can directly use the member id. As member id is UUID it
>>> won't be more than 63 characters.
>>>
>>> Thanks,
>>> Gayan
>>>
>>> On Sun, Sep 20, 2015 at 10:13 PM, Imesh Gunaratne <im...@apache.org>
>>> wrote:
>>>
>>>> Hi Akila,
>>>>
>>>> Right, I get your point on the length limitation, but this is how
>>>> Kubernetes has described Labels and Annotations:
>>>>
>>>> *We'll eventually index and reverse-index labels for efficient queries
>>>> and watches, use them to sort and group in UIs and CLIs, etc. We don't want
>>>> to pollute labels with non-identifying, especially large and/or structured,
>>>> data. Non-identifying information should be recorded using annotations.*
>>>>
>>>> The idea is to use labels for all identifiers.
>>>>
>>>> http://kubernetes.io/v1.0/docs/user-guide/labels.html
>>>>
>>>> On Sun, Sep 20, 2015 at 10:05 PM, Akila Ravihansa Perera <
>>>> ravihansa@wso2.com> wrote:
>>>>
>>>>> Hi Imesh,
>>>>>
>>>>> Yes, I tried adding them as labels but ran into a problem since label
>>>>> length cannot be greater than 63 characters. I'm not sure why we don't see
>>>>> annotations in the UI for pods created. But I can see the annotations added
>>>>> for services. Might have to raise this in K8s mailing list.
>>>>>
>>>>> Thanks.
>>>>>
>>>>> On Sun, Sep 20, 2015 at 10:00 PM, Imesh Gunaratne <im...@apache.org>
>>>>> wrote:
>>>>>
>>>>>> Hi Akila,
>>>>>>
>>>>>> We do not query pod labels, its handled by the Kubernetes service
>>>>>> selector, at the moment this is called "name". I have now fixed this issue
>>>>>> locally, will push in few minutes.
>>>>>>
>>>>>> In addition I think it would be better to use labels instead of
>>>>>> annotations because they are not visible in the UI:
>>>>>>
>>>>>>
>>>>>>
>>>>>> Thanks
>>>>>>
>>>>>> On Sun, Sep 20, 2015 at 9:52 PM, Akila Ravihansa Perera <
>>>>>> ravihansa@wso2.com> wrote:
>>>>>>
>>>>>>> Hi Imesh,
>>>>>>>
>>>>>>> Where do we query those pod labels?
>>>>>>>
>>>>>>> I'm in the process of moving label names to constants. I can apply
>>>>>>> the same in all the places. I think better to change that label to
>>>>>>> md5Hex-memberId to avoid any confusion when troubleshooting issues. One
>>>>>>> might mistakenly take that as the actual memberId when it is not the case.
>>>>>>>
>>>>>>> Thanks.
>>>>>>>
>>>>>>> On Sun, Sep 20, 2015 at 9:40 PM, Imesh Gunaratne <im...@apache.org>
>>>>>>> wrote:
>>>>>>>
>>>>>>>> I'm seeing a problem, we have removed the "name" label in the pod
>>>>>>>> and added a new label called "md5Hex-memberId". Due to this load balancing
>>>>>>>> would not work:
>>>>>>>>
>>>>>>>> Map<String, String> podLabels = new HashMap<>();
>>>>>>>> podLabels.put("md5Hex-memberId", DigestUtils.md5Hex(memberContext.getMemberId()));
>>>>>>>>
>>>>>>>> Map<String, String> podAnnotations = new HashMap<>();
>>>>>>>> podAnnotations.put("memberId", memberContext.getMemberId());
>>>>>>>> podAnnotations.put("cartridgeType", memberContext.getCartridgeType());
>>>>>>>> podAnnotations.put("applicationId", memberContext.getApplicationId());
>>>>>>>> podAnnotations.put("clusterId", memberContext.getClusterId());
>>>>>>>> podAnnotations.put("clusterInstanceId", memberContext.getClusterInstanceId());
>>>>>>>>
>>>>>>>> kubernetesApi.createPod(podId, podName, podLabels, podAnnotations, dockerImage, cpu, memory, ports,
>>>>>>>>         environmentVariables);
>>>>>>>>
>>>>>>>>
>>>>>>>> On Sun, Sep 20, 2015 at 2:51 PM, Akila Ravihansa Perera <
>>>>>>>> ravihansa@wso2.com> wrote:
>>>>>>>>
>>>>>>>>> Hi all,
>>>>>>>>>
>>>>>>>>> I've pushed release artifacts to staging repo at [1]. Please take
>>>>>>>>> few mins to verify the release. Also I've pushed cartridge-base, php and
>>>>>>>>> tomcat Docker images with 4.1.3 artifacts to DockerHub.
>>>>>>>>>
>>>>>>>>> [1]
>>>>>>>>> https://repository.apache.org/content/repositories/orgapachestratos-1057/
>>>>>>>>>
>>>>>>>>> Thanks.
>>>>>>>>>
>>>>>>>>> --
>>>>>>>>> Akila Ravihansa Perera
>>>>>>>>> WSO2 Inc.;  http://wso2.com/
>>>>>>>>>
>>>>>>>>> Blog: http://ravihansa3000.blogspot.com
>>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>> --
>>>>>>>> Imesh Gunaratne
>>>>>>>>
>>>>>>>> Senior Technical Lead, WSO2
>>>>>>>> Committer & PMC Member, Apache Stratos
>>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>> --
>>>>>>> Akila Ravihansa Perera
>>>>>>> WSO2 Inc.;  http://wso2.com/
>>>>>>>
>>>>>>> Blog: http://ravihansa3000.blogspot.com
>>>>>>>
>>>>>>
>>>>>>
>>>>>>
>>>>>> --
>>>>>> Imesh Gunaratne
>>>>>>
>>>>>> Senior Technical Lead, WSO2
>>>>>> Committer & PMC Member, Apache Stratos
>>>>>>
>>>>>
>>>>>
>>>>>
>>>>> --
>>>>> Akila Ravihansa Perera
>>>>> WSO2 Inc.;  http://wso2.com/
>>>>>
>>>>> Blog: http://ravihansa3000.blogspot.com
>>>>>
>>>>
>>>>
>>>>
>>>> --
>>>> Imesh Gunaratne
>>>>
>>>> Senior Technical Lead, WSO2
>>>> Committer & PMC Member, Apache Stratos
>>>>
>>>
>>>
>>>
>>> --
>>>
>>> Gayan Gunarathne
>>> Technical Lead, WSO2 Inc. (http://wso2.com)
>>> Committer & PMC Member, Apache Stratos
>>> email : gayang@wso2.com  | mobile : +94 775030545 <%2B94%20766819985>
>>>
>>>
>>>
>>
>>
>>
>> --
>> Akila Ravihansa Perera
>> WSO2 Inc.;  http://wso2.com/
>>
>> Blog: http://ravihansa3000.blogspot.com
>>
>
>
>
> --
>
> Gayan Gunarathne
> Technical Lead, WSO2 Inc. (http://wso2.com)
> Committer & PMC Member, Apache Stratos
> email : gayang@wso2.com  | mobile : +94 775030545 <%2B94%20766819985>
>
>
>



-- 
Imesh Gunaratne

Senior Technical Lead, WSO2
Committer & PMC Member, Apache Stratos

Re: Releasing Stratos 4.1.3

Posted by Gayan Gunarathne <ga...@wso2.com>.
Hi Akila,

On Sun, Sep 20, 2015 at 11:30 PM, Akila Ravihansa Perera <ravihansa@wso2.com
> wrote:

> Hi Gayan,
>
> +1 for properly identifying attributes to be used for labels and
> annotations. As I mentioned earlier I tried to use them as labels but ran
> into length limitation issues.
>
> memberId and clusterId cannot be used directly since they are generated as
> follows;
>
> memberId = clusterId + UUID
> clusterId = applicationId + "." + alias + "." + cartridgeType + ".domain"
>
> As you can see those can go be beyond 63 characters since we don't have a
> limitation for applicationId length. I'm -1 on imposing a character
> limitation to applicationId only to get away with Kubernetes restriction.
> What if some other provider comes out with a different limitation? It
> should be restricted but only for good reasons concerning to Stratos.
>

Right. Let's say we are not going to restrict the application id length. So
in that case we won't be able to use the application id as a pod label.
IMO we used application id to identify the application. As it is a
identifier I think it is OK to have a restriction.I think using a
description for the application id is not practical.Also in most of the use
cases identifiers comes up with some length restrictions.If we don't have a
restriction on application id , users can enter description sort of a
application id.


>
> I had an offline chat with Imesh and we were discussing about implementing
> a sequence number based approach for generating clusterId and memberId
> without using UUIDs. Any thoughts?
>

 I am also +1 for this thinking. So how we are going to generate the
cluster id? I think we need to generate the meaningful ids.


>
> Thanks.
>
>
>
> Thanks,
Gayan

>
>
> On Sun, Sep 20, 2015 at 10:55 PM, Gayan Gunarathne <ga...@wso2.com>
> wrote:
>
>> As per Kubernetes definition I think we are using labels and annotation
>> in a wrong way.As annotations are arbitrary non-identifying metadata , they
>> might not shown them in their UI/CLI
>>
>> I think first we need to recognize what are the identifiers for the
>> pod.In think we may need to use member id , application id
>>
>> Also what is the ration behind of using the md5Hex of the member id as a
>> identifier. IMO we can directly use the member id. As member id is UUID it
>> won't be more than 63 characters.
>>
>> Thanks,
>> Gayan
>>
>> On Sun, Sep 20, 2015 at 10:13 PM, Imesh Gunaratne <im...@apache.org>
>> wrote:
>>
>>> Hi Akila,
>>>
>>> Right, I get your point on the length limitation, but this is how
>>> Kubernetes has described Labels and Annotations:
>>>
>>> *We'll eventually index and reverse-index labels for efficient queries
>>> and watches, use them to sort and group in UIs and CLIs, etc. We don't want
>>> to pollute labels with non-identifying, especially large and/or structured,
>>> data. Non-identifying information should be recorded using annotations.*
>>>
>>> The idea is to use labels for all identifiers.
>>>
>>> http://kubernetes.io/v1.0/docs/user-guide/labels.html
>>>
>>> On Sun, Sep 20, 2015 at 10:05 PM, Akila Ravihansa Perera <
>>> ravihansa@wso2.com> wrote:
>>>
>>>> Hi Imesh,
>>>>
>>>> Yes, I tried adding them as labels but ran into a problem since label
>>>> length cannot be greater than 63 characters. I'm not sure why we don't see
>>>> annotations in the UI for pods created. But I can see the annotations added
>>>> for services. Might have to raise this in K8s mailing list.
>>>>
>>>> Thanks.
>>>>
>>>> On Sun, Sep 20, 2015 at 10:00 PM, Imesh Gunaratne <im...@apache.org>
>>>> wrote:
>>>>
>>>>> Hi Akila,
>>>>>
>>>>> We do not query pod labels, its handled by the Kubernetes service
>>>>> selector, at the moment this is called "name". I have now fixed this issue
>>>>> locally, will push in few minutes.
>>>>>
>>>>> In addition I think it would be better to use labels instead of
>>>>> annotations because they are not visible in the UI:
>>>>>
>>>>>
>>>>>
>>>>> Thanks
>>>>>
>>>>> On Sun, Sep 20, 2015 at 9:52 PM, Akila Ravihansa Perera <
>>>>> ravihansa@wso2.com> wrote:
>>>>>
>>>>>> Hi Imesh,
>>>>>>
>>>>>> Where do we query those pod labels?
>>>>>>
>>>>>> I'm in the process of moving label names to constants. I can apply
>>>>>> the same in all the places. I think better to change that label to
>>>>>> md5Hex-memberId to avoid any confusion when troubleshooting issues. One
>>>>>> might mistakenly take that as the actual memberId when it is not the case.
>>>>>>
>>>>>> Thanks.
>>>>>>
>>>>>> On Sun, Sep 20, 2015 at 9:40 PM, Imesh Gunaratne <im...@apache.org>
>>>>>> wrote:
>>>>>>
>>>>>>> I'm seeing a problem, we have removed the "name" label in the pod
>>>>>>> and added a new label called "md5Hex-memberId". Due to this load balancing
>>>>>>> would not work:
>>>>>>>
>>>>>>> Map<String, String> podLabels = new HashMap<>();
>>>>>>> podLabels.put("md5Hex-memberId", DigestUtils.md5Hex(memberContext.getMemberId()));
>>>>>>>
>>>>>>> Map<String, String> podAnnotations = new HashMap<>();
>>>>>>> podAnnotations.put("memberId", memberContext.getMemberId());
>>>>>>> podAnnotations.put("cartridgeType", memberContext.getCartridgeType());
>>>>>>> podAnnotations.put("applicationId", memberContext.getApplicationId());
>>>>>>> podAnnotations.put("clusterId", memberContext.getClusterId());
>>>>>>> podAnnotations.put("clusterInstanceId", memberContext.getClusterInstanceId());
>>>>>>>
>>>>>>> kubernetesApi.createPod(podId, podName, podLabels, podAnnotations, dockerImage, cpu, memory, ports,
>>>>>>>         environmentVariables);
>>>>>>>
>>>>>>>
>>>>>>> On Sun, Sep 20, 2015 at 2:51 PM, Akila Ravihansa Perera <
>>>>>>> ravihansa@wso2.com> wrote:
>>>>>>>
>>>>>>>> Hi all,
>>>>>>>>
>>>>>>>> I've pushed release artifacts to staging repo at [1]. Please take
>>>>>>>> few mins to verify the release. Also I've pushed cartridge-base, php and
>>>>>>>> tomcat Docker images with 4.1.3 artifacts to DockerHub.
>>>>>>>>
>>>>>>>> [1]
>>>>>>>> https://repository.apache.org/content/repositories/orgapachestratos-1057/
>>>>>>>>
>>>>>>>> Thanks.
>>>>>>>>
>>>>>>>> --
>>>>>>>> Akila Ravihansa Perera
>>>>>>>> WSO2 Inc.;  http://wso2.com/
>>>>>>>>
>>>>>>>> Blog: http://ravihansa3000.blogspot.com
>>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>> --
>>>>>>> Imesh Gunaratne
>>>>>>>
>>>>>>> Senior Technical Lead, WSO2
>>>>>>> Committer & PMC Member, Apache Stratos
>>>>>>>
>>>>>>
>>>>>>
>>>>>>
>>>>>> --
>>>>>> Akila Ravihansa Perera
>>>>>> WSO2 Inc.;  http://wso2.com/
>>>>>>
>>>>>> Blog: http://ravihansa3000.blogspot.com
>>>>>>
>>>>>
>>>>>
>>>>>
>>>>> --
>>>>> Imesh Gunaratne
>>>>>
>>>>> Senior Technical Lead, WSO2
>>>>> Committer & PMC Member, Apache Stratos
>>>>>
>>>>
>>>>
>>>>
>>>> --
>>>> Akila Ravihansa Perera
>>>> WSO2 Inc.;  http://wso2.com/
>>>>
>>>> Blog: http://ravihansa3000.blogspot.com
>>>>
>>>
>>>
>>>
>>> --
>>> Imesh Gunaratne
>>>
>>> Senior Technical Lead, WSO2
>>> Committer & PMC Member, Apache Stratos
>>>
>>
>>
>>
>> --
>>
>> Gayan Gunarathne
>> Technical Lead, WSO2 Inc. (http://wso2.com)
>> Committer & PMC Member, Apache Stratos
>> email : gayang@wso2.com  | mobile : +94 775030545 <%2B94%20766819985>
>>
>>
>>
>
>
>
> --
> Akila Ravihansa Perera
> WSO2 Inc.;  http://wso2.com/
>
> Blog: http://ravihansa3000.blogspot.com
>



-- 

Gayan Gunarathne
Technical Lead, WSO2 Inc. (http://wso2.com)
Committer & PMC Member, Apache Stratos
email : gayang@wso2.com  | mobile : +94 775030545 <%2B94%20766819985>

Re: Releasing Stratos 4.1.3

Posted by Akila Ravihansa Perera <ra...@wso2.com>.
Hi Gayan,

+1 for properly identifying attributes to be used for labels and
annotations. As I mentioned earlier I tried to use them as labels but ran
into length limitation issues.

memberId and clusterId cannot be used directly since they are generated as
follows;

memberId = clusterId + UUID
clusterId = applicationId + "." + alias + "." + cartridgeType + ".domain"

As you can see those can go be beyond 63 characters since we don't have a
limitation for applicationId length. I'm -1 on imposing a character
limitation to applicationId only to get away with Kubernetes restriction.
What if some other provider comes out with a different limitation? It
should be restricted but only for good reasons concerning to Stratos.

I had an offline chat with Imesh and we were discussing about implementing
a sequence number based approach for generating clusterId and memberId
without using UUIDs. Any thoughts?

Thanks.





On Sun, Sep 20, 2015 at 10:55 PM, Gayan Gunarathne <ga...@wso2.com> wrote:

> As per Kubernetes definition I think we are using labels and annotation in
> a wrong way.As annotations are arbitrary non-identifying metadata , they
> might not shown them in their UI/CLI
>
> I think first we need to recognize what are the identifiers for the pod.In
> think we may need to use member id , application id
>
> Also what is the ration behind of using the md5Hex of the member id as a
> identifier. IMO we can directly use the member id. As member id is UUID it
> won't be more than 63 characters.
>
> Thanks,
> Gayan
>
> On Sun, Sep 20, 2015 at 10:13 PM, Imesh Gunaratne <im...@apache.org>
> wrote:
>
>> Hi Akila,
>>
>> Right, I get your point on the length limitation, but this is how
>> Kubernetes has described Labels and Annotations:
>>
>> *We'll eventually index and reverse-index labels for efficient queries
>> and watches, use them to sort and group in UIs and CLIs, etc. We don't want
>> to pollute labels with non-identifying, especially large and/or structured,
>> data. Non-identifying information should be recorded using annotations.*
>>
>> The idea is to use labels for all identifiers.
>>
>> http://kubernetes.io/v1.0/docs/user-guide/labels.html
>>
>> On Sun, Sep 20, 2015 at 10:05 PM, Akila Ravihansa Perera <
>> ravihansa@wso2.com> wrote:
>>
>>> Hi Imesh,
>>>
>>> Yes, I tried adding them as labels but ran into a problem since label
>>> length cannot be greater than 63 characters. I'm not sure why we don't see
>>> annotations in the UI for pods created. But I can see the annotations added
>>> for services. Might have to raise this in K8s mailing list.
>>>
>>> Thanks.
>>>
>>> On Sun, Sep 20, 2015 at 10:00 PM, Imesh Gunaratne <im...@apache.org>
>>> wrote:
>>>
>>>> Hi Akila,
>>>>
>>>> We do not query pod labels, its handled by the Kubernetes service
>>>> selector, at the moment this is called "name". I have now fixed this issue
>>>> locally, will push in few minutes.
>>>>
>>>> In addition I think it would be better to use labels instead of
>>>> annotations because they are not visible in the UI:
>>>>
>>>>
>>>>
>>>> Thanks
>>>>
>>>> On Sun, Sep 20, 2015 at 9:52 PM, Akila Ravihansa Perera <
>>>> ravihansa@wso2.com> wrote:
>>>>
>>>>> Hi Imesh,
>>>>>
>>>>> Where do we query those pod labels?
>>>>>
>>>>> I'm in the process of moving label names to constants. I can apply the
>>>>> same in all the places. I think better to change that label to
>>>>> md5Hex-memberId to avoid any confusion when troubleshooting issues. One
>>>>> might mistakenly take that as the actual memberId when it is not the case.
>>>>>
>>>>> Thanks.
>>>>>
>>>>> On Sun, Sep 20, 2015 at 9:40 PM, Imesh Gunaratne <im...@apache.org>
>>>>> wrote:
>>>>>
>>>>>> I'm seeing a problem, we have removed the "name" label in the pod and
>>>>>> added a new label called "md5Hex-memberId". Due to this load balancing
>>>>>> would not work:
>>>>>>
>>>>>> Map<String, String> podLabels = new HashMap<>();
>>>>>> podLabels.put("md5Hex-memberId", DigestUtils.md5Hex(memberContext.getMemberId()));
>>>>>>
>>>>>> Map<String, String> podAnnotations = new HashMap<>();
>>>>>> podAnnotations.put("memberId", memberContext.getMemberId());
>>>>>> podAnnotations.put("cartridgeType", memberContext.getCartridgeType());
>>>>>> podAnnotations.put("applicationId", memberContext.getApplicationId());
>>>>>> podAnnotations.put("clusterId", memberContext.getClusterId());
>>>>>> podAnnotations.put("clusterInstanceId", memberContext.getClusterInstanceId());
>>>>>>
>>>>>> kubernetesApi.createPod(podId, podName, podLabels, podAnnotations, dockerImage, cpu, memory, ports,
>>>>>>         environmentVariables);
>>>>>>
>>>>>>
>>>>>> On Sun, Sep 20, 2015 at 2:51 PM, Akila Ravihansa Perera <
>>>>>> ravihansa@wso2.com> wrote:
>>>>>>
>>>>>>> Hi all,
>>>>>>>
>>>>>>> I've pushed release artifacts to staging repo at [1]. Please take
>>>>>>> few mins to verify the release. Also I've pushed cartridge-base, php and
>>>>>>> tomcat Docker images with 4.1.3 artifacts to DockerHub.
>>>>>>>
>>>>>>> [1]
>>>>>>> https://repository.apache.org/content/repositories/orgapachestratos-1057/
>>>>>>>
>>>>>>> Thanks.
>>>>>>>
>>>>>>> --
>>>>>>> Akila Ravihansa Perera
>>>>>>> WSO2 Inc.;  http://wso2.com/
>>>>>>>
>>>>>>> Blog: http://ravihansa3000.blogspot.com
>>>>>>>
>>>>>>
>>>>>>
>>>>>>
>>>>>> --
>>>>>> Imesh Gunaratne
>>>>>>
>>>>>> Senior Technical Lead, WSO2
>>>>>> Committer & PMC Member, Apache Stratos
>>>>>>
>>>>>
>>>>>
>>>>>
>>>>> --
>>>>> Akila Ravihansa Perera
>>>>> WSO2 Inc.;  http://wso2.com/
>>>>>
>>>>> Blog: http://ravihansa3000.blogspot.com
>>>>>
>>>>
>>>>
>>>>
>>>> --
>>>> Imesh Gunaratne
>>>>
>>>> Senior Technical Lead, WSO2
>>>> Committer & PMC Member, Apache Stratos
>>>>
>>>
>>>
>>>
>>> --
>>> Akila Ravihansa Perera
>>> WSO2 Inc.;  http://wso2.com/
>>>
>>> Blog: http://ravihansa3000.blogspot.com
>>>
>>
>>
>>
>> --
>> Imesh Gunaratne
>>
>> Senior Technical Lead, WSO2
>> Committer & PMC Member, Apache Stratos
>>
>
>
>
> --
>
> Gayan Gunarathne
> Technical Lead, WSO2 Inc. (http://wso2.com)
> Committer & PMC Member, Apache Stratos
> email : gayang@wso2.com  | mobile : +94 775030545 <%2B94%20766819985>
>
>
>



-- 
Akila Ravihansa Perera
WSO2 Inc.;  http://wso2.com/

Blog: http://ravihansa3000.blogspot.com

Re: Releasing Stratos 4.1.3

Posted by Gayan Gunarathne <ga...@wso2.com>.
As per Kubernetes definition I think we are using labels and annotation in
a wrong way.As annotations are arbitrary non-identifying metadata , they
might not shown them in their UI/CLI

I think first we need to recognize what are the identifiers for the pod.In
think we may need to use member id , application id

Also what is the ration behind of using the md5Hex of the member id as a
identifier. IMO we can directly use the member id. As member id is UUID it
won't be more than 63 characters.

Thanks,
Gayan

On Sun, Sep 20, 2015 at 10:13 PM, Imesh Gunaratne <im...@apache.org> wrote:

> Hi Akila,
>
> Right, I get your point on the length limitation, but this is how
> Kubernetes has described Labels and Annotations:
>
> *We'll eventually index and reverse-index labels for efficient queries and
> watches, use them to sort and group in UIs and CLIs, etc. We don't want to
> pollute labels with non-identifying, especially large and/or structured,
> data. Non-identifying information should be recorded using annotations.*
>
> The idea is to use labels for all identifiers.
>
> http://kubernetes.io/v1.0/docs/user-guide/labels.html
>
> On Sun, Sep 20, 2015 at 10:05 PM, Akila Ravihansa Perera <
> ravihansa@wso2.com> wrote:
>
>> Hi Imesh,
>>
>> Yes, I tried adding them as labels but ran into a problem since label
>> length cannot be greater than 63 characters. I'm not sure why we don't see
>> annotations in the UI for pods created. But I can see the annotations added
>> for services. Might have to raise this in K8s mailing list.
>>
>> Thanks.
>>
>> On Sun, Sep 20, 2015 at 10:00 PM, Imesh Gunaratne <im...@apache.org>
>> wrote:
>>
>>> Hi Akila,
>>>
>>> We do not query pod labels, its handled by the Kubernetes service
>>> selector, at the moment this is called "name". I have now fixed this issue
>>> locally, will push in few minutes.
>>>
>>> In addition I think it would be better to use labels instead of
>>> annotations because they are not visible in the UI:
>>>
>>>
>>>
>>> Thanks
>>>
>>> On Sun, Sep 20, 2015 at 9:52 PM, Akila Ravihansa Perera <
>>> ravihansa@wso2.com> wrote:
>>>
>>>> Hi Imesh,
>>>>
>>>> Where do we query those pod labels?
>>>>
>>>> I'm in the process of moving label names to constants. I can apply the
>>>> same in all the places. I think better to change that label to
>>>> md5Hex-memberId to avoid any confusion when troubleshooting issues. One
>>>> might mistakenly take that as the actual memberId when it is not the case.
>>>>
>>>> Thanks.
>>>>
>>>> On Sun, Sep 20, 2015 at 9:40 PM, Imesh Gunaratne <im...@apache.org>
>>>> wrote:
>>>>
>>>>> I'm seeing a problem, we have removed the "name" label in the pod and
>>>>> added a new label called "md5Hex-memberId". Due to this load balancing
>>>>> would not work:
>>>>>
>>>>> Map<String, String> podLabels = new HashMap<>();
>>>>> podLabels.put("md5Hex-memberId", DigestUtils.md5Hex(memberContext.getMemberId()));
>>>>>
>>>>> Map<String, String> podAnnotations = new HashMap<>();
>>>>> podAnnotations.put("memberId", memberContext.getMemberId());
>>>>> podAnnotations.put("cartridgeType", memberContext.getCartridgeType());
>>>>> podAnnotations.put("applicationId", memberContext.getApplicationId());
>>>>> podAnnotations.put("clusterId", memberContext.getClusterId());
>>>>> podAnnotations.put("clusterInstanceId", memberContext.getClusterInstanceId());
>>>>>
>>>>> kubernetesApi.createPod(podId, podName, podLabels, podAnnotations, dockerImage, cpu, memory, ports,
>>>>>         environmentVariables);
>>>>>
>>>>>
>>>>> On Sun, Sep 20, 2015 at 2:51 PM, Akila Ravihansa Perera <
>>>>> ravihansa@wso2.com> wrote:
>>>>>
>>>>>> Hi all,
>>>>>>
>>>>>> I've pushed release artifacts to staging repo at [1]. Please take few
>>>>>> mins to verify the release. Also I've pushed cartridge-base, php and tomcat
>>>>>> Docker images with 4.1.3 artifacts to DockerHub.
>>>>>>
>>>>>> [1]
>>>>>> https://repository.apache.org/content/repositories/orgapachestratos-1057/
>>>>>>
>>>>>> Thanks.
>>>>>>
>>>>>> --
>>>>>> Akila Ravihansa Perera
>>>>>> WSO2 Inc.;  http://wso2.com/
>>>>>>
>>>>>> Blog: http://ravihansa3000.blogspot.com
>>>>>>
>>>>>
>>>>>
>>>>>
>>>>> --
>>>>> Imesh Gunaratne
>>>>>
>>>>> Senior Technical Lead, WSO2
>>>>> Committer & PMC Member, Apache Stratos
>>>>>
>>>>
>>>>
>>>>
>>>> --
>>>> Akila Ravihansa Perera
>>>> WSO2 Inc.;  http://wso2.com/
>>>>
>>>> Blog: http://ravihansa3000.blogspot.com
>>>>
>>>
>>>
>>>
>>> --
>>> Imesh Gunaratne
>>>
>>> Senior Technical Lead, WSO2
>>> Committer & PMC Member, Apache Stratos
>>>
>>
>>
>>
>> --
>> Akila Ravihansa Perera
>> WSO2 Inc.;  http://wso2.com/
>>
>> Blog: http://ravihansa3000.blogspot.com
>>
>
>
>
> --
> Imesh Gunaratne
>
> Senior Technical Lead, WSO2
> Committer & PMC Member, Apache Stratos
>



-- 

Gayan Gunarathne
Technical Lead, WSO2 Inc. (http://wso2.com)
Committer & PMC Member, Apache Stratos
email : gayang@wso2.com  | mobile : +94 775030545 <%2B94%20766819985>

Re: Releasing Stratos 4.1.3

Posted by Imesh Gunaratne <im...@apache.org>.
Hi Akila,

Right, I get your point on the length limitation, but this is how
Kubernetes has described Labels and Annotations:

*We'll eventually index and reverse-index labels for efficient queries and
watches, use them to sort and group in UIs and CLIs, etc. We don't want to
pollute labels with non-identifying, especially large and/or structured,
data. Non-identifying information should be recorded using annotations.*

The idea is to use labels for all identifiers.

http://kubernetes.io/v1.0/docs/user-guide/labels.html

On Sun, Sep 20, 2015 at 10:05 PM, Akila Ravihansa Perera <ravihansa@wso2.com
> wrote:

> Hi Imesh,
>
> Yes, I tried adding them as labels but ran into a problem since label
> length cannot be greater than 63 characters. I'm not sure why we don't see
> annotations in the UI for pods created. But I can see the annotations added
> for services. Might have to raise this in K8s mailing list.
>
> Thanks.
>
> On Sun, Sep 20, 2015 at 10:00 PM, Imesh Gunaratne <im...@apache.org>
> wrote:
>
>> Hi Akila,
>>
>> We do not query pod labels, its handled by the Kubernetes service
>> selector, at the moment this is called "name". I have now fixed this issue
>> locally, will push in few minutes.
>>
>> In addition I think it would be better to use labels instead of
>> annotations because they are not visible in the UI:
>>
>>
>>
>> Thanks
>>
>> On Sun, Sep 20, 2015 at 9:52 PM, Akila Ravihansa Perera <
>> ravihansa@wso2.com> wrote:
>>
>>> Hi Imesh,
>>>
>>> Where do we query those pod labels?
>>>
>>> I'm in the process of moving label names to constants. I can apply the
>>> same in all the places. I think better to change that label to
>>> md5Hex-memberId to avoid any confusion when troubleshooting issues. One
>>> might mistakenly take that as the actual memberId when it is not the case.
>>>
>>> Thanks.
>>>
>>> On Sun, Sep 20, 2015 at 9:40 PM, Imesh Gunaratne <im...@apache.org>
>>> wrote:
>>>
>>>> I'm seeing a problem, we have removed the "name" label in the pod and
>>>> added a new label called "md5Hex-memberId". Due to this load balancing
>>>> would not work:
>>>>
>>>> Map<String, String> podLabels = new HashMap<>();
>>>> podLabels.put("md5Hex-memberId", DigestUtils.md5Hex(memberContext.getMemberId()));
>>>>
>>>> Map<String, String> podAnnotations = new HashMap<>();
>>>> podAnnotations.put("memberId", memberContext.getMemberId());
>>>> podAnnotations.put("cartridgeType", memberContext.getCartridgeType());
>>>> podAnnotations.put("applicationId", memberContext.getApplicationId());
>>>> podAnnotations.put("clusterId", memberContext.getClusterId());
>>>> podAnnotations.put("clusterInstanceId", memberContext.getClusterInstanceId());
>>>>
>>>> kubernetesApi.createPod(podId, podName, podLabels, podAnnotations, dockerImage, cpu, memory, ports,
>>>>         environmentVariables);
>>>>
>>>>
>>>> On Sun, Sep 20, 2015 at 2:51 PM, Akila Ravihansa Perera <
>>>> ravihansa@wso2.com> wrote:
>>>>
>>>>> Hi all,
>>>>>
>>>>> I've pushed release artifacts to staging repo at [1]. Please take few
>>>>> mins to verify the release. Also I've pushed cartridge-base, php and tomcat
>>>>> Docker images with 4.1.3 artifacts to DockerHub.
>>>>>
>>>>> [1]
>>>>> https://repository.apache.org/content/repositories/orgapachestratos-1057/
>>>>>
>>>>> Thanks.
>>>>>
>>>>> --
>>>>> Akila Ravihansa Perera
>>>>> WSO2 Inc.;  http://wso2.com/
>>>>>
>>>>> Blog: http://ravihansa3000.blogspot.com
>>>>>
>>>>
>>>>
>>>>
>>>> --
>>>> Imesh Gunaratne
>>>>
>>>> Senior Technical Lead, WSO2
>>>> Committer & PMC Member, Apache Stratos
>>>>
>>>
>>>
>>>
>>> --
>>> Akila Ravihansa Perera
>>> WSO2 Inc.;  http://wso2.com/
>>>
>>> Blog: http://ravihansa3000.blogspot.com
>>>
>>
>>
>>
>> --
>> Imesh Gunaratne
>>
>> Senior Technical Lead, WSO2
>> Committer & PMC Member, Apache Stratos
>>
>
>
>
> --
> Akila Ravihansa Perera
> WSO2 Inc.;  http://wso2.com/
>
> Blog: http://ravihansa3000.blogspot.com
>



-- 
Imesh Gunaratne

Senior Technical Lead, WSO2
Committer & PMC Member, Apache Stratos

Re: Releasing Stratos 4.1.3

Posted by Akila Ravihansa Perera <ra...@wso2.com>.
Hi Imesh,

Yes, I tried adding them as labels but ran into a problem since label
length cannot be greater than 63 characters. I'm not sure why we don't see
annotations in the UI for pods created. But I can see the annotations added
for services. Might have to raise this in K8s mailing list.

Thanks.

On Sun, Sep 20, 2015 at 10:00 PM, Imesh Gunaratne <im...@apache.org> wrote:

> Hi Akila,
>
> We do not query pod labels, its handled by the Kubernetes service
> selector, at the moment this is called "name". I have now fixed this issue
> locally, will push in few minutes.
>
> In addition I think it would be better to use labels instead of
> annotations because they are not visible in the UI:
>
>
>
> Thanks
>
> On Sun, Sep 20, 2015 at 9:52 PM, Akila Ravihansa Perera <
> ravihansa@wso2.com> wrote:
>
>> Hi Imesh,
>>
>> Where do we query those pod labels?
>>
>> I'm in the process of moving label names to constants. I can apply the
>> same in all the places. I think better to change that label to
>> md5Hex-memberId to avoid any confusion when troubleshooting issues. One
>> might mistakenly take that as the actual memberId when it is not the case.
>>
>> Thanks.
>>
>> On Sun, Sep 20, 2015 at 9:40 PM, Imesh Gunaratne <im...@apache.org>
>> wrote:
>>
>>> I'm seeing a problem, we have removed the "name" label in the pod and
>>> added a new label called "md5Hex-memberId". Due to this load balancing
>>> would not work:
>>>
>>> Map<String, String> podLabels = new HashMap<>();
>>> podLabels.put("md5Hex-memberId", DigestUtils.md5Hex(memberContext.getMemberId()));
>>>
>>> Map<String, String> podAnnotations = new HashMap<>();
>>> podAnnotations.put("memberId", memberContext.getMemberId());
>>> podAnnotations.put("cartridgeType", memberContext.getCartridgeType());
>>> podAnnotations.put("applicationId", memberContext.getApplicationId());
>>> podAnnotations.put("clusterId", memberContext.getClusterId());
>>> podAnnotations.put("clusterInstanceId", memberContext.getClusterInstanceId());
>>>
>>> kubernetesApi.createPod(podId, podName, podLabels, podAnnotations, dockerImage, cpu, memory, ports,
>>>         environmentVariables);
>>>
>>>
>>> On Sun, Sep 20, 2015 at 2:51 PM, Akila Ravihansa Perera <
>>> ravihansa@wso2.com> wrote:
>>>
>>>> Hi all,
>>>>
>>>> I've pushed release artifacts to staging repo at [1]. Please take few
>>>> mins to verify the release. Also I've pushed cartridge-base, php and tomcat
>>>> Docker images with 4.1.3 artifacts to DockerHub.
>>>>
>>>> [1]
>>>> https://repository.apache.org/content/repositories/orgapachestratos-1057/
>>>>
>>>> Thanks.
>>>>
>>>> --
>>>> Akila Ravihansa Perera
>>>> WSO2 Inc.;  http://wso2.com/
>>>>
>>>> Blog: http://ravihansa3000.blogspot.com
>>>>
>>>
>>>
>>>
>>> --
>>> Imesh Gunaratne
>>>
>>> Senior Technical Lead, WSO2
>>> Committer & PMC Member, Apache Stratos
>>>
>>
>>
>>
>> --
>> Akila Ravihansa Perera
>> WSO2 Inc.;  http://wso2.com/
>>
>> Blog: http://ravihansa3000.blogspot.com
>>
>
>
>
> --
> Imesh Gunaratne
>
> Senior Technical Lead, WSO2
> Committer & PMC Member, Apache Stratos
>



-- 
Akila Ravihansa Perera
WSO2 Inc.;  http://wso2.com/

Blog: http://ravihansa3000.blogspot.com

Re: Releasing Stratos 4.1.3

Posted by Imesh Gunaratne <im...@apache.org>.
Hi Akila,

We do not query pod labels, its handled by the Kubernetes service selector,
at the moment this is called "name". I have now fixed this issue locally,
will push in few minutes.

In addition I think it would be better to use labels instead of annotations
because they are not visible in the UI:



Thanks

On Sun, Sep 20, 2015 at 9:52 PM, Akila Ravihansa Perera <ra...@wso2.com>
wrote:

> Hi Imesh,
>
> Where do we query those pod labels?
>
> I'm in the process of moving label names to constants. I can apply the
> same in all the places. I think better to change that label to
> md5Hex-memberId to avoid any confusion when troubleshooting issues. One
> might mistakenly take that as the actual memberId when it is not the case.
>
> Thanks.
>
> On Sun, Sep 20, 2015 at 9:40 PM, Imesh Gunaratne <im...@apache.org> wrote:
>
>> I'm seeing a problem, we have removed the "name" label in the pod and
>> added a new label called "md5Hex-memberId". Due to this load balancing
>> would not work:
>>
>> Map<String, String> podLabels = new HashMap<>();
>> podLabels.put("md5Hex-memberId", DigestUtils.md5Hex(memberContext.getMemberId()));
>>
>> Map<String, String> podAnnotations = new HashMap<>();
>> podAnnotations.put("memberId", memberContext.getMemberId());
>> podAnnotations.put("cartridgeType", memberContext.getCartridgeType());
>> podAnnotations.put("applicationId", memberContext.getApplicationId());
>> podAnnotations.put("clusterId", memberContext.getClusterId());
>> podAnnotations.put("clusterInstanceId", memberContext.getClusterInstanceId());
>>
>> kubernetesApi.createPod(podId, podName, podLabels, podAnnotations, dockerImage, cpu, memory, ports,
>>         environmentVariables);
>>
>>
>> On Sun, Sep 20, 2015 at 2:51 PM, Akila Ravihansa Perera <
>> ravihansa@wso2.com> wrote:
>>
>>> Hi all,
>>>
>>> I've pushed release artifacts to staging repo at [1]. Please take few
>>> mins to verify the release. Also I've pushed cartridge-base, php and tomcat
>>> Docker images with 4.1.3 artifacts to DockerHub.
>>>
>>> [1]
>>> https://repository.apache.org/content/repositories/orgapachestratos-1057/
>>>
>>> Thanks.
>>>
>>> --
>>> Akila Ravihansa Perera
>>> WSO2 Inc.;  http://wso2.com/
>>>
>>> Blog: http://ravihansa3000.blogspot.com
>>>
>>
>>
>>
>> --
>> Imesh Gunaratne
>>
>> Senior Technical Lead, WSO2
>> Committer & PMC Member, Apache Stratos
>>
>
>
>
> --
> Akila Ravihansa Perera
> WSO2 Inc.;  http://wso2.com/
>
> Blog: http://ravihansa3000.blogspot.com
>



-- 
Imesh Gunaratne

Senior Technical Lead, WSO2
Committer & PMC Member, Apache Stratos

Re: Releasing Stratos 4.1.3

Posted by Akila Ravihansa Perera <ra...@wso2.com>.
Hi Imesh,

Where do we query those pod labels?

I'm in the process of moving label names to constants. I can apply the same
in all the places. I think better to change that label to md5Hex-memberId
to avoid any confusion when troubleshooting issues. One might mistakenly
take that as the actual memberId when it is not the case.

Thanks.

On Sun, Sep 20, 2015 at 9:40 PM, Imesh Gunaratne <im...@apache.org> wrote:

> I'm seeing a problem, we have removed the "name" label in the pod and
> added a new label called "md5Hex-memberId". Due to this load balancing
> would not work:
>
> Map<String, String> podLabels = new HashMap<>();
> podLabels.put("md5Hex-memberId", DigestUtils.md5Hex(memberContext.getMemberId()));
>
> Map<String, String> podAnnotations = new HashMap<>();
> podAnnotations.put("memberId", memberContext.getMemberId());
> podAnnotations.put("cartridgeType", memberContext.getCartridgeType());
> podAnnotations.put("applicationId", memberContext.getApplicationId());
> podAnnotations.put("clusterId", memberContext.getClusterId());
> podAnnotations.put("clusterInstanceId", memberContext.getClusterInstanceId());
>
> kubernetesApi.createPod(podId, podName, podLabels, podAnnotations, dockerImage, cpu, memory, ports,
>         environmentVariables);
>
>
> On Sun, Sep 20, 2015 at 2:51 PM, Akila Ravihansa Perera <
> ravihansa@wso2.com> wrote:
>
>> Hi all,
>>
>> I've pushed release artifacts to staging repo at [1]. Please take few
>> mins to verify the release. Also I've pushed cartridge-base, php and tomcat
>> Docker images with 4.1.3 artifacts to DockerHub.
>>
>> [1]
>> https://repository.apache.org/content/repositories/orgapachestratos-1057/
>>
>> Thanks.
>>
>> --
>> Akila Ravihansa Perera
>> WSO2 Inc.;  http://wso2.com/
>>
>> Blog: http://ravihansa3000.blogspot.com
>>
>
>
>
> --
> Imesh Gunaratne
>
> Senior Technical Lead, WSO2
> Committer & PMC Member, Apache Stratos
>



-- 
Akila Ravihansa Perera
WSO2 Inc.;  http://wso2.com/

Blog: http://ravihansa3000.blogspot.com

Re: Releasing Stratos 4.1.3

Posted by Imesh Gunaratne <im...@apache.org>.
I'm seeing a problem, we have removed the "name" label in the pod and added
a new label called "md5Hex-memberId". Due to this load balancing would not
work:

Map<String, String> podLabels = new HashMap<>();
podLabels.put("md5Hex-memberId",
DigestUtils.md5Hex(memberContext.getMemberId()));

Map<String, String> podAnnotations = new HashMap<>();
podAnnotations.put("memberId", memberContext.getMemberId());
podAnnotations.put("cartridgeType", memberContext.getCartridgeType());
podAnnotations.put("applicationId", memberContext.getApplicationId());
podAnnotations.put("clusterId", memberContext.getClusterId());
podAnnotations.put("clusterInstanceId", memberContext.getClusterInstanceId());

kubernetesApi.createPod(podId, podName, podLabels, podAnnotations,
dockerImage, cpu, memory, ports,
        environmentVariables);


On Sun, Sep 20, 2015 at 2:51 PM, Akila Ravihansa Perera <ra...@wso2.com>
wrote:

> Hi all,
>
> I've pushed release artifacts to staging repo at [1]. Please take few mins
> to verify the release. Also I've pushed cartridge-base, php and tomcat
> Docker images with 4.1.3 artifacts to DockerHub.
>
> [1]
> https://repository.apache.org/content/repositories/orgapachestratos-1057/
>
> Thanks.
>
> --
> Akila Ravihansa Perera
> WSO2 Inc.;  http://wso2.com/
>
> Blog: http://ravihansa3000.blogspot.com
>



-- 
Imesh Gunaratne

Senior Technical Lead, WSO2
Committer & PMC Member, Apache Stratos