def test_active_agreement_detection(self): """ Check that the temp agreement is detected as active agreement. """ gold = core_model.Mixin('', 'gold', [occi_sla.AGREEMENT_TEMPLATE]) compute = core_model.Mixin('', 'compute', [occi_sla.AGREEMENT_TEMPLATE]) availability = core_model.Mixin('', 'availability', [occi_sla.AGREEMENT_TEMPLATE]) mixins = [gold, compute, availability] res = core_model.Resource(self.id, occi_sla.AGREEMENT, mixins) res.attributes = { 'occi.agreement.state': 'accepted', 'occi.agreement.effectiveFrom': '2014-11-02T02:20:26+00:00', 'occi.agreement.effectiveUntil': '2015-11-02T02:20:27+00:00' } northbound_api = api.build() resources = EntityDictionary(northbound_api.registry) resources[self.id] = res resources.registry.populate_resources() active_agreements = resources.registry.get_active_agreement_resources() if active_agreements.__len__() == 1: self.assertEqual(active_agreements[0].identifier, self.id) else: for agr in active_agreements: self.assertTrue(agr.identifier == self.id)
def test_past_agreement_non_detection(self): """ Check that the temp agreement with pending state is not detected as active agreement. """ gold = core_model.Mixin('', 'gold', [occi_sla.AGREEMENT_TEMPLATE]) compute = core_model.Mixin('', 'compute', [occi_sla.AGREEMENT_TEMPLATE]) availability = core_model.Mixin('', 'availability', [occi_sla.AGREEMENT_TEMPLATE]) mixins = [gold, compute, availability] res = core_model.Resource(self.id, occi_sla.AGREEMENT, mixins) res.attributes = { 'occi.agreement.state': 'accepted', 'occi.agreement.effectiveFrom': '2014-10-02T02:20:26+00:00', 'occi.agreement.effectiveUntil': '2014-11-02T02:20:27+00:00' } northbound_api = api.build() resources = EntityDictionary(northbound_api.registry) resources[self.id] = res resources.registry.populate_resources() active_agreements = resources.registry.get_active_agreement_resources() self.assertEqual(active_agreements.__len__(), 0)
def test_no_policy_creation(self): """ Check that if no link (aka device id) exist, no policy is created """ gold = core_model.Mixin('', 'gold', [occi_sla.AGREEMENT_TEMPLATE]) compute = core_model.Mixin('', 'compute', [occi_sla.AGREEMENT_TEMPLATE]) availability = core_model.Mixin('', 'availability', [occi_sla.AGREEMENT_TEMPLATE]) mixins = [gold, compute, availability] res = core_model.Resource(self.id, occi_sla.AGREEMENT, mixins) res.attributes = { 'occi.agreement.state': 'accepted', 'occi.agreement.effectiveFrom': '2014-11-02T02:20:26+00:00', 'occi.agreement.effectiveUntil': '2015-11-02T02:20:27+00:00' } northbound_api = api.build() resources = EntityDictionary(northbound_api.registry) resources[self.id] = res resources.registry.populate_resources() myrulesengine = rulesengine.RulesEngine(resources.registry) myrulesengine.active_policies = {} myrulesengine.active_agreements = {} # myrulesengine.registry=registry myrulesengine.start_engine(0) temp_policy_record = DB.policies.find({'agreement_id': self.id}, {'_id': 0}) self.assertEqual(temp_policy_record.count(), 0)
def test_policy_creation(self): """ Check that an active agreement has been detected and a record inserted into the database """ availability = core_model.Mixin('', 'availability', [occi_sla.AGREEMENT_TEMPLATE]) mixins = [availability] res = core_model.Resource(self.id, occi_sla.AGREEMENT, mixins) res.attributes = { 'occi.agreement.state': 'accepted', 'occi.agreement.effectiveFrom': '2014-11-02T02:20:26+00:00', 'occi.agreement.effectiveUntil': '2015-11-02T02:20:27+00:00' } comp_res = core_model.Resource(self.compute_id, infrastructure.COMPUTE, []) comp_res.attributes = {} link_res = core_model.Link(self.link_id, occi_sla.AGREEMENT_LINK, [], res, comp_res) link_res.attributes = {} res.links = [link_res] northbound_api = api.build() resources = EntityDictionary(northbound_api.registry) resources[self.id] = res resources[self.compute_id] = comp_res resources[self.link_id] = link_res resources.registry.populate_resources() myrulesengine = rulesengine.RulesEngine(resources.registry) myrulesengine.active_policies = {} myrulesengine.active_agreements = {} myrulesengine.start_engine(0) temp_policy_record = DB.policies.find({'agreement_id': self.id}, {'_id': 0}) self.assertEqual(temp_policy_record.count(), 1)
# Network security rule extension to specify firewall rules _SEC_RULE_ATTRIBUTES = { 'occi.network.security.protocol': '', 'occi.network.security.to': '', 'occi.network.security.from': '', 'occi.network.security.range': '', } SEC_RULE = core_model.Kind( 'http://schemas.openstack.org/occi/infrastructure/network/security#', 'rule', [core_model.Resource.kind], None, 'Network security rule kind', _SEC_RULE_ATTRIBUTES, '/network/security/rule/') # Network security rule group SEC_GROUP = core_model.Mixin( 'http://schemas.ogf.org/occi/infrastructure/security#', 'group', attributes=None) # OS change adminstrative password action _OS_CHG_PWD_ATTRIBUTES = { 'org.openstack.credentials.admin_pwd': '', } OS_CHG_PWD = core_model.Action('http://schemas.openstack.org/instance/action#', 'chg_pwd', 'Changes Admin password.', _OS_CHG_PWD_ATTRIBUTES) # OS create image from VM action _OS_CREATE_IMAGE_ATTRIBUTES = { 'org.openstack.snapshot.image_name': '', } OS_CREATE_IMAGE = core_model.Action(