Re: [yangtools-dev] Anyxml in yang model
Y. Richard Yang
Hi Tony, We are going down the path of trying augment (based on the cost-mode: numerical vs ordinal vs path-vector vs calendar vs policy). We will keep you updated. If you have new suggestions, please let the alto-dev people know as well--we are still new to this. Thanks! Richard On Wed, Apr 15, 2015 at 12:04 PM, Tony Tkacik -X (ttkacik - Pantheon Technologies SRO at Cisco) <ttkacik@...> wrote:
|
|
Re: Some questions about deleting data by alto-manager
Y. Richard Yang
Hi Xin, Good discussion. Suppose the admin issues alto:delete (btw, I found the verb destroy too violent, so I, as you, will use delete). I assume that then the network will disappear. This means that it should not appear either in northbound or restconf (deleted from data store). Following the principle of minimal amount of work, then your bundle should deregister from all events and stop running. We do not have a restart command yet---we have not designed the whole life cycle thing yet. So the state machine, at this point is: event: feature:install -> state: running event: alto:delete hostrackermap -> state: stopped There is no transition to resurrect it, unless we want to conduct a more complete lifecycle design. The outcome of the admin issues feature:install again at the stopped state is not defined. Agree? Richard
On Wed, Apr 15, 2015 at 11:15 AM, wangxin <xinwang2014@...> wrote:
|
|
Re: Some questions about deleting data by alto-manager
xinwang
I agree that when alto-manager send a delete command, the corresponding bundle should stop running. Then we should decide how alto-manager send a alto:delete event? I don't think just delete the data like network-map is a good choice. If there are data deleted from the data store means the corresponding bundle should stop, then it looks like i write data to it and also i listen data change from the same place. I prefer some configurational data that apart from resources data in alto. Then alto-hosttracker can listen to the data and stop running when it changes. Xin Date: Thu, 16 Apr 2015 15:59:26 -0400 Subject: Re: Some questions about deleting data by alto-manager From: yry@... To: xinwang2014@... CC: alto-dev@... Hi Xin, Good discussion. Suppose the admin issues alto:delete (btw, I found the verb destroy too violent, so I, as you, will use delete). I assume that then the network will disappear. This means that it should not appear either in northbound or restconf (deleted from data store). Following the principle of minimal amount of work, then your bundle should deregister from all events and stop running. We do not have a restart command yet---we have not designed the whole life cycle thing yet. So the state machine, at this point is: event: feature:install -> state: running event: alto:delete hostrackermap -> state: stopped There is no transition to resurrect it, unless we want to conduct a more complete lifecycle design. The outcome of the admin issues feature:install again at the stopped state is not defined. Agree? Richard
On Wed, Apr 15, 2015 at 11:15 AM, wangxin <xinwang2014@...> wrote:
|
|
Planning for next week
Y. Richard Yang
Dear team,
As much as I do not want to push for work items Friday evening/Saturday morning, we need to plan a bit for the next week. In particular, there is the ODL training for the whole week next week, which means that Kai and Wang Xi will be busy learning more on ODL. This is great for the long term. Here is more proposal for next week: 1. Basic goal: finish T1 to T6 (see slack test channel). 2. Start to conduct code review (both Wendy and I are eager to read the design). 3. Start to systematically add unit and system tests 4. Start to plan to add new things: Topology (path vector) Demonstrate the use with an ALTO client: in particular GridFTP, or MapReduce (Hadoop or Spark). The highest priority is to finish 1. To make sure that we accomplish this item, we need a scheduler/champion to monitor tasks and issues of this item. I am wondering if there is one person who can take on this role. Or we can do distributed computing: there is a champion for each of T1 to T6. Ideally, the champion is the person who takes on the major missing piece of each Ti. Please let me know. If no response, I will make a proposal. Thank you so much! Richard -- Richard
|
|
ONOS arch diagram
Y. Richard Yang
Dear team, I am taking a quick look at ONOS, and saw this architecture diagram: It sure is similar to our architecture. Even the names are similar (provider, mamaner, adminservice, service/rfc7285). Cheers, Richard
|
|
Re: ALTO in ODL Planning
Y. Richard Yang
Shu, Thanks for the update! Please see below. On Tue, Apr 21, 2015 at 11:12 PM, 董舒 <dongs2011@...> wrote:
Great!
Thanks.
I will review tomorrow.
Let me understand. What is a goal of defining a default cost field? Or you are suggesting that there is a default cost field, say numerical, and then use augment to change (or add) it into another type, when it is, say, ordinal? My understanding is that augment can only add (https://tools.ietf.org/html/rfc6020#section-7.15). For efficient storage, in terms of Java classes, I feel that a possible definition of a cost-map is the following: Inner level is from string (dst pid name) to the type such as a float (numerical) or int (ordinal) or vector (path-vector): HashMap<String, Integer> or HashMap<String, Double> or HashMap<String, Vector>, .. Outer level is a hash map from string (src pidname) to the inner level hashmap, e.g., HashMap<String, HashMap<String, ValueType>> A very dumb inheritance based design is is: class CostMapBase { // base field (meta) } class CostMapInt extends CostMapBase { HashMap<String, Integer> costmap; } class CostMapDouble extends CostMapBase { HashMap<String, Double> costmap; } Or if one uses the containment design: class CostMap<ValueType> { // meta HashMap<String, HashMap<String, ValueType>> costmap; } I believe that the augment mapping is based on inheritance. Hence, to simulate the first design, the augment defines the whole hashmap of hashmap. Make sense? Richard
|
|
Re: ALTO in ODL Planning
dongshu
Sorry for the late reply. Just come back from office. Actually I don't have a solution for the default cost field problem but the intuition told me that we should set a default cost field in alto-model instead of leave it as empty. I think your design is very good, but I have no idea how to implement it by yang. Do you think it's necessary to schedule a meeting to discuss it together?
On Wed, Apr 22, 2015 at 12:48 PM, Y. Richard Yang <yry@...> wrote:
|
|
Re: ALTO in ODL Planning
Y. Richard Yang
Hi Shu,
toggle quoted messageShow quoted text
Let's schedule a design meeting soon. It depends on when Xin and Kai are available. Xin/Kai: please let us know. Let me summarize the option, if we use yang (BTW: I always think using yang is a wrong design decision, because it does not add much free ride but add much restriction, at least for a programmer, :-( Here is the proposal: Base cost-map includes only meta; depends on cost-metric, we add (augment) the correct hash map. This is to simulate the inheritance design in my previous email (base class has only meta and each derived class has the correct HashMap of HashMap; note there is a typo in the previous email, which I fixed in this reply). I will take a look at Jackson to see how it handles such stateful parsing. I thought about a yang storage model where each cost value is always a float (this is allowed by the Java promotion rule), but it is a hack that will fall apart when we add vector. Thanks. Richard
On Wednesday, April 22, 2015, 董舒 <dongs2011@...> wrote:
-- Richard
|
|
Jackson as jax-rs provider?
Y. Richard Yang
Hi Kai, all,
I am taking a look at alto-northbound on how it parses the entity body. My early thought was that we would define new entity body providers to parse and serialize alto media types: https://jersey.java.net/documentation/latest/message-body-workers.html In reading the current design (alto/alto-northbound/src/main/java/org/opendaylight/alto/northbound), I saw that we are parsing a string, e.g., @Path("/filtered/networkmap/{id}") @POST @Consumes({ MediaType.ALTO_NETWORKMAP_FILTER}) @Produces({ MediaType.ALTO_NETWORKMAP, MediaType.ALTO_ERROR}) public Response retrieveFilteredNetworkMap( @PathParam("id") String id, String filterJSON) { ... NetworkMap.Filter filter = mapper.asNetworkMapFilter(filterJSON);
... I am not an expert of jax-rs, and I am actually fine with parsing the body as a String. This seems to imply scanning the msg body twice: first to convert to a strng and the scan it, but the msg body is small anyway. My question is: how is the conversion from body to the string happened (https://jersey.java.net/documentation/latest/message-body-workers.html#providers-selection). Is the MessageBodyReader<T>/MessageBodyWriter<T> design considered ()? Thanks! Richard
|
|
Northbound/RFC7285 CostMap
Y. Richard Yang
Dear Kai, team, I am reading up the parser of RFC7285 (alto/alto-commons/src/main/java/org/opendaylight/alto/commons/types/rfc7285). Let me start by saying that the current design is very clean. Great work!
Here is some more thinking: - Jackson has three methods to process JSON (data binding, tree, and streaming: http://wiki.fasterxml.com/JacksonInFiveMinutes). The cleanest is definitely data binding, which is the current design. - An unknown type in RFC7285 is cost map. As we discussed in previous email, it can be Map<String, Map<String, Integer>> or Map<String, Map<String, Double>> depending on the cost-mode. Later, it may become an array... The current design is the following (alto/alto-commons/src/main/java/org/opendaylight/alto/commons/types/rfc7285/CostMap.java):
@JsonProperty("meta") public Meta meta; @JsonProperty("cost-map") public Map<String, Map<String, Object>> map = new LinkedHashMap<String, Map<String, Object>>(); This is a clever design using Object. One question: I have not tested the code. Given that the northbound writing is public String asJSON(Object obj) throws Exception { return mapper.writeValueAsString(obj); } Is it RFC7285 compliant (i.e., output int or double for cost map)? Suppose we do want the more specific type (e.g., some cost being int and some being double is not allowed), so that Object is changed to a specific ValueType, then generic binding may not work, and we will need to use the streaming parser: JsonFactory f = new JsonFactory(); JsonParser jp = f.createJsonParser(json); // skip to first sub object -- **need to assume that the first is meta though** Meta meta = mapper.readValue(jp, Meta.class); // look into the cost mode in meta and decide the ValueType; // map is a pointer to the specific types if ("numerical".equals(meta.costType.mode)) // one branch else if // another branch ... I am not proposing the preceding change yet, but it may help to give comments on the design choices--for example, the choice of map of map to Object instead of specific int or double. Make sense? Richard
|
|
Re: ALTO in ODL Planning
Gao Kai <gaok12@...>
Won't be available until Friday night.
toggle quoted messageShow quoted text
-----原始邮件-----
|
|
Re: ALTO in ODL Planning
xinwang
Me too, i will be available at Friday night. Date: Thu, 23 Apr 2015 09:04:13 +0800 From: gaok12@... To: yry@... CC: dongs2011@...; yakumolx@...; xinwang2014@...; wendy@...; alto-dev@... Subject: Re: Re: ALTO in ODL Planning Won't be available until Friday night.
-----原始邮件-----
|
|
Re: ALTO in ODL Planning
Y. Richard Yang
OK. Let's plan Saturday morning your time (Friday evening my time). Let's set 10 am your time. How does this sound? Richard
On Wed, Apr 22, 2015 at 9:10 PM, wangxin <xinwang2014@...> wrote:
-- ===================================== | Y. Richard Yang <yry@...> | | Professor of Computer Science | =====================================
|
|
Re: ALTO in ODL Planning
Y. Richard Yang
BTW, I am switching back to slack for better coordination. Please do check it. Thanks. Richard
On Wed, Apr 22, 2015 at 9:12 PM, Y. Richard Yang <yry@...> wrote:
-- ===================================== | Y. Richard Yang <yry@...> | | Professor of Computer Science | =====================================
|
|
Re: ALTO in ODL Planning
Xin Li <yakumolx@...>
Good to me.
On Thu, Apr 23, 2015 at 9:12 AM, Y. Richard Yang <yry@...> wrote:
|
|
Follow up with Document status
George Zhao <George.Y.Zhao@...>
Project leads in the following projects, could you please provide your documentation locations:
AAA ALTO Controller, D4A DIDM dLux L2switch SDNi SNMP SNMP4SDN SNBI Yangtools
Please use TTP project for example, its documentation in docs.git/manuals/developers-guide/src/main/asciidoc/ttp.adoc
Thanks, George
|
|
Re: Follow up with Document status
Harman Singh (harmasin) <harmasin@...>
Hi George,
Here is the gerrit link for dlux documentation change - https://git.opendaylight.org/gerrit/#/c/19179/
Thanks,
- Harman
From: George Zhao <George.Y.Zhao@...>
Date: Monday, April 27, 2015 at 12:19 PM To: "aaa-dev@..." <aaa-dev@...>, "alto-dev@..." <alto-dev@...>, "controller-dev@..." <controller-dev@...>, "'defense4all-dev@...'" <defense4all-dev@...>, "didm-dev@..." <didm-dev@...>, "dlux-dev@..." <dlux-dev@...>, "yangtools-dev@..." <yangtools-dev@...>, "'snmp4sdn-dev@...'" <snmp4sdn-dev@...>, "snbi-dev@..." <snbi-dev@...>, "release@..." <release@...>, "'snmp-dev@...'" <snmp-dev@...>, "sdninterfaceapp-dev@..." <sdninterfaceapp-dev@...> Cc: Wojciech Dec <wdec.ietf@...>, "yry@..." <yry@...>, "Tony Tkacik -X (ttkacik - Pantheon Technologies SRO at Cisco)" <ttkacik@...>, "gupatel@..." <gupatel@...>, Harman Singh <harmasin@...>, "ylhsieh@..." <ylhsieh@...>, "vanadr@..." <vanadr@...>, "shahid.b@..." <shahid.b@...> Subject: Follow up with Document status Project leads in the following projects, could you please provide your documentation locations:
AAA ALTO Controller, D4A DIDM dLux L2switch SDNi SNMP SNMP4SDN SNBI Yangtools
Please use TTP project for example, its documentation in docs.git/manuals/developers-guide/src/main/asciidoc/ttp.adoc
Thanks, George
|
|
Re: [snmp-dev] Follow up with Document status
Adam Dierkens -T (adierken - ADECCO EMPLOYMENT SERVICES@Cisco) <adierken@...>
Hi George,
SNMP doc change: https://git.opendaylight.org/gerrit/#/c/19188/
Thanks,
Adam
From: "Harman Singh (harmasin)" <harmasin@...>
Date: Monday, April 27, 2015 at 5:52 PM To: George Zhao <George.Y.Zhao@...>, "aaa-dev@..." <aaa-dev@...>, "alto-dev@..." <alto-dev@...>, "controller-dev@..." <controller-dev@...>, "'defense4all-dev@...'" <defense4all-dev@...>, "didm-dev@..." <didm-dev@...>, "dlux-dev@..." <dlux-dev@...>, "yangtools-dev@..." <yangtools-dev@...>, "'snmp4sdn-dev@...'" <snmp4sdn-dev@...>, "snbi-dev@..." <snbi-dev@...>, "release@..." <release@...>, "'snmp-dev@...'" <snmp-dev@...>, "sdninterfaceapp-dev@..." <sdninterfaceapp-dev@...> Cc: "ylhsieh@..." <ylhsieh@...>, "Tony Tkacik -X (ttkacik - Pantheon Technologies SRO at Cisco)" <ttkacik@...>, Wojciech Dec <wdec.ietf@...>, "shahid.b@..." <shahid.b@...>, "vanadr@..." <vanadr@...>, "yry@..." <yry@...>, "gupatel@..." <gupatel@...> Subject: Re: [snmp-dev] Follow up with Document status Hi George,
Here is the gerrit link for dlux documentation change - https://git.opendaylight.org/gerrit/#/c/19179/
Thanks,
- Harman
From: George Zhao <George.Y.Zhao@...>
Date: Monday, April 27, 2015 at 12:19 PM To: "aaa-dev@..." <aaa-dev@...>, "alto-dev@..." <alto-dev@...>, "controller-dev@..." <controller-dev@...>, "'defense4all-dev@...'" <defense4all-dev@...>, "didm-dev@..." <didm-dev@...>, "dlux-dev@..." <dlux-dev@...>, "yangtools-dev@..." <yangtools-dev@...>, "'snmp4sdn-dev@...'" <snmp4sdn-dev@...>, "snbi-dev@..." <snbi-dev@...>, "release@..." <release@...>, "'snmp-dev@...'" <snmp-dev@...>, "sdninterfaceapp-dev@..." <sdninterfaceapp-dev@...> Cc: Wojciech Dec <wdec.ietf@...>, "yry@..." <yry@...>, "Tony Tkacik -X (ttkacik - Pantheon Technologies SRO at Cisco)" <ttkacik@...>, "gupatel@..." <gupatel@...>, Harman Singh <harmasin@...>, "ylhsieh@..." <ylhsieh@...>, "vanadr@..." <vanadr@...>, "shahid.b@..." <shahid.b@...> Subject: Follow up with Document status Project leads in the following projects, could you please provide your documentation locations:
AAA ALTO Controller, D4A DIDM dLux L2switch SDNi SNMP SNMP4SDN SNBI Yangtools
Please use TTP project for example, its documentation in docs.git/manuals/developers-guide/src/main/asciidoc/ttp.adoc
Thanks, George
|
|
a question about alto ecs ?
linxiao9292
Hi all, When ALTO server provide endpoint cost between h1 and h2 , is the path between h1 and h2 given ? For example, before ALTO server provides endpoint cost, it knows that h1 can connect to h2 in path h1-s1-s3-h2 h1-s1-s3-h2 | | s2-s4 Or ALTO server could assume by itself that h1 could be connect to h2 through path h1-s1-s2-s4-s3-h2? Thanks & Best Wishes! Xiao Lin
|
|
Re: a question about alto ecs ?
Wendy Roome
According the rfc 7285, ECS response just gives the cost. The server hides the path and any other information it uses to calculate the cost. The easiest way to implement ECS is for the server to map each endpoint to a pid and return the costs between the pids. But the server MAY use more detailed cost information if it wants. Does that help?
On Apr 29, 2015, at 21:15, <linxiao9292@...> <linxiao9292@...> wrote:
|
|