<solnic>
cored: we were attending eurucamp and now we’re super busy with work heh :)
<mbj>
solnic: snusnu is still in berlin?
<cored>
solnic: yeap, I notice that
<cored>
I did another refactor to rom-relation
<cored>
planning to keep going on the other execlude methods from reek
<solnic>
cored: talk to me before you start because some are supposed to be excluded
<solnic>
mbj: I think so
<cored>
solnic: probably it will be a good idea to check out my last PR
<cored>
Mapping#build_relation
<cored>
feature envy
<cored>
I remove that warning creating a new method inside Relation class which build the realtion from a definition
jfredett has joined #rom-rb
knowtheory has quit [Quit: Computer has gone to sleep]
jfredett has quit [Quit: Leaving.]
ffeldhaus has quit [Ping timeout: 250 seconds]
knowtheory has joined #rom-rb
knowtheory has quit [Ping timeout: 246 seconds]
knowtheory has joined #rom-rb
knowtheory has quit [Ping timeout: 264 seconds]
knowtheory has joined #rom-rb
knowtheory has quit [Quit: Computer has gone to sleep]
knowtheory has joined #rom-rb
mbj has quit [Ping timeout: 248 seconds]
mbj has joined #rom-rb
dudleyf has quit [Quit: dudleyf]
mbj has quit [Read error: Connection reset by peer]
mbj has joined #rom-rb
<Gibheer>
mbj: hi
<Gibheer>
sorry I did not answer you, the twitter client rejected any sends :/
mbj has quit [Read error: Connection reset by peer]
mbj has joined #rom-rb
<mbj>
Gibheer: np
postmodern has joined #rom-rb
cored has quit [Ping timeout: 264 seconds]
cored has joined #rom-rb
cored has joined #rom-rb
ffeldhaus has joined #rom-rb
<ffeldhaus>
Hi
<mbj>
ffeldhaus: hola
<ffeldhaus>
I recently discovered rom-rb as I was for a data mapping solution for a service API. From what I saw, it would fit perfectly, but unfortunately I wasn't able to run the examples from rom-rb.org due to issues with the rom gem
<ffeldhaus>
could you help me getting started?
<mbj>
ffeldhaus: I can try
<ffeldhaus>
that would be great
<mbj>
ffeldhaus: I'm on a train and "busy" but maybe I can help you post the "block" :D
<mbj>
ffeldhaus: Please explain your use-case and how you plan to use what components.
<ffeldhaus>
just knowing where to get the rom gem would be fine. Just installing it from rubygems gives me an error when require 'rom'
<mbj>
ffeldhaus: We dont have a release currently
<ffeldhaus>
and I'm happy to explain my use cases
<mbj>
AFAIK
<mbj>
But I was VERY busy the last week, I think solnic is preping a release.
<mbj>
The "rom" gem will only be a metagem, requirering others.
<ffeldhaus>
I'm one of the developer of the OCCI API toolkot for ruby
<mbj>
So you wrap the REST API into domain objects and plan to manipulate them via carrying out CRUD operations perfomed by a rom-driver?
<ffeldhaus>
we currently plan to rewrite the server
<mbj>
okay, rom could/should also be usable for clients :D
<ffeldhaus>
yes
<ffeldhaus>
we would like to map the CRUD operations to several cloud services such as OpenStack, OpenNebula
<ffeldhaus>
or PaaS services such as CompatibleOne
<mbj>
I see
<mbj>
Where do you consider to use rom *exactly* ?
<mbj>
ffeldhaus: maybe this question is superflownous, I'm sorry up for that much hours :D
<ffeldhaus>
no problem
<ffeldhaus>
I be happy to explain what we want
<mbj>
shoot
<mbj>
ffeldhaus: german? "feldhaus" sounds like a german lastname.
<ffeldhaus>
we have incoming Occi messages which are basically json objects with a uniqe ID, an identifier which describes the object attributes and actions
<mbj>
ffeldhaus: if so, "hallo, aber lass weiter english reden, der channel ist öffentlich geloggt, und ich denke das andere profitieren".
<mbj>
ffeldhaus: operational transformation like
<ffeldhaus>
german :-)
<ffeldhaus>
but we can continue in enlish for the greater good
<mbj>
yeah
<mbj>
so you receive messages containing an operation. Pls go on.
<ffeldhaus>
the occi messages should be mapped to services offered by service providers (e.g. a compute object should be mapped to an OpenNebula compute object or a compute action should be mapped to the corresponding action of the OpenStack compute object)
<mbj>
got it
<mbj>
so a provider does transform these operations into "native" API calls.
<ffeldhaus>
the problem we have with our current implemetation is, that we can only support one "backend" (e.g. either OpenNebula or OpenStack) at the same time and the backends cannot store all metainformation we receive (like grouping of objects) so that we have to store this additional information somewhere else
<ffeldhaus>
currently, the occi-server translates the REST calls into backend API calls
<mbj>
an overlay
<ffeldhaus>
and also stores some additional information if the backend can't store it
<mbj>
And you wanna use ROM for the overlay data?
<ffeldhaus>
yes. And maybe to help transforming the Occi model into the model of the backend (e.g. OCCI Compute objects and their attributes into OpenStack Compute objects with attributes in a different format)
<ffeldhaus>
I'm not sure how well rom would be suited for the model transformation, but maybe you can help me to understand that part
<mbj>
And you need to do this with minimizing duplication and bugs :D
<ffeldhaus>
sure ;-)
<mbj>
I'll have to ask some questions, to identify where ROM might help you.
<ffeldhaus>
I do my best to answer them
cored has quit [Ping timeout: 268 seconds]
<mbj>
How is this overlay data structured? Given an OCCI object A with attributes A1, A2, A3 and a mapping to native object B with attributes B1, B2 and A1,A2 map to B1, B2, A3 needs to be "overlayed"
<mbj>
so far soo good
<mbj>
A3 is a primitive? another object, an association?
<mbj>
Can you enumerate all overlay attributes?
cored has joined #rom-rb
<mbj>
s/B2, A3/B2 so A3/
<mbj>
Sorry for letting your brain backtracking
<ffeldhaus>
all attributes are primitive data types (e.g. string, boolean and number)
<mbj>
are there mappings like A1 = B1, B2 ?
<ffeldhaus>
all attributes from Occi can be enumerated
<mbj>
Or A1, A2 = B1
knowtheo1y has joined #rom-rb
<mbj>
Do you validate the structure of the json and the contents?
<mbj>
Already transformed them to DTOs at this point?
<ffeldhaus>
not yet. For complex services a one to many or many to one relation may be possible but could be excluded
knowtheo2y has joined #rom-rb
knowtheo1y has quit [Read error: Connection reset by peer]
<ffeldhaus>
no, we haven't transformed them to DTOs yet as we tried to store all data in the service provider which is not a db, but an API
<mbj>
Are there queries in OCCI?
knowtheory has quit [Ping timeout: 248 seconds]
<ffeldhaus>
yes
knowtheory has joined #rom-rb
<mbj>
You plan to support them also, and the query conditions can hit both, native API and overlay parts.
<mbj>
?
<ffeldhaus>
the queries can be mapped 1:1 on the APIs or will be broken down so that 1:1 mappings will be possible
<ffeldhaus>
queries can be done by object type and object attribute
<mbj>
okay
<ffeldhaus>
and limited to a given number
<mbj>
This answers the question from above.
<mbj>
Are you familiar with the Relational Algebra, RA?
<ffeldhaus>
yes, from my days at the university
<ffeldhaus>
but it's been a while
<mbj>
Okay. So ROM is build on Axiom, an relational algebra library. Basically an in-memory database for ruby that is able to push down operations to datastores / APIs
knowtheo2y has quit [Ping timeout: 245 seconds]
<ffeldhaus>
that sounds very good
<mbj>
This Axiom library powers ROM::Relation
<mbj>
And it can operate on "joined" relations.
<mbj>
And it can also write to joins...
<mbj>
So you could (and IMHO should) map your json to validated DTOs
<mbj>
And you could use ROM to do queries / inserts / updates (commands) against your native services and the overlay
<mbj>
axiom would handle that "write and select through joins"
<mbj>
Now the sad news: We dont have write support jet :D
<mbj>
Adding write support to Axiom is not that hard.
<mbj>
It has to be handled on an native API provider adapter.
<mbj>
So lets say Axiom supports writes. If you decide to use Axiom you could do that stuff OOTB.
<mbj>
*with writing adapters obviousely
cored has quit [Quit: leaving]
<mbj>
I wrote some NoSQL adapters for axiom, it is fun.
<ffeldhaus>
writing adapters should not be the issue if we can get at least one "dummy" adapter done as a reference
<mbj>
Yeah you could pick some of my NoSQL adapters.
<ffeldhaus>
what needs to be done for Axiom write support? Are there some things in the Axiom core missing or is it just related to the adapters?
<ffeldhaus>
again, I'll have to check it out and see how it can help us
<mbj>
yeah, pls feedback any thoughts issues
<mbj>
helps us a lot.
<mbj>
ffeldhaus: you are sponsored for this opensource work?
<mbj>
ffeldhaus: Just for fun, or commercial need? Just curios, no need to answer.
<ffeldhaus>
no problem
<ffeldhaus>
this all started as a sidework of my PhD
<mbj>
I successfully quit university - to much paperwork :D
<ffeldhaus>
last year it was picked up by the EGI FedCloud Initiative and they are currently evaluating it in their testbed
<mbj>
nice
<mbj>
So you implement some stuff for your PhD.
<ffeldhaus>
no, I canceled my PhD
<ffeldhaus>
and work in the industry now, but continue the work on OCCI because I'm kind of addicted
<mbj>
more or less same with me
<mbj>
canceled before any degree and doing my own projects.
<mbj>
Sometimes I get sponsored to do opensource work. this is most addictive!
<ffeldhaus>
but before I quit university I got some funding by the EU which is now taken over by some nice guys from CESNET (Czech Republic)
<ffeldhaus>
and we may get some additional funding depending on wether we do the server part right
<mbj>
Wish you the best!
<ffeldhaus>
there is quite some demand for interoperable cloud solutions and IMHO the Occi model is just perfect for it
<ffeldhaus>
I'll keep you updated, at least on how we progress with Axiom / ROM
<mbj>
I did not took a look into the OCCI spec right now.
<mbj>
For myself I just implemented the new cloud prviders API subset on a switch in close to no time.
<mbj>
But I also see the need for some interoperability.
<ffeldhaus>
The biggest advantage I see in Occi is, that it allows the service provider to describe it's services and then the client can digest that information and manage services at the service provider
<mbj>
TBH I'm always very sceptical when I see projects like OCCI
<mbj>
Getting funded by official entities directly pops up "design by comitee" in my brain :D
<ffeldhaus>
you're probably absolutely right, but as I am part of that Comitee and the comitee is just a bunch of nice guys discussing some interesting ideas for managing services, it's ok
<ffeldhaus>
we'll see if it get's picked up at some time
<mbj>
haha
<mbj>
nice
<mbj>
IMHO a design should be implemented before being approved.
<mbj>
See AMQP and its history
<ffeldhaus>
that's what we currently do
<mbj>
okay, got the point
<ffeldhaus>
btw, one of the founders of AMQP also started OCCI, but he's now working on other more important stuff
<mbj>
I once read a lengthy post by some AMQP authors discussing the reasons he had to quit there.
<mbj>
Very interesting
<ffeldhaus>
what was the reason? VMware buying it?
<mbj>
I think it was a rant by a guy behind zmq
<mbj>
I really like ZQM, very lightweight in idea.
<mbj>
Implementation is some kind of messy, cannot easily follow their C++.
<ffeldhaus>
I currently like Web Sockets, but it all has advantages and disadvantages
<mbj>
yes
mbj has quit [Ping timeout: 256 seconds]
<ffeldhaus>
I need to leave now... it would be nice to meet you sometime in person. Where are you located? Are you attending any public events in the near future?
mbj has joined #rom-rb
ffeldhaus has quit [Quit: Page closed]
<postmodern>
im excited for the first ROM release!
<postmodern>
i have big plans for ROM
<postmodern>
want to redo my ad-hoc caching layer in ronin
<postmodern>
used to cache the metadata of exploits/scanners into the db for searching
<postmodern>
with ROM i hope to decouple the caching part from the actual classes
<mbj>
postmodern: yeah
<postmodern>
that way i can cache PORO into the DB and load PORO from the DB/source-file
<mbj>
postmodern: I'm excited too
<mbj>
postmodern: but we'll not have write support on the early releases
<postmodern>
aye
<postmodern>
have to start somewhere
<mbj>
sure
<postmodern>
will at least give me something to evaluate to provide feedback
<mbj>
postmodern: BTW my first talk ever at eurucamp was okay, next time will be lots of better and easier.
<postmodern>
mbj, awesome how was the workshop?
<postmodern>
mbj, also will the video be posted?
<mbj>
postmodern: medicore, mostly because we missed to ask the attendies to bundle before the event.
<mbj>
and wlan was crappy :D
<postmodern>
ooh that will do it
<mbj>
So I ended up to share wifi via my tabled to make progress.
<mbj>
*tablet
<postmodern>
oh man, that must have been slow
<mbj>
postmodern: But we saw good questions and people loving mutant / metrics.
<mbj>
still better then the conference wifi
knowtheory has quit [Read error: Connection reset by peer]
knowtheo1y has joined #rom-rb
mbj has quit [Read error: Connection reset by peer]
knowtheo1y has quit [Quit: Computer has gone to sleep]