eiSoil The glue for Aggregate Manager developers

researcher’s goal

2

experiment execution

CH

Clearinghouse

AM

Aggregate Manager 3

test bed • Clearinghouse manages certificates and credentials • The client (here: omni) assembles the request and sends it to the Aggregate Manager • Aggregate Manager manages, allocates and provisions resources

4

eiSoil?

Someone needs to implement this!

5

eiSoil? eiSoil is a light-weight framework for creating Aggregate Managers in test beds.

eiSoil is a pluggable system and provides the necessary glue between RPC-Handlers and Resource Managers . Also it provides helpers for common tasks in AM development.

6

motivation AM development without eiSoil

Utilities

Resource Mgmt

RPC API XML RPC

This is why you write an AM. The rest is just annoying. 7

motivation AM development with eiSoil Extend eiSoil Learn eiSoil

Resource Mgmt

8

how to write an AM • Setup a little test bed • Install a Clearinghouse • Install a client • Install eiSoil

• Understand eiSoil • Start hacking...

9

need to know • how a GENI testbed works

• how plugins work • what plugins you need to develop • what else eiSoil supports

10

what now?

finish this presentation,

clone the repository ⎋ https://github.com/EICT/eiSoil then read ⎋ https://github.com/EICT/eiSoil/wiki

11

GENI?

eiSoil managers are used in a GENI-like test bed. Let’s understand how GENI works.

12

names in GENI • Experimenter A human user who uses a client to manage resources via an AM. • Sliver A physical or virtual resource. It is the smallest entity which can be addressed by an AM (e.g. an IP address, a virtual machine, a FlowSpace).

• Slice A collection of slivers. ⎋ GENI 13

communication • The Clearinghouse provides services to know who you are and what you may do. (we don’t care, just use it)

• The client speaks the GENI AM API to the AM. (we care, because we implement it)

⎋ GENI 14

what can the API do? G e tVersion

Get info about the AM’s

L i stResources

Info what the AM has to offer

D e scribe

Info for a sliver

A l locate

Reserve a slice/sliver for a short time

R e new

Extend the usage of a slice/sliver

P r ovision

Provision a reservation for a longer time

S t atus

Get the status of a sliver

PerformOperationalAction

Change the operational state of a sliver

D e lete

Remove a slice/sliver

S h utdown

Emergency stop a slice ⎋ GENI 15

allocate and provision?

allocated provisioned

only for a short time resources are only booked not provisioned the slice/sliver actually takes up resources (is actually usable)

⎋ GENI 16

typical experiment Imagine a restaurant reservation. • ListResources Call the restaurant to ask what tables are available. • Allocate Call to tell which table you want (they will only hold the table for 2 hours). • Provision Come and use at the table (this may take 5 hours).

⎋ GENI 17

how do say what I want? The resources are described with an XML document called RSpec. There are three RSpec types: • Advertisement (short: ads) Announces which resources/slivers are available. • Request Specifies the wishes of the experimenter

• Manifest Shows the status of a sliver

⎋ GENI 18

AM… what now?

Let’s look on eiSoil and see what it can do.

19

a broad look EiSoil’s directory structure |- |- | |- | | |- |- | | | | | | `- -

admin deploy ` -- trusted doc | -- img ` -- wiki log src | -- eisoil | ` -- core | - - vendor | ` -- ... `-- plugins ` -- ... test

Documentation

eiSoil's log

eiSoil's core implementation Repository for (core) plugins maintained by eiSoil Plugins to be loaded when bootstrapping eiSoil

development 20

|-| | | | | | `--

where to put plugins? src | -| |-| `-test

eisoil ` -- core vendor ` -- ... plugins `-- ...

contains plugins maintained by eiSoil

create your plugin code here

create symlinks to vendor plugins

plugins 21

why plugins? • Selection An administrator can add/remove plugins/functionality. • Exchangeability The interface remains, but the implementation be changed. • Clarity Provide a set of services and hide the details behind.

• Encapsulation Protect implementations from other developers.

⎋ plugin 22

register and use plugins

[plugin A] import eisoil.core.pluginmanager as pm [plugin A] pm.registerService('myservice', serviceObject) [plugin B] service = pm.getService( 'worker') [plugin B] service.do_something( 123)

⎋ plugin 23

what can be a service? short version everything which can be referenced in Python yes even packages!

long version

i n t s , strings, lists, dicts , objects, classes, packages

⎋ plugin 24

under the hood describes services & dependencies

performs initialization & registration

⎋ plugin 25

implement a plugin • create a new folder in plugins • create the manifest.json • create the plugin.py • write a setup() method

• register your services

⎋ plugin 26

implement a plugin manifest.json {

"name"

: "My Plugin Name",

"author"

: "Tom Rothe",

"author-email" : "[email protected]", "version"

: 1,

"implements" : ["myservice", "myclass", "mypackage"],

"loads-after" : ["somedependency"], "requires"

: []

# you’ll register these services

# dependency needs to be loaded before the setup method

# dependency can be loaded after the setup method

}

plugin.py # ...imports... def setup():

# register a service pm.registerService('myclass', ServiceClass) pm.registerService('myinstance', SingleClass() ) pm.registerService('mypackage', my.python.package)

⎋ plugin 27

@serviceinterface The methods and attributes which can should be used are marked the annotation @serviceinterface.

implementation from eisoil.core import serviceinterface

class MyService(object): @serviceinterface def do_something(self, param):

# can be used by the service user

pass def do_more(self, param):

# not part of the service contract, NOT to be used

pass

⎋ plugin 28

DOs and DONTs • If you have plugin-specific exceptions, create a package with all exceptions and register the package as a service.

• Separate a plugin into multiple plugins if this improves re-usability.

• Never import another plugin directly, always go via the pluginmanager via pm.getService().

⎋ plugin 29

incoming missile

Let’s find out how to react to RPC requests.

30

getting the requests • RPC Handler Retrieves the XML-RPC request, does some magic and passes the request on to the delegate. • Delegate Translates the GENI request into a language the Resource Manager can understand • Resource Manager (short: RM) Handles the actual allocation of the resources.

⎋ GENI 31

why RM and Delegate? We need to decouple the RPC API from the resource management logic. This enables eiSoil-based AMs to implement multiple APIs (e.g. GENI, SFA, OFELIA APIs) without having to re-write everything.

⎋ GENI 32

interfaces • Delegate Should derive from DelegateBase and overwrite the methods prescribed (e.g. list_resources, allocate, ...). • Resource Manager You make up the interface! The methods, attributes, parameters are domain-specific and depend on the resource type being handled.

⎋ GENI 33

a new plugin is born Create new plugins which handle the incoming requests from the client and do the actual resource management.

YourDelegate

YourResourceManager

✓New folder for plugin

✓New folder for plugin

✓manifest.json

✓manifest.json

✓plugin.py

✓plugin.py

✓a delegate object

✓a manager service

34

YourDelegate yourdelegate/plugin.py # ...imports...

GENIv3DelegateBase = pm.getService('geniv3delegatebase') geni_ex = pm.getService('geniv3exceptions') class MyDelegate(GENIv3DelegateBase): # derive from DelegateBase

# ... def allocate(self, slice_urn, client_cert, credentials, rspec, end_time=None): # Overwrite DelegateBase method # perform authentication and check the privileges client_urn, client_uuid, client_email = self.auth(client_cert, credentials, slice_urn, ('createsliver',))

rspec = self.lxml_parse_rspec(rspec) # call a helper method to parse the RSpec (incl. validation)

# ...interpret the RSpec XML... try:

# call a resource manager and make the allocation happen self._resource_manager.reserve_lease(id_from_rspec, slice_urn, client_uuid, client_email, end_time) except myresource.MyResourceNotFound as e: # translate the resource manager exceptions to GENI exceptions raise geni_ex.GENIv3SearchFailedError("The desired my_resource(s) could no be found.")

return self.lxml_to_string("omitted"), {'status' : '...omitted...'} # return the required results def setup(): delegate = MyGENI3Delegate() handler = pm.getService('geniv3handler') handler.setDelegate(delegate)

⎋ GENI 35

needed knowledge

36

Delegate tasks • Translate GENI API into Resource Manager(s) methods • Translate the RSpecs into Resource Manager values (and back). • Catch Resource Manager errors and re-throw as GENIv3.... • Translate the namespace from GENI to RM (e.g. URN ⬌ UUIDs). • Specify the needed privileges for authorization. • De-multiplex to dispatch to different Resource Managers (if you have multiple resource types in one AM). yes there can only be one Delegate per AM. ⎋ GENI 37

RM tasks • Instantiate resources

• Manage persistence of reservations and resource state • Check policies • Avoid collisions of resources reservations / Manage availability • Throw domain-specific errors

⎋ GENI 38

more info • Please see the ⎋ wiki for • Authentication / Authorization tools • RSpec generation assistance • More detailed description

• Checkout the code and look at the DHCP AM example • plugin: d h c p r m • plugin: d h c p g e n i 3 • API description of g e n i v 3 r p c

39

a table for two please

See what kind of bookings for resources are there and what is supported by eiSoil…

40

ways to schedule There are two common types of scheduling

best-effort

pre-booking

experimenter process

try and fail

convenient planning

scheduling constraints

current status only

current and future

data to maintain

past, current

past, current, future

resource usage pattern

typically sharing

typically exclusive use ⎋ schedule 41

types of resources There are two different cardinalities for resource types.

available resources

bounded

unbounded

limited

unlimited

always available

availability check

boolean check

(possibly limited by the total load of booked resources)

resources identifiers

well known,
limited number

non-clashing,
possibly infinite ⎋ schedule 42

schedule API We see different schedules, simple creation, bounded and unbounded.

i m p o r t uuid i m p o r t eisoil.core.pl u g i n m an a ge r a s pm S c h e d u le = p m . getServ i c e ( ' sc h ed u l e ' ) i p _ s c h edule = Schedul e ( " I P Le a se " , 1 0 0) # create a schedule for IPs v m _ s c h edule = Schedul e ( " V M ", 10 0 ) # create a distinct schedule object for VMs

# create bounded reservations with dedicated resource ids i p 1 = ip_schedule . res e r v e ( re s ou r c e _ i d = ' 19 2.168.1.1' ) # with mostly default values i p 2 = ip_schedule . res e r v e ( re s ou r c e _ i d = ‘19 2.168.1.2' )

# create a unbounded reservation v m 1 = vm_schedule . res e r v e ( re s ou r c e _ i d = s tr ( u u i d .uuid4())) p r i n t len (ip_schedule . f i n d () ) # -> 2 (192.168.1.1, 192.168.1.2) p r i n t len (vm_schedule . f i n d () ) # -> 1 (ec1f33f0 -8443-11e3-baa7 -0800200c9a66)

⎋ schedule 43

schedule API We see complex reservation pre-booking and best-effort.

# complex creation for best effort (starts now) ip1 = ip_schedule.reserve( resource_id='192.168.1.2', resource_spec={"additional_information" : [1,2,3] }, slice_id='pizza', user_id='tom', start_time=datetime.utcnow(), end_time=datetime.utcnow() + timedelta( 0,0,10,0))

# creation pre-booking with a default duration (from schedule constructor) ip2 = ip_schedule.reserve( resource_id=‘192.168.1.3' , start_time=datetime.utcnow() + timedelta( 10,0,0,0)) # start in 10 days

⎋ schedule 44

schedule API What a pickle! Where can I put my resource specific information? there!

# complex creation for best effort (starts now) ip1 = ip_schedule.reserve( resource_id='192.168.1.2', resource_spec={ "additional_information" : [1,2,3] }, slice_id='pizza', user_id='tom', start_time=datetime.utcnow(), end_time=datetime.utcnow() + timedelta( 0,0,10,0))

You can add custom info to each reservation (any pickle-able object). If you can connect all info with reservations, no extra database needed. ⎋ schedule 45

hands on tips

Let’s see how we can make our life even easier.

46

testing ✓Fire up the Clearinghouse ✓Start the eiSoil server ✓Run omni to send a request ✓Check eiSoil’s logs

gcf#

python src/gcf-ch.py

eisoil# python src/main.py eisoil# tail -f log/eisoil.log gcf#

python src/omni.py -o -a https://localhost:8001 -V 3 getversion

⎋ development / omni examples 47

development mode • Use the configuration tool to set flask.debug

= True

• Now the server reloads it’s files every time you change a file. ! Careful: The client’s certificate is now read from a pre-configured file.

• For debugging • Throw exceptions or • Write to the log to see what’s going on.

⎋ development ⎋ GENI

⎋ configuration 48

logging anywhere.py import eisoil.core.log logger=eisoil .core.log .getLogger ('pluginname ')

# logger is a decorated instance of Python's logging.Logger , so we only get one instance per name. def somemethod (): logger .info("doing really cool stuff..." )

logger .warn ("Oh Oh..." ) logger .error("Ba-Boooom!!!" )

⎋ logging 49

configuration anywhere.py i m po rt ei so i l. co r e. pl u gi nm a na ge r a s p m

# get the service

c o nf ig = pm . ge tS e rv ic e (" co n fi g" )

m y va lu e = c o nf ig . ge t( " my gr o up .m y ke y " ) # retrieve a value

# set a value

c o nf ig . se t( " my gr o up .m y ke y " , m yv a lu e)

plugin.py i m po rt ei so i l. co r e. pl u gi nm a na ge r a s p m d e f se t up () :

config = pm.getService ("config ")

# get the service

co nf i g. in s ta ll ( "m yg r ou p. m yk ey " , "s o me de f au lt " , "S o me s u pe r d es cr i pt io n ." ) # install a config item

!

Always i n s t a l l the config keys and defaults on the plugin's setup method (ins t a l l will not re-create/overwrite existing entries). ⎋ configuration 50

worker The worker enables dispatching jobs to an external process (e.g. to perform longer tasks without blocking the client’s request response).

anywhere.py w o rk er = pm . ge tS e rv ic e (' wo r ke r' ) # get the service

w ork er . ad d( " myservice " , "my me th o d" , " pa ra m et er 1 " ) # run as soon as possible w o rk er . ad dA s Re cc u rr in g (" my s er vi c e" , " my me t ho d " , [ 1, 2 ,3 ], 60 ) # run every minute w o rk er . ad dA s Sc he d ul ed ( "m ys e rv ic e ", " m ym et h od ", No ne , d at e ti me . no w( ) + t i me de l ta (0 , 6 0* 6 0* 2) ) # run in 2 hours

fire up the server (needs reboot when changing code) e i so il # p yt h on s r c/ ma i n. py -- wo r ke r

⎋ worker 51

mailer The mailer enables sending of plain-text mails.

anywhere.py M a il er C la ss = pm . ge tS e rv ic e (' ma i le r' )

m ail er = MailerClass ( 'root@ ex am p le .o r g' , ' ma il . ex am p le .o r g' ) m a il er . se nd M ai l ( " to @e x am pl e .o rg " , "S o me S u bj ec t " , " S om e B od y. " )

! Delivering mail takes time. ! Do not block the client’s request handling too long.

✓If you want to send multiple mails, dispatch the delivery of mails to the worker. ⎋ mailer 52

persistence

SQLAlchemy tutorial

7900 words

vs.

Need to know

926 words

⎋ persistence 53

you know it all

clone the repository ⎋ https://github.com/EICT/eiSoil then read ⎋ https://github.com/EICT/eiSoil/wiki

54

Resource Manager - GitHub

There are three RSpec types: • Advertisement (short: ads). Announces which resources/slivers are available. • Request. Specifies the wishes of the experimenter.

1MB Sizes 3 Downloads 310 Views

Recommend Documents

trouble ticket manager - GitHub
Department of Computer Science and Information Technology ... Different software tools have been developed and are in use in order to handle and ..... Since this application filters trouble tickets and automate based on the contents .... or e-busines

i3 Window Manager (i3wm) - GitHub
Mar 2, 2017 - Most modern OSes have workspaces as well. Workspaces refer to ... the side, hope that your desktop environment supports window snapping ...

Adaptive Scheduling Parameters Manager for ... - GitHub
Jun 27, 2014 - Solution: a set of tools that manage SCHED DEADLINE parameters adaptively ..... Adaptive Quality of Service Architecture. Wiley. InterScience ...

Open Resilient Cluster Manager (ORCM) - GitHub
Hierarchical Arch. 5. SMC. Row. Row. Rack. CN CN. CN CN. Rack. CN CN. CN CN ... Each daemon computes map, stores all data (map, endpoints, network.

USAD Art Resource Guide Notes - GitHub
Section 1 Art Fundamentals. - Introduction to Art. • Difference in the definition of 'art'. • The two methods to analyze art works : formal analysis/ contextual analysis.

Hamiltonian gadgets with reduced resource ... - APS Link Manager
Jan 12, 2015 - PHYSICAL REVIEW A 91, 012315 (2015). Hamiltonian gadgets with reduced ... Application of the adiabatic model of quantum computation requires efficient encoding of the solution to computational problems into the ... in principle equival

man-81\resource-manager-houghton-mifflin-grade-7.pdf ...
man-81\resource-manager-houghton-mifflin-grade-7.pdf. man-81\resource-manager-houghton-mifflin-grade-7.pdf. Open. Extract. Open with. Sign In.

GitHub
domain = meq.domain(10,20,0,10); cells = meq.cells(domain,num_freq=200, num_time=100); ...... This is now contaminator-free. – Observe the ghosts. Optional ...

GitHub
data can only be “corrected” for a single point on the sky. ... sufficient to predict it at the phase center (shifting ... errors (well this is actually good news, isn't it?)

IBBI Recruitment 2018 for Chief General Manager-General Manager ...
Page 1 of 7. Insolvency and Bankruptcy Board of India. 7th Floor, Mayur Bhawan, Connaught Place, New Delhi-110001. No. IBBI/HR/159 Dated: April 12, 2018. NOTICE. Sub: Appointment of Chief General Manager (CGM) and General Manager (GM) on. deputation.

Dy. General Manager or Chief Manager (Company Secretary) for ...
General Manager or Chief Manager (Company Secretary) for RCF Ltd..pdf. Dy. General Manager or Chief Manager (Company Secretary) for RCF Ltd..pdf. Open.

Fuel Your Career Growth With Indizel Sr. Manager or Manager ...
Fuel Your Career Growth With Indizel Sr. Manager or Manager - Projects.pdf. Fuel Your Career Growth With Indizel Sr. Manager or Manager - Projects.pdf. Open.

HMT Machine Tools Recruitment 2018 for Manager-Deputy Manager ...
Open. Extract. Open with. Sign In. Details. Comments. General Info. Type. Dimensions. Size. Duration. Location. Modified. Created. Opened by me. Sharing. Description. Download Permission. Main menu. Displaying HMT Machine Tools Recruitment 2018 for M

Notification-EXIM-Bank-Deputy-Manager-Manager-Other-Posts.pdf ...
The candidates should possess excellent communication skills and should be proficient in the use of computers. and information technology. AGE PROFILE.

Updates to Google Tag Manager Use Policy Google Tag Manager ...
Aug 1, 2016 - ... Terms of Service located at: https://www.google.com/analytics/tos.html, ... 2. to disable, interfere with or circumvent any aspect of the Service;.

Notification-Vijaya-Bank-Probationary-Sr-Manager-Chief-Manager ...
Connect more apps... Try one of the apps below to open or edit this item. Notification-Vijaya-Bank-Probationary-Sr-Manager-Chief-Manager-Posts-Hindi.pdf.

project manager - CDEMA
Nov 9, 2015 - Application of Comprehensive Disaster Management. Caribbean ... Centre, Institute for Sustainable Development, the University of the West ...

manager position.pdf
Loading… Page 1. Whoops! There was a problem loading more pages. Retrying... manager position.pdf. manager position.pdf. Open. Extract. Open with. Sign In.

Activity Manager - IITA
Activity Manager - Feed the Future Malawi INVC Bridging Activity ... IITA is one of the world's leading research partners in finding solutions for ... Organize regular planning and review meetings with all partners and also ... Relevant experience in

research manager -
We believe the people factor defines the culture and success of the company. In Vietnam, Epinion has one of the best working environments where we create ...