import sys, os, glob, random, errno
import getopt, socket
import logging, json
-import sqlite3
+import sqlite3, yaml
#sys.path.append('gen-py')
#sys.path.insert(0, glob.glob('./lib/py/build/lib.*')[0])
sys.path.insert(0, glob.glob('./lib')[0])
# Load tosca object from file into memory
try:
- tosca = ToscaTemplate( TOSCADIR+TOSCA_DEFAULT_FNAME )
+ #tosca = ToscaTemplate( TOSCADIR+TOSCA_DEFAULT_FNAME )
+ tpl = yaml.load(file(TOSCADIR+TOSCA_DEFAULT_FNAME,'r'))
except:
logging.error('Tosca Parser error: %s', sys.exc_info()[0])
#tosca file could not be read
return pub_r
# Extract Labels
- node_labels = label.extract_labels( tosca )
+ node_labels = label.extract_labels( tpl )
logging.debug('Node Labels: %s', node_labels)
# Map nodes in the template to resource domains
logging.debug('Selected Sites: %s', node_site)
# Create per-domain Tosca files
- file_paths = partitioner.partition_tosca('./toscafiles/template',node_site,tosca.tpl)
+ file_paths = partitioner.partition_tosca('./toscafiles/template',node_site,tpl)
logging.debug('Per domain file paths: %s', file_paths)
# Create work-flow
DOMINO_SERVER_IP = 'localhost'
DOMINO_CLI_PORT = 9100
-UDID_DESIRED = 12467
+UDID_DESIRED = 0
LIST_SUPPORTED_TEMPLATES = ['tosca-nfv-v1.0']
DEFAULT_TOSCA_PUBFILE = './tosca-templates/tosca_helloworld_nfv.yaml'
TOSCA_RX_DIR = './toscafiles/'
#Parses policy rules, extracts targets, extracts policy properties
#Returns set of policy properties for each target in a dictionary object
#e.g., node_labels['VNF1'] = {label1, label2, ..., labeln}
-def extract_labels(tosca):
+def extract_labels(tpl):
node_labels = dict() #stores labels for each node
- if tosca.tpl.has_key('topology_template'):
- if tosca.tpl['topology_template'].has_key('policies'):
- policies = tosca.tpl['topology_template']['policies']
+ if tpl.has_key('topology_template'):
+ if tpl['topology_template'].has_key('policies'):
+ policies = tpl['topology_template']['policies']
else:
return node_labels
else:
+<<<<<<< HEAD
09/21/2016 10:08:40 AM Domino Client Starting...
09/21/2016 10:08:40 AM 1 Sending Registration
09/21/2016 10:08:40 AM Registration Response: Response Code: 1
09/21/2016 10:08:50 AM subscribing labels ['tosca.policies.Placement.Geolocation:properties:region:us-west-1'] and templates []
09/21/2016 10:08:50 AM Subscribe Response is received from: 0 ,sequence number: 10
09/21/2016 10:08:51 AM 12467 Received Template File
+=======
+11/17/2016 10:51:34 AM Domino Client Starting...
+11/17/2016 10:51:34 AM 1 Sending Registration
+11/17/2016 10:51:34 AM Registration Response: Response Code: 1
+11/17/2016 10:51:34 AM CLI Service is starting
+11/17/2016 10:51:34 AM RPC service for CLI is starting...
+11/17/2016 10:51:36 AM Received CLI ['heartbeat']
+11/17/2016 10:51:36 AM 0 Sending heartbeat
+11/17/2016 10:51:36 AM heart beat received from: 0 ,sequence number: 2
+11/17/2016 10:51:37 AM Received CLI ['subscribe', '-t', 'hot', '-l', 'tosca.policies.Placement:properties:region:nova-1']
+11/17/2016 10:51:37 AM subscribing labels ['tosca.policies.Placement:properties:region:nova-1'] and templates ['hot']
+11/17/2016 10:51:37 AM Subscribe Response is received from: 0 ,sequence number: 3
+11/17/2016 10:51:38 AM Received CLI ['subscribe', '-t', 'dummy1,dummy2', '--top', 'OVERWRITE']
+11/17/2016 10:51:38 AM subscribing labels [] and templates ['dummy1', 'dummy2']
+11/17/2016 10:51:38 AM Subscribe Response is received from: 0 ,sequence number: 4
+11/17/2016 10:51:39 AM Received CLI ['subscribe', '-t', 'dummy1,dummy2', '--top', 'DELETE']
+11/17/2016 10:51:39 AM subscribing labels [] and templates ['dummy1', 'dummy2']
+11/17/2016 10:51:39 AM Subscribe Response is received from: 0 ,sequence number: 5
+11/17/2016 10:51:40 AM Received CLI ['subscribe', '-l', 'tosca.policies.Placement:properties:region:nova-2']
+11/17/2016 10:51:40 AM subscribing labels ['tosca.policies.Placement:properties:region:nova-2'] and templates []
+11/17/2016 10:51:40 AM Subscribe Response is received from: 0 ,sequence number: 6
+11/17/2016 10:51:41 AM Received CLI ['subscribe', '-l', 'tosca.policies.Placement:properties:region:nova-3', '--lop', 'OVERWRITE']
+11/17/2016 10:51:41 AM subscribing labels ['tosca.policies.Placement:properties:region:nova-3'] and templates []
+11/17/2016 10:51:41 AM Subscribe Response is received from: 0 ,sequence number: 7
+11/17/2016 10:51:42 AM Received CLI ['subscribe', '-l', 'tosca.policies.Placement:properties:region:nova-3', '--lop', 'DELETE']
+11/17/2016 10:51:42 AM subscribing labels ['tosca.policies.Placement:properties:region:nova-3'] and templates []
+11/17/2016 10:51:42 AM Subscribe Response is received from: 0 ,sequence number: 8
+11/17/2016 10:51:43 AM Received CLI ['publish', '-t', './tosca-templates/tosca_helloworld_nfv.yaml']
+11/17/2016 10:51:43 AM Publishing the template file: ./tosca-templates/tosca_helloworld_nfv.yaml
+11/17/2016 10:51:43 AM Publish Response is received from: 0 ,sequence number: 9 Op. Status: 2
+11/17/2016 10:51:44 AM Received CLI ['subscribe', '-l', 'tosca.policies.Placement.Geolocation:properties:region:us-west-1']
+11/17/2016 10:51:44 AM subscribing labels ['tosca.policies.Placement.Geolocation:properties:region:us-west-1'] and templates []
+11/17/2016 10:51:44 AM Subscribe Response is received from: 0 ,sequence number: 10
+11/17/2016 10:51:45 AM 0 Received Template File
+>>>>>>> e746280... Replace toscaparser with native yaml to load published Tosca file into memory
+<<<<<<< HEAD
09/21/2016 10:08:39 AM Domino Server Starting...
09/21/2016 10:08:40 AM Registration Request received for UDID 12467 from IP: 192.168.252.174 port: 9091
09/21/2016 10:08:41 AM Registration Request received for UDID 12467 from IP: 192.168.252.174 port: 9092
09/21/2016 10:08:51 AM Selected Sites: {'VNF2': [], 'VNF3': [], 'VNF1': 12467}
09/21/2016 10:08:51 AM Per domain file paths: {12467: './toscafiles/template_part12467.yaml'}
09/21/2016 10:08:51 AM Push Response received from 12467
+=======
+11/17/2016 10:51:33 AM Domino Server Starting...
+11/17/2016 10:51:34 AM Registration Request received for UDID 0 from IP: 192.168.255.160 port: 9091
+11/17/2016 10:51:35 AM Registration Request received for UDID 0 from IP: 192.168.255.160 port: 9092
+11/17/2016 10:51:36 AM heartbeat received from 0
+11/17/2016 10:51:37 AM Subscribe Request received from 0
+11/17/2016 10:51:37 AM APPENDING Labels...
+11/17/2016 10:51:37 AM Supported Template: set(['hot']) Supported Labels: set(['tosca.policies.Placement:properties:region:nova-1'])
+11/17/2016 10:51:38 AM Subscribe Request received from 0
+11/17/2016 10:51:38 AM APPENDING Labels...
+11/17/2016 10:51:38 AM Supported Template: set(['dummy2', 'dummy1']) Supported Labels: set(['tosca.policies.Placement:properties:region:nova-1'])
+11/17/2016 10:51:39 AM Subscribe Request received from 0
+11/17/2016 10:51:39 AM APPENDING Labels...
+11/17/2016 10:51:39 AM Supported Template: set([]) Supported Labels: set(['tosca.policies.Placement:properties:region:nova-1'])
+11/17/2016 10:51:40 AM Subscribe Request received from 0
+11/17/2016 10:51:40 AM APPENDING Labels...
+11/17/2016 10:51:40 AM Supported Template: set([]) Supported Labels: set(['tosca.policies.Placement:properties:region:nova-2', 'tosca.policies.Placement:properties:region:nova-1'])
+11/17/2016 10:51:41 AM Subscribe Request received from 0
+11/17/2016 10:51:41 AM OVERWRITING Labels...
+11/17/2016 10:51:41 AM Supported Template: set([]) Supported Labels: set(['tosca.policies.Placement:properties:region:nova-3'])
+11/17/2016 10:51:42 AM Subscribe Request received from 0
+11/17/2016 10:51:42 AM DELETING Labels...
+11/17/2016 10:51:42 AM Supported Template: set([]) Supported Labels: set([])
+11/17/2016 10:51:43 AM Publish Request received from 0
+11/17/2016 10:51:43 AM ['tosca_definitions_version: tosca_simple_profile_for_nfv_1_0_0', '', 'description: Template for deploying a single server with predefined properties.', '', 'metadata:', ' template_name: TOSCA NFV Sample Template', '', 'policy_types:', ' tosca.policies.Placement.Geolocation:', ' description: Geolocation policy', ' derived_from: tosca.policies.Placement', '', 'topology_template:', ' node_templates:', ' VNF1:', ' type: tosca.nodes.nfv.VNF', ' properties:', ' id: vnf1', ' vendor: acmetelco', ' version: 1.0', '', ' VNF2:', ' type: tosca.nodes.nfv.VNF', ' properties:', ' id: vnf2', ' vendor: ericsson', ' version: 1.0', '', ' VNF3:', ' type: tosca.nodes.nfv.VNF', ' properties:', ' id: vnf3', ' vendor: huawei', ' version: 1.0', '', ' policies:', ' - rule1:', ' type: tosca.policies.Placement.Geolocation', ' targets: [ VNF1 ]', ' properties:', ' region: [ us-west-1 ]', ' - rule2:', ' type: tosca.policies.Placement.Geolocation', ' targets: [ VNF2, VNF3 ]', ' properties:', ' region: [ us-west-1 , us-west-2 ]']
+11/17/2016 10:51:43 AM Node Labels: {'VNF2': set(['tosca.policies.Placement.Geolocation:properties:region:us-west-1', 'tosca.policies.Placement.Geolocation:properties:region:us-west-2']), 'VNF3': set(['tosca.policies.Placement.Geolocation:properties:region:us-west-1', 'tosca.policies.Placement.Geolocation:properties:region:us-west-2']), 'VNF1': set(['tosca.policies.Placement.Geolocation:properties:region:us-west-1'])}
+11/17/2016 10:51:43 AM Site Maps: {'VNF2': set([]), 'VNF3': set([]), 'VNF1': set([])}
+11/17/2016 10:51:43 AM Selected Sites: {'VNF2': [], 'VNF3': [], 'VNF1': []}
+11/17/2016 10:51:43 AM Per domain file paths: {}
+11/17/2016 10:51:44 AM Subscribe Request received from 0
+11/17/2016 10:51:44 AM APPENDING Labels...
+11/17/2016 10:51:44 AM Supported Template: set([]) Supported Labels: set(['tosca.policies.Placement.Geolocation:properties:region:us-west-1'])
+11/17/2016 10:51:45 AM Publish Request received from 7835465092099811082
+11/17/2016 10:51:45 AM ['tosca_definitions_version: tosca_simple_profile_for_nfv_1_0_0', '', 'description: Template for deploying a single server with predefined properties.', '', 'metadata:', ' template_name: TOSCA NFV Sample Template', '', 'policy_types:', ' tosca.policies.Placement.Geolocation:', ' description: Geolocation policy', ' derived_from: tosca.policies.Placement', '', 'topology_template:', ' node_templates:', ' VNF1:', ' type: tosca.nodes.nfv.VNF', ' properties:', ' id: vnf1', ' vendor: acmetelco', ' version: 1.0', '', ' VNF2:', ' type: tosca.nodes.nfv.VNF', ' properties:', ' id: vnf2', ' vendor: ericsson', ' version: 1.0', '', ' VNF3:', ' type: tosca.nodes.nfv.VNF', ' properties:', ' id: vnf3', ' vendor: huawei', ' version: 1.0', '', ' policies:', ' - rule1:', ' type: tosca.policies.Placement.Geolocation', ' targets: [ VNF1 ]', ' properties:', ' region: [ us-west-1 ]', ' - rule2:', ' type: tosca.policies.Placement.Geolocation', ' targets: [ VNF2, VNF3 ]', ' properties:', ' region: [ us-west-1 , us-west-2 ]']
+11/17/2016 10:51:45 AM ERRNO 17; ./toscafiles/ exists. Creating: ./toscafiles/template1.yaml
+11/17/2016 10:51:45 AM Node Labels: {'VNF2': set(['tosca.policies.Placement.Geolocation:properties:region:us-west-1', 'tosca.policies.Placement.Geolocation:properties:region:us-west-2']), 'VNF3': set(['tosca.policies.Placement.Geolocation:properties:region:us-west-1', 'tosca.policies.Placement.Geolocation:properties:region:us-west-2']), 'VNF1': set(['tosca.policies.Placement.Geolocation:properties:region:us-west-1'])}
+11/17/2016 10:51:45 AM Site Maps: {'VNF2': set([]), 'VNF3': set([]), 'VNF1': set([0])}
+11/17/2016 10:51:45 AM Selected Sites: {'VNF2': [], 'VNF3': [], 'VNF1': 0}
+11/17/2016 10:51:45 AM Per domain file paths: {0: './toscafiles/template_part0.yaml'}
+11/17/2016 10:51:45 AM Push Response received from 0
+>>>>>>> e746280... Replace toscaparser with native yaml to load published Tosca file into memory
CLI Service is starting
RPC service for CLI is starting...
Received CLI ['heartbeat']
-12467 Sending heartbeat
+0 Sending heartbeat
heart beat received from: 0 ,sequence number: 2
Received CLI ['subscribe', '-t', 'hot', '-l', 'tosca.policies.Placement:properties:region:nova-1']
subscribing labels ['tosca.policies.Placement:properties:region:nova-1'] and templates ['hot']
Received CLI ['subscribe', '-l', 'tosca.policies.Placement.Geolocation:properties:region:us-west-1']
subscribing labels ['tosca.policies.Placement.Geolocation:properties:region:us-west-1'] and templates []
Subscribe Response is received from: 0 ,sequence number: 10
-12467 Received Template File
+0 Received Template File