SLA plugin code updated & SLA app folder cleaned
authorJavier García <javier.garcial.external@atos.net>
Tue, 21 Apr 2015 15:39:07 +0000 (17:39 +0200)
committerJavier García <javier.garcial.external@atos.net>
Tue, 21 Apr 2015 15:39:07 +0000 (17:39 +0200)
47 files changed:
manifoldapi/static/js/manifold.js
myslice/settings.py
myslice/urls.py
plugins/columns_editor/__init__.py
plugins/scheduler2/templates/scheduler.html
plugins/sladialog/static/css/sladialog.css
plugins/sladialog/static/js/sladialog.js
plugins/sladialog/templates/sladialog.html
portal/sliceresourceview.py
portal/templates/fed4fire/fed4fire_slice-resource-view.html
portal/templates/fed4fire/fed4fire_slice-view.html
portal/templates/fed4fire/fed4fire_widget-slice-sections.html
sla/README [deleted file]
sla/samples/TemplateIMindsService.xml [deleted file]
sla/samples/providerCreate.bat [deleted file]
sla/samples/providerIMinds.xml [deleted file]
sla/samples/simpleAgreementCreation.bat [deleted file]
sla/samples/simpleAgreementCreationParameters.json [deleted file]
sla/samples/templateCreate.bat [deleted file]
sla/sla_utils/bin/load-samples.sh [deleted file]
sla/sla_utils/bin/startagreement.sh [deleted file]
sla/sla_utils/bin/stopagreement.sh [deleted file]
sla/sla_utils/samples/agreement03.xml [deleted file]
sla/sla_utils/samples/agreement04.xml [deleted file]
sla/sla_utils/samples/enforcement03.xml [deleted file]
sla/sla_utils/samples/enforcement04.xml [deleted file]
sla/sla_utils/samples/old/agreement01.xml [deleted file]
sla/sla_utils/samples/old/agreement02.xml [deleted file]
sla/sla_utils/samples/old/agreement03_old.xml [deleted file]
sla/sla_utils/samples/old/agreement04_old.xml [deleted file]
sla/sla_utils/samples/old/agreement05.xml [deleted file]
sla/sla_utils/samples/old/agreement05_old.xml [deleted file]
sla/sla_utils/samples/old/enforcement.xml [deleted file]
sla/sla_utils/samples/old/enforcement02.xml [deleted file]
sla/sla_utils/samples/old/enforcement05.xml [deleted file]
sla/sla_utils/samples/old/template01.xml [deleted file]
sla/sla_utils/samples/provider-virtualwall.xml [deleted file]
sla/sla_utils/samples/provider-wilab2.xml [deleted file]
sla/sla_utils/samples/template.xml [deleted file]
sla/slaclient/restclient.py
sla/slaclient/wsag_model.py
sla/slaclient/xmlconverter.py
sla/slicetabsla.py
sla/templates/slice-tab-sla.html
sla/templates/violations_template.sublime-workspace [deleted file]
sla/urls.py
sla/wsag_helper.py

index d7e5688..4ca5e00 100644 (file)
@@ -177,6 +177,10 @@ var CONSTRAINT_RESERVABLE_LEASE     = 0;
 
 var CONSTRAINT_RESERVABLE_LEASE_MSG = "Configuration required: this resource needs to be scheduled";
 
+var CONSTRAINT_SLA                  = 1;
+
+var CONSTRAINT_SLA_MSG              = "SLA acceptance required: testbed offers SLA for its resources"
+
 // A structure for storing queries
 
 function QueryExt(query, parent_query_ext, main_query_ext, update_query_ext, disabled, domain_query_ext) {
@@ -1684,6 +1688,15 @@ case TYPE_LIST_OF_VALUES:
     {
         var query, data;
 
+        // JGLL: TODO These lines should be moved to a different part of the code
+        // to avoid a call every time a resource is selected or deselected -> where?
+        function get_testbeds_with_sla() {
+            return $.ajax({
+                url: '/sla/testbeds/',
+                async: true
+            });
+        }
+
         query = query_ext.query;
 
         switch(query.object) {
@@ -1729,8 +1742,44 @@ case TYPE_LIST_OF_VALUES:
                     }
                 }
 
+                // JGLL: SLA code
+                /*get_testbeds_with_sla()
+                    .done( function(testbeds) {
+                        var urn_regexp = /\+(.*?)\+/;
+                        var testbed_urn = urn_regexp.exec(record.urn)[1];
+
+                        var warnings = manifold.query_store.get_record_state(query.query_uuid, record_key, STATE_WARNINGS);
+
+                        if ($.inArray(testbed_urn, testbeds) != -1) {
+                            // JGLL: Set a warning on resources covered by testbeds offering SLAs
+                            // CONSTRAINT_SLA
+
+                            if (event_type == STATE_SET_ADD) {
+                                var warn = CONSTRAINT_SLA_MSG;
+                                warnings[CONSTRAINT_SLA] = warn;
+                            } else {
+                                delete warnings[CONSTRAINT_SLA]
+                            }
+                        }
+
+                        manifold.query_store.set_record_state(query.query_uuid, record_key, STATE_WARNINGS, warnings);
+
+                        // Signal the change to plugins (even if the constraint does not apply, so that the plugin can display a checkmark)
+                        data = {
+                            state:  STATE_WARNINGS,
+                            key   : record_key,
+                            op    : null,
+                            value : warnings
+                        }
+
+                        manifold.raise_record_event(query.query_uuid, FIELD_STATE_CHANGED, data);
+                    })
+                    .fail( function(err) {
+                       console.log("SLA - Error retrieving testbeds that support SLAs");
+                    });*/
+
                 /* This was redundant */
-                // manifold.query_store.recount(query.query_uuid); 
+                // manifold.query_store.recount(query.query_uuid);
 
                 break;
 
index f4d0835..bcd8df5 100644 (file)
@@ -256,6 +256,8 @@ INSTALLED_APPS = [
     # Uncomment the next line to enable admin documentation:
     # 'django.contrib.admindocs',
     'portal',
+    #SLA
+    #'sla',
 ]
 # with django-1.7 we leave south and use native migrations
 # managing database migrations
@@ -357,7 +359,6 @@ CSRF_FAILURE_VIEW = 'manifoldapi.manifoldproxy.csrf_failure'
 
 ####SLA#####
 
-SLA_MANAGER_URL = "http://157.193.215.125:4001/sla-collector/sla"
-#SLA_MANAGER_URL = "http://172.24.76.28:8000/sla"
-SLA_MANAGER_USER = "portal"
-SLA_MANAGER_PASSWORD = "password"
+SLA_COLLECTOR_URL = "http://157.193.215.125:4001/sla-collector/sla"
+SLA_COLLECTOR_USER = "portal"
+SLA_COLLECTOR_PASSWORD = "password"
index 631c15e..e2b85cc 100644 (file)
@@ -126,7 +126,7 @@ urls = [
     url(r'^portal/', include('portal.urls')),
 
     # SLA
-#    url(r'^sla/', include('sla.urls')),
+    #url(r'^sla/', include('sla.urls')),
 ]
 
 urls.extend( components.urls() )
index a58d412..b651da3 100644 (file)
@@ -41,6 +41,18 @@ class ColumnsEditor(Plugin):
         metadata = self.page.get_metadata()
         md_fields = metadata.details_by_object('resource')
 
+        sla_column_info = {
+            'name': 'sla_supported',
+            'default': '',
+            'is_array': False,
+            'description': '',
+            'type': 'bool',
+            'qualifier': None
+        }
+
+        if sla_column_info not in md_fields['column']:
+            md_fields['column'].append(sla_column_info)
+
         # XXX use django templating system here
         for md_field in sorted(md_fields['column']):
             if md_field['type'] == 'string':
index 259723b..89f3419 100755 (executable)
             //alert("1");\r
         </script>\r
     </div>\r
+</div>
\ No newline at end of file
index e69de29..ae14740 100644 (file)
@@ -0,0 +1,12 @@
+#sla_dialog {
+  //margin-top: 2em;
+  margin-left: 1em;
+}
+
+#sla_offers div.row p {
+  line-height: 40px;
+}
+
+span.provider {
+  font-weight: bold;
+}
\ No newline at end of file
index 1098e2e..c118743 100644 (file)
@@ -15,6 +15,8 @@
 
     var SlaDialog = Plugin.extend({
 
+        accepted_slas: {},
+
         /** XXX to check
          * @brief Plugin constructor
          * @param options : an associative array of setting values
@@ -41,6 +43,7 @@
             
             /* GUI setup and event binding */
             // call function
+            this.button_binding();
 
         },
 
             return cols[0];
         },
 
+        check_template_status: function() {
+            for (var testbed in this.accepted_slas) {
+                if (!this.accepted_slas[testbed]) { return false; }
+            }
+
+            return true;
+        },
+
         /* PLUGIN EVENTS */
         // on_show like in querytable
 
 
         /* GUI EVENTS */
 
+        button_binding: function() {
+            var self = this;
+            $(".sla-accept-button").click(function() {
+                // set SLA as accepted and remove warnings
+                var id = $(this).closest(".row").attr("id");
+                self.accepted_slas[id] = true;
+                var is_ok = self.check_template_status();
+
+                if (is_ok) {
+                    // remove warnings
+                    // var warnings = manifold.query_store.get_record_state(resource_query.query_uuid, resource_key, STATE_WARNINGS);
+                }
+            });
+        },
+
+        create_sla: function(record) {
+            var self = this;
+
+            var urns = [];
+
+            record.resource.forEach(function(r) {
+                if ($.inArray(r.component_id, record.resource) == -1) { // if not already selected
+                    urns.push(r.component_id);
+                }
+            });
+
+            if (record.resource.length != 0 && typeof record.resource[0] !== "undefined") {
+                var data = {
+                    "SLIVER_INFO_AGGREGATE_URN": record.resource[0].component_manager_id,
+                    "SLIVER_INFO_EXPIRATION": record.lease[0].end_time,     // FIXME: only working with leases
+                    "SLIVER_INFO_SLICE_URN": record.slice_urn,
+                    "SLIVER_INFO_CREATOR_URN": record.users[0],
+                    "SLIVER_INFO_URN": urns,
+                    "SLIVER_INFO_SLA_ID": self._getUUID()
+                };
+
+                console.log(data);
+
+                $.post("/sla/agreements/create/", data)
+                    .done(function (response) {
+                        console.log("SLA created");
+                    });
+            }
+        },
+
         uncheck: function(urn)
         {
-            $('#slamodal').on('hidden.bs.modal', function(e){
-                $('#' + (urn).replace(/"/g,'')).click();
-                console.log('#' + (data.value).replace(/"/g,''));
-            });
+//            $('#slamodal').on('hidden.bs.modal', function(e){
+//                $('#' + (urn).replace(/"/g,'')).click();
+//                console.log('#' + (data.value).replace(/"/g,''));
+//            });
         },
 
         // a function to bind events here: click change
 
         },
 
-        on_field_state_changed: function(result)
+        on_field_state_changed: function(data)
         {
-            console.log("triggered state_changed: "+result);
+            var self = this;
             // this.set_state(result, this.options.username);
+
+             switch(data.state) {
+                case STATE_SET:
+                    switch(data.op) {
+                        case STATE_SET_IN_PENDING:
+                            if (typeof(data.value) == 'string') {
+                                // data.value = urn
+                                this._supports_sla(data.value)
+                                    .done( function(testbeds) {
+                                        var urn_regexp = /\+(.*?)\+/;
+                                        var urn = urn_regexp.exec(data.value)[1];
+                                        var pos = $.inArray(urn, testbeds);
+                                        if ( pos != -1) {
+                                            var id_ref = testbeds[pos].replace(/\.|:/g, "-");
+                                            $("#" + id_ref).data("urns").push(data.value);
+                                            $("#" + id_ref).show();
+                                            self.accepted_slas[id_ref] = false;
+                                            //$( "#sla_offers_list" ).append(
+                                            //    $("<li>").text("Testbed " + testbeds[pos] + " offers SLA for its resources")
+                                            //);
+                                        }
+                                    });
+                            }
+                            break;
+                        case STATE_SET_OUT:
+                            // data.value = urn
+                            if (typeof(data.value) == 'string') {
+                                // data.value = urn
+                                this._supports_sla(data.value)
+                                    .done( function(testbeds) {
+                                        var urn_regexp = /\+(.*?)\+/;
+                                        var urn = urn_regexp.exec(data.value)[1];
+                                        var pos = $.inArray(urn, testbeds);
+                                        if ( pos != -1) {
+                                            var id_ref = testbeds[pos].replace(/\.|:/g, "-");
+                                            var array = $("#" + id_ref).data("urns");
+                                            array.splice(array.indexOf(data.value), 1);
+
+                                            if ($("#" + id_ref).data("urns").length == 0) {
+                                                $("#" + id_ref).hide();
+                                                delete self.accepted_slas[id_ref];
+                                            }
+                                            //$( "#sla_offers_list" ).append(
+                                            //    $("<li>").text("Testbed " + testbeds[pos] + " offers SLA for its resources")
+                                            //);
+                                        }
+                                    });
+                            }
+                            break;
+                    }
+                    break;
+
+                case STATE_WARNINGS:
+                    // Add resource to SLA
+                    // data.key = urn
+                    // data.value = {1: "SLA acceptance required..."}
+                    // this.change_status(data.key, data.value);
+                    break;
+             }
         }, 
 
         // ... be sure to list all events here
 
         on_new_record: function(record)
         {
-
+            this.create_sla(record);
         },
 
         /* INTERNAL FUNCTIONS */
             // only convention, not strictly enforced at the moment
         },
 
+        _supports_sla: function(resource_urn) {
+            return $.ajax("/sla/testbeds/");
+        },
+
+
+
+        _getUUID: function() {
+            return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function(c) {
+                var r = Math.random()*16|0, v = c === 'x' ? r : (r&0x3|0x8);
+                return v.toString(16);
+            });
+        },
+
     });
 
     /* Plugin registration */
index cb50c29..e569a42 100644 (file)
@@ -1,47 +1,72 @@
 <div id={{ domid }}>
-<div class="modal fade" id="slamodal" tabindex="-1" role="dialog" aria-labelledby="myModalLabel" aria-hidden="true"
-               data-backdrop="static" data-keyboard="false">
-  <div class="modal-dialog">
-    <div class="modal-content">
-      <div class="modal-header">
-        <h4 class="modal-title" id="myModalLabel">Selected testbed(s) provide the following SLAs</h4>
-      </div>
-      <div class="modal-body"  id="modal-body">
-        <table class="table" id="sla-modal-table">
-          <thead>
-          <tr>
-            <th>Testbed</th>
-            <th>SLA Description</th>
-            <th>Accept</th>
-          </tr>
-          </thead>
-          <tbody id="sla-table-body">
-          </tbody>
-        </table>
-      </div>
-      <div class="modal-footer">
-        <button type="button" id="cancel_sla" class="btn btn-default" data-dismiss="modal">Cancel</button>
-        <button type="button" id="submit_sla" class="btn btn-primary">Submit</button>
-      </div>
+    <div id="sla_offers" class="container">
+        <div id="fuseco-fokus-fraunhofer-de" class="row" data-urns="[]" style="display: none">
+            <div class="col-md-6">
+                <p>Testbed <span class="provider">fuseco.fokus.fraunhofer.de</span> offers the following SLA for its resources</p>
+            </div>
+            <div class="col-md-1">
+                <button class="sla-info-button btn btn-default">
+                    <span class="glyphicon glyphicon-info-sign"></span>
+                    Details
+                </button>
+            </div>
+            <div class="col-md-1">
+                <button class="sla-accept-button btn btn-default">
+                    <span class="glyphicon glyphicon-ok"></span>
+                    Accept
+                </button>
+            </div>
+        </div>
+        <div id="omf-netmode" class="row" data-urns="[]" style="display: none">
+            <div class="col-md-6">
+                <p>Testbed <span class="provider">omf:netmode</span> offers the following SLA for its resources</p>
+            </div>
+            <div class="col-md-1">
+                <button class="sla-info-button btn btn-default">
+                    <span class="glyphicon glyphicon-info-sign"></span>
+                    Details
+                </button>
+            </div>
+            <div class="col-md-1">
+                <button class="sla-accept-button btn btn-default">
+                    <span class="glyphicon glyphicon-ok"></span>
+                    Accept
+                </button>
+            </div>
+        </div>
+        <div id="wilab2-ilabt-iminds-be" class="row" data-urns="[]" style="display: none">
+            <div class="col-md-6">
+                <p>Testbed <span class="provider">wilab2.ilabt.iminds.be</span> offers the following SLA for its resources</p>
+            </div>
+            <div class="col-md-1">
+                <button class="sla-info-button btn btn-default">
+                    <span class="glyphicon glyphicon-info-sign"></span>
+                    Details
+                </button>
+            </div>
+            <div class="col-md-1">
+                <button class="sla-accept-button btn btn-default">
+                    <span class="glyphicon glyphicon-ok"></span>
+                    Accept
+                </button>
+            </div>
+        </div>
+        <div id="wall2-ilabt-iminds-be" class="row" data-urns="[]" style="display: none">
+            <div class="col-md-6">
+                <p>Testbed <span class="provider">wall2.ilabt.iminds.be</span> offers the following SLA for its resources</p>
+            </div>
+            <div class="col-md-1">
+                <button class="sla-info-button btn btn-default">
+                    <span class="glyphicon glyphicon-info-sign"></span>
+                    Details
+                </button>
+            </div>
+            <div class="col-md-1">
+                <button class="sla-accept-button btn btn-default">
+                    <span class="glyphicon glyphicon-ok"></span>
+                    Accept
+                </button>
+            </div>
+        </div>
     </div>
-  </div>
-</div>
-<!-- <div class="modal fade" id="slamodal-virtualwall" tabindex="-1" role="dialog" aria-labelledby="myModalLabel" aria-hidden="true"
-    data-backdrop="static" data-keyboard="false">
-  <div class="modal-dialog">
-    <div class="modal-content">
-      <div class="modal-header">
-        <h4 class="modal-title" id="modalTitleId">Provider iMinds offers the following SLA</h4>
-      </div>
-      <div class="modal-body" id="modal-body">
-        <p>SLA description</p>
-        <p>Testbed guarantees 0.99 Uptime rate for 0.99 rate of the VirtualWall resources during the sliver lifetime</p>
-      </div>
-      <div class="modal-footer">
-        <button type="button" id="dismiss_sla_vwall" class="btn btn-default" data-dismiss="modal">Dismiss</button>
-        <button type="button" id="accept_sla_vwall" class="btn btn-primary">Accept</button>
-      </div>
-    </div>
-  </div>
-</div> -->
-</div>
+</div>
\ No newline at end of file
index 2451600..0968b5d 100644 (file)
@@ -398,21 +398,21 @@ class SliceResourceView (LoginRequiredView, ThemeView):
        #         },
        # )
 
-       # # --------------------------------------------------------------------------
-       # # SLA View and accept dialog
-       # 
-       # sla_dialog = SlaDialog(
-           page                = page,
-           title               = 'sla dialog',
-           query               = main_query,
-       #     togglable           = False,
-           # start turned off, it will open up itself when stuff comes in
-       #     toggled             = True,
-           domid               = 'sla_dialog',
-       #     outline_complete    = True,
-           username            = request.user,
-       # )
-       # 
+        # --------------------------------------------------------------------------
+        # SLA View and accept dialog
+
+        sla_dialog = SlaDialog(
+           page                = page,
+           title               = 'sla dialog',
+           query               = main_query,
+           #togglable           = False,
+           # start turned off, it will open up itself when stuff comes in
+           #toggled             = True,
+           domid               = 'sla_dialog',
+           #outline_complete    = True,
+           username            = request.user,
+        )
+
         ## check user is pi or not
         platform_query  = Query().get('local:platform').select('platform_id','platform','gateway_type','disabled')
         account_query  = Query().get('local:account').select('user_id','platform_id','auth_type','config')
@@ -458,7 +458,7 @@ class SliceResourceView (LoginRequiredView, ThemeView):
        # template_env['vm_form'] = univbrisvtamform.render(self.request)
 
 #        template_env['pending_resources'] = pending_resources.render(self.request)
-       # template_env['sla_dialog'] = '' # sla_dialog.render(self.request)
+        template_env['sla_dialog'] = sla_dialog.render(self.request)
         template_env["theme"] = self.theme
         template_env["username"] = request.user
         template_env["pi"] = pi
index 3fefedf..650092f 100644 (file)
@@ -55,6 +55,7 @@ $(document).ready(function() {
                          <li class="active"><a href="#resourcelist" role="tab" data-toggle="tab">Table</a></li>
                          <li> <a href="#resourcemap" role="tab" data-toggle="tab">Map</a></li>
                          <li> <a href="#resourcescheduler" role="tab" data-toggle="tab">Scheduler</a></li>
+              <li> <a href="#resourcesla" role="tab" data-toggle="tab">SLA offers</a></li>
                        </ul>
                        </div>
                </div>
@@ -90,6 +91,9 @@ $(document).ready(function() {
                                <div class="tab-pane" id="resourcemap">
                        {{map_resources}}
                                </div>
+                <div class="tab-pane" id="resourcesla">
+                       {{sla_dialog}}
+                               </div>
                                <div class="tab-pane" id="resourcescheduler">
                        {{scheduler}}
                                </div>
index c2d52c3..05a43a6 100644 (file)
@@ -14,5 +14,6 @@
   <!-- <div class="tab-pane row" id="statistics">...</div> -->
   <!-- <div class="tab-pane row" id="measurements">...</div> -->
   <div class="tab-pane row" id="experiment">...</div>
+  <div class="tab-pane row" id="sla">...</div>
 </div>         
 {% endblock %}
index 40761b5..d4fa7cd 100644 (file)
@@ -20,6 +20,7 @@
        <!-- <li><a href="/slice/{{ slice }}#experiment">Statistics</a></li> -->
        <!-- <li><a href="/slice/{{ slice }}#experiment">Measurements</a></li> -->
        <li><a href="/slice/{{ slice }}#experiment">Tools</a></li>
+    <li><a href="/slice/{{ slice }}#sla">SLA status</a></li>
 </ul>
 {% else %}
 <ul class="nav nav-tabs nav-section">
@@ -30,6 +31,7 @@
        <!-- <li class="statistics"><a href="#experiment">Statistics</a></li> -->
        <!-- <li class="measurements"><a href="#experiment">Measurements</a></li> -->
        <li class="experiment"><a href="#experiment">Tools</a></li>
+    <li class="sla"><a href="#sla">SLA status</a></li>
 </ul>
 
 <script>
@@ -38,7 +40,7 @@ $(document).ready(function() {
                if ($(this).hasClass('link')) return;
                e.preventDefault();
                $(this).tab('show');
-       var id = $(this).attr('href').substr(1);        
+       var id = $(this).attr('href').substr(1);
        $("#" + id).load('/' + id + '/{{ slice }}/');
        });
        
diff --git a/sla/README b/sla/README
deleted file mode 100755 (executable)
index 3ecd9d9..0000000
+++ /dev/null
@@ -1,91 +0,0 @@
-This is the README.txt file for sla-dashboard application.\r
-\r
-sla-dashboard application is composed by the following directories:\r
-* sladashboard: the app related to the application itself. The settings\r
-    file maybe need to be modified: read below.\r
-* slagui: the sla dashboard GUI project.\r
-* slaclient: this project contains all the code needed to connect to\r
-    SLA Manager REST interface, and the conversion from xml/json to python\r
-    objects.\r
-* samples: this directory contains sample files to load in the SLA Manager for\r
-    testing.\r
-* bin: some useful scripts\r
-\r
-\r
-Software requirements\r
----------------------\r
-Python version: 2.7.x\r
-\r
-The required python packages are listed in requirements.txt\r
-\r
-Installing the requirements inside a virtualenv is recommended.\r
-\r
-SLA Manager (java backend) needs to be running in order to use the dashboard.\r
-\r
-Installing\r
-----------\r
-(to be corrected/completed)\r
-\r
-#\r
-# Install virtualenv\r
-#\r
-$ pip install virtualenv\r
-\r
-\r
-#\r
-# Create virtualenv.\r
-# E.g.: VIRTUALENVS_DIR=~/virtualenvs\r
-#\r
-$ virtualenv $VIRTUALENVS_DIR/sla-dashboard\r
-\r
-#\r
-# Activate virtualenv\r
-#\r
-$ . $VIRTUALENVS_DIR/sla-dashboard/bin/activate\r
-\r
-#\r
-# Change to application dir and install requirements\r
-#\r
-$ cd $SLA_DASHBOARD\r
-$ pip install -r requirements.txt\r
-\r
-#\r
-# Create needed tables for sessions, admin, etc\r
-#\r
-$ ./manage.py syncdb\r
-\r
-Settings\r
---------\r
-\r
-* sladashboard/settings.py:\r
-    - SLA_MANAGER_URL : The URL of the SLA Manager REST interface.\r
-    - DEBUG: Please, set this to FALSE in production\r
-\r
-* sladashboard/urls.py:\r
-    - dashboard root url: the slagui project is accessed by default\r
-        in $server:$port/slagui. Change "slagui" with the desired path.\r
-\r
-\r
-Running\r
--------\r
-NOTE: this steps are not suitable in production mode.\r
-\r
-#\r
-# Activate virtualenv\r
-#\r
-$ . $VIRTUALENVS_DIR/sla-dashboard/bin/activate\r
-\r
-#\r
-# Cd to application dir\r
-#\r
-$ cd $SLA_DASHBOARD\r
-\r
-#\r
-# Start server listing in port 8000 (change port as desired)\r
-#\r
-$ ./manage.py runserver 0.0.0.0:8000\r
-\r
-#\r
-# Test\r
-#\r
-curl http://localhost:8000/slagui
\ No newline at end of file
diff --git a/sla/samples/TemplateIMindsService.xml b/sla/samples/TemplateIMindsService.xml
deleted file mode 100755 (executable)
index 2faccaf..0000000
+++ /dev/null
@@ -1,55 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<wsag:Template xmlns:wsag="http://www.ggf.org/namespaces/ws-agreement"
-       TemplateId="iMindsServiceTemplate">
-       <wsag:Name>Template for iMinds service</wsag:Name>
-       <wsag:Context>
-               <wsag:AgreementInitiator>iMinds</wsag:AgreementInitiator>
-               <wsag:ServiceProvider>AgreementInitiator</wsag:ServiceProvider>
-               <wsag:ExpirationTime>2015-03-07T12:00:00:000</wsag:ExpirationTime>
-               <sla:Service xmlns:sla="http://sla.atos.eu">iMinds service</sla:Service>
-       </wsag:Context>
-       <wsag:Terms>
-               <wsag:All>
-                       <!-- FUNCTIONAL DESCRIPTION -->
-                       <wsag:ServiceDescriptionTerm wsag:Name="SDTName1" wsag:ServiceName="iMinds service">
-                               The template for iMinds service
-                       </wsag:ServiceDescriptionTerm>
-                       
-                       <!-- OPTIONAL SERVICE REFERENCE -->
-                       
-                       <!-- OPTIONAL SERVICE PROPERTIES : non funcional properties-->
-                       <wsag:ServiceProperties wsag:Name="NonFunctional" wsag:ServiceName="iMinds service">
-                               <wsag:VariableSet>
-                                       <wsag:Variable Name="UpTime" Metric="xs:double">
-                                               <wsag:Location>iMinds/UpTime</wsag:Location>
-                                       </wsag:Variable>
-                                       <wsag:Variable Name="Performance" Metric="xs:decimal">
-                                               <wsag:Location>iMinds/Performance</wsag:Location>
-                                       </wsag:Variable>
-                               </wsag:VariableSet>
-                       </wsag:ServiceProperties>
-                       <wsag:GuaranteeTerm Name="GT_CPULoad">
-                               <wsag:ServiceScope ServiceName="iMinds service"/>
-                               <wsag:ServiceLevelObjective>
-                                       <wsag:KPITarget>
-                                               <wsag:KPIName>UpTime</wsag:KPIName>
-                                               <wsag:CustomServiceLevel>
-                                                       {"constraint" : "UpTime GT 75"}
-                                               </wsag:CustomServiceLevel>
-                                       </wsag:KPITarget>
-                               </wsag:ServiceLevelObjective>
-                       </wsag:GuaranteeTerm>
-                       <wsag:GuaranteeTerm Name="GT_Performance">
-                               <wsag:ServiceScope ServiceName="iMinds service"/>
-                               <wsag:ServiceLevelObjective>
-                                       <wsag:KPITarget>
-                                               <wsag:KPIName>Performance</wsag:KPIName>
-                                               <wsag:CustomServiceLevel>
-                                                       {"constraint" : "Performance GT 50"}
-                                               </wsag:CustomServiceLevel>
-                                       </wsag:KPITarget>
-                               </wsag:ServiceLevelObjective>
-                       </wsag:GuaranteeTerm>
-               </wsag:All>
-       </wsag:Terms>
-</wsag:Template>
diff --git a/sla/samples/providerCreate.bat b/sla/samples/providerCreate.bat
deleted file mode 100755 (executable)
index 58354f6..0000000
+++ /dev/null
@@ -1 +0,0 @@
-curl -u normal_user:password -H "Content-type: application/xml" -d@providerIMinds.xml localhost:8080/sla-service/providers -X POST
\ No newline at end of file
diff --git a/sla/samples/providerIMinds.xml b/sla/samples/providerIMinds.xml
deleted file mode 100755 (executable)
index 1f81ce1..0000000
+++ /dev/null
@@ -1,5 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<provider>
-    <uuid>iMinds</uuid>
-    <name>iMinds Testbed</name>
-</provider>
diff --git a/sla/samples/simpleAgreementCreation.bat b/sla/samples/simpleAgreementCreation.bat
deleted file mode 100755 (executable)
index 3a35b06..0000000
+++ /dev/null
@@ -1 +0,0 @@
-curl -Umyuser:mypassword -H "Content-type: application/json" -d@simpleAgreementCreationParameters.json localhost:8000/sla/agreements/simplecreate -X POST
\ No newline at end of file
diff --git a/sla/samples/simpleAgreementCreationParameters.json b/sla/samples/simpleAgreementCreationParameters.json
deleted file mode 100755 (executable)
index c013f73..0000000
+++ /dev/null
@@ -1 +0,0 @@
-{"template_id":"iMindsServiceTemplate","user":"imauser"}
diff --git a/sla/samples/templateCreate.bat b/sla/samples/templateCreate.bat
deleted file mode 100755 (executable)
index 56c2c96..0000000
+++ /dev/null
@@ -1 +0,0 @@
-curl -u normal_user:password -H "Content-type: application/xml" -d@TemplateIMindsService.xml localhost:8080/sla-service/templateso -X POST
\ No newline at end of file
diff --git a/sla/sla_utils/bin/load-samples.sh b/sla/sla_utils/bin/load-samples.sh
deleted file mode 100755 (executable)
index c316129..0000000
+++ /dev/null
@@ -1,47 +0,0 @@
-#!/usr/bin/env bash
-#
-# To be executed from application root path
-#
-
-#cmd=$($(grep SLA_MANAGER sladashboard/settings.py) && eval $cmd & print $SLA_MANAGER))
-#eval $(grep SLA_MANAGER_URL sladashboard/settings.py)
-#echo SLA_MANAGER_URL=$SLA_MANAGER_URL
-
-SLA_MANAGER_URL="http://localhost:8080/sla-service"
-
-#
-echo \#Add provider virtualwall
-#
-curl -H "Content-type: application/xml" -d @samples/provider-virtualwall.xml $SLA_MANAGER_URL/providers -X POST
-
-#
-echo \#Add provider wiLab2
-#
-curl -H "Content-type: application/xml" -d @samples/provider-wilab2.xml $SLA_MANAGER_URL/providers -X POST
-
-#
-echo \#Add template
-#
-curl -H "Content-type: application/xml" -d @samples/template.xml $SLA_MANAGER_URL/templates -X POST
-
-#
-echo \#Add agreement03
-#
-curl -H "Content-type: application/xml" -d @samples/agreement03.xml $SLA_MANAGER_URL/agreements -X POST
-curl -H "Content-type: application/xml" -d @samples/enforcement03.xml $SLA_MANAGER_URL/enforcements -X POST
-#curl $SLA_MANAGER_URL/enforcements/agreement03/start -X PUT
-
-#
-echo \#Add agreement04
-#
-curl -H "Content-type: application/xml" -d @samples/agreement04.xml $SLA_MANAGER_URL/agreements -X POST
-curl -H "Content-type: application/xml" -d @samples/enforcement04.xml $SLA_MANAGER_URL/enforcements -X POST
-#curl $SLA_MANAGER_URL/enforcements/agreement04/start -X PUT
-
-#
-#echo \#Add agreement05
-#
-#curl -H "Content-type: application/xml" -d@samples/agreement05.xml $SLA_MANAGER_URL/agreements -X POST
-#curl -d@samples/enforcement05.xml -H "Content-type: application/xml" $SLA_MANAGER_URL/enforcements -X POST
-#curl $SLA_MANAGER_URL/enforcements/agreement05/start -X PUT
-
diff --git a/sla/sla_utils/bin/startagreement.sh b/sla/sla_utils/bin/startagreement.sh
deleted file mode 100755 (executable)
index b9736fc..0000000
+++ /dev/null
@@ -1,9 +0,0 @@
-#!/bin/bash
-
-if [ $# -eq 1  ] ; then
-       curl localhost:8080/sla-service/enforcements/agreement0$1/start -X PUT
-else
-       curl localhost:8080/sla-service/enforcements/agreement03/start -X PUT
-       curl localhost:8080/sla-service/enforcements/agreement04/start -X PUT
-fi
-
diff --git a/sla/sla_utils/bin/stopagreement.sh b/sla/sla_utils/bin/stopagreement.sh
deleted file mode 100755 (executable)
index c431f50..0000000
+++ /dev/null
@@ -1,9 +0,0 @@
-#!/bin/bash
-
-if [ $# -eq 1  ] ; then
-       curl localhost:8080/sla-service/enforcements/agreement0$1/stop -X PUT
-else
-       curl localhost:8080/sla-service/enforcements/agreement03/stop -X PUT
-       curl localhost:8080/sla-service/enforcements/agreement04/stop -X PUT
-fi
-
diff --git a/sla/sla_utils/samples/agreement03.xml b/sla/sla_utils/samples/agreement03.xml
deleted file mode 100755 (executable)
index b6b7a9b..0000000
+++ /dev/null
@@ -1,55 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>\r
-<wsag:Agreement xmlns:wsag="http://www.ggf.org/namespaces/ws-agreement"\r
-       AgreementId="agreement03">\r
-\r
-       <wsag:Name>ExampleAgreement</wsag:Name>\r
-       <wsag:Context>\r
-               <wsag:AgreementInitiator>experimenter01</wsag:AgreementInitiator>\r
-               <wsag:AgreementResponder>virtualwall</wsag:AgreementResponder>\r
-               <wsag:ServiceProvider>AgreementResponder</wsag:ServiceProvider>\r
-               <wsag:ExpirationTime>2014-03-07T12:00:00</wsag:ExpirationTime>\r
-               <wsag:TemplateId>template</wsag:TemplateId>\r
-               <sla:Service xmlns:sla="http://sla.atos.eu">Testbed_guarantee_0.99_Uptime_rate_for_0.99_rate_of_the_resources_during_the_sliver</sla:Service>\r
-       </wsag:Context>\r
-       <wsag:Terms>\r
-               <wsag:All>\r
-                       \r
-                       <wsag:ServiceProperties Name="ServiceProperties" ServiceName="ServiceName">\r
-                               <wsag:VariableSet>\r
-                                       <wsag:Variable Name="UpTime" Metric="xs:double">\r
-                        <wsag:Location>qos:UpTime</wsag:Location>\r
-                    </wsag:Variable>\r
-                    <wsag:Variable Name="Performance" Metric="xs:double">\r
-                        <wsag:Location>qos:Performance</wsag:Location>\r
-                    </wsag:Variable>\r
-                               </wsag:VariableSet>\r
-                       </wsag:ServiceProperties>\r
-\r
-                       <!-- Uptime GuaranteTerm-->\r
-            <wsag:GuaranteeTerm Name="GT_UpTime">\r
-                <wsag:ServiceScope ServiceName="sla:virtualwall" />\r
-                <wsag:ServiceLevelObjective>\r
-                    <wsag:KPITarget>\r
-                        <wsag:KPIName>UpTime</wsag:KPIName>\r
-                        <wsag:CustomServiceLevel>\r
-                               {"constraint" : "UpTime GT 0.99"}\r
-                        </wsag:CustomServiceLevel>\r
-                    </wsag:KPITarget>\r
-                </wsag:ServiceLevelObjective>\r
-            </wsag:GuaranteeTerm>\r
-\r
-            <!-- Resource Performance GuaranteTerm-->\r
-            <wsag:GuaranteeTerm Name="GT_Performance">\r
-                <wsag:ServiceScope ServiceName="sla:virtualwall" />\r
-                <wsag:ServiceLevelObjective>\r
-                    <wsag:KPITarget>\r
-                        <wsag:KPIName>Performance</wsag:KPIName>\r
-                        <wsag:CustomServiceLevel>\r
-                               {"constraint" : "Performance GT 0.99"}\r
-                        </wsag:CustomServiceLevel>\r
-                    </wsag:KPITarget>\r
-                </wsag:ServiceLevelObjective>\r
-            </wsag:GuaranteeTerm>\r
-               </wsag:All>\r
-       </wsag:Terms>\r
-</wsag:Agreement>\r
diff --git a/sla/sla_utils/samples/agreement04.xml b/sla/sla_utils/samples/agreement04.xml
deleted file mode 100755 (executable)
index fab041b..0000000
+++ /dev/null
@@ -1,55 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>\r
-<wsag:Agreement xmlns:wsag="http://www.ggf.org/namespaces/ws-agreement"\r
-       AgreementId="agreement04">\r
-\r
-       <wsag:Name>ExampleAgreement</wsag:Name>\r
-       <wsag:Context>\r
-               <wsag:AgreementInitiator>experimenter01</wsag:AgreementInitiator>\r
-               <wsag:AgreementResponder>wiLab2</wsag:AgreementResponder>\r
-               <wsag:ServiceProvider>AgreementResponder</wsag:ServiceProvider>\r
-               <wsag:ExpirationTime>2014-03-07T12:00:00</wsag:ExpirationTime>\r
-               <wsag:TemplateId>template</wsag:TemplateId>\r
-        <sla:Service xmlns:sla="http://sla.atos.eu">Testbed_guarantee_0.99_Uptime_rate_for_0.99_rate_of_the_resources_during_the_sliver</sla:Service>\r
-       </wsag:Context>\r
-       <wsag:Terms>\r
-               <wsag:All>\r
-               \r
-               <wsag:ServiceProperties Name="ServiceProperties" ServiceName="ServiceName">\r
-                               <wsag:VariableSet>\r
-                                       <wsag:Variable Name="UpTime" Metric="xs:double">\r
-                        <wsag:Location>qos:UpTime</wsag:Location>\r
-                    </wsag:Variable>\r
-                    <wsag:Variable Name="Performance" Metric="xs:double">\r
-                        <wsag:Location>qos:Performance</wsag:Location>\r
-                    </wsag:Variable>\r
-                               </wsag:VariableSet>\r
-                       </wsag:ServiceProperties>\r
-\r
-                       <!-- Uptime GuaranteTerm-->\r
-            <wsag:GuaranteeTerm Name="GT_UpTime">\r
-                <wsag:ServiceScope ServiceName="sla:wiLab2" />\r
-                <wsag:ServiceLevelObjective>\r
-                    <wsag:KPITarget>\r
-                        <wsag:KPIName>UpTime</wsag:KPIName>\r
-                        <wsag:CustomServiceLevel>\r
-                            {"constraint" : "UpTime GT 0.99"}\r
-                        </wsag:CustomServiceLevel> \r
-                    </wsag:KPITarget>\r
-                </wsag:ServiceLevelObjective>\r
-            </wsag:GuaranteeTerm>\r
-\r
-            <!-- Resource Performance GuaranteTerm-->\r
-            <wsag:GuaranteeTerm Name="GT_Performance">\r
-                <wsag:ServiceScope ServiceName="sla:wiLab2" />\r
-                <wsag:ServiceLevelObjective>\r
-                    <wsag:KPITarget>\r
-                        <wsag:KPIName>Performance</wsag:KPIName>\r
-                        <wsag:CustomServiceLevel>\r
-                            {"constraint" : "Performance GT 0.99"}\r
-                        </wsag:CustomServiceLevel>\r
-                    </wsag:KPITarget>\r
-                </wsag:ServiceLevelObjective>\r
-            </wsag:GuaranteeTerm>\r
-               </wsag:All>\r
-       </wsag:Terms>\r
-</wsag:Agreement>\r
diff --git a/sla/sla_utils/samples/enforcement03.xml b/sla/sla_utils/samples/enforcement03.xml
deleted file mode 100755 (executable)
index 8f43267..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-<enforcement_job>
-    <agreement_id>agreement03</agreement_id>
-    <enabled>false</enabled>
-</enforcement_job>
diff --git a/sla/sla_utils/samples/enforcement04.xml b/sla/sla_utils/samples/enforcement04.xml
deleted file mode 100755 (executable)
index bf2f5a9..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-<enforcement_job>
-    <agreement_id>agreement04</agreement_id>
-    <enabled>false</enabled>
-</enforcement_job>
diff --git a/sla/sla_utils/samples/old/agreement01.xml b/sla/sla_utils/samples/old/agreement01.xml
deleted file mode 100755 (executable)
index 547d149..0000000
+++ /dev/null
@@ -1,44 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>\r
-<wsag:Agreement xmlns:wsag="http://www.ggf.org/namespaces/ws-agreement">\r
-       <wsag:Name>ExampleAgreement</wsag:Name>\r
-       <wsag:Context>\r
-               <wsag:AgreementInitiator>RandomClient</wsag:AgreementInitiator>\r
-               <wsag:AgreementResponder>Provider01</wsag:AgreementResponder>\r
-               <!-- The AgreementResponder (in this case) is mandatory if sla is multi \r
-                       service provider -->\r
-               <wsag:ServiceProvider>AgreementResponder</wsag:ServiceProvider>\r
-               <wsag:ExpirationTime>2014-03-07T12:00</wsag:ExpirationTime>\r
-               <wsag:TemplateId>contract-template-2007-12-04</wsag:TemplateId>\r
-       </wsag:Context>\r
-       <wsag:Terms>\r
-               <wsag:All>\r
-                       <!-- FUNCTIONAL DESCRIPTION -->\r
-                       <!-- <wsag:ServiceDescriptionTerm wsag:Name="SDTName" wsag:ServiceName="ServiceName"> \r
-                               DSL expression </wsag:ServiceDescriptionTerm> -->\r
-\r
-                       <!-- OPTIONAL SERVICE REFERENCE -->\r
-\r
-                       <!-- OPTIONAL SERVICE PROPERTIES : non funcional properties -->\r
-                       <wsag:ServiceProperties wsag:Name="NonFunctional"\r
-                               wsag:ServiceName="ServiceName">\r
-                               <wsag:Variables>\r
-                                       <wsag:Variable wsag:Name="ResponseTime" wsag:Metric="xs:double">\r
-                                               <wsag:Location>qos:ResponseTime</wsag:Location>\r
-                                       </wsag:Variable>\r
-                               </wsag:Variables>\r
-                       </wsag:ServiceProperties>\r
-                       <wsag:GuaranteeTerm wsag:Name="GT_ResponseTime">\r
-                               <wsag:ServiceScope wsag:ServiceName="ServiceName" />\r
-                               <!-- The qualifying conditions that must be met before the guarantee \r
-                                       is evaluated -->\r
-                               <!-- <wsag:QualifyingCondition>state EQ 'ready'</wsag:QualifyingCondition> -->\r
-                               <wsag:ServiceLevelObjective>\r
-                                       <wsag:KPITarget>\r
-                                               <wsag:KPIName>ResponseTime</wsag:KPIName> <!-- same name as property for the moment -->\r
-                                               <wsag:CustomServiceLevel>{"contraint" : "ResponseTime LT 100"}</wsag:CustomServiceLevel> <!-- the ServiceProperty is referenced here -->\r
-                                       </wsag:KPITarget>\r
-                               </wsag:ServiceLevelObjective>\r
-                       </wsag:GuaranteeTerm>\r
-               </wsag:All>\r
-       </wsag:Terms>\r
-</wsag:Agreement>\r
diff --git a/sla/sla_utils/samples/old/agreement02.xml b/sla/sla_utils/samples/old/agreement02.xml
deleted file mode 100755 (executable)
index 707bcda..0000000
+++ /dev/null
@@ -1,77 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>\r
-<wsag:Agreement xmlns:wsag="http://www.ggf.org/namespaces/ws-agreement"\r
-       AgreementId="agreement02">\r
-\r
-       <wsag:Name>ExampleAgreement</wsag:Name>\r
-       <wsag:Context>\r
-               <wsag:AgreementInitiator>RandomClient</wsag:AgreementInitiator>\r
-               <wsag:AgreementResponder>provider-prueba</wsag:AgreementResponder>\r
-               <!--\r
-               The AgreementResponder (in this case) is mandatory if sla is multi service provider   \r
-               -->\r
-               <wsag:ServiceProvider>AgreementResponder</wsag:ServiceProvider>\r
-               <wsag:ExpirationTime>2014-03-07T12:00:00</wsag:ExpirationTime>\r
-               <wsag:TemplateId>template02</wsag:TemplateId>\r
-       </wsag:Context>\r
-       <wsag:Terms>\r
-               <wsag:All>\r
-                       <!-- FUNCTIONAL DESCRIPTION -->\r
-                       <wsag:ServiceDescriptionTerm Name="SDTName1" ServiceName="ServiceName">\r
-                               DSL expression\r
-                       </wsag:ServiceDescriptionTerm>\r
-                       <wsag:ServiceDescriptionTerm Name="SDTName2" ServiceName="ServiceName">\r
-                               DSL expression\r
-                       </wsag:ServiceDescriptionTerm>\r
-                       \r
-                       <!-- OPTIONAL SERVICE REFERENCE -->\r
-                       \r
-                       <!-- OPTIONAL SERVICE PROPERTIES : non funcional properties-->\r
-                       <wsag:ServiceProperties Name="NonFunctional" ServiceName="ServiceName">\r
-                               <wsag:VariableSet>\r
-                                       <wsag:Variable Name="ResponseTime" Metric="xs:double">\r
-                                               <wsag:Location>qos:ResponseTime</wsag:Location>\r
-                                       </wsag:Variable>\r
-                                       <wsag:Variable Name="Performance" Metric="xs:double">\r
-                                               <wsag:Location>qos:Performance</wsag:Location>\r
-                                       </wsag:Variable>\r
-                               </wsag:VariableSet>\r
-                       </wsag:ServiceProperties>\r
-                       <wsag:GuaranteeTerm Name="GT_ResponseTime">\r
-                               <wsag:ServiceScope ServiceName="ServiceName"/>\r
-                               <!-- The qualifying conditions that must be met before the guarantee is evaluated -->\r
-                               <!-- \r
-                               <wsag:QualifyingCondition>state EQ 'ready'</wsag:QualifyingCondition>\r
-                               -->\r
-                               <wsag:ServiceLevelObjective>\r
-                                       <wsag:KPITarget>\r
-                                               <wsag:KPIName>ResponseTime</wsag:KPIName> <!--  same name as property for the moment -->\r
-                                               <wsag:CustomServiceLevel>{"constraint" : "ResponseTime LT 0.9"}</wsag:CustomServiceLevel> <!--  the ServiceProperty is referenced here -->\r
-                                       </wsag:KPITarget>\r
-                               </wsag:ServiceLevelObjective>\r
-                       </wsag:GuaranteeTerm>\r
-                       <wsag:GuaranteeTerm Name="GT_Performance">\r
-                               <wsag:ServiceScope ServiceName="ServiceName"/>\r
-                               <wsag:ServiceLevelObjective>\r
-                                       <wsag:KPITarget>\r
-                                               <wsag:KPIName>Performance</wsag:KPIName> <!--  same name as property for the moment -->\r
-                                               <wsag:CustomServiceLevel>{"constraint" : "Performance GT 0.1"}</wsag:CustomServiceLevel>\r
-                                       </wsag:KPITarget>\r
-                               </wsag:ServiceLevelObjective>\r
-                               <wsag:BusinessValueList>\r
-                                       <wsag:Importante>3</wsag:Importante>    <!-- optional importance (integer) -->\r
-                                       <wsag:Penalty>\r
-                                               <wsag:AssessmentInterval>\r
-                                                       <wsag:Count>10</wsag:Count>\r
-                                               </wsag:AssessmentInterval>\r
-                                               <wsag:ValueUnit>EUR</wsag:ValueUnit>\r
-                                               <wsag:ValueExpression>99</wsag:ValueExpression>\r
-                                       </wsag:Penalty>\r
-                                       \r
-                                       <wsag:Reward></wsag:Reward>\r
-                                       <wsag:Preference></wsag:Preference>\r
-                                       <wsag:CustomBusinessValue></wsag:CustomBusinessValue>\r
-                               </wsag:BusinessValueList>\r
-                       </wsag:GuaranteeTerm>\r
-               </wsag:All>\r
-       </wsag:Terms>\r
-</wsag:Agreement>\r
diff --git a/sla/sla_utils/samples/old/agreement03_old.xml b/sla/sla_utils/samples/old/agreement03_old.xml
deleted file mode 100755 (executable)
index 291ff4c..0000000
+++ /dev/null
@@ -1,55 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>\r
-<wsag:Agreement xmlns:wsag="http://www.ggf.org/namespaces/ws-agreement"\r
-       AgreementId="agreement03">\r
-\r
-       <wsag:Name>ExampleAgreement</wsag:Name>\r
-       <wsag:Context>\r
-               <wsag:AgreementInitiator>experimenter01</wsag:AgreementInitiator>\r
-               <wsag:AgreementResponder>virtualwall</wsag:AgreementResponder>\r
-               <wsag:ServiceProvider>AgreementResponder</wsag:ServiceProvider>\r
-               <wsag:ExpirationTime>2014-03-07T12:00:00</wsag:ExpirationTime>\r
-               <wsag:TemplateId>template02</wsag:TemplateId>\r
-               <sla:Service xmlns:sla="http://sla.atos.eu">Testbed_guarantee_0.75_Uptime_rate_for_0.8_rate_of_the_resources_during_the_sliver</sla:Service>\r
-       </wsag:Context>\r
-       <wsag:Terms>\r
-               <wsag:All>\r
-                       <!--\r
-                       <wsag:ServiceDescriptionTerm Name="SDTName1" ServiceName="ServiceName">\r
-                               { "servicename": "service-prueba" }\r
-                       </wsag:ServiceDescriptionTerm>\r
-                       -->\r
-                       <wsag:ServiceProperties Name="ServiceProperties" ServiceName="ServiceName">\r
-                               <wsag:VariableSet>\r
-                                       <wsag:Variable Name="ResponseTime" Metric="xs:double">\r
-                                               <wsag:Location>service-prueba/ResponseTime</wsag:Location>\r
-                                       </wsag:Variable>\r
-                                       <wsag:Variable Name="Performance" Metric="xs:double">\r
-                                               <wsag:Location>service-prueba/Performance</wsag:Location>\r
-                                       </wsag:Variable>\r
-                               </wsag:VariableSet>\r
-                       </wsag:ServiceProperties>\r
-                       <wsag:GuaranteeTerm Name="GT_ResponseTime">\r
-                               <wsag:ServiceScope ServiceName="ServiceName"/>\r
-                               <wsag:ServiceLevelObjective>\r
-                                       <wsag:KPITarget>\r
-                                               <wsag:KPIName>ResponseTime</wsag:KPIName>\r
-                                               <wsag:CustomServiceLevel>\r
-                                                       {"constraint" : "ResponseTime BETWEEN (0, 200)"}\r
-                                               </wsag:CustomServiceLevel>\r
-                                       </wsag:KPITarget>\r
-                               </wsag:ServiceLevelObjective>\r
-                       </wsag:GuaranteeTerm>\r
-                       <wsag:GuaranteeTerm Name="GT_Performance">\r
-                               <wsag:ServiceScope ServiceName="ServiceName"/>\r
-                               <wsag:ServiceLevelObjective>\r
-                                       <wsag:KPITarget>\r
-                                               <wsag:KPIName>Performance</wsag:KPIName>\r
-                                               <wsag:CustomServiceLevel>\r
-                                                       {"constraint" : "Performance BETWEEN (0.1,1)"}\r
-                                               </wsag:CustomServiceLevel>\r
-                                       </wsag:KPITarget>\r
-                               </wsag:ServiceLevelObjective>\r
-                       </wsag:GuaranteeTerm>\r
-               </wsag:All>\r
-       </wsag:Terms>\r
-</wsag:Agreement>\r
diff --git a/sla/sla_utils/samples/old/agreement04_old.xml b/sla/sla_utils/samples/old/agreement04_old.xml
deleted file mode 100755 (executable)
index 28d3dd6..0000000
+++ /dev/null
@@ -1,64 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>\r
-<wsag:Agreement xmlns:wsag="http://www.ggf.org/namespaces/ws-agreement"\r
-       AgreementId="agreement04">\r
-\r
-       <wsag:Name>ExampleAgreement</wsag:Name>\r
-       <wsag:Context>\r
-               <wsag:AgreementInitiator>experimenter01</wsag:AgreementInitiator>\r
-               <wsag:AgreementResponder>wiLab2</wsag:AgreementResponder>\r
-               <wsag:ServiceProvider>AgreementResponder</wsag:ServiceProvider>\r
-               <wsag:ExpirationTime>2014-03-07T12:00:00</wsag:ExpirationTime>\r
-               <wsag:TemplateId>template02</wsag:TemplateId>\r
-               <sla:Service xmlns:sla="http://sla.atos.eu">Testbed_guarantee_0.80_uptime_rate_for_0.75_rate_of_the_resources_during_the_sliver</sla:Service>\r
-       </wsag:Context>\r
-       <wsag:Terms>\r
-               <wsag:All>\r
-                       <wsag:ServiceProperties Name="ServiceProperties" ServiceName="ServiceName">\r
-                               <wsag:VariableSet>\r
-                                       <wsag:Variable Name="metric1" Metric="xs:double">\r
-                                               <wsag:Location>metric1</wsag:Location>\r
-                                       </wsag:Variable>\r
-                                       <wsag:Variable Name="metric2" Metric="xs:double">\r
-                                               <wsag:Location>metric2</wsag:Location>\r
-                                       </wsag:Variable>\r
-                                       <wsag:Variable Name="metric3" Metric="xs:double">\r
-                                               <wsag:Location>metric3</wsag:Location>\r
-                                       </wsag:Variable>\r
-                               </wsag:VariableSet>\r
-                       </wsag:ServiceProperties>\r
-                       <wsag:GuaranteeTerm Name="GT_Metric1">\r
-                               <wsag:ServiceScope ServiceName="ServiceName"/>\r
-                               <wsag:ServiceLevelObjective>\r
-                                       <wsag:KPITarget>\r
-                                               <wsag:KPIName>metric1</wsag:KPIName>\r
-                                               <wsag:CustomServiceLevel>\r
-                                                       {"constraint" : "metric1 BETWEEN (0.1, 1)"}\r
-                                               </wsag:CustomServiceLevel>\r
-                                       </wsag:KPITarget>\r
-                               </wsag:ServiceLevelObjective>\r
-                       </wsag:GuaranteeTerm>\r
-                       <wsag:GuaranteeTerm Name="GT_Metric2">\r
-                               <wsag:ServiceScope ServiceName="ServiceName"/>\r
-                               <wsag:ServiceLevelObjective>\r
-                                       <wsag:KPITarget>\r
-                                               <wsag:KPIName>metric2</wsag:KPIName>\r
-                                               <wsag:CustomServiceLevel>\r
-                                                       {"constraint" : "metric2 BETWEEN (0.15, 1)"}\r
-                                               </wsag:CustomServiceLevel>\r
-                                       </wsag:KPITarget>\r
-                               </wsag:ServiceLevelObjective>\r
-                       </wsag:GuaranteeTerm>\r
-                       <wsag:GuaranteeTerm Name="GT_Metric3">\r
-                               <wsag:ServiceScope ServiceName="ServiceName"/>\r
-                               <wsag:ServiceLevelObjective>\r
-                                       <wsag:KPITarget>\r
-                                               <wsag:KPIName>metric3</wsag:KPIName>\r
-                                               <wsag:CustomServiceLevel>\r
-                                                       {"constraint" : "metric3 BETWEEN (0.2, 1)"}\r
-                                               </wsag:CustomServiceLevel>\r
-                                       </wsag:KPITarget>\r
-                               </wsag:ServiceLevelObjective>\r
-                       </wsag:GuaranteeTerm>\r
-               </wsag:All>\r
-       </wsag:Terms>\r
-</wsag:Agreement>\r
diff --git a/sla/sla_utils/samples/old/agreement05.xml b/sla/sla_utils/samples/old/agreement05.xml
deleted file mode 100755 (executable)
index bd7c35c..0000000
+++ /dev/null
@@ -1,78 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>\r
-<wsag:Agreement xmlns:wsag="http://www.ggf.org/namespaces/ws-agreement"\r
-       AgreementId="agreement05">\r
-\r
-       <wsag:Name>ExampleAgreement</wsag:Name>\r
-       <wsag:Context>\r
-               <wsag:AgreementInitiator>client-prueba</wsag:AgreementInitiator>\r
-               <wsag:AgreementResponder>f4c993580-03fe-41eb-8a21-a56709f9370f</wsag:AgreementResponder>\r
-               <wsag:ServiceProvider>AgreementResponder</wsag:ServiceProvider>\r
-               <wsag:ExpirationTime>2014-03-07T12:00:00</wsag:ExpirationTime>\r
-               <wsag:TemplateId>template02</wsag:TemplateId>\r
-               <sla:Service xmlns:sla="http://sla.atos.eu">service5</sla:Service>\r
-       </wsag:Context>\r
-       <wsag:Terms>\r
-               <wsag:All>\r
-                       <wsag:ServiceProperties Name="ServiceProperties" ServiceName="ServiceName">\r
-                               <wsag:VariableSet>\r
-                                       <wsag:Variable Name="metric1" Metric="xs:double">\r
-                                               <wsag:Location>metric1</wsag:Location>\r
-                                       </wsag:Variable>\r
-                                       <wsag:Variable Name="metric2" Metric="xs:double">\r
-                                               <wsag:Location>metric2</wsag:Location>\r
-                                       </wsag:Variable>\r
-                                       <wsag:Variable Name="metric3" Metric="xs:double">\r
-                                               <wsag:Location>metric3</wsag:Location>\r
-                                       </wsag:Variable>\r
-                                       <wsag:Variable Name="metric4" Metric="xs:double">\r
-                                               <wsag:Location>metric4</wsag:Location>\r
-                                       </wsag:Variable>\r
-                               </wsag:VariableSet>\r
-                       </wsag:ServiceProperties>\r
-                       <wsag:GuaranteeTerm Name="GT_Metric1">\r
-                               <wsag:ServiceScope ServiceName="ServiceName"/>\r
-                               <wsag:ServiceLevelObjective>\r
-                                       <wsag:KPITarget>\r
-                                               <wsag:KPIName>metric1</wsag:KPIName>\r
-                                               <wsag:CustomServiceLevel>\r
-                                                       {"constraint" : "metric1 BETWEEN (0.05, 1)"}\r
-                                               </wsag:CustomServiceLevel>\r
-                                       </wsag:KPITarget>\r
-                               </wsag:ServiceLevelObjective>\r
-                       </wsag:GuaranteeTerm>\r
-                       <wsag:GuaranteeTerm Name="GT_Metric2">\r
-                               <wsag:ServiceScope ServiceName="ServiceName"/>\r
-                               <wsag:ServiceLevelObjective>\r
-                                       <wsag:KPITarget>\r
-                                               <wsag:KPIName>metric2</wsag:KPIName>\r
-                                               <wsag:CustomServiceLevel>\r
-                                                       {"constraint" : "metric2 BETWEEN (0.1, 1)"}\r
-                                               </wsag:CustomServiceLevel>\r
-                                       </wsag:KPITarget>\r
-                               </wsag:ServiceLevelObjective>\r
-                       </wsag:GuaranteeTerm>\r
-                       <wsag:GuaranteeTerm Name="GT_Metric3">\r
-                               <wsag:ServiceScope ServiceName="ServiceName"/>\r
-                               <wsag:ServiceLevelObjective>\r
-                                       <wsag:KPITarget>\r
-                                               <wsag:KPIName>metric3</wsag:KPIName>\r
-                                               <wsag:CustomServiceLevel>\r
-                                                       {"constraint" : "metric3 BETWEEN (0.15, 1)"}\r
-                                               </wsag:CustomServiceLevel>\r
-                                       </wsag:KPITarget>\r
-                               </wsag:ServiceLevelObjective>\r
-                       </wsag:GuaranteeTerm>\r
-                       <wsag:GuaranteeTerm Name="GT_Metric4">\r
-                               <wsag:ServiceScope ServiceName="ServiceName"/>\r
-                               <wsag:ServiceLevelObjective>\r
-                                       <wsag:KPITarget>\r
-                                               <wsag:KPIName>metric4</wsag:KPIName>\r
-                                               <wsag:CustomServiceLevel>\r
-                                                       {"constraint" : "metric4 BETWEEN (0.2, 1)"}\r
-                                               </wsag:CustomServiceLevel>\r
-                                       </wsag:KPITarget>\r
-                               </wsag:ServiceLevelObjective>\r
-                       </wsag:GuaranteeTerm>\r
-               </wsag:All>\r
-       </wsag:Terms>\r
-</wsag:Agreement>\r
diff --git a/sla/sla_utils/samples/old/agreement05_old.xml b/sla/sla_utils/samples/old/agreement05_old.xml
deleted file mode 100755 (executable)
index 777a1e6..0000000
+++ /dev/null
@@ -1,78 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>\r
-<wsag:Agreement xmlns:wsag="http://www.ggf.org/namespaces/ws-agreement"\r
-       AgreementId="agreement05">\r
-\r
-       <wsag:Name>ExampleAgreement</wsag:Name>\r
-       <wsag:Context>\r
-               <wsag:AgreementInitiator>experimenter01</wsag:AgreementInitiator>\r
-               <wsag:AgreementResponder>virtualwall</wsag:AgreementResponder>\r
-               <wsag:ServiceProvider>AgreementResponder</wsag:ServiceProvider>\r
-               <wsag:ExpirationTime>2014-03-07T12:00:00</wsag:ExpirationTime>\r
-               <wsag:TemplateId>template02</wsag:TemplateId>\r
-               <sla:Service xmlns:sla="http://sla.atos.eu">service5</sla:Service>\r
-       </wsag:Context>\r
-       <wsag:Terms>\r
-               <wsag:All>\r
-                       <wsag:ServiceProperties Name="ServiceProperties" ServiceName="ServiceName">\r
-                               <wsag:VariableSet>\r
-                                       <wsag:Variable Name="metric1" Metric="xs:double">\r
-                                               <wsag:Location>metric1</wsag:Location>\r
-                                       </wsag:Variable>\r
-                                       <wsag:Variable Name="metric2" Metric="xs:double">\r
-                                               <wsag:Location>metric2</wsag:Location>\r
-                                       </wsag:Variable>\r
-                                       <wsag:Variable Name="metric3" Metric="xs:double">\r
-                                               <wsag:Location>metric3</wsag:Location>\r
-                                       </wsag:Variable>\r
-                                       <wsag:Variable Name="metric4" Metric="xs:double">\r
-                                               <wsag:Location>metric4</wsag:Location>\r
-                                       </wsag:Variable>\r
-                               </wsag:VariableSet>\r
-                       </wsag:ServiceProperties>\r
-                       <wsag:GuaranteeTerm Name="GT_Metric1">\r
-                               <wsag:ServiceScope ServiceName="ServiceName"/>\r
-                               <wsag:ServiceLevelObjective>\r
-                                       <wsag:KPITarget>\r
-                                               <wsag:KPIName>metric1</wsag:KPIName>\r
-                                               <wsag:CustomServiceLevel>\r
-                                                       {"constraint" : "metric1 BETWEEN (0.05, 1)"}\r
-                                               </wsag:CustomServiceLevel>\r
-                                       </wsag:KPITarget>\r
-                               </wsag:ServiceLevelObjective>\r
-                       </wsag:GuaranteeTerm>\r
-                       <wsag:GuaranteeTerm Name="GT_Metric2">\r
-                               <wsag:ServiceScope ServiceName="ServiceName"/>\r
-                               <wsag:ServiceLevelObjective>\r
-                                       <wsag:KPITarget>\r
-                                               <wsag:KPIName>metric2</wsag:KPIName>\r
-                                               <wsag:CustomServiceLevel>\r
-                                                       {"constraint" : "metric2 BETWEEN (0.1, 1)"}\r
-                                               </wsag:CustomServiceLevel>\r
-                                       </wsag:KPITarget>\r
-                               </wsag:ServiceLevelObjective>\r
-                       </wsag:GuaranteeTerm>\r
-                       <wsag:GuaranteeTerm Name="GT_Metric3">\r
-                               <wsag:ServiceScope ServiceName="ServiceName"/>\r
-                               <wsag:ServiceLevelObjective>\r
-                                       <wsag:KPITarget>\r
-                                               <wsag:KPIName>metric3</wsag:KPIName>\r
-                                               <wsag:CustomServiceLevel>\r
-                                                       {"constraint" : "metric3 BETWEEN (0.15, 1)"}\r
-                                               </wsag:CustomServiceLevel>\r
-                                       </wsag:KPITarget>\r
-                               </wsag:ServiceLevelObjective>\r
-                       </wsag:GuaranteeTerm>\r
-                       <wsag:GuaranteeTerm Name="GT_Metric4">\r
-                               <wsag:ServiceScope ServiceName="ServiceName"/>\r
-                               <wsag:ServiceLevelObjective>\r
-                                       <wsag:KPITarget>\r
-                                               <wsag:KPIName>metric4</wsag:KPIName>\r
-                                               <wsag:CustomServiceLevel>\r
-                                                       {"constraint" : "metric4 BETWEEN (0.2, 1)"}\r
-                                               </wsag:CustomServiceLevel>\r
-                                       </wsag:KPITarget>\r
-                               </wsag:ServiceLevelObjective>\r
-                       </wsag:GuaranteeTerm>\r
-               </wsag:All>\r
-       </wsag:Terms>\r
-</wsag:Agreement>\r
diff --git a/sla/sla_utils/samples/old/enforcement.xml b/sla/sla_utils/samples/old/enforcement.xml
deleted file mode 100755 (executable)
index bf2f5a9..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-<enforcement_job>
-    <agreement_id>agreement04</agreement_id>
-    <enabled>false</enabled>
-</enforcement_job>
diff --git a/sla/sla_utils/samples/old/enforcement02.xml b/sla/sla_utils/samples/old/enforcement02.xml
deleted file mode 100755 (executable)
index e81c83d..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-<enforcement_job>
-    <agreement_id>agreement02</agreement_id>
-    <enabled>true</enabled>
-</enforcement_job>
diff --git a/sla/sla_utils/samples/old/enforcement05.xml b/sla/sla_utils/samples/old/enforcement05.xml
deleted file mode 100755 (executable)
index 1b4dc7e..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-<enforcement_job>
-    <agreement_id>agreement05</agreement_id>
-    <enabled>true</enabled>
-</enforcement_job>
diff --git a/sla/sla_utils/samples/old/template01.xml b/sla/sla_utils/samples/old/template01.xml
deleted file mode 100755 (executable)
index 90b24c1..0000000
+++ /dev/null
@@ -1,78 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- 
-From http://serviceqos.wikispaces.com/WSAgExample
- -->
-<wsag:Template xmlns:wsag="http://www.ggf.org/namespaces/ws-agreement" TemplateId="contract-template-2007-12-04">
-   <wsag:Name>ExampleTemplate</wsag:Name>
-   <wsag:Context>
-      <wsag:AgreementInitiator>Provider</wsag:AgreementInitiator>
-      <wsag:ServiceProvider>AgreementInitiator</wsag:ServiceProvider>
-      <wsag:ExpirationTime>2013-12-15-1200</wsag:ExpirationTime>
-      <wsag:TemplateId>contract-template-2013-12-15</wsag:TemplateId>
-   </wsag:Context>
-   <wsag:Terms>
-      <wsag:All>
-         <!-- functional description --> 
-         <wsag:ServiceDescriptionTerm
-            wsag:Name="General" 
-            wsag:ServiceName="Service0001">
-            A GPS service
-         </wsag:ServiceDescriptionTerm>
-         <wsag:ServiceDescriptionTerm
-            wsag:Name="GetCoordsOperation" 
-            wsag:ServiceName="GPSService0001">
-            operation to call to get the coords
-         </wsag:ServiceDescriptionTerm>
-         <!-- domain specific reference to a service (additional or optional to SDT) --> 
-         <wsag:ServiceReference 
-            wsag:Name="CoordsRequest" 
-            wsag:ServiceName="GPSService0001">
-        <wsag:EndpointReference>
-               <wsag:Address>http://www.gps.com/coordsservice/getcoords</wsag:Address>
-               <wsag:ServiceName>gps:CoordsRequest</wsag:ServiceName>
-            </wsag:EndpointReference>
-         </wsag:ServiceReference>
-         <!-- non-functional properties -->
-         <wsag:ServiceProperties
-            wsag:Name="AvailabilityProperties" 
-            wsag:ServiceName="GPS0001">
-            <wsag:Variables>
-               <wsag:Variable 
-                  wsag:Name="ResponseTime" 
-                  wsag:Metric="metric:Duration">
-                  <wsag:Location>qos:ResponseTime</wsag:Location>
-               </wsag:Variable>
-            </wsag:Variables>
-         </wsag:ServiceProperties>
-         <wsag:ServiceProperties
-            wsag:Name="UsabilityProperties" 
-            wsag:ServiceName="GPS0001">
-            <wsag:Variables>
-               <wsag:Variable 
-                  wsag:Name="CoordDerivation" 
-                  wsag:Metric="metric:CoordDerivationMetric">
-                  <wsag:Location>qos:CoordDerivation</wsag:Location>
-               </wsag:Variable>
-            </wsag:Variables>
-         </wsag:ServiceProperties>
-         <!-- statements to offered service level(s) -->
-         <wsag:GuaranteeTerm 
-            Name="FastReaction" Obligated="ServiceProvider">
-            <wsag:ServiceScope ServiceName="GPS0001">
-               http://www.gps.com/coordsservice/getcoords
-            </wsag:ServiceScope>
-            <wsag:QualifyingCondition>
-               applied when current time in week working hours
-            </wsag:QualifyingCondition>
-            <wsag:ServiceLevelObjective>
-               <wsag:KPITarget>
-                  <wsag:KPIName>FastResponseTime</wsag:KPIName>
-                  <wsag:Target>
-                     //Variable/@Name="ResponseTime" LOWERTHAN 1 second
-                  </wsag:Target>
-               </wsag:KPITarget>
-            </wsag:ServiceLevelObjective>
-         </wsag:GuaranteeTerm>
-      </wsag:All>
-   </wsag:Terms>
-</wsag:Template>
diff --git a/sla/sla_utils/samples/provider-virtualwall.xml b/sla/sla_utils/samples/provider-virtualwall.xml
deleted file mode 100755 (executable)
index 6299a9f..0000000
+++ /dev/null
@@ -1,5 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<provider>
-    <uuid>virtualwall</uuid>
-    <name>virtualwall</name>
-</provider>
diff --git a/sla/sla_utils/samples/provider-wilab2.xml b/sla/sla_utils/samples/provider-wilab2.xml
deleted file mode 100755 (executable)
index 2671656..0000000
+++ /dev/null
@@ -1,5 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<provider>
-    <uuid>wiLab2</uuid>
-    <name>wiLab2</name>
-</provider>
diff --git a/sla/sla_utils/samples/template.xml b/sla/sla_utils/samples/template.xml
deleted file mode 100755 (executable)
index ab3ce59..0000000
+++ /dev/null
@@ -1,69 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<wsag:Template xmlns:wsag="http://www.ggf.org/namespaces/ws-agreement"
-       TemplateId="template">
-       <wsag:Name>ExampleTemplate2</wsag:Name>
-       <wsag:Context>
-               <wsag:ExpirationTime>2014-03-07T12:00:00:000</wsag:ExpirationTime>
-       </wsag:Context>
-       <wsag:Terms>
-               <wsag:All>
-                       <!-- FUNCTIONAL DESCRIPTION -->
-                       <wsag:ServiceDescriptionTerm wsag:Name="SDTName1" wsag:ServiceName="ServiceName">
-                               DSL expression
-                       </wsag:ServiceDescriptionTerm>
-                       <wsag:ServiceDescriptionTerm wsag:Name="SDTName2" wsag:ServiceName="ServiceName">
-                               DSL expression
-                       </wsag:ServiceDescriptionTerm>
-                       
-                       <!-- OPTIONAL SERVICE REFERENCE -->
-                       
-                       <!-- OPTIONAL SERVICE PROPERTIES : non funcional properties-->
-                       <wsag:ServiceProperties wsag:Name="NonFunctional" wsag:ServiceName="ServiceName">
-                               <wsag:Variables>
-                                       <wsag:Variable wsag:Name="ResponseTime" wsag:Metric="xs:double">
-                                               <wsag:Location>qos:ResponseTime</wsag:Location>
-                                       </wsag:Variable>
-                                       <wsag:Variable wsag:Name="Performance" wsag:Metric="xs:double">
-                                               <wsag:Location>qos:Performance</wsag:Location>
-                                       </wsag:Variable>
-                               </wsag:Variables>
-                       </wsag:ServiceProperties>
-                       <wsag:GuaranteeTerm wsag:Name="GT_ResponseTime">
-                               <wsag:ServiceScope wsag:ServiceName="ServiceName"/>
-                               <!-- The qualifying conditions that must be met before the guarantee is evaluated -->
-                               <!-- 
-                               <wsag:QualifyingCondition>state EQ 'ready'</wsag:QualifyingCondition>
-                               -->
-                               <wsag:ServiceLevelObjective>
-                                       <wsag:KPITarget>
-                                               <wsag:KPIName>ResponseTime</wsag:KPIName> <!--  same name as property for the moment -->
-                                               <wsag:CustomServiceLevel>{"constraint" : "ResponseTime LT qos:ResponseTime"}</wsag:CustomServiceLevel> <!--  the ServiceProperty is referenced here -->
-                                       </wsag:KPITarget>
-                               </wsag:ServiceLevelObjective>
-                       </wsag:GuaranteeTerm>
-                       <wsag:GuaranteeTerm wsag:Name="GT_Performance">
-                               <wsag:ServiceScope wsag:ServiceName="ServiceName"/>
-                               <wsag:ServiceLevelObjective>
-                                       <wsag:KPITarget>
-                                               <wsag:KPIName>Performance</wsag:KPIName> <!--  same name as property for the moment -->
-                                               <wsag:CustomServiceLevel>{"constraint" : "Performance GT qos:Performance"}</wsag:CustomServiceLevel>
-                                       </wsag:KPITarget>
-                               </wsag:ServiceLevelObjective>
-                               <wsag:BusinessValueList>
-                                       <wsag:Importante>3</wsag:Importante>    <!-- optional importance (integer) -->
-                                       <wsag:Penalty>
-                                               <wsag:AssessmentInterval>
-                                                       <wsag:Count>10</wsag:Count>
-                                               </wsag:AssessmentInterval>
-                                               <wsag:ValueUnit>EUR</wsag:ValueUnit>
-                                               <wsag:ValueExpression>99</wsag:ValueExpression>
-                                       </wsag:Penalty>
-                                       
-                                       <wsag:Reward></wsag:Reward>
-                                       <wsag:Preference></wsag:Preference>
-                                       <wsag:CustomBusinessValue></wsag:CustomBusinessValue>
-                               </wsag:BusinessValueList>
-                       </wsag:GuaranteeTerm>
-               </wsag:All>
-       </wsag:Terms>
-</wsag:Template>
index 8091f4e..47c6802 100755 (executable)
@@ -3,6 +3,7 @@
 import requests
 
 from requests.auth import HTTPBasicAuth
+from myslice.settings import logger
 
 import xmlconverter
 import wsag_model
@@ -38,17 +39,17 @@ _TEMPLATES_PATH = "templates"
 _VIOLATIONS_PATH = "violations"
 _ENFORCEMENTJOBS_PATH = "enforcements"
 
-rooturl = settings.SLA_MANAGER_URL
+rooturl = settings.SLA_COLLECTOR_URL
 
 
 class Factory(object):
     @staticmethod
-    def agreements(path=_AGREEMENTS_PATH):
+    def agreements():
         """Returns a REST client for Agreements
 
         :rtype : Agreements
          """
-        return Agreements(rooturl, path)
+        return Agreements(rooturl)
 
     @staticmethod
     def providers():
@@ -111,23 +112,26 @@ class Client(object):
             c = Client("http://localhost:8080/service")
             c.get("/resource", headers = { "accept": "application/json" })
         """
-        url = _buildpath_(self.rooturl, path)
+        url = _buildpath(self.rooturl, path)
         if "testbed" in kwargs:
             url = url + "?testbed=" + kwargs["testbed"]
 
         if "headers" not in kwargs:
             kwargs["headers"] = {"accept": "application/xml"}
 
-        kwargs["auth"] = HTTPBasicAuth(settings.SLA_MANAGER_USER,
-                                       settings.SLA_MANAGER_PASSWORD)
+
+        kwargs["auth"] = HTTPBasicAuth(settings.SLA_COLLECTOR_USER,
+                                       settings.SLA_COLLECTOR_PASSWORD)
 
         # for key, values in kwargs.iteritems():
         #     print key, values
 
+        logger.debug('SLA GET {}'.format(url))
         result = requests.get(url, **kwargs)
-        print "GET {} {} {}".format(
-            result.url, result.status_code, result.text[0:70])
-        print result.encoding
+        logger.debug('SLA GET {} - result: {}'.format(result.url, result.status_code))
+        # print "GET {} {} {}".format(
+        #     result.url, result.status_code, result.text[0:70])
+        # print result.encoding
 
         return result
 
@@ -150,17 +154,18 @@ class Client(object):
                 }
             )
         """
-        url = _buildpath_(self.rooturl, path)
+        url = _buildpath(self.rooturl, path)
 
         if "testbed" in kwargs:
             url = url + "?testbed=" + kwargs["testbed"]
+            del kwargs["testbed"]
 
         if "headers" not in kwargs:
             kwargs["headers"] = {"accept": "application/xml",
                                  "content-type": "application/xml"}
 
         kwargs["auth"] = HTTPBasicAuth(settings.SLA_MANAGER_USER,
-                                       settings.SLA_MANAGER_PASSWORD)
+                                      settings.SLA_MANAGER_PASSWORD)
 
         result = requests.post(url, data, **kwargs)
         location = result.headers["location"] \
@@ -228,13 +233,11 @@ class _Resource(object):
         resource = _Resource._processresult(r, self.converter)
         return resource, r
 
-    def get(self, path, params):
+    def get(self, path="", params={}):
         """Generic query over resource: GET /resource?q1=v1&q2=v2...
 
         :param dict[str,str] params: values to pass as get parameters
         """
-        if path is None:
-            path = ""
 
         r = self.client.get(path, params=params)
         resources = self._processresult(r, self.listconverter)
@@ -262,9 +265,9 @@ class Agreements(object):
 
         The final url to the resource is root_url + "/" + path
         """
-        resourceurl = _buildpath_(root_url, path)
-        converter = xmlconverter.AgreementConverter()
-        self.res = _Resource(resourceurl, converter)
+        self.resourceurl = _buildpath(root_url, path)
+        self.converter = xmlconverter.AgreementConverter()
+        self.res = _Resource(self.resourceurl, self.converter)
 
     def getall(self):
         """
@@ -301,12 +304,12 @@ class Agreements(object):
         :param str agreementid :
         :rtype : wsag_model.AgreementStatus
         """
-        path = _buildpath_(_AGREEMENTS_PATH, agreementid, "guaranteestatus")
+        # path = _buildpath(_AGREEMENTS_PATH, agreementid, "guaranteestatus")
+        path = _buildpath(agreementid, "guaranteestatus")
         r = self.res.client.get(path, headers={'accept': 'application/json'},
                                 params={'testbed': testbed})
 
         json_obj = r.json()
-
         status = wsag_model.AgreementStatus.json_decode(json_obj)
 
         return status, r
@@ -316,7 +319,9 @@ class Agreements(object):
 
         :rtype : list[wsag_model.Agreement]
         """
-        return self.res.get(slicename, dict())
+        self.resourceurl = _buildpath(rooturl, 'slice')
+        self.res = _Resource(self.resourceurl, self.converter)
+        return self.res.get(slicename)
 
     def create(self, agreement, testbed):
         """Create a new agreement
@@ -335,7 +340,7 @@ class Templates(object):
 
         The final url to the resource is root_url + "/" + path
         """
-        resourceurl = _buildpath_(root_url, path)
+        resourceurl = _buildpath(root_url, path)
         converter = xmlconverter.AgreementConverter()
         self.res = _Resource(resourceurl, converter)
 
@@ -370,7 +375,7 @@ class Providers(object):
 
         The final url to the resource is root_url + "/" + path
         """
-        resourceurl = _buildpath_(root_url, path)
+        resourceurl = _buildpath(root_url, path)
         converter = xmlconverter.ProviderConverter()
         self.res = _Resource(resourceurl, converter)
 
@@ -406,7 +411,7 @@ class Violations(object):
 
         The final url to the resource is root_url + "/" + path
         """
-        resourceurl = _buildpath_(root_url, path)
+        resourceurl = _buildpath(root_url, path)
         converter = xmlconverter.ViolationConverter()
         self.res = _Resource(resourceurl, converter)
 
@@ -445,7 +450,7 @@ class Enforcements(object):
 
         The final url to the resource is root_url + "/" + path
         """
-        resourceurl = _buildpath_(root_url, path)
+        resourceurl = _buildpath(root_url, path)
         converter = xmlconverter.EnforcementConverter()
         self.res = _Resource(resourceurl, converter)
 
@@ -465,7 +470,7 @@ class Enforcements(object):
         return self.res.getbyid(agreement_id, params={"testbed": testbed})
 
 
-def _buildpath_(*paths):
+def _buildpath(*paths):
     if "" in paths:
         paths = [path for path in paths if path != ""]
 
index 271a8f5..d190e30 100755 (executable)
@@ -165,10 +165,13 @@ class AgreementStatus(object):
             s = "<GuaranteeTermStatus(name='{}' status='{}')>"
             return s.format(self.name, self.status)
 
-    def __init__(self):
+    def __init__(self, lst=None):
         self.agreement_id = ""
         self.guaranteestatus = ""
-        self.guaranteeterms = []
+        if lst is None:
+            self.guaranteeterms = []
+        else:
+            self.guaranteeterms = lst
 
     def __repr__(self):
         return (
index d32a591..1d3e22e 100755 (executable)
@@ -21,6 +21,7 @@ root = ElementTree.parse("file.xml")
 c.convert(root.getroot())
 
 """
+from myslice.settings import logger
 
 try:
     # Much faster and lighter library (C implementation)
@@ -201,7 +202,8 @@ class AgreementConverter(Converter):
         :rtype: wsag_model.Agreement
         """
         for name, value in xmlroot.attrib.items():
-            print '{0}="{1}"'.format(name, value)
+            logger.debug('SLA xmlconverter: {} = {}'.format(name, value))
+            # print '{0}="{1}"'.format(name, value)
 
         if xmlroot.tag in self.agreement_tags:
             result = Agreement()
@@ -280,7 +282,7 @@ class AgreementConverter(Converter):
         nss = self._namespaces
         for element in elements:
             servicename = _get_attribute(element, "ServiceName")
-            for var in element.findall("wsag:Variables/wsag:Variable", nss):
+            for var in element.findall("wsag:VariableSet/wsag:Variable", nss):
                 key, value = self._parse_property(var, servicename)
                 result[key] = value
 
index fea71f2..ac3e364 100755 (executable)
@@ -1,10 +1,16 @@
+from __future__ import print_function
+
 # this somehow is not used anymore - should it not be ?
+import ast
+from datetime import datetime
+import pytz
 from django.template import RequestContext
 from django.shortcuts import render_to_response
 from django.shortcuts import render
 from django import forms
+import re
 
-from unfold.loginrequired import FreeAccessView
+from unfold.loginrequired import LoginRequiredView, FreeAccessView
 from unfold.page import Page
 from sla.slaclient import restclient
 from sla.slaclient import wsag_model
@@ -15,144 +21,145 @@ from django.core.urlresolvers import reverse
 from django.core.paginator import Paginator, EmptyPage, PageNotAnInteger
 
 import slaclient.service.fed4fire.fed4fireservice as fed4fireservice
-from rest_framework.views import APIView
 from django.http import HttpResponse
 
-import json
-import traceback
-import re
-from math import ceil
-from datetime import datetime
-from dateutil.relativedelta import relativedelta
-from dateutil.tz import tzlocal
-from django.conf import settings
-
-
-class Rol:
-    CONSUMER = "CONSUMER"
-    PROVIDER = "PROVIDER"
-
-
-class AgreementsFilter(object):
-    def __init__(self, status=None, provider=None, consumer=None):
-        self.status = status
-        self.provider = provider
-        self.consumer = consumer
-
-    def __repr__(self):
-        return "<AgreementsFilter(status={}, provider={}, consumer={})>".format(
-            self.status, self.provider, self.consumer
-        )
-
-    @staticmethod
-    def _check(expectedvalue, actualvalue):
-        if expectedvalue is None or expectedvalue == '':
-            return True
-        else:
-            return actualvalue == expectedvalue
-
-    def check(self, agreement):
-        """Check if this agreement satisfy the filter.
-
-        The agreement must be previously annotated
-        """
-        guaranteestatus = agreement.guaranteestatus
-        provider = agreement.context.provider
-        consumer = agreement.context.consumer
-        return (
-            AgreementsFilter._check(self.status, guaranteestatus) and
-            AgreementsFilter._check(self.provider, provider) and
-            AgreementsFilter._check(self.consumer, consumer)
-        )
-
-
-class FilterForm(forms.Form):
-    _attrs = {'class': 'form-control'}
-    exclude = ()
-    status = forms.ChoiceField(
-        choices=[
-            ('', 'All'),
-            (wsag_model.AgreementStatus.StatusEnum.FULFILLED, 'Fulfilled'),
-            (wsag_model.AgreementStatus.StatusEnum.VIOLATED, 'Violated'),
-            (wsag_model.AgreementStatus.StatusEnum.NON_DETERMINED, 'Non determined')],
-        widget=forms.Select(attrs=_attrs),
-        required=False
-    )
-    provider = forms.CharField(
-        widget=forms.TextInput(attrs=_attrs),
-        required=False
-    )
-    consumer = forms.CharField(
-        widget=forms.TextInput(attrs=_attrs),
-        required=False
-    )
-
-
-class SLAView (FreeAccessView, ThemeView):
+from myslice.settings import logger, SLA_COLLECTOR_URL
+
+
+# class AgreementsFilter(object):
+# def __init__(self, status=None, provider=None, consumer=None):
+#         self.status = status
+#         self.provider = provider
+#         self.consumer = consumer
+#
+#     def __repr__(self):
+#         return "<AgreementsFilter(status={}, provider={}, consumer={})>".format(
+#             self.status, self.provider, self.consumer
+#         )
+#
+#     @staticmethod
+#     def _check(expectedvalue, actualvalue):
+#         if expectedvalue is None or expectedvalue == '':
+#             return True
+#         else:
+#             return actualvalue == expectedvalue
+#
+#     def check(self, agreement):
+#         """Check if this agreement satisfy the filter.
+#
+#         The agreement must be previously annotated
+#         """
+#         guaranteestatus = agreement.guaranteestatus
+#         provider = agreement.context.provider
+#         consumer = agreement.context.consumer
+#         return (
+#             AgreementsFilter._check(self.status, guaranteestatus) and
+#             AgreementsFilter._check(self.provider, provider) and
+#             AgreementsFilter._check(self.consumer, consumer)
+#         )
+
+
+# class FilterForm(forms.Form):
+#     _attrs = {'class': 'form-control'}
+#     exclude = ()
+#     status = forms.ChoiceField(
+#         choices=[
+#             ('', 'All'),
+#             (wsag_model.AgreementStatus.StatusEnum.FULFILLED, 'Fulfilled'),
+#             (wsag_model.AgreementStatus.StatusEnum.VIOLATED, 'Violated'),
+#             (wsag_model.AgreementStatus.StatusEnum.NON_DETERMINED, 'Non determined')],
+#         widget=forms.Select(attrs=_attrs),
+#         required=False
+#     )
+#     provider = forms.CharField(
+#         widget=forms.TextInput(attrs=_attrs),
+#         required=False
+#     )
+#     consumer = forms.CharField(
+#         widget=forms.TextInput(attrs=_attrs),
+#         required=False
+#     )
+
+
+class SLAView(FreeAccessView, ThemeView):
     template_name = 'slice-tab-sla.html'
 
-    def get (self, request, slicename, state=None):
+    def get(self, request, slicename):
+
+        page = Page(request)
 
-        page=Page(request)
+        # logger.debug("SLA slice name: {}".format(slicename))
 
-        consumer_id = None
+        consumer_id = None
         agreement_id = None
         enforcements = {}
         violations = {}
-        keys = ['provider','agreement','date','status','result','ok']
+        keys = ['provider', 'agreement',
+                'date', 'status', 'result',
+                'ok', 'slivers']
         ag_info = []
 
-        filter_ = None
-        form = FilterForm(request.GET)
-        if form.is_valid():
-            filter_ = _get_filter_from_form(form)
+        filter_ = None
+        form = FilterForm(request.GET)
+        if form.is_valid():
+            filter_ = _get_filter_from_form(form)
 
-        consumer_id = _get_consumer_id(request)
+        consumer_id = _get_consumer_id(request)
 
-        #agreements = _get_agreements(agreement_id, consumer_id=consumer_id, filter_=filter_)
-        agreements = _get_agreements(agreement_id, slice=slicename)
+        # agreements = _get_agreements(agreement_id, consumer_id=consumer_id, filter_=filter_)
+        agreements = _get_agreements_by_slice(slicename)
 
         for agreement in agreements:
             row = []
             provider = agreement.context.provider
-            row.append(provider) # Provider
-            row.append(agreement) # Agreement
-            row.append(agreement.context.time_formatted()) # Date
+            row.append(provider)  # Provider
+            row.append(agreement)  # Agreement
+            row.append(agreement.context.time_formatted())  # Date
 
             enf = _get_enforcement(agreement.agreement_id, provider)
+            logger.debug("SLA AAAAA: {}".format(agreement.guaranteestatus))
 
             if enf.enabled == 'true':
-                row.append('Evaluating') # Status
-                row.append('') # Result
-                row('') # Ok
+                row.append('Evaluating')  # Status
+                row.append('')  # Result
+                row.append('')  # Ok
             else:
                 if agreement.guaranteestatus == "NON_DETERMINED":
-                    row.append('Provisioned') # Status
-                    row.append('') # Result
-                    row.append('') # Ok
-                
+                    row.append('Provisioned')  # Status
+                    row.append('')  # Result
+                    row.append('')  # Ok
+
                 else:
-                    row.append('Finished') # Status
+                    row.append('Finished')  # Status
 
                     violations_list = _get_agreement_violations(agreement.agreement_id, provider, "GT_Performance")
-                    
+
                     if len(violations_list) > 0:
-                        value = '%.2f'%float(violations_list[0].actual_value)
-                        row.append('%d'%(float(value)*100)) # Result
+                        value = '%.2f' % float(violations_list[0].actual_value)
+                        row.append('%d' % (float(value) * 100))  # Result
                     else:
-                        row.append('100') # Result
+                        row.append('100')  # Result
 
                     if agreement.guaranteestatus == "VIOLATED":
-                        row.append('false') # Ok
+                        row.append('false')  # Ok
 
                     if agreement.guaranteestatus == "FULFILLED":
-                        row.append('true') # Ok
+                        row.append('true')  # Ok
 
-            ag_info.append(dict(zip(keys,row)))
+            for _, terms in agreement.guaranteeterms.items():
+                try:
+                    s = ast.literal_eval(terms.scopes[0].scope.lstrip())
+                    logger.debug('SLA scope: {}'.format(s))
+                    row.append(s)
+                    break
+                except Exception as e:
+                    logger.debug("SLA EXCEPTION: {}".format(e.message))
+
+            ag_info.append(dict(zip(keys, row)))
 
         template_env = {}
-       # write something of our own instead
-       # more general variables expected in the template
+        # write something of our own instead
+        # more general variables expected in the template
         template_env['title'] = 'SLA Agreements'
         template_env['agreements'] = agreements
         template_env['username'] = request.user
@@ -161,90 +168,90 @@ class SLAView (FreeAccessView, ThemeView):
         template_env['last_violation_list'] = violations
         template_env['ag_info'] = ag_info
 
-
-       # the prelude object in page contains a summary of the requirements() for all plugins
-       # define {js,css}_{files,chunks}
+        # the prelude object in page contains a summary of the requirements() for all plugins
+        # define {js,css}_{files,chunks}
         prelude_env = page.prelude_env()
         template_env.update(prelude_env)
 
         return render_to_response(self.template_name, template_env, context_instance=RequestContext(request))
 
 
-class AgreementsFilter(object):
-    def __init__(self, status=None, provider=None, consumer=None):
-        self.status = status
-        self.provider = provider
-        self.consumer = consumer
-
-    def __repr__(self):
-        return "<AgreementsFilter(status={}, provider={}, consumer={})>".format(
-            self.status, self.provider, self.consumer
-        )
-
-    @staticmethod
-    def _check(expectedvalue, actualvalue):
-        if expectedvalue is None or expectedvalue == '':
-            return True
-        else:
-            return actualvalue == expectedvalue
-
-    def check(self, agreement):
-        """Check if this agreement satisfy the filter.
-
-        The agreement must be previously annotated
-        """
-        guaranteestatus = agreement.guaranteestatus
-        provider = agreement.context.provider
-        consumer = agreement.context.consumer
-        return (
-            AgreementsFilter._check(self.status, guaranteestatus) and
-            AgreementsFilter._check(self.provider, provider) and
-            AgreementsFilter._check(self.consumer, consumer)
-        )
-
-
-class ContactForm(forms.Form):
-    subject = forms.CharField(max_length=100)
-    message = forms.CharField()
-    sender = forms.EmailField()
-    cc_myself = forms.BooleanField(required=False)
-
-
-def _get_agreements_client(path=""):
-    return restclient.Factory.agreements(path)
+class AgreementsFilter(object):
+    def __init__(self, status=None, provider=None, consumer=None):
+        self.status = status
+        self.provider = provider
+        self.consumer = consumer
+#
+    def __repr__(self):
+        return "<AgreementsFilter(status={}, provider={}, consumer={})>".format(
+            self.status, self.provider, self.consumer
+        )
+#
+    @staticmethod
+    def _check(expectedvalue, actualvalue):
+        if expectedvalue is None or expectedvalue == '':
+            return True
+        else:
+            return actualvalue == expectedvalue
+#
+    def check(self, agreement):
+        """Check if this agreement satisfy the filter.
+#
+        The agreement must be previously annotated
+        """
+        guaranteestatus = agreement.guaranteestatus
+        provider = agreement.context.provider
+        consumer = agreement.context.consumer
+        return (
+            AgreementsFilter._check(self.status, guaranteestatus) and
+            AgreementsFilter._check(self.provider, provider) and
+            AgreementsFilter._check(self.consumer, consumer)
+        )
+
+
+class ContactForm(forms.Form):
+    subject = forms.CharField(max_length=100)
+    message = forms.CharField()
+    sender = forms.EmailField()
+    cc_myself = forms.BooleanField(required=False)
+
+
+def _get_agreements_client():
+    return restclient.Factory.agreements()
 
 
 def _get_violations_client():
     return restclient.Factory.violations()
 
+
 def _get_enforcements_client():
     return restclient.Factory.enforcements()
 
+
 def _get_consumer_id(request):
     return request.user
 
 
 def _get_agreement(agreement_id):
-
     agreements_client = _get_agreements_client()
     agreement, response = agreements_client.getbyid(agreement_id)
     return agreement
 
-def _get_enforcement(agreement_id, testbed):
 
+def _get_enforcement(agreement_id, testbed):
     enforcements_client = _get_enforcements_client()
     enforcement, response = enforcements_client.getbyagreement(agreement_id, testbed)
     return enforcement
 
-def _get_filter_from_form(form):
 
-    data = form.cleaned_data
-    result = AgreementsFilter(
-        data["status"], data["provider"], data["consumer"])
-    return result
+# def _get_filter_from_form(form):
+#
+#     data = form.cleaned_data
+#     result = AgreementsFilter(
+#         data["status"], data["provider"], data["consumer"])
+#     return result
 
 def agreement_term_violations(request, agreement_id, guarantee_name):
-
     page = Page(request)
     prelude_env = page.prelude_env()
 
@@ -252,12 +259,12 @@ def agreement_term_violations(request, agreement_id, guarantee_name):
     agreement = _get_agreement(agreement_id)
     violations = _get_agreement_violations(agreement_id, guarantee_name)
     annotator.annotate_agreement(agreement)
-    
+
     slicename = request.POST.get('slicename')
-    
-    paginator = Paginator(violations, 25) # Show 25 violations per page
+
+    paginator = Paginator(violations, 25)  # Show 25 violations per page
     page_num = request.GET.get('page')
-    
+
     try:
         violation_page = paginator.page(page_num)
     except PageNotAnInteger:
@@ -266,7 +273,7 @@ def agreement_term_violations(request, agreement_id, guarantee_name):
     except EmptyPage:
         # If page is out of range (e.g. 9999), deliver first page.
         violation_page = paginator.page(1)
+
     context = {
         'agreement_id': agreement_id,
         'guarantee_term': agreement.guaranteeterms[guarantee_name],
@@ -275,17 +282,20 @@ def agreement_term_violations(request, agreement_id, guarantee_name):
         'slicename': slicename,
         'last_violation': violations[-1].actual_value
     }
-    
+
     context.update(prelude_env)
-    
-    return render_to_response ('violations_template.html', context, context_instance=RequestContext(request))
+
+    return render_to_response('violations_template.html', context, context_instance=RequestContext(request))
+
+
 #     return render(request, 'violations_template.html', context)
 
+
+# TODO Change function to class
 def agreement_details(request, agreement_id):
-    
     page = Page(request)
     prelude_env = page.prelude_env()
-    
+
     annotator = wsag_helper.AgreementAnnotator()
     agreement = _get_agreement(agreement_id)
     violations = _get_agreement_violations(agreement_id)
@@ -299,35 +309,48 @@ def agreement_details(request, agreement_id):
         'status': status,
         'violations_by_date': violations_by_date
     }
-    
-    context.update(prelude_env)
-    
-    return render_to_response ('violations_template.html', context, context_instance=RequestContext(request))
-    #return render(request, 'agreement_detail.html', context)
 
-def _get_agreement(agreement_id):
+    context.update(prelude_env)
 
-    agreements_client = _get_agreements_client()
-    agreement, response = agreements_client.getbyid(agreement_id)
-    return agreement
+    return render_to_response('violations_template.html', context, context_instance=RequestContext(request))
+    #return render(request, 'agreement_detail.html', context)
 
-def _get_agreements(agreement_id, slice=None, provider_id=None, consumer_id=None, filter_=None):
 
+# def _get_agreements(agreement_id, slice=None, provider_id=None, consumer_id=None, filter_=None):
+#
+#     agreements_client = _get_agreements_client()
+#     if agreement_id is None:
+#         if consumer_id is not None:
+#             agreements, response = agreements_client.getbyconsumer(consumer_id)
+#         elif provider_id is not None:
+#             agreements, response = agreements_client.getbyprovider(provider_id)
+#         elif slice is not None:
+#             agreements_client = _get_agreements_client("slice")
+#             agreements, response = agreements_client.getbyslice(slice)
+#         else:
+#             raise ValueError(
+#                 "Invalid values: consumer_id and provider_id are None")
+#     else:
+#         agreement, response = agreements_client.getbyid(agreement_id)
+#         agreements = [agreement]
+#
+#     annotator = wsag_helper.AgreementAnnotator()
+#     for agreement in agreements:
+#         id_ = agreement.agreement_id
+#         testbed = agreement.context.provider
+#         status = _get_agreement_status(id_, testbed)
+#         annotator.annotate_agreement(agreement, status)
+#
+#     if filter_ is not None:
+#         print "FILTERING ", repr(filter_)
+#         agreements = filter(filter_.check, agreements)
+#     else:
+#         print "NOT FILTERING"
+#     return agreements
+
+def _get_agreements_by_slice(slice):
     agreements_client = _get_agreements_client()
-    if agreement_id is None:
-        if consumer_id is not None:
-            agreements, response = agreements_client.getbyconsumer(consumer_id)
-        elif provider_id is not None:
-            agreements, response = agreements_client.getbyprovider(provider_id)
-        elif slice is not None:
-            agreements_client = _get_agreements_client("slice")
-            agreements, response = agreements_client.getbyslice(slice)
-        else:
-            raise ValueError(
-                "Invalid values: consumer_id and provider_id are None")
-    else:
-        agreement, response = agreements_client.getbyid(agreement_id)
-        agreements = [agreement]
+    agreements, response = agreements_client.getbyslice(slice)
 
     annotator = wsag_helper.AgreementAnnotator()
     for agreement in agreements:
@@ -336,108 +359,65 @@ def _get_agreements(agreement_id, slice=None, provider_id=None, consumer_id=None
         status = _get_agreement_status(id_, testbed)
         annotator.annotate_agreement(agreement, status)
 
-    if filter_ is not None:
-        print "FILTERING ", repr(filter_)
-        agreements = filter(filter_.check, agreements);
-    else:
-        print "NOT FILTERING"
     return agreements
 
 
-def _get_agreements_by_consumer(consumer_id):
-
-    agreements_client = _get_agreements_client()
-    agreements, response = agreements_client.getbyconsumer(consumer_id)
-    return agreements
+def _get_agreements_by_consumer(consumer_id):
+#
+    agreements_client = _get_agreements_client()
+    agreements, response = agreements_client.getbyconsumer(consumer_id)
+    return agreements
 
 def _get_agreement_status(agreement_id, testbed):
-
     agreements_client = _get_agreements_client()
     status, response = agreements_client.getstatus(agreement_id, testbed)
     return status
 
-def _get_agreement_violations(agreement_id, testbed, term=None):
 
+def _get_agreement_violations(agreement_id, testbed, term=None):
     violations_client = _get_violations_client()
     violations, response = violations_client.getbyagreement(agreement_id, testbed, term)
     return violations
 
 
-class AgreementSimple(APIView):
+class Testbeds(FreeAccessView, ThemeView):
+    def get(self, request, *args, **kwargs):
+        c = restclient.Client(SLA_COLLECTOR_URL)
+        #url = settings.SLA_MANAGER_URL.replace("/sla","")
+        #c = restclient.Client(url)
+        # print "**** URL ******", url
+        SLAtestbeds = c.get("testbeds/")
+        # Future work: get SLA description for each testbed
+
+        return HttpResponse(SLAtestbeds.text, content_type="application/json", status=SLAtestbeds.status_code)
+
+
+class CreateAgreement(LoginRequiredView, ThemeView):
+    def post(self, request, *args, **kwargs):
 
-    regex = r"[a-f0-9]{8}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{12}"
+        c = restclient.Client(SLA_COLLECTOR_URL)
+        data = request.POST.copy()
 
-    def build_response(self, code, text):
-        response = HttpResponse(text, content_type="text/plain", status=code)
-        return response 
+        testbed_urn_regex = r"\+(.*?)\+"
+        pattern = re.compile(testbed_urn_regex)
+        testbed_urn = pattern.search(data["SLIVER_INFO_AGGREGATE_URN"]).group(1)
 
-    def post(self, request, **kwargs):
-        #import pdb; pdb.set_trace()
-        print "------------------------------------------------1"
-        data = request.POST
+        tstmp = data["SLIVER_INFO_EXPIRATION"]
 
-        url = settings.SLA_MANAGER_URL
-        c = restclient.Client(url)
-        # for key, value in request.DATA.items(): # jgarcia review this
-        #     data[key] = value
-        
-        # print "---- DATA: ----"
-        # print "Data type: ", type(data)
-        # for key in data:
-        #     print key, data.getlist(key)
+        dt = datetime.fromtimestamp(float(tstmp))
+        gmt_2 = pytz.timezone("Etc/GMT-2") # FIXME: hardcoded for demo purposes
+        dlocal = gmt_2.localize(dt).isoformat()
+
+        data["SLIVER_INFO_EXPIRATION"] = dlocal
+
+        logger.debug("SLA Agreement parameters: {}".format(data))
 
         try:
-            # template_id = data['template_id']
-            testbeds = data.getlist("testbeds")
-            user = data["user"]
-            resources = data.getlist("resources")
-            slice_id = data["slice"]
-        except:
-            print "FAIL!"
-            return self.build_response(400, 'Invalid data')
-
-        selected_resources = {}
-
-        now = datetime.now(tzlocal())
-        expiration_time = now + relativedelta(years=1)
-
-        for testbed in testbeds:
-            selected_resources[testbed] = [r for r in resources if testbed in r]
-            template_id = testbed
-            try:
-                print "Calling createagreementsimplified with template_id:",template_id,"and user:",user
-                result = fed4fireservice.createagreementsimplified(
-                            template_id, user, expiration_time, selected_resources)
-                print result
-            except Exception, e:
-                print traceback.format_exc()
-                print '%s (%s)' % (e, type(e))
-                return self.build_response(400, 'Problem creating agreement')
-
-            agreement_id = re.compile(self.regex).search(result.text).group(0)
-         
-            data = '{{ "id": "{}", \
-                      "slice": "{}", \
-                      "testbed": "{}" }}'.format(agreement_id, slice_id, testbed)
-
-            c.post(
-                "sliver",
-                data,
-                headers = {
-                    "content-type": "application/json",
-                    "accept": "application/xml"
-                }
-            )   
-
-        return self.build_response(200, result)            
-
-class Testbeds(APIView):
-    def get(self, request, **kwargs):
-        c = restclient.Client("http://157.193.215.125:4001/sla-collector")
-        #url = settings.SLA_MANAGER_URL.replace("/sla","")
-        #c = restclient.Client(url)
-        print "**** URL ******", url
-        SLAtestbeds = c.get("testbeds")
-        # Future work: get SLA description for each testbed
+            response = c.post("agreements/create/", data=data, testbed=testbed_urn)
+        except Exception as e:
+            import traceback, sys
 
-        return HttpResponse(SLAtestbeds.text, content_type="application/json", status=SLAtestbeds.status_code)
+            traceback.print_exc(file=sys.stdout)
+            logger.debug("SLA ERROR {}".format(e.message))
+
+        return HttpResponse(response.text, status=response.status_code)
index 725d7d9..91953b0 100755 (executable)
@@ -1,8 +1,8 @@
 
-<div class="col-md-2">
+<div class="col-md-1">
 </div>
 
- <div class="col-md-9">
+ <div class="col-md-10">
    <div class="row" id="agreements" style="padding-top:1em;">
     
         
                 <dd>{{ row.agreement.context.testbed_formatted }}</dd>
                 <dt>Expiration date:</dt>
                 <dd>{{ row.date|default:"&nbsp;" }}</dd>
+
+                <dt>Covered slivers:</dt>
+                {% for sliver in row.slivers %}
+                <dd>{{ sliver|default:"&nbsp;" }}</dd>
+                {% endfor %}
+
                        </div>
                        <div class="modal-footer">
                                <button type="button" class="btn btn-default" data-dismiss="modal">Close</button>
@@ -66,7 +72,7 @@
                
           <td>{{ row.provider }}</td>
 
-          <td><a class="agreement-detail" data-toggle="modal" data-target="#agreementModal{{row.agreement.agreement_id}}">{{ row.agreement.context.template_id }}</a></td>
+          <td><a class="agreement-detail" data-toggle="modal" data-target="#agreementModal{{row.agreement.agreement_id}}">{{ row.agreement.agreement_id }}</a></td>
                  
           <td>{{ row.date }}</td>
           <td>{{ row.status }}</td>
diff --git a/sla/templates/violations_template.sublime-workspace b/sla/templates/violations_template.sublime-workspace
deleted file mode 100644 (file)
index 2de266d..0000000
+++ /dev/null
@@ -1,191 +0,0 @@
-{
-       "auto_complete":
-       {
-               "selected_items":
-               [
-               ]
-       },
-       "buffers":
-       [
-               {
-                       "file": "slice-tab-sla.html",
-                       "settings":
-                       {
-                               "buffer_size": 6021,
-                               "line_ending": "Unix"
-                       }
-               }
-       ],
-       "build_system": "",
-       "command_palette":
-       {
-               "height": 0.0,
-               "selected_items":
-               [
-               ],
-               "width": 0.0
-       },
-       "console":
-       {
-               "height": 0.0,
-               "history":
-               [
-               ]
-       },
-       "distraction_free":
-       {
-               "menu_visible": true,
-               "show_minimap": false,
-               "show_open_files": false,
-               "show_tabs": false,
-               "side_bar_visible": false,
-               "status_bar_visible": false
-       },
-       "file_history":
-       [
-       ],
-       "find":
-       {
-               "height": 0.0
-       },
-       "find_in_files":
-       {
-               "height": 0.0,
-               "where_history":
-               [
-               ]
-       },
-       "find_state":
-       {
-               "case_sensitive": false,
-               "find_history":
-               [
-               ],
-               "highlight": true,
-               "in_selection": false,
-               "preserve_case": false,
-               "regex": false,
-               "replace_history":
-               [
-               ],
-               "reverse": false,
-               "show_context": true,
-               "use_buffer2": true,
-               "whole_word": false,
-               "wrap": true
-       },
-       "groups":
-       [
-               {
-                       "selected": 0,
-                       "sheets":
-                       [
-                               {
-                                       "buffer": 0,
-                                       "file": "slice-tab-sla.html",
-                                       "semi_transient": false,
-                                       "settings":
-                                       {
-                                               "buffer_size": 6021,
-                                               "regions":
-                                               {
-                                               },
-                                               "selection":
-                                               [
-                                                       [
-                                                               0,
-                                                               0
-                                                       ]
-                                               ],
-                                               "settings":
-                                               {
-                                                       "syntax": "Packages/HTML/HTML.tmLanguage"
-                                               },
-                                               "translation.x": 0.0,
-                                               "translation.y": 0.0,
-                                               "zoom_level": 1.0
-                                       },
-                                       "stack_index": 0,
-                                       "type": "text"
-                               }
-                       ]
-               }
-       ],
-       "incremental_find":
-       {
-               "height": 0.0
-       },
-       "input":
-       {
-               "height": 0.0
-       },
-       "layout":
-       {
-               "cells":
-               [
-                       [
-                               0,
-                               0,
-                               1,
-                               1
-                       ]
-               ],
-               "cols":
-               [
-                       0.0,
-                       1.0
-               ],
-               "rows":
-               [
-                       0.0,
-                       1.0
-               ]
-       },
-       "menu_visible": true,
-       "output.find_results":
-       {
-               "height": 0.0
-       },
-       "project": "violations_template.sublime-project",
-       "replace":
-       {
-               "height": 0.0
-       },
-       "save_all_on_build": true,
-       "select_file":
-       {
-               "height": 0.0,
-               "selected_items":
-               [
-               ],
-               "width": 0.0
-       },
-       "select_project":
-       {
-               "height": 0.0,
-               "selected_items":
-               [
-               ],
-               "width": 0.0
-       },
-       "select_symbol":
-       {
-               "height": 0.0,
-               "selected_items":
-               [
-               ],
-               "width": 0.0
-       },
-       "settings":
-       {
-       },
-       "show_minimap": true,
-       "show_open_files": false,
-       "show_tabs": true,
-       "side_bar_visible": true,
-       "side_bar_width": 150.0,
-       "status_bar_visible": true,
-       "template_settings":
-       {
-       }
-}
index 676d108..03ab14f 100755 (executable)
@@ -13,6 +13,8 @@ urlpatterns = patterns('',
             slicetabsla.agreement_details, name='agreement_details'),
        url(r'^agreements/(?P<agreement_id>[a-f0-9]{8}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{12})/guarantees/(?P<guarantee_name>\w+)/violations$',
             slicetabsla.agreement_term_violations, name='agreement_term_violations'),
-       url(r'^agreements/simplecreate/?$',
-            slicetabsla.AgreementSimple.as_view(), name="agreementsimple"),
+    url(r'^agreements/create/$',
+            slicetabsla.CreateAgreement.as_view(), name="agreement_create"),
+       # url(r'^agreements/simplecreate/?$',
+    #        slicetabsla.AgreementSimple.as_view(), name="agreementsimple"),
 )
index 2256ea9..6c7887a 100755 (executable)
@@ -1,5 +1,6 @@
 import re\r
 import datetime\r
+from myslice.settings import logger\r
 \r
 from slaclient import wsag_model\r
 from slaclient.wsag_model import AgreementStatus\r
@@ -104,6 +105,8 @@ class AgreementAnnotator(object):
         """\r
         a = agreement\r
 \r
+        logger.debug("SLA STATUS: {}".format(status))\r
+\r
         if status is not None:\r
             a.guaranteestatus = status.guaranteestatus\r
             a.statusclass = self._get_statusclass(status.guaranteestatus)\r