Ejemplo n.º 1
0
 def setup_pod(self,
               name=None,
               namespace='default',
               metadata=None,
               spec=None,
               labels=None,
               custom_isolation = False,
               fq_network_name = {},
               **kwargs):
     name = name or get_random_name('pod')
     metadata = metadata or {}
     spec = spec or {}
     labels = labels or {}
     metadata['name'] = metadata.get('name') or name
     if labels:
         metadata['labels'] = metadata.get('labels', {})
         metadata['labels'].update(labels)
     return self.useFixture(PodFixture(
         connections=self.connections,
         namespace=namespace,
         metadata=metadata,
         spec=spec,
         custom_isolation = custom_isolation,
         fq_network_name = fq_network_name,
         **kwargs))
Ejemplo n.º 2
0
    class SharedResources(with_metaclass(Singleton, object)):
        def __init__(self, connections):
            self.connections = connections
            self.setUp()

        def setUp(self):
            try:
                self.ns1 = NamespaceFixture(connections=self.connections,
                                            name="new-default")
                self.ns1.setUp()
                self.ns2 = NamespaceFixture(connections=self.connections,
                                            name="non-default")
                self.ns2.setUp()
                self.ns3 = NamespaceFixture(connections=self.connections,
                                            name="temp-ns")
                self.ns3.setUp()
                self.ns1.set_labels({'site': self.ns1.name})
                self.ns2.set_labels({'site': self.ns2.name})
                self.ns3.set_labels({'new_site': self.ns3.name})
                web_label_ns1, web_label_ns2 = 'webns1', 'webns2'
                client1_label_ns1, client1_label_ns2, client1_label_ns3 = 'client1_ns1', 'client1_ns2', 'client1_ns3'
                client2_label_ns1, client2_label_ns2, client2_label_ns3 = 'client2_ns1', 'client2_ns2', 'client2_ns3'
                client3_label_ns3 = 'client3_ns3'
                nginx_spec_1 = {
                    'containers': [{
                        'image': 'nginx',
                        'ports': [{
                            'container_port': 80
                        }]
                    }]
                }
                nginx_spec_2 = {
                    'containers': [{
                        'image': 'nginx',
                        'ports': [{
                            'container_port': 80
                        }]
                    }]
                }
                nginx_metadata_ns1 = {'labels': {'app': web_label_ns1}}
                nginx_metadata_ns2 = {'labels': {'app': web_label_ns2}}
                self.web_pod_ns1 = PodFixture(connections=self.connections,
                                              namespace=self.ns1.name,
                                              metadata=nginx_metadata_ns1,
                                              spec=nginx_spec_1)
                self.web_pod_ns1.setUp()
                self.web_pod_ns2 = PodFixture(connections=self.connections,
                                              namespace=self.ns2.name,
                                              metadata=nginx_metadata_ns2,
                                              spec=nginx_spec_2)
                self.web_pod_ns2.setUp()
                busybox_spec_1 = {
                    'containers': [{
                        'image': 'busybox',
                        'command': ['sleep', '1000000'],
                        'image_pull_policy': 'IfNotPresent',
                    }],
                    'restart_policy':
                    'Always'
                }
                busybox_spec_2 = dict(busybox_spec_1)
                busybox_spec_3 = dict(busybox_spec_1)
                busybox_spec_4 = dict(busybox_spec_1)
                busybox_spec_5 = dict(busybox_spec_1)
                busybox_spec_6 = dict(busybox_spec_1)
                busybox_spec_7 = dict(busybox_spec_1)
                busybox_metadata_c1_ns1 = {
                    'labels': {
                        'app': client1_label_ns1
                    }
                }
                busybox_metadata_c1_ns2 = {
                    'labels': {
                        'app': client1_label_ns2
                    }
                }
                busybox_metadata_c1_ns3 = {
                    'labels': {
                        'app': client1_label_ns3
                    }
                }
                busybox_metadata_c2_ns1 = {
                    'labels': {
                        'app': client2_label_ns1
                    }
                }
                busybox_metadata_c2_ns2 = {
                    'labels': {
                        'app': client2_label_ns2
                    }
                }
                busybox_metadata_c2_ns3 = {
                    'labels': {
                        'app': client2_label_ns3
                    }
                }
                busybox_metadata_c3_ns3 = {
                    'labels': {
                        'app': client3_label_ns3
                    }
                }
                self.client1_pod_ns1 = PodFixture(
                    connections=self.connections,
                    namespace=self.ns1.name,
                    metadata=busybox_metadata_c1_ns1,
                    spec=busybox_spec_1)
                self.client1_pod_ns1.setUp()
                self.client2_pod_ns1 = PodFixture(
                    connections=self.connections,
                    namespace=self.ns1.name,
                    metadata=busybox_metadata_c2_ns1,
                    spec=busybox_spec_2)
                self.client2_pod_ns1.setUp()
                self.client1_pod_ns2 = PodFixture(
                    connections=self.connections,
                    namespace=self.ns2.name,
                    metadata=busybox_metadata_c1_ns2,
                    spec=busybox_spec_3)
                self.client1_pod_ns2.setUp()
                self.client2_pod_ns2 = PodFixture(
                    connections=self.connections,
                    namespace=self.ns2.name,
                    metadata=busybox_metadata_c2_ns2,
                    spec=busybox_spec_4)
                self.client2_pod_ns2.setUp()
                self.client1_pod_ns3 = PodFixture(
                    connections=self.connections,
                    namespace=self.ns3.name,
                    metadata=busybox_metadata_c1_ns3,
                    spec=busybox_spec_5)
                self.client1_pod_ns3.setUp()
                self.client2_pod_ns3 = PodFixture(
                    connections=self.connections,
                    namespace=self.ns3.name,
                    metadata=busybox_metadata_c2_ns3,
                    spec=busybox_spec_6)
                self.client2_pod_ns3.setUp()
                self.client3_pod_ns3 = PodFixture(
                    connections=self.connections,
                    namespace=self.ns3.name,
                    metadata=busybox_metadata_c3_ns3,
                    spec=busybox_spec_7)
                self.client3_pod_ns3.setUp()
                assert self.ns1.verify_on_setup()
                assert self.ns2.verify_on_setup()
                assert self.ns3.verify_on_setup()
                assert self.web_pod_ns1.verify_on_setup()
                assert self.web_pod_ns2.verify_on_setup()
                assert self.client1_pod_ns1.verify_on_setup()
                assert self.client1_pod_ns2.verify_on_setup()
                assert self.client1_pod_ns3.verify_on_setup()
                assert self.client2_pod_ns1.verify_on_setup()
                assert self.client2_pod_ns2.verify_on_setup()
                assert self.client2_pod_ns3.verify_on_setup()
                assert self.client3_pod_ns3.verify_on_setup()
            except:
                self.cleanUp()
                raise

        def cleanUp(self):
            cleanup_list = list()
            if getattr(self, 'web_pod_ns1', None):
                cleanup_list.append(gevent.spawn(self.web_pod_ns1.cleanUp))
            if getattr(self, 'web_pod_ns2', None):
                cleanup_list.append(gevent.spawn(self.web_pod_ns2.cleanUp))
            if getattr(self, 'client1_pod_ns1', None):
                cleanup_list.append(gevent.spawn(self.client1_pod_ns1.cleanUp))
            if getattr(self, 'client2_pod_ns1', None):
                cleanup_list.append(gevent.spawn(self.client2_pod_ns1.cleanUp))
            if getattr(self, 'client1_pod_ns2', None):
                cleanup_list.append(gevent.spawn(self.client1_pod_ns2.cleanUp))
            if getattr(self, 'client2_pod_ns2', None):
                cleanup_list.append(gevent.spawn(self.client2_pod_ns2.cleanUp))
            if getattr(self, 'client1_pod_ns3', None):
                cleanup_list.append(gevent.spawn(self.client1_pod_ns3.cleanUp))
            if getattr(self, 'client2_pod_ns3', None):
                cleanup_list.append(gevent.spawn(self.client2_pod_ns3.cleanUp))
            if getattr(self, 'client3_pod_ns3', None):
                cleanup_list.append(gevent.spawn(self.client3_pod_ns3.cleanUp))
            gevent.joinall(cleanup_list)
            if getattr(self, 'ns1', None):
                self.ns1.cleanUp()
            if getattr(self, 'ns2', None):
                self.ns2.cleanUp()
            if getattr(self, 'ns3', None):
                self.ns3.cleanUp()
Ejemplo n.º 3
0
 def setUp(self):
     try:
         self.ns1 = NamespaceFixture(connections=self.connections,
                                     name="new-default")
         self.ns1.setUp()
         self.ns2 = NamespaceFixture(connections=self.connections,
                                     name="non-default")
         self.ns2.setUp()
         self.ns3 = NamespaceFixture(connections=self.connections,
                                     name="temp-ns")
         self.ns3.setUp()
         self.ns1.set_labels({'site': self.ns1.name})
         self.ns2.set_labels({'site': self.ns2.name})
         self.ns3.set_labels({'new_site': self.ns3.name})
         web_label_ns1, web_label_ns2 = 'webns1', 'webns2'
         client1_label_ns1, client1_label_ns2, client1_label_ns3 = 'client1_ns1', 'client1_ns2', 'client1_ns3'
         client2_label_ns1, client2_label_ns2, client2_label_ns3 = 'client2_ns1', 'client2_ns2', 'client2_ns3'
         client3_label_ns3 = 'client3_ns3'
         nginx_spec_1 = {
             'containers': [{
                 'image': 'nginx',
                 'ports': [{
                     'container_port': 80
                 }]
             }]
         }
         nginx_spec_2 = {
             'containers': [{
                 'image': 'nginx',
                 'ports': [{
                     'container_port': 80
                 }]
             }]
         }
         nginx_metadata_ns1 = {'labels': {'app': web_label_ns1}}
         nginx_metadata_ns2 = {'labels': {'app': web_label_ns2}}
         self.web_pod_ns1 = PodFixture(connections=self.connections,
                                       namespace=self.ns1.name,
                                       metadata=nginx_metadata_ns1,
                                       spec=nginx_spec_1)
         self.web_pod_ns1.setUp()
         self.web_pod_ns2 = PodFixture(connections=self.connections,
                                       namespace=self.ns2.name,
                                       metadata=nginx_metadata_ns2,
                                       spec=nginx_spec_2)
         self.web_pod_ns2.setUp()
         busybox_spec_1 = {
             'containers': [{
                 'image': 'busybox',
                 'command': ['sleep', '1000000'],
                 'image_pull_policy': 'IfNotPresent',
             }],
             'restart_policy':
             'Always'
         }
         busybox_spec_2 = dict(busybox_spec_1)
         busybox_spec_3 = dict(busybox_spec_1)
         busybox_spec_4 = dict(busybox_spec_1)
         busybox_spec_5 = dict(busybox_spec_1)
         busybox_spec_6 = dict(busybox_spec_1)
         busybox_spec_7 = dict(busybox_spec_1)
         busybox_metadata_c1_ns1 = {
             'labels': {
                 'app': client1_label_ns1
             }
         }
         busybox_metadata_c1_ns2 = {
             'labels': {
                 'app': client1_label_ns2
             }
         }
         busybox_metadata_c1_ns3 = {
             'labels': {
                 'app': client1_label_ns3
             }
         }
         busybox_metadata_c2_ns1 = {
             'labels': {
                 'app': client2_label_ns1
             }
         }
         busybox_metadata_c2_ns2 = {
             'labels': {
                 'app': client2_label_ns2
             }
         }
         busybox_metadata_c2_ns3 = {
             'labels': {
                 'app': client2_label_ns3
             }
         }
         busybox_metadata_c3_ns3 = {
             'labels': {
                 'app': client3_label_ns3
             }
         }
         self.client1_pod_ns1 = PodFixture(
             connections=self.connections,
             namespace=self.ns1.name,
             metadata=busybox_metadata_c1_ns1,
             spec=busybox_spec_1)
         self.client1_pod_ns1.setUp()
         self.client2_pod_ns1 = PodFixture(
             connections=self.connections,
             namespace=self.ns1.name,
             metadata=busybox_metadata_c2_ns1,
             spec=busybox_spec_2)
         self.client2_pod_ns1.setUp()
         self.client1_pod_ns2 = PodFixture(
             connections=self.connections,
             namespace=self.ns2.name,
             metadata=busybox_metadata_c1_ns2,
             spec=busybox_spec_3)
         self.client1_pod_ns2.setUp()
         self.client2_pod_ns2 = PodFixture(
             connections=self.connections,
             namespace=self.ns2.name,
             metadata=busybox_metadata_c2_ns2,
             spec=busybox_spec_4)
         self.client2_pod_ns2.setUp()
         self.client1_pod_ns3 = PodFixture(
             connections=self.connections,
             namespace=self.ns3.name,
             metadata=busybox_metadata_c1_ns3,
             spec=busybox_spec_5)
         self.client1_pod_ns3.setUp()
         self.client2_pod_ns3 = PodFixture(
             connections=self.connections,
             namespace=self.ns3.name,
             metadata=busybox_metadata_c2_ns3,
             spec=busybox_spec_6)
         self.client2_pod_ns3.setUp()
         self.client3_pod_ns3 = PodFixture(
             connections=self.connections,
             namespace=self.ns3.name,
             metadata=busybox_metadata_c3_ns3,
             spec=busybox_spec_7)
         self.client3_pod_ns3.setUp()
         assert self.ns1.verify_on_setup()
         assert self.ns2.verify_on_setup()
         assert self.ns3.verify_on_setup()
         assert self.web_pod_ns1.verify_on_setup()
         assert self.web_pod_ns2.verify_on_setup()
         assert self.client1_pod_ns1.verify_on_setup()
         assert self.client1_pod_ns2.verify_on_setup()
         assert self.client1_pod_ns3.verify_on_setup()
         assert self.client2_pod_ns1.verify_on_setup()
         assert self.client2_pod_ns2.verify_on_setup()
         assert self.client2_pod_ns3.verify_on_setup()
         assert self.client3_pod_ns3.verify_on_setup()
     except:
         self.cleanUp()
         raise
Ejemplo n.º 4
0
 def setUpClass(cls):
     super(TestNetworkPolicyRestart, cls).setUpClass()
     try:
         cls.ns1 = NamespaceFixture(connections=cls.connections,
                                    name="new-default")
         cls.ns1.setUp()
         cls.ns2 = NamespaceFixture(connections=cls.connections,
                                    name="non-default")
         cls.ns2.setUp()
         cls.ns3 = NamespaceFixture(connections=cls.connections,
                                    name="temp-ns")
         cls.ns3.setUp()
         #cls.ns1.set_labels({'project': cls.ns1.name})
         cls.ns1.set_labels({'site': cls.ns1.name})
         cls.ns2.set_labels({'site': cls.ns2.name})
         cls.ns3.set_labels({'new_site': cls.ns3.name})
         web_label_ns1, web_label_ns2 = 'webns1', 'webns2'
         client1_label_ns1, client1_label_ns2, client1_label_ns3 = 'client1_ns1', 'client1_ns2', 'client1_ns3'
         client2_label_ns1, client2_label_ns2, client2_label_ns3 = 'client2_ns1', 'client2_ns2', 'client2_ns3'
         client3_label_ns3 = 'client3_ns3'
         nginx_spec_1 = {
             'containers': [{
                 'image': 'nginx',
                 'ports': [{
                     'container_port': 80
                 }]
             }]
         }
         nginx_spec_2 = {
             'containers': [{
                 'image': 'nginx',
                 'ports': [{
                     'container_port': 80
                 }]
             }]
         }
         nginx_metadata_ns1 = {'labels': {'app': web_label_ns1}}
         nginx_metadata_ns2 = {'labels': {'app': web_label_ns2}}
         cls.web_pod_ns1 = PodFixture(connections=cls.connections,
                                      namespace=cls.ns1.name,
                                      metadata=nginx_metadata_ns1,
                                      spec=nginx_spec_1)
         cls.web_pod_ns1.setUp()
         cls.web_pod_ns2 = PodFixture(connections=cls.connections,
                                      namespace=cls.ns2.name,
                                      metadata=nginx_metadata_ns2,
                                      spec=nginx_spec_2)
         cls.web_pod_ns2.setUp()
         busybox_spec_1 = {
             'containers': [{
                 'image': 'busybox',
                 'command': ['sleep', '1000000'],
                 'image_pull_policy': 'IfNotPresent',
             }],
             'restart_policy':
             'Always'
         }
         busybox_spec_2 = dict(busybox_spec_1)
         busybox_spec_3 = dict(busybox_spec_1)
         busybox_spec_4 = dict(busybox_spec_1)
         busybox_spec_5 = dict(busybox_spec_1)
         busybox_spec_6 = dict(busybox_spec_1)
         busybox_spec_7 = dict(busybox_spec_1)
         busybox_metadata_c1_ns1 = {'labels': {'app': client1_label_ns1}}
         busybox_metadata_c1_ns2 = {'labels': {'app': client1_label_ns2}}
         busybox_metadata_c1_ns3 = {'labels': {'app': client1_label_ns3}}
         busybox_metadata_c2_ns1 = {'labels': {'app': client2_label_ns1}}
         busybox_metadata_c2_ns2 = {'labels': {'app': client2_label_ns2}}
         busybox_metadata_c2_ns3 = {'labels': {'app': client2_label_ns3}}
         busybox_metadata_c3_ns3 = {'labels': {'app': client3_label_ns3}}
         cls.client1_pod_ns1 = PodFixture(connections=cls.connections,
                                          namespace=cls.ns1.name,
                                          metadata=busybox_metadata_c1_ns1,
                                          spec=busybox_spec_1)
         cls.client1_pod_ns1.setUp()
         cls.client2_pod_ns1 = PodFixture(connections=cls.connections,
                                          namespace=cls.ns1.name,
                                          metadata=busybox_metadata_c2_ns1,
                                          spec=busybox_spec_2)
         cls.client2_pod_ns1.setUp()
         cls.client1_pod_ns2 = PodFixture(connections=cls.connections,
                                          namespace=cls.ns2.name,
                                          metadata=busybox_metadata_c1_ns2,
                                          spec=busybox_spec_3)
         cls.client1_pod_ns2.setUp()
         cls.client2_pod_ns2 = PodFixture(connections=cls.connections,
                                          namespace=cls.ns2.name,
                                          metadata=busybox_metadata_c2_ns2,
                                          spec=busybox_spec_4)
         cls.client2_pod_ns2.setUp()
         cls.client1_pod_ns3 = PodFixture(connections=cls.connections,
                                          namespace=cls.ns3.name,
                                          metadata=busybox_metadata_c1_ns3,
                                          spec=busybox_spec_5)
         cls.client1_pod_ns3.setUp()
         cls.client2_pod_ns3 = PodFixture(connections=cls.connections,
                                          namespace=cls.ns3.name,
                                          metadata=busybox_metadata_c2_ns3,
                                          spec=busybox_spec_6)
         cls.client2_pod_ns3.setUp()
         cls.client3_pod_ns3 = PodFixture(connections=cls.connections,
                                          namespace=cls.ns3.name,
                                          metadata=busybox_metadata_c3_ns3,
                                          spec=busybox_spec_7)
         cls.client3_pod_ns3.setUp()
         assert cls.ns1.verify_on_setup()
         assert cls.ns2.verify_on_setup()
         assert cls.ns3.verify_on_setup()
         assert cls.web_pod_ns1.verify_on_setup()
         assert cls.web_pod_ns2.verify_on_setup()
         assert cls.client1_pod_ns1.verify_on_setup()
         assert cls.client1_pod_ns2.verify_on_setup()
         assert cls.client1_pod_ns3.verify_on_setup()
         assert cls.client2_pod_ns1.verify_on_setup()
         assert cls.client2_pod_ns2.verify_on_setup()
         assert cls.client2_pod_ns3.verify_on_setup()
         assert cls.client3_pod_ns3.verify_on_setup()
     except:
         cls.tearDownClass()
         raise